From 7fe35c405e07f5a48049b667afd95549cac12eb1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 6 Dec 2021 06:42:42 +0100 Subject: [PATCH 001/374] New translations app.json (Arabic) --- .../StringsConvertor/input/ar_SA/app.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index 71e0f538f..293f1cff7 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -2,8 +2,8 @@ "common": { "alerts": { "common": { - "please_try_again": "يُرجى المحاولة مرة أُخرى.", - "please_try_again_later": "يُرجى المحاولة مرة أُخرى لاحقاً." + "please_try_again": "يُرجى المُحاولة مرة أُخرى.", + "please_try_again_later": "يُرجى المُحاولة مرة أُخرى لاحقًا." }, "sign_up_failure": { "title": "إخفاق في التسجيل" @@ -28,17 +28,17 @@ } }, "edit_profile_failure": { - "title": "خطأ في تَحرير الملف الشخصي", - "message": "لا يمكن تعديل الملف الشخصي. يُرجى المحاولة مرة أُخرى." + "title": "خطأ في تَحرير الملف التعريفي", + "message": "يتعذَّر تعديل الملف التعريفي. يُرجى المُحاولة مرة أُخرى." }, "sign_out": { "title": "تسجيل الخروج", - "message": "هل أنت متأكد من رغبتك في تسجيل الخروج؟", + "message": "هل أنت متأكد من رغبتك في تسجيل الخُروج؟", "confirm": "تسجيل الخروج" }, "block_domain": { - "title": "هل أنتَ مُتأكِّدٌ حقًا مِن رغبتك في حظر %s بالكامل؟ في معظم الحالات، يكون مِنَ الكافي والمُفَضَّل استهداف عدد محدود للحظر أو الكتم. لن ترى محتوى من هذا النطاق وسوف يتم إزالة جميع متابعيك المتواجدين فيه.", - "block_entire_domain": "حظر النِطاق" + "title": "هل أنتَ مُتأكِّدٌ حقًا مِن رغبتك في حظر %s بالكامل؟ في معظم الحالات، يكون مِنَ الكافي والمُفَضَّل استهداف عدد محدود للحظر أو الكتم. لن ترى محتوى من هذا النطاق وسوف يُزال جميع متابعيك المتواجدين فيه.", + "block_entire_domain": "حظر النِّطاق" }, "save_photo_failure": { "title": "إخفاق في حفظ الصورة", @@ -46,7 +46,7 @@ }, "delete_post": { "title": "هل أنت متأكد من رغبتك في حذف هذا المنشور؟", - "delete": "احذف" + "delete": "حذف" }, "clean_cache": { "title": "مَحو ذاكرة التخزين المؤقت", From 1edaa186f049e6525615eb4da2f1ae4aca87a24b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 6 Dec 2021 07:38:58 +0100 Subject: [PATCH 002/374] New translations app.json (Arabic) --- .../StringsConvertor/input/ar_SA/app.json | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index 293f1cff7..b9d250eea 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -50,7 +50,7 @@ }, "clean_cache": { "title": "مَحو ذاكرة التخزين المؤقت", - "message": "تمَّ مَحو ذاكرة التخزين المؤقت %s بنجاح." + "message": "تمَّ مَحو %s مِن ذاكرة التخزين المؤقت بنجاح." } }, "controls": { @@ -58,9 +58,9 @@ "back": "العودة", "next": "التالي", "previous": "السابق", - "open": "افتح", + "open": "فتح", "add": "إضافة", - "remove": "احذف", + "remove": "حذف", "edit": "تحرير", "save": "حفظ", "ok": "حسنًا", @@ -69,7 +69,7 @@ "continue": "واصل", "compose": "تأليف", "cancel": "إلغاء", - "discard": "تجاهل", + "discard": "تجاهُل", "try_again": "المُحاولة مرة أُخرى", "take_photo": "التقاط صورة", "save_photo": "حفظ الصورة", @@ -82,19 +82,19 @@ "share_user": "مُشاركة %s", "share_post": "مشارك المنشور", "open_in_safari": "الفتح في Safari", - "find_people": "ابحث عن أشخاص لمتابعتهم", - "manually_search": "البحث يدوياً بدلاً من ذلك", + "find_people": "ابحث عن أشخاص لِمُتابعتهم", + "manually_search": "البحث يدويًا بدلًا من ذلك", "skip": "تخطي", - "reply": "الرَد", - "report_user": "ابلغ عن %s", + "reply": "الرَّد", + "report_user": "الإبلاغ عن %s", "block_domain": "حظر %s", - "unblock_domain": "إلغاء حظر %s", + "unblock_domain": "رفع الحظر عن %s", "settings": "الإعدادات", - "delete": "احذف" + "delete": "حذف" }, "tabs": { - "home": "الخيط الرئيسي", - "search": "بحث", + "home": "الرَّئِيسَة", + "search": "البَحث", "notification": "الإشعارات", "profile": "الملف التعريفي" }, @@ -102,17 +102,17 @@ "common": { "switch_to_tab": "التبديل إلى %s", "compose_new_post": "تأليف منشور جديد", - "show_favorites": "إظهار المفضلة", - "open_settings": "أفتح الإعدادات" + "show_favorites": "إظهار المُفضَّلة", + "open_settings": "فتح الإعدادات" }, "timeline": { "previous_status": "المنشور السابق", "next_status": "المنشور التالي", - "open_status": "افتح المنشور", - "open_author_profile": "افتح الملف التعريفي للمؤلف", - "open_reblogger_profile": "افتح الملف التعريفي لمشارِك المنشور", - "reply_status": "رد على المنشور", - "toggle_reblog": "تبديل إعادة تدوين منشور", + "open_status": "فتح المنشور", + "open_author_profile": "فتح الملف التعريفي للمؤلف", + "open_reblogger_profile": "فتح الملف التعريفي لمُعيد تدوين المنشور", + "reply_status": "الرَّد على مَنشور", + "toggle_reblog": "تبديل إعادة تدوين مَنشور", "toggle_favorite": "تبديل المفضلة لِمنشور", "toggle_content_warning": "تبديل تحذير المُحتَوى", "preview_image": "معاينة الصورة" @@ -124,64 +124,64 @@ }, "status": { "user_reblogged": "أعادَ %s تدوينها", - "user_replied_to": "رد على %s", - "show_post": "اظهر المنشور", - "show_user_profile": "اظهر الملف التعريفي للمستخدم", - "content_warning": "تحذير عن المحتوى", - "media_content_warning": "انقر على أي مكان للكشف", + "user_replied_to": "رَدًا على %s", + "show_post": "إظهار منشور", + "show_user_profile": "إظهار الملف التعريفي للمُستخدِم", + "content_warning": "تحذير المُحتوى", + "media_content_warning": "انقر للكشف", "poll": { "vote": "صَوِّت", "closed": "انتهى" }, "actions": { - "reply": "رد", + "reply": "الرَّد", "reblog": "إعادة النشر", - "unreblog": "تراجع عن إعادة النشر", - "favorite": "إضافة إلى المفضلة", - "unfavorite": "إزالة من المفضلة", + "unreblog": "التراجُع عن إعادة النشر", + "favorite": "التفضيل", + "unfavorite": "إزالة التفضيل", "menu": "القائمة" }, "tag": { "url": "عنوان URL", - "mention": "أشر إلى", - "link": "الرابط", - "hashtag": "الوسم", - "email": "البريد الإلكتروني", - "emoji": "إيموجي" + "mention": "إشارة", + "link": "رابط", + "hashtag": "وسم", + "email": "بريد إلكتروني", + "emoji": "رمز تعبيري" } }, "friendship": { - "follow": "اتبع", + "follow": "المُتابعة", "following": "مُتابَع", "request": "إرسال طَلَب", "pending": "قيد المُراجعة", "block": "حظر", "block_user": "حظر %s", "block_domain": "حظر %s", - "unblock": "إلغاء الحَظر", - "unblock_user": "إلغاء حظر %s", + "unblock": "رفع الحَظر", + "unblock_user": "رفع الحَظر عن %s", "blocked": "محظور", - "mute": "أكتم", - "mute_user": "أكتم %s", - "unmute": "إلغاء الكتم", - "unmute_user": "إلغاء كتم %s", + "mute": "كَتم", + "mute_user": "كَتم %s", + "unmute": "رفع الكتم", + "unmute_user": "رفع الكتم عن %s", "muted": "مكتوم", "edit_info": "تعديل المعلومات" }, "timeline": { "filtered": "مُصفَّى", "timestamp": { - "now": "الأن" + "now": "الآن" }, "loader": { - "load_missing_posts": "تحميل المنشورات المَفقودة", - "loading_missing_posts": "تحميل المزيد من المنشورات...", - "show_more_replies": "إظهار المزيد من الردود" + "load_missing_posts": "تحميل المَنشورات المَفقودَة", + "loading_missing_posts": "يَجري تحميل المَنشورات المَفقودَة...", + "show_more_replies": "إظهار مَزيد مِنَ الرُّدود" }, "header": { - "no_status_found": "لا توجد هناك منشورات", - "blocking_warning": "لا يُمكنك الاطلاع على الملف الشخصي لهذا المُستخدِم\nحتَّى تَرفعَ الحَظر عنه.\nملفًّكَ الشخصي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا.", - "user_blocking_warning": "لا يُمكنك الاطلاع على ملف %s الشخصي\nحتَّى تَرفعَ الحَظر عنه.\nملفًّكَ الشخصي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا.", + "no_status_found": "لَم يُعْثَر على مَنشورات", + "blocking_warning": "لا يُمكِنُكَ الاِطلاع على الملف التَعريفي لهذا المُستخدِم\nحتَّى تَرفعَ الحَظر عنه.\nملفُّكَ التَعريفي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا.", + "user_blocking_warning": "لا يُمكنك الاطلاع على ملف %s التَعريفي\nحتَّى تَرفعَ الحَظر عنه.\nملفُّكَ التَعريفي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا.", "blocked_warning": "لا يُمكِنُكَ عَرض الملف الشخصي لهذا المُستخدِم\nحتَّى يَرفَعَ الحَظر عَنك.", "user_blocked_warning": "لا يُمكِنُكَ عَرض ملف %s الشخصي\nحتَّى يَرفَعَ الحَظر عَنك.", "suspended_warning": "تمَّ إيقاف هذا المُستخدِم.", From 27d4d2e1c315597ec4f636322e05270def4dc863 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 6 Dec 2021 08:37:09 +0100 Subject: [PATCH 003/374] New translations app.json (Arabic) --- .../StringsConvertor/input/ar_SA/app.json | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index b9d250eea..d3459c0ca 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -182,10 +182,10 @@ "no_status_found": "لَم يُعْثَر على مَنشورات", "blocking_warning": "لا يُمكِنُكَ الاِطلاع على الملف التَعريفي لهذا المُستخدِم\nحتَّى تَرفعَ الحَظر عنه.\nملفُّكَ التَعريفي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا.", "user_blocking_warning": "لا يُمكنك الاطلاع على ملف %s التَعريفي\nحتَّى تَرفعَ الحَظر عنه.\nملفُّكَ التَعريفي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا.", - "blocked_warning": "لا يُمكِنُكَ عَرض الملف الشخصي لهذا المُستخدِم\nحتَّى يَرفَعَ الحَظر عَنك.", - "user_blocked_warning": "لا يُمكِنُكَ عَرض ملف %s الشخصي\nحتَّى يَرفَعَ الحَظر عَنك.", + "blocked_warning": "لا يُمكِنُكَ عَرض الملف التَعريفي لهذا المُستخدِم\nحتَّى يَرفَعَ الحَظرَ عَنك.", + "user_blocked_warning": "لا يُمكِنُكَ عَرض ملف %s التَعريفي\nحتَّى يَرفَعَ الحَظر عَنك.", "suspended_warning": "تمَّ إيقاف هذا المُستخدِم.", - "user_suspended_warning": "لقد أوقِفَ حِساب %s." + "user_suspended_warning": "لقد أُوقِفَ حِساب %s." } } } @@ -195,60 +195,60 @@ "slogan": "شبكات التواصل الاجتماعي\nمرة أُخرى بين يديك." }, "server_picker": { - "title": "اِختر خادِم،\nأي خادِم.", + "title": "اِختر خادِم،\nأيًّا مِنهُم.", "button": { "category": { "all": "الكل", "all_accessiblity_description": "الفئة: الكل", "academia": "أكاديمي", - "activism": "للنشطاء", + "activism": "النشطاء", "food": "الطعام", - "furry": "فروي", + "furry": "مكسو بالفرو", "games": "ألعاب", "general": "عام", "journalism": "صحافة", "lgbt": "مجتمع الشواذ", - "regional": "اقليمي", - "art": "فن", + "regional": "إقليمي", + "art": "فنون", "music": "موسيقى", - "tech": "تكنولوجيا" + "tech": "تقنية" }, - "see_less": "اعرض أقل", - "see_more": "اعرض المزيد" + "see_less": "عرض عناصر أقل", + "see_more": "عرض عناصر أكثر" }, "label": { - "language": "اللغة", - "users": "مستخدمون·ات", + "language": "اللُّغة", + "users": "مُستَخدِم", "category": "الفئة" }, "input": { - "placeholder": "ابحث عن خادم أو انضم إلى سيرفر خاص بك..." + "placeholder": "اِبحَث عن خادِم أو انضم إلى آخر خاص بك..." }, "empty_state": { - "finding_servers": "البحث عن خوادم متوفرة...", + "finding_servers": "يجري إيجاد خوادم متوفِّرَة...", "bad_network": "حدث خطأٌ ما أثناء تحميل البيانات. تحقَّق من اتصالك بالإنترنت.", "no_results": "لا توجد نتائج" } }, "register": { - "title": "أخبرنا عنك.", + "title": "أخبرنا عن نفسك.", "input": { "avatar": { - "delete": "احذف" + "delete": "حذف" }, "username": { - "placeholder": "اسم المستخدم", - "duplicate_prompt": "اسم المستخدم هذا غير متوفر." + "placeholder": "اِسم مُستَخدِم", + "duplicate_prompt": "اِسم المُستَخدِم هذا مأخوذٌ بالفعل." }, "display_name": { - "placeholder": "الاسم المعروض" + "placeholder": "اِسم العَرض" }, "email": { - "placeholder": "البريد الإلكتروني" + "placeholder": "بريد إلكتروني" }, "password": { - "placeholder": "الكلمة السرية", - "hint": "يجب أن تكون كلمتك السرية متكونة من ثمانية أحرف على الأقل" + "placeholder": "رمز سري", + "hint": "يجب أن يكون رمزك السري مكوَّن من ثمان خانات على الأقل" }, "invite": { "registration_user_invite_request": "لماذا ترغب في الانضمام؟" @@ -256,10 +256,10 @@ }, "error": { "item": { - "username": "اسم المستخدم", + "username": "اِسم المُستَخدِم", "email": "البريد الإلكتروني", - "password": "الكلمة السرية", - "agreement": "الاتفاقية", + "password": "الرمز السري", + "agreement": "الاِتِّفاقيَّة", "locale": "اللغة المحلية", "reason": "السبب" }, @@ -269,33 +269,33 @@ "taken": "إنَّ %s مُستخدَمٌ بالفعل", "reserved": "إنَّ %s عبارة عن كلمة مفتاحيَّة محجوزة", "accepted": "يجب أن يُقبل %s", - "blank": "%s مطلوب", + "blank": "%s مَطلوب", "invalid": "%s غير صالح", "too_long": "%s طويل جداً", - "too_short": "%s قصير جدا", + "too_short": "%s قصير جدًا", "inclusion": "إنَّ %s قيمة غير مدعومة" }, "special": { "username_invalid": "يُمكِن أن يحتوي اسم المستخدم على أحرف أبجدية، أرقام وشرطات سفلية فقط", - "username_too_long": "اسم المستخدم طويل جداً (يجب ألّا يكون أطول من 30 رمز)", + "username_too_long": "اِسم المُستَخدِم طويل جداً (يَجِبُ ألّا يكون أطول من ثلاثين خانة)", "email_invalid": "هذا عنوان بريد إلكتروني غير صالح", - "password_too_short": "كلمة المرور قصيرة جداً (يجب أن تكون 8 أحرف على الأقل)" + "password_too_short": "رمز السر قصير جدًا (يجب أن يتكون من ثمان خانات على الأقل)" } } }, "server_rules": { "title": "بعض القواعد الأساسية.", - "subtitle": "تم سنّ هذه القواعد من قبل مشرفي %s.", - "prompt": "إن اخترت المواصلة، فإنك تخضع لشروط الخدمة وسياسة الخصوصية لـ %s.", - "terms_of_service": "شروط الخدمة", - "privacy_policy": "سياسة الخصوصية", + "subtitle": "سُنَّت هذه القواعد من قِبل مشرفي %s.", + "prompt": "في حال إختيارك للمواصلة، أنت تخضع لشروط الخدمة وسياسة الخصوصية لِـ%s.", + "terms_of_service": "شُرُوط الخِدمَة", + "privacy_policy": "سِياسَة الخُصُوصيَّة", "button": { - "confirm": "انا أوافق" + "confirm": "أنا مُوافِق" } }, "confirm_email": { - "title": "شيء واحد أخير.", - "subtitle": "لقد أرسلنا للتو رسالة بريد إلكتروني إلى %s،\nاضغط على الرابط لتأكيد حسابك.", + "title": "شيءٌ أخير.", + "subtitle": "لقد أرسلنا للتو بريد إلكتروني إلى %s،\nانقر على الرابط لتأكيد حسابك.", "button": { "open_email_app": "افتح تطبيق البريد الإلكتروني", "dont_receive_email": "لم أستلم أبدًا بريدا إلكترونيا" From 56b5c4e2ef2ce72e4c5422220d0dfd51133dc418 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 6 Dec 2021 10:11:42 +0100 Subject: [PATCH 004/374] New translations app.json (Arabic) --- .../StringsConvertor/input/ar_SA/app.json | 130 +++++++++--------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index d3459c0ca..f2ad0098c 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -151,7 +151,7 @@ } }, "friendship": { - "follow": "المُتابعة", + "follow": "مُتابَعَة", "following": "مُتابَع", "request": "إرسال طَلَب", "pending": "قيد المُراجعة", @@ -297,12 +297,12 @@ "title": "شيءٌ أخير.", "subtitle": "لقد أرسلنا للتو بريد إلكتروني إلى %s،\nانقر على الرابط لتأكيد حسابك.", "button": { - "open_email_app": "افتح تطبيق البريد الإلكتروني", - "dont_receive_email": "لم أستلم أبدًا بريدا إلكترونيا" + "open_email_app": "فتح تطبيق البريد الإلكتروني", + "dont_receive_email": "لم أستلم بريدًا إلكترونيًا أبدًا" }, "dont_receive_email": { "title": "تحقق من بريدك الإلكتروني", - "description": "تحقق ممَّ إذا كان عنوان بريدك الإلكتروني صحيحًا وكذلك تأكد مِن مجلد البريد غير الهام إذا لم تكن قد فعلت ذلك.", + "description": "تحقق ممَّ إذا كان عنوان بريدك الإلكتروني صحيحًا، وكذلك تأكد مِن مجلد البريد غير الهام إذا لم تكن قد فعلت ذلك.", "resend_email": "إعادة إرسال البريد الإلكتروني" }, "open_email_app": { @@ -313,12 +313,12 @@ } }, "home_timeline": { - "title": "الخيط الرئيسي", + "title": "الرَّئِيسَة", "navigation_bar_state": { - "offline": "غير متصل", + "offline": "غَير مُتَّصِل", "new_posts": "إظهار منشورات جديدة", - "published": "تم نشره!", - "Publishing": "جارٍ نشر المشاركة…" + "published": "تمَّ النَّشر!", + "Publishing": "يَجري نَشر المُشارَكَة..." } }, "suggestion_account": { @@ -328,31 +328,31 @@ "compose": { "title": { "new_post": "منشور جديد", - "new_reply": "رد جديد" + "new_reply": "رَدٌّ جديد" }, "media_selection": { - "camera": "التقط صورة", + "camera": "إلتقاط صورة", "photo_library": "مكتبة الصور", "browse": "تصفح" }, "content_input_placeholder": "أخبِرنا بِما يَجُولُ فِي ذِهنَك", - "compose_action": "انشر", - "replying_to_user": "رد على %s", + "compose_action": "نَشر", + "replying_to_user": "رَدًا على %s", "attachment": { "photo": "صورة", - "video": "فيديو", - "attachment_broken": "هذا ال%s مُعطَّل ويتعذَّر رفعه إلى ماستودون.", - "description_photo": "صِف الصورة للمكفوفين...", - "description_video": "صِف المقطع المرئي للمكفوفين..." + "video": "مقطع مرئي", + "attachment_broken": "هذا ال%s مُعطَّل\nويتعذَّرُ رفعُه إلى ماستودون.", + "description_photo": "صِف الصورة للمَكفوفين...", + "description_video": "صِف المقطع المرئي للمَكفوفين..." }, "poll": { - "duration_time": "المدة: %s", - "thirty_minutes": "30 دقيقة", - "one_hour": "ساعة واحدة", - "six_hours": "6 ساعات", - "one_day": "يوم واحد", - "three_days": "3 أيام", - "seven_days": "7 أيام", + "duration_time": "المُدَّة: %s", + "thirty_minutes": "ثلاثون دقيقة", + "one_hour": "ساعةٌ واحدة", + "six_hours": "سِتُّ ساعات", + "one_day": "يومٌ واحِد", + "three_days": "ثلاثةُ أيام", + "seven_days": "سبعةُ أيام", "option_number": "الخيار %ld" }, "content_warning": { @@ -361,33 +361,33 @@ "visibility": { "public": "للعامة", "unlisted": "غير مُدرَج", - "private": "لمتابعيك فقط", - "direct": "ففط للأشخاص المشار إليهم" + "private": "للمُتابِعينَ فقط", + "direct": "للأشخاص المُشار إليهم" }, "auto_complete": { - "space_to_add": "انقر مساحة لإضافتِها" + "space_to_add": "انقر على مساحة لإضافتِها" }, "accessibility": { "append_attachment": "إضافة مُرفَق", "append_poll": "اضافة استطلاع رأي", "remove_poll": "إزالة الاستطلاع", - "custom_emoji_picker": "منتقي مخصص للإيموجي", - "enable_content_warning": "تنشيط تحذير المحتوى", - "disable_content_warning": "تعطيل تحذير الحتوى", + "custom_emoji_picker": "منتقي الرموز التعبيرية المُخصَّص", + "enable_content_warning": "تفعيل تحذير المُحتَوى", + "disable_content_warning": "تعطيل تحذير المُحتَوى", "post_visibility_menu": "قائمة ظهور المنشور" }, "keyboard": { "discard_post": "تجاهُل المنشور", "publish_post": "نَشر المَنشُور", "toggle_poll": "تبديل الاستطلاع", - "toggle_content_warning": "تبديل تحذير المُحتوى", + "toggle_content_warning": "تبديل تحذير المُحتَوى", "append_attachment_entry": "إضافة مُرفَق - %s", "select_visibility_entry": "اختر مدى الظهور - %s" } }, "profile": { "dashboard": { - "posts": "منشورات", + "posts": "مَنشورات", "following": "مُتابَع", "followers": "متابِع" }, @@ -395,22 +395,22 @@ "add_row": "إضافة صف", "placeholder": { "label": "التسمية", - "content": "المحتوى" + "content": "المُحتَوى" } }, "segmented_control": { - "posts": "منشورات", - "replies": "ردود", - "media": "وسائط" + "posts": "مَنشورات", + "replies": "رُدُود", + "media": "وَسائِط" }, "relationship_action_alert": { "confirm_unmute_user": { - "title": "إلغاء كتم الحساب", - "message": "أكِّد لرفع كتمْ %s" + "title": "رفع الكتم عن الحساب", + "message": "أكِّد لرفع الكتمْ عن %s" }, "confirm_unblock_usre": { - "title": "إلغاء حظر الحساب", - "message": "أكِّد لرفع حظر %s" + "title": "رفع الحظر عن الحساب", + "message": "أكِّد لرفع الحظر عن %s" } } }, @@ -421,52 +421,52 @@ "footer": "لا يُمكِن عَرض المُتابَعات مِنَ الخوادم الأُخرى." }, "search": { - "title": "بحث", + "title": "البحث", "search_bar": { - "placeholder": "البحث عن وسوم أو مستخدمين·ات", + "placeholder": "البحث عن وسوم أو مستخدمين", "cancel": "إلغاء" }, "recommend": { - "button_text": "طالع الكل", + "button_text": "إظهار الكُل", "hash_tag": { - "title": "ذات شعبية على ماستدون", - "description": "الوسوم التي تحظى بقدر كبير من الاهتمام", + "title": "ذُو شعبيَّة على ماستودون", + "description": "الوُسُومُ الَّتي تَحظى بقدرٍ كبيرٍ مِنَ الاِهتمام", "people_talking": "%s أشخاص يتحدَّثوا" }, "accounts": { - "title": "حسابات قد تعجبك", - "description": "قد ترغب في متابعة هذه الحسابات", - "follow": "تابع" + "title": "حِساباتٍ قَد تُعجِبُك", + "description": "قَد تَرغَب في مُتابَعَةِ هَذِهِ الحِسابات", + "follow": "مُتابَعَة" } }, "searching": { "segment": { - "all": "الكل", + "all": "الكُل", "people": "الأشخاص", - "hashtags": "الوسوم", - "posts": "المنشورات" + "hashtags": "الوُسُوم", + "posts": "المَنشورات" }, "empty_state": { - "no_results": "ليس هناك أية نتيجة" + "no_results": "لا تُوجَدُ نتائِج" }, - "recent_search": "عمليات البحث الأخيرة", + "recent_search": "عَمَليَّاُت البَحثِ الأخيرَة", "clear": "مَحو" } }, "favorite": { - "title": "مفضلتك" + "title": "مُفضَّلَتُك" }, "notification": { "title": { - "Everything": "الكل", + "Everything": "كُلُّ شيء", "Mentions": "الإشارات" }, - "user_followed_you": "يتابعك %s", - "user_favorited your post": "أضاف %s منشورك إلى مفضلته", - "user_reblogged_your_post": "أعاد %s تدوين مشاركتك", - "user_mentioned_you": "أشار إليك %s", - "user_requested_to_follow_you": "طلب %s متابعتك", - "user_your_poll_has_ended": "%s اِنتهى استطلاعُكَ للرأي", + "user_followed_you": "%s بَدَأ بِمُتابَعَتِك", + "user_favorited your post": "%s فَضَّلَ مَنشُورك", + "user_reblogged_your_post": "أعاد %s تدوين مَنشُورك", + "user_mentioned_you": "%s أشارَ إليك", + "user_requested_to_follow_you": "طَلَبَ %s مُتابَعتك", + "user_your_poll_has_ended": "%s اِنتهى اِستطلاعُكَ للرأي", "keyobard": { "show_everything": "إظهار كل شيء", "show_mentions": "إظهار الإشارات" @@ -480,17 +480,17 @@ "title": "الإعدادات", "section": { "appearance": { - "title": "المظهر", + "title": "المَظهر", "automatic": "تلقائي", "light": "مضيءٌ دائمًا", "dark": "مظلمٌ دائِمًا" }, "notifications": { "title": "الإشعارات", - "favorites": "الإعجاب بِمنشوراتي", - "follows": "يتابعني", - "boosts": "إعادة تدوين منشوراتي", - "mentions": "الإشارة لي", + "favorites": "أُعْجِبَ بِمَنشوري", + "follows": "تابَعَني", + "boosts": "أعادَ تدوينَ مَنشوري", + "mentions": "أشارَ إليّ", "trigger": { "anyone": "أي شخص", "follower": "مشترِك", From d9cc83f492de0c793317155b02c9ee56a2114617 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 6 Dec 2021 14:51:53 +0100 Subject: [PATCH 005/374] New translations app.json (Arabic) --- Localization/StringsConvertor/input/ar_SA/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index f2ad0098c..ff6b08f19 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -496,7 +496,7 @@ "follower": "مشترِك", "follow": "أي شخص أُتابِعُه", "noone": "لا أحد", - "title": "إشعاري عِندَ" + "title": "أشعِرني إذا" } }, "preference": { From f3973c54320f798db0a9747d30afcb1ccdb1f794 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 6 Dec 2021 15:48:17 +0100 Subject: [PATCH 006/374] New translations app.json (Arabic) --- .../StringsConvertor/input/ar_SA/app.json | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index ff6b08f19..7ab7bd5e9 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -487,51 +487,51 @@ }, "notifications": { "title": "الإشعارات", - "favorites": "أُعْجِبَ بِمَنشوري", - "follows": "تابَعَني", - "boosts": "أعادَ تدوينَ مَنشوري", - "mentions": "أشارَ إليّ", + "favorites": "بِالإعْجاب بِمَنشوري", + "follows": "بِمُتابَعَتي", + "boosts": "بِإعادَةِ تدوينِ مَنشوري", + "mentions": "بِالإشارَةِ إليّ", "trigger": { - "anyone": "أي شخص", - "follower": "مشترِك", + "anyone": "أيُّ شخصٍ", + "follower": "مُتابِعٌ", "follow": "أي شخص أُتابِعُه", - "noone": "لا أحد", - "title": "أشعِرني إذا" + "noone": "لَا أحد", + "title": "أشعِرني عِندما يَقومُ" } }, "preference": { - "title": "التفضيلات", - "true_black_dark_mode": "النمط الأسود الداكِن الحقيقي", - "disable_avatar_animation": "تعطيل الصور الرمزية المتحرِّكة", - "disable_emoji_animation": "تعطيل الرموز التعبيرية المتحرِّكَة", - "using_default_browser": "اِستخدام المتصفح الافتراضي لفتح الروابط" + "title": "التَّفضيلات", + "true_black_dark_mode": "النَّمَطُ الأسوَدُ الداكِنُ الحَقيقي", + "disable_avatar_animation": "تَعطيلُ الصوَرِ الرمزيَّةِ المُتحرِّكَة", + "disable_emoji_animation": "تَعطيلُ الرُموزِ التَّعبيريَّةِ المُتحرِّكَة", + "using_default_browser": "اِستِخدامُ المُتصفِّحِ الاِفتراضي لِفتحِ الرَّوابِط" }, "boring_zone": { - "title": "المنطقة المملة", - "account_settings": "إعدادات الحساب", - "terms": "شروط الخدمة", - "privacy": "سياسة الخصوصية" + "title": "المنطِقَةُ المُملَّة", + "account_settings": "إعداداتُ الحِساب", + "terms": "شُرُوطُ الخِدمَة", + "privacy": "سِياسَةُ الخُصوصيَّة" }, "spicy_zone": { - "title": "المنطقة الحارة", - "clear": "مسح ذاكرة التخزين المؤقت للوسائط", - "signout": "تسجيل الخروج" + "title": "المنطِقَةُ اللَّاذِعَة", + "clear": "مَحوُ ذاكِرَةُ التَّخزينِ المُؤقت لِلوسائِط", + "signout": "تَسجيلُ الخُروج" } }, "footer": { - "mastodon_description": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء على GitHub في %s (%s)" + "mastodon_description": "ماستودون بَرنامجٌ مَفتُوحُ المَصدَر. يُمكِنُكَ المُساهَمَةُ، أوِ الإبلاغُ عَنِ المُشكِلات عَن طريق مِنصَّة جيت هاب (GitHub) في %s (%s)" }, "keyboard": { "close_settings_window": "إغلاق نافذة الإعدادات" } }, "report": { - "title": "ابلغ عن %s", - "step1": "الخطوة 1 من 2", - "step2": "الخطوة 2 من 2", - "content1": "هل ترغب في إضافة أي مشاركات أُخرى إلى الشكوى؟", - "content2": "هل هناك أي شيء يجب أن يعرفه المُراقبين حول هذه الشكوى؟", - "send": "إرسال الشكوى", + "title": "الإبلاغ عن %s", + "step1": "الخطوة الأولى مِن أصل اثنتين", + "step2": "الخطوة الثانية والأخيرة", + "content1": "هل ترغب في إضافة أي منشورات أُخرى إلى البلاغ؟", + "content2": "هل هناك أي شيء يجب أن يعرفه المُراقبين حول هذا البلاغ؟", + "send": "إرسال البلاغ", "skip_to_send": "إرسال بدون تعليق", "text_placeholder": "اكتب أو الصق تعليقات إضافيَّة" }, @@ -543,14 +543,14 @@ } }, "account_list": { - "tab_bar_hint": "المِلف المُحدَّد حاليًا: %s. انقر نقرًا مزدوجًا ثم اضغط مع الاستمرار لإظهار مُبدِّل الحِساب", - "dismiss_account_switcher": "تجاهُل مبدِّل الحساب", - "add_account": "إضافة حساب" + "tab_bar_hint": "المِلف المُحدَّد حاليًا: %s. انقر نقرًا مزدوجًا مع الاستمرار لإظهار مُبدِّل الحِساب", + "dismiss_account_switcher": "تجاهُل مبدِّل الحِساب", + "add_account": "إضافَةُ حِساب" }, "wizard": { "new_in_mastodon": "جديد في ماستودون", "multiple_account_switch_intro_description": "بدِّل بين حسابات متعددة عبر الاستمرار بالضغط على زر الملف الشخصي.", - "accessibility_hint": "انقر نقرًا مزدوجًا لتجاهل النافذة المنبثقة" + "accessibility_hint": "انقر نقرًا مزدوجًا لتجاهُل النافذة المنبثقة" } } } \ No newline at end of file From 4e44b0d0f99b041f371e21761e52b9a13343e9a5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 6 Dec 2021 16:58:43 +0100 Subject: [PATCH 007/374] New translations app.json (Arabic) --- Localization/StringsConvertor/input/ar_SA/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index 7ab7bd5e9..a49a3bb4c 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -362,7 +362,7 @@ "public": "للعامة", "unlisted": "غير مُدرَج", "private": "للمُتابِعينَ فقط", - "direct": "للأشخاص المُشار إليهم" + "direct": "للأشخاص المُشار إليهم فقط" }, "auto_complete": { "space_to_add": "انقر على مساحة لإضافتِها" From 2ff224122784a60ea529e2fdeac3610e96988140 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 9 Dec 2021 05:00:46 +0100 Subject: [PATCH 008/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 556 ++++++++++++++++++ 1 file changed, 556 insertions(+) create mode 100644 Localization/StringsConvertor/input/eu_ES/app.json diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json new file mode 100644 index 000000000..5c01ae7e0 --- /dev/null +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -0,0 +1,556 @@ +{ + "common": { + "alerts": { + "common": { + "please_try_again": "Please try again.", + "please_try_again_later": "Please try again later." + }, + "sign_up_failure": { + "title": "Sign Up Failure" + }, + "server_error": { + "title": "Server Error" + }, + "vote_failure": { + "title": "Vote Failure", + "poll_ended": "The poll has ended" + }, + "discard_post_content": { + "title": "Discard Draft", + "message": "Confirm to discard composed post content." + }, + "publish_post_failure": { + "title": "Publish Failure", + "message": "Failed to publish the post.\nPlease check your internet connection.", + "attachments_message": { + "video_attach_with_photo": "Cannot attach a video to a post that already contains images.", + "more_than_one_video": "Cannot attach more than one video." + } + }, + "edit_profile_failure": { + "title": "Edit Profile Error", + "message": "Cannot edit profile. Please try again." + }, + "sign_out": { + "title": "Sign Out", + "message": "Are you sure you want to sign out?", + "confirm": "Sign Out" + }, + "block_domain": { + "title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.", + "block_entire_domain": "Block Domain" + }, + "save_photo_failure": { + "title": "Save Photo Failure", + "message": "Please enable the photo library access permission to save the photo." + }, + "delete_post": { + "title": "Are you sure you want to delete this post?", + "delete": "Delete" + }, + "clean_cache": { + "title": "Clean Cache", + "message": "Successfully cleaned %s cache." + } + }, + "controls": { + "actions": { + "back": "Back", + "next": "Next", + "previous": "Previous", + "open": "Open", + "add": "Add", + "remove": "Remove", + "edit": "Edit", + "save": "Save", + "ok": "OK", + "done": "Done", + "confirm": "Confirm", + "continue": "Continue", + "compose": "Compose", + "cancel": "Cancel", + "discard": "Discard", + "try_again": "Try Again", + "take_photo": "Take Photo", + "save_photo": "Save Photo", + "copy_photo": "Copy Photo", + "sign_in": "Sign In", + "sign_up": "Sign Up", + "see_more": "See More", + "preview": "Preview", + "share": "Share", + "share_user": "Share %s", + "share_post": "Share Post", + "open_in_safari": "Open in Safari", + "find_people": "Find people to follow", + "manually_search": "Manually search instead", + "skip": "Skip", + "reply": "Reply", + "report_user": "Report %s", + "block_domain": "Block %s", + "unblock_domain": "Unblock %s", + "settings": "Settings", + "delete": "Delete" + }, + "tabs": { + "home": "Home", + "search": "Search", + "notification": "Notification", + "profile": "Profile" + }, + "keyboard": { + "common": { + "switch_to_tab": "Switch to %s", + "compose_new_post": "Compose New Post", + "show_favorites": "Show Favorites", + "open_settings": "Open Settings" + }, + "timeline": { + "previous_status": "Previous Post", + "next_status": "Next Post", + "open_status": "Open Post", + "open_author_profile": "Open Author's Profile", + "open_reblogger_profile": "Open Reblogger's Profile", + "reply_status": "Reply to Post", + "toggle_reblog": "Toggle Reblog on Post", + "toggle_favorite": "Toggle Favorite on Post", + "toggle_content_warning": "Toggle Content Warning", + "preview_image": "Preview Image" + }, + "segmented_control": { + "previous_section": "Previous Section", + "next_section": "Next Section" + } + }, + "status": { + "user_reblogged": "%s reblogged", + "user_replied_to": "Replied to %s", + "show_post": "Show Post", + "show_user_profile": "Show user profile", + "content_warning": "Content Warning", + "media_content_warning": "Tap anywhere to reveal", + "poll": { + "vote": "Vote", + "closed": "Closed" + }, + "actions": { + "reply": "Reply", + "reblog": "Reblog", + "unreblog": "Undo reblog", + "favorite": "Favorite", + "unfavorite": "Unfavorite", + "menu": "Menu" + }, + "tag": { + "url": "URL", + "mention": "Mention", + "link": "Link", + "hashtag": "Hashtag", + "email": "Email", + "emoji": "Emoji" + } + }, + "friendship": { + "follow": "Follow", + "following": "Following", + "request": "Request", + "pending": "Pending", + "block": "Block", + "block_user": "Block %s", + "block_domain": "Block %s", + "unblock": "Unblock", + "unblock_user": "Unblock %s", + "blocked": "Blocked", + "mute": "Mute", + "mute_user": "Mute %s", + "unmute": "Unmute", + "unmute_user": "Unmute %s", + "muted": "Muted", + "edit_info": "Edit Info" + }, + "timeline": { + "filtered": "Filtered", + "timestamp": { + "now": "Now" + }, + "loader": { + "load_missing_posts": "Load missing posts", + "loading_missing_posts": "Loading missing posts...", + "show_more_replies": "Show more replies" + }, + "header": { + "no_status_found": "No Post Found", + "blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", + "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.", + "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.", + "user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.", + "suspended_warning": "This user has been suspended.", + "user_suspended_warning": "%s’s account has been suspended." + } + } + } + }, + "scene": { + "welcome": { + "slogan": "Social networking\nback in your hands." + }, + "server_picker": { + "title": "Pick a server,\nany server.", + "button": { + "category": { + "all": "All", + "all_accessiblity_description": "Category: All", + "academia": "academia", + "activism": "activism", + "food": "food", + "furry": "furry", + "games": "games", + "general": "general", + "journalism": "journalism", + "lgbt": "lgbt", + "regional": "regional", + "art": "art", + "music": "music", + "tech": "tech" + }, + "see_less": "See Less", + "see_more": "See More" + }, + "label": { + "language": "LANGUAGE", + "users": "USERS", + "category": "CATEGORY" + }, + "input": { + "placeholder": "Find a server or join your own..." + }, + "empty_state": { + "finding_servers": "Finding available servers...", + "bad_network": "Something went wrong while loading the data. Check your internet connection.", + "no_results": "No results" + } + }, + "register": { + "title": "Tell us about you.", + "input": { + "avatar": { + "delete": "Delete" + }, + "username": { + "placeholder": "username", + "duplicate_prompt": "This username is taken." + }, + "display_name": { + "placeholder": "display name" + }, + "email": { + "placeholder": "email" + }, + "password": { + "placeholder": "password", + "hint": "Your password needs at least eight characters" + }, + "invite": { + "registration_user_invite_request": "Why do you want to join?" + } + }, + "error": { + "item": { + "username": "Username", + "email": "Email", + "password": "Password", + "agreement": "Agreement", + "locale": "Locale", + "reason": "Reason" + }, + "reason": { + "blocked": "%s contains a disallowed email provider", + "unreachable": "%s does not seem to exist", + "taken": "%s is already in use", + "reserved": "%s is a reserved keyword", + "accepted": "%s must be accepted", + "blank": "%s is required", + "invalid": "%s is invalid", + "too_long": "%s is too long", + "too_short": "%s is too short", + "inclusion": "%s is not a supported value" + }, + "special": { + "username_invalid": "Username must only contain alphanumeric characters and underscores", + "username_too_long": "Username is too long (can’t be longer than 30 characters)", + "email_invalid": "This is not a valid email address", + "password_too_short": "Password is too short (must be at least 8 characters)" + } + } + }, + "server_rules": { + "title": "Some ground rules.", + "subtitle": "These rules are set by the admins of %s.", + "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", + "terms_of_service": "terms of service", + "privacy_policy": "privacy policy", + "button": { + "confirm": "I Agree" + } + }, + "confirm_email": { + "title": "One last thing.", + "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "button": { + "open_email_app": "Open Email App", + "dont_receive_email": "I never got an email" + }, + "dont_receive_email": { + "title": "Check your email", + "description": "Check if your email address is correct as well as your junk folder if you haven’t.", + "resend_email": "Resend Email" + }, + "open_email_app": { + "title": "Check your inbox.", + "description": "We just sent you an email. Check your junk folder if you haven’t.", + "mail": "Mail", + "open_email_client": "Open Email Client" + } + }, + "home_timeline": { + "title": "Home", + "navigation_bar_state": { + "offline": "Offline", + "new_posts": "See new posts", + "published": "Published!", + "Publishing": "Publishing post..." + } + }, + "suggestion_account": { + "title": "Find People to Follow", + "follow_explain": "When you follow someone, you’ll see their posts in your home feed." + }, + "compose": { + "title": { + "new_post": "New Post", + "new_reply": "New Reply" + }, + "media_selection": { + "camera": "Take Photo", + "photo_library": "Photo Library", + "browse": "Browse" + }, + "content_input_placeholder": "Type or paste what’s on your mind", + "compose_action": "Publish", + "replying_to_user": "replying to %s", + "attachment": { + "photo": "photo", + "video": "video", + "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", + "description_photo": "Describe the photo for the visually-impaired...", + "description_video": "Describe the video for the visually-impaired..." + }, + "poll": { + "duration_time": "Duration: %s", + "thirty_minutes": "30 minutes", + "one_hour": "1 Hour", + "six_hours": "6 Hours", + "one_day": "1 Day", + "three_days": "3 Days", + "seven_days": "7 Days", + "option_number": "Option %ld" + }, + "content_warning": { + "placeholder": "Write an accurate warning here..." + }, + "visibility": { + "public": "Public", + "unlisted": "Unlisted", + "private": "Followers only", + "direct": "Only people I mention" + }, + "auto_complete": { + "space_to_add": "Space to add" + }, + "accessibility": { + "append_attachment": "Add Attachment", + "append_poll": "Add Poll", + "remove_poll": "Remove Poll", + "custom_emoji_picker": "Custom Emoji Picker", + "enable_content_warning": "Enable Content Warning", + "disable_content_warning": "Disable Content Warning", + "post_visibility_menu": "Post Visibility Menu" + }, + "keyboard": { + "discard_post": "Discard Post", + "publish_post": "Publish Post", + "toggle_poll": "Toggle Poll", + "toggle_content_warning": "Toggle Content Warning", + "append_attachment_entry": "Add Attachment - %s", + "select_visibility_entry": "Select Visibility - %s" + } + }, + "profile": { + "dashboard": { + "posts": "posts", + "following": "following", + "followers": "followers" + }, + "fields": { + "add_row": "Add Row", + "placeholder": { + "label": "Label", + "content": "Content" + } + }, + "segmented_control": { + "posts": "Posts", + "replies": "Replies", + "media": "Media" + }, + "relationship_action_alert": { + "confirm_unmute_user": { + "title": "Unmute Account", + "message": "Confirm to unmute %s" + }, + "confirm_unblock_usre": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" + } + } + }, + "follower": { + "footer": "Followers from other servers are not displayed." + }, + "following": { + "footer": "Follows from other servers are not displayed." + }, + "search": { + "title": "Search", + "search_bar": { + "placeholder": "Search hashtags and users", + "cancel": "Cancel" + }, + "recommend": { + "button_text": "See All", + "hash_tag": { + "title": "Trending on Mastodon", + "description": "Hashtags that are getting quite a bit of attention", + "people_talking": "%s people are talking" + }, + "accounts": { + "title": "Accounts you might like", + "description": "You may like to follow these accounts", + "follow": "Follow" + } + }, + "searching": { + "segment": { + "all": "All", + "people": "People", + "hashtags": "Hashtags", + "posts": "Posts" + }, + "empty_state": { + "no_results": "No results" + }, + "recent_search": "Recent searches", + "clear": "Clear" + } + }, + "favorite": { + "title": "Your Favorites" + }, + "notification": { + "title": { + "Everything": "Everything", + "Mentions": "Mentions" + }, + "user_followed_you": "%s followed you", + "user_favorited your post": "%s favorited your post", + "user_reblogged_your_post": "%s reblogged your post", + "user_mentioned_you": "%s mentioned you", + "user_requested_to_follow_you": "%s requested to follow you", + "user_your_poll_has_ended": "%s Your poll has ended", + "keyobard": { + "show_everything": "Show Everything", + "show_mentions": "Show Mentions" + } + }, + "thread": { + "back_title": "Post", + "title": "Post from %s" + }, + "settings": { + "title": "Settings", + "section": { + "appearance": { + "title": "Appearance", + "automatic": "Automatic", + "light": "Always Light", + "dark": "Always Dark" + }, + "notifications": { + "title": "Notifications", + "favorites": "Favorites my post", + "follows": "Follows me", + "boosts": "Reblogs my post", + "mentions": "Mentions me", + "trigger": { + "anyone": "anyone", + "follower": "a follower", + "follow": "anyone I follow", + "noone": "no one", + "title": "Notify me when" + } + }, + "preference": { + "title": "Preferences", + "true_black_dark_mode": "True black dark mode", + "disable_avatar_animation": "Disable animated avatars", + "disable_emoji_animation": "Disable animated emojis", + "using_default_browser": "Use default browser to open links" + }, + "boring_zone": { + "title": "The Boring Zone", + "account_settings": "Account Settings", + "terms": "Terms of Service", + "privacy": "Privacy Policy" + }, + "spicy_zone": { + "title": "The Spicy Zone", + "clear": "Clear Media Cache", + "signout": "Sign Out" + } + }, + "footer": { + "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + }, + "keyboard": { + "close_settings_window": "Close Settings Window" + } + }, + "report": { + "title": "Report %s", + "step1": "Step 1 of 2", + "step2": "Step 2 of 2", + "content1": "Are there any other posts you’d like to add to the report?", + "content2": "Is there anything the moderators should know about this report?", + "send": "Send Report", + "skip_to_send": "Send without comment", + "text_placeholder": "Type or paste additional comments" + }, + "preview": { + "keyboard": { + "close_preview": "Close Preview", + "show_next": "Show Next", + "show_previous": "Show Previous" + } + }, + "account_list": { + "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", + "dismiss_account_switcher": "Dismiss Account Switcher", + "add_account": "Add Account" + }, + "wizard": { + "new_in_mastodon": "New in Mastodon", + "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.", + "accessibility_hint": "Double tap to dismiss this wizard" + } + } +} \ No newline at end of file From 41d84c5b77e471c93942687690ba0e7b56fd29e2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 9 Dec 2021 05:00:47 +0100 Subject: [PATCH 009/374] New translations ios-infoPlist.json (Basque) --- .../StringsConvertor/input/eu_ES/ios-infoPlist.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Localization/StringsConvertor/input/eu_ES/ios-infoPlist.json diff --git a/Localization/StringsConvertor/input/eu_ES/ios-infoPlist.json b/Localization/StringsConvertor/input/eu_ES/ios-infoPlist.json new file mode 100644 index 000000000..c6db73de0 --- /dev/null +++ b/Localization/StringsConvertor/input/eu_ES/ios-infoPlist.json @@ -0,0 +1,6 @@ +{ + "NSCameraUsageDescription": "Used to take photo for post status", + "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", + "NewPostShortcutItemTitle": "New Post", + "SearchShortcutItemTitle": "Search" +} From b1f5fa0bc4807b462d8b1c51454362fc3eb96475 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 9 Dec 2021 05:00:48 +0100 Subject: [PATCH 010/374] New translations Localizable.stringsdict (Basque) --- .../input/eu_ES/Localizable.stringsdict | 390 ++++++++++++++++++ 1 file changed, 390 insertions(+) create mode 100644 Localization/StringsConvertor/input/eu_ES/Localizable.stringsdict diff --git a/Localization/StringsConvertor/input/eu_ES/Localizable.stringsdict b/Localization/StringsConvertor/input/eu_ES/Localizable.stringsdict new file mode 100644 index 000000000..730e2902a --- /dev/null +++ b/Localization/StringsConvertor/input/eu_ES/Localizable.stringsdict @@ -0,0 +1,390 @@ + + + + + a11y.plural.count.unread.notification + + NSStringLocalizedFormatKey + %#@notification_count_unread_notification@ + notification_count_unread_notification + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 unread notification + other + %ld unread notification + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld characters + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + post + other + posts + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 favorite + other + %ld favorites + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 reblog + other + %ld reblogs + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 vote + other + %ld votes + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 voter + other + %ld voters + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 people talking + other + %ld people talking + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 follower + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 year left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 day left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hour left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minute left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 second left + other + %ld seconds left + + + date.year.ago.abbr + + NSStringLocalizedFormatKey + %#@count_year_ago_abbr@ + count_year_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1y ago + other + %ldy ago + + + date.month.ago.abbr + + NSStringLocalizedFormatKey + %#@count_month_ago_abbr@ + count_month_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1M ago + other + %ldM ago + + + date.day.ago.abbr + + NSStringLocalizedFormatKey + %#@count_day_ago_abbr@ + count_day_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1d ago + other + %ldd ago + + + date.hour.ago.abbr + + NSStringLocalizedFormatKey + %#@count_hour_ago_abbr@ + count_hour_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1h ago + other + %ldh ago + + + date.minute.ago.abbr + + NSStringLocalizedFormatKey + %#@count_minute_ago_abbr@ + count_minute_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1m ago + other + %ldm ago + + + date.second.ago.abbr + + NSStringLocalizedFormatKey + %#@count_second_ago_abbr@ + count_second_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1s ago + other + %lds ago + + + + From 8365bf7f09b5aae908d9de01f35d9d4ec523312a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 9 Dec 2021 05:00:49 +0100 Subject: [PATCH 011/374] New translations Intents.strings (Basque) --- .../Intents/input/eu_ES/Intents.strings | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Localization/StringsConvertor/Intents/input/eu_ES/Intents.strings diff --git a/Localization/StringsConvertor/Intents/input/eu_ES/Intents.strings b/Localization/StringsConvertor/Intents/input/eu_ES/Intents.strings new file mode 100644 index 000000000..6877490ba --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/eu_ES/Intents.strings @@ -0,0 +1,51 @@ +"16wxgf" = "Post on Mastodon"; + +"751xkl" = "Text Content"; + +"CsR7G2" = "Post on Mastodon"; + +"HZSGTr" = "What content to post?"; + +"HdGikU" = "Posting failed"; + +"KDNTJ4" = "Failure Reason"; + +"RHxKOw" = "Send Post with text content"; + +"RxSqsb" = "Post"; + +"WCIR3D" = "Post ${content} on Mastodon"; + +"ZKJSNu" = "Post"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Visibility"; + +"Zo4jgJ" = "Post Visibility"; + +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; + +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; + +"ayoYEb-dYQ5NN" = "${content}, Public"; + +"ayoYEb-ehFLjY" = "${content}, Followers Only"; + +"dUyuGg" = "Post on Mastodon"; + +"dYQ5NN" = "Public"; + +"ehFLjY" = "Followers Only"; + +"gfePDu" = "Posting failed. ${failureReason}"; + +"k7dbKQ" = "Post was sent successfully."; + +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; + +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Post was sent successfully. "; From 6d79a73c964d9d6fe704fa77a5400a2dd829f02a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 9 Dec 2021 05:00:50 +0100 Subject: [PATCH 012/374] New translations Intents.stringsdict (Basque) --- .../Intents/input/eu_ES/Intents.stringsdict | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Localization/StringsConvertor/Intents/input/eu_ES/Intents.stringsdict diff --git a/Localization/StringsConvertor/Intents/input/eu_ES/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/eu_ES/Intents.stringsdict new file mode 100644 index 000000000..18422c772 --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/eu_ES/Intents.stringsdict @@ -0,0 +1,38 @@ + + + + + There are ${count} options matching ‘${content}’. - 2 + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${content}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 option + other + %ld options + + + There are ${count} options matching ‘${visibility}’. + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${visibility}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 option + other + %ld options + + + + From 93e8f1f724586a8c522a32ab3793d252d09e7e9d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 21 Dec 2021 20:24:40 +0100 Subject: [PATCH 013/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 7acf48755..0c0734d26 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -2,8 +2,8 @@ "common": { "alerts": { "common": { - "please_try_again": "Var god försök igen.", - "please_try_again_later": "Var god försök igen senare." + "please_try_again": "Yritä uudelleen.", + "please_try_again_later": "Yritä uudelleen myöhemmin." }, "sign_up_failure": { "title": "Sign Up Failure" @@ -46,23 +46,23 @@ }, "delete_post": { "title": "Are you sure you want to delete this post?", - "delete": "Radera" + "delete": "Poista" }, "clean_cache": { - "title": "Clean Cache", + "title": "Puhdista välimuisti", "message": "Successfully cleaned %s cache." } }, "controls": { "actions": { - "back": "Back", - "next": "Next", - "previous": "Previous", - "open": "Open", - "add": "Add", - "remove": "Remove", - "edit": "Redigera", - "save": "Spara", + "back": "Takaisin", + "next": "Seuraava", + "previous": "Edellinen", + "open": "Avaa", + "add": "Lisää", + "remove": "Poista", + "edit": "Muokkaa", + "save": "Tallenna", "ok": "OK", "done": "Done", "confirm": "Confirm", @@ -72,31 +72,31 @@ "discard": "Discard", "try_again": "Försök igen", "take_photo": "Take Photo", - "save_photo": "Save Photo", - "copy_photo": "Copy Photo", - "sign_in": "Sign In", - "sign_up": "Sign Up", - "see_more": "See More", - "preview": "Preview", - "share": "Dela", + "save_photo": "Tallenna kuva", + "copy_photo": "Kopioi kuva", + "sign_in": "Kirjaudu sisään", + "sign_up": "Rekisteröidy", + "see_more": "Katso lisää", + "preview": "Esikatselu", + "share": "Jaa", "share_user": "Dela %s", "share_post": "Share Post", - "open_in_safari": "Öppna i Safari", + "open_in_safari": "Avaa Safarissa", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", - "reply": "Reply", + "reply": "Vastaa", "report_user": "Rapportera %s", "block_domain": "Block %s", "unblock_domain": "Unblock %s", - "settings": "Inställningar", - "delete": "Radera" + "settings": "Asetukset", + "delete": "Poista" }, "tabs": { - "home": "Home", - "search": "Search", + "home": "Koti", + "search": "Haku", "notification": "Notification", - "profile": "Profil" + "profile": "Profiili" }, "keyboard": { "common": { From a44bd410bd50869e2f05d240ada4bf3b41dcd1a2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 21 Dec 2021 21:34:12 +0100 Subject: [PATCH 014/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 154 +++++++++--------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 0c0734d26..5001ecd2b 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -13,7 +13,7 @@ }, "vote_failure": { "title": "Vote Failure", - "poll_ended": "Omröstningen har avslutats" + "poll_ended": "Kysely on päättynyt" }, "discard_post_content": { "title": "Discard Draft", @@ -32,9 +32,9 @@ "message": "Cannot edit profile. Please try again." }, "sign_out": { - "title": "Sign Out", + "title": "Kirjaudu ulos", "message": "Är du säker på att du vill logga ut?", - "confirm": "Sign Out" + "confirm": "Kirjaudu ulos" }, "block_domain": { "title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.", @@ -64,14 +64,14 @@ "edit": "Muokkaa", "save": "Tallenna", "ok": "OK", - "done": "Done", - "confirm": "Confirm", - "continue": "Fortsätt", + "done": "Valmis", + "confirm": "Vahvista", + "continue": "Jatka", "compose": "Compose", "cancel": "Avbryt", "discard": "Discard", - "try_again": "Försök igen", - "take_photo": "Take Photo", + "try_again": "Yritä uudelleen", + "take_photo": "Ota kuva", "save_photo": "Tallenna kuva", "copy_photo": "Kopioi kuva", "sign_in": "Kirjaudu sisään", @@ -79,14 +79,14 @@ "see_more": "Katso lisää", "preview": "Esikatselu", "share": "Jaa", - "share_user": "Dela %s", - "share_post": "Share Post", + "share_user": "Jaa %s", + "share_post": "Jaa julkaisu", "open_in_safari": "Avaa Safarissa", - "find_people": "Find people to follow", + "find_people": "Löydä tilejä seurattavaksi", "manually_search": "Manually search instead", - "skip": "Skip", + "skip": "Ohita", "reply": "Vastaa", - "report_user": "Rapportera %s", + "report_user": "Ilmianna %s", "block_domain": "Block %s", "unblock_domain": "Unblock %s", "settings": "Asetukset", @@ -103,15 +103,15 @@ "switch_to_tab": "Switch to %s", "compose_new_post": "Compose New Post", "show_favorites": "Show Favorites", - "open_settings": "Open Settings" + "open_settings": "Avaa asetukset" }, "timeline": { - "previous_status": "Previous Post", - "next_status": "Next Post", - "open_status": "Open Post", + "previous_status": "Edellinen julkaisu", + "next_status": "Seuraava julkaisu", + "open_status": "Avaa julkaisu", "open_author_profile": "Open Author's Profile", "open_reblogger_profile": "Open Reblogger's Profile", - "reply_status": "Reply to Post", + "reply_status": "Vastaa julkaisuun", "toggle_reblog": "Toggle Reblog on Post", "toggle_favorite": "Toggle Favorite on Post", "toggle_content_warning": "Toggle Content Warning", @@ -125,16 +125,16 @@ "status": { "user_reblogged": "%s reblogged", "user_replied_to": "Replied to %s", - "show_post": "Show Post", + "show_post": "Näytä julkaisu", "show_user_profile": "Show user profile", - "content_warning": "Content Warning", + "content_warning": "Sisältövaroitus", "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", "closed": "Closed" }, "actions": { - "reply": "Reply", + "reply": "Vastaa", "reblog": "Reblog", "unreblog": "Undo reblog", "favorite": "Favorite", @@ -146,13 +146,13 @@ "mention": "Mention", "link": "Link", "hashtag": "Hashtag", - "email": "Email", + "email": "Sähköposti", "emoji": "Emoji" } }, "friendship": { - "follow": "Följ", - "following": "Följer", + "follow": "Seuraa", + "following": "Seurataan", "request": "Request", "pending": "Pending", "block": "Block", @@ -161,11 +161,11 @@ "unblock": "Unblock", "unblock_user": "Unblock %s", "blocked": "Blocked", - "mute": "Mute", - "mute_user": "Mute %s", + "mute": "Mykistä", + "mute_user": "Mykistä %s", "unmute": "Unmute", "unmute_user": "Unmute %s", - "muted": "Muted", + "muted": "Mykistetty", "edit_info": "Edit Info" }, "timeline": { @@ -179,7 +179,7 @@ "show_more_replies": "Visa fler svar" }, "header": { - "no_status_found": "No Post Found", + "no_status_found": "Julkaisua ei löytynyt", "blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.", "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.", @@ -198,28 +198,28 @@ "title": "Pick a server,\nany server.", "button": { "category": { - "all": "All", + "all": "Kaikki", "all_accessiblity_description": "Kategori: Alla", "academia": "academia", - "activism": "activism", - "food": "food", + "activism": "aktivismi", + "food": "ruoka", "furry": "furry", - "games": "games", + "games": "pelit", "general": "general", - "journalism": "journalism", - "lgbt": "lgbt", + "journalism": "journalismi", + "lgbt": "hlbt", "regional": "regional", - "art": "art", - "music": "music", - "tech": "tech" + "art": "taide", + "music": "musiikki", + "tech": "tekniikka" }, "see_less": "See Less", "see_more": "See More" }, "label": { - "language": "SPRÅK", + "language": "KIELI", "users": "ANVÄNDARE", - "category": "KATEGORI" + "category": "KATEGORIA" }, "input": { "placeholder": "Find a server or join your own..." @@ -234,7 +234,7 @@ "title": "Tell us about you.", "input": { "avatar": { - "delete": "Radera" + "delete": "Poista" }, "username": { "placeholder": "username", @@ -244,10 +244,10 @@ "placeholder": "display name" }, "email": { - "placeholder": "email" + "placeholder": "sähköposti" }, "password": { - "placeholder": "password", + "placeholder": "salasana", "hint": "Your password needs at least eight characters" }, "invite": { @@ -257,8 +257,8 @@ "error": { "item": { "username": "Användarnamn", - "email": "Email", - "password": "Password", + "email": "Sähköposti", + "password": "Salasana", "agreement": "Agreement", "locale": "Locale", "reason": "Reason" @@ -295,13 +295,13 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Lähetimme juuri sähköpostin osoitteeseen %s, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.", "button": { "open_email_app": "Open Email App", "dont_receive_email": "I never got an email" }, "dont_receive_email": { - "title": "Check your email", + "title": "Tarkista sähköpostisi", "description": "Check if your email address is correct as well as your junk folder if you haven’t.", "resend_email": "Resend Email" }, @@ -313,33 +313,33 @@ } }, "home_timeline": { - "title": "Home", + "title": "Koti", "navigation_bar_state": { "offline": "Offline", - "new_posts": "See new posts", - "published": "Published!", - "Publishing": "Publishing post..." + "new_posts": "Uusia julkaisuja", + "published": "Julkaistu!", + "Publishing": "Julkaistaan julkaisua..." } }, "suggestion_account": { - "title": "Find People to Follow", + "title": "Löydä tilejä seurattavaksi", "follow_explain": "When you follow someone, you’ll see their posts in your home feed." }, "compose": { "title": { - "new_post": "New Post", + "new_post": "Uusi julkaisu", "new_reply": "New Reply" }, "media_selection": { - "camera": "Take Photo", - "photo_library": "Photo Library", + "camera": "Ota kuva", + "photo_library": "Kuvakirjasto", "browse": "Bläddra" }, "content_input_placeholder": "Type or paste what’s on your mind", - "compose_action": "Publicera", + "compose_action": "Julkaise", "replying_to_user": "replying to %s", "attachment": { - "photo": "photo", + "photo": "kuva", "video": "video", "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", "description_photo": "Describe the photo for the visually-impaired...", @@ -369,8 +369,8 @@ }, "accessibility": { "append_attachment": "Add Attachment", - "append_poll": "Add Poll", - "remove_poll": "Remove Poll", + "append_poll": "Lisää kysely", + "remove_poll": "Poista kysely", "custom_emoji_picker": "Custom Emoji Picker", "enable_content_warning": "Enable Content Warning", "disable_content_warning": "Disable Content Warning", @@ -387,19 +387,19 @@ }, "profile": { "dashboard": { - "posts": "posts", - "following": "following", - "followers": "followers" + "posts": "julkaisut", + "following": "seuraa", + "followers": "seuraajat" }, "fields": { "add_row": "Add Row", "placeholder": { "label": "Label", - "content": "Content" + "content": "Sisältö" } }, "segmented_control": { - "posts": "Posts", + "posts": "Julkaisut", "replies": "Replies", "media": "Media" }, @@ -421,30 +421,30 @@ "footer": "Follows from other servers are not displayed." }, "search": { - "title": "Search", + "title": "Haku", "search_bar": { "placeholder": "Search hashtags and users", "cancel": "Avbryt" }, "recommend": { - "button_text": "See All", + "button_text": "Katso kaikki", "hash_tag": { - "title": "Trending on Mastodon", + "title": "Trendaavat Mastodonissa", "description": "Hashtags that are getting quite a bit of attention", "people_talking": "%s people are talking" }, "accounts": { "title": "Accounts you might like", "description": "You may like to follow these accounts", - "follow": "Följ" + "follow": "Seuraa" } }, "searching": { "segment": { - "all": "All", - "people": "People", + "all": "Kaikki", + "people": "Tilit", "hashtags": "Hashtags", - "posts": "Posts" + "posts": "Julkaisut" }, "empty_state": { "no_results": "Inga resultat" @@ -461,7 +461,7 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s följde dig", + "user_followed_you": "%s seurasi sinua", "user_favorited your post": "%s favorited your post", "user_reblogged_your_post": "%s reblogged your post", "user_mentioned_you": "%s nämnde dig", @@ -473,11 +473,11 @@ } }, "thread": { - "back_title": "Post", + "back_title": "Julkaisu", "title": "Post from %s" }, "settings": { - "title": "Inställningar", + "title": "Asetukset", "section": { "appearance": { "title": "Appearance", @@ -515,7 +515,7 @@ "spicy_zone": { "title": "The Spicy Zone", "clear": "Clear Media Cache", - "signout": "Logga ut" + "signout": "Kirjaudu ulos" } }, "footer": { @@ -526,7 +526,7 @@ } }, "report": { - "title": "Rapportera %s", + "title": "Ilmianna %s", "step1": "Steg 1 av 2", "step2": "Steg 2 av 2", "content1": "Are there any other posts you’d like to add to the report?", @@ -537,7 +537,7 @@ }, "preview": { "keyboard": { - "close_preview": "Close Preview", + "close_preview": "Sulje esikatselu", "show_next": "Show Next", "show_previous": "Show Previous" } @@ -545,7 +545,7 @@ "account_list": { "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", "dismiss_account_switcher": "Dismiss Account Switcher", - "add_account": "Lägg till konto" + "add_account": "Lisää tili" }, "wizard": { "new_in_mastodon": "New in Mastodon", From 67a003529ab412c614050b3ff2ce2fa39a6c3365 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 21 Dec 2021 21:34:13 +0100 Subject: [PATCH 015/374] New translations ios-infoPlist.json (Swedish, Finland) --- Localization/StringsConvertor/input/sv_FI/ios-infoPlist.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/sv_FI/ios-infoPlist.json b/Localization/StringsConvertor/input/sv_FI/ios-infoPlist.json index c6db73de0..a89e92cbc 100644 --- a/Localization/StringsConvertor/input/sv_FI/ios-infoPlist.json +++ b/Localization/StringsConvertor/input/sv_FI/ios-infoPlist.json @@ -2,5 +2,5 @@ "NSCameraUsageDescription": "Used to take photo for post status", "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", "NewPostShortcutItemTitle": "New Post", - "SearchShortcutItemTitle": "Search" + "SearchShortcutItemTitle": "Haku" } From 06efb2b5be5a3a8568500eda06eca62cf45eefd2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 21 Dec 2021 22:32:45 +0100 Subject: [PATCH 016/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 5001ecd2b..ebb563664 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -6,10 +6,10 @@ "please_try_again_later": "Yritä uudelleen myöhemmin." }, "sign_up_failure": { - "title": "Sign Up Failure" + "title": "Rekisteröinti epäonnistui" }, "server_error": { - "title": "Serverfel" + "title": "Palvelinvirhe" }, "vote_failure": { "title": "Vote Failure", @@ -68,7 +68,7 @@ "confirm": "Vahvista", "continue": "Jatka", "compose": "Compose", - "cancel": "Avbryt", + "cancel": "Kumoa", "discard": "Discard", "try_again": "Yritä uudelleen", "take_photo": "Ota kuva", @@ -102,7 +102,7 @@ "common": { "switch_to_tab": "Switch to %s", "compose_new_post": "Compose New Post", - "show_favorites": "Show Favorites", + "show_favorites": "Näytä suosikit", "open_settings": "Avaa asetukset" }, "timeline": { @@ -131,7 +131,7 @@ "media_content_warning": "Tap anywhere to reveal", "poll": { "vote": "Vote", - "closed": "Closed" + "closed": "Suljettu" }, "actions": { "reply": "Vastaa", @@ -139,12 +139,12 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Meny" + "menu": "Valikko" }, "tag": { "url": "URL", "mention": "Mention", - "link": "Link", + "link": "Linkki", "hashtag": "Hashtag", "email": "Sähköposti", "emoji": "Emoji" @@ -271,15 +271,15 @@ "accepted": "%s must be accepted", "blank": "%s is required", "invalid": "%s is invalid", - "too_long": "%s is too long", - "too_short": "%s is too short", + "too_long": "%s on liian pitkä", + "too_short": "%s on liian lyhyt", "inclusion": "%s is not a supported value" }, "special": { "username_invalid": "Username must only contain alphanumeric characters and underscores", "username_too_long": "Username is too long (can’t be longer than 30 characters)", - "email_invalid": "This is not a valid email address", - "password_too_short": "Password is too short (must be at least 8 characters)" + "email_invalid": "Tämä ei ole kelvollinen sähköpostiosoite", + "password_too_short": "Salasana on liian lyhyt (täytyy olla vähintään 8 merkkiä)" } } }, @@ -287,8 +287,8 @@ "title": "Some ground rules.", "subtitle": "These rules are set by the admins of %s.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", - "terms_of_service": "terms of service", - "privacy_policy": "integritetspolicy", + "terms_of_service": "käyttöehdot", + "privacy_policy": "tietosuojakäytäntö", "button": { "confirm": "I Agree" } @@ -297,13 +297,13 @@ "title": "One last thing.", "subtitle": "Lähetimme juuri sähköpostin osoitteeseen %s, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.", "button": { - "open_email_app": "Open Email App", + "open_email_app": "Avaa sähköpostisovellus", "dont_receive_email": "I never got an email" }, "dont_receive_email": { "title": "Tarkista sähköpostisi", "description": "Check if your email address is correct as well as your junk folder if you haven’t.", - "resend_email": "Resend Email" + "resend_email": "Lähetä sähköposti uudelleen" }, "open_email_app": { "title": "Check your inbox.", @@ -347,12 +347,12 @@ }, "poll": { "duration_time": "Varaktighet: %s", - "thirty_minutes": "30 minuter", - "one_hour": "1 Hour", - "six_hours": "6 Hours", - "one_day": "1 Day", - "three_days": "3 Days", - "seven_days": "7 Days", + "thirty_minutes": "30 minuuttia", + "one_hour": "1 tunti", + "six_hours": "6 tuntia", + "one_day": "1 päivä", + "three_days": "3 päivää", + "seven_days": "7 päivää", "option_number": "Option %ld" }, "content_warning": { @@ -424,7 +424,7 @@ "title": "Haku", "search_bar": { "placeholder": "Search hashtags and users", - "cancel": "Avbryt" + "cancel": "Kumoa" }, "recommend": { "button_text": "Katso kaikki", @@ -434,8 +434,8 @@ "people_talking": "%s people are talking" }, "accounts": { - "title": "Accounts you might like", - "description": "You may like to follow these accounts", + "title": "Saatat pitää näistä tileistä", + "description": "Haluta ehkä seurata näitä tilejä", "follow": "Seuraa" } }, @@ -454,7 +454,7 @@ } }, "favorite": { - "title": "Your Favorites" + "title": "Omat suosikit" }, "notification": { "title": { From aaac6d106084d9478890aaf143115c7b5f40cfd8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 21 Dec 2021 22:32:46 +0100 Subject: [PATCH 017/374] New translations Localizable.stringsdict (Swedish, Finland) --- .../input/sv_FI/Localizable.stringsdict | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict b/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict index 65316e3d0..0ae761b96 100644 --- a/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict @@ -77,9 +77,9 @@ NSStringFormatValueTypeKey ld one - 1 post + 1 julkaisu other - %ld posts + %ld julkaisua plural.count.favorite @@ -93,9 +93,9 @@ NSStringFormatValueTypeKey ld one - 1 favorite + 1 suosikki other - %ld favorites + %ld suosikkia plural.count.reblog @@ -189,9 +189,9 @@ NSStringFormatValueTypeKey ld one - 1 följare + 1 seuraaja other - %ld följare + %ld seuraajaa date.year.left @@ -205,9 +205,9 @@ NSStringFormatValueTypeKey ld one - 1 year left + 1 vuosi jäljellä other - %ld years left + %ld vuotta jäljellä date.month.left From 8b28057faf92f589e197527c676687480b1dd3cb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 21 Dec 2021 23:32:20 +0100 Subject: [PATCH 018/374] New translations Localizable.stringsdict (Swedish, Finland) --- .../input/sv_FI/Localizable.stringsdict | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict b/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict index 0ae761b96..b91c7c90b 100644 --- a/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict @@ -221,9 +221,9 @@ NSStringFormatValueTypeKey ld one - 1 months left + 1 kuukausi jäljellä other - %ld months left + %ld kuukautta jäljellä date.day.left @@ -237,9 +237,9 @@ NSStringFormatValueTypeKey ld one - 1 day left + 1 päivä jäljellä other - %ld days left + %ld päivää jäljellä date.hour.left @@ -253,9 +253,9 @@ NSStringFormatValueTypeKey ld one - 1 hour left + 1 tunti jäljellä other - %ld hours left + %ld tuntia jäljellä date.minute.left @@ -269,9 +269,9 @@ NSStringFormatValueTypeKey ld one - 1 minute left + 1 minuutti jäljellä other - %ld minutes left + %ld minuuttia jäljellä date.second.left @@ -285,9 +285,9 @@ NSStringFormatValueTypeKey ld one - 1 second left + 1 sekuntti other - %ld seconds left + %ld sekunttia jäljellä date.year.ago.abbr @@ -301,9 +301,9 @@ NSStringFormatValueTypeKey ld one - 1y ago + 1v sitten other - %ldy ago + %ldv sitten date.month.ago.abbr @@ -317,9 +317,9 @@ NSStringFormatValueTypeKey ld one - 1M ago + 1kk sitten other - %ldM ago + %ldkk sitten date.day.ago.abbr @@ -333,9 +333,9 @@ NSStringFormatValueTypeKey ld one - 1d ago + 1pv sitten other - %ldd ago + %ldpv sitten date.hour.ago.abbr @@ -349,9 +349,9 @@ NSStringFormatValueTypeKey ld one - 1h ago + 1t sitten other - %ldh ago + %ldt sitten date.minute.ago.abbr @@ -365,9 +365,9 @@ NSStringFormatValueTypeKey ld one - 1m ago + 1min sitten other - %ldm ago + %ldmin sitten date.second.ago.abbr @@ -381,9 +381,9 @@ NSStringFormatValueTypeKey ld one - 1s ago + 1s sitten other - %lds ago + %lds sitten From 250f68acfece3707ead5ac6ab9fc644cba26d140 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 00:37:54 +0100 Subject: [PATCH 019/374] New translations app.json (Swedish, Finland) --- Localization/StringsConvertor/input/sv_FI/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index ebb563664..7756e9c34 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -458,8 +458,8 @@ }, "notification": { "title": { - "Everything": "Everything", - "Mentions": "Mentions" + "Everything": "Kaikki", + "Mentions": "Maininnat" }, "user_followed_you": "%s seurasi sinua", "user_favorited your post": "%s favorited your post", From f207a4b3cca9114edc2a3811966ea1ee457f8f57 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 01:33:28 +0100 Subject: [PATCH 020/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 7756e9c34..a49f966b8 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -87,7 +87,7 @@ "skip": "Ohita", "reply": "Vastaa", "report_user": "Ilmianna %s", - "block_domain": "Block %s", + "block_domain": "Estä %s", "unblock_domain": "Unblock %s", "settings": "Asetukset", "delete": "Poista" @@ -156,7 +156,7 @@ "request": "Request", "pending": "Pending", "block": "Block", - "block_user": "Block %s", + "block_user": "Estä %s", "block_domain": "Block %s", "unblock": "Unblock", "unblock_user": "Unblock %s", @@ -166,7 +166,7 @@ "unmute": "Unmute", "unmute_user": "Unmute %s", "muted": "Mykistetty", - "edit_info": "Edit Info" + "edit_info": "Muokkaa profiilia" }, "timeline": { "filtered": "Filtered", @@ -388,7 +388,7 @@ "profile": { "dashboard": { "posts": "julkaisut", - "following": "seuraa", + "following": "seurataan", "followers": "seuraajat" }, "fields": { @@ -400,7 +400,7 @@ }, "segmented_control": { "posts": "Julkaisut", - "replies": "Replies", + "replies": "Vastaukset", "media": "Media" }, "relationship_action_alert": { @@ -480,31 +480,31 @@ "title": "Asetukset", "section": { "appearance": { - "title": "Appearance", - "automatic": "Automatic", - "light": "Always Light", - "dark": "Always Dark" + "title": "Ulkoasu", + "automatic": "Seuraa järjestelmää", + "light": "Vaalea", + "dark": "Tumma" }, "notifications": { - "title": "Notifications", + "title": "Ilmoitukset", "favorites": "Favorites my post", - "follows": "Follows me", + "follows": "Seuraa minua", "boosts": "Reblogs my post", - "mentions": "Mentions me", + "mentions": "Mainitsee minut", "trigger": { - "anyone": "anyone", - "follower": "a follower", - "follow": "anyone I follow", - "noone": "no one", - "title": "Notify me when" + "anyone": "kuka tahansa", + "follower": "seuraaja", + "follow": "kuka tahansa, jota seuraan", + "noone": "ei kukaan", + "title": "Ilmoita minulle, kun" } }, "preference": { "title": "Preferences", - "true_black_dark_mode": "True black dark mode", - "disable_avatar_animation": "Disable animated avatars", - "disable_emoji_animation": "Disable animated emojis", - "using_default_browser": "Use default browser to open links" + "true_black_dark_mode": "Todellinen mustan tumma tila", + "disable_avatar_animation": "Poista käytöstä animoidut avatarit", + "disable_emoji_animation": "Poista käytöstä animoidut emojit", + "using_default_browser": "Käytä oletusselainta linkkien avaamiseen" }, "boring_zone": { "title": "The Boring Zone", From 9ccf9ef5f917c85e2f06fcacc11a2902a758a345 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 02:29:37 +0100 Subject: [PATCH 021/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index a49f966b8..d790a196c 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -45,7 +45,7 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", + "title": "Haluatko varmasti poistaa tämän julkaisun?", "delete": "Poista" }, "clean_cache": { @@ -128,7 +128,7 @@ "show_post": "Näytä julkaisu", "show_user_profile": "Show user profile", "content_warning": "Sisältövaroitus", - "media_content_warning": "Tap anywhere to reveal", + "media_content_warning": "Napauta mistä tahansa paljastaaksesi", "poll": { "vote": "Vote", "closed": "Suljettu" @@ -145,7 +145,7 @@ "url": "URL", "mention": "Mention", "link": "Linkki", - "hashtag": "Hashtag", + "hashtag": "Hashtagi", "email": "Sähköposti", "emoji": "Emoji" } @@ -155,10 +155,10 @@ "following": "Seurataan", "request": "Request", "pending": "Pending", - "block": "Block", + "block": "Estä", "block_user": "Estä %s", - "block_domain": "Block %s", - "unblock": "Unblock", + "block_domain": "Estä %s", + "unblock": "Poista esto", "unblock_user": "Unblock %s", "blocked": "Blocked", "mute": "Mykistä", @@ -323,7 +323,7 @@ }, "suggestion_account": { "title": "Löydä tilejä seurattavaksi", - "follow_explain": "When you follow someone, you’ll see their posts in your home feed." + "follow_explain": "Kun seuraat jotakuta, näet hänen julkaisunsa kotisyötteessäsi." }, "compose": { "title": { @@ -333,11 +333,11 @@ "media_selection": { "camera": "Ota kuva", "photo_library": "Kuvakirjasto", - "browse": "Bläddra" + "browse": "Selaa" }, - "content_input_placeholder": "Type or paste what’s on your mind", + "content_input_placeholder": "Kirjoita tai liitä, siitä mitä ajattelet", "compose_action": "Julkaise", - "replying_to_user": "replying to %s", + "replying_to_user": "vastaamassa tilille %s", "attachment": { "photo": "kuva", "video": "video", @@ -346,23 +346,23 @@ "description_video": "Describe the video for the visually-impaired..." }, "poll": { - "duration_time": "Varaktighet: %s", + "duration_time": "Kesto: %s", "thirty_minutes": "30 minuuttia", "one_hour": "1 tunti", "six_hours": "6 tuntia", "one_day": "1 päivä", "three_days": "3 päivää", "seven_days": "7 päivää", - "option_number": "Option %ld" + "option_number": "Vaihtoehto %ld" }, "content_warning": { "placeholder": "Write an accurate warning here..." }, "visibility": { - "public": "Public", + "public": "Julkinen", "unlisted": "Unlisted", - "private": "Followers only", - "direct": "Only people I mention" + "private": "Vain seuraajat", + "direct": "Vain mainitsemani tilit" }, "auto_complete": { "space_to_add": "Space to add" @@ -392,7 +392,7 @@ "followers": "seuraajat" }, "fields": { - "add_row": "Add Row", + "add_row": "Lisää rivi", "placeholder": { "label": "Label", "content": "Sisältö" @@ -423,15 +423,15 @@ "search": { "title": "Haku", "search_bar": { - "placeholder": "Search hashtags and users", + "placeholder": "Haku", "cancel": "Kumoa" }, "recommend": { "button_text": "Katso kaikki", "hash_tag": { "title": "Trendaavat Mastodonissa", - "description": "Hashtags that are getting quite a bit of attention", - "people_talking": "%s people are talking" + "description": "Hashtagit, jotka saavat melkoisesti huomiota", + "people_talking": "%s ihmistä puhuu" }, "accounts": { "title": "Saatat pitää näistä tileistä", @@ -443,14 +443,14 @@ "segment": { "all": "Kaikki", "people": "Tilit", - "hashtags": "Hashtags", + "hashtags": "Hashtagit", "posts": "Julkaisut" }, "empty_state": { "no_results": "Inga resultat" }, - "recent_search": "Recent searches", - "clear": "Clear" + "recent_search": "Viimeaikaiset", + "clear": "Tyhjennä" } }, "favorite": { @@ -507,13 +507,13 @@ "using_default_browser": "Käytä oletusselainta linkkien avaamiseen" }, "boring_zone": { - "title": "The Boring Zone", - "account_settings": "Account Settings", - "terms": "Terms of Service", + "title": "Tylsä alue", + "account_settings": "Tiliasetukset", + "terms": "Lisäasetukset", "privacy": "Integritetspolicy" }, "spicy_zone": { - "title": "The Spicy Zone", + "title": "Varovainen alue", "clear": "Clear Media Cache", "signout": "Kirjaudu ulos" } From 76ad32e4c8801f366fe27ea9473eb2cf9c6d3a4e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 02:29:38 +0100 Subject: [PATCH 022/374] New translations Intents.strings (Swedish, Finland) --- .../StringsConvertor/Intents/input/sv_FI/Intents.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings b/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings index d4531ed64..e3157450b 100644 --- a/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings @@ -34,7 +34,7 @@ "dUyuGg" = "Post on Mastodon"; -"dYQ5NN" = "Public"; +"dYQ5NN" = "Julkinen"; "ehFLjY" = "Followers Only"; From 4a47ab6c7d0b9cfe4e7c7dbd4efc5c1af845f659 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 03:40:27 +0100 Subject: [PATCH 023/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index d790a196c..03bc0728a 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -76,7 +76,7 @@ "copy_photo": "Kopioi kuva", "sign_in": "Kirjaudu sisään", "sign_up": "Rekisteröidy", - "see_more": "Katso lisää", + "see_more": "Näytä lisää", "preview": "Esikatselu", "share": "Jaa", "share_user": "Jaa %s", @@ -126,7 +126,7 @@ "user_reblogged": "%s reblogged", "user_replied_to": "Replied to %s", "show_post": "Näytä julkaisu", - "show_user_profile": "Show user profile", + "show_user_profile": "Näytä tili", "content_warning": "Sisältövaroitus", "media_content_warning": "Napauta mistä tahansa paljastaaksesi", "poll": { @@ -153,29 +153,29 @@ "friendship": { "follow": "Seuraa", "following": "Seurataan", - "request": "Request", - "pending": "Pending", + "request": "Pyydä", + "pending": "Pyydetty", "block": "Estä", "block_user": "Estä %s", "block_domain": "Estä %s", "unblock": "Poista esto", "unblock_user": "Unblock %s", - "blocked": "Blocked", + "blocked": "Estetty", "mute": "Mykistä", "mute_user": "Mykistä %s", - "unmute": "Unmute", - "unmute_user": "Unmute %s", + "unmute": "Poista mykistys", + "unmute_user": "Poista mykistys tililtä %s", "muted": "Mykistetty", "edit_info": "Muokkaa profiilia" }, "timeline": { "filtered": "Filtered", "timestamp": { - "now": "Now" + "now": "Nyt" }, "loader": { - "load_missing_posts": "Load missing posts", - "loading_missing_posts": "Loading missing posts...", + "load_missing_posts": "Lataa puuttuvat julkaisut", + "loading_missing_posts": "Ladataan puuttuvia julkaisuja...", "show_more_replies": "Visa fler svar" }, "header": { @@ -195,7 +195,7 @@ "slogan": "Social networking\nback in your hands." }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Valitse palvelin,\nmikä tahansa palvelin.", "button": { "category": { "all": "Kaikki", @@ -203,31 +203,31 @@ "academia": "academia", "activism": "aktivismi", "food": "ruoka", - "furry": "furry", + "furry": "turri", "games": "pelit", - "general": "general", + "general": "yleinen", "journalism": "journalismi", "lgbt": "hlbt", - "regional": "regional", + "regional": "alueellinen", "art": "taide", "music": "musiikki", "tech": "tekniikka" }, - "see_less": "See Less", - "see_more": "See More" + "see_less": "Näytä vähemmän", + "see_more": "Näytä lisää" }, "label": { "language": "KIELI", - "users": "ANVÄNDARE", + "users": "TILIÄ", "category": "KATEGORIA" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Etsi palvelin tai liity omaan..." }, "empty_state": { "finding_servers": "Finding available servers...", "bad_network": "Something went wrong while loading the data. Check your internet connection.", - "no_results": "Inga resultat" + "no_results": "Ei hakutuloksia" } }, "register": { @@ -269,7 +269,7 @@ "taken": "%s is already in use", "reserved": "%s is a reserved keyword", "accepted": "%s must be accepted", - "blank": "%s is required", + "blank": "%s vaaditaan", "invalid": "%s is invalid", "too_long": "%s on liian pitkä", "too_short": "%s on liian lyhyt", @@ -315,7 +315,7 @@ "home_timeline": { "title": "Koti", "navigation_bar_state": { - "offline": "Offline", + "offline": "Yhteydetön", "new_posts": "Uusia julkaisuja", "published": "Julkaistu!", "Publishing": "Julkaistaan julkaisua..." @@ -328,7 +328,7 @@ "compose": { "title": { "new_post": "Uusi julkaisu", - "new_reply": "New Reply" + "new_reply": "Uusi vastaus" }, "media_selection": { "camera": "Ota kuva", @@ -377,8 +377,8 @@ "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { - "discard_post": "Discard Post", - "publish_post": "Publish Post", + "discard_post": "Hylkää julkaisu", + "publish_post": "Julkaise julkaisu", "toggle_poll": "Toggle Poll", "toggle_content_warning": "Toggle Content Warning", "append_attachment_entry": "Add Attachment - %s", @@ -405,12 +405,12 @@ }, "relationship_action_alert": { "confirm_unmute_user": { - "title": "Unmute Account", - "message": "Confirm to unmute %s" + "title": "Poista tilin mykistys", + "message": "Vahvista, että haluat poistaa mykistyksen tililtä %s" }, "confirm_unblock_usre": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Poista tilin esto", + "message": "Vahvista, että haluat poistaa eston tililtä %s" } } }, @@ -468,8 +468,8 @@ "user_requested_to_follow_you": "%s har begärt att följa dig", "user_your_poll_has_ended": "%s Omröstningen har avslutats", "keyobard": { - "show_everything": "Show Everything", - "show_mentions": "Show Mentions" + "show_everything": "Näytä kaikki", + "show_mentions": "Näytä maininnat" } }, "thread": { @@ -500,7 +500,7 @@ } }, "preference": { - "title": "Preferences", + "title": "Lisäasetukset", "true_black_dark_mode": "Todellinen mustan tumma tila", "disable_avatar_animation": "Poista käytöstä animoidut avatarit", "disable_emoji_animation": "Poista käytöstä animoidut emojit", @@ -509,7 +509,7 @@ "boring_zone": { "title": "Tylsä alue", "account_settings": "Tiliasetukset", - "terms": "Lisäasetukset", + "terms": "Terms of Service", "privacy": "Integritetspolicy" }, "spicy_zone": { @@ -527,9 +527,9 @@ }, "report": { "title": "Ilmianna %s", - "step1": "Steg 1 av 2", - "step2": "Steg 2 av 2", - "content1": "Are there any other posts you’d like to add to the report?", + "step1": "Vaihe 1/2", + "step2": "Vaihe 2/2", + "content1": "Onko julkaisuja, joita haluaisit lisätä ilmiantoon?", "content2": "Is there anything the moderators should know about this report?", "send": "Send Report", "skip_to_send": "Send without comment", @@ -548,8 +548,8 @@ "add_account": "Lisää tili" }, "wizard": { - "new_in_mastodon": "New in Mastodon", - "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.", + "new_in_mastodon": "Uutta Mastodonissa", + "multiple_account_switch_intro_description": "Vaihda useiden tilien välillä pitämällä profiilipainiketta painettuna.", "accessibility_hint": "Double tap to dismiss this wizard" } } From 8972400a5c93a0340ae44447891f02ae7f799097 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 05:37:18 +0100 Subject: [PATCH 024/374] New translations Intents.strings (Swedish, Finland) --- .../Intents/input/sv_FI/Intents.strings | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings b/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings index e3157450b..6a7e98246 100644 --- a/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings @@ -1,28 +1,28 @@ -"16wxgf" = "Post on Mastodon"; +"16wxgf" = "Julkaise Mastodonissa"; -"751xkl" = "Text Content"; +"751xkl" = "Tekstisisältö"; -"CsR7G2" = "Post on Mastodon"; +"CsR7G2" = "Julkaise Mastodonissa"; -"HZSGTr" = "What content to post?"; +"HZSGTr" = "Mitä sisältöä julkaista?"; -"HdGikU" = "Posting failed"; +"HdGikU" = "Julkaiseminen epäonnistui"; -"KDNTJ4" = "Failure Reason"; +"KDNTJ4" = "Epäonnistumisen syy"; -"RHxKOw" = "Send Post with text content"; +"RHxKOw" = "Lähetä julkaisu teksisisällöllä"; -"RxSqsb" = "Post"; +"RxSqsb" = "Julkaisu"; -"WCIR3D" = "Posta ${content} på Mastodon"; +"WCIR3D" = "Julkaise ${content} Mastodonissa"; -"ZKJSNu" = "Post"; +"ZKJSNu" = "Julkaisu"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibility"; +"ZbSjzC" = "Näkyvyys"; -"Zo4jgJ" = "Post Visibility"; +"Zo4jgJ" = "Julkaisun näkyvyys"; "apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; @@ -32,11 +32,11 @@ "ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Post on Mastodon"; +"dUyuGg" = "Julkaise Mastodonissa"; "dYQ5NN" = "Julkinen"; -"ehFLjY" = "Followers Only"; +"ehFLjY" = "Vain seuraajat"; "gfePDu" = "Posting failed. ${failureReason}"; From 7b5861fb019b25d588fa7708061b9ee557a36b94 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 06:35:03 +0100 Subject: [PATCH 025/374] New translations app.json (Swedish, Finland) --- Localization/StringsConvertor/input/sv_FI/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 03bc0728a..7a1fab902 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -69,7 +69,7 @@ "continue": "Jatka", "compose": "Compose", "cancel": "Kumoa", - "discard": "Discard", + "discard": "Hylkää", "try_again": "Yritä uudelleen", "take_photo": "Ota kuva", "save_photo": "Tallenna kuva", @@ -88,7 +88,7 @@ "reply": "Vastaa", "report_user": "Ilmianna %s", "block_domain": "Estä %s", - "unblock_domain": "Unblock %s", + "unblock_domain": "Poista esto %s", "settings": "Asetukset", "delete": "Poista" }, From 0e824c992e4daea2104aa0344ba3a7105ea46cdb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 06:35:04 +0100 Subject: [PATCH 026/374] New translations ios-infoPlist.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/ios-infoPlist.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/ios-infoPlist.json b/Localization/StringsConvertor/input/sv_FI/ios-infoPlist.json index a89e92cbc..eb389f3b3 100644 --- a/Localization/StringsConvertor/input/sv_FI/ios-infoPlist.json +++ b/Localization/StringsConvertor/input/sv_FI/ios-infoPlist.json @@ -1,6 +1,6 @@ { - "NSCameraUsageDescription": "Used to take photo for post status", - "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", - "NewPostShortcutItemTitle": "New Post", + "NSCameraUsageDescription": "Käytetään kuvan ottamiseen julkaisua varten", + "NSPhotoLibraryAddUsageDescription": "Käytetään kuvan tallentamiseen kuvakirjastoon", + "NewPostShortcutItemTitle": "Uusi julkaisu", "SearchShortcutItemTitle": "Haku" } From 55c8e16d31ecdcaaa4f96f62e221aa0b6df1979c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 06:35:05 +0100 Subject: [PATCH 027/374] New translations Localizable.stringsdict (Swedish, Finland) --- .../input/sv_FI/Localizable.stringsdict | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict b/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict index b91c7c90b..eec977a68 100644 --- a/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/sv_FI/Localizable.stringsdict @@ -13,15 +13,15 @@ NSStringFormatValueTypeKey ld one - 1 unread notification + 1 lukematon ilmoitus other - %ld unread notification + %ld lukematonta ilmoitusta a11y.plural.count.input_limit_exceeds NSStringLocalizedFormatKey - Input limit exceeds %#@character_count@ + Syöterajoitus ylittyy %#@character_count@ character_count NSStringFormatSpecTypeKey @@ -29,15 +29,15 @@ NSStringFormatValueTypeKey ld one - 1 character + 1 merkki other - %ld characters + %ld merkkiä a11y.plural.count.input_limit_remains NSStringLocalizedFormatKey - Input limit remains %#@character_count@ + Syöterajoitus ylittyy %#@character_count@ päästä character_count NSStringFormatSpecTypeKey @@ -45,9 +45,9 @@ NSStringFormatValueTypeKey ld one - 1 character + 1 merkki other - %ld characters + %ld merkkiä plural.count.metric_formatted.post @@ -61,9 +61,9 @@ NSStringFormatValueTypeKey ld one - post + julkaisu other - posts + julkaisut plural.count.post @@ -109,9 +109,9 @@ NSStringFormatValueTypeKey ld one - 1 reblog + 1 edelleen jako other - %ld reblogs + %ld edelleen jakoa plural.count.vote @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 vote + 1 ääni other - %ld votes + %ld ääntä plural.count.voter @@ -141,9 +141,9 @@ NSStringFormatValueTypeKey ld one - 1 voter + 1 vastaaja other - %ld voters + %ld vastaajaa plural.people_talking @@ -157,9 +157,9 @@ NSStringFormatValueTypeKey ld one - 1 people talking + 1 ihminen puhuu other - %ld people talking + %ld ihmistä puhuu plural.count.following @@ -173,9 +173,9 @@ NSStringFormatValueTypeKey ld one - 1 following + 1 seurataan other - %ld following + %ld seurataan plural.count.follower From c7c8861ebe125ffe0634dcc58093481612bbe21e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 06:35:06 +0100 Subject: [PATCH 028/374] New translations Intents.strings (Swedish, Finland) --- .../Intents/input/sv_FI/Intents.strings | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings b/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings index 6a7e98246..1be213d45 100644 --- a/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/sv_FI/Intents.strings @@ -24,13 +24,13 @@ "Zo4jgJ" = "Julkaisun näkyvyys"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "On ${count} vaihtoehtoa, jotka vastaavat ‘Julkinen’."; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "On ${count} vaihtoehtoa, jotka vastaavat ‘Vain seuraajat’."; -"ayoYEb-dYQ5NN" = "${content}, Public"; +"ayoYEb-dYQ5NN" = "${content}, julkinen"; -"ayoYEb-ehFLjY" = "${content}, Followers Only"; +"ayoYEb-ehFLjY" = "${content}, vain seuraajat"; "dUyuGg" = "Julkaise Mastodonissa"; @@ -38,14 +38,14 @@ "ehFLjY" = "Vain seuraajat"; -"gfePDu" = "Posting failed. ${failureReason}"; +"gfePDu" = "Julkaiseminen epäonnistui. ${failureReason}"; -"k7dbKQ" = "Post was sent successfully."; +"k7dbKQ" = "Julkaisu lähetettiin onnistuneesti."; -"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; +"oGiqmY-dYQ5NN" = "Vahvitukseksi, halusit ‘Julkinen’?"; -"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; +"oGiqmY-ehFLjY" = "Vahvitstukseksi, halusit ‘Vain seuraajat’?"; "rM6dvp" = "URL"; -"ryJLwG" = "Post was sent successfully. "; +"ryJLwG" = "Julkaisu lähetettiin onnistuneesti. "; From 2a694964c2032bea78e2028b265b225bc9796a99 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 06:35:07 +0100 Subject: [PATCH 029/374] New translations Intents.stringsdict (Swedish, Finland) --- .../Intents/input/sv_FI/Intents.stringsdict | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/sv_FI/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/sv_FI/Intents.stringsdict index 18422c772..7825b778e 100644 --- a/Localization/StringsConvertor/Intents/input/sv_FI/Intents.stringsdict +++ b/Localization/StringsConvertor/Intents/input/sv_FI/Intents.stringsdict @@ -5,7 +5,7 @@ There are ${count} options matching ‘${content}’. - 2 NSStringLocalizedFormatKey - There are %#@count_option@ matching ‘${content}’. + On %#@count_option@, joka/jotka vastaavat sisältöön ‘${content}’. count_option NSStringFormatSpecTypeKey @@ -13,15 +13,15 @@ NSStringFormatValueTypeKey %ld one - 1 option + 1 vaihtoehto other - %ld options + %ld vaihtoehtoa There are ${count} options matching ‘${visibility}’. NSStringLocalizedFormatKey - There are %#@count_option@ matching ‘${visibility}’. + On vaihtoehtoa %#@count_option@, joka/jotka vastaavat näkyvyyteen ‘${visibility}’. count_option NSStringFormatSpecTypeKey @@ -29,9 +29,9 @@ NSStringFormatValueTypeKey %ld one - 1 option + 1 vaihtoehto other - %ld options + %ld vaihtoehtoa From 3c894320d719f8468bb22fd63a6de9f39745f26f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 07:35:56 +0100 Subject: [PATCH 030/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 120 +++++++++--------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 7a1fab902..25a8359b8 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -16,32 +16,32 @@ "poll_ended": "Kysely on päättynyt" }, "discard_post_content": { - "title": "Discard Draft", + "title": "Hylkää luonnos", "message": "Confirm to discard composed post content." }, "publish_post_failure": { - "title": "Publish Failure", - "message": "Failed to publish the post.\nPlease check your internet connection.", + "title": "Julkaiseminen epäonnistui", + "message": "Julkaisun julkaiseminen epäonnistui.\nTarkista internet-yhteytesi.", "attachments_message": { "video_attach_with_photo": "Cannot attach a video to a post that already contains images.", - "more_than_one_video": "Cannot attach more than one video." + "more_than_one_video": "Ei voi liittä yhtä videota enempää." } }, "edit_profile_failure": { - "title": "Edit Profile Error", - "message": "Cannot edit profile. Please try again." + "title": "Virhe profiilin muokkauksessa", + "message": "Profiilia ei voida muoka. Yritä uudelleen." }, "sign_out": { "title": "Kirjaudu ulos", - "message": "Är du säker på att du vill logga ut?", + "message": "Haluatko varmasti kirjautua ulos?", "confirm": "Kirjaudu ulos" }, "block_domain": { "title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.", - "block_entire_domain": "Block Domain" + "block_entire_domain": "Estä verkkotunnus" }, "save_photo_failure": { - "title": "Save Photo Failure", + "title": "Kuvan tallentaminen epäonnistui", "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { @@ -67,7 +67,7 @@ "done": "Valmis", "confirm": "Vahvista", "continue": "Jatka", - "compose": "Compose", + "compose": "Koosta", "cancel": "Kumoa", "discard": "Hylkää", "try_again": "Yritä uudelleen", @@ -95,13 +95,13 @@ "tabs": { "home": "Koti", "search": "Haku", - "notification": "Notification", + "notification": "Ilmoitus", "profile": "Profiili" }, "keyboard": { "common": { - "switch_to_tab": "Switch to %s", - "compose_new_post": "Compose New Post", + "switch_to_tab": "Vaihda %s", + "compose_new_post": "Koosta uusi julkaisu", "show_favorites": "Näytä suosikit", "open_settings": "Avaa asetukset" }, @@ -110,7 +110,7 @@ "next_status": "Seuraava julkaisu", "open_status": "Avaa julkaisu", "open_author_profile": "Open Author's Profile", - "open_reblogger_profile": "Open Reblogger's Profile", + "open_reblogger_profile": "Avaa edelleen jakajan profiili", "reply_status": "Vastaa julkaisuun", "toggle_reblog": "Toggle Reblog on Post", "toggle_favorite": "Toggle Favorite on Post", @@ -119,12 +119,12 @@ }, "segmented_control": { "previous_section": "Previous Section", - "next_section": "Next Section" + "next_section": "Seuraava lohko" } }, "status": { - "user_reblogged": "%s reblogged", - "user_replied_to": "Replied to %s", + "user_reblogged": "%s jakoi edelleen", + "user_replied_to": "Vastasi %s:lle", "show_post": "Näytä julkaisu", "show_user_profile": "Näytä tili", "content_warning": "Sisältövaroitus", @@ -135,8 +135,8 @@ }, "actions": { "reply": "Vastaa", - "reblog": "Reblog", - "unreblog": "Undo reblog", + "reblog": "Jaa edelleen", + "unreblog": "Peru edelleen jako", "favorite": "Favorite", "unfavorite": "Unfavorite", "menu": "Valikko" @@ -176,7 +176,7 @@ "loader": { "load_missing_posts": "Lataa puuttuvat julkaisut", "loading_missing_posts": "Ladataan puuttuvia julkaisuja...", - "show_more_replies": "Visa fler svar" + "show_more_replies": "Näytä lisää vastauksia" }, "header": { "no_status_found": "Julkaisua ei löytynyt", @@ -192,15 +192,15 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Sosiaalinen verkostoituminen\ntakaisin käsissäsi." }, "server_picker": { "title": "Valitse palvelin,\nmikä tahansa palvelin.", "button": { "category": { "all": "Kaikki", - "all_accessiblity_description": "Kategori: Alla", - "academia": "academia", + "all_accessiblity_description": "Kategoria: Kaikki", + "academia": "akateeminen", "activism": "aktivismi", "food": "ruoka", "furry": "turri", @@ -225,23 +225,23 @@ "placeholder": "Etsi palvelin tai liity omaan..." }, "empty_state": { - "finding_servers": "Finding available servers...", + "finding_servers": "Etsistään saatavilla olevia palvelimia...", "bad_network": "Something went wrong while loading the data. Check your internet connection.", "no_results": "Ei hakutuloksia" } }, "register": { - "title": "Tell us about you.", + "title": "Kerro meille sinusta.", "input": { "avatar": { "delete": "Poista" }, "username": { - "placeholder": "username", - "duplicate_prompt": "This username is taken." + "placeholder": "käyttäjänimi", + "duplicate_prompt": "Tämä käyttäjänimi on varattu." }, "display_name": { - "placeholder": "display name" + "placeholder": "näyttönimi" }, "email": { "placeholder": "sähköposti" @@ -251,29 +251,29 @@ "hint": "Your password needs at least eight characters" }, "invite": { - "registration_user_invite_request": "Why do you want to join?" + "registration_user_invite_request": "Miksi haluat liittyä?" } }, "error": { "item": { - "username": "Användarnamn", + "username": "Käyttäjänimi", "email": "Sähköposti", "password": "Salasana", "agreement": "Agreement", "locale": "Locale", - "reason": "Reason" + "reason": "Syy" }, "reason": { "blocked": "%s contains a disallowed email provider", "unreachable": "%s does not seem to exist", - "taken": "%s is already in use", + "taken": "%s on jo käytössä", "reserved": "%s is a reserved keyword", - "accepted": "%s must be accepted", + "accepted": "%s täytyy hyväksyä", "blank": "%s vaaditaan", - "invalid": "%s is invalid", + "invalid": "%s on virheellinen", "too_long": "%s on liian pitkä", "too_short": "%s on liian lyhyt", - "inclusion": "%s is not a supported value" + "inclusion": "%s ei ole tuettu arvo" }, "special": { "username_invalid": "Username must only contain alphanumeric characters and underscores", @@ -286,19 +286,19 @@ "server_rules": { "title": "Some ground rules.", "subtitle": "These rules are set by the admins of %s.", - "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", + "prompt": "Jatkamalla, hyväksyt palvelun %s palveluehdot ja tietosuojakäytönnön.", "terms_of_service": "käyttöehdot", "privacy_policy": "tietosuojakäytäntö", "button": { - "confirm": "I Agree" + "confirm": "Hyväksyn" } }, "confirm_email": { - "title": "One last thing.", + "title": "Viimeinen asia.", "subtitle": "Lähetimme juuri sähköpostin osoitteeseen %s, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.", "button": { "open_email_app": "Avaa sähköpostisovellus", - "dont_receive_email": "I never got an email" + "dont_receive_email": "En saanut sähköpostia" }, "dont_receive_email": { "title": "Tarkista sähköpostisi", @@ -307,9 +307,9 @@ }, "open_email_app": { "title": "Check your inbox.", - "description": "We just sent you an email. Check your junk folder if you haven’t.", + "description": "Lähetimme sinulle juuri sähköpostin. Tarkista myös roskapostikansiosi, jos et vielä ole.", "mail": "Mail", - "open_email_client": "Open Email Client" + "open_email_client": "Avaa sähköpostisovellus" } }, "home_timeline": { @@ -360,7 +360,7 @@ }, "visibility": { "public": "Julkinen", - "unlisted": "Unlisted", + "unlisted": "Listaamaton", "private": "Vain seuraajat", "direct": "Vain mainitsemani tilit" }, @@ -394,7 +394,7 @@ "fields": { "add_row": "Lisää rivi", "placeholder": { - "label": "Label", + "label": "Nimi", "content": "Sisältö" } }, @@ -415,10 +415,10 @@ } }, "follower": { - "footer": "Followers from other servers are not displayed." + "footer": "Seuraajia muilta palvelimilta ei näytetä." }, "following": { - "footer": "Follows from other servers are not displayed." + "footer": "Seurauksia muilta palvelimilta ei näytetä." }, "search": { "title": "Haku", @@ -447,7 +447,7 @@ "posts": "Julkaisut" }, "empty_state": { - "no_results": "Inga resultat" + "no_results": "Ei hakutuloksia" }, "recent_search": "Viimeaikaiset", "clear": "Tyhjennä" @@ -463,10 +463,10 @@ }, "user_followed_you": "%s seurasi sinua", "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s nämnde dig", - "user_requested_to_follow_you": "%s har begärt att följa dig", - "user_your_poll_has_ended": "%s Omröstningen har avslutats", + "user_reblogged_your_post": "%s jakoi edelleen julkaisusi", + "user_mentioned_you": "%s mainitsi sinut", + "user_requested_to_follow_you": "%s pyysi saada seurata sinua", + "user_your_poll_has_ended": "%s Kyselysi on päättynyt", "keyobard": { "show_everything": "Näytä kaikki", "show_mentions": "Näytä maininnat" @@ -474,7 +474,7 @@ }, "thread": { "back_title": "Julkaisu", - "title": "Post from %s" + "title": "Julkaisu tililtä %s" }, "settings": { "title": "Asetukset", @@ -489,7 +489,7 @@ "title": "Ilmoitukset", "favorites": "Favorites my post", "follows": "Seuraa minua", - "boosts": "Reblogs my post", + "boosts": "Omien julkaisujen edelleen jaot", "mentions": "Mainitsee minut", "trigger": { "anyone": "kuka tahansa", @@ -509,12 +509,12 @@ "boring_zone": { "title": "Tylsä alue", "account_settings": "Tiliasetukset", - "terms": "Terms of Service", - "privacy": "Integritetspolicy" + "terms": "Palveluehdot", + "privacy": "Tietosuojakäytäntö" }, "spicy_zone": { "title": "Varovainen alue", - "clear": "Clear Media Cache", + "clear": "Tyhjennä median välimuisti", "signout": "Kirjaudu ulos" } }, @@ -522,7 +522,7 @@ "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" }, "keyboard": { - "close_settings_window": "Close Settings Window" + "close_settings_window": "Sulje asetukset" } }, "report": { @@ -531,15 +531,15 @@ "step2": "Vaihe 2/2", "content1": "Onko julkaisuja, joita haluaisit lisätä ilmiantoon?", "content2": "Is there anything the moderators should know about this report?", - "send": "Send Report", + "send": "Lähetä ilmianto", "skip_to_send": "Send without comment", "text_placeholder": "Type or paste additional comments" }, "preview": { "keyboard": { "close_preview": "Sulje esikatselu", - "show_next": "Show Next", - "show_previous": "Show Previous" + "show_next": "Näytä seuraava", + "show_previous": "Näytä edellinen" } }, "account_list": { @@ -550,7 +550,7 @@ "wizard": { "new_in_mastodon": "Uutta Mastodonissa", "multiple_account_switch_intro_description": "Vaihda useiden tilien välillä pitämällä profiilipainiketta painettuna.", - "accessibility_hint": "Double tap to dismiss this wizard" + "accessibility_hint": "Hylkää tämä ohjattu toiminto kaksoisnapauttamalla" } } } \ No newline at end of file From 9be9636dab21cae780a5c3f6582b34620ab537ae Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 22 Dec 2021 08:32:43 +0100 Subject: [PATCH 031/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 25a8359b8..e4a1ca984 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -50,7 +50,7 @@ }, "clean_cache": { "title": "Puhdista välimuisti", - "message": "Successfully cleaned %s cache." + "message": "%s välimuisti tyhjennetty onnistuneesti." } }, "controls": { @@ -109,12 +109,12 @@ "previous_status": "Edellinen julkaisu", "next_status": "Seuraava julkaisu", "open_status": "Avaa julkaisu", - "open_author_profile": "Open Author's Profile", + "open_author_profile": "Avaa tekijän profiili", "open_reblogger_profile": "Avaa edelleen jakajan profiili", "reply_status": "Vastaa julkaisuun", "toggle_reblog": "Toggle Reblog on Post", "toggle_favorite": "Toggle Favorite on Post", - "toggle_content_warning": "Toggle Content Warning", + "toggle_content_warning": "Vaihda sisältövaroitus", "preview_image": "Preview Image" }, "segmented_control": { @@ -180,11 +180,11 @@ }, "header": { "no_status_found": "Julkaisua ei löytynyt", - "blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", - "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.", - "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.", - "user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.", - "suspended_warning": "This user has been suspended.", + "blocking_warning": "Et voi tarkastella tämän tilin profiilia\nennen kuin poistat sen esto.\nProfiilisi näyttää tältä hänelle.", + "user_blocking_warning": "Et voi tarkastella tilin %s profiilia\nennen kuin poistat sen esto.\nProfiilisi näyttää tältä hänelle.", + "blocked_warning": "Et voi tarkastella tämän tilin profiilia\nennen kuin hän poistaa eston.", + "user_blocked_warning": "Et voi tarkastella tilin %s profiilia\nennen kuin hän poistaa eston.", + "suspended_warning": "Tämä tili on lakkautettu.", "user_suspended_warning": "%s’s account has been suspended." } } @@ -248,7 +248,7 @@ }, "password": { "placeholder": "salasana", - "hint": "Your password needs at least eight characters" + "hint": "Salasanassasi on oltava vähintään kahdeksan merkkiä" }, "invite": { "registration_user_invite_request": "Miksi haluat liittyä?" @@ -265,7 +265,7 @@ }, "reason": { "blocked": "%s contains a disallowed email provider", - "unreachable": "%s does not seem to exist", + "unreachable": "%s ei näytä olevan olemassa", "taken": "%s on jo käytössä", "reserved": "%s is a reserved keyword", "accepted": "%s täytyy hyväksyä", @@ -276,16 +276,16 @@ "inclusion": "%s ei ole tuettu arvo" }, "special": { - "username_invalid": "Username must only contain alphanumeric characters and underscores", - "username_too_long": "Username is too long (can’t be longer than 30 characters)", + "username_invalid": "Käyttäjänimi voi sisältää ainoastaan aakkosnumerrisia merkkejä ja alaviivoja", + "username_too_long": "Käyttäjänimi on liian pitkä (ei voi olla pidempi kuin 30 merkkiä)", "email_invalid": "Tämä ei ole kelvollinen sähköpostiosoite", "password_too_short": "Salasana on liian lyhyt (täytyy olla vähintään 8 merkkiä)" } } }, "server_rules": { - "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "title": "Joitakin perussääntöjä.", + "subtitle": "Nämä säännöt ovat %s -palvelun asettamia.", "prompt": "Jatkamalla, hyväksyt palvelun %s palveluehdot ja tietosuojakäytönnön.", "terms_of_service": "käyttöehdot", "privacy_policy": "tietosuojakäytäntö", @@ -302,13 +302,13 @@ }, "dont_receive_email": { "title": "Tarkista sähköpostisi", - "description": "Check if your email address is correct as well as your junk folder if you haven’t.", + "description": "Tarkista, että sähköpostiosoitteesi on oikea, sekä roskapostikansiosi, jos et vielä ole.", "resend_email": "Lähetä sähköposti uudelleen" }, "open_email_app": { - "title": "Check your inbox.", + "title": "Tarkasta postilaatikkosi.", "description": "Lähetimme sinulle juuri sähköpostin. Tarkista myös roskapostikansiosi, jos et vielä ole.", - "mail": "Mail", + "mail": "Sähköposti", "open_email_client": "Avaa sähköpostisovellus" } }, @@ -342,8 +342,8 @@ "photo": "kuva", "video": "video", "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", - "description_photo": "Describe the photo for the visually-impaired...", - "description_video": "Describe the video for the visually-impaired..." + "description_photo": "Kuvaile kuva näkövammaisille...", + "description_video": "Kuvaile video näkövammaisille..." }, "poll": { "duration_time": "Kesto: %s", @@ -356,7 +356,7 @@ "option_number": "Vaihtoehto %ld" }, "content_warning": { - "placeholder": "Write an accurate warning here..." + "placeholder": "Kirjoita tarkka varoitus tähän..." }, "visibility": { "public": "Julkinen", @@ -371,18 +371,18 @@ "append_attachment": "Add Attachment", "append_poll": "Lisää kysely", "remove_poll": "Poista kysely", - "custom_emoji_picker": "Custom Emoji Picker", - "enable_content_warning": "Enable Content Warning", - "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu" + "custom_emoji_picker": "Mukautettu emojivalitsin", + "enable_content_warning": "Ota sisältövaroitus käyttöön", + "disable_content_warning": "Poista sisältövaroitus käytöstä", + "post_visibility_menu": "Julkaisun näkyvyysvalikko" }, "keyboard": { "discard_post": "Hylkää julkaisu", "publish_post": "Julkaise julkaisu", - "toggle_poll": "Toggle Poll", - "toggle_content_warning": "Toggle Content Warning", - "append_attachment_entry": "Add Attachment - %s", - "select_visibility_entry": "Select Visibility - %s" + "toggle_poll": "Vaihda kysely", + "toggle_content_warning": "Vaihda sisältövaroitus", + "append_attachment_entry": "Lisää liite - %s", + "select_visibility_entry": "Valitse näkyvyys - %s" } }, "profile": { @@ -519,7 +519,7 @@ } }, "footer": { - "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + "mastodon_description": "Mastodon on avoimen lähdekoodin ohjelmisto. Voit raportoida ongelmasta GitHubissa osoitteessa %s (%s)" }, "keyboard": { "close_settings_window": "Sulje asetukset" @@ -530,10 +530,10 @@ "step1": "Vaihe 1/2", "step2": "Vaihe 2/2", "content1": "Onko julkaisuja, joita haluaisit lisätä ilmiantoon?", - "content2": "Is there anything the moderators should know about this report?", + "content2": "Onko valvojien syytä tietää tästä ilmiannosta?", "send": "Lähetä ilmianto", - "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "skip_to_send": "Lähetä ilman kommentteja", + "text_placeholder": "Kirjoita tai liitä lisäkommentteja" }, "preview": { "keyboard": { @@ -543,8 +543,8 @@ } }, "account_list": { - "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", - "dismiss_account_switcher": "Dismiss Account Switcher", + "tab_bar_hint": "Nykyinen valittu profiili: %s. Kaksoisnapauta ja pidä sitten painettuna näytääksesi tilin vaihtajan", + "dismiss_account_switcher": "Sulje tilin vaihtaja", "add_account": "Lisää tili" }, "wizard": { From fd245519af36fa0bd5831160cdbcef775212bf27 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 25 Dec 2021 02:18:32 +0100 Subject: [PATCH 032/374] New translations app.json (Swedish, Finland) --- Localization/StringsConvertor/input/sv_FI/app.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index e4a1ca984..b55fac525 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -169,7 +169,7 @@ "edit_info": "Muokkaa profiilia" }, "timeline": { - "filtered": "Filtered", + "filtered": "Suodatettu", "timestamp": { "now": "Nyt" }, @@ -185,7 +185,7 @@ "blocked_warning": "Et voi tarkastella tämän tilin profiilia\nennen kuin hän poistaa eston.", "user_blocked_warning": "Et voi tarkastella tilin %s profiilia\nennen kuin hän poistaa eston.", "suspended_warning": "Tämä tili on lakkautettu.", - "user_suspended_warning": "%s’s account has been suspended." + "user_suspended_warning": "Tili %s on lakkautettu." } } } @@ -226,7 +226,7 @@ }, "empty_state": { "finding_servers": "Etsistään saatavilla olevia palvelimia...", - "bad_network": "Something went wrong while loading the data. Check your internet connection.", + "bad_network": "Jokin meni pieleen dataa ladatessa. Tarkista internet-yhteytesi.", "no_results": "Ei hakutuloksia" } }, @@ -259,12 +259,12 @@ "username": "Käyttäjänimi", "email": "Sähköposti", "password": "Salasana", - "agreement": "Agreement", + "agreement": "Hyväksy", "locale": "Locale", "reason": "Syy" }, "reason": { - "blocked": "%s contains a disallowed email provider", + "blocked": "%s sisältää estetyn sähköpostipalveluntarjoajan", "unreachable": "%s ei näytä olevan olemassa", "taken": "%s on jo käytössä", "reserved": "%s is a reserved keyword", @@ -368,7 +368,7 @@ "space_to_add": "Space to add" }, "accessibility": { - "append_attachment": "Add Attachment", + "append_attachment": "Lisää liite", "append_poll": "Lisää kysely", "remove_poll": "Poista kysely", "custom_emoji_picker": "Mukautettu emojivalitsin", From 7711564cddf0c2d1fea4a7c9fc3d37f639dcc83f Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 28 Dec 2021 16:15:44 +0800 Subject: [PATCH 033/374] chore: remove Texture pod --- Mastodon.xcodeproj/project.pbxproj | 690 ------------------ .../xcschemes/xcschememanagement.plist | 14 +- Mastodon/Coordinator/SceneCoordinator.swift | 10 - .../Diffiable/DataSource/ASTableNode.swift | 85 --- .../TableNodeDiffableDataSource.swift | 115 --- .../Section/Status/StatusSection.swift | 31 - .../StatusProvider+StatusNodeDelegate.swift | 17 - .../StatusProvider/StatusProvider.swift | 16 - .../StatusProvider/StatusProviderFacade.swift | 11 - ...meTimelineViewController+DebugAction.swift | 384 ---------- ...cHomeTimelineViewController+Provider.swift | 123 ---- .../AsyncHomeTimelineViewController.swift | 573 --------------- .../AsyncHomeTimelineViewModel+Diffable.swift | 159 ---- ...omeTimelineViewModel+LoadLatestState.swift | 134 ---- ...omeTimelineViewModel+LoadMiddleState.swift | 112 --- ...omeTimelineViewModel+LoadOldestState.swift | 117 --- .../AsyncHomeTimelineViewModel.swift | 151 ---- .../Root/MainTab/MainTabBarController.swift | 34 - .../View/Node/ASMetaEditableTextNode.swift | 25 - .../Share/View/Node/Status/StatusNode.swift | 234 ------ .../Status/TimelineBottomLoaderNode.swift | 41 -- .../Status/TimelineMiddleLoaderNode.swift | 54 -- Mastodon/Supporting Files/AppDelegate.swift | 11 - Mastodon/Vender/ActivityIndicatorNode.swift | 75 -- Podfile | 5 +- Podfile.lock | 46 +- 26 files changed, 10 insertions(+), 3257 deletions(-) delete mode 100644 Mastodon/Diffiable/DataSource/ASTableNode.swift delete mode 100644 Mastodon/Diffiable/DataSource/TableNodeDiffableDataSource.swift delete mode 100644 Mastodon/Protocol/StatusProvider/StatusProvider+StatusNodeDelegate.swift delete mode 100644 Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+DebugAction.swift delete mode 100644 Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+Provider.swift delete mode 100644 Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController.swift delete mode 100644 Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+Diffable.swift delete mode 100644 Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadLatestState.swift delete mode 100644 Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadMiddleState.swift delete mode 100644 Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadOldestState.swift delete mode 100644 Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel.swift delete mode 100644 Mastodon/Scene/Share/View/Node/ASMetaEditableTextNode.swift delete mode 100644 Mastodon/Scene/Share/View/Node/Status/StatusNode.swift delete mode 100644 Mastodon/Scene/Share/View/Node/Status/TimelineBottomLoaderNode.swift delete mode 100644 Mastodon/Scene/Share/View/Node/Status/TimelineMiddleLoaderNode.swift delete mode 100644 Mastodon/Vender/ActivityIndicatorNode.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 6b7644e3e..895b4aca7 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -183,7 +183,6 @@ DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0140CE25C42AEE00F9F3CF /* OSLog.swift */; }; DB01E23326A98F0900C3965B /* MastodonMeta in Frameworks */ = {isa = PBXBuildFile; productRef = DB01E23226A98F0900C3965B /* MastodonMeta */; }; DB01E23526A98F0900C3965B /* MetaTextKit in Frameworks */ = {isa = PBXBuildFile; productRef = DB01E23426A98F0900C3965B /* MetaTextKit */; }; - DB023295267F0AB800031745 /* ASMetaEditableTextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023294267F0AB800031745 /* ASMetaEditableTextNode.swift */; }; DB029E95266A20430062874E /* MastodonAuthenticationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB029E94266A20430062874E /* MastodonAuthenticationController.swift */; }; DB02CDAB26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB02CDAA26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift */; }; DB02CDBF2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB02CDBE2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift */; }; @@ -215,7 +214,6 @@ DB1D84382657B275000346B3 /* SegmentedControlNavigateable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D84372657B275000346B3 /* SegmentedControlNavigateable.swift */; }; DB1E346825F518E20079D7DF /* CategoryPickerSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1E346725F518E20079D7DF /* CategoryPickerSection.swift */; }; DB1E347825F519300079D7DF /* PickServerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1E347725F519300079D7DF /* PickServerItem.swift */; }; - DB1EE7B2267F9525000CC337 /* StatusProvider+StatusNodeDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1EE7B1267F9525000CC337 /* StatusProvider+StatusNodeDelegate.swift */; }; DB1FD43625F26899004CFCFC /* MastodonPickServerViewModel+LoadIndexedServerState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1FD43525F26899004CFCFC /* MastodonPickServerViewModel+LoadIndexedServerState.swift */; }; DB1FD44425F26CCC004CFCFC /* PickServerSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1FD44325F26CCC004CFCFC /* PickServerSection.swift */; }; DB1FD45025F26FA1004CFCFC /* MastodonPickServerViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1FD44F25F26FA1004CFCFC /* MastodonPickServerViewModel+Diffable.swift */; }; @@ -482,12 +480,6 @@ DBA94440265D137600C537E1 /* Mastodon+Entity+Field.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA9443F265D137600C537E1 /* Mastodon+Entity+Field.swift */; }; DBABE3EC25ECAC4B00879EE5 /* WelcomeIllustrationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBABE3EB25ECAC4B00879EE5 /* WelcomeIllustrationView.swift */; }; DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC6482267D0B21007FE9FD /* DifferenceKit */; }; - DBAC6485267D0F9E007FE9FD /* StatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6484267D0F9E007FE9FD /* StatusNode.swift */; }; - DBAC6488267D388B007FE9FD /* ASTableNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6487267D388B007FE9FD /* ASTableNode.swift */; }; - DBAC648F267DC84D007FE9FD /* TableNodeDiffableDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC648E267DC84D007FE9FD /* TableNodeDiffableDataSource.swift */; }; - DBAC6497267DECCB007FE9FD /* TimelineMiddleLoaderNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6496267DECCB007FE9FD /* TimelineMiddleLoaderNode.swift */; }; - DBAC6499267DF2C4007FE9FD /* TimelineBottomLoaderNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6498267DF2C4007FE9FD /* TimelineBottomLoaderNode.swift */; }; - DBAC649B267DF8C8007FE9FD /* ActivityIndicatorNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC649A267DF8C8007FE9FD /* ActivityIndicatorNode.swift */; }; DBAC649E267DFE43007FE9FD /* DiffableDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC649D267DFE43007FE9FD /* DiffableDataSources */; }; DBAC64A1267E6D02007FE9FD /* Fuzi in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC64A0267E6D02007FE9FD /* Fuzi */; }; DBAE3F682615DD60004B8251 /* UserProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F672615DD60004B8251 /* UserProvider.swift */; }; @@ -569,14 +561,6 @@ DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC7A671260C897100E57475 /* StatusContentWarningEditorView.swift */; }; DBC7A67C260DFADE00E57475 /* StatusPublishService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC7A67B260DFADE00E57475 /* StatusPublishService.swift */; }; DBCBCBF4267CB070000F5B51 /* Decode85.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCBF3267CB070000F5B51 /* Decode85.swift */; }; - DBCBCBFC2680ADB7000F5B51 /* AsyncHomeTimelineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCBFB2680ADB7000F5B51 /* AsyncHomeTimelineViewController.swift */; }; - DBCBCBFF2680AE98000F5B51 /* AsyncHomeTimelineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCBFE2680AE98000F5B51 /* AsyncHomeTimelineViewModel.swift */; }; - DBCBCC012680AF2A000F5B51 /* AsyncHomeTimelineViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCC002680AF2A000F5B51 /* AsyncHomeTimelineViewModel+Diffable.swift */; }; - DBCBCC032680AF6E000F5B51 /* AsyncHomeTimelineViewController+DebugAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCC022680AF6E000F5B51 /* AsyncHomeTimelineViewController+DebugAction.swift */; }; - DBCBCC052680AFB9000F5B51 /* AsyncHomeTimelineViewController+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCC042680AFB9000F5B51 /* AsyncHomeTimelineViewController+Provider.swift */; }; - DBCBCC072680AFEC000F5B51 /* AsyncHomeTimelineViewModel+LoadLatestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCC062680AFEC000F5B51 /* AsyncHomeTimelineViewModel+LoadLatestState.swift */; }; - DBCBCC092680B01B000F5B51 /* AsyncHomeTimelineViewModel+LoadMiddleState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCC082680B01B000F5B51 /* AsyncHomeTimelineViewModel+LoadMiddleState.swift */; }; - DBCBCC0B2680B03F000F5B51 /* AsyncHomeTimelineViewModel+LoadOldestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCC0A2680B03F000F5B51 /* AsyncHomeTimelineViewModel+LoadOldestState.swift */; }; DBCBCC0D2680B908000F5B51 /* HomeTimelinePreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCC0C2680B908000F5B51 /* HomeTimelinePreference.swift */; }; DBCBED1726132DB500B49291 /* UserTimelineViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBED1626132DB500B49291 /* UserTimelineViewModel+Diffable.swift */; }; DBCBED1D26132E1A00B49291 /* StatusFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBED1C26132E1A00B49291 /* StatusFetchedResultsController.swift */; }; @@ -977,7 +961,6 @@ DB0009A826AEE5DC009B9D2D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; name = Base; path = Base.lproj/Intents.intentdefinition; sourceTree = ""; }; DB0009AD26AEE5E4009B9D2D /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Intents.strings; sourceTree = ""; }; DB0140CE25C42AEE00F9F3CF /* OSLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OSLog.swift; sourceTree = ""; }; - DB023294267F0AB800031745 /* ASMetaEditableTextNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ASMetaEditableTextNode.swift; sourceTree = ""; }; DB029E94266A20430062874E /* MastodonAuthenticationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAuthenticationController.swift; sourceTree = ""; }; DB02CDAA26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadReplyLoaderTableViewCell.swift; sourceTree = ""; }; DB02CDBE2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveUserInterfaceStyleBarButtonItem.swift; sourceTree = ""; }; @@ -1009,7 +992,6 @@ DB1D84372657B275000346B3 /* SegmentedControlNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedControlNavigateable.swift; sourceTree = ""; }; DB1E346725F518E20079D7DF /* CategoryPickerSection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryPickerSection.swift; sourceTree = ""; }; DB1E347725F519300079D7DF /* PickServerItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PickServerItem.swift; sourceTree = ""; }; - DB1EE7B1267F9525000CC337 /* StatusProvider+StatusNodeDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusProvider+StatusNodeDelegate.swift"; sourceTree = ""; }; DB1FD43525F26899004CFCFC /* MastodonPickServerViewModel+LoadIndexedServerState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonPickServerViewModel+LoadIndexedServerState.swift"; sourceTree = ""; }; DB1FD44325F26CCC004CFCFC /* PickServerSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerSection.swift; sourceTree = ""; }; DB1FD44F25F26FA1004CFCFC /* MastodonPickServerViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonPickServerViewModel+Diffable.swift"; sourceTree = ""; }; @@ -1329,12 +1311,6 @@ DBA9443D265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldCollectionViewCell.swift; sourceTree = ""; }; DBA9443F265D137600C537E1 /* Mastodon+Entity+Field.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Field.swift"; sourceTree = ""; }; DBABE3EB25ECAC4B00879EE5 /* WelcomeIllustrationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeIllustrationView.swift; sourceTree = ""; }; - DBAC6484267D0F9E007FE9FD /* StatusNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusNode.swift; sourceTree = ""; }; - DBAC6487267D388B007FE9FD /* ASTableNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ASTableNode.swift; sourceTree = ""; }; - DBAC648E267DC84D007FE9FD /* TableNodeDiffableDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableNodeDiffableDataSource.swift; sourceTree = ""; }; - DBAC6496267DECCB007FE9FD /* TimelineMiddleLoaderNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineMiddleLoaderNode.swift; sourceTree = ""; }; - DBAC6498267DF2C4007FE9FD /* TimelineBottomLoaderNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineBottomLoaderNode.swift; sourceTree = ""; }; - DBAC649A267DF8C8007FE9FD /* ActivityIndicatorNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityIndicatorNode.swift; sourceTree = ""; }; DBAE3F672615DD60004B8251 /* UserProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProvider.swift; sourceTree = ""; }; DBAE3F812615DDA3004B8251 /* ProfileViewController+UserProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileViewController+UserProvider.swift"; sourceTree = ""; }; DBAE3F872615DDF4004B8251 /* UserProviderFacade.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProviderFacade.swift; sourceTree = ""; }; @@ -1385,14 +1361,6 @@ DBC7A671260C897100E57475 /* StatusContentWarningEditorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusContentWarningEditorView.swift; sourceTree = ""; }; DBC7A67B260DFADE00E57475 /* StatusPublishService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusPublishService.swift; sourceTree = ""; }; DBCBCBF3267CB070000F5B51 /* Decode85.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Decode85.swift; sourceTree = ""; }; - DBCBCBFB2680ADB7000F5B51 /* AsyncHomeTimelineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncHomeTimelineViewController.swift; sourceTree = ""; }; - DBCBCBFE2680AE98000F5B51 /* AsyncHomeTimelineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncHomeTimelineViewModel.swift; sourceTree = ""; }; - DBCBCC002680AF2A000F5B51 /* AsyncHomeTimelineViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AsyncHomeTimelineViewModel+Diffable.swift"; sourceTree = ""; }; - DBCBCC022680AF6E000F5B51 /* AsyncHomeTimelineViewController+DebugAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AsyncHomeTimelineViewController+DebugAction.swift"; sourceTree = ""; }; - DBCBCC042680AFB9000F5B51 /* AsyncHomeTimelineViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AsyncHomeTimelineViewController+Provider.swift"; sourceTree = ""; }; - DBCBCC062680AFEC000F5B51 /* AsyncHomeTimelineViewModel+LoadLatestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AsyncHomeTimelineViewModel+LoadLatestState.swift"; sourceTree = ""; }; - DBCBCC082680B01B000F5B51 /* AsyncHomeTimelineViewModel+LoadMiddleState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AsyncHomeTimelineViewModel+LoadMiddleState.swift"; sourceTree = ""; }; - DBCBCC0A2680B03F000F5B51 /* AsyncHomeTimelineViewModel+LoadOldestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AsyncHomeTimelineViewModel+LoadOldestState.swift"; sourceTree = ""; }; DBCBCC0C2680B908000F5B51 /* HomeTimelinePreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelinePreference.swift; sourceTree = ""; }; DBCBED1626132DB500B49291 /* UserTimelineViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserTimelineViewModel+Diffable.swift"; sourceTree = ""; }; DBCBED1C26132E1A00B49291 /* StatusFetchedResultsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusFetchedResultsController.swift; sourceTree = ""; }; @@ -1737,7 +1705,6 @@ isa = PBXGroup; children = ( DB1F239626117C360057430E /* View */, - DBCBCBFD2680ADBA000F5B51 /* AsyncHomeTimeline */, 2D38F1D425CD465300561493 /* HomeTimelineViewController.swift */, 2D38F1DE25CD46A400561493 /* HomeTimelineViewController+Provider.swift */, 2D5A3D6125CFD9CB002347D6 /* HomeTimelineViewController+DebugAction.swift */, @@ -1756,7 +1723,6 @@ 2D38F1FD25CD481700561493 /* StatusProvider.swift */, 2DF75B9A25D0E27500694EC8 /* StatusProviderFacade.swift */, 2DF75BA025D0E29D00694EC8 /* StatusProvider+StatusTableViewCellDelegate.swift */, - DB1EE7B1267F9525000CC337 /* StatusProvider+StatusNodeDelegate.swift */, DB59F0FD25EF5D96001F1DAB /* StatusProvider+UITableViewDelegate.swift */, DB71FD4525F8C6D200512AE1 /* StatusProvider+UITableViewDataSourcePrefetching.swift */, DB1D843526579DB5000346B3 /* StatusProvider+TableViewControllerNavigateable.swift */, @@ -1811,7 +1777,6 @@ DB51D171262832380062B7A1 /* BlurHashEncode.swift */, DB6180EC26391C6C0018D199 /* TransitioningMath.swift */, DB75BF1D263C1C1B00EDBF1F /* CustomScheduler.swift */, - DBAC649A267DF8C8007FE9FD /* ActivityIndicatorNode.swift */, DBF156E32702DB3F00EC00B7 /* HandleTapAction.swift */, DBF156E12702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m */, DBF156E02702DA6800EC00B7 /* Mastodon-Bridging-Header.h */, @@ -1893,7 +1858,6 @@ 2D76319D25C151F600929FB9 /* Section */, 2D7631B125C159E700929FB9 /* Item */, DBCBED2226132E1D00B49291 /* FetchedResultsController */, - DBAC6490267DC84F007FE9FD /* DataSource */, ); path = Diffiable; sourceTree = ""; @@ -1938,7 +1902,6 @@ DB87D45C2609DE6600D12C0D /* TextField */, DB1D187125EF5BBD003F1F23 /* TableView */, 2D7631A625C1533800929FB9 /* TableviewCell */, - DBAC6486267D0FAC007FE9FD /* Node */, ); path = View; sourceTree = ""; @@ -2120,16 +2083,6 @@ path = Onboarding; sourceTree = ""; }; - DB023296267F0ABE00031745 /* Status */ = { - isa = PBXGroup; - children = ( - DBAC6484267D0F9E007FE9FD /* StatusNode.swift */, - DBAC6496267DECCB007FE9FD /* TimelineMiddleLoaderNode.swift */, - DBAC6498267DF2C4007FE9FD /* TimelineBottomLoaderNode.swift */, - ); - path = Status; - sourceTree = ""; - }; DB03F7F1268990A2007B274C /* TableViewCell */ = { isa = PBXGroup; children = ( @@ -3044,24 +2997,6 @@ path = View; sourceTree = ""; }; - DBAC6486267D0FAC007FE9FD /* Node */ = { - isa = PBXGroup; - children = ( - DB023296267F0ABE00031745 /* Status */, - DB023294267F0AB800031745 /* ASMetaEditableTextNode.swift */, - ); - path = Node; - sourceTree = ""; - }; - DBAC6490267DC84F007FE9FD /* DataSource */ = { - isa = PBXGroup; - children = ( - DBAC6487267D388B007FE9FD /* ASTableNode.swift */, - DBAC648E267DC84D007FE9FD /* TableNodeDiffableDataSource.swift */, - ); - path = DataSource; - sourceTree = ""; - }; DBAE3F742615DD63004B8251 /* UserProvider */ = { isa = PBXGroup; children = ( @@ -3187,21 +3122,6 @@ path = ShareActionExtension; sourceTree = ""; }; - DBCBCBFD2680ADBA000F5B51 /* AsyncHomeTimeline */ = { - isa = PBXGroup; - children = ( - DBCBCBFB2680ADB7000F5B51 /* AsyncHomeTimelineViewController.swift */, - DBCBCC022680AF6E000F5B51 /* AsyncHomeTimelineViewController+DebugAction.swift */, - DBCBCC042680AFB9000F5B51 /* AsyncHomeTimelineViewController+Provider.swift */, - DBCBCBFE2680AE98000F5B51 /* AsyncHomeTimelineViewModel.swift */, - DBCBCC002680AF2A000F5B51 /* AsyncHomeTimelineViewModel+Diffable.swift */, - DBCBCC062680AFEC000F5B51 /* AsyncHomeTimelineViewModel+LoadLatestState.swift */, - DBCBCC082680B01B000F5B51 /* AsyncHomeTimelineViewModel+LoadMiddleState.swift */, - DBCBCC0A2680B03F000F5B51 /* AsyncHomeTimelineViewModel+LoadOldestState.swift */, - ); - path = AsyncHomeTimeline; - sourceTree = ""; - }; DBCBED2226132E1D00B49291 /* FetchedResultsController */ = { isa = PBXGroup; children = ( @@ -3969,7 +3889,6 @@ 0FAA0FDF25E0B57E0017CCDE /* WelcomeViewController.swift in Sources */, 2D206B8C25F6015000143C56 /* AudioPlaybackService.swift in Sources */, 2D59819B25E4A581000FB903 /* MastodonConfirmEmailViewController.swift in Sources */, - DBCBCBFC2680ADB7000F5B51 /* AsyncHomeTimelineViewController.swift in Sources */, DB45FB1D25CA9D23005A8AC7 /* APIService+HomeTimeline.swift in Sources */, DBA94440265D137600C537E1 /* Mastodon+Entity+Field.swift in Sources */, DB49A61425FF2C5600B98345 /* EmojiService.swift in Sources */, @@ -4016,12 +3935,10 @@ DB02CDAB26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift in Sources */, DB63BE7F268DD1070011D3F9 /* NotificationViewController+StatusProvider.swift in Sources */, DBB5255E2611F07A002F1F29 /* ProfileViewModel.swift in Sources */, - DBAC648F267DC84D007FE9FD /* TableNodeDiffableDataSource.swift in Sources */, 2D8434FB25FF46B300EECE90 /* HomeTimelineNavigationBarTitleView.swift in Sources */, 0F1E2D0B2615C39400C38565 /* DoubleTitleLabelNavigationBarTitleView.swift in Sources */, DBA1DB80268F84F80052DB59 /* NotificationType.swift in Sources */, DB9A488A26034D40008B817C /* ComposeViewModel+PublishState.swift in Sources */, - DBAC649B267DF8C8007FE9FD /* ActivityIndicatorNode.swift in Sources */, DB45FAD725CA6C76005A8AC7 /* UIBarButtonItem.swift in Sources */, 2DA504692601ADE7008F4E6C /* SawToothView.swift in Sources */, DBA465952696E387002B41DB /* AppPreference.swift in Sources */, @@ -4091,12 +4008,9 @@ 2D939AB525EDD8A90076FA61 /* String.swift in Sources */, DB4481B925EE289600BEFB67 /* UITableView.swift in Sources */, DBE3CDBB261C427900430CC6 /* TimelineHeaderTableViewCell.swift in Sources */, - DBCBCBFF2680AE98000F5B51 /* AsyncHomeTimelineViewModel.swift in Sources */, 0FAA101C25E10E760017CCDE /* UIFont.swift in Sources */, 2D38F1D525CD465300561493 /* HomeTimelineViewController.swift in Sources */, - DBAC6497267DECCB007FE9FD /* TimelineMiddleLoaderNode.swift in Sources */, DB97131F2666078B00BD1E90 /* Date.swift in Sources */, - DBAC6485267D0F9E007FE9FD /* StatusNode.swift in Sources */, DB98338825C945ED00AD9700 /* Assets.swift in Sources */, DB6180E926391BDF0018D199 /* MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift in Sources */, DB6B351E2601FAEE00DC1E11 /* ComposeStatusAttachmentCollectionViewCell.swift in Sources */, @@ -4156,7 +4070,6 @@ DBA5E7A5263BD28C004598BB /* ContextMenuImagePreviewViewModel.swift in Sources */, DB9D7C21269824B80054B3DF /* APIService+Filter.swift in Sources */, 2D38F1E525CD46C100561493 /* HomeTimelineViewModel.swift in Sources */, - DBCBCC012680AF2A000F5B51 /* AsyncHomeTimelineViewModel+Diffable.swift in Sources */, DBCC3B36261440BA0045B23D /* UINavigationController.swift in Sources */, DBB525852612D6DD002F1F29 /* ProfileStatusDashboardMeterView.swift in Sources */, 2D84350525FF858100EECE90 /* UIScrollView.swift in Sources */, @@ -4185,7 +4098,6 @@ 2D694A7425F9EB4E0038ADDC /* ContentWarningOverlayView.swift in Sources */, DB4932B126F1FB5300EF46D4 /* WizardCardView.swift in Sources */, DBAE3F682615DD60004B8251 /* UserProvider.swift in Sources */, - DBAC6488267D388B007FE9FD /* ASTableNode.swift in Sources */, DB6D9F76263587C7008423CD /* SettingFetchedResultController.swift in Sources */, DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */, 5D0393902612D259007FE196 /* WebViewController.swift in Sources */, @@ -4220,7 +4132,6 @@ DB1D186C25EF5BA7003F1F23 /* PollTableView.swift in Sources */, DBA94434265CBB5300C537E1 /* ProfileFieldSection.swift in Sources */, DBF156E42702DB3F00EC00B7 /* HandleTapAction.swift in Sources */, - DB023295267F0AB800031745 /* ASMetaEditableTextNode.swift in Sources */, 2D5981A125E4A593000FB903 /* MastodonConfirmEmailViewModel.swift in Sources */, DB6B74F6272FBCDB00C70B6E /* FollowerListViewModel+State.swift in Sources */, DB4F096C269EFA2000D62E92 /* SearchResultViewController+StatusProvider.swift in Sources */, @@ -4248,7 +4159,6 @@ DB938EED2623F79B00E5B6C1 /* ThreadViewModel.swift in Sources */, DBBC24AC26A53D9300398BB9 /* ComposeStatusContentTableViewCell.swift in Sources */, DBC7A67C260DFADE00E57475 /* StatusPublishService.swift in Sources */, - DBCBCC092680B01B000F5B51 /* AsyncHomeTimelineViewModel+LoadMiddleState.swift in Sources */, 2DCB73FD2615C13900EC03D4 /* SearchRecommendCollectionHeader.swift in Sources */, DB852D1C26FB021500FC9D81 /* RootSplitViewController.swift in Sources */, DB02CDBF2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift in Sources */, @@ -4264,7 +4174,6 @@ 0FB3D33825E6401400AAD544 /* PickServerCell.swift in Sources */, DB6D9F8426358EEC008423CD /* SettingsItem.swift in Sources */, 2D364F7825E66D8300204FDC /* MastodonResendEmailViewModel.swift in Sources */, - DBCBCC052680AFB9000F5B51 /* AsyncHomeTimelineViewController+Provider.swift in Sources */, DBA465932696B495002B41DB /* APIService+WebFinger.swift in Sources */, DB8AF54525C13647002E6C99 /* NeedsDependency.swift in Sources */, DB9D6BF825E4F5690051B173 /* NotificationViewController.swift in Sources */, @@ -4301,7 +4210,6 @@ 2DB72C8C262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift in Sources */, 2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */, DB084B5725CBC56C00F898ED /* Status.swift in Sources */, - DBCBCC072680AFEC000F5B51 /* AsyncHomeTimelineViewModel+LoadLatestState.swift in Sources */, 2D4AD89C263165B500613EFC /* SuggestionAccountCollectionViewCell.swift in Sources */, DB447691260B406600B66B82 /* CustomEmojiPickerItemCollectionViewCell.swift in Sources */, DB9282B225F3222800823B15 /* PickServerEmptyStateView.swift in Sources */, @@ -4326,7 +4234,6 @@ DB0C947226A7D2D70088FB11 /* AvatarButton.swift in Sources */, DB98336B25C9420100AD9700 /* APIService+App.swift in Sources */, DBFEF07B26A6BCE8006D7ED1 /* APIService+Status+Publish.swift in Sources */, - DBCBCC032680AF6E000F5B51 /* AsyncHomeTimelineViewController+DebugAction.swift in Sources */, DBA0A11325FB3FC10079C110 /* ComposeToolbarView.swift in Sources */, 2D32EADA25CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift in Sources */, 5B90C48526259BF10002E742 /* APIService+Subscriptions.swift in Sources */, @@ -4359,7 +4266,6 @@ DB71C7CD271D7F4300BE3819 /* CurveAlgorithm.swift in Sources */, DBD376B2269302A4007FEC24 /* UITableViewCell.swift in Sources */, DB4F0966269ED52200D62E92 /* SearchResultViewModel.swift in Sources */, - DBAC6499267DF2C4007FE9FD /* TimelineBottomLoaderNode.swift in Sources */, 2D76318325C14E8F00929FB9 /* PublicTimelineViewModel+Diffable.swift in Sources */, DBBF1DBF2652401B00E5B703 /* AutoCompleteViewModel.swift in Sources */, DB6180FA26391F2E0018D199 /* MediaPreviewViewModel.swift in Sources */, @@ -4390,7 +4296,6 @@ DB4F097B26A039FF00D62E92 /* SearchHistorySection.swift in Sources */, DBB525302611EBF3002F1F29 /* ProfilePagingViewModel.swift in Sources */, DB9F58EC26EF435000E7BBE9 /* AccountViewController.swift in Sources */, - DBCBCC0B2680B03F000F5B51 /* AsyncHomeTimelineViewModel+LoadOldestState.swift in Sources */, 2D5A3D6225CFD9CB002347D6 /* HomeTimelineViewController+DebugAction.swift in Sources */, DB49A62525FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift in Sources */, DB4924E226312AB200E9DB22 /* NotificationService.swift in Sources */, @@ -4409,7 +4314,6 @@ DB3667A4268AE2370027D07F /* ComposeStatusPollTableViewCell.swift in Sources */, DBBF1DC226524D2900E5B703 /* AutoCompleteTableViewCell.swift in Sources */, 2D38F1FE25CD481700561493 /* StatusProvider.swift in Sources */, - DB1EE7B2267F9525000CC337 /* StatusProvider+StatusNodeDelegate.swift in Sources */, 5B24BBE2262DB19100A9381B /* APIService+Report.swift in Sources */, DBF3B7412733EB9400E21627 /* MastodonLocalCode.swift in Sources */, DB4F096A269EDAD200D62E92 /* SearchResultViewModel+State.swift in Sources */, @@ -5232,56 +5136,6 @@ }; name = Debug; }; - DB8FABD126AEC7B2008E5AF4 /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C3789232A52F43529CA67E95 /* Pods-MastodonIntent.asdk - debug.xcconfig */; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = MastodonIntent/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MARKETING_VERSION = 1.0.7; - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "ASDK - Debug"; - }; - DB8FABD226AEC7B2008E5AF4 /* ASDK - Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F920AD4EC23B0D00F5CCA58E /* Pods-MastodonIntent.asdk - release.xcconfig */; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = MastodonIntent/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MARKETING_VERSION = 1.0.7; - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "ASDK - Release"; - }; DB8FABD326AEC7B2008E5AF4 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 159AC43EFE0A1F95FCB358A4 /* Pods-MastodonIntent.release.xcconfig */; @@ -5332,56 +5186,6 @@ }; name = Debug; }; - DBC6461E26A170AB00B0E31B /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6130CBE4B26E3C976ACC1688 /* Pods-ShareActionExtension.asdk - debug.xcconfig */; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = ShareActionExtension/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MARKETING_VERSION = 1.0.7; - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "ASDK - Debug"; - }; - DBC6461F26A170AB00B0E31B /* ASDK - Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5CE45680252519F42FEA2D13 /* Pods-ShareActionExtension.asdk - release.xcconfig */; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = ShareActionExtension/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MARKETING_VERSION = 1.0.7; - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "ASDK - Release"; - }; DBC6462026A170AB00B0E31B /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 95AD0663479892A2109EEFD0 /* Pods-ShareActionExtension.release.xcconfig */; @@ -5407,480 +5211,6 @@ }; name = Release; }; - DBCBCC0E2680BE3E000F5B51 /* ASDK - Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INTENTS_CODEGEN_LANGUAGE = Swift; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = ASDK; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = "ASDK - Release"; - }; - DBCBCC0F2680BE3E000F5B51 /* ASDK - Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BD7598A87F4497045EDEF252 /* Pods-Mastodon.asdk - release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = Mastodon/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0.7; - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "ASDK - Release"; - }; - DBCBCC102680BE3E000F5B51 /* ASDK - Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 46DAB0EBDDFB678347CD96FF /* Pods-MastodonTests.asdk - release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = MastodonTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; - }; - name = "ASDK - Release"; - }; - DBCBCC112680BE3E000F5B51 /* ASDK - Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8850E70A1D5FF51432E43653 /* Pods-Mastodon-MastodonUITests.asdk - release.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = MastodonUITests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Mastodon; - }; - name = "ASDK - Release"; - }; - DBCBCC122680BE3E000F5B51 /* ASDK - Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 88; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = CoreDataStack/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStack; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = "ASDK - Release"; - }; - DBCBCC132680BE3E000F5B51 /* ASDK - Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = CoreDataStackTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStackTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; - }; - name = "ASDK - Release"; - }; - DBCBCC142680BE3E000F5B51 /* ASDK - Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9CFF58FD900AC059428700E7 /* Pods-NotificationService.asdk - release.xcconfig */; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = NotificationService/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MARKETING_VERSION = 1.0.7; - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "ASDK - Release"; - }; - DBCBCC152680BE3E000F5B51 /* ASDK - Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DDB1B139FA8EA26F510D58B6 /* Pods-AppShared.asdk - release.xcconfig */; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 88; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = AppShared/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.AppShared; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = "ASDK - Release"; - }; - DBCBCC1E26818F6F000F5B51 /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INTENTS_CODEGEN_LANGUAGE = Swift; - IPHONEOS_DEPLOYMENT_TARGET = 14.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG ASDK"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = "ASDK - Debug"; - }; - DBCBCC1F26818F6F000F5B51 /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = Mastodon/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0.7; - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "ASDK - Debug"; - }; - DBCBCC2026818F6F000F5B51 /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7CEFFAE9AF9284B13C0A758D /* Pods-MastodonTests.asdk - debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = MastodonTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; - }; - name = "ASDK - Debug"; - }; - DBCBCC2126818F6F000F5B51 /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E5C7236E58D14A0322FE00F2 /* Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig */; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = MastodonUITests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonUITests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Mastodon; - }; - name = "ASDK - Debug"; - }; - DBCBCC2226818F6F000F5B51 /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 88; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = CoreDataStack/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStack; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = "ASDK - Debug"; - }; - DBCBCC2326818F6F000F5B51 /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = CoreDataStackTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStackTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; - }; - name = "ASDK - Debug"; - }; - DBCBCC2426818F6F000F5B51 /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3B7FD8F28DDA8FBCE5562B78 /* Pods-NotificationService.asdk - debug.xcconfig */; - buildSettings = { - CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = NotificationService/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@executable_path/../../Frameworks", - ); - MARKETING_VERSION = 1.0.7; - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "ASDK - Debug"; - }; - DBCBCC2526818F6F000F5B51 /* ASDK - Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A9B1FB898DFD6063B044298C /* Pods-AppShared.asdk - debug.xcconfig */; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 88; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = AppShared/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.AppShared; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = "ASDK - Debug"; - }; DBF8AE1C263293E400C9C23C /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9553C689FFA9EBC880CAB78D /* Pods-NotificationService.debug.xcconfig */; @@ -5936,8 +5266,6 @@ isa = XCConfigurationList; buildConfigurations = ( DB427DFA25BAA00100D1B89D /* Debug */, - DBCBCC1E26818F6F000F5B51 /* ASDK - Debug */, - DBCBCC0E2680BE3E000F5B51 /* ASDK - Release */, DB427DFB25BAA00100D1B89D /* Release */, ); defaultConfigurationIsVisible = 0; @@ -5947,8 +5275,6 @@ isa = XCConfigurationList; buildConfigurations = ( DB427DFD25BAA00100D1B89D /* Debug */, - DBCBCC1F26818F6F000F5B51 /* ASDK - Debug */, - DBCBCC0F2680BE3E000F5B51 /* ASDK - Release */, DB427DFE25BAA00100D1B89D /* Release */, ); defaultConfigurationIsVisible = 0; @@ -5958,8 +5284,6 @@ isa = XCConfigurationList; buildConfigurations = ( DB427E0025BAA00100D1B89D /* Debug */, - DBCBCC2026818F6F000F5B51 /* ASDK - Debug */, - DBCBCC102680BE3E000F5B51 /* ASDK - Release */, DB427E0125BAA00100D1B89D /* Release */, ); defaultConfigurationIsVisible = 0; @@ -5969,8 +5293,6 @@ isa = XCConfigurationList; buildConfigurations = ( DB427E0325BAA00100D1B89D /* Debug */, - DBCBCC2126818F6F000F5B51 /* ASDK - Debug */, - DBCBCC112680BE3E000F5B51 /* ASDK - Release */, DB427E0425BAA00100D1B89D /* Release */, ); defaultConfigurationIsVisible = 0; @@ -5980,8 +5302,6 @@ isa = XCConfigurationList; buildConfigurations = ( DB6804892637CD4C00430867 /* Debug */, - DBCBCC2526818F6F000F5B51 /* ASDK - Debug */, - DBCBCC152680BE3E000F5B51 /* ASDK - Release */, DB68048A2637CD4C00430867 /* Release */, ); defaultConfigurationIsVisible = 0; @@ -5991,8 +5311,6 @@ isa = XCConfigurationList; buildConfigurations = ( DB89BA0625C10FD0008580ED /* Debug */, - DBCBCC2226818F6F000F5B51 /* ASDK - Debug */, - DBCBCC122680BE3E000F5B51 /* ASDK - Release */, DB89BA0725C10FD0008580ED /* Release */, ); defaultConfigurationIsVisible = 0; @@ -6002,8 +5320,6 @@ isa = XCConfigurationList; buildConfigurations = ( DB89BA0A25C10FD0008580ED /* Debug */, - DBCBCC2326818F6F000F5B51 /* ASDK - Debug */, - DBCBCC132680BE3E000F5B51 /* ASDK - Release */, DB89BA0B25C10FD0008580ED /* Release */, ); defaultConfigurationIsVisible = 0; @@ -6013,8 +5329,6 @@ isa = XCConfigurationList; buildConfigurations = ( DB8FABD026AEC7B2008E5AF4 /* Debug */, - DB8FABD126AEC7B2008E5AF4 /* ASDK - Debug */, - DB8FABD226AEC7B2008E5AF4 /* ASDK - Release */, DB8FABD326AEC7B2008E5AF4 /* Release */, ); defaultConfigurationIsVisible = 0; @@ -6024,8 +5338,6 @@ isa = XCConfigurationList; buildConfigurations = ( DBC6461D26A170AB00B0E31B /* Debug */, - DBC6461E26A170AB00B0E31B /* ASDK - Debug */, - DBC6461F26A170AB00B0E31B /* ASDK - Release */, DBC6462026A170AB00B0E31B /* Release */, ); defaultConfigurationIsVisible = 0; @@ -6035,8 +5347,6 @@ isa = XCConfigurationList; buildConfigurations = ( DBF8AE1C263293E400C9C23C /* Debug */, - DBCBCC2426818F6F000F5B51 /* ASDK - Debug */, - DBCBCC142680BE3E000F5B51 /* ASDK - Release */, DBF8AE1D263293E400C9C23C /* Release */, ); defaultConfigurationIsVisible = 0; diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 5c99e944b..55e94fa7c 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,17 +7,17 @@ AppShared.xcscheme_^#shared#^_ orderHint - 44 + 24 CoreDataStack.xcscheme_^#shared#^_ orderHint - 45 + 26 Mastodon - ASDK.xcscheme_^#shared#^_ orderHint - 4 + 2 Mastodon - RTL.xcscheme_^#shared#^_ @@ -27,7 +27,7 @@ Mastodon - Release.xcscheme_^#shared#^_ orderHint - 3 + 1 Mastodon - ar.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 43 + 27 MastodonIntents.xcscheme_^#shared#^_ @@ -117,12 +117,12 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 7 + 3 ShareActionExtension.xcscheme_^#shared#^_ orderHint - 42 + 25 SuppressBuildableAutocreation diff --git a/Mastodon/Coordinator/SceneCoordinator.swift b/Mastodon/Coordinator/SceneCoordinator.swift index 9fbb2b774..c10b60d4f 100644 --- a/Mastodon/Coordinator/SceneCoordinator.swift +++ b/Mastodon/Coordinator/SceneCoordinator.swift @@ -157,11 +157,6 @@ extension SceneCoordinator { case mastodonConfirmEmail(viewModel: MastodonConfirmEmailViewModel) case mastodonResendEmail(viewModel: MastodonResendEmailViewModel) case mastodonWebView(viewModel:WebViewModel) - - #if ASDK - // ASDK - case asyncHome - #endif // search case searchDetail(viewModel: SearchDetailViewModel) @@ -412,11 +407,6 @@ private extension SceneCoordinator { let _viewController = WebViewController() _viewController.viewModel = viewModel viewController = _viewController - #if ASDK - case .asyncHome: - let _viewController = AsyncHomeTimelineViewController() - viewController = _viewController - #endif case .searchDetail(let viewModel): let _viewController = SearchDetailViewController() _viewController.viewModel = viewModel diff --git a/Mastodon/Diffiable/DataSource/ASTableNode.swift b/Mastodon/Diffiable/DataSource/ASTableNode.swift deleted file mode 100644 index 36ff1fb07..000000000 --- a/Mastodon/Diffiable/DataSource/ASTableNode.swift +++ /dev/null @@ -1,85 +0,0 @@ -// -// ASTableNode.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-6-19. -// - -#if ASDK - -import UIKit -import AsyncDisplayKit -import DifferenceKit -import DiffableDataSources - -extension ASTableNode: ReloadableTableView { - public func reload( - using stagedChangeset: StagedChangeset, - deleteSectionsAnimation: @autoclosure () -> UITableView.RowAnimation, - insertSectionsAnimation: @autoclosure () -> UITableView.RowAnimation, - reloadSectionsAnimation: @autoclosure () -> UITableView.RowAnimation, - deleteRowsAnimation: @autoclosure () -> UITableView.RowAnimation, - insertRowsAnimation: @autoclosure () -> UITableView.RowAnimation, - reloadRowsAnimation: @autoclosure () -> UITableView.RowAnimation, - interrupt: ((Changeset) -> Bool)? = nil, - setData: (C) -> Void - ) { - if case .none = view.window, let data = stagedChangeset.last?.data { - setData(data) - return reloadData() - } - - for changeset in stagedChangeset { - if let interrupt = interrupt, interrupt(changeset), let data = stagedChangeset.last?.data { - setData(data) - return reloadData() - } - - func updates() { - setData(changeset.data) - - if !changeset.sectionDeleted.isEmpty { - deleteSections(IndexSet(changeset.sectionDeleted), with: deleteSectionsAnimation()) - } - - if !changeset.sectionInserted.isEmpty { - insertSections(IndexSet(changeset.sectionInserted), with: insertSectionsAnimation()) - } - - if !changeset.sectionUpdated.isEmpty { - reloadSections(IndexSet(changeset.sectionUpdated), with: reloadSectionsAnimation()) - } - - for (source, target) in changeset.sectionMoved { - moveSection(source, toSection: target) - } - - if !changeset.elementDeleted.isEmpty { - deleteRows(at: changeset.elementDeleted.map { IndexPath(row: $0.element, section: $0.section) }, with: deleteRowsAnimation()) - } - - if !changeset.elementInserted.isEmpty { - insertRows(at: changeset.elementInserted.map { IndexPath(row: $0.element, section: $0.section) }, with: insertRowsAnimation()) - } - - if !changeset.elementUpdated.isEmpty { - reloadRows(at: changeset.elementUpdated.map { IndexPath(row: $0.element, section: $0.section) }, with: reloadRowsAnimation()) - } - - for (source, target) in changeset.elementMoved { - moveRow(at: IndexPath(row: source.element, section: source.section), to: IndexPath(row: target.element, section: target.section)) - } - } - - if isNodeLoaded { - view.beginUpdates() - updates() - view.endUpdates(animated: false, completion: nil) - } else { - updates() - } - } - } -} - -#endif diff --git a/Mastodon/Diffiable/DataSource/TableNodeDiffableDataSource.swift b/Mastodon/Diffiable/DataSource/TableNodeDiffableDataSource.swift deleted file mode 100644 index 54ab22a4c..000000000 --- a/Mastodon/Diffiable/DataSource/TableNodeDiffableDataSource.swift +++ /dev/null @@ -1,115 +0,0 @@ -// -// TableNodeDiffableDataSource.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-6-19. -// - -#if ASDK - -import UIKit -import AsyncDisplayKit -import DiffableDataSources - -open class TableNodeDiffableDataSource: NSObject, ASTableDataSource { - /// The type of closure providing the cell. - public typealias CellProvider = (ASTableNode, IndexPath, ItemIdentifierType) -> ASCellNodeBlock? - - /// The default animation to updating the views. - public var defaultRowAnimation: UITableView.RowAnimation = .automatic - - private weak var tableNode: ASTableNode? - private let cellProvider: CellProvider - private let core = DiffableDataSourceCore() - - /// Creates a new data source. - /// - /// - Parameters: - /// - tableView: A table view instance to be managed. - /// - cellProvider: A closure to dequeue the cell for rows. - public init(tableNode: ASTableNode, cellProvider: @escaping CellProvider) { - self.tableNode = tableNode - self.cellProvider = cellProvider - super.init() - - tableNode.delegate = self - } - - /// Applies given snapshot to perform automatic diffing update. - /// - /// - Parameters: - /// - snapshot: A snapshot object to be applied to data model. - /// - animatingDifferences: A Boolean value indicating whether to update with - /// diffing animation. - /// - completion: An optional completion block which is called when the complete - /// performing updates. - public func apply(_ snapshot: DiffableDataSourceSnapshot, animatingDifferences: Bool = true, completion: (() -> Void)? = nil) { - core.apply(snapshot, view: tableNode, animatingDifferences: animatingDifferences, completion: completion) - } - - /// Returns a new snapshot object of current state. - /// - /// - Returns: A new snapshot object of current state. - public func snapshot() -> DiffableDataSourceSnapshot { - return core.snapshot() - } - - /// Returns an item identifier for given index path. - /// - /// - Parameters: - /// - indexPath: An index path for the item identifier. - /// - /// - Returns: An item identifier for given index path. - public func itemIdentifier(for indexPath: IndexPath) -> ItemIdentifierType? { - return core.itemIdentifier(for: indexPath) - } - - /// Returns an index path for given item identifier. - /// - /// - Parameters: - /// - itemIdentifier: An identifier of item. - /// - /// - Returns: An index path for given item identifier. - public func indexPath(for itemIdentifier: ItemIdentifierType) -> IndexPath? { - return core.indexPath(for: itemIdentifier) - } - - /// Returns the number of sections in the data source. - /// - /// - Parameters: - /// - tableNode: A table node instance managed by `self`. - /// - /// - Returns: The number of sections in the data source. - public func numberOfSections(in tableNode: ASTableNode) -> Int { - return core.numberOfSections() - } - - /// Returns the number of items in the specified section. - /// - /// - Parameters: - /// - tableNode: A table node instance managed by `self`. - /// - section: An index of section. - /// - /// - Returns: The number of items in the specified section. - public func tableNode(_ tableNode: ASTableNode, numberOfRowsInSection section: Int) -> Int { - return core.numberOfItems(inSection: section) - } - - /// Returns a cell for row at specified index path. - /// - /// - Parameters: - /// - tableView: A table view instance managed by `self`. - /// - indexPath: An index path for cell. - /// - /// - Returns: A cell for row at specified index path. - open func tableNode(_ tableNode: ASTableNode, nodeBlockForRowAt indexPath: IndexPath) -> ASCellNodeBlock { - let itemIdentifier = core.unsafeItemIdentifier(for: indexPath) - guard let block = cellProvider(tableNode, indexPath, itemIdentifier) else { - fatalError("UITableView dataSource returned a nil cell for row at index path: \(indexPath), tableNode: \(tableNode), itemIdentifier: \(itemIdentifier)") - } - - return block - } -} - -#endif diff --git a/Mastodon/Diffiable/Section/Status/StatusSection.swift b/Mastodon/Diffiable/Section/Status/StatusSection.swift index 61217c790..918b8b453 100644 --- a/Mastodon/Diffiable/Section/Status/StatusSection.swift +++ b/Mastodon/Diffiable/Section/Status/StatusSection.swift @@ -18,10 +18,6 @@ import NaturalLanguage // import LinkPresentation -#if ASDK -import AsyncDisplayKit -#endif - protocol StatusCell: DisposeBagCollectable { var statusView: StatusView { get } var isFiltered: Bool { get set } @@ -32,33 +28,6 @@ enum StatusSection: Equatable, Hashable { } extension StatusSection { - #if ASDK - static func tableNodeDiffableDataSource( - tableNode: ASTableNode, - managedObjectContext: NSManagedObjectContext - ) -> TableNodeDiffableDataSource { - TableNodeDiffableDataSource(tableNode: tableNode) { tableNode, indexPath, item in - switch item { - case .homeTimelineIndex(let objectID, let attribute): - guard let homeTimelineIndex = try? managedObjectContext.existingObject(with: objectID) as? HomeTimelineIndex else { - return { ASCellNode() } - } - let status = homeTimelineIndex.status - - return { () -> ASCellNode in - let cellNode = StatusNode(status: status) - return cellNode - } - case .homeMiddleLoader: - return { TimelineMiddleLoaderNode() } - case .bottomLoader: - return { TimelineBottomLoaderNode() } - default: - return { ASCellNode() } - } - } - } - #endif static let logger = Logger(subsystem: "StatusSection", category: "logic") diff --git a/Mastodon/Protocol/StatusProvider/StatusProvider+StatusNodeDelegate.swift b/Mastodon/Protocol/StatusProvider/StatusProvider+StatusNodeDelegate.swift deleted file mode 100644 index 3c6d7da19..000000000 --- a/Mastodon/Protocol/StatusProvider/StatusProvider+StatusNodeDelegate.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// StatusProvider+StatusNodeDelegate.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-6-20. -// - -#if ASDK - -import Foundation - -// MARK: - StatusViewDelegate -extension StatusNodeDelegate where Self: StatusProvider { - -} - -#endif diff --git a/Mastodon/Protocol/StatusProvider/StatusProvider.swift b/Mastodon/Protocol/StatusProvider/StatusProvider.swift index 3497fd7a8..2f13b8d5a 100644 --- a/Mastodon/Protocol/StatusProvider/StatusProvider.swift +++ b/Mastodon/Protocol/StatusProvider/StatusProvider.swift @@ -10,10 +10,6 @@ import Combine import CoreData import CoreDataStack -#if ASDK -import AsyncDisplayKit -#endif - protocol StatusProvider: NeedsDependency & DisposeBagCollectable & UIViewController { // async func status() -> Future @@ -31,20 +27,8 @@ protocol StatusProvider: NeedsDependency & DisposeBagCollectable & UIViewControl func items(indexPaths: [IndexPath]) -> [Item] func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] - - #if ASDK - func status(node: ASCellNode?, indexPath: IndexPath?) -> Status? - #endif } -#if ASDK -extension StatusProvider { - func status(node: ASCellNode?, indexPath: IndexPath?) -> Status? { - fatalError("Needs implement this") - } -} -#endif - enum StatusObjectItem { case status(objectID: NSManagedObjectID) case homeTimelineIndex(objectID: NSManagedObjectID) diff --git a/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift b/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift index d11870ed2..68987c306 100644 --- a/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift +++ b/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift @@ -14,10 +14,6 @@ import MastodonSDK import Meta import MetaTextKit -#if ASDK -import AsyncDisplayKit -#endif - enum StatusProviderFacade { } extension StatusProviderFacade { @@ -154,13 +150,6 @@ extension StatusProviderFacade { } } - #if ASDK - private static func coordinateToStatusMentionProfileScene(for target: Target, provider: StatusProvider, node: ASCellNode, mention: String) { - guard let status = provider.status(node: node, indexPath: nil) else { return } - coordinateToStatusMentionProfileScene(for: target, provider: provider, status: status, mention: mention, href: nil) - } - #endif - private static func coordinateToStatusMentionProfileScene(for target: Target, provider: StatusProvider, cell: UITableViewCell, mention: String, href: String?) { provider.status(for: cell, indexPath: nil) .sink { [weak provider] status in diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+DebugAction.swift deleted file mode 100644 index 19c3244c9..000000000 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+DebugAction.swift +++ /dev/null @@ -1,384 +0,0 @@ -// -// AsyncHomeTimelineViewController+DebugAction.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-6-21. -// - -#if ASDK && DEBUG - -import os.log -import UIKit -import CoreData -import CoreDataStack -import FLEX - -extension AsyncHomeTimelineViewController { - var debugMenu: UIMenu { - let menu = UIMenu( - title: "Debug Tools", - image: nil, - identifier: nil, - options: .displayInline, - children: [ - UIAction(title: "Show FLEX", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.showFLEXAction(action) - }), - moveMenu, - dropMenu, - UIAction(title: "Show Welcome", image: UIImage(systemName: "figure.walk"), attributes: []) { [weak self] action in - guard let self = self else { return } - self.showWelcomeAction(action) - }, - UIAction(title: "Show Or Remove EmptyView", image: UIImage(systemName: "clear"), attributes: []) { [weak self] action in - guard let self = self else { return } - if self.emptyView.superview != nil { - self.emptyView.removeFromSuperview() - } else { - self.showEmptyView() - } - }, - UIAction(title: "Show Public Timeline", image: UIImage(systemName: "list.dash"), attributes: []) { [weak self] action in - guard let self = self else { return } - self.showPublicTimelineAction(action) - }, - UIAction(title: "Show Profile", image: UIImage(systemName: "person.crop.circle"), attributes: []) { [weak self] action in - guard let self = self else { return } - self.showProfileAction(action) - }, - UIAction(title: "Show Thread", image: UIImage(systemName: "bubble.left.and.bubble.right"), attributes: []) { [weak self] action in - guard let self = self else { return } - self.showThreadAction(action) - }, - UIAction(title: "Settings", image: UIImage(systemName: "gear"), attributes: []) { [weak self] action in - guard let self = self else { return } - self.showSettings(action) - }, - UIAction(title: "Sign Out", image: UIImage(systemName: "escape"), attributes: .destructive) { [weak self] action in - guard let self = self else { return } - self.signOutAction(action) - } - ] - ) - return menu - } - - var moveMenu: UIMenu { - return UIMenu( - title: "Move to…", - image: UIImage(systemName: "arrow.forward.circle"), - identifier: nil, - options: [], - children: [ - UIAction(title: "First Gap", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToTopGapAction(action) - }), - UIAction(title: "First Replied Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstRepliedStatus(action) - }), - UIAction(title: "First Reblog Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstReblogStatus(action) - }), - UIAction(title: "First Poll Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstPollStatus(action) - }), - UIAction(title: "First Audio Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstAudioStatus(action) - }), - UIAction(title: "First Video Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstVideoStatus(action) - }), - UIAction(title: "First GIF status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstGIFStatus(action) - }), - ] - ) - } - - var dropMenu: UIMenu { - return UIMenu( - title: "Drop…", - image: UIImage(systemName: "minus.circle"), - identifier: nil, - options: [], - children: [10, 50, 100, 150, 200, 250, 300].map { count in - UIAction(title: "Drop Recent \(count) Statuses", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.dropRecentStatusAction(action, count: count) - }) - } - ) - } -} - -extension AsyncHomeTimelineViewController { - - @objc private func showFLEXAction(_ sender: UIAction) { - FLEXManager.shared.showExplorer() - } - - @objc private func moveToTopGapAction(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeMiddleLoader: return true - default: return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - } - } - - @objc private func moveToFirstReblogStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - return homeTimelineIndex.status.reblog != nil - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found reblog status") - } - } - - @objc private func moveToFirstPollStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - let post = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status - return post.poll != nil - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found poll status") - } - } - - @objc private func moveToFirstRepliedStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - guard homeTimelineIndex.status.inReplyToID != nil else { - return false - } - return true - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found replied status") - } - } - - @objc private func moveToFirstAudioStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status - return status.mediaAttachments?.contains(where: { $0.type == .audio }) ?? false - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found audio status") - } - } - - @objc private func moveToFirstVideoStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status - return status.mediaAttachments?.contains(where: { $0.type == .video }) ?? false - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found video status") - } - } - - @objc private func moveToFirstGIFStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status - return status.mediaAttachments?.contains(where: { $0.type == .gifv }) ?? false - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found GIF status") - } - } - - @objc private func dropRecentStatusAction(_ sender: UIAction, count: Int) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - - let droppingObjectIDs = snapshotTransitioning.itemIdentifiers.prefix(count).compactMap { item -> NSManagedObjectID? in - switch item { - case .homeTimelineIndex(let objectID, _): return objectID - default: return nil - } - } - var droppingStatusObjectIDs: [NSManagedObjectID] = [] - context.apiService.backgroundManagedObjectContext.performChanges { [weak self] in - guard let self = self else { return } - for objectID in droppingObjectIDs { - guard let homeTimelineIndex = try? self.context.apiService.backgroundManagedObjectContext.existingObject(with: objectID) as? HomeTimelineIndex else { continue } - droppingStatusObjectIDs.append(homeTimelineIndex.status.objectID) - self.context.apiService.backgroundManagedObjectContext.delete(homeTimelineIndex) - } - } - .sink { [weak self] result in - guard let self = self else { return } - switch result { - case .success: - self.context.apiService.backgroundManagedObjectContext.performChanges { [weak self] in - guard let self = self else { return } - for objectID in droppingStatusObjectIDs { - guard let post = try? self.context.apiService.backgroundManagedObjectContext.existingObject(with: objectID) as? Status else { continue } - self.context.apiService.backgroundManagedObjectContext.delete(post) - } - } - .sink { _ in - // do nothing - } - .store(in: &self.disposeBag) - case .failure(let error): - assertionFailure(error.localizedDescription) - } - } - .store(in: &disposeBag) - } - - @objc private func showWelcomeAction(_ sender: UIAction) { - coordinator.present(scene: .welcome, from: self, transition: .modal(animated: true, completion: nil)) - } - - @objc private func showPublicTimelineAction(_ sender: UIAction) { - coordinator.present(scene: .publicTimeline, from: self, transition: .show) - } - - @objc private func showProfileAction(_ sender: UIAction) { - let alertController = UIAlertController(title: "Enter User ID", message: nil, preferredStyle: .alert) - alertController.addTextField() - let showAction = UIAlertAction(title: "Show", style: .default) { [weak self, weak alertController] _ in - guard let self = self else { return } - guard let textField = alertController?.textFields?.first else { return } - let profileViewModel = RemoteProfileViewModel(context: self.context, userID: textField.text ?? "") - self.coordinator.present(scene: .profile(viewModel: profileViewModel), from: self, transition: .show) - } - alertController.addAction(showAction) - let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) - alertController.addAction(cancelAction) - coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) - } - - @objc private func showThreadAction(_ sender: UIAction) { - let alertController = UIAlertController(title: "Enter Status ID", message: nil, preferredStyle: .alert) - alertController.addTextField() - let showAction = UIAlertAction(title: "Show", style: .default) { [weak self, weak alertController] _ in - guard let self = self else { return } - guard let textField = alertController?.textFields?.first else { return } - let threadViewModel = RemoteThreadViewModel(context: self.context, statusID: textField.text ?? "") - self.coordinator.present(scene: .thread(viewModel: threadViewModel), from: self, transition: .show) - } - alertController.addAction(showAction) - let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) - alertController.addAction(cancelAction) - coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) - } - - @objc private func showSettings(_ sender: UIAction) { - guard let currentSetting = context.settingService.currentSetting.value else { return } - let settingsViewModel = SettingsViewModel(context: context, setting: currentSetting) - coordinator.present( - scene: .settings(viewModel: settingsViewModel), - from: self, - transition: .modal(animated: true, completion: nil) - ) - } - - @objc func signOutAction(_ sender: UIAction) { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { - return - } - - context.authenticationService.signOutMastodonUser( - domain: activeMastodonAuthenticationBox.domain, - userID: activeMastodonAuthenticationBox.userID - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] result in - guard let self = self else { return } - switch result { - case .failure(let error): - assertionFailure(error.localizedDescription) - case .success(let isSignOut): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: sign out %s", ((#file as NSString).lastPathComponent), #line, #function, isSignOut ? "success" : "fail") - guard isSignOut else { return } - self.coordinator.setup() - self.coordinator.setupOnboardingIfNeeds(animated: true) - } - } - .store(in: &disposeBag) - } -} - -#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+Provider.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+Provider.swift deleted file mode 100644 index 5f97ebead..000000000 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+Provider.swift +++ /dev/null @@ -1,123 +0,0 @@ -// -// AsyncHomeTimelineViewController+Provider.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-6-21. -// - -#if ASDK - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack -import AsyncDisplayKit - -// MARK: - StatusProvider -extension AsyncHomeTimelineViewController: StatusProvider { - - func status() -> Future { - return Future { promise in promise(.success(nil)) } - } - - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future { - return Future { promise in - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - switch item { - case .homeTimelineIndex(let objectID, _): - let managedObjectContext = self.viewModel.fetchedResultsController.managedObjectContext - managedObjectContext.perform { - let timelineIndex = managedObjectContext.object(with: objectID) as? HomeTimelineIndex - promise(.success(timelineIndex?.status)) - } - default: - promise(.success(nil)) - } - } - } - - func status(for cell: UICollectionViewCell) -> Future { - return Future { promise in promise(.success(nil)) } - } - - var managedObjectContext: NSManagedObjectContext { - return viewModel.fetchedResultsController.managedObjectContext - } - - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { - return nil - } - - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return nil - } - - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - return nil - } - - return item - } - - func items(indexPaths: [IndexPath]) -> [Item] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return [] - } - - var items: [Item] = [] - for indexPath in indexPaths { - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { continue } - items.append(item) - } - return items - } - - func status(node: ASCellNode?, indexPath: IndexPath?) -> Status? { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return nil - } - - guard let indexPath = indexPath ?? node.flatMap({ self.node.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - return nil - } - - switch item { - case .homeTimelineIndex(let objectID, _): - guard let homeTimelineIndex = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? HomeTimelineIndex else { - assertionFailure() - return nil - } - return homeTimelineIndex.status - default: - return nil - } - } - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return [] } - let items = indexPaths.compactMap { diffableDataSource.itemIdentifier(for: $0)?.statusObjectItem } - return items - } - -} - -extension AsyncHomeTimelineViewController: UserProvider {} - -#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController.swift deleted file mode 100644 index c90b703e5..000000000 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController.swift +++ /dev/null @@ -1,573 +0,0 @@ -// -// AsyncHomeTimelineViewController.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-6-21. -// - -#if ASDK - -import os.log -import UIKit -import AVKit -import Combine -import CoreData -import CoreDataStack -import GameplayKit -import MastodonSDK -import AlamofireImage -import AsyncDisplayKit - -final class AsyncHomeTimelineViewController: ASDKViewController, NeedsDependency, MediaPreviewableViewController { - - weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } - weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } - - var disposeBag = Set() - private(set) lazy var viewModel = AsyncHomeTimelineViewModel(context: context) - - let mediaPreviewTransitionController = MediaPreviewTransitionController() - - lazy var emptyView: UIStackView = { - let emptyView = UIStackView() - emptyView.axis = .vertical - emptyView.distribution = .fill - emptyView.layoutMargins = UIEdgeInsets(top: 0, left: 20, bottom: 54, right: 20) - emptyView.isLayoutMarginsRelativeArrangement = true - return emptyView - }() - - let titleView = HomeTimelineNavigationBarTitleView() - - let settingBarButtonItem: UIBarButtonItem = { - let barButtonItem = UIBarButtonItem() - barButtonItem.tintColor = Asset.Colors.brandBlue.color - barButtonItem.image = UIImage(systemName: "gear")?.withRenderingMode(.alwaysTemplate) - return barButtonItem - }() - - let composeBarButtonItem: UIBarButtonItem = { - let barButtonItem = UIBarButtonItem() - barButtonItem.tintColor = Asset.Colors.brandBlue.color - barButtonItem.image = UIImage(systemName: "square.and.pencil")?.withRenderingMode(.alwaysTemplate) - return barButtonItem - }() - - var tableView: UITableView { node.view } - - let publishProgressView: UIProgressView = { - let progressView = UIProgressView(progressViewStyle: .bar) - progressView.alpha = 0 - return progressView - }() - - let refreshControl = UIRefreshControl() - - - override init() { - super.init(node: ASTableNode()) - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - deinit { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s:", ((#file as NSString).lastPathComponent), #line, #function) - } - -} - -extension AsyncHomeTimelineViewController { - - override func viewDidLoad() { - super.viewDidLoad() - - node.allowsSelection = true - - title = L10n.Scene.HomeTimeline.title - view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor - navigationItem.leftBarButtonItem = settingBarButtonItem - navigationItem.titleView = titleView - titleView.delegate = self - - viewModel.homeTimelineNavigationBarTitleViewModel.state - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak self] state in - guard let self = self else { return } - self.titleView.configure(state: state) - } - .store(in: &disposeBag) - - #if DEBUG - // long press to trigger debug menu - settingBarButtonItem.menu = debugMenu - #else - settingBarButtonItem.target = self - settingBarButtonItem.action = #selector(AsyncHomeTimelineViewController.settingBarButtonItemPressed(_:)) - #endif - - navigationItem.rightBarButtonItem = composeBarButtonItem - composeBarButtonItem.target = self - composeBarButtonItem.action = #selector(AsyncHomeTimelineViewController.composeBarButtonItemPressed(_:)) - - node.view.refreshControl = refreshControl - refreshControl.addTarget(self, action: #selector(AsyncHomeTimelineViewController.refreshControlValueChanged(_:)), for: .valueChanged) -// -// tableView.translatesAutoresizingMaskIntoConstraints = false -// view.addSubview(tableView) -// NSLayoutConstraint.activate([ -// tableView.topAnchor.constraint(equalTo: view.topAnchor), -// tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), -// tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), -// tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), -// ]) -// -// publishProgressView.translatesAutoresizingMaskIntoConstraints = false -// view.addSubview(publishProgressView) -// NSLayoutConstraint.activate([ -// publishProgressView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor), -// publishProgressView.leadingAnchor.constraint(equalTo: view.leadingAnchor), -// publishProgressView.trailingAnchor.constraint(equalTo: view.trailingAnchor), -// ]) -// -// viewModel.tableView = tableView - viewModel.tableNode = node - viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self - node.delegate = self - viewModel.setupDiffableDataSource( - tableNode: node, - dependency: self, - statusTableViewCellDelegate: self, - timelineMiddleLoaderTableViewCellDelegate: self - ) - - -// tableView.delegate = self -// tableView.prefetchDataSource = self - - // bind refresh control - viewModel.isFetchingLatestTimeline - .receive(on: DispatchQueue.main) - .sink { [weak self] isFetching in - guard let self = self else { return } - if !isFetching { - UIView.animate(withDuration: 0.5) { [weak self] in - guard let self = self else { return } - self.refreshControl.endRefreshing() - } completion: { _ in } - } - } - .store(in: &disposeBag) - -// viewModel.homeTimelineNavigationBarTitleViewModel.publishingProgress -// .receive(on: DispatchQueue.main) -// .sink { [weak self] progress in -// guard let self = self else { return } -// guard progress > 0 else { -// let dismissAnimator = UIViewPropertyAnimator(duration: 0.1, curve: .easeInOut) -// dismissAnimator.addAnimations { -// self.publishProgressView.alpha = 0 -// } -// dismissAnimator.addCompletion { _ in -// self.publishProgressView.setProgress(0, animated: false) -// } -// dismissAnimator.startAnimation() -// return -// } -// if self.publishProgressView.alpha == 0 { -// let progressAnimator = UIViewPropertyAnimator(duration: 0.1, curve: .easeOut) -// progressAnimator.addAnimations { -// self.publishProgressView.alpha = 1 -// } -// progressAnimator.startAnimation() -// } -// -// self.publishProgressView.setProgress(progress, animated: true) -// } -// .store(in: &disposeBag) -// -// viewModel.timelineIsEmpty -// .receive(on: DispatchQueue.main) -// .sink { [weak self] isEmpty in -// if isEmpty { -// self?.showEmptyView() -// } else { -// self?.emptyView.removeFromSuperview() -// } -// } -// .store(in: &disposeBag) - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - -// aspectViewWillAppear(animated) -// -// // needs trigger manually after onboarding dismiss -// setNeedsStatusBarAppearanceUpdate() -// -// if (viewModel.fetchedResultsController.fetchedObjects ?? []).isEmpty { -// viewModel.loadLatestStateMachine.enter(HomeTimelineViewModel.LoadLatestState.Loading.self) -// } - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - -// viewModel.viewDidAppear.send() -// -// DispatchQueue.main.async { [weak self] in -// guard let self = self else { return } -// if (self.viewModel.fetchedResultsController.fetchedObjects ?? []).count == 0 { -// self.viewModel.loadLatestStateMachine.enter(HomeTimelineViewModel.LoadLatestState.Loading.self) -// } -// } - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - -// aspectViewDidDisappear(animated) - } - - override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { - super.viewWillTransition(to: size, with: coordinator) - -// coordinator.animate { _ in -// // do nothing -// } completion: { _ in -// // fix AutoLayout cell height not update after rotate issue -// self.viewModel.cellFrameCache.removeAllObjects() -// self.tableView.reloadData() -// } - } -} - -extension AsyncHomeTimelineViewController { - func showEmptyView() { - if emptyView.superview != nil { - return - } - view.addSubview(emptyView) - emptyView.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - emptyView.leadingAnchor.constraint(equalTo: view.readableContentGuide.leadingAnchor), - emptyView.trailingAnchor.constraint(equalTo: view.readableContentGuide.trailingAnchor), - emptyView.bottomAnchor.constraint(equalTo: view.readableContentGuide.bottomAnchor) - ]) - - if emptyView.arrangedSubviews.count > 0 { - return - } - let findPeopleButton: PrimaryActionButton = { - let button = PrimaryActionButton() - button.setTitle(L10n.Common.Controls.Actions.findPeople, for: .normal) - button.addTarget(self, action: #selector(AsyncHomeTimelineViewController.findPeopleButtonPressed(_:)), for: .touchUpInside) - return button - }() - NSLayoutConstraint.activate([ - findPeopleButton.heightAnchor.constraint(equalToConstant: 46) - ]) - - let manuallySearchButton: HighlightDimmableButton = { - let button = HighlightDimmableButton() - button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)) - button.setTitle(L10n.Common.Controls.Actions.manuallySearch, for: .normal) - button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) - button.addTarget(self, action: #selector(AsyncHomeTimelineViewController.manuallySearchButtonPressed(_:)), for: .touchUpInside) - return button - }() - - emptyView.addArrangedSubview(findPeopleButton) - emptyView.setCustomSpacing(17, after: findPeopleButton) - emptyView.addArrangedSubview(manuallySearchButton) - - } -} - -extension AsyncHomeTimelineViewController { - - @objc private func findPeopleButtonPressed(_ sender: PrimaryActionButton) { - let viewModel = SuggestionAccountViewModel(context: context) - viewModel.delegate = self.viewModel - coordinator.present(scene: .suggestionAccount(viewModel: viewModel), from: self, transition: .modal(animated: true, completion: nil)) - } - - @objc private func manuallySearchButtonPressed(_ sender: UIButton) { - coordinator.switchToTabBar(tab: .search) - } - - @objc private func settingBarButtonItemPressed(_ sender: UIBarButtonItem) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - guard let setting = context.settingService.currentSetting.value else { return } - let settingsViewModel = SettingsViewModel(context: context, setting: setting) - coordinator.present(scene: .settings(viewModel: settingsViewModel), from: self, transition: .modal(animated: true, completion: nil)) - } - - @objc private func composeBarButtonItemPressed(_ sender: UIBarButtonItem) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - let composeViewModel = ComposeViewModel(context: context, composeKind: .post) - coordinator.present(scene: .compose(viewModel: composeViewModel), from: self, transition: .modal(animated: true, completion: nil)) - } - - @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { - guard viewModel.loadLatestStateMachine.enter(HomeTimelineViewModel.LoadLatestState.Loading.self) else { - sender.endRefreshing() - return - } - } - -} - -// MARK: - StatusTableViewControllerAspect -//extension AsyncHomeTimelineViewController: StatusTableViewControllerAspect { } - -//extension AsyncHomeTimelineViewController: TableViewCellHeightCacheableContainer { -// var cellFrameCache: NSCache { return viewModel.cellFrameCache } -//} - -// MARK: - UIScrollViewDelegate -extension AsyncHomeTimelineViewController { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - - //aspectScrollViewDidScroll(scrollView) - viewModel.homeTimelineNavigationBarTitleViewModel.handleScrollViewDidScroll(scrollView) - } -} - -//extension AsyncHomeTimelineViewController: LoadMoreConfigurableTableViewContainer { -// typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell -// typealias LoadingState = HomeTimelineViewModel.LoadOldestState.Loading -// var loadMoreConfigurableTableView: UITableView { return tableView } -// var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadOldestStateMachine } -//} - -// MARK: - UITableViewDelegate -//extension AsyncHomeTimelineViewController: UITableViewDelegate { -// -// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { -// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didSelectRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { -// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) -// } -// -// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { -// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) -// } -// -//} - -// MARK: - UITableViewDataSourcePrefetching -//extension AsyncHomeTimelineViewController: UITableViewDataSourcePrefetching { -// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { -// aspectTableView(tableView, prefetchRowsAt: indexPaths) -// } -//} - -// MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate -extension AsyncHomeTimelineViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { - func navigationBar() -> UINavigationBar? { - return navigationController?.navigationBar - } -} - -// MARK: - TimelineMiddleLoaderTableViewCellDelegate -extension AsyncHomeTimelineViewController: TimelineMiddleLoaderTableViewCellDelegate { - func configure(cell: TimelineMiddleLoaderTableViewCell, upperTimelineStatusID: String?, timelineIndexobjectID: NSManagedObjectID?) { - guard let upperTimelineIndexObjectID = timelineIndexobjectID else { - return - } - viewModel.loadMiddleSateMachineList - .receive(on: DispatchQueue.main) - .sink { [weak self] ids in - guard let _ = self else { return } - if let stateMachine = ids[upperTimelineIndexObjectID] { - guard let state = stateMachine.currentState else { - assertionFailure() - return - } - - // make success state same as loading due to snapshot updating delay - let isLoading = state is HomeTimelineViewModel.LoadMiddleState.Loading || state is HomeTimelineViewModel.LoadMiddleState.Success - if isLoading { - cell.startAnimating() - } else { - cell.stopAnimating() - } - } else { - cell.stopAnimating() - } - } - .store(in: &cell.disposeBag) - - var dict = viewModel.loadMiddleSateMachineList.value - if let _ = dict[upperTimelineIndexObjectID] { - // do nothing - } else { - let stateMachine = GKStateMachine(states: [ - AsyncHomeTimelineViewModel.LoadMiddleState.Initial(viewModel: viewModel, upperTimelineIndexObjectID: upperTimelineIndexObjectID), - AsyncHomeTimelineViewModel.LoadMiddleState.Loading(viewModel: viewModel, upperTimelineIndexObjectID: upperTimelineIndexObjectID), - AsyncHomeTimelineViewModel.LoadMiddleState.Fail(viewModel: viewModel, upperTimelineIndexObjectID: upperTimelineIndexObjectID), - AsyncHomeTimelineViewModel.LoadMiddleState.Success(viewModel: viewModel, upperTimelineIndexObjectID: upperTimelineIndexObjectID), - ]) - stateMachine.enter(HomeTimelineViewModel.LoadMiddleState.Initial.self) - dict[upperTimelineIndexObjectID] = stateMachine - viewModel.loadMiddleSateMachineList.value = dict - } - } - - func timelineMiddleLoaderTableViewCell(_ cell: TimelineMiddleLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let indexPath = tableView.indexPath(for: cell) else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - - switch item { - case .homeMiddleLoader(let upper): - guard let stateMachine = viewModel.loadMiddleSateMachineList.value[upper] else { - assertionFailure() - return - } - stateMachine.enter(HomeTimelineViewModel.LoadMiddleState.Loading.self) - default: - assertionFailure() - } - } -} - -// MARK: - ScrollViewContainer -extension AsyncHomeTimelineViewController: ScrollViewContainer { - - var scrollView: UIScrollView { return tableView } - - func scrollToTop(animated: Bool) { - if scrollView.contentOffset.y < scrollView.frame.height, - viewModel.loadLatestStateMachine.canEnterState(HomeTimelineViewModel.LoadLatestState.Loading.self), - (scrollView.contentOffset.y + scrollView.adjustedContentInset.top) == 0.0, - !refreshControl.isRefreshing { - scrollView.scrollRectToVisible(CGRect(origin: CGPoint(x: 0, y: -refreshControl.frame.height), size: CGSize(width: 1, height: 1)), animated: animated) - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - self.refreshControl.beginRefreshing() - self.refreshControl.sendActions(for: .valueChanged) - } - } else { - let indexPath = IndexPath(row: 0, section: 0) - guard viewModel.diffableDataSource?.itemIdentifier(for: indexPath) != nil else { return } - node.scrollToRow(at: indexPath, at: .top, animated: true) - } - } - -} - -// MARK: - AVPlayerViewControllerDelegate -extension AsyncHomeTimelineViewController: AVPlayerViewControllerDelegate { - - func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } - - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } - -} - -// MARK: - StatusTableViewCellDelegate -extension AsyncHomeTimelineViewController: StatusTableViewCellDelegate { - weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } - func parent() -> UIViewController { return self } -} - -// MARK: - HomeTimelineNavigationBarTitleViewDelegate -extension AsyncHomeTimelineViewController: HomeTimelineNavigationBarTitleViewDelegate { - func homeTimelineNavigationBarTitleView(_ titleView: HomeTimelineNavigationBarTitleView, logoButtonDidPressed sender: UIButton) { - scrollToTop(animated: true) - } - - func homeTimelineNavigationBarTitleView(_ titleView: HomeTimelineNavigationBarTitleView, buttonDidPressed sender: UIButton) { - switch titleView.state { - case .newPostButton: - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let indexPath = IndexPath(row: 0, section: 0) - guard diffableDataSource.itemIdentifier(for: indexPath) != nil else { return } - node.scrollToRow(at: indexPath, at: .top, animated: true) - case .offlineButton: - // TODO: retry - break - case .publishedButton: - break - default: - break - } - } -} - -extension AsyncHomeTimelineViewController { - override var keyCommands: [UIKeyCommand]? { - return navigationKeyCommands + statusNavigationKeyCommands - } -} - -// MARK: - StatusTableViewControllerNavigateable -extension AsyncHomeTimelineViewController: StatusTableViewControllerNavigateable { - @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - navigateKeyCommandHandler(sender) - } - - @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - statusKeyCommandHandler(sender) - } -} - - -// MARK: - ASTableDelegate -extension AsyncHomeTimelineViewController: ASTableDelegate { - func shouldBatchFetch(for tableNode: ASTableNode) -> Bool { - switch viewModel.loadLatestStateMachine.currentState { - case is HomeTimelineViewModel.LoadOldestState.NoMore: - return false - default: - return true - } - } - - func tableNode(_ tableNode: ASTableNode, willBeginBatchFetchWith context: ASBatchContext) { - viewModel.loadLatestStateMachine.enter(HomeTimelineViewModel.LoadOldestState.Loading.self) - context.completeBatchFetching(true) - } - - func tableNode(_ tableNode: ASTableNode, willDisplayRowWith node: ASCellNode) { - if let statusNode = node as? StatusNode { - statusNode.delegate = self - } - } -} - -// MARK: - StatusNodeDelegate -extension AsyncHomeTimelineViewController: StatusNodeDelegate { } - -#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+Diffable.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+Diffable.swift deleted file mode 100644 index 7799c2163..000000000 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+Diffable.swift +++ /dev/null @@ -1,159 +0,0 @@ -// -// AsyncHomeTimelineViewModel+Diffable.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-6-21. -// - -#if ASDK - -import os.log -import UIKit -import CoreData -import CoreDataStack -import AsyncDisplayKit -import DifferenceKit -import DiffableDataSources - -extension AsyncHomeTimelineViewModel { - - func setupDiffableDataSource( - tableNode: ASTableNode, - dependency: NeedsDependency, - statusTableViewCellDelegate: StatusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate - ) { - tableNode.automaticallyAdjustsContentOffset = true - - diffableDataSource = StatusSection.tableNodeDiffableDataSource( - tableNode: tableNode, - managedObjectContext: fetchedResultsController.managedObjectContext - ) - - var snapshot = DiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - diffableDataSource?.apply(snapshot) - } - -} - -// MARK: - NSFetchedResultsControllerDelegate -extension AsyncHomeTimelineViewModel: NSFetchedResultsControllerDelegate { - - func controllerWillChangeContent(_ controller: NSFetchedResultsController) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - } - - func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - - guard let diffableDataSource = self.diffableDataSource else { return } - let oldSnapshot = diffableDataSource.snapshot() - - let predicate = fetchedResultsController.fetchRequest.predicate - let parentManagedObjectContext = fetchedResultsController.managedObjectContext - let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) - managedObjectContext.parent = parentManagedObjectContext - - managedObjectContext.perform { - var shouldAddBottomLoader = false - - let timelineIndexes: [HomeTimelineIndex] = { - let request = HomeTimelineIndex.sortedFetchRequest - request.returnsObjectsAsFaults = false - request.predicate = predicate - do { - return try managedObjectContext.fetch(request) - } catch { - assertionFailure(error.localizedDescription) - return [] - } - }() - - // that's will be the most fastest fetch because of upstream just update and no modify needs consider - - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] - - for item in oldSnapshot.itemIdentifiers { - guard case let .homeTimelineIndex(objectID, attribute) = item else { continue } - oldSnapshotAttributeDict[objectID] = attribute - } - - var newTimelineItems: [Item] = [] - - for (i, timelineIndex) in timelineIndexes.enumerated() { - let attribute = oldSnapshotAttributeDict[timelineIndex.objectID] ?? Item.StatusAttribute() - attribute.isSeparatorLineHidden = false - - // append new item into snapshot - newTimelineItems.append(.homeTimelineIndex(objectID: timelineIndex.objectID, attribute: attribute)) - - let isLast = i == timelineIndexes.count - 1 - switch (isLast, timelineIndex.hasMore) { - case (false, true): - newTimelineItems.append(.homeMiddleLoader(upperTimelineIndexAnchorObjectID: timelineIndex.objectID)) - attribute.isSeparatorLineHidden = true - case (true, true): - shouldAddBottomLoader = true - default: - break - } - } // end for - - var newSnapshot = DiffableDataSourceSnapshot() - newSnapshot.appendSections([.main]) - newSnapshot.appendItems(newTimelineItems, toSection: .main) - - let endSnapshot = CACurrentMediaTime() - - if shouldAddBottomLoader, !(self.loadLatestStateMachine.currentState is LoadOldestState.NoMore) { - newSnapshot.appendItems([.bottomLoader], toSection: .main) - } - - diffableDataSource.apply(newSnapshot, animatingDifferences: false) { - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - self.isFetchingLatestTimeline.value = false - } - - let end = CACurrentMediaTime() - os_log("%{public}s[%{public}ld], %{public}s: calculate home timeline layout cost %.2fs", ((#file as NSString).lastPathComponent), #line, #function, end - endSnapshot) - } - } // end perform - } - - private struct Difference { - let item: T - let sourceIndexPath: IndexPath - let targetIndexPath: IndexPath - let offset: CGFloat - } - - private func calculateReloadSnapshotDifference( - navigationBar: UINavigationBar, - tableView: UITableView, - oldSnapshot: DiffableDataSourceSnapshot, - newSnapshot: DiffableDataSourceSnapshot - ) -> Difference? { - guard oldSnapshot.numberOfItems != 0 else { return nil } - - // old snapshot not empty. set source index path to first item if not match - let sourceIndexPath = UIViewController.topVisibleTableViewCellIndexPath(in: tableView, navigationBar: navigationBar) ?? IndexPath(row: 0, section: 0) - - guard sourceIndexPath.row < oldSnapshot.itemIdentifiers(inSection: .main).count else { return nil } - - let timelineItem = oldSnapshot.itemIdentifiers(inSection: .main)[sourceIndexPath.row] - guard let itemIndex = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: timelineItem) else { return nil } - let targetIndexPath = IndexPath(row: itemIndex, section: 0) - - let offset = UIViewController.tableViewCellOriginOffsetToWindowTop(in: tableView, at: sourceIndexPath, navigationBar: navigationBar) - return Difference( - item: timelineItem, - sourceIndexPath: sourceIndexPath, - targetIndexPath: targetIndexPath, - offset: offset - ) - } - -} - -#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadLatestState.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadLatestState.swift deleted file mode 100644 index 4d73eae5a..000000000 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadLatestState.swift +++ /dev/null @@ -1,134 +0,0 @@ -// -// AsyncHomeTimelineViewModel+LoadLatestState.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-6-21. -// -// - -#if ASDK - -import os.log -import func QuartzCore.CACurrentMediaTime -import Foundation -import CoreData -import CoreDataStack -import GameplayKit - -extension AsyncHomeTimelineViewModel { - class LoadLatestState: GKState { - weak var viewModel: AsyncHomeTimelineViewModel? - - init(viewModel: AsyncHomeTimelineViewModel) { - self.viewModel = viewModel - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) - viewModel?.loadLatestStateMachinePublisher.send(self) - } - } -} - -extension AsyncHomeTimelineViewModel.LoadLatestState { - class Initial: AsyncHomeTimelineViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self - } - } - - class Loading: AsyncHomeTimelineViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Fail.self || stateClass == Idle.self - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - // sign out when loading will enter here - stateMachine.enter(Fail.self) - return - } - - let predicate = viewModel.fetchedResultsController.fetchRequest.predicate - let parentManagedObjectContext = viewModel.fetchedResultsController.managedObjectContext - let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) - managedObjectContext.parent = parentManagedObjectContext - - managedObjectContext.perform { - let start = CACurrentMediaTime() - let latestStatusIDs: [Status.ID] - let request = HomeTimelineIndex.sortedFetchRequest - request.returnsObjectsAsFaults = false - request.predicate = predicate - - do { - let timelineIndexes = try managedObjectContext.fetch(request) - let endFetch = CACurrentMediaTime() - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: collect timelineIndexes cost: %.2fs", ((#file as NSString).lastPathComponent), #line, #function, endFetch - start) - latestStatusIDs = timelineIndexes - .prefix(APIService.onceRequestStatusMaxCount) // avoid performance issue - .compactMap { timelineIndex in - timelineIndex.value(forKeyPath: #keyPath(HomeTimelineIndex.status.id)) as? Status.ID - } - } catch { - stateMachine.enter(Fail.self) - return - } - - let end = CACurrentMediaTime() - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: collect statuses id cost: %.2fs", ((#file as NSString).lastPathComponent), #line, #function, end - start) - - // TODO: only set large count when using Wi-Fi - viewModel.context.apiService.homeTimeline(domain: activeMastodonAuthenticationBox.domain, authorizationBox: activeMastodonAuthenticationBox) - .receive(on: DispatchQueue.main) - .sink { completion in - viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(completion) - switch completion { - case .failure(let error): - // TODO: handle error - viewModel.isFetchingLatestTimeline.value = false - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch statuses failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break - } - - stateMachine.enter(Idle.self) - - } receiveValue: { response in - // stop refresher if no new statuses - let statuses = response.value - let newStatuses = statuses.filter { !latestStatusIDs.contains($0.id) } - os_log("%{public}s[%{public}ld], %{public}s: load %{public}ld new statuses", ((#file as NSString).lastPathComponent), #line, #function, newStatuses.count) - - if newStatuses.isEmpty { - viewModel.isFetchingLatestTimeline.value = false - } else { - if !latestStatusIDs.isEmpty { - viewModel.homeTimelineNavigationBarTitleViewModel.newPostsIncoming() - } - } - viewModel.timelineIsEmpty.value = latestStatusIDs.isEmpty && statuses.isEmpty - } - .store(in: &viewModel.disposeBag) - } - } - } - - class Fail: AsyncHomeTimelineViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self || stateClass == Idle.self - } - } - - class Idle: AsyncHomeTimelineViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self - } - } - -} - -#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadMiddleState.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadMiddleState.swift deleted file mode 100644 index f568a6aaa..000000000 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadMiddleState.swift +++ /dev/null @@ -1,112 +0,0 @@ -// -// AsyncHomeTimelineViewModel+LoadMiddleState.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-6-21. -// - -#if ASDK - -import os.log -import Foundation -import GameplayKit -import CoreData -import CoreDataStack - -extension AsyncHomeTimelineViewModel { - class LoadMiddleState: GKState { - weak var viewModel: AsyncHomeTimelineViewModel? - let upperTimelineIndexObjectID: NSManagedObjectID - - init(viewModel: AsyncHomeTimelineViewModel, upperTimelineIndexObjectID: NSManagedObjectID) { - self.viewModel = viewModel - self.upperTimelineIndexObjectID = upperTimelineIndexObjectID - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - var dict = viewModel.loadMiddleSateMachineList.value - dict[upperTimelineIndexObjectID] = stateMachine - viewModel.loadMiddleSateMachineList.value = dict // trigger value change - } - } -} - -extension AsyncHomeTimelineViewModel.LoadMiddleState { - - class Initial: AsyncHomeTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self - } - } - - class Loading: AsyncHomeTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return stateClass == Success.self || stateClass == Fail.self - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - stateMachine.enter(Fail.self) - return - } - - guard let timelineIndex = (viewModel.fetchedResultsController.fetchedObjects ?? []).first(where: { $0.objectID == upperTimelineIndexObjectID }) else { - stateMachine.enter(Fail.self) - return - } - let statusIDs = (viewModel.fetchedResultsController.fetchedObjects ?? []).compactMap { timelineIndex in - timelineIndex.status.id - } - - // TODO: only set large count when using Wi-Fi - let maxID = timelineIndex.status.id - viewModel.context.apiService.homeTimeline(domain: activeMastodonAuthenticationBox.domain,maxID: maxID, authorizationBox: activeMastodonAuthenticationBox) - .delay(for: .seconds(1), scheduler: DispatchQueue.main) - .receive(on: DispatchQueue.main) - .sink { completion in - viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(completion) - switch completion { - case .failure(let error): - // TODO: handle error - os_log("%{public}s[%{public}ld], %{public}s: fetch statuses failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break - } - } receiveValue: { response in - let statuses = response.value - let newStatuses = statuses.filter { !statusIDs.contains($0.id) } - os_log("%{public}s[%{public}ld], %{public}s: load %{public}ld statuses, %{public}%ld new statuses", ((#file as NSString).lastPathComponent), #line, #function, statuses.count, newStatuses.count) - if newStatuses.isEmpty { - stateMachine.enter(Fail.self) - } else { - stateMachine.enter(Success.self) - } - } - .store(in: &viewModel.disposeBag) - } - } - - class Fail: AsyncHomeTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return stateClass == Loading.self - } - } - - class Success: AsyncHomeTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return false - } - } - -} - -#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadOldestState.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadOldestState.swift deleted file mode 100644 index 5743ab292..000000000 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadOldestState.swift +++ /dev/null @@ -1,117 +0,0 @@ -// -// AsyncHomeTimelineViewModel+LoadOldestState.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-6-21. -// - -#if ASDK - -import os.log -import Foundation -import GameplayKit - -extension AsyncHomeTimelineViewModel { - class LoadOldestState: GKState { - weak var viewModel: AsyncHomeTimelineViewModel? - - init(viewModel: AsyncHomeTimelineViewModel) { - self.viewModel = viewModel - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) - viewModel?.loadOldestStateMachinePublisher.send(self) - } - } -} - -extension AsyncHomeTimelineViewModel.LoadOldestState { - class Initial: AsyncHomeTimelineViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - guard let viewModel = viewModel else { return false } - guard !(viewModel.fetchedResultsController.fetchedObjects ?? []).isEmpty else { return false } - return stateClass == Loading.self - } - } - - class Loading: AsyncHomeTimelineViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Fail.self || stateClass == Idle.self || stateClass == NoMore.self - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - assertionFailure() - stateMachine.enter(Fail.self) - return - } - - guard let last = viewModel.fetchedResultsController.fetchedObjects?.last else { - stateMachine.enter(Idle.self) - return - } - - // TODO: only set large count when using Wi-Fi - let maxID = last.status.id - viewModel.context.apiService.homeTimeline(domain: activeMastodonAuthenticationBox.domain, maxID: maxID, authorizationBox: activeMastodonAuthenticationBox) - .delay(for: .seconds(1), scheduler: DispatchQueue.main) - .receive(on: DispatchQueue.main) - .sink { completion in - viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(completion) - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: fetch statuses failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break - } - } receiveValue: { response in - let statuses = response.value - // enter no more state when no new statuses - if statuses.isEmpty || (statuses.count == 1 && statuses[0].id == maxID) { - stateMachine.enter(NoMore.self) - } else { - stateMachine.enter(Idle.self) - } - } - .store(in: &viewModel.disposeBag) - } - } - - class Fail: AsyncHomeTimelineViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self || stateClass == Idle.self - } - } - - class Idle: AsyncHomeTimelineViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self - } - } - - class NoMore: AsyncHomeTimelineViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // reset state if needs - return stateClass == Idle.self - } - - override func didEnter(from previousState: GKState?) { - guard let viewModel = viewModel else { return } - guard let diffableDataSource = viewModel.diffableDataSource else { - assertionFailure() - return - } - DispatchQueue.main.async { - var snapshot = diffableDataSource.snapshot() - snapshot.deleteItems([.bottomLoader]) - diffableDataSource.apply(snapshot) - } - } - } -} - -#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel.swift deleted file mode 100644 index d7ed0b10d..000000000 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel.swift +++ /dev/null @@ -1,151 +0,0 @@ -// -// AsyncHomeTimelineViewModel.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-6-21. -// -// - -#if ASDK - -import os.log -import func AVFoundation.AVMakeRect -import UIKit -import AVKit -import Combine -import CoreData -import CoreDataStack -import GameplayKit -import AlamofireImage -import DateToolsSwift -import AsyncDisplayKit - -final class AsyncHomeTimelineViewModel: NSObject { - - var disposeBag = Set() - var observations = Set() - - // input - let context: AppContext - let timelinePredicate = CurrentValueSubject(nil) - let fetchedResultsController: NSFetchedResultsController - let isFetchingLatestTimeline = CurrentValueSubject(false) - let viewDidAppear = PassthroughSubject() - let homeTimelineNavigationBarTitleViewModel: HomeTimelineNavigationBarTitleViewModel - - weak var tableNode: ASTableNode? - weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? - //weak var tableView: UITableView? - weak var timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate? - - let timelineIsEmpty = CurrentValueSubject(false) - let homeTimelineNeedRefresh = PassthroughSubject() - - // output - var diffableDataSource: TableNodeDiffableDataSource? - - // top loader - private(set) lazy var loadLatestStateMachine: GKStateMachine = { - // exclude timeline middle fetcher state - let stateMachine = GKStateMachine(states: [ - LoadLatestState.Initial(viewModel: self), - LoadLatestState.Loading(viewModel: self), - LoadLatestState.Fail(viewModel: self), - LoadLatestState.Idle(viewModel: self), - ]) - stateMachine.enter(LoadLatestState.Initial.self) - return stateMachine - }() - lazy var loadLatestStateMachinePublisher = CurrentValueSubject(nil) - // bottom loader - private(set) lazy var loadOldestStateMachine: GKStateMachine = { - // exclude timeline middle fetcher state - let stateMachine = GKStateMachine(states: [ - LoadOldestState.Initial(viewModel: self), - LoadOldestState.Loading(viewModel: self), - LoadOldestState.Fail(viewModel: self), - LoadOldestState.Idle(viewModel: self), - LoadOldestState.NoMore(viewModel: self), - ]) - stateMachine.enter(LoadOldestState.Initial.self) - return stateMachine - }() - lazy var loadOldestStateMachinePublisher = CurrentValueSubject(nil) - // middle loader - let loadMiddleSateMachineList = CurrentValueSubject<[NSManagedObjectID: GKStateMachine], Never>([:]) // TimelineIndex.objectID : middle loading state machine - // var diffableDataSource: UITableViewDiffableDataSource? - var cellFrameCache = NSCache() - - - init(context: AppContext) { - self.context = context - self.fetchedResultsController = { - let fetchRequest = HomeTimelineIndex.sortedFetchRequest - fetchRequest.fetchBatchSize = 20 - fetchRequest.returnsObjectsAsFaults = false - fetchRequest.relationshipKeyPathsForPrefetching = [#keyPath(HomeTimelineIndex.status)] - let controller = NSFetchedResultsController( - fetchRequest: fetchRequest, - managedObjectContext: context.managedObjectContext, - sectionNameKeyPath: nil, - cacheName: nil - ) - - return controller - }() - self.homeTimelineNavigationBarTitleViewModel = HomeTimelineNavigationBarTitleViewModel(context: context) - super.init() - - fetchedResultsController.delegate = self - - timelinePredicate - .receive(on: DispatchQueue.main) - .compactMap { $0 } - .first() // set once - .sink { [weak self] predicate in - guard let self = self else { return } - self.fetchedResultsController.fetchRequest.predicate = predicate - do { - try self.fetchedResultsController.performFetch() - } catch { - assertionFailure(error.localizedDescription) - } - } - .store(in: &disposeBag) - - context.authenticationService.activeMastodonAuthentication - .sink { [weak self] activeMastodonAuthentication in - guard let self = self else { return } - guard let mastodonAuthentication = activeMastodonAuthentication else { return } - let activeMastodonUserID = mastodonAuthentication.userID - let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - HomeTimelineIndex.predicate(userID: activeMastodonUserID), - HomeTimelineIndex.notDeleted() - ]) - self.timelinePredicate.value = predicate - } - .store(in: &disposeBag) - - homeTimelineNeedRefresh - .sink { [weak self] _ in - self?.loadLatestStateMachine.enter(LoadLatestState.Loading.self) - } - .store(in: &disposeBag) - - homeTimelineNavigationBarTitleViewModel.isPublished - .sink { [weak self] isPublished in - guard let self = self else { return } - self.homeTimelineNeedRefresh.send() - } - .store(in: &disposeBag) - } - - deinit { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s:", ((#file as NSString).lastPathComponent), #line, #function) - } - -} - -extension AsyncHomeTimelineViewModel: SuggestionAccountViewModelDelegate { } - -#endif diff --git a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift index 4b803bc49..058a0fc3d 100644 --- a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift +++ b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift @@ -74,11 +74,7 @@ class MainTabBarController: UITabBarController { let viewController: UIViewController switch self { case .home: - #if ASDK - let _viewController: NeedsDependency & UIViewController = UserDefaults.shared.preferAsyncHomeTimeline ? AsyncHomeTimelineViewController() : HomeTimelineViewController() - #else let _viewController = HomeTimelineViewController() - #endif _viewController.context = context _viewController.coordinator = coordinator viewController = _viewController @@ -596,33 +592,3 @@ extension MainTabBarController { } } - -#if ASDK -extension MainTabBarController { - override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { - guard let event = event else { return } - switch event.subtype { - case .motionShake: - let alertController = UIAlertController(title: "ASDK Debug Panel", message: nil, preferredStyle: .alert) - let toggleHomeAction = UIAlertAction(title: "Toggle Home", style: .default) { [weak self] _ in - guard let self = self else { return } - MainTabBarController.toggleAsyncHome() - let okAlertController = UIAlertController(title: "Success", message: "Please restart the app", preferredStyle: .alert) - let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) - okAlertController.addAction(okAction) - self.coordinator.present(scene: .alertController(alertController: okAlertController), from: nil, transition: .alertController(animated: true, completion: nil)) - } - alertController.addAction(toggleHomeAction) - let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) - alertController.addAction(cancelAction) - self.coordinator.present(scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil)) - default: - break - } - } - - static func toggleAsyncHome() { - UserDefaults.shared.preferAsyncHomeTimeline.toggle() - } -} -#endif diff --git a/Mastodon/Scene/Share/View/Node/ASMetaEditableTextNode.swift b/Mastodon/Scene/Share/View/Node/ASMetaEditableTextNode.swift deleted file mode 100644 index e5037fdf6..000000000 --- a/Mastodon/Scene/Share/View/Node/ASMetaEditableTextNode.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// ASMetaEditableTextNode.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-6-20. -// - -#if ASDK - -import UIKit -import AsyncDisplayKit - -protocol ASMetaEditableTextNodeDelegate: AnyObject { - func metaEditableTextNode(_ textNode: ASMetaEditableTextNode, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool -} - -final class ASMetaEditableTextNode: ASEditableTextNode, UITextViewDelegate { - weak var metaEditableTextNodeDelegate: ASMetaEditableTextNodeDelegate? - - func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { - return metaEditableTextNodeDelegate?.metaEditableTextNode(self, shouldInteractWith: URL, in: characterRange, interaction: interaction) ?? false - } -} - -#endif diff --git a/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift b/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift deleted file mode 100644 index 170543482..000000000 --- a/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift +++ /dev/null @@ -1,234 +0,0 @@ -// -// StatusNNode.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-6-19. -// - -#if ASDK - -import UIKit -import Combine -import AsyncDisplayKit -import CoreDataStack -import func AVFoundation.AVMakeRect - -protocol StatusNodeDelegate: AnyObject { - //func statusNode(_ node: StatusNode, statusContentTextNode: ASMetaEditableTextNode, didSelectActiveEntityType type: ActiveEntityType) -} - -final class StatusNode: ASCellNode { - - var disposeBag = Set() - var timestamp: Date - var timestampSubscription: AnyCancellable? - - weak var delegate: StatusNodeDelegate? // needs assign on main queue - - static let avatarImageSize = CGSize(width: 42, height: 42) - static let avatarImageCornerRadius: CGFloat = 4 - -// static let statusContentAppearance: MastodonStatusContent.Appearance = { -// let linkAttributes: [NSAttributedString.Key: Any] = [ -// .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold)), -// .foregroundColor: Asset.Colors.brandBlue.color -// ] -// return MastodonStatusContent.Appearance( -// attributes: [ -// .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)), -// .foregroundColor: Asset.Colors.Label.primary.color -// ], -// urlAttributes: linkAttributes, -// hashtagAttributes: linkAttributes, -// mentionAttributes: linkAttributes -// ) -// }() - - let avatarImageNode: ASNetworkImageNode = { - let node = ASNetworkImageNode() - node.contentMode = .scaleAspectFill - node.defaultImage = UIImage.placeholder(color: .systemFill) - node.forcedSize = StatusNode.avatarImageSize - node.cornerRadius = StatusNode.avatarImageCornerRadius - // node.cornerRoundingType = .precomposited - // node.shouldRenderProgressImages = true - return node - }() - let nameTextNode = ASTextNode() - let nameDotTextNode = ASTextNode() - let dateTextNode = ASTextNode() - let usernameTextNode = ASTextNode() - let statusContentTextNode: ASMetaEditableTextNode = { - let node = ASMetaEditableTextNode() - node.scrollEnabled = false - return node - }() - - let mosaicImageViewModel: MosaicImageViewModel - let mediaMultiplexImageNodes: [ASMultiplexImageNode] - - init(status: Status) { - timestamp = (status.reblog ?? status).createdAt - let _mosaicImageViewModel: MosaicImageViewModel = { - let mediaAttachments = Array((status.reblog ?? status).mediaAttachments ?? []).sorted { $0.index.compare($1.index) == .orderedAscending } - return MosaicImageViewModel(mediaAttachments: mediaAttachments) - }() - mosaicImageViewModel = _mosaicImageViewModel - mediaMultiplexImageNodes = { - var imageNodes: [ASMultiplexImageNode] = [] - for _ in 0..<_mosaicImageViewModel.metas.count { - let imageNode = ASMultiplexImageNode() // TODO: adapt downloader - imageNode.downloadsIntermediateImages = true - imageNode.imageIdentifiers = ["url", "previewURL"].map { $0 as NSString } // quality in descending order - imageNodes.append(imageNode) - } - return imageNodes - }() - super.init() - - automaticallyManagesSubnodes = true - - if let url = (status.reblog ?? status).author.avatarImageURL() { - avatarImageNode.url = url - } - - nameTextNode.attributedText = NSAttributedString(string: status.author.displayNameWithFallback, attributes: [ - .foregroundColor: Asset.Colors.Label.primary.color, - .font: UIFont.systemFont(ofSize: 17, weight: .semibold) - ]) - nameDotTextNode.attributedText = NSAttributedString(string: "·", attributes: [ - .foregroundColor: Asset.Colors.Label.secondary.color, - .font: UIFont.systemFont(ofSize: 13, weight: .regular) - ]) - // set date - dateTextNode.attributedText = NSAttributedString(string: timestamp.localizedSlowedTimeAgoSinceNow, attributes: [ - .foregroundColor: Asset.Colors.Label.secondary.color, - .font: UIFont.systemFont(ofSize: 13, weight: .regular) - ]) - - usernameTextNode.attributedText = NSAttributedString(string: "@" + status.author.acct, attributes: [ - .foregroundColor: Asset.Colors.Label.secondary.color, - .font: UIFont.systemFont(ofSize: 15, weight: .regular) - ]) - - // FIXME: - // statusContentTextNode.metaEditableTextNodeDelegate = self -// if let parseResult = try? MastodonStatusContent.parse( -// content: (status.reblog ?? status).content, -// emojiDict: (status.reblog ?? status).emojiDict -// ) { -// statusContentTextNode.attributedText = parseResult.trimmedAttributedString(appearance: StatusNode.statusContentAppearance) -// } - - for imageNode in mediaMultiplexImageNodes { - imageNode.delegate = self - } - } - - override func didEnterDisplayState() { - super.didEnterDisplayState() - - timestampSubscription = AppContext.shared.timestampUpdatePublisher - .sink { [weak self] _ in - guard let self = self else { return } - self.dateTextNode.attributedText = NSAttributedString(string: self.timestamp.localizedSlowedTimeAgoSinceNow, attributes: [ - .foregroundColor: Asset.Colors.Label.secondary.color, - .font: UIFont.systemFont(ofSize: 13, weight: .regular) - ]) - } - - // FIXME: needs move to other only once called callback in life cycle like: `viewDidLoad` - statusContentTextNode.textView.isEditable = false - statusContentTextNode.textView.textDragInteraction?.isEnabled = false - statusContentTextNode.textView.linkTextAttributes = [ - .foregroundColor: Asset.Colors.brandBlue.color - ] - } - - override func didExitVisibleState() { - super.didExitVisibleState() - timestampSubscription = nil - } - - override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec { - let headerStack = ASStackLayoutSpec.horizontal() - headerStack.alignItems = .center - headerStack.spacing = 5 - var headerStackChildren: [ASLayoutElement] = [] - - avatarImageNode.style.preferredSize = StatusNode.avatarImageSize - headerStackChildren.append(avatarImageNode) - - let authorMetaHeaderStack = ASStackLayoutSpec.horizontal() - authorMetaHeaderStack.alignItems = .center - authorMetaHeaderStack.spacing = 4 - authorMetaHeaderStack.children = [ - nameTextNode, - nameDotTextNode, - dateTextNode, - ] - let authorMetaStack = ASStackLayoutSpec.vertical() - authorMetaStack.children = [ - authorMetaHeaderStack, - usernameTextNode, - ] - - headerStackChildren.append(authorMetaStack) - - headerStack.children = headerStackChildren - - let verticalStack = ASStackLayoutSpec.vertical() - verticalStack.spacing = 10 - var verticalStackChildren: [ASLayoutElement] = [ - headerStack, - statusContentTextNode, - ] - if !mediaMultiplexImageNodes.isEmpty { - for (imageNode, meta) in zip(mediaMultiplexImageNodes, mosaicImageViewModel.metas) { - imageNode.style.preferredSize = AVMakeRect(aspectRatio: meta.size, insideRect: CGRect(origin: .zero, size: constrainedSize.max)).size - let layout = ASRatioLayoutSpec(ratio: meta.size.height / meta.size.width, child: imageNode) - verticalStackChildren.append(layout) - } - } - verticalStack.children = verticalStackChildren - - return ASInsetLayoutSpec( - insets: UIEdgeInsets(top: 12, left: 16, bottom: 12, right: 16), - child: verticalStack - ) - } - -} - -// MARK: - ASEditableTextNodeDelegate -//extension StatusNode: ASMetaEditableTextNodeDelegate { -// func metaEditableTextNode(_ textNode: ASMetaEditableTextNode, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { -// guard let activityEntityType = ActiveEntityType(url: URL) else { -// return false -// } -// defer { -// delegate?.statusNode(self, statusContentTextNode: textNode, didSelectActiveEntityType: activityEntityType) -// } -// return false -// } -//} - -// MARK: - ASMultiplexImageNodeDataSource -extension StatusNode: ASMultiplexImageNodeDataSource { - func multiplexImageNode(_ imageNode: ASMultiplexImageNode, urlForImageIdentifier imageIdentifier: ASImageIdentifier) -> URL? { - guard let imageNodeIndex = mediaMultiplexImageNodes.firstIndex(of: imageNode) else { return nil } - guard imageNodeIndex < mosaicImageViewModel.metas.count else { return nil } - let meta = mosaicImageViewModel.metas[imageNodeIndex] - switch imageIdentifier { - case "url" as NSString: - return meta.url - case "previewURL" as NSString: - return meta.previewURL - default: - assertionFailure() - return nil - } - } -} - -#endif diff --git a/Mastodon/Scene/Share/View/Node/Status/TimelineBottomLoaderNode.swift b/Mastodon/Scene/Share/View/Node/Status/TimelineBottomLoaderNode.swift deleted file mode 100644 index 0ec83dfef..000000000 --- a/Mastodon/Scene/Share/View/Node/Status/TimelineBottomLoaderNode.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// TimelineBottomLoaderNode.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-6-19. -// - -#if ASDK - -import UIKit -import AsyncDisplayKit - -final class TimelineBottomLoaderNode: ASCellNode { - - let activityIndicatorNode = ActivityIndicatorNode() - - override init() { - super.init() - - automaticallyManagesSubnodes = true - activityIndicatorNode.bounds = CGRect(x: 0, y: 0, width: 40, height: 40) - } - - override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec { - let contentStack = ASStackLayoutSpec.horizontal() - contentStack.alignItems = .center - contentStack.spacing = 7 - - contentStack.children = [activityIndicatorNode] - - return contentStack - } - - override func didEnterDisplayState() { - super.didEnterDisplayState() - activityIndicatorNode.animating = true - } - -} - -#endif diff --git a/Mastodon/Scene/Share/View/Node/Status/TimelineMiddleLoaderNode.swift b/Mastodon/Scene/Share/View/Node/Status/TimelineMiddleLoaderNode.swift deleted file mode 100644 index bd662ad70..000000000 --- a/Mastodon/Scene/Share/View/Node/Status/TimelineMiddleLoaderNode.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// TimelineMiddleLoaderNode.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-6-19. -// - -#if ASDK - -import UIKit -import AsyncDisplayKit - -final class TimelineMiddleLoaderNode: ASCellNode { - - static let loadButtonFont = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .medium)) - - let activityIndicatorNode = ASDisplayNode(viewBlock: { - let view = UIActivityIndicatorView(style: .medium) - view.hidesWhenStopped = true - return view - }) - - let loadButtonNode = ASButtonNode() - - override init() { - super.init() - - automaticallyManagesSubnodes = true - - loadButtonNode.setAttributedTitle( - NSAttributedString( - string: L10n.Common.Controls.Timeline.Loader.loadMissingPosts, - attributes: [ - .foregroundColor: Asset.Colors.brandBlue.color, - .font: TimelineMiddleLoaderNode.loadButtonFont - ]), - for: .normal - ) - } - - override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec { - let contentStack = ASStackLayoutSpec.horizontal() - contentStack.alignItems = .center - contentStack.spacing = 7 - - contentStack.children = [loadButtonNode] - - - return contentStack - } - -} - -#endif diff --git a/Mastodon/Supporting Files/AppDelegate.swift b/Mastodon/Supporting Files/AppDelegate.swift index e2cb7c41b..6d7919c67 100644 --- a/Mastodon/Supporting Files/AppDelegate.swift +++ b/Mastodon/Supporting Files/AppDelegate.swift @@ -12,10 +12,6 @@ import AppShared import AVFoundation @_exported import MastodonUI -#if ASDK -import AsyncDisplayKit -#endif - @main class AppDelegate: UIResponder, UIApplicationDelegate { @@ -41,13 +37,6 @@ class AppDelegate: UIResponder, UIApplicationDelegate { count += 1 // Int64. could ignore overflow here UserDefaults.shared.processCompletedCount = count - #if ASDK && DEBUG - // PerformanceMonitor.shared().start() - // ASDisplayNode.shouldShowRangeDebugOverlay = true - // ASControlNode.enableHitTestDebug = true - // ASImageNode.shouldShowImageScalingOverlay = true - #endif - return true } diff --git a/Mastodon/Vender/ActivityIndicatorNode.swift b/Mastodon/Vender/ActivityIndicatorNode.swift deleted file mode 100644 index 8778f5ec2..000000000 --- a/Mastodon/Vender/ActivityIndicatorNode.swift +++ /dev/null @@ -1,75 +0,0 @@ -// ref: https://github.com/Adlai-Holler/ASDKPlaceholderTest/blob/eea9fa7cff2d16a57efb47d208422ea9b49a630a/ASDKPlaceholderTest/ASDisplayNodeSubclasses.swift - -#if ASDK - -import Foundation -import AsyncDisplayKit -import UIKit - -/** - A node that shows a `UIActivityIndicatorView`. Does not support layer backing. - Note: You must not change the style to or from `.WhiteLarge` after init, or the node's size will not update. - */ -class ActivityIndicatorNode: ASDisplayNode { - - private static let defaultSize = CGSize(width: 20, height: 20) - private static let largeSize = CGSize(width: 37, height: 37) - - init(style: UIActivityIndicatorView.Style = .medium) { - super.init() - setViewBlock { - UIActivityIndicatorView(style: style) - } - - self.style.preferredSize = style == .large ? ActivityIndicatorNode.defaultSize : ActivityIndicatorNode.largeSize - } - - var activityIndicatorView: UIActivityIndicatorView { - return view as! UIActivityIndicatorView - } - - override func didLoad() { - super.didLoad() - if animating { - activityIndicatorView.startAnimating() - } - activityIndicatorView.color = color - activityIndicatorView.hidesWhenStopped = hidesWhenStopped - } - - /// Wrapper for `UIActivityIndicatorView.hidesWhenStopped`. NOTE: You must respect thread affinity. - var hidesWhenStopped = true { - didSet { - if isNodeLoaded { - assert(Thread.isMainThread) - activityIndicatorView.hidesWhenStopped = hidesWhenStopped - } - } - } - - /// Wrapper for `UIActivityIndicatorView.color`. NOTE: You must respect thread affinity. - var color: UIColor? { - didSet { - if isNodeLoaded { - assert(Thread.isMainThread) - activityIndicatorView.color = color - } - } - } - - /// Wrapper for `UIActivityIndicatorView.animating`. NOTE: You must respect thread affinity. - var animating = false { - didSet { - if isNodeLoaded { - assert(Thread.isMainThread) - if animating { - activityIndicatorView.startAnimating() - } else { - activityIndicatorView.stopAnimating() - } - } - } - } -} - -#endif diff --git a/Podfile b/Podfile index 868af1a96..4a2e7bc6d 100644 --- a/Podfile +++ b/Podfile @@ -8,7 +8,6 @@ target 'Mastodon' do # UI pod 'UITextField+Shake', '~> 1.2' - pod 'Texture', '~> 3.0.0', :configurations => ['ASDK - Debug', 'ASDK - Release'] # misc pod 'SwiftGen', '~> 6.4.0' @@ -16,7 +15,7 @@ target 'Mastodon' do pod 'Kanna', '~> 5.2.2' # DEBUG - pod 'FLEX', '~> 4.4.0', :configurations => ['Debug', 'ASDK - Debug'] + pod 'FLEX', '~> 4.4.0', :configurations => ['Debug'] target 'MastodonTests' do inherit! :search_paths @@ -63,4 +62,4 @@ post_install do |installer| config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' end end -end \ No newline at end of file +end diff --git a/Podfile.lock b/Podfile.lock index 3541289d0..ea4ef8238 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -3,42 +3,7 @@ PODS: - FLEX (4.4.1) - Kanna (5.2.7) - Keys (1.0.1) - - PINCache (3.0.3): - - PINCache/Arc-exception-safe (= 3.0.3) - - PINCache/Core (= 3.0.3) - - PINCache/Arc-exception-safe (3.0.3): - - PINCache/Core - - PINCache/Core (3.0.3): - - PINOperation (~> 1.2.1) - - PINOperation (1.2.1) - - PINRemoteImage/Core (3.0.3): - - PINOperation - - PINRemoteImage/iOS (3.0.3): - - PINRemoteImage/Core - - PINRemoteImage/PINCache (3.0.3): - - PINCache (~> 3.0.3) - - PINRemoteImage/Core - SwiftGen (6.4.0) - - Texture (3.0.0): - - Texture/AssetsLibrary (= 3.0.0) - - Texture/Core (= 3.0.0) - - Texture/MapKit (= 3.0.0) - - Texture/Photos (= 3.0.0) - - Texture/PINRemoteImage (= 3.0.0) - - Texture/Video (= 3.0.0) - - Texture/AssetsLibrary (3.0.0): - - Texture/Core - - Texture/Core (3.0.0) - - Texture/MapKit (3.0.0): - - Texture/Core - - Texture/Photos (3.0.0): - - Texture/Core - - Texture/PINRemoteImage (3.0.0): - - PINRemoteImage/iOS (~> 3.0.0) - - PINRemoteImage/PINCache - - Texture/Core - - Texture/Video (3.0.0): - - Texture/Core - "UITextField+Shake (1.2.1)" DEPENDENCIES: @@ -47,7 +12,6 @@ DEPENDENCIES: - Kanna (~> 5.2.2) - Keys (from `Pods/CocoaPodsKeys`) - SwiftGen (~> 6.4.0) - - Texture (~> 3.0.0) - "UITextField+Shake (~> 1.2)" SPEC REPOS: @@ -55,11 +19,7 @@ SPEC REPOS: - DateToolsSwift - FLEX - Kanna - - PINCache - - PINOperation - - PINRemoteImage - SwiftGen - - Texture - "UITextField+Shake" EXTERNAL SOURCES: @@ -71,13 +31,9 @@ SPEC CHECKSUMS: FLEX: 7ca2c8cd3a435ff501ff6d2f2141e9bdc934eaab Kanna: 01cfbddc127f5ff0963692f285fcbc8a9d62d234 Keys: a576f4c9c1c641ca913a959a9c62ed3f215a8de9 - PINCache: 7a8fc1a691173d21dbddbf86cd515de6efa55086 - PINOperation: 00c935935f1e8cf0d1e2d6b542e75b88fc3e5e20 - PINRemoteImage: f1295b29f8c5e640e25335a1b2bd9d805171bd01 SwiftGen: 67860cc7c3cfc2ed25b9b74cfd55495fc89f9108 - Texture: 2f109e937850d94d1d07232041c9c7313ccddb81 "UITextField+Shake": 298ac5a0f239d731bdab999b19b628c956ca0ac3 -PODFILE CHECKSUM: 4db0bdf969729c5758bd923e33d9e097cb892086 +PODFILE CHECKSUM: 37aa3ed14a767c806ece40b6c99ab3c59b9f8475 COCOAPODS: 1.11.2 From 4a38daa345df4fab6d006e5aea4f5f61fc96b9c3 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 31 Dec 2021 16:47:13 +0800 Subject: [PATCH 034/374] feat: update Welcome scene UI --- Localization/app.json | 6 +- Mastodon.xcodeproj/project.pbxproj | 20 ++- .../xcschemes/xcschememanagement.plist | 8 +- Mastodon/Coordinator/SceneCoordinator.swift | 24 +-- Mastodon/Generated/Assets.swift | 3 + .../cloud.base.extend.imageset/Contents.json | 23 +++ .../cloud.base.extend.png | Bin 0 -> 19225 bytes .../cloud.base.extend@2x.png | Bin 0 -> 53758 bytes .../cloud.base.extend@3x.png | Bin 0 -> 74552 bytes .../Contents.json | 23 +++ .../elephant.three.on.grass.extend.png | Bin 0 -> 55254 bytes .../elephant.three.on.grass.extend@2x.png | Bin 0 -> 155322 bytes .../elephant.three.on.grass.extend@3x.png | Bin 0 -> 286348 bytes .../Contents.json | 20 +++ .../OnboardingViewControllerAppearance.swift | 4 +- .../Welcome/View/GradientBorderView.swift | 59 +++++++ .../View/WelcomeIllustrationView.swift | 103 ++++++++++-- .../Welcome/WelcomeViewController.swift | 147 +++++++++++++----- .../Scene/Wizard/WizardViewController.swift | 2 +- 19 files changed, 363 insertions(+), 79 deletions(-) create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend.png create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@2x.png create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@3x.png create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend.png create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@2x.png create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@3x.png create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json create mode 100644 Mastodon/Scene/Onboarding/Welcome/View/GradientBorderView.swift diff --git a/Localization/app.json b/Localization/app.json index 6d3b2fcc2..3b39a7130 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -193,7 +193,9 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Pick a server,\nany server.", @@ -554,4 +556,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 895b4aca7..bb7a8a4f5 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -191,6 +191,7 @@ DB03F7F32689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB03F7F22689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift */; }; DB03F7F52689B782007B274C /* ComposeTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB03F7F42689B782007B274C /* ComposeTableView.swift */; }; DB040ED126538E3D00BEE9D8 /* Trie.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB040ED026538E3C00BEE9D8 /* Trie.swift */; }; + DB0617EB277EF3820030EE79 /* GradientBorderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617EA277EF3820030EE79 /* GradientBorderView.swift */; }; DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; }; DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; }; DB0C946526A6FD4D0088FB11 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB0C946426A6FD4D0088FB11 /* AlamofireImage */; }; @@ -969,6 +970,7 @@ DB03F7F22689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeRepliedToStatusContentTableViewCell.swift; sourceTree = ""; }; DB03F7F42689B782007B274C /* ComposeTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeTableView.swift; sourceTree = ""; }; DB040ED026538E3C00BEE9D8 /* Trie.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Trie.swift; sourceTree = ""; }; + DB0617EA277EF3820030EE79 /* GradientBorderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientBorderView.swift; sourceTree = ""; }; DB084B5625CBC56C00F898ED /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = ""; }; DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Instance.swift"; sourceTree = ""; }; DB0C946A26A700AB0088FB11 /* MastodonUser+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonUser+Property.swift"; sourceTree = ""; }; @@ -2993,6 +2995,7 @@ children = ( DBABE3EB25ECAC4B00879EE5 /* WelcomeIllustrationView.swift */, DB4932B026F1FB5300EF46D4 /* WizardCardView.swift */, + DB0617EA277EF3820030EE79 /* GradientBorderView.swift */, ); path = View; sourceTree = ""; @@ -4307,6 +4310,7 @@ DB4932B326F2054200EF46D4 /* CircleAvatarButton.swift in Sources */, 0FB3D30825E524C600AAD544 /* PickServerCategoriesCell.swift in Sources */, 2D4AD8A226316CD200613EFC /* SelectedAccountSection.swift in Sources */, + DB0617EB277EF3820030EE79 /* GradientBorderView.swift in Sources */, DB789A1225F9F2CC0071ACA0 /* ComposeViewModel.swift in Sources */, DBB525362611ECEB002F1F29 /* UserTimelineViewController.swift in Sources */, DB6D1B3D2636857500ACB481 /* AppearancePreference.swift in Sources */, @@ -4838,7 +4842,7 @@ SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -4866,7 +4870,7 @@ PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -5131,7 +5135,7 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -5156,7 +5160,7 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -5181,7 +5185,7 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -5206,7 +5210,7 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -5230,7 +5234,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -5254,7 +5258,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 55e94fa7c..8bd09ebc0 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,12 +7,12 @@ AppShared.xcscheme_^#shared#^_ orderHint - 24 + 18 CoreDataStack.xcscheme_^#shared#^_ orderHint - 26 + 19 Mastodon - ASDK.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 27 + 21 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 25 + 20 SuppressBuildableAutocreation diff --git a/Mastodon/Coordinator/SceneCoordinator.swift b/Mastodon/Coordinator/SceneCoordinator.swift index c10b60d4f..d3591ab4f 100644 --- a/Mastodon/Coordinator/SceneCoordinator.swift +++ b/Mastodon/Coordinator/SceneCoordinator.swift @@ -255,7 +255,7 @@ extension SceneCoordinator { DispatchQueue.main.async { self.present( scene: .welcome, - from: nil, + from: self.sceneDelegate.window?.rootViewController, transition: .modal(animated: animated, completion: nil) ) } @@ -304,14 +304,20 @@ extension SceneCoordinator { presentingViewController.showDetailViewController(navigationController, sender: sender) case .modal(let animated, let completion): - let modalNavigationController: UINavigationController = { - if scene.isOnboarding { - return AdaptiveStatusBarStyleNavigationController(rootViewController: viewController) - } else { - return UINavigationController(rootViewController: viewController) - } - }() - modalNavigationController.modalPresentationCapturesStatusBarAppearance = true +// let modalNavigationController: UINavigationController = { +// if scene.isOnboarding { +// return AdaptiveStatusBarStyleNavigationController(rootViewController: viewController) +// } else { +// return UINavigationController(rootViewController: viewController) +// } +// }() +// modalNavigationController.modalPresentationCapturesStatusBarAppearance = true +// if let adaptivePresentationControllerDelegate = viewController as? UIAdaptivePresentationControllerDelegate { +// modalNavigationController.presentationController?.delegate = adaptivePresentationControllerDelegate +// } +// presentingViewController.present(modalNavigationController, animated: animated, completion: completion) + + let modalNavigationController = UINavigationController(rootViewController: viewController) if let adaptivePresentationControllerDelegate = viewController as? UIAdaptivePresentationControllerDelegate { modalNavigationController.presentationController?.delegate = adaptivePresentationControllerDelegate } diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index 906dd74e2..5098d05f0 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -102,8 +102,10 @@ internal enum Asset { internal enum Welcome { internal enum Illustration { internal static let backgroundCyan = ColorAsset(name: "Scene/Welcome/illustration/background.cyan") + internal static let cloudBaseExtend = ImageAsset(name: "Scene/Welcome/illustration/cloud.base.extend") internal static let cloudBase = ImageAsset(name: "Scene/Welcome/illustration/cloud.base") internal static let elephantOnAirplaneWithContrail = ImageAsset(name: "Scene/Welcome/illustration/elephant.on.airplane.with.contrail") + internal static let elephantThreeOnGrassExtend = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass.extend") internal static let elephantThreeOnGrass = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass") internal static let elephantThreeOnGrassWithTreeThree = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three") internal static let elephantThreeOnGrassWithTreeTwo = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two") @@ -112,6 +114,7 @@ internal enum Asset { internal static let mastodonLogoBlackLarge = ImageAsset(name: "Scene/Welcome/mastodon.logo.black.large") internal static let mastodonLogo = ImageAsset(name: "Scene/Welcome/mastodon.logo") internal static let mastodonLogoLarge = ImageAsset(name: "Scene/Welcome/mastodon.logo.large") + internal static let signInButtonBackground = ColorAsset(name: "Scene/Welcome/sign.in.button.background") } } internal enum Settings { diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/Contents.json new file mode 100644 index 000000000..421e01a34 --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "cloud.base.extend.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "cloud.base.extend@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "cloud.base.extend@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend.png b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8443c9fc99c3f6dbfacf15da4c57dab6f91bb0 GIT binary patch literal 19225 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@2x.png b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b03b6720aeb5d0e3bc76caf24759e5689b32e2e2 GIT binary patch literal 53758 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 GBmM_D$$rHE literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@3x.png b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f77476855f0efacc14dc02c43b2e427bcafbb951 GIT binary patch literal 74552 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@2x.png b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..63580f3ce643cc461e20a5b192f16caa2ca7a141 GIT binary patch literal 155322 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 O0000xR&BlC|=y%-Q9{)++W(?e?9MqtgM`K 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%0Ax>_BF{I=W}i|Oiz7G_ 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�)( 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®bfn))xX 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

7#atVx@Z=1EfS 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�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 diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Contents.json deleted file mode 100644 index 23975c38d..000000000 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "Home Black.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Home Black.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Home Black.png deleted file mode 100644 index b7348ae9b60bf7243029ff980ae487d218ad5f18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3125312 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

NsTp(gnI zENH%Y!g1a27>YJ9u=7^%NQ#EM)D@X@`}LNNr^H66TFa5dYW2!6Z;=6x@u6njSK_fk zRE{ea*>QNdT)4$E-Kdz}ylAi#-{CEj2vj8C(P~crbR%68Aj~tUvP3LLo!-M;P(drq zC7$LbZb^--9^VPJm8Ek@49GQvf_5# z2{SeTiv-nl5N*&8F?P?m0dXk1RtDGRb5CoKF8cxR3$1E?Z>DAj_cYq|*RDQ;BEb#pOYVQ^`^^aA+gU?${MLUcZ=(ih9vX6tr4>XmU{3=2i=NcVK+b zNexqx>r0+@`U<8;R`vo2u{G_&B6#TK46ZUd{~`B8#?cwB*QN>)D3;Z}F+ELI^f^W8Fc;1F6Zucm3gDE4n=AjoZO|-gEcj7 zsHRpdt$Ip}E3Vi&yCMkgON1xD-#olRb!U!LJXfE(D!bRZySYNHUsjd*6$hvtU(F?c zzc-Oyy!nAx=YP0Vviq>R_d+RF1m1Ha zLk5l+n;vEk@nWf(8?(rhaWcEHu@Q5uIhh~WB~eRR-W#E55OU!*zenry3={VlVetIR z_Pj+}m(5^p9|7xNvFo`H~jPjAfw|dV)65nl(u~+0as9$Ez@JU49 zLd#6D0l&kzH;O-O$@$jNzZHDs_0cp`igs~ZO+~tyLhGjuD!swYO_5%rTn<|9NxAsa zvO)mXnfg=wgpbG&lSi(cn=BKD!-gnb{wo%Fu`c3L$^R6Yy;mVxBD{XP+7pnfcE1v}oG%!T|TuCN55vxuXH|M@x z;+SzY-=e~?bn~*~t>1(E#1{Qsiz&-vPx>wbe{+8YXvjGb6<@GhvzO5k?e?HhYiaT~ z`_jU1op$Vd7EwCMtvA6Mw^KOFUMOoh~Zr*9g)1D=!#v8}vag4%aBYl=_4 zEEXdV(fwN66LW5fzI+ohUWN%!z`0dIybI_t@K^P0r($_rv5f9Q*-;SyW=zj(UKUr5 z39o>hvE_H_s|8kAIG0k4^U29I+V;=C#cj`*y%gfcCL5N+x&wFcpLvZu6y}OjU!e&0 z_RdQ9!Yl49OOtrnu9-=1AIZ(;#>9D|!a8p}gLAF5I)CQK2aQ0}WjG$hN^2+B)ye3` z1$n%vAV;{kYsS!8e|itfKheWSUc8-ZN{A8Vc=m0KQ&sZO?+NLtOb(oS!KW*wTS#O@ zddCGozHLKeQO_1vWlV~=SIEhdde?u>pS6?ZaL~F&OA6n@MfCt^-*!5VLv1YdhG`fw zDzVOUA?E3j;PUyio5Q43vXE>_;{=FOb$LXWg3RtUfy%U~wWpFX&18{Z!&aX>V_7`P zFrWC|b#XChX2d$aWQ4iZ8yzWn&qM~c#~FSm^=I1>V0j|!eS2^Mq~SbCA|qJt`6PFd zw>!Of>L@jrx93%^f$m@XLiWmh6cI3gdQ8G~k#~KM803p*d2$@;Yk|llRxWkdDx8IK>u}qKIwoJ)7krdKR@N;Rh%3AC|92^> zRaiWB47Qq|`seHXMZKDWqYf~)xeM8s_u>ZfDLzpDm%hV^r`e_iw!-V(&E0{{qR`SQOgYjketcnrP|q>O*S8&`j*{w{LTe_G*<}B^`p&j>~3B^yAIqmxnaD= zS!_oExxcoWI{+P}503+hJbUANrV4HYw@t8A6%gHN%UglRMRzzcg^vMt>PwVsFv$ zr_cZCQBWqFiygvptT;uXT#f5uLIAMm<^J3wlzR|jK* z;$#;4&QrbuxTS(2+#GONUH`eBb2d_?yY%#}7z{oeqxvro#B?CqI~Px~=@Dv4cP<&+?C0A?P^SYYy*VX784FJ|BsI&?$Fbf72r zo>ZN4;i1aGPY{li|0GIIJCy^Hx}&I~9n+=+wH zJyv@shitKI#f(nL0si8bGQ@|ydK;AEYp~iV1Yo60%!~4amIOTphU_+Js(}--=_(i# zVYuuR*q_zqrKH1YfjQ!tL%JQ-xL;_u0x+YSaq=BHq=E$N4UogGiE(*1~k&$o{*Vl_!xHydx| z|Jwe#Y&JVa;r@21c0fE;jr!*77?6TutI?%)SjygC|CqxFP4ay~h?r4#PcRZprYYm& z|E1e!ExL>M-2kv;^ld&}fB}ZP!6DO2E6)6v19I+14JFYFIlbw)V4R>J(l=A&;jxVZ-ZKAU?Y?O+f9?j*-~I9D|1+}%y0 zrud3By8GDsV|PIiqYRiy`=G~=3IASMI`s8L-j`GmX0ZUiD{F6DE_CmlU;ocD^bvkO z^MjbG_^S8^fBB6VFY>OIG0k_M$1fp>?)pRR74NW9cI7GbboWf_jJMc<;vHd{eSnSn z_mcL%yLKy245>`z-e$=QVpfLw*9QG4MQ5_RiumOgjZdS5`~QL9TTkLCZ=PUb$;3Zt z);i-`xF3~V*G0-0GezgRq!vcsQiFf;TVc{5&I%YZ_Igw#DqGRfnp4l!mQ|;K=ZtC; z)asn^TTejS;KqyP^-hR8{DSq*s!r?(fpA{D6mS89u?!oLGX*d6Dgy=WQ zaZn7inh3dRA~^tGzJz>$d{M=%qV@D;@t)#g_DIolb#$g{VnAX*-hJ8W+Vp*?xJC>M zxwk$2v`_L3v5a!jN;DrD#P;yaB(aPC;<8;9$%$GN`l|+ieFo>+=h~;~%J_Xp*G)Oy zb%nT5Ki!qNvDeBoFP{p-$cBC~<9`guDSw`Fu(5V)O8bYSEIg*xw%4e8O>_`3c`+{{E+#J0+PDV-m7+-Sl;iUGy2Gv{D z=T(w2Mdw{LQ-nku>+D*I0?0knzua^JKIib**CYd2dAT3Ch8I^Okqd(V#r}zj!GItS zPX(PP2S8nCwHF(0V&*flNQn^2^r5V?SRJ&**ck3y(HYfRy7vph5K>Nvt2W!2991?= zZ5%glh+siU+b?%AfbR0&gH4Gz(`6%vo%?cu44;_aDBcl~()PV6UiWV4=a0f^eG5LO z#WzR|E-vp5%04!;F+U3Z^u;%>6?<_F6DPJ9ff;YYTg}r7R9NfFH!OCVH$&k3p2lL| z^dM&UwZzxBHH207$#dQP2e*8GNFZXd+I`gODpTLw&h)*ek_N8 z@BLcEtjfFSFaL)kZ4;#4a&&f1LLFQ0KP_LOP73pkOiYGMqo~w61qO>v@{5Luo-i zzVo)k5BBH8uYD(Vhr3dTPskr8kvW%gz9=4|j?13>o~*=+r57d-a-$}1`}6fJH}cGH z1=l?K32nnB_llZve&&a-k9pjLT84xL3<-=KrjXC}Spe23e@I4Oo~@Kp>yFKqpORa> z3bw_(_F?5q|6$_8Yf`8cowP?-^UMD%7rHoQGxc-x$f?iRhCzNF=~yr94UIh5oj^-7 zPWEB1v^<<+AM7T&?&SR%zWz`-{@OND&dtkd_eFbx2KM#(*jM z-MKuRUxqrgB;U~TUJPoQzpTr>ordOJU4#*=QDVM&2(Dy5;0L>s8ooLnZfu%X-@Tfj z!Bech+y^>99_~Bd{SSqcDGMqh8t7@!LPXvMUNnV1?tZ3q_DS^NZAZ|Kimz%H80M1D%7PxuQxBKNQ0K9DkyV?liZ}31$?p!nU3@GlHj{ zJ}x3E*t;y(K)nuHG6-f4FIWj|y?eXW{RtA^g4=ZA#gZ{nR(7pUYp2)yTwUHti-`>D ziA*!)A^g9p_V7>@KnJ+%zB%HY;X{J@LNRcgz_dl>TuknFm>Y8varm_|J zyxhI|fFE^S6Z|+NICulq7q+?N#+II^Eq&l99s8hC5y}{<-HqtXC0Bj;nCUS_Dg(*H zRC$kik6kTUB~o&#O#22lZ?#V2O@`)l28>FSkiJ(Lt_`ojIoGwmT$z1lDw%xdHXbus0s1 z7~-oDJfwpx>lG^#5n}9%w(@grj4sQ~em)_{l9nD2Z;~ho{8F1v-O1hcBPc$yVWiJ9 z;lbV_o$o7SFgM^CW(nK`i6YZs6~yD&$huDVL2NxH2U!Cn;Ir#+i4k8ry_6wl1zTeL z@opMmvWh@-nCi;)uIZ(&XKyJCuGNh5E&U%UMwTo?#OjHqjLVQ*;`hN<3a?g~6IRan zjft%G&R8ZTB|c20&KS$ger4Xk0;(%k#Xrzf(p@SGT&eb*^Q^z4NNjlwOqsO=`kMh0ZzANy7+~&-4NApxR7f zC*MC^pVcj~sD|G$r-v!w(k0)cm;JALYvJd&@I{G+aA4Upkq>@|DgDEZhyApKyw%gV`SaH1 zpT|UHgS%Pgk!OFmU8Qq^j!xgDL&ewjPtxg@8$?!6u=|?sMY9a=?mJV*I>eqYe)((r zl#kz7acVVRuwz}PhIyra6UdpxdaP&U_~?%uQ7Iok)Er-GX%MbJT*u^eT0!>K-H|qBpx?4JB=td+3MtTTIK^g(2LAqfm=^9!|8BjsG8wE*ekq+tZhJiDF zfA4$NS?jF%Z`OhZ>w!J{`s{t(cO5a1i9o9@3*Nc6)Et}RMNCoo9jsp{by|ReT{3j$EHzYhcGgFR2hndVu7i_h|KM7;KBh$D zlpoFJbj5B&3=;2N*ZM#-YF8K{dhsP-HmQ7#TS7EQ2ir!Ev40y4esSV|jjTlHjStso8I3&?G=&yWtPurl1Kcxy3E_$1 zH1D!|40)qzSZCaRUVo)`y-qDQ_lV6)QA;t^k+6gY8I@-%9Dep={U}#LvaB*6q^jE% zU9Zc{#BetV(oG=@WZw)X#{`p-KnVg^q?5o{OkaZrOf{)G6x6v9R9sEqN^qse-OiM! z-_!dR%;(MlUl=AZ!DG##1Egwi+Io3Sf}WA*G(^oLW)iP0G93qg_)KPsP5xxjW0zG4 z4NW9^KWtp=MC@e$m00W?Pg=V12|z!b>CE~Tj5pIWE^rBOuHI`O_4awE zwv709=#nVyxnPa3An|W41ckY11h><2H?e~kS#e^Osie};w6qr+ILD)o`RZR1@U3

E^P+Gm9gLRz3(Tk6tLBcc1!+R4?QtjD8HPfbHdCF{SG za^ka~zl`l=cz_`cy;Z?(8yDdy3z_I^c7K~P|HJK!~2)ST>~_|TfW zYvtgYGt>5m1;_BgndsH+_f(O$l1_|rIQ8W96LEhBS2$^^pKHdkeC>OL4SodJDnr1Q z5KBA!fh-mCZvSOIYAy(}ILNrRlHz3l(`&jNjk<@%*^{UO#nuoAO9`AWFUXaXKT$Lv zH$U073FCJ@y0~joYA!$X*QdW}XV;qCR$IdkmlrA%73QGV19xxkPlTQ`vxDuIJlGh% zje8ppp2OiJnMILk-er15saO#HVqe*F_D@)Q$^m0N!~)T_-PK`c$P;B)tgsT1li zO-tG`i!w&->_!i8J zXiIJvXu9ZI_$NxJF!SRpGTp*#8F-r}#L+cyMWiee_1pItn&eh5syVlDh`Eg2=Iynz zJk7-b$Pzz_Yp{eD4M5K%BL>JaG`Fome?4Hlxp{qy8Fu~xQwT6=w5xXZ9S#9Ey*-0o@CYyKlp4P@FhEomP4XL9m)Du&VFQ4 z^(LtB7m0nZkzwwcPt_Hw3>!R zm^+BH&k$SCD)Mz{?K{{CHifL9`5jESiX-qSn;ZMGSbEswtXPnq9;*}V_qS-72gqz? zC%`n9yWwM@jgt$SxUb8tXn2hAD0UO0$K zu`}U~(g7dw$JgB)mG7}xasIv!c#+FwNU5kIHo0%rAW2$McJ3gpiQ{SkKSTp04=Ng& zls|w{av?X^(kY#Y+>YIAvT@mi>$fAiVXjz@*++pO8k!|EE{2q^4^fn&uQ43Mm~HEoEw&>%qw9DTK!=l8M|4e4 zJN+gjPMDpurT!acoN>966=7pXO9PA68}v?RkjS zwxOs)+z1DN*LAF!{AB^+Ur;IGtB!TNRr?iw6HSV`S3uotI7;E#NqJy6Lw}?VH-uWm zmK9}v)QLo;?+XO{%y?7Y(39O7G{q;Nyb*#rhf^WDks-R+ZZ(ETX$z+MEu&O}{3u#( zjbuXZ(|+n8M?-QgVeM~1vn_Q$~Obl8JN zzxxKR%7n*+=N$xl$mC~+8Xof1OeUIcXQY@O_754aJrwnb&Fs4EE?Es*4Qu{w5t?x; zI+?grxYyxrBXwD`<@G#=)>$=AiA9P=*0+y{>&nui$A_d%*viK9q_L(W8n)~Gi}OBi z`{rzzOXQ;uX+D`;a!PPY5RI$w3E){eS{a!w7ET8S0AjKfH5uUIGAT`iBB60P|bONsSuw zP*wGlSm18-S-F4jJf)4BEAXlya7a)OEg!ScapVpcpk*@G%03=ZnG&ELL9+-4rFdX} zM(q5-v@!(TczwX`dPrUvLx=X}&JTco22b(s>lIk((pSrECa6qkH&KUXoZbSp9NO94y_1q>xl(~xGi-^H_N{;gqiKN}=gUQ`3FLg1e?V2;gm!S~sQ0ZaD z&13y-LU()RYPej&*n26bFPaStZgkupM}i9{>$$8OSX|QYWQJ{?aX;jexTon!V5lTJ zj7%;b#&{^o(6qVDbA@NqcXFHFJoigIrK^4Y;@U=4=L_mQ;a-^_rr^TO0oUS_L*gYS znH{vFm$464Cl^w>$aHS+Vq*TE=f(D{A2(>mYhJw&vyN?St4T{g?XZN9fnLk5+(n(P z9P{wl9IJI_Kdz@!MPaNkn5ACDs~1#Bh;NsRvZ;F2yV6a*v3J2GivkiI zN(B60OA`OEShf_NISvg@>?cx?Q`hBDYy5LbX#=E#4+p2s**PyRrTAuCA6sPp6B&qU zliP%+j7o#+C)d=|!EO=tYhAYONM37m%dEXSc!^hk+LNU_!{(VXli-cHOVyJ0)wMmZ z;)BnA3rTyIbL!`6Tp4y22m3XgtDoXxEi(rEzy5Eyf}u=}wz(7pemkiK17oRMc7A%@ zz}(7xCoCR*_VDJx^Jpqb=C7{w9&pRFw?uSNbL%x9iAZwV+^fJeSH5v+^l!bC1TgIQ z<6kzQ<5+)XGy+*DKL5&!8jaourTKpGh-F?A+01JIUA^8DV0;yRJkrXytJy3g$Rz#Y zykaNAf*NPCxQ*CNScJ|>VSItqMs-|<7MuO6e4{L``hZkkM&4%|miqKM0SBd~+`H!a zF2Ey>=3`?C|W(LQy0D`D>6MLI8U8!)3FfK-xJ7 zyCY2*M=U7ON(wB*w(w|fcXpdB{PybOHS$HOm>!cE0nj(K*ZxPd2jg$;E%ef6KdDUf zOt4?>V}bFHOaFG%j}s!X-H)&P3yS`|!~Mwy7)$E|&OT+_lSfq~E}&-|SiGe9TX-|> zC7V2)kuVLL#Fx;9rG#AzXTS0IQ5U)3BkNM;fYNjPixK7r z)5VX4w+z4^jP#SbMRAyV2C+qQ@9dBwDcmLh?3?Gqn}X?1aH=;gfXG~ryZ_6@4(^FU zFeF62oe0<#Rsy#bn74=yTOi7!Bkd>TMlksU%`YDCA>&NH>1y&f)mWyfk8A_*U7&An`r#{q0iFwlGs<$eAI;v5m#g6B*$lAA~o9IwECv_@0)!cDBS)kvbSl z#m$1=pg}@X<8b*p=s;`HhU5odYjvqGh7#CDx3L7@5668hTRQY8E4StG?Hynr!PBL` zR-rYCZGU6P*?>C1sG#F~Rm|_=llfD0e1=Cp2l|sYAwO9ylI(ftM+{i>=EAN&$8(B3 zNqwk22G1f*t)`!mV1o^LT_HN8FvWCMMOM+&Ub!kmmT1!cqqwK`;Yhd7_@4-tdjYjS zrpKG#+H^-GB&ia3={X{$yunB}&DN0gy^!^T(SxKxoD)1(>^Ve5L=3>RGp zOz!P#o|$XGm-}#@$XUK#4?$B1T)3i!G|7x(aH!)<9=FN0b@tX8Tc==dE0WIb9I^Wk z&nT>NZe}!u1|yp@Ymqt<6KOgZO1pR4=~B8QLt??{&R#rIc{4^X#RKgdJj~G>v3eDB zWGI)CcAw^!iS>54gXiYuS?P4fNf1{MHS{v?}9U`A)2JJ23zfWeY@1VY8TRT0-!wAN^=JBRas%`L2bQkEU z*-Ayuue=2`E)0}*K;fM4QVIFKKgYlydn+%o(GVMHFAk(6&<;PE0%f`yU*x&@ufo6# z0CU_mCpP3UWl21sLQVi}EXS<*#nw6Qo+Y$Eir|oMnk1a86>!7((KB75#R_AI?cp}% z716&}H2p|>&HZ7}NHqtif8B`5luD^j)VXV`nG|?&MOam5^t`djo2~(O-zE-fJUTpg zZF=XKk8u z2^3Y{4j%Nn=0reF<%N|#2|$ElqyB*E!7|3bLCB9-D;iKs`K8)jsQ_We;g^JQxv|ZgMyS85rR)=oZ_9WufnMt{fd)1gx%R=w>2<^n3LXNv)c(3hx!mt->#0AUf+(yCeo+Ho<=#lA5nB+UliB5AE^j3@8F%1S z|Do$*uNV3rU2~v$D$7W)d>LM-)I%4DnB!2r%-oYcWEv%_E1p1<}Ltf7B&^ z)F3su7~DqH%`CtAyn1S8_fBME*LwFe;TvuaZ76|#x2;^qJYqDnzn*pG4y7`+KdXLz z&lD{}Wu{fbRWi}Oe1>gBk{#I(MWdD&BuP7B44v?t&&@g8D;XOxND@}WZ=e5}6`h*J zl#dNt`9d!bXB^StYkP@z8YMT%EUo&}`qQ*M7$J-DXeNt{?a~1pe?q)Zy-zQjDw%|7 z$j%G;7m2GTIx8OE0bSQY`Vn{-caG4+a-u zJ1kO&J4*@UUEHQip_%{9PY(4+;Yl@kJ9)R4umK4A``~)zA1>aE31*RMG?JKuA)4Bq zlWv0w&xa;=Onr0hAbyMnXN6nJRmAH^t^dPmrjRhXv1kA?Ed<~m8$u(ZYlXd&q%YkC`ZFG)m?hwfjtiwoL48gSXz4ICWH4bXJX zkwL$d=fS3x2f)W=Rg{h*i=9p}PLSJK{{}a@m!a?ImU>(^K);U<*6JlzIuWAIFSk|*;vlRBvgFB{9-&|UGJ@=VKHr~GOJG^-I_rjDU+-Ba~ zBWxLpbBVzYs6I@eKDyj|hn!h9;DD(vG2I#MQoYNQYYj{aK)W8s=-7CBEg((I&W`0{ z2`eUV9F}Vje01VZ)jmG3v+cULD!%r-!*tjde|9hvaRT62s!L%4<7@Zzl}i_BFv}J^ z`Fb2cc<@`u<1HyEOBq9)z>?eAhvHjl>d@@;_EthycEqzdDv0XBq(lcTjXmE8DsJY0d z-T$oR@@FHvqO>E@D~Mwb?kb&&Ef3!y)`fv7(OyIz3w&Kin+@Cw7T>JgU;zfuJc+P- z{8y(}%2#&2dVRAmrQyOCk}?!pgWQTKIrtAsV!XC9*p50UDVL(dDk%{2SA)8L=K?;~ zVrS32=D_};eBHtFXz zSqHme<9I-z*EU9EFdawivmgzs(XkC%_dVFsC%5i(j*rFYhU0l=@ec>x$hvICO_UF~ zD@c{GiD6NBkvGvMuo+x*!{v#T?Db68uk6~cSKettjX?g_ZFl#?nH+EDf*2VCd`74I z*8MnU&~0hO-n2Ea)=K#m$)K=I@=}`L2nB?!M%+$TUe<@Xr(AC+R%ex^J*W-__RCB4 zMYgT(t(e{sy7vW>!8D%Tr}B@kKA^X||DPG?()B-~aBD|{e?hu0F6&D8P_6~tHWXwQD#8yBvK7Qr3~cgGMS+w* zZZ?C}EC1XIFRzC&5sa3=2XWdH0-eQPu_J`hSwhA`nXHjD2d`U!6m_UtBxSt-24Iz9 zU)Mo%?i4K&Y49GiAj0KnvLKL-mFJc&=`9R#j&9NUH@k|`M3!Wx#LX@AU98PVD^}uS z@S&IUlbazJ)Yt@IZ}O5Vm%n*2d4A`GAa?b?5>;_odposALhaSKG4_)45Mr(Dvpa3w zC)&cCO~$x=4bHvw8rfXPle>|+ATN`7PI7N{rL${AMS@zlsFh>*@q}sx4ygULps!Tu zWNW@xKN>ucdDc6=*TmE;e;^=?TMTB;Yd+fk6ZzOS&%443dv=P}p8C}a$cnh(t;b6W zmhK*I6QZr3ey!Y{F!A*E*>c)PFy*|u8~o9r^OTLGr}P=*5HP~Y)Z)ajT-FH(v>Y~S z(@YJsnJgyvr53}h>H(ll?1EPD>%_J^LN7Xu@{Ny_fj2*H@i3l zW3i%%t{c`m)Brv{ntkgpPsvRrZAp6u4gp7lp;BC=`?dV>7C2ECVW1K!S^|;NRD;O_nIy7hH95U|^e~`ZeCnlq)vY zH-5D)|AF1nO{*Sq{jCTgum%8Ur-4&Le(A)x7HBzr#xIN*J!J#NwRfXl#(FW<#bqWZ zMmW|0mDU%tO5e)4EOcIf3uvU6+Evz%6X-oxK>l!Cm!g-UZ=Z8t2WeDyShH~l9b;h> zae>DtFLv*bkbetDS<}?qP)3EQJv038}*H?*D61P~ve)pc|AO3fMffoD4)p_2iEQ#YPhtiEL#B=VbYWxo3%Lw!dxE-(|!cqef{&b&<} zcX#t+TF!WgliEtj{yi;_Sy?Cb*fXg+DfPke?~E!Pz?-)`JTv=UYr_0lB@W%5gjG)g z8K6QvkxVp&o762=zs(*3&3MB4m83*tPU_M4zK(4J)I!Huyf?iIB>1D^xZ-#j7@niB zJ3;dyGbA^Yz_5r4Ug+H6q>g_^_lfWI^LNL?(|!mS>N%16kdJ8W8sYEg&;|P^H>TGp zFd7^_TZIbQk!5zvHP!uX<_Ktu>GwAklR~W=1J|jIeB803lVVt|D1xc13met9-q-bfE!39K{)UZfu ztXtG^RD{JKSFWX;(P#RT$yI;6dhF$&(sXQ4v_)Ts$8l^_K zBYJ1F5X0A{c=S|}$&@(gOylrw-T)RW<-*j1c8x?S`Tp>);a?_<9TmP-WPKt;s8erP z^235Sf74m14*1hvkQgo+3&FG;WlpcNUr#&y9?iY=1R8(vG?$DmnYQturH$g_52Zg4 z0M6y>L->U#Hm+(yzvB=kDbL3*=;(WRIZqS9aLjZu-xDIlH9CBVTQDDjrz|vJy6##_ z^;-kfLQT>?FnjyVdzRuoW7kFvd+n14hTTfceGxILT!B`cKtFtCJo=3OAmh}CcUEyK zabKf_5+BJ?`lt=hjVAoKuXg|0(y8}U=c(Reyp|j5osV?6=9K2I-|h|JF1SmSEhms{ zKq>mq+@7u1w+KeNLIYk0^tuqX#qCSkTivVP#sI&giLk^vGs6)N5LAan9cMYk_F+@C zy)20o}}p=+(cF%TOa$6 zhej|1Ymw~NT?`R~E4u`Wic~M&emNx{q3^5?*`3ivX$^52G_;>LN_gbhKPg|Lohg_tw#4R_^6AN3`|Eu&=R?1I z+~V7l-EB=be(AbDOqb-$Xi8~BhE)R}cv?RJ%1=JJX2gQr{E1Kw?M*sNMJDGuQvs@F ziD&d(NS9_N&&zi>=U(5J{7f?Oj(Y&rJjI)_T>joR(%Q%+#<|ctr}>>%tY=L#EyC57 z7zG=aEj?b#_c?!&U$jXQ8fO`9weI~i13k7$U;@hSk#38MoOKtU+AYtfjuz})A_!T! z?~Nu6+cB%Z{%{yU3rjAkte9rPW;X;WSaxQGdI2f-VNx$~z6Pq5PUT>aeoomPmhSD* zta;W#2o#AH3Q+x0*=xtzw<=h|TYN5^@=HacW2k?s8Wr$e-AXEj#es&a&Wq&f-Rp7db8zV5pj<=%2oKGgWTo4mB$DpO0is$DdW z=~2^t6ck65EevoXhJ`O`+-etkK&<6YAdEK8`@YL&MQS9);r7p?njJ7@Om(y*>w|88 z3@os_3w@NelE0x!L#Vv1m|V@H6-g@v?w$ATmKT4?htsIw(Ax=XM&78M>p zvM-XJXFP!1lA8i#=wwc3G3#Y_Wq03St*l4y7KQntsxvPrlN7LN&YnS+@?DPH%Y0-R zdt~=i=M$Q8Hv+OpeDrRZ-``}FqTbUhm!0yHXL|`lcqVuzpq6#MK3LAI*t$A)21*2) z?A~sV6OR|pgV3C&b?&p^v#WdNvobOpcbTUJTYGcZ5mAL_m4rN`(F) zQKIsne)%E{w&2o4hcxry2c3>SnJ+mXP+v@f02?o8Ig?Hv;J9QQp=5@Z1a3=Kkk^#Yi>qz3O->b23vemq(_0u1Cv5x=?Rq`=&);Mn zz`#47Uk#_rs)@B|G@v>zAo%#31?Ed+F#ylx$U+7_s(R2F9}wsC`qCO1!}K3MDX;ry zZ>IK`PYAu~qt1FFGB{w+3;=pju&n0%{Hi0YgVCA*8foh7Bh$?)^6}Q@`(`pDSuSxq za2@I|*e6$yG`WJ(Cxx4<7%VflSt3LSlQ8UF=^V*D>XEwqugTJxB(F${ zr7~V2Oe~Sf0Au0$ydMZa0q&|Kr@i(InfVUhvg@-qQ=nIt*#2>^p_ep(9m%o+l0k5y zR$#ZxCE*FU?6^n1sq73ix@tsjx;i_UnD&YlZMc0r%qgJ*V`gY^~+LpD!>%*WmYV|PYb)-2&6t<&6C zPN9y|p+f!jOxv=y!KK8n?>;r{&+@Oij6JmlWpmjMNM|8OsF&J9C;kYTcu)He)~a~F zt+#QEM|UAO=iGcPFJ9rnEh|JN^uBN}kkebeL+x~E5T;^c)`0~9p?G&&tUq5%^kv6;GvGqdwy)cOn|>F)~&M}@e)PW+=PLE<}VJqOrS1p4nT^* zfBa*tR@zh)C;^wd{Wns)g0}Rab zKbL+kp$Gq$C56$=guM#Nd=Lyi1W(1p7O-;DcU5kvp~`2Z7cs~gKciX{cvjP z?Q1Mh+S>nHl5yRGX$t(`vjG0%I42z_MZFP7|9WAw{kCEIq7BXs(P{qne+Mz@ClAtW z7iy|TV=b261OA`?mt0$vUxVH}7hJ_Q(@8ia1Q9@`Lm_YgT7fTsX$~6Q^1N01p1~6Q zH=$d;uE`wd9&MW{q7OqbT8LF~IxyVL3hrc5t)-uktT?8`2O~{knZuJDU{&h{FrN3- zbDP){d>vo_Ow@(J+bz7wcyFN%3z7?E(NfW6Se_8Oki|IPoqiDc>>!HWyh90Y!V-b+M~4=x8h7s6kCAgB z*`cG`jUhI1inmrDd$WaVS@mQqska%bo~~-txh_v&tyvLh>^g>4z7CkVvi$AM(7^pi zFy_S4zsE~SJK<8P*NlijWigNlOV91ryOjFqD=USKb8}ro{9O2M+;cmg9ibb7G+&_E zdiNBI03A@LAHL3)@+Um@Ny=PmJC4?ee`(``L10#Q~?A!33(Oh1s8l>-k^Bx{2%Or6ecNe8~t@p--b5*eYwv!@{SU8OrS zpI13XiTYh>e$!R!B(`)Y>95~d7Ne9YBR~&FmoIt-zJ=+%(S$FNU;p5;<@Fa1m$Ktl z(DvO_T;X*C>Jx47&MS!N1U=IlNb0NnLqBMWoklsDj)7$1K3j8)8q3x;T9 z#O>p$f1;XkJBYk+_6>|(B5pbhISM)A%jH4JPD=etk}9rIrfGt)OiE=5+#mc_Chp-u z;C%JPO^Ov`6IX!lmHssLdIlWTBSy@Lk6jJbn-}{*xnbbqXr84~y?_0^|M<|Pw+Tv? zbk31V_ln7fhvpP*oPNF?zRFejKlv$I8r`IeTd4;8g}j$yFRx)*1YTYQ=`aH#0uW?PsLc>U?C_w@AiQ~TG>-lvrYVVys=enkYZ@wI7~YB*Uit{B|vFIxnY zFYUR|0zia0x$!D__=3sc)~rgl(APJ%c$pqu)5TSUwwv(~f`Uoh3~LRi#sVqcjThox%z=?hMYH|oy(Uq@_NKO$Mo|RMd(~MQ zfbDd09)uhm?J{@k!U{$W5;!1|TJ}RjH1?|6i~W^V#Z4i`8zaq^?k4)p%*K?S`jQ~X z&9}*sOz(erjBvij#p(R^528Nxi^Svo!PAXrAcz*ecdon?z7cJIo~MX z73+>{mb<7oHGxu5anJ+~Ox}A=PM^_>bh26G<8eUyTaArg&|dV$(kFlZ;V8t{_pO;? z`9nY@7Ryv^QBvG7&ibP|ni~)LJ#3(G@8i2b3vJkpuCwlexu?@{lFJ7_RBvI8Y2xni z>QoXn*a-@?yn4&?QV1Y+2>#=yg1`Cu7KDM%cRE*?WYyaH7kHxc#X|hS9pLs&7iTE( zk&tjH$f<(A9;8X#i*R0+6%?Wv0VfCt3W{Nj!3h9ulm0AmBggafDwTj(J8>B1KO;~byYpMRC^dM2` zc=sqn-p#~^LG0yQOpl$rIyi`Pc-8noVV|_RoG@BYWl$wLz*yN*9T4wmH;xo z2P2m+2)rZ(WSV8qW8|m+C0B6Cn|6UE8-RIyt?Qx1U_c?n5;dElP%~{t78=GFsEs~M z{S)^2TApp8A+Ijs8q4jOQfqSIkvT%33alhHAiz-sywG$0#KN?`Q*irrwy*f)znqLI zpBSxM=Uxv=>+&`1tEQ3+jW6}?*$fs~`(aBO)u)4>sd@PEYiIEXK@T9|clw|Fpdw5| z#2)Vip30!AH`-FE=VorZ(&Kbc+TgFp+NfH!ZYXoZf#^+~40$^`w8DS~w~@E^%LiU& zXx7x~YSz{j2|4`t?Q>aiXl<*)>DbK<>u{pD?7hrV&F@_6sq6o#3`%1t=ZbzeCtjd; zUst^JYyTf0x;BIUPi4x_?`P^x1XSD9(Z3o`ao^~jeVtA@k@>H1vweu28vW!Aon^md zoEi+#pX5Z4DH4YsJ4gdJdwx^bPvTtBXim^R&5DD<&@!ae@j|Rff=jM8gcFy67&p#( zi~VCBM<8yRUVg9#h!QvSN*B7XB+(;hnFIPb%VW{u_U~j5zdZc`V~QK�D@dMJ*v< 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%0DCXt9+d{Q^ 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

Neq&N)4jxsPe< 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 gttG}%&reJjg_Fph= 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�}^^k5#)$i_<2pwtA_v{@ER?NII5HN;DiIN%ZH2u&~(Yz;=+)wX`YHzA6U$q2KxXsc?cYMjj2__T zVGkL}7ytS{MJ6~^^D`sgyPtUM6K>Fp0CU?V9d!);jJW@tl1Iq=XTSe4Q^#b`#&51H zK4O^*6-pJW6PLx14(l=Vka_Iyjb7Zz6C+!JK2`@{{{Z-#7U+^EIAYJ4$YOlyb4{c+ zf*4DX07b`Q;B3Uenj_r9iw?+&l^Wu|R>yfDJ+^E20+#U^;Eom``bo+Wm+X)&LKRLYA@cRK8s>{}L4=q&BP{DUW1~1o<*EsLEK=O1aw?Lw`utdMHPwL&7A<92Xc0$>}{l^*TRP4{H z|H#wVdKA213z<(|uVR?Q$_`JCMtoKaUeDRU>5pGF#l2s50K^da@jqm-Ir^|O$6wGs zqIdVf`OU0N2GJG-J4oIVNWX{3F=Tg9Ky3cfZ)qS=sEY=p>QS>1jOmmO8AH^&+z7%{LUSlc@MT``tg^McU zK}o;0=DMa+WGFyUm`qzMwueXBU?>M4NXE3a>D0A7e7#uv6cu($c%kRl^JSDN>m-O- zSpTa-GPJgD=xo@l*-Cc@X~`1P<@RIhcHn%B;->xMm;2mj=wq6tfa156$?^jj4bKEoX1Q^jJ${VLOI7t z)_+)(G+NOv&rB~P%KQmqy{7Nx(KaTQQ0N@!-^ErtN2C24OuODN|Ii4s#~t6m3gWZn z#(_Oi)ownc4o~1>S6;jIOXmFxGRcqP8{?kKufNY2ZL>zGSWOwACJMIiVkFu^rW0t{ zB>M*Kj!i$2rq?HwPqaLOTez=4td-;ld?nJ9E-}^94$=}@^DS}*yufrZlGE*WEph#X z6gR$%nYRClI=3=R|3xngQvRo9EpbXCN^tcmy{1wb0vOI?bsl9fR~PdqogUfUcv->F z^HVynpq8M;8c)+g8k7Y632}{78QtG=TDZQ`9#_qsIv!aWnt-b&tRmq)fX4%S8R4WC z_T|^`eTNjw>zydO)HLRoS#p=HF5fV#=-z&6H4Vkk5v;O5NXP z%@=blyr(&K>XwXlY~Z(q@A$lY0EJR-WsW$=N+JXv%m6b;VL5Ysru*z;L&3iS-w}-G zNATBh@@nUUeII0t63qK;yW3ZF&<&COC6ypt2}T`%-Uu1si;BJa?9GfXI>*bmJ9~G8 zzz^ZV&wW^Pmx7O{E3#pm32nMBT64FuAJ{0MwtSd+AeJ#(ei@)v*ZxTBE~XtrjSYp4 zecN@#)*IuIe~e|PAg2wdY=2hVQA61&DGb9PWN986YQL*-DgWC7hDiF)md2iO;{%nE zOT$0m_4waNKTWzZM0#&GAIVJ-*RJjHn)$fQQ}dg5V?mnF8*A+re)-y)n5x_!`#rv$ zEoyb?6IgcMulA1S9`c%l&CS|3q7Lb#ViXfvCiB^q`!981BSb&-3m8t^pE88oorUw& zo2=2+fiBsir}0%m52wW}LlpagmoAR+Y&47&$8*Okja7S^VUM146^Qp3hXKt~NBg2; zy~4+@6z}=PSC6<`@vjwRkGi?31sN~|k?79-J}6uHK7Lyse$!X*^CoCv7_~1}rb82X z8Ghmjv9idY!6ir}kFw6~9{H+xj?G){7`>?09uk>?~d{2&Ac=^PT;%HeT!$b`Xv0MSm z%D6{o{&Utmsxn@a2pf@_7~!EkqedE3;g{-(GsM7i-A2alS4i6Nsd=EktdSALH*>069lfmT> z3RP;eDHOs~jjAy3W~f)H+_o6QwHeU4o3KrjNINY5UDh0X-(m!C;(Qy+B%crb_RHTo zeIJT~vI5Gyb)OgNgntc6IypL49Xe>OJ_&Bbeb0x-G|Xobe^JvjoP$3`!uSs5!~d>@ zT}V~tF6IR&J!Ykmd*#AGf#6gU*xwg>ae3{{9wZHO&x$vL@NO3tvg;&mjHOJ6n{k_nr5OD1BTX^n% z>F83S;~w_pzClQWFot=n*HRQ)a&B}yAoH&L9RVCjW?F_$N3$v}v{Ad^FO`o&vB2cq zs@=u@A``Yauw3_Yh_1X85a6B!2S>$OK`E^nSAhKSbM_<2P2}Yl1yhAL3vbX}KfF&< z?7NyF)9kymMdN5W<(xS?0{WC&#ZQl?KlXmfT5!UD@)@;PdD@t#Klw3LEzMNhWSN;E40EfOMdMOB?zmE+QdjbNE4(*lJsXxFyo7bm< z%^{o)o#e{@2or9Vr**oA1XN;p^ebImOk86&YWF_VAW`B?=d^cVQs4^ezF4uSX-WP2 z*$A9N^okw7m2qt$3M$WT9SEYZG(yh}Hy49y+5m44g`LXcat z(WfOMM71GXwYVFTltoLD#vTn@4TdqmZ?2y|A%%4w@ffPVUs!4jqB4%8O2 z+p8+sMsrh-zQC4nKddwEvMPWKMM1FvG}>kHi&WBisdi}Pg$13 z(t&}-;qobC-5ol>v3!~>xPV=;wa{RLiZTm9!B^A4$ITqM^eSjylH6HZbpD~4FPCf{ zbj$2kZa}afbM9QMV=HB&$UGJwWMVJTO^g6^9;FU0x9nES&12e*21M52#zIUTKci9a zYo4*CXt>tRJe$9yb!arky^g&*F+4wv<0|X?UPy|?31)7gB{Bva_T_&=P&~#MMjo6j zncHHSEcU)Lg{>@xIBi!i^~snNq)YkcJ~00zyz^;Ss)^xL?(EkZ`CPf~9A5bZ=LZ~8 zbOAKJs?#d#9~`88GA)Qnv_*X2>l^&|5x&?q{cjvHpC$>9%VgtpjKW+# zi;UPseB_ZfWZ4$L#`D z`s-MHg?=vezvl0M;WvGC0&l#rG<{6Hd%TBZX{7zj5VT^}YPuDvKm#w~4<#>yO!&f2 z{|sSo>9$(P(aUcm5Ugvqkp_Ln3#%N!)DFs_IKqwm>!bPoj4fv?7_}(>~)Ju+;q*1f7h0ddLcv_@2ZkuW=}*2$=xy2}c}8p0RVCuF&z1 z8bB@tot?c(7eXw)&VS@n}zJ0bwj%fy@rq)P9 z2zmmCrGIXvhR-GMLGixrt{|enif-?q;DdmB|83n7 zQ*obP1Jr5o3+xFvYbm~lJvVXpAe`x(tA{tAb0T(;o*=P?paGma#LeD!!a4?u^(NT$r7qH}KrPXLn)+bmrQEbl0_w*<8%m2` zE3EuJnL(+<2lPZcF>^b-Lw@KNX8`BlIB0UY6Ng0FWl$U6+SMp+Hg}xHw%6lv?S>1# zzz4`7D)yJ7lHaujXCj`#B{hexBakU;HXb@y&d$LALoF;J`#`UMIzN4ZOn>5-n2sdg zcM^=OytZE^#D8DoEAFRIBO#0Zu+`o7osOnQp3>jcO@&E$z-N7F?)#=7(uuCrRZgjz zeZt1FWXS|_7AZGd&@z*q!+$BeHLofTRXJm8wVU!i1NQuq)62zlt?v_TG?%JxX2WBb z`L)IBDUb=I^Ex5#T7vX1r)UcO%-EEEv`Py%Gx}SpVJOfl`G+O9+M$@okUqxdstkS7{?d~13XXLIIWWuhmn+U%Y?5iZjq=> z+?q?}2d|5R<)mq;WeNlB;Ep)AmJGSwpvfMStwq$ik4*kOB8IXOfCnj3$A|2S^6S?u zYUQ*@&u-~_*11I=ybw~{!oc{O-q)Lsi7S8Z5qGo=XgXfi7&~><6$4!X@f)`)VRA|U z=^KCDNS^yZj`AD##7N5cS2$?zu4~tg902xhPAfQoRmw(Mx^VlFUUlGI@a6Kj0}Jj~ z!J<>YYc*^2QJTc;R>sh+NH&*sv6>DKKKP!edpvXYheYQx>l}zru`Z2y4e7YycH9TS zU)(DQz~7VmaQ5stE+}EsBqCo98dB;K;_mCsYNlp%@1g7 zlFBJx3cG`;`Uel*v1sF?DZiAr<0)l~P)_UTYV5bKql$TC;6-?Ed1PEhC;a~a%s?~0 zu*d8_Dbwc1b8LGGn&Y_acnthsj@vgAj#G52jmUwF$(~wl}nlVjuYt* zMgY_Fmvvw78*jWGy`j-TE@g%cD~&r0n||p+km~mT43rb1(v2{r(xo+S4n0k@Ph#$J6i@M zSzet%1Lo`9iVOug`!fMFzyH(x4d)U>VZO^vJ!x#uN^T6K$0nR4jhh&K;tOyX#8%WG1e%= zehlzAP=F*>ZVXIf<;;|mPBUsknhJ<1@*J;0nMcM1tWXuy;(pd@6J`2^>e_IsJRR$4 z;AS4ypO7qamtg#`(OZ^TZUS@=RvN2fSaU_P3d<+Qt;tH*lfuRBQtY=On5Qkk@7Bbc zJ6*y=t6L|~FJ4!gm39rbuaPSTS7QAMSv5;1U{5uw-9P}wN`y@IS(f703gMa@cXkMu0I*q^<%3!oRU!BYO*>NzuzKG z@upGh;C`|F9C4~WgIZ^*n_3a;>2?eI(cd{!- zfr)we=?ZhYT7%!G6YNPYaG5G4am6Hq*7w00m`s&0;2&v#1ogT=s`qH%qDC8&E$D<_ zXd{b$fckGtM!849A2gvbGh_f&P^wVJz<(A>4PIFRz%^}#MghPyaDw9;tmSdAUiSt& zuUwV~!C2s|#jdrBdjQ(D4RMb`y?(#oJHfZUjsS3`$xu;GXZfeut5u|SQtnc&_7R}S zr%++w1IB-BV*j9?kmuuAK91d{9FzemHeODZ0zQadw;sXx__gT8=w6)y-MLgnmni3o z8?zXX*=wbR=%*KI)4V#3D%Ul~YK(xiJ26w9L4Y~{py=lN>oEU3$L|i-eve=Go&iDq zUS4^?VwI5t-H)?1xhjBv$~pf`6_en<#~E|wN$}rInVbU7Z=7G~=fmIsM1HT|r66Fg z$K)Y`_DmH%{Ip&3=M>6iH=c93a)KhpHd=0Z`>FGO8sJAjT6`ME`Fr%1_&BzIphV;$ z5kP_RBDu#x$~5aK=az_&ZR7!mf<+Hnw~FmLA$O4LoC_2}ekERRok<9}TDef)WDs(( zerB{@qVFlEXe-dqSmp`p67)MKXV%I()}N4BA zg)%*Ca;d`7Y^^pa!Ta81Q`HJlJ`0WMa=nWCvzOT|xUXOOS36r!zppDf&;+U6tVcxv z3;z37{&~vV9sGVb+TFeyKRanXu=Y&*LwY@VOWXA}2OydFuJe=+uuOzv8J4#@k@cX3 zdd-7HRH5uP5$)P~SpOB)KO)`}U87(=PWSxFvHn*7m;S{OAvY?ncrNU9$`vC0fWe7= zCZ3_>?CDr`^~=)b>!K^gA7Q_a$Pv$hy~)4UzW|mgH{Rpl;HY6)bLGcP6EpA1*y{o*U2ZWGF|9y0~(pS!ZC*2|ierd{01}5d( z`M&aBeq5A)KlUH{wEX)kPRh@FAOQoM7vTQL{gDG=`>G$v?5hLw<9<=cb*K(p_%+_n=;FVC74*d zL@_h#Y?=yemAYD^$~!YMv*JGG9tO;OA#johOHLQ-AjS?5C{YGi;doQsVbX{JgcKY9 z(ed4vse;6j1CDIL@?ha>N4yBIC=VVng{1Oe;PV5s0Fbr}%m~jDG9euJbqXdGnnFDA zYxrHe5DSlBdsb){45Vu7_=fQf>@O!m8BP6GA0H(jjq@!?#J=TPS{Lo zL%9oU!gj!hC0*q*CYD2hGXV{(O=zRPJ5DI-E=4)5j!WY5tw<3UD4leIdb3xP&qSQ__n(6wyVi5z2engtJDY%{=6M#Y3 z4xmVyj^m!|Oc&@x`}zK?44vS;FanqbYe(~gg|L@chO`L3`>D9tUaArDGiPab8SG{L zGIM!INPDzAS%KwVt1Qd5((U4LnPu4iQ)h{=6c)#E7sFnx&kuBLzevG(aNP5qnKn&n zw?)xx3OHGAV}_>2SZ`L!)hfz69y?%M4*)rDXgstV3SZt(?btTha8zbU5xzk7%7wA8 z^Nj|#%*F(MCKo_jW6aX%g!eiR6X7^+s<43j?Dv4zt|s*P`hN{h(EtbPkAXyUlAJ-jhMHlDv-(K9*?Nc0AH z5#UGz8x|jzZc`46aoIkdnBHOh$ItVx{mG$zwzHxE4It3~(Fgi#1j9-4qV<&SVflXN zcKu4&i^a3W6VVSZG3MHn(avY9O{wzCB)L4M&+WNFy-+$JA80qx?$udg1NLYAG_(A< zeUO1Y`}jGszx;uXJC;gF^{OHTtOS5I3*{QKHYn-Dds*0ESHORNGPk{O!0y#V0=Un(Dwl-kUV(gye2+`<+t@ekl#8qP#s#gM@Zcz=9G;d zA$N*b5-8h7*NYb_gj}y*YFVhKOO-P%(?k8}CuZmeByCb_JV(QOnhb=ttaCi-xiKu$#=BXz{T$BAfF0(~tiRjf&NZlV z?eW5AEnELjHV=F=@S7=rGRuzN-mbjDUN|fWQY_(9- z0x&771`|;J^_hyE@hH!;mD9Y{uunlB=LS8ed~+Y{C;oecD%3EbjX&Q%zy0m2@?k(u zkN>Vkfur<;0x>^cuyTq-4@79s(Q`TlPhRk!&~J8-8d14Fx(@5_k8X{wz_O=9p^QK& zRcu$z^f3>C8H-H<<`2X(L=*LYhSTP?qMdD$Olc9;AFr-(=b`dvCe z@iJjH?D5)4fo^Y8*Sflm52M`Uy`>W7O_Yz9fEmh?OItFitm<$>sW3&4_tl(bm?vhr+nyPpTDbSSh%e~cc0eV4@g zg9P_a6_><5V?9%VWBno4czuJd_o&Tu*Ym1OXe9d_THU(3$o|VtO@?U=3{^>XNSGj*tJd!`0 zf_}ii!@mm4j`CCSOe~+PZw^i}Fd^ojAg{;s<_hs7;Y1IqzoON~ngA0T&J1BzLP3-| zn|^t?+dvXiQnHXr%j{G5nJ0|a=mcnW_+MQ|VWPCS?cck;h4YQee&grgaFM#LWnh`` zAwUgb(3U~p1F+-?j|g`VGPYAVU+BVqtw(c8;v4wgNL4Tf;=B{XqYI9KU79J}Qd|JQCRSZKp?a_YNetX!U=mYKN|lLFAEzYM zVO;_xBuqS0Wt|g+N|Szpy1}SaYh-{cnM$cfqF%o3D$;m0&sCc!KbsMS#}HTMx)+t zlmQyK0Kp_E-x#Bd#$+%dZ4UE>W|8_J9ML(%gYJsopefoK47A()m)orVx!t#Z+S|TpyGjrU@bINR>Mi}^ zKR{s5E@_oJ`jnB1JI8bnv$0;T4a*u3NYu}BPR<~(>m${ZL&!V+pQ6CZ1(@<65}TOk z0EyBs<0M}0hex^R+8GoLwncqk{C}*xOQ=%GtI-R3C)Phf5RiktM!(EC6YJYzQ!re# zcM~bu3_Q1!dX*{}&NZMI5>thdW>@h5j3!fqYAmP9hC&`Z&2n&_=O4ZJSgFRg8;A#52Y9Xh$p+ z;)&8KX+GNB8gsEXBa86_P4S9)UlPm?n$XS`$uoimSR*qnti$?+rWV$~&W|StRXEPP zaFSLDJ2!3)C>Y4>yzFF^e&{zpJ4LOAU69pOI{&lK29k*V4R3~8PtT*yR;f~XYcM~U z47*lctj-WH|6?wfTWriv*lVPP60X-d$yjH5T)~8BM3V$hT=Dtz6m5c0klr{zSIqPAlF#{`OSKE_?jdt{rF`ZJ;P zlJIM?lhTs4(|Zx?Uk}W2I(rV{KIr|tK>#A*J|7eB(|>{GUq`=C&X4GaZ09*`DCgUi zUnxJaFdyp!?1D|p1^aOzX`i?21Ji%Lq7RY!D^AMK%K?YI2OK!xz}pXRKL=0y$?yi- zUk#SO`0)WEeG%n;!2RGL^@H4teEvoGb@8R>KKQez=ad>QRnGnY?0spN)>O7`e%v4Y zxX*KPhI=meo^wxf`t*Pb7!ZmosH&YBsJS4_#h3^(D@1VsQ4>Y9oa2l*B+j59ail~v zK?I69c56#JCEBgx)ctk0r<>M(o_*h)@7rHt*|rK|G32Qq>)A=ZB(<~G-fOS*u6Mah z6=Z&s<>X=mfm6%!FUERv553U25XbK(03<~$b8D=8IDn*-`3Co0nyXdoO*p)hAuERB z{+f4kZx*;M-~WGB{oDTpps4d7{`DVrq>M)wi5qb|`o|XWuL$(65LFSs8zBDUXa969 z&KH=KDm$dRWH|InlmFB4f6qlg-}#s5f8jo-cK(ykO2D1g`+p7kSNvb2z&~?JI~=Rd z&`y@=xkRq^hbI6e=?zW`?#thg1AmTo$$?4B3XDnJWy(N={!W>UY&e)`oy~w`wmjT! zOeIRJ;s3T>$XwTT2i@0c!F9Orx9uO!aFk2?v&d-Fl%%E705CeZRN7Tiz7!e<8iCQs zoM?b)NS~xlNhrO^n&ul307o>>NOVUq$DF5PJR;O*Lf%i#_b$*_$pXu;&|c@Z2Ui9x z)9)sW0fwH}?~Lz2dvowWd~Zx?r@Mx%g4{_TcOS#~z2s^7INC4k9oADir9Y21SWlz< z3+p+`9E@DDmc_A&sb03{4VPW=`qMovPNR}eNn$ZxEJl`$Q}Ca1P&)R4}5x5 zx>RR?sC&sG|6IK9Ex`OaXef+xzEYCuKYkBg)!#T z$)|~ZBj|}=DGn-ygHc6EHwO+ybF^BE`<$hXi|TP52f7?Kb5bE-#WH%Ei~{h*Jjk(r zhz|RsHIVQ_zZcJxP6O69zPmSEEE6z)HS|?}+yNj`X+Qs`Dj2ks(&SVb%t%h1GxPw) ziHYxQz;WC?(2;$QACwu11IcEYnp)%I``C5j&>ZwtIo1DJC#5Hs{+IFppvNr;8$y#zNrS$jiZ=@}dyaWQvc<<(TKdv37nH`bbA=D^1Md%k?8JQZ?;He4Lq4hBQJDjc!`zzt2c8KXtY z9I~naP!#g(Wuudyr&GoZ%-2l*(CbY0yrTpFbd;{o95`{d)0SiV0uFdi?Gdb3MaCqf z!DgknmP<>OdD=mYN&1d>or{t_@ds8XY~zyQ+q+GL$v<*eWP8PQ_vn^lph!v0x0QM z+d~Wh7le9eSUcvYutg@gKeJaDpdl@dhWm2nHg1pd`GVV*-znlqo zxL?xN58rc^I!SHC_iM+_e4$2ZK%ORd1+W+6JR?uWkaT42r=niF0M59K0qFzE7!yB< z6P=YXORQJo4xN=y+#Ih)`&s%}e7g$(l5|VJ5|XZvE>c)x)Iu3dM$ogV;%Kj4#(XL? z$ZQ@3j8G|A480Z0O9w(f>yxrbv0386&}4vv1Qem%WO}Zd#2nNK{ZFdwk~ZkIS1k^~ zeaAV~&X9dw?J+*iN4PGm5=wA>ltB&*?tq<=R4!)zf)PT6$(S2k?D9DS6~>GTU{{7S^F*4-+v17z%O3P`g7?MHw7|TdHd}k;0^~WeRoOH^(wUs|IWJg zb@!F_;P>o3nB+`Qf28^Gvd4W%f5d_v>7vA*#F)=)nB zOZrzCr2fwPq|eRHAK7`}Snc1Qij!u~%>Wh04xl2#Q)K#@>Fc5EtB@&BPbtu`YM5m2 zof)ibqm+$X$8F|z8q~gzACta0zeTg^%+p< zPBPb=uQJMKl)}m#IztjK>1FxDa|{TxNF=?g5@duqgL;>&0uaOb&)$qFY2bl>Hvi=! zN(Z-t5$Q89hqV1e^*;>6@isB~$5I^6{p+s(jq@XvpRGEn9RLk&;Qql595hB>wLcsv z&Bjl~pW%3&{G;5D7ejjgHRmUD;Fxtz>s^BL7pPSV%Q)kVKOBg}fjCDy5UKn7@%Qd7 zi`OxxA|VAF*-h;GS@i;AeBnSP$n}kgw^R^o@}F;7EJ{@^xto33W=}khYQ#?Kj-5!6vldl(vygXmgn!XXkMpJO8@1 zMQ6X`_u=<_ReC;t7RO(XJLprmez*0cv<~e~>rt`_GPK;_?f^ig;ClBu$ou096Q*C+ zThrw;WH_p{R)v*Zm?>8Ds)QVq8=wrpIIeg4^**H+N_XY@DSbRRGUbx?{y8`vBUKn2 zf;lP7Gbgb?L!AakXdz>nJHEd&V^SfLHw{$aIYp+VqcpH~tOY`NNednjnx-|$73{lu zWyz_2-hn)@6OQ1dK`s{&peU5=oep@a;wGyikiZhLdMH^29l{>v%uEpnIf1()IxwC`v0ZCzSspwI@Z>w?0vr-u;94q zCk99|0eIHNCUqFcDdV38K#bpHS7QG(CK|2{#W6HE| z-lIPepmYy`K0%NETF|rOXkFv$b6!gM^_rDn+bN+$Q4D~w3r3LO6^j8C_PU|<5Zdd5 zRrJOH`<&o<{lWPcOW z0iD~zdVvAbC;IjFFdKHE-5{3t!n|Z4F#-Eo!*BM94Ca$UDX>|#=GUl5SjdeIYa=A! z7-J*Ga9b?-%=QPk54UH&!e~@rSmpbNugC&p(Qz~We_;E#*q?=xZk$<<0Z2}3!+y>m zqt@ZOog>e)rwEij9y}a46u=mFzr=ultkl(RjH}E}_}=VouRBi;^Wq zs9o2kc8TBh`?NGC+MEGxy5H)nXiryLJtj|&@>0*WII74Pm0ASiu*9bpn*k!H8Leg& zr0$GNY9NhpR5Bd$^xRmj9&&~=K5WwP`~uU{e8KQW=Kx$%=Xp~^=4U(Cn~DGHy5Mr@ z99)05d$Vh!y^cIcZqU;bX7N2P0AAK+eHDeDC64qbV*qvZeerV^7?y%}tj!YaHtRii zs|(djsf2kY_0R8+$!@^8+g277YUF0x->JxgNA?YLQ z?Rb+8y~h0t&(HROB>fIqKO90o^i-TQdu|4BICOwRhHuF9C)1x}M}LG&VS7qpvyI>P zw(-jh%tJ6Rv+X_$QR*tbDZUox zA9ZihZ^ZeBh%H+_Bs`D93R~A&l~^6D=;Qafn4!V$v@j*5Q+Y6&A}ydq{PuBfbcKt5Xe>9+1uu zWV`x?XS(j&G%_gNNdj$w*qOgR(wYZ#@b5 zinWn4hyQEwrg$UHzwT}c7%=F~cstpQ_S@FZU<+g-?RK{@8SHU8A>Sc;-R(>UUnAYU z(smu^zpZ5VVb>ol4|)!NZfxxew&M6(q%&ae_nI5VEE8^542CAiK)*-7%VmIt=*H!k>^ZMyzjSPU5B64hAII1waz}{SWN8KVF~513{c2X(lU?p@Mo} z0230vtFAVAl`;a|S|0e4UYE7`mLlrP+ zI5o~tjQ>j|l=Sf_eac-O-vqt-Mck>cbrCq$0r-Pn9m9-CE}KWw{c?a(I@ZVTF0}t! z`oLv?klzJh^pFrRmtM0r=mjeOS28N?P zuPwG4Hl-73Qm6WrxqiE;J^j5r36`JCpNVou<7UfM$r-_BvcE_NTz zz{7#c`{Os`0R8=1yfgM)R#Nftm@zHi=3eVA@!)UL&J?FYPbd1CSgRnBM5tUbC| zXixS>%XJ>+FaLCTOaecge4a8B?VGKu$OZV_1MVHcUd8af5Lq@b|5eI&KGCN%wJR9IS2%EJOxG_UP5e%Q?0U$t66GEN0|>tNABd#e!ajvVf_1n z|5yxWB>7*;{{>7*gZuRUpS|D22H%rc{U_dIhB>%TsZ1#cHlYNY${aoCYpPd+^NVaE zR%?*RXJ-z-r9zEXXX5<}3_*wd{@?ZgJzB3Xe1~E`SoI=fP`XU7^O)q!QI}hdxmNUN zJJpmi=s%1Db0W^)Vx8{IFu`Afizo`c*MZ`NPXyBLYyB-;Y!0D3Fl9=rqz z020~4B;7@}LdNcHX&Yo>?G92vlDkLhWbL2;Op=bQhNr40$p&&hzh3rqkUPh#G9*Pp3Tkh$3xF2izAfkkV!Ba%s~LjYY@tDe0n%S zu7X~trH&F@uL1~QW`LM%9Xc}W(9zPb%r2=nu>NVIw3-O^qzuL+8}_G)5@J3WIMg<^ z8RyS8&T^*7&?|DcbY%>?-P)}`Ar%j&iu1>w0P7Iu5hnj^edz8W05V$d zN}FBmGvdg43dcL+4fI|eCC}-7^jaKWL9U9=*ARfVO;t}|r-$RhMzlwmHF6p31R@U> z`*s3=)HYz%Ns!gf;8F%;Zt_r~3H>%ssS$?YcbxI)3}vKT6{6qGd`af{+E}g5=wdkH zK=z_NUjUF5$4von#O)a_GiJ@BLtpv#;J^`{Kr-2=_l82RCgxgH72{{3G8!og0L<#Q zyO&|y{Z4wv-7LY6L-T$do@jOquiHPg-J9w;2O{y(t-mAhTFgG*7w^^|M?XI=q0|`q zd8O;P7vXzcBA=_Ap`esvG)-X%SW|_OA)5~;`b|b9^m1YdI|25>G@)6nbh?;_IHM6y zEaCI%LV0|`?1vPH1j+YQ zw0d?Qr!8!OobT)5XaW7<%$D0^N-y+G-%#O)3NBRU;CI&s%Oo=gU>E@~%wY`EE2ZTG z^KkqyL6bfgJRY#`w#9u;zYoWE(>y@vRegKB4#!zy$WxH-=qR}tbd^f`h`gnvNk4Yq zwnE5Hq_-)P9|W(*&&QO$tG^mQ8(@6sER_uRb@TUqjyz88K>J}m&xCYMaG7f+un&!y z&IA*F7`4e%@!o?}MLh}a8Rk?|^Ye_k*HQSnXddwPnVv8420)Uv7tet{=hq`E+Yjs^ z*}m|*&hHr@Bm;zGfRN)I5R(0W**w>i^PG?kz@8d_-_;<hf4AvVaY=KVQ20FVNYuEceltViRAAv-JpBqRn@y4b!r zqSPUi62^Q}1h5Db%s$`aVK1V6_hpBMrs(qZ3ZA#0d|L84sqGXl) zpDTW}4;fcNALArAI_5cLo#h<`fDwMrnSI!OTX3KB{_OZ+zUOiLd$Sq+1K?4v#XOk# zs3p?Se^*PRysUju#Td8_?#Z(KwJOrn?CP5WOQ6fI@D8sVL~iWWJ_`i){G^jZ_E!&2yTt6iQO*ues34PH6g^TRw-01wceqvRP0cwq2b&nw*n zfLZ(S0KHlN{UH6v?T~W>lytKZIL?g>8DKAEa>P2w7?aA-ZdGcWG69Si;rYr;w4WsT zQZ&D?@{CD;h~Kxi(Jsa$4hZP!{V``y`wK$QY=8XU0T?u-lu6Bc$pr(4^h^4zg;J~f zRbJU=V*GvTCf17*);XFlS(O2j zzMY?$&o^I4pSrBH7EcWL6zIVhtu7{{r=>^Yo6)~Fk}KVFJqD1OE{}!&j!hcVl4>KP zDs2e#dQ_s?gQ3S$!#q>!Y(opH699M$3`2a}6u&dq+X7IKpFi3qd;gTF3Cv7Q=#O-~ zVm$J3TV!x5>|0H7g2@s%ct6aEMnw#`#7f06h9$-6=^fGy(o#Ih0 z;sgd#Zr@(hc#w`2BwUjrawtYh65OpP22BNESah zRQsr>;-uMgdlDd!;RCYqmyN#+i1$Oy12AMVh3grGJ5<9U``x$OFlPOf_0yhg19HRy zRIJu|3P_>=Bw-``YOq~jCsBHPa6PzK06cMRmr*7^sXsvP!FSl|J|3)v4CsBt#r5mr zc5)@;&D2n)YXtyHk^+5FK+E9*c2L62W{ffDYFZBbld`wtOg-1sn%V79pLJ#3`lmf(A7`Nt>$P1 z`nz2k>9dk+*9UFMWc25)bcT3FMCm=?)Hz!NAkDqRyae(I_geQ_jEjx&ooNQ)OYuX& z13F_Kc-&nZQwpXd$^bPf0Lelr1M4OI1+?FcQL;?$Vl;~Bu7ClNx-%ISfk_;o^bPW; z2O@O`Miqfc1%Oh4$?5GFOi$>i*R3sZg{90%V3z{JiuF)%KaQ`Jt{@DUbel9sVT=y8 zJQ7d|IR1q4hDtc}^xWWZ2poB1Or=ACY&84#=_|65QvFL$S_LL0aj@8LKLAQ$dHZR7 z;MmL6%foDznV1iRaOMXdc>UVU>+dTN!ZI?=LT2c}vT*;RBa}Nt3-V}p;2!S#@c`iA z-Y5J0w*xZqfB|QoN;86UVCu8;rBOzQRYHjdMuP$)Qdy_c-p2>(^n70}kZN%L2gf3m5$g z{rWxmjkSe#0RTIt=k@#1ekAaMYjg&zw)_PV>`B{@N1L!C?R;kbc)#8lwhsU#AIvX{ z0W9$Inf_@>He6p^4;e!p*3062@qMj>*?o>_V8MyD&Yqd%0W*xrkp-H&GbT-sCMZn? z0<^+>hXr0A2v)kw1MCO%9kDN=v`+9QLcU;3VtPw{&~@=k^9B$6{@Dev!vz4z{k6mZ zNN-C~x_{}Ez<`AJT!Y>3RTTRo_cCH)-Z&>W+n*?c@xvS8)W`^+JE~KHd85i6(z|~f z0@2}Vt5_mHm3>-x${b4T!XZ(A2X?nzkvpxSP?9T$`6omPHV=sfu;LlhN|8B*m4-E8 z7Z-rhe7@l_V>tSDcHPmgm;8HjV8<-*YBHeTM02<|Q~&_pYz-Ns^E79I(2Q~RAh}ao zj`8?=>(}lU2_?p8zJ%amtfyT6j#ufX^9$?*#&q^M`2?v?Dc}&v0+jw*e@)+@1CZk8 zfy(!~x0A~P01U-*{OKy}e`B)J3O$^bXc0@0n_@JZ1Z_Rn;;16*es82wt$;BpK}l_# z=lh1@zL~G<-I&Ub_Hp@j@5jb#3QRgkGC$H+_N!uBnpnu0pB5cyyQ;=rJ7>6cl%@Jb|o05zO zt0R0Dd$h(%%rR!V2FMvno8OG%v&|{~NL)Y9Gd$+sS}4zyCkR-d#JS#NkR|vuu1qpShiT zyy|84f91dP5$%U8PTVtb;;i4Ze$N0g8BXQIm4+LqSwCm} zoH`P|r_AYWJmtsJ=QIyUN*%D+5WPn74&s%;jgqax;VNA&E%8udD|m>qO!Do)(;z>l zbepwSS`FD@-D2GYc?X%Do2!9Q$;vb6EVCMo7HqfyC=yr(?WIy(jsXq6R1yvCZv-rH z;7nZaFh>V3<#wS{qt+P(;86r=sB(>#XHu$3;6RFMQ|jw)y#Ln$c8;~(GlzkRu%Q=nM-eQW^8Xk)@0Y*$#Vss`EaYBDRmc0Fk`CZQj1rl-p@GyssS zg{m1+y4t!VcS(ftKpg3MeD_VkeLBk|+ld@820Q}bNPiCPH{7kki;#@zhXIU=fFiQj z?WAZ2U^-&Q-2yXE0bq2@0g1W;i@xVJ?>F8ryaXLDUH2lnFJ*XGOP0l#qrY#nW;iqP zeU=5y>IjU33yf-qIY#G%Wy&yozp+aHoMHozl>1ruvwaAZbez=oQv^;(TR*#xj6h0Q zCMa<9jq_{lQv6QWn&nCl4!lBXw==b|Ngc*V%A6!16Om26c$BE8h6qt2h&axX9+$zVPbC_Qa)AMZc$f0D%m!jt9{07#f$Cff~SIj&3R z7Xx-if>MvTzB}M3)4SsXX!LErV^NR5Jkx9gn1NEERTyvM#A>l*KLccp(pW;)T>Erq ztOj75d!K%-PU&av2hz3x`eK3UhaCR8dc69__RroFiX1Ot5mB7!!2L zJcsW&+!)f(AMCJWFmHET3h3TkPtCaTAI4p3SaH#jW<02EwW4K{1@(r+l)Ca?_j z^gfVF#Hz3s(o`x0g6GW_hlUj@tIb|+kOoj6+eEC^;P5tUwR${1WkkaD#~m<<1GNg0 z1HD*@I|k&q)T(nB0PHfo&SQWu{{I7jWVYfwn2!|32ym@5PMnZXdW)3@9^Gv%P#1<^ zKC&*(U83T<2iHs2kv#L!9r(^$tyRH;F}}a`g!>reFX(f0y-w*q{YCwGwBHOmNy>Oc zcLt2vCy{o$+n6i>bvVGLyX5CHxd$PTuKxN;e-xOL-Xzgpe#V?MT`k$i0z_kt0j11QR&V$1b8M zG+aZbtJ>@l=t0V4&;f_CQsOg4u_nJt95M%vWqXuUhw*nwa=tvvLn#1#rNo#Ywn-cH z`=Ouj>%WROLO=iDz9(gjNSQtMP4-xJ{u}o#E@L+MtCY_e|1^x^U__p&$cHNf)k6C}5SpC5R&79eXmjeC@V^TOiY=VBBtIZdu*j*(Pe;#j* z*FcXyh~LnkhvdKk%!_%wx4vkEu&yv+d#f0FjQtOVQd$UAhiOX*uAik}Jq zAl5g=_gj=cDtYnMF{RhIm%1k2)6`~*6EQ!GH(Kp#2kXD6iVRp)9S!NzKZ2A8m-a=w zHY(BjEk=npVd(w=eZWkrR@o)6nB`x(DW0nawu&*qudiu!Vl zm2fJ)cV<@~mR-$DT`dyxfTWZ$OUVNp26ke7@+PQkf4|gTB+u|DUGJ{dZ%~`Oq10QEX^Hs* z@Ll*kxxgQvCLHn-a2%k-5~mnL-%J|`B!0dm90T;7uC{mt?P*D~Sh)h<)ocgCO>(6Opu1g_D~Yg9ge9xk`YtJ$Hq+y;=rLd4Gl_ZYyN-`6PTVtb;;i4Zem{NyCmG%()91gZ&oG3t4*Gi?bmaQy zyBY-9^_hXW=MW6ZY}{ny=17bio?-qMicC?A%h!WF`jZl+F1b}&rUTeOmy-(>N`3ua zdMD0rlb)7Xz~|@g3*^}VCAo<2u8ApqOh@S`9i`r+nf5GfyswN$8)LEIzDTGI>mk8l z)Zr-=y#>CbMzk+6>QqKee^G9@$|#nX%C#Q*{RMVSt`5ID z$E=oXeFTjB%CJgA2BA~lUTGuK)EQ<}_J)HOrK(sa+Y+xvVZeoD`d1i&1eSTo0XoNw zc@4MT5(p`t|`>OkbzCj1zNY4X~z5Q zAWzc0=Y4u9myos|Ae_>bKGeG0%N zr(f@%$^a~hLrWQR(iposHzev}PU4yHoO(S45ZQ1X7MP6EjBoMK0Yk;WR>9FYLm45f zAsl^1lT)#(i@AwsmLF*cYIgtQB*4lY+;YAY3I`tWKp`7nY&~I);JMnk|>Ymm!r2Gpt5$~pk-VWrLXQ+lDe5XE!A_(JcE8RN@deRI6pMS#{q z$wi4$ruRDnHXnci2J)c!Fr6n3YD;Y1_}m4<1muC>V{4ZS00Md6+D0k;lqC9#76AYH zEBgAFl|bIAKZ^6~>6(}^Al*T42rg0>1JVL<8s2AguE|z0e^l%rytv;gO8ePAG5_PQ zlnxMo>c}Dh{6hbRpLR0FjMALai!me)7t8i{m3W-5**Oo+Tc^IJZ8*jvRUs{Lb3T z0Lef$zvQm(0id) z9V%0**(5g@?X+~50(+uRnvyg2^6$m7NXslYz{KfPt{AkKC5SDMb(tca&yVlG_d(EKb}rapJ7svwqJ2Nkda2SCHit8DrKJ)#7(kazl)=1i&R#)oN4(j0+{>IOEc>0zl%-PFynPBL+O;rRXk7Y7OQ3N2w=8~CmNGYN^iBMJ7;K=-c1*TjQQvxn}iZMxM9n&R{Fr91z0+LL4Z=B|o0YZ(uxf5Al3~ zDJjl;%7Wk!LJ&fD&`uGNvT%z~!>LBe!^*1^95kxycx9c+}+(9;;T{L)!8V z`cr!&GcniTltc1>&-Y$JE(Bk#c3S(uqK$I#R6h@Oyi%I0@tOPJ+x<+-H;YOni?E zAaA@UeiD*1wftH7(A^=W_Sbi1cE}vin71;!^#rwB0pQyc;QNz&VD)qI3EhSEf4lpo zP8X$B3Z;~yc#Hn11UtrkFuuW}^hR=}d!EREwhLt)dOAIs;5Vz#YsPS3K!1h$gaw4A zddPH#-p-KoOeKs7jp_eFZ-T*?`1tzqrFF>e3K$XcarWJK;P@=5YHSh?0H3z;1{UTuuPaI4PsCPR;1>6XBT-tTfZ#ScTze+>@S4KbyE2>`sn z@xPMa(iC_R{0`tHvli7v`tw7KqL541~p(_$qkpw zaGsS6BCtc#5<>WY<{Jn|Czw|h%qw=+yi%M$G6tkfKQS(fU)!8reml`lb-0g}L^M!M#MbiP3QGx9#| zL_hs1&X;gqM;;{CQ}{~)OJP7H&RElCHie97dve$$RKWf}J#3X#1%9RiGw;H%O=}eK z-3q0hGdtnP0*}6;A6!oglCLjCSpXjK@51F*?!yyOP#T{3)i{ud+ku>cX@N4{XfUu} zgsjJP3*`2W6 zFoZG%>lp>h45shbV9NS4>(A7okY#xFNMJG!@|ijhOLqlVVWWJL)lQa1C}6 zxY1f8Jse;oO*Vrw2bn!&d+-wE%W(&N3Ni>ha(4jWi*!lIN`76dPY3xmfCyTvHv${_ z(<9=j2>?XSFqKgqPcuvR4TYm^np4&}Y(E^kTBWFJ$W%)jlqL@uOU{_wcpD5$@(l3| z{O%&(RL?fStQ0PGmP7zn80QM-srbD;!eFJTv}CY61dic(Ld6`_=_>Wc0X;`8Ac-*` z;r{}F>PrkrytLiL#&E3x=a;B89%G7H>eq>lA^ZOtaxM7(uad^86L9<%ce*&kU<^46 zLlfs&>9vb-{3&vM%6t@1H@FMmXGidu`$!C68Qn-(rr_(=7CqDfG>XA|1ewr1gq03^ z$J!Hg;(P`)Iz-^mp#qM+)q0*j3%MnJICv29VS2H7F~)(TPu8X; zlwRSE@J89l(DP9G5aVfT?zGMl5db5HdG0{uk_UJu8}(i}p3~r$8K>eoL(IPNk5y#aht)y}o>vU~bT56;&4Kw9 z$7FW?xC{*O4Cd6)jB%5W4-xALEB$9xMwgK_N=6C`0`ISdYlQ zAwvHSjB~9zDT5>Vd~cy(2wf%F_F6CLt0|aTg7>U#7BbWcm>48DP+5k0kUCN`hcd|= z%GrMA@9$?gfFK3LLvI+P$xg`6=zh8#H@zv5jq#bSB zJ>Q?D0*J1R_EI2$R_hP#4M1V8tl?CL(s62yUD}ohAgQ=+o-rmGe$aZ8tp`0DP|W)O z#OQx+&v6Ee6qsaS-{v>^6@36q@@kW^2zF#nl}n(X=c)6(DRO?jy&QVpiQVP{78s87 zguY0@cw~KGF@V8;(|oC_Kj`n#ZD@ZQ>ET?^yl=H5lLSufgzhLk>`YL{uw7XKx$5n$`W%% z=klesW{N2Jg?{GyO3w7l^qM8s9C9i0Y`=L-?l+5oCwroqCRP-yHfx8! zLMw|Hv-GrNj9-s&#>O23z&<6djv1rw$HCh%4pYtm${9hkeZ$}1H)Q>DX#JDLiF+na zob`Lw?}CuwG%`In5%eG%=sgC=$_%4JGmNr+%la*Kpk%-!sfYU^A2=-pQs0e#8E*(E zT^BqUI66wO(dz=sW*MtD#w;W6ara(&w*>%F5K1g#HKDtMZIB$$62%=B117yl9}Mop z@h8a5;F17CPkfnV<33l#rn%4nz(JmtOoM}sWvGu1!JMRNvgRRRtWFlD2mmt0mn2pW zfC}j@ayRbxw7WKV%%T*9;-qJB-wp11iv_4wOAlHPLN4;=dh>8U&8g^JX#x;o59_Q* z;860*ZGz*R5r#7kb(cpPsMP&=-P@O1bxsrhZ%Y|&vP^wm((e4ES{#n|KToSw>Oy2l zDs@JKhmve`eAwnwdUHJ6nJZKJfW9=kNI^g8j&%cp<1M}`UJ1#8DF-tjJ&pc)%?;y? zI+%~7ZRABr255N+$G?vGC}TQ0Isr-iyP$+#z)I-7;cg?FAfsTt^(5po`i+)DD7`CK z;4j2DT4s$F$3o8a%R0(c0FmszLf-_8NNs)FPud5-pfO%)#(26kSSrrNb+;jp^g>*B zZ@dy?4$ND@mDVB;<1;+hnZfRpJKY)WAd}bEL{^exR8r>+TZIxiHcT6vvFX(yZg#+Xxx)bfRL<}VCS`I|w zvZvSg?D-@EM)lx+i|av`oyoojXFzhn%n7~uleFL64*7oky1tPDSgUW3A4B_D_p$hP z2>@$yi)5>mE|-=n%+6aN&hW-zzMt-cS;fHmqc&-k5tt3M#$3e#=y}p4SFB(qSn`2I zUP6O2_GRnBiLowZ-}&hJ&U~HbB~nucOz5v+v^c5=0AX&pITZSBh+|Zicro9fE{`?A z^eSB=EtbJZ=z@`uprjjpDSia=!t45;_=y0(BME>digh|z9oz(YdvLwG)M5LmbG+$3 z<^gl6sHw0|%|@Zp2Jp$R5{JxTOq;{}fw+IORvw)uV*h9YnA{1*PY?F0zyit5Vns*S zJi?h$7O3MRmLS4Q{}jg=XFlRG10Woe0EFWAJi_0P>jRgZvCr_DmC98B!bQWip%}OI zHd$PvQF@)b%so2+b1~T&`=krd@C7LVk_t>=J-FWYl)ahS7rZnZx62d#7x8+`4;}8> z_%_T7H(1NbBIxzZ++?K{{W#9756hw7DI-!lfXgTeUZr5(DU{s$l73@;VBaYPBpu;# z@k5Qj>^a|UeJlc#x-l`a(wvOReY)T3GvND#T)jCA+5$|lzP&wWI5U^q-%m@Ix!iC}cHf%-jj(au zMXISTfCI=BW;?TNFaUYyn&%pnt|6AzFoiSt*H%Pp2kJ5g;_S|eo4`>I!s`_72U)L{+)OEN)`sxH8fP3vq1075A@u?f%p z-b=bM#-sfGQ^`xm6{S>{W6UsMZpyLuxWuSa8_~W<2J?}|YRsdp0Dz>{C5rRV4!*u9DNh*I*~D~ zo%1!BiS$;$Wgh~OVPlTqcXOiY<~R){UG$sWOMFVVxf^2!tmUPmK9@dmcLkJw;TG0= z1c3IE)c(t_qZz>Zgmm;~_U~8hUw04mqR4B2T0zFQ2aTMfOugM`R7_&*)Dh2J49!UnTVvK%u&d>u0 zG}?Ip5@$x^B{Vp|l?Q&0xp^)NfM&o3yNgNkSRcP!54m1)VAAO_0PB6a*6CWa%wy~G zJlT*(V|`A6Nlu!m5?ran9+e)|Z+4OJ;@<39Sg$Sd0&y0k?zh=33Z<%FmK#tCM$P@F zF7DHt($k!idjH4)0RO-M^`tgRTXW?H26iwYW4$~K{X54P71dx~NlWzb{uW_hdXtQ1 zE^(Z{|FQlZviI*<`4`s$V-`~fCe0g9de@Cp{bq0OE#vZk})5A>LwOrQtOO2#t-NKB9Z0pq8t)vglXO= z^y_G`HY|hQk4jW~Fy?`oj;2&=EP-u8(kNt!E!n*A4f8^wWFOyma^U*}Ww=m!0Q#D1 zR4Y1Rml~s-IvL|HxWYXb`umGGpU}dY{)#0?Ph22jwqGPaT>K~lYGgo-45*Re7P5ID zn+J~EJOBea8(=*%z%oblR~*rqf%yX(nA!Nt#vcp(9L6~K5+Lc5IMH8>0rZJC=?_z6 z^w9fb#|0CQer0e89I|&<*XmbFly0@2k$fEh7HPN37?L9FzSSQ4-8CE<-RHd zj%{V=stO-KAAva4XfI7_j5@ObRI<~OX+jE6q76bb+RLm4yF~zCiM4URuVqpy0FZde zH4b>Pyx}%uJi5rJNf_W_iBqkzk|F2WRd%fg$F`=1H6bfe(4esrb&J)J$tVZUCAwqa zx!02g;R48&^rDbu{H~I&cH3PF!uC7q9gy4TTK5qGAd>a0^;Db(f(4Lo#+|`t9n41v z|80d#zYC5R0Z9b_5^wYGm&s!kh!g-&hVRS)W^V-BQoUp2V>Q0}YW-@$#*L|r3P&4Y z8j|~peN_N6w9@Fbb~wJHkw&cuU|(<%;*7$wVMJEQ$Kz ze2Xw_{{SC>r?6QjB7ju(B(oXE&v7Ou3<#JxRKLNYdW;3QdEh4fuDJp;0c4SB0Ze<0 zNiNNB_TUJ1>YegAY`oRv$}ql0=Z338S0Qs%YX(#m00()hJTk#Jjn4K?_Yvp}u9cRE zSa*Vl0te%KxAbDV{=KK~1EdzE*`(jNTO|N2tUR!S11(O#08nP%lf$yNj<^2f0Z?v7 zS}8z}{Fd$sDE$k`1CajczAtTaDdqYErm^@jDGz*Kf#dh;x4X*-D?Mu|XF)F)iF3S( z(9>D!B((*4J~=l+t-|riLQ_(Sbz-v8C@?0o)3sJP)#u!(kl9ll*!m@A13Lo{Wb5Ja zwH_WX-;=NFyj0b^2%Ip`b3JJh8Ss#=-;>SOuv*1F&Y2{)GCdbg_r_peSR~JtC&>U3 z+0$gr#JnJCUab#%Qmt3Y`@l}jk%mE7_ec1|7>xGl1WcQqun)v~aoA!oS}3iGs=yv7 z%pWPEBJRTh@w}hed#0s&3d|U+WK(8mW_C6oABQYCpx$dUnvA^NI;4ge!ZCg z0+6H#rP;;v#F-f9>)o~bZCE$|NKm2>>*inFPo!OthvEM@*6k5@59|gGNcu2-OJ_i> z9W;m^g7nvtFr&|TiOMM z`JS&=oY{GHGD>3!FO&QRyFADI5|!Z~tXs2^$^Hlf{t$AhyD$Mmmz39A#sK0q3a5oShT~$TRwV+MBv%>Cp|Du3 z_J&6QDA_e3W7fDRsf`*SFVTh@3{Z5jFHUlJ$$+6M|mM}w{4tX=6QWpvUk_5L(H@f)$ z=tJ>+0s1TMh*?Rz*Q6K8^N=a?5oBWJOXqPwN(MAKMuA1{p}jZ%-tPo?{d&XNE-_%? zR{FTU2J(U6y5MRGz=oiSBNa-^qLcTXgz-1lXtt|01a_1K#x%5DYX!X&*S#ohAooZG zAQF@AbAjtp`jWemcxZ2tHU=JROZoOD_u1fXijsk3ZE$nk#h`Rua0NZbhn_hLa#KSv zBWV+IO?Y0DT%9X50f@4QKUX+i9Ak8q zVp|tKL~gJE=+w8wk77K39K0QGLK_Zai#d${8vM@M8>Ein{5qN0dD0$|InGaXJMs(q zsmsPeTB;C|1CRcse@J(@up_Pat!)wmlE1Bo7VH%AbNv|t0Cl`kzb{TpSLoO2i~;FV ziIwo3XPoXZfWdgVMP&1NT{NuE0JK}f%6)@Mq0fGe%}QUe03z}8`d^3hd|u#8D_>a$ zj+J>Yd(Vsk$v$!I6|T2jj~OtjPGkEv0ERr+ds?+H1nYTqShA{r8>LlAiPtYdI~n5j zhpbVD^y!EBfZL0$2oE#nqlv
q@zuZ&VUY~BD9C)<~$^9Fubd@ctXWqO$Dq5Z?@ z;X-9X>R;fDo?~*@7pasE6O|QxFn$+=Gvx^a60YKv?(zVo3Z<9y)fDS4`4l^T*kN4^ zohPJS_PLd3EIlB7>rGI;0$?$ zUyb7&2$`1r#{9ucavgK~rfl9ivh!9qMkEekO-q0~h5aV9|cJ!M#A&;1Ip;)L9gXX79n2P`mj7~>!xXe~Il{uE%tEFq9Y@|kAaUSKc=l?SOCuo7XRv;p!BHxEqe4u~lNCCFZ>Gfn|XsZ7Woi7_kv zGT0&oI)G1PEnV$00M6ZHCEA|5!etxzhxB{ty|e&K!tr(kz4gb$9xh`U* z(PoH5sfv)1=$8q@79;Q#4QUwK3l4F4uwCllcsST7#r3)|C>jC>_cVJ@I0WaXiGw}o=anUj44{dFfD;^mv&~Uz4gSCR+E{Hk?vpzDZRney2PSn7Jbk4t z<})QThxE7182ye8aMs_PVSr1*=2Zqj z+G;(Q&ac0U_vlYxe11sY)Y&@p-_i$er(4K8C+WJ%fk<3tc4od`vVJ%|`hkz@q8-SX zjZz>U`~Nr~k4q_E5{3hiICIzs@f-T{6hLWxXY9KSu(~0>R|oJY02CI-SGd=^OJxAX z-KEOh1bUjA<1+@N+1_Ne)n+9XM}}IVpWm}U;@_UX z`MSpE+i#TFdU#|5oZoT%JW<9qAD0Wl30ec@1#ZvHP)B&oE}Y~w2;~B#TyGD{K`Llt z{h#bKIOXk_M+zl=IrGV^oEFx=4q*4G!~D{H-Y7C1WsFDJc*l4<(t5_nH=Cyx7m`CE)gX2H)8VZD*Th-3qR6cKH(41ZxbE^G|p*NYZ;Gko|Ri7Qd`ke}0)5hb4DvOy#SL`;h9oew#BdOCfJ8T7NO~OCG2jvdD7_Wz zbhn@#1%dl4+8d=c)+z~1N%6J8)r3(VFGHC$03~pIjfIkL?hbuNOzF?vm-Uw+_mS81 z*K`1)q+i9aL%waj8NY?&zt-Qier>V)zooy8;~nuc)_Ta>B!}Kaz=#wsluZqeKut?n z39B(VRj$gx5f~204H7`Ttn`l*I2Ky9zAO5NkYfKiN-3mrYUcpR7VXrI0Scs{D6DkU zC~a_`l2yp?4~MQ|%p6m4HA0OFpp(~ZG(#>>CMs=^OPtx_OpO6EF0q#;V05Cl(wp#} z&+BX4Rd}yg$cygt0sDWpOAK)It{X`^^n>~p{l*xkzOH|dH9$@FzJ~{#;^QE8cc%cq z*QL&s8EFfB+I^f*dZToCa4E*iY;~GADP$$9v|OXZ0y*PQ91Y`;H(XpWA2o(>#o4ce%UBru0$wUY#+5ZLv1!9>&`n!Cw7IQg94Q z$W&#(TlXNqMOUUdcd&9P?ZNLdJ2kUYkH>MqOAmhG=D+Xf0hkvs-v6S1LU#p}{@ME2 z+9k14xp{s0eVk{|{8$H*n4U6e>WoQqR~*I*O>8p{UiTJ;ZCc7e$L3)H>!Uv*N!Le|5Msx(5;otmpO4f!dV=1U>3IrV z_9hvulyz#SVZKQ11dP)K%6Ow5<8y&LE~z(hUYuaE@yh`PymW6iZ)D@Q3FG9bTQ3Us z@##v7qGDW+(umENd)m|%rAmQcBAh6+cwn~GSGrda0OsSjbmm|AEcn1;fcd``fWfd! zPbfRJXs-|evd|CjQvji3BpA5Q#rL6qZll)*OVEE)oiTDf_U0t??S`AbmYb^prE3{#DO2oPOQDwy0-?l5!~%s*8O=@QJlsVhnAcP_|Ft zCCtC>KH2f3Yv0^cankI$hZEq>;``b7$;M9x6gyVt0T@D=!uE{9W(L>MWpHKRBl{l5 zW8mlq7}u#|i*GP_27IEwqIY29xsE(YZiwOVaj$hRfn(^WpJgmjKZ<#-XvXbfib|n z%UaV`1@Mb`|=GU|5+-0%x|0G!f`MCaw$y=03t)pQ$)vQRy|irrj*qdM?JCGQ=2Tz9|1~ult!SUc(hBHs|`?Ed}-|6gDC|FZyM`hSWAM=s=9 z;dre+*TrY zj=}vd@=ew7^Ne?Al?ZIU+rO(8V#5cQ`PwB?^KD2*n?bO!=0H#{6#T(H6G)U-+ zIG>hclL`z-Xk%UF0iEtL10s5U0*lO^5c;)6S42W8Hx^9O8N2rIsH^(0fhtB zNA6C@&)g3HWu^4D!8>%bi$I_Ly1p@nJr(cKpTzN9)+YU7$^he!$1BlJ11~y&{Z}RF~j8bYmJUKIa?Ok?guG;QKcN zzTa}(a65$CVH`+c$^gy@7?)f!09~#Ncv1u=74)OXg!C<+n~mFS+#b%j<>QBsUoH=3 z{$haJ3F>frC}fRN;me}?b3NR+mEe}T|(&}EdY_Q?sC6OYL^5jlzo=k zLw}JzhGzu*5xk%FN2I?LKjN~4xf`X6v5uW5&hsWiPD)xrHDUm-I(sPkbG9%_t;KPk zn3B#X=0Oat*}QNglwd#Vo#RjU z;lFV2BvHWqfFti-cdfv-?~@$SzM>z6FkSY@rSw`f3R`l z+KCg}dbjm%0W}t<(m3=$#5QzoHFPaHtbfjtZI8o1w(VjU26cI1P>1_xDG(-*x()n7 z8t8D6A7tw>t~QY;!~$2T#q54M9rMnk?tFGX%E#nxvQuEkyn9ZZf(#g2*e?T<0ss@P zd(XWjs-y)j_^rIxCB^nL;0k3TJaFC29%X0fZQZDsHY$o;``?d?8x^=B}XMf2AM<> zff=td-7k&fk-IW1uG9ncUT1P1?`03kxe9)sU?_-U!so4kr2hdjp)@aNFK z)~gjP?J6}Zn#zuMw8J~$X~$XDOj)kYex=+3k`|)8O>W=|as2_Yhw6TNiX5RCj&V*7 z(+v6flx+rB^joEQzF}ZGO^(v_c&~XLXJKl$+0lEw;rRaXg^`5;DKO=v?o9QFfeFW% z6df8tDlYdyG6nxJB{tR@jPnD$p6N0iPvpxZt>HK5Vr}-{j^o`OT6z1; z04_z^rJDM1RL46-THwCH$%>4=erUE^wrvc|JYFKJnawn%f5$w=KL9ZS!;;f4r-3om zso+c?OfxNcMF38r6u7Ns1iFS9C}3VH28xYC+@vb2mVcCEytqT#1p0m?&36~22}m1& zKp^#h7wbVYPnD<9Uip5xGRU#{km+btp_ktwhX8my5o_l|ujac&9h|?@0U%*I+CeiO zCBcxAD^Ij`(2m(|am{>mSE^sO0{5ky5t+&;Qd?3tHXheK#a8oqA_&y5b&zi{FdspF z4*2OY7mP0AGj$H-@8wr+;2@O+_cF@WDX4x7K(h8Swf1sdvB!*KKiH9scDX9QaCKnd zJN3D$mb_Rt^4jx7Mx$@t&(wLG|GWBBohJw^xL4e>CQ5P0+{f7?BZ^84Zy zxnF{DQe0p1G(u6|q+Po8WkPu0`UOKLH?`Z|iAb=%8GArga2*pwPqDdcXh`4O5+EGN~C5GXd=% z$!qj-MJAkYG~=9MHZn|e<8plyWzd(Slf819DNqBD+TnTw05gn&{c;^s&94B!8+Gz` zH~{b_+83I=u7SRo7xCN?kwjd#S9KuwkD8zCdm3ec_(%QS_5<4wyb{o?zV#0SL^9Ga z^xPc_*Bc4HZLVn?8!oQie)Yd@hJVAEnjMyfKZ8HV)?(g$$9*wiApF7o8Xl4wc5Gv@ zTSI>o|C(rE_BZrnRmGM1M7$}FNZ2Q8r(CIEk9cFEcSf<^%>&?!`D#F}Jk<*Jh-RSD zfZJfBN!|jG>f8AF-M_cUAZgaI0rOq~fTJu@gkl`(l<+M^l{Pwc^E;$lpkD>dpXgUR zYlD#_4T8u>HV}gNCjLtfH$mhN!yY$hO~M0XUbiK(PJ5_JjYhAJlLFnE=+? zEXOq9;SkBP)mVToA#=&SN$iYgGo2||xbLDFwuY1#j^5xQ-g5EO8ep4Ro5%=W+axm`CmxNcqF&3J-EESwzYdUX?ncP9Y^i)$fjZn7lNpiI zfR8?2j|3cRg~5g1un+HvPE4^_z%-`jccPGPb?)Q2NFH8NhA21A5D$nSyUL;PNT zCp>RJq>Jxl0aVI$Oti#(y^tuZ8Ol9lZIgHG$MHnFNYiozYP0RVrUiXH9F!3R*c0Wk zR#Bu@$ac=Qxf%700E2$ch*Ze9G&&asg7r?zj=0YRh{tD?zwZvx7O z0pLdfp=*Imc>j+awMB~gYM@i``fA`%F$Irtycz~5^Bu+!tG`nNuuR}&RI+ETJ-*j4 zm<)|~i|Z6>%;}tI6Du)m42+gVTmA_ST)!-$nW!q0WvP}a>{O0awZn7n zPJuB6&mZdzNhCZl)Wt{p1G7ra71R6?IRA*4FQ($T8|35k0krcTwMA+@f5P3*)}ei0 zlxL9K5_*%p!uF&5B?I%3f+JXjsVq#&(I2q$^Ad$Ugg{0R$gx1A#uC7)Z~w`4KfRu@ zs6gKbI8-xEqMtJWh15l<0ot#r3sMIHUI)B-HxC(%_6U^aMYe~)ZgS7DT{!*%In8z` z0E@WKHoE}u@%>Ee_x=1C_BiA-d?Q=RU>}JP;J2DABeOEFf7F9Qr#zfbLdK(+g^5|_ z1Nh<(^ZQ|3j>-&jy5sy^sopuQCkDqt=A(hhid5@7^g%3SJ{pn)0dtUMM3N=OQM0k27X0zSc=?A4nUMaj zt`NNuAunE%`zba`s=e|_0m&gzewkHC{rw-YH`rlT1pJ}=0eg)dlu8{WyW}d44V>;; z{*b`B++EEdqm7zLM$M}0zw)(AjJNk)pNC}=OVTP z)>a3sFNTQyP774gfe+gcY(Myw{UBV}l8_?%FXBUWng9sFPD;H)X1Q3vrz2o7J2xdW zx&S}~UnU;L`GaJ;yBYFDaf~0PKL*_VA^=4p9Lz~9NEs5J5eERlpBkSG2g02EJ+Ub<>^Mx`lbM3!_xbn4wY;BCi%<16 z!;>fGBmrn5i|IoO0XoLz8iK%`yN5hY@t+d!V{i0oiq$%*8`C^qek`s z06+jqL_t(uqR03l^ec=5vRx>(iajjnD*$eyBQwJsIJy(%`3{gBlWqOxt2Beq`23J) z35fJ8+ewz={y&Nl>6ZXa$HYOp&IQm>JV#eEr5<+YxsxIq=rb_iEvwWbGM7)vDYaMZ z5E^j!h6;D;{nIVDIS%T6h8?p+sZYh*@~A>!o}QOk96t?r+Ij(oHL^)Ab2V@=&F7?% zs?MDq8;kmx7#$hafTv`nGTJo;08*+VqEiWV_S>eLRVvlNYjM*pRj5a&c|88QQk}f! zP8{FW*=bpM3+lCdwDpxH_`ZMv1lL!_;K=k4kk41dTK@?Fd%s&u19ygb-LviR{1FAD z!0{2-ManWAnAgk|9TO!crm@M8QD|%-1O$!ChpFRC3b|^T3{#*Ph7m2xli?2Fay-xM z1UA=0$elxlaT%hRnEgefMP7x3SOwuPn+ z`dfzPZ{G@rlzf}2+cHYwud{cgaXi-{-Xe()O}u@iX-We- zkpeRVy_N`pnB)8~#g_rBm{duY0qHuRiead`P8ueSE_AFGf{O-w9efY#e9`*(d-t?TNSA`ncGJ}FXuW2Kv9MF782K7I&-D6kyQP7BOaJyTBV_NwAK3-$d=?PJe3@cGNwR|XhZOg(GX**cYCqo29wNe#eYZLQ0Aur4mHg9H7+ z!HCK~BBvoQvEyv38?3ka>DVVArDJ1&GX|D!$~bA z^Z8Whr+bnU3dxlA_ud;Fk;Vp3^*FYqq8?~Y>W!+k2*9eX`mUGnt*tnzeQ#|71S~$l z_CMSIED-OH(gQFs?0~DC0oPa;iuS+jTwtSK8pyUE)!BX&EO3LJ`&e)y6;815mNMLF zqXS~gB^XWA!(w(+GYie5v#@YotCmU4)N+zN%b&r0Z}W5HB(5_63&Vu;OTZCxow@G~ z6*4ZpNPVuEhfb-zT&ET}M0cny6ahK9$z9I@EK(VKLrwW4!@`@bS5M;jv-Bw}rbA|# zO#}`GKo+)(V#+I8O0D*Ws3ON1zMF=r)y(%ApplX9smt^%uB(>3$Oz?zfGYDJ=6)+1 zIk2h-JTm>-0FDgs?j41chv-i_b>VTT881$dBaj!#A+i@zh-dhAssqleF!lhvOHA^$ zqbymdO!vn4yDKrU&@%^MiWjCjdqggFr}+qA(`_P+`wr9R#A^2sWJJPf<-EkWWSEf* zQ0WNSOP|2^JWF=aNAP{~J$>YD!_K3H~ahC1vl%YHRTJaF-c`w^0AK}HFnrMd$>X_W( zqMg)5xm%#!!2NQFDfJb74?Vv`DgO_S9iO!5_|>umK;oA~P`36@STD97>Q_Ak{nrE# z{z5+BrwHs27BYdYQ;!AAjWcsoqr+kVgye>%`sASJb72b0QC>3L8{=(!c37-m3V@Qx z@OXcWyNQKi*?v*Y%yw72H{__?;J9Xn8y4&D>lB`b31@Jshu=O4Mm@i4&cX3PkuG_9 z1v1$sMe&@$9+-|i=(&8CDE(6jXc?pci)&^b02y<5f4px}GbT;U^iOIAv}!<75xCIM znF%IG!@!>T&!3Yf<)x{ovAI6UPN;tkG}1s~ojO!A?F~)<*ot}|5bNZ%Kz$lL-#61S z-vWBsq_`a9^>DOa9_sh=J422y49)h9C^gfYm`%nJNOR}-<8pc)T`Xo~l-i=8hb8P^ z24+DQdYC;YpG1EV0$dd|!PlZvUJ0%p-H^k%A4Ml*(DyFsp{58zC^EUh;#Ea3NL zbt+;(_tLe{zi$_T_y&OUgQ~Osq2J5S4DERyrf3UNN^z{~#JdvJrjE*I*&2!sX1RMZ z!%?rveBW$E0_&AjS)o-9^QKNU8Y`uYwt(42GA~`vfK&t?8D^|t!wvd}VfY=8DU0aw zn8>zGHoaMIoT>0BA;}Xht)oKSJ(g&Kiq89RLsJFvpw|oNU4P)6g3~s-dUa-%l|9L;NapKyE z6We;X^=<(%7N^oU^gzTmbZs@X1ynS;1+z7bZ-8NJ$4$K%H=%>5$VBlKdrzHEN?n#G z*>)^QpXM9nQuK%Ue0FwHOalsL_){_f2=R?d0})>4$N3Ra0w(=dfR4GZnsJDSz#jwf zd54_i8u;|48v=>maLhl@z3rZ*CnF*G7GC^G<#qCVMfsWOzO<|af~9y{P@2t>-#tzwzb6!%EU#vw_V zGR**j{%Cpq`}dP9T`85?#@7c7Yi@pqHxdr8A>c3S8rLZopCAw7`#%z|OHC>M7y1Ff zh;Yml9o9dR;%jvo*Z)%$z*Pn*!K9=mj%yhJTewo+lF(821()tI1t1K4l^u{eCD>`X z6X%cd=h->|AS2yOm*M<6xsu-40oiY;*H%SClHtx7yld z6c}{9Wna{7*tR<}bW3-4h@{dC-Hig$9TL(F14u~>9U>_yjdX`J(j}eJ-7(BF*Zr)u ze(TNs1?J8C>)iKkI}Yxo*DjsbB31?c^M>aVUwEB6i$2F)8(M{JfBdI1I7;xkY3=J> z3bWyAz)>z8R;8tyW>r+ZK~W|@N5OURa#h5omspdEnAMlVM09dqKgQ#K8;>Jac-1nk z*OGlRG7RF|05MqwIW(5dq1XsOwA?XJf*puftS==t3pIBZuEZV2!G27SU@xvpcsGaN z)NGkd!szH2wdKISIEOY(HD z4&V)k!M{@rE)0Lcv9{}tA8&2oXxlA11@?2nue*Jq4XSIQSJ7hGL6kW<^Af>>f9@4MAvztkMY-0O))YP{}S9@$93x$ zTh>1i|526IX|kO(d6<9y(IuUg=S?9G^tXtt;f8PE)hffu=KxuA#a3GopkSzQY_eY6 zHyV;yGOPYTWZWz8%BO40ti8SGjbirn8D_8!b^k?ITW$hJ{DWo)ka#bcj-F7i8ys@< zc0|xhB3@%Ob^^P{+e57}PO#s<&30+W^JhLHA8n^z6Xhi-rV)g%nk~(NK63%kwuf%_ zetir$arV8%8cs_urMg#^%_Q zduRKWPCKy0SI|$^DPD@J51vkyW=FG*36>c{XIHMJF#MUT3Ut=e&Bo9cmD3 zM6}e2rPI{G(W^Utv@!|h6_lj!$Mmz*hRQ~^uldZfzEA9h+ZM}4%5_&{lkMRQJUCxm z8f8&IjHaX>WU+4;<}bp1PCs3LA1k22yhgf9iFuqn@}zS4^7zxFa`1mmPua-KZbs;8 z*FP;E5#W&EHm)!EO=1n1F5`g|rq+esk_eAu>8m+$UI~rH*TfO9=j(p-kv50NQg*R^ z1vDu0cYF?1cVeJGcQv45esVSTbod!exS@rk$Uv_-l!BwFn1m$;@HxNQAwrrA`@X#} z;=OvcB@nN27b=8=0Zy8PFeOt|eY|Ao)4CA<_weB(SUdIf9o(i1HgzKho}S=mqL-sz z`$66lpC9~hRx1dw%Xn#D_ug(Gv)_$=#N9198$;>XjB_QGhAc7`FYbC2Vv#kjr^EZ= zH53Px!HkhUeN7o*U9iyV=yi>^pvNM^F1`vw?_35tIM zqQi%$d=G0MxFFsyI^?4YPd{((mXfEB+pb~5*! zfjFq@X-@ROTU7eF>L)N;G*xAu3jch#B(&55K@^Dc9K)a`H-}(uh12KWL1BF$@lF=gTtVn zH`?`h4`0!4qwL?!n4k|KpXeubdF9kC9QeU*u39Urmny6Ca#B0R8-G? zOMr6{p+DNCxmoym)Jv@Tz&+ivXVShz-Mx-&((Zs5s_M+UbqTA-_^g*$x2HwwKQFPa zCY$x8vDMO;Rnl3#PP>5iLLiuf4w8WwJ%1N0G3!P|^iXX#ur9kK4pstPCW%B$38H13l$ zTvN>REJ&yv)nZGSz?l)B62%xIkW>Wz#978ntU{oUbx=9XF5OO}gz=P;xNYVv5&RR| zw%*;AsO+}eU1++eJ^$ZK8Ghl|1}Dhh&;?zetB2@kott2Y_$iGwWvX_yTOoJRQfHu? z!_%faIchsxUSiAk^XmKX6mUTX0Xm=A7UWsBvtPjM0EDIEQ$asE{Jj}>|3>2|B`eUv zTAecmO^&mm@`4&wQ;?n#l#I=vg5oA{4nB_qeO}zt-$>UB4lxzHHqJ-h=@3O7m?gXR ztC#6SxwfgH2kf0i$Hn3FUSQkYv=EJrDG&WYupq~TMKBJ%{=HL_p~D;1?O)r{ZC%Z{ zJ{l2MdS+<(CZRW2hpu_+;>$EwnrHe?R{UdGecRFcqFu+sn!D^Vt8Y(*qXYZDc!Gh(N#E~Hx?f;`rb|GI@TPe>M22evQ0 zt)FCTOjz!06s*ELt3PkoG(B)PV#1E)Jmn>D?2n7PWHiD{jafvSqr4t0kuOGN0-h_! zDXkhnRu33<-IdEYdXtN{P&Wio^G-+`O_6~Ms9XAcExq`fETpnSTyC#mf$#ourSoe( zCPfZmk162&dV2P+%?niJwz@LPE?^z?-Vos-z91x+9b`a$1w*g7$OTCp!*(J7wvOU2 zyf^p!fTDLk=!&gO@d(E8vazQUS4_0?)Jq2vW4*#G1A*9>1gGF?M;gNsxC5sl7}hI ztwu+qgsnH2`k((Ip^#~IZ#PaRmGeeBg~&Pfs{x*y(p($;M=4RJo4e9inpfGBphCoU z8W!7gNz-Vaxy6z#r!s0UT5W(k(>1lf)aehvaTJ#0yDEP6Om6BH+Yk~J0CkAb3Th`BDV?R#%@k}wPWl+EE(UQV8$K!Iufi%{T=sSQPxHE724vfZC*0X7Fq$YuEq4z=9o z>WDCqA>Q*gcEOIXJ|Zjo>8<|lu>rvNiS`G4rTb!;?r5g)6lY;*-$rj!paQf=ZYCtOf1}>OW;(B7z7@cl%uNX)^1XFCVkO+$``11N)!_O2=d5Htyi;WX|Ga08eu7am7(6Ww2s_eSf^P2UMXVqg zKbF7vEVltPwW-fQP&YmXP$44o8tL|@*pTwopZAyKlB};F1*RMw{4crAiS|{$g-8!= z_syyET5X=^GT_)cdH{fz=TCydA$nysXwkH{9I#^Kddy>NtBddC@=s%dDe;Jf$oads z(89v|QwpFTRrN1ee$|b}lQ>C+<)8{|mNcAze{_``5WsI{G3*ibR%3tGk-F}+#m9-T zUqlPy474nMGN6oot2EA=vH*og?8il(*p%ZPRQm-Z{BrHJl?LFp ztM_aiba)sCj&S8FQ6Hvujt*IJw<%Qk(HWs&V8Y*|78|dQBMYn0RT-{edux_xyGyYG z$MDyo=?RR`nz;`PzJt3tQEd`bnm56VUu?I3HxRNm-Z&qvf_k{ri(L0ZqMY`Z9PBkL%6<|%46hDQu zrG#rEcv1Q->@4S0?e=se^l#*Ne0)!EQO|+sup^H)&mP8wO50AaG3*|+4+ z=Sqcz?&}GWT0yyyW766{GFhM%!<&&n5c``|(nXV@rWGoG+)Fi21BuA1ke$to4yJZz z+MPBrD}7#7jejk)t<|G41ZO%fq08J>U#8bDP?9f&b{38UJ+)KG;;Le@a4*TIjZtEZ3(q=9n}bx+g@42b ze3$lZol`5#b!4p$*F&b*>z}UP|F7b>P*#*ghENYGi+XtoG4^LZY=p@6;1{^6IWl*|-LdwVW};;)JkLlJ8&pc$_gjSXov^z%wrXHY=fx${ zzXe&_&k`J-dX1mvdt8$X%H^MYyw=L9uc~SpLsLH4?E&^l721x7qG|>oMF9cZ&8YJ4 zDnntZ9CwE4eI_ws!lNPC-)NK6HlAY_f0OkELSF&yr!>5hZrl>fbrxw8$U|=G{G<*& zZ}zyTpcIRNIYgO^_5c9JQwdGFc}rDn8^!j3!rJgXkbbT*}L^bb8%Se7s_O=S7kv1oDTmh zE;Dc{)C4z`#L-!HZd`roL-DGidqIO48Fx$HBD!2Xe!F&ti4o)W=3j>Nb6+wN$#eVT znQkE&yGPW*oQ1f}-_xEHKkP%Ed}#``Wyp50%e%S>Mz5_x%)2nimjla_mPQq`R z7u8ai7(NUWb9)8IE7(MsuUwyxVo`7EAN@;ZUG80@49yN(wE(Dzf>dF104n5AByck7+fB*yRStzDcwa#3e_Yux0eHAD2n!-rMlhp^gUS#{#r{FS>~K9TGogho z_0+WV9Pm8+rR<+7SS47aM4C4hH%D^%=%8uv4rlZ_>S&f)sYE4W;5_)@QlE2W{mmNv zv?CGZEzN60bJBWWY0}k@X(QlpI;dr8Jynx4@;&Xs@W!{=se(OcnQ?)A)j=dD`H=ec z=!W=#RUzs4I%&r{5izU{d>oxqahZ41MO=<0B`XN0g!rX+8q7#|&I>FKo@RJ;_pz8U zB*^CaDh}6-GSD<&o%jZKMm3n!hphRd66wW({Wb0E+c?MtJL&-I5Pc%|)LS755mG*R zlx_j4cV!ocpUh^1yphaTO83BI%Xmlfk`<`!MC5naucC#s`9H#$37p*3_?11cKWexn z4MyM#GZvGZLMLqxC zM*}d=Pub%u2+xTxz5Sq^XuFry$}17{E9Yy^OAOJ8j0VzIKUNWzzS$L?CZw#I&*Qy2lbkPVBJ5;lNWzmI0_|QWN!@Xo)|Gnn!o}u*f+Z#a==uxOV}8T&g^jwtO7bm5|>B^ zUo&cFU%Z1Uz=r>KkOQ>>HXdQFx#U%U;)8+pTVxWE^-SL#s<>&f-B802U?uYaROeKx z5xD#MS?RF`3!L_CMtxA3^%Ou5~GD+58CE`KSRW>^c$l9i4S#=kY|vmC{|#w zvc5Z)<2vSX8V?&u`{s^Br~V+taqxncbdkOj%5fvMUXZh;Txo%)astWz7dIL|;B!EI zlEeX}H#4%!npGwFrrqXE#cqt~_ZCA@Pd_(wqg;^%o7h1#5`N-XBR%tu$u=t4`KbFCp_DkVVrq>b*qq+X@o5A2i$!pl74;!3uP~SMS>*rC} z7i@L2pe;WMes-lEU77Jn>mYo1=0pIUB9We+ng}Z%G;+x1;rEsBGs%;PGK#x0YB!W|7y3^J0cEq>j=b3+zPt3^ zjgoJpvvx+cIQp@wT}M2e1W znfI?nm%8vg{a>nuo7Wzyf`fsu9?4k?BC@b8vsg$FZ3a8E{_BRYJrC~dZuL7|x%!)2 zx+~(^dB7#MdT1iX;HROiD$b)POk(>$V>;K)kHxNH9|Q2#^bR~OKeF76`v#y{t=mNg zTv1uITXxF5KX`f~6%lpPq}lg$7XaHUwwJ8qyV(_(e&836Q^$>FrPB%D{QII+WaG;& z8GUv2m&;Zaq#ATAC4w@T`#C-OuWKRQu0|A^R+mAY(qZ;L#q8l6I^}G}P$#!kzxO$| z1}W?5<|7Rg2W{9;ERdA#XDW8^gD}k@d1WLhu)HXfG$>e{aNMvz=vMC{vApXD>EWB$ z@9u8J#*tm+GWJB?11bDj!=DPp;z4<)L^t1L{pov@kFsRUzM+O1fVIW(hz#kV){U1G zZ)Q{l0T`6vR`9yo`4j6%{=&eH-<}9F4_uZPy6JKl^41S9|9&jz(DoeEs}i36pdac?!_Jg5DSty@e}G74!v>|?xW_EY>RHdgtk zxEHu^Mfp|*m*+7~>c%mgf@8npMfKoG+YBfaZM@S$B!)(J*uGz1C!U9$?=hFuG!bbt zN(YUtS$#_s2b?B+(y1d}aP{=2Lf!7;!KVx^{|j(9uKSKWIrRRJZk<`rbyf!d-ubQ9 z3G?#bAIfDam(44f_S!E&j1sQppF0dR$RZFgC)|Ie$j4g5RWZSl7cL8#*HA;-`48V` zJDc7DK_s+hPq`<-BvE$?2O&eWHw;fXN5olzlU(4PX<9qYr5BqgL+T@!e3>#bA$WYy zzZ_QOK>2lZ37tbRLbqSY)_lf_0(1y9z`{dcs;vL=r8}g?AVQVr{jqN++V;M2P>9_? zp;(9Pcr!CN35CUgPCF39Kn~Crq$@+0^^1%s`)iUHN-Hb*4qP}mD=kdB>x$3=hS@SW zFi#l2VU!(&8WO@Al*<~`k1i41&>toB7;Fu;1~tb#EMY2552%k3hbMyJKT=u+B7SxD z22#ivP_18?vK00^&K`&wy>mT;{;aX?!7xXU!-CQBWvn~6^Y?g7wwNlr7tsPET{$Qs z*CKCrJj{#c`Sn$v>oEgLUO7;9(fsGN`-_ys;207Z0Hgz4x*S@%p3TP zRsz>v!h$wUem|TMQ!NqUE^l4EC`p^?OiK3C?%CCE=TF5)CLs{%(vYllPsGTuF0Fad zQo)2%1dUYnbXM~0q*r1WAY+o^uPGsQ%g_Bv$Xa8HS?Gn#u-8@^&)-4b!vh;obUkzp zY1ig5Jn#%RIi);{$W%JhJxg#1*|t`qXc3RhJ`9RMY0_o?za&_yS(Ku{I>q3_rQN7a zlMza?dj9)|N*`y^lK0lhlAA9+${B`Ceyfge53Qc6|j?Y%I&DqH$WlZ`gmSBK(EpIdLFrxbx-zGaqC5_ z^BVJI@aW$GoSfif&oi2VC#_R-`W>36V9wW-@NKNsCtu9FN~vD+cM;Tg7RmZ7g59@( z8FopNl#CLhW8DYLW$1S9mA5giwa$8klrGX&?#=d`!O&aYD}yQLs&e3=1B3-br)75$ z5yQiqdQr9s4?h{*p6Z*<>Ok!byVws)^g1iO(GEowPa^&5fm@IGbT5C#NJwg|fGQ?^ zC|t&P-zUo?M44mQ3;6)5znA}ISc6s)y`uDcZRP4=ykhgTb>4NB1>rhYJOSd!HTzzrQxYb9Cy_X6 zl6p;s`1|j;mKkSoPnIQPbRB2RbBhjMmMxVVu0E=E^+&?U4`@$9FDtH7u50RT%z|TA z-hiIoyG6|IUM2;kk&v?(SIi(kCs1w2f8ZyI^m2ufN6Kp;^8v6ogFCl#@lQ-)Q5`ge zK9X+&8^e2o(reb4GxBGR_%OT{j3h)w-cs_&T_|Ayc6UEsCTJcOh_N)a0_>s@B>sx6 z_L$yL$)k>>WSPRT$h~QGST)pisSd?KKQE$RP+#2araNv1312kN;S<;ZY2TC*+!*8t zGb+$0`-rA0V+sz(+Oyc$LLBIuzS3#-nV6$Zz9_7SJI0mkMpO`8WoWAm8S$yT$tXJd zls7GZ{MU5+##7^}5;WV}%Zlcjy+b-|Z(#Ae4Ati|)?}G9jBFz&)$@mB#tVDDTo5Yk z_H|HNE@TWt3KvYHEqYIa8Nt)|vC6{};1e<%i|OqAlOJQ-tW=V2l{UV~@+E$Zj%`7OShni<3A0flpm# z5}~X3ib%4U0EK<;+-UE@GmC%`Dt~ph_q#Oa8u_^=tQviDI2*vfLuq_Pjqcnu5i5O7 zLjvQpENy=saPulJcS%U^+M07g`}B!Rim9bn@SZL@(t8cmf-rpNmA7_X`@uZjbW zd;uT|#p&}~NK!ds-Si_ROfj1tFdpT-%S(D2M#)Fe-rH09+Z~qQkygNa*8!0*&CWsE6Fga82OB0EiQ|BYcn=PKbb&|4=NBOf zW{KYF*ziF#+0@nr^6mX2+uwr^VHYdH7rN^FB)$O-(p`H%uj*=G)zu35OX+uQtfBA6 z%}juEbW=4h0NELL-d$np#}f;MKva0&g(L`I+NsWEMZwknxy<^VrFYh@k9hCAms_y_weC>F(Pju2=nxCY}+2U=eC8Im{!j zLT7ty{|~Lud@U9HB;x9lzSdAoO0)VIn4?Ueka0>fGlm*%)F!Jl)V959>9oyUT&T<2 zVB$$P4KmG)>jX)JBJ%j(a(b*GtWQGuY{HFV3JIS0wyKiHG|8VCFl4E&c5>$d* zH5#X=C!ey^tvA(zP06uC{vdF@O?;6ic4+eBu0dQGsl&A7I^gx9U`U7C94t0hA@Dgh zSXTW*Sz5N8#2-e42-hORV*g699s&o$FO)$W6L=_ zs-)jC;ixB40P*o&Xry$?sx020Lx+c1VS2#Q8q4mPA~rhz`9Ak6_!7E*bezCdgo=v9 z(*+Km#uYsJI#5+YF$-V#@6%xcMB_}g(X&N;>{GX0b{fx0=Fk{6ua4F+kl?5p5d(XJ z#Z(thcqH_Q<40#SMB*J3%qijNiTM@E%$7{-mT4*6F2&Xm`)BX2cauk$Pb6E_LIL`1 zQ#G2s;RClN-gc{{!@G5*RKKk6jI87kCG;}~vm{`EK0tjHu(9Y>`WLr2xU)}&rBF{X z$nD_FDj>R3VRYm5L9BUz`AcJRRI;eBgPqDw8O z)`sa#LZDUT6?J35t8@5f2Pp`1ff6vRAw*Ky5$^Yl^Vm{5YsiBK)5I?P1eug00Ihg* z`Kg7DXrVZOp!D*rj5kKH2wE@I7Cb5$j)EGfDydmQC)hWwRTT0Mz*jph#21n@v-4^h?76{){pFZg z^b6{m1mioc>|RICZL56QjSp4-u4J2MU_ekCGy+>zV{+F@9Tmcw$?}U{@0UO>p^UOX z?e}%G;ay83q=L8fV|=;hw#|!lBr1gj+shfK>IfxakwdQpRn9CKU^fIEibI%uuQhQq z^6l`?IRL6VE}S7(!CIRESC#(Zx&6M$y`V8$4gf)!^w6Yt2a((WBN8%a+*!nQwZnCK z*AR4N2J@ua#2U>?$n;HU`zU3?DXREiMg%h+K&;&)C!(+{n?jMPdVgZxrRwpx$D!E> z+<7DiSDk?gpJ0vap0`2d06nAxqA=81p{3Xr>;7Q_FJr>S_%>V+x5Lb7D z3DD>hAc-gFbS%}{LwUW<@z)4kzAb*7{=KtFnVbX7R1g86&p;kZ$sdoHy|4N9R$r#3 zPgYA3Y_huu?(UgYk@T7XQ?QKxxm4-|?2(qE4W}^8m%q$jf1X`%dxz|3-WNLyzIeAN z*NArc=`ly-AdL(XcEj_!qXhpbKf)pxZU{I3|LTd3Q;;H8(C_#ON?{4}p}&|NiNudb zM>7;2abD&y7xK`?+{K{jAu6qq?O`6d=hUE5b;}U0U6o^BU@=B>PL8ITY(6y6SGBCj ziYD`vPA=BBD*Vg-VgnBR%5;XU z&sPTzq-t^9_zg>F7(NS3`<@m?*^D={ii^d=C)A>9bh|YfJp1-@KlnJ0~g|^BiXE&N<8G zRIyO->a?w5+*u6|ipIR2m^zROf}&>_Z~b@Req?+NMq+6reb_rOx|y*u6=dy zA=mjDCG1D0nSu~Ih(_qqvk!$&|0x62ue@qbhDSY5L)soelUA2W+Smeig^b zWGwlOODfvgL)(mV$sj!5$X3LiVCjf8vZqA0C_Vw@rQYawErXhFEs{eou^=U9Ov)V< z(sUa~&SVe_ve7T7HC;@(B>)<8WSSHpoe53I^Y;$Uz;Liy;?%wiRT;VPKgxH=CJ4ql z!hl1uM{z11R3;gud1CeOe!9y@yW9oBk-SDKkQRjRN5`Y*R| z;e52GawC^Q9Y0vdpQ;hjl{-)R=kUgBn^tUOZhz!N>cHiuzm zb$7eP(x3QrNt^bSQopwlrmJ@P=<(Wl@1=;^%>)7H1emSa;`1uY27hLO6vQ}ja z)mC~No{=P6AGs2Hwa@Nd5Y*xr8&WSK?%&b8Unfq>ZSh=IE<>PQy!{Dt@Q;1SV|+x* zsw6S`q;mGmv(WO--t6JyDrOcrG^u z8IsS#B08;iNH4+3iv#mz&wF(z#Z5=gbI^G`dyg!%!O}19&lQ>?utwx!M^c8pn|vB( z#4mA7`iUN=X3uX!Bbzg(FJ;>whwgw(k`AE&D79+0+@Jk@Kv?+ks8)ZX;=dmGo!`r* zXiSHBh=>2c7Nv3j_zmm}bLE*Q?O2)Y~Fk^l9<(Vub8*Ecr_ZxV9T z{yjra+g^l=pU=c50-%{1V|U+tcm3=KH{aYWXlf82;fP-B($tU2H%5#pw5k3_Rt`hh z*_S2O#4w|YxSGsOXbtucycM7MWTG)NKN@s_#u_^u{pS?&Qi1ize5eDAC8kwWUdyFc z6W{0c#IZJ{IrM%SZ^c&zk4J(FPZMH>j3n42Z^$r!nZYFp3%~HUtlOW~{w2>0+Mh60 zo6fl_zJD=y!{wKB?>en;O`{ttl4UQ-dEM zBAc40f#2*W>BqMTntC|FPsZ02k&u&;M#)+AV04m=h!%!L`-#-Ygbo%w-Xf2m(2{fG zWjT2+dVNT8#42K^DnLVmB?9d~noA3CAMZk^=#H2yRZ#oH&<@TH0Ui%xF z4|4hIk4GBG)0k0wPVw5~!|65{rb+sS5j(o;7+ntZiP@1!aA!!)zFs0sVY%fC1U%X zc#FJn5>qEnv)BC7c_%_+t=_9Emj0mBVr<^YAyQH8dTiLCb|MxO*FinTis&>p@9{3e z%c*Mz5Oo@Mrhd+Q!y;5<@d`0p(7@kCBfd3G%*du0{<2Ic>duHxWfhws(_i6Ln-Fc8 z?bR)Hs*n;zsE?>(@=r_sVg(~K#n3BqBh&q);&<$VY|DQ?A#D)EcuX|KKC3etm*FmWQ~P#XnCU2uGV zJ83CX7ihUFG4E+1k(q>w#J#GrfXM@_`;UAm-*UeLwM0DB2~;mWAYX-MYQ%QDbfD|> zb{->kdF8Fm*QUxodD}1z*hc1cqWKyps}t~<;(vm%7LKdjs@Xx5ap+=ffyy`U&vctC zy}%|VE0m`;!; z$wjM7;(pN*X$u#0QT{7HMD}CeiI0XkmTiiO7f}%}lXBPqrdp+a9A^o<%mfpg_u9~` ziG5L3wxXBu>V#ixS+1UcMCwfDVx|Z`yhwmK{(o<&NefqwI2k-yN125WGKPHzcf8*n zJC^)9WL4s^muV?fgVCwc`@3iF1Uyt>@4u9R*V2SrNKZO-9ACv0Y2%Fu*Itkp6*CPM zo+i%&#?0Sh&6g~=9V74bS}`kWz0KL63pS$32v;$Ay+P!qnE;% z9WG>os(`0Gq{8{l;-m75ISn3Y#w=N0tKOc_wYYycH8{}fz@}A|J~bgDWXD0IW{Q6q zzm8#@&zp1LZ}!2ZM|ru3phdOOATmHU2rlajyi&0-tHXNSn;7x&3DOqBc2pa>9X+DH z`5&A_y{sqttA06lhLnYX?{ZMl2w`O-!oA3V%#RHf#?qXLKA<*cK&ByvWH^=jC}jSX>yn`50!EZY1Y%I1M$fysMgK znAwE_tGy(CNH$t_diTxhig;cK=g*RRDORP6cwWXXvY}ncI6~G1@%)9?1f_XhR;c?? zfmC=I<=P|(vzph+-HK_r%fH+!>T%mRX9Q2pzTc=L9RJ@Jb+O3~Up;3n9cnY8w{y?m zrJ#c0sR2V8$)B@5TG(PJg%A6ik!A>66njdGCHD5hwa-RK|C$(BU@pIIMAwBb$uugy zo~ZrdmK@_*kf2>n2$z!BBNfUh5PI%S(1$PIFu-a%?Y{&i2LFZs@AUqsa{;ov-(3Pb zj-tz6omQk`@A%G*sWm%g6M7?p<;P`$q?kqjaS-z;f=~A}MhEE^qKN~zX8;i`J8M*h z-&AZZ)@H_(?sSS8hvtAq2nH(KMgAdF==U8)(OPe3J|O{CkZVY8L_1BM6@V>Gc;A#C zO)%w=_XL(>NLZ8R{pKtGKJ8i5)ico!=QXnA$OeyRE^Ax3&D+1n&UA|X12op(YWKAS zO%Gq1GyKPo+tpFRi5!O+t`aeywv|b7S-jEKxf1x4omjKjwA0E248LsSl?jh`;A#`u zu*fNNPkEX8$;*~-FVigm>V8n`OniOc%&j;V;T8yFFotJK|2Lh4_GzErB3$?W-2!Dg z=m$20dX>*C)GhrylecI*>4zg@)f2d59G6!pjY}q}LBS3O%~Hs;bP{(e1m|QDru;?s z=1ncXBP&`0)Fo|{D5Gh`;Dv0AkTF{{+ZhEA&bLbFM1K~W>R%~_gJ=W$4GzufQA3o)>D&uRv7Pt}`)t$vowNJPG5A5s+UF94BdJlZ7}7^k?Q z+1<6uU06HcK^e&bJUmn+Yc^BVeX>Sfzkqxvr#t~3vM6(a?8~o6ytjGf6E^{{;A6hFn9+4;Vr4D1_d71tvOrF*tC!O}b z9G)~FqdrouzeoVEKUq72Id8T@Q$oSG)4x=I6b#0sr zhbKL_VKL1&^uRkOOcK#Puf@{#Rah;Adr{w?RUp0oZ_Wi5U12_w^fBB(TrbNHH=@-E zvSbf=v;Zuh)khq4SvD`dSUio=u9$)b=kWXn@%qPQUW8k~08NH74jfI9JyVZayiq99N>jOG!hMG- zjEVm0&kdj`0@Pj$*CI4~k0ZN9Z<%HfznimmC4ou*M7V{I{aMb$!ng*^cgfub>M1SUNE`MHExh9hw+vp}K ziGqlYXhtK7kAO;% z{U(pdFQTK3iPj)EWtJ9MW?0|)S$f5g9b{g)s_b#yM)w>#0T~MsufAlyY7MaPL_ED1UKJ{gt_P5?CvzDb8@{Re^^4a`)RF$`3S7VTq`S++Q5loa%v7*r70U`~tno(<1Q8f;$xo#joeYTcYt% zJFcmKX7cPeEk1f%Zk|pKtD}=HHFy=&B=da}e^mtkMOH8R11clN@+JrzyS1P(EzR(8 z)d|(X3T^SL6Zb!pG=2Qhv8XI+QFkh7`K#J;bOtgfC2_DW1Qj~Y!;O?jx749m=yZsS z-E8w7-mwv!XF8^?5sw#lg!2)R7=b9U9}v;obyjdI%DX}Om|KOw+65f`=_cn4hZ8KC zN8zh2<`!D`4Mt!xb)sUwe08%F$6HJmUs%@;XAu4%QpbfGi9Nc_!)>XK;ccFosF!6gXB&?MOi*<@tCLS@Wb!BxO4)6vZL3+ zj{xlx<~BOduT3&UVD!5Rp<#fc>l<_&MPCF=Y}?=wgDpZQTb0x$v73$pnnMO5Brz=< zF}{;Q8Nf7@EaA738_|hhJPn>0-VOA)$pOu$0 zDwTCibXG?8B+(YuZkTe}i3bisETDDGWidq2ZbdYViaY^Yxkp5y|MAq@_oxj?2SiT% z{AI^>Lh~%v1F{jnmD!iPhSaR^tFST>Kbr=sP1$rlAij)_kaA$aJA*=mG1dn!&D2}T$CMr}rH=}=Q-{YfmQ+g$ z$quihL;psPjX2npWLt?F{?5}FVsE5|KO_doI6$@~g}mmcYb3ZaMI|Z_q1bS4Ei2_u zlZsDp;_-=o$cDl(PVvnwF99lUdKuaQ(SFxUVpVOUeNij(@{V(44&}F_oGEOwZ~5Hl zLNcZwHri3x48R)3pzDl>=RGS+G=kX%cr_{=xlN&+_0Ix;c=Acsn^DWvP4Bp=SZ&0$ zsr`pg`6fD5_#3`G_$~ekWE*dK@&!}-rFC)gHv%GVN0(*TlrOtt>pQJEBA}S<>&k(C zRrT`=i?*qIm<%+gNm8a}oluE?nz@wXMe*yJKKnLzCH3DZ1_N9OZ*}@Qa2oKW_I0Oq ze*O4vCGSDGdQcmHZ4vk(5&1{KOwT7T6tEP0z7k$eaMW-;q;E~}BIb>g3k^y^g5KbU zdM0o^Vkp0a2Cvc{MbU2h6Z1X4^ufM=AA|>N2aQd9=6Sii8^UNxN#a)gQw&cImixKj zUtbz5ZSdx0p=#!EK%}y9tMIm?71iQl<$ae>V$a@?Wvy z+GSnmh{LB5JeyKG;}hns%9zMnP-TuIWFZ{FBxLdC;#HJ;B3)jONpj@mo9po#1!I8E z{_(NU^$)3soWJU>MIw8K?**en@!9`N7=Qz=1sa`%kH#EJlEj4pY^Xm~HxBWz*obrp zk%1%u>ruMB_UXU9Sw}1@#g4Hj8Z`EaP{d!6dTFVSHWkZ1QNmkh(`p&Y!be|H@V8lUqM=XGDvGc`2hev3*vTu<67Ztj(36 zXmD^H{T_UV7|mqmqLF_rB`Grzr+z!)IkccUOvuBMnZljs%4(1f5D8ukFc>{S{P!c+ zs$No(*#RBMzx2|htZ#pQg7qwVCNrj@h&y9^ zuF|8*7cTm^pjQQ_Ii`;0cS#VQDQ4&#Qa(l-%H`!AESxgipHu`do6H;u=@zQ@R05S; zl17gWzQ&0;iU;b4@V?`lYgtAhvRY}MsL?(P&eN}oMW^I^GY|;gev3WZ5aiHR!jdq& zzno`+X{M>3USwzio2L&}n9FtP^mIy&Rw*cpfy*QMu2($eLrpvQCoeDh|87|wwnkDZu zkE;9^w%X3_g0yT?G9B}>A|m1~oc|@&lK;ra63(nA7EEp-?gz;kqA?71XaR z?b4f8lV$l#U_Ii$?|vL3K})T`eqSYl4@{%HbhT7S1hp%MGtw3A=_ModoI{uODc)I} znW|Hb;ZA1W8xj-Eh&5oiHZ8~IGB)9L((yn$JqlS zMFt$$R@~_m3j$Il)&-16YUlhf9PpG5cR$ds!x6951Eth^PSyrn6vxMD0~0;VutPjD zK0P!7V6C;lnVb@W^Uc&sNanOXp3Uk5{{L`4Gf$#Ee1H;#zNi3@3CFf9hYo5I)`BY$45fRX>;pAl(~z9ODDC@>#4pJNYjjQ7?&Z4&HoX<}%!cT~y&Mo|Wg zajC)4VjK1_Gdev0cH2*(2|Ktb1SEw(B}_?sCK@0$=}T6Cxr zbHM231ai7H%;|-4SvFvBS>OaIz!W3m)qdab{+9q5E}hR^!iY4*8REpE0J=E+tnO&f zQAsc&fst}t42(!RQfSkgo!M!*zI)WY%fq^n9rvDr{Zc@rTK5a{lpD^ge(L!74N@$h zLH!~1uqpjE=e#3K0_*Q}*OT%j?0sxzY^)6cN_LP@oB>cZJ<#rnQfE4|N@{qELmd1OWg{V#KaHNz2NrMo;i z7xjIJgSsF8Q#%7OzJ-o5+WZ`0KVaU%{c(*1KpL5%O$IVPb>H${F_FrUJKh6Crchkv zE`mNy&W_ScVnPhGdc-66fenE12bWB91xTqk@P(Eb7%pOMl zWZe$|QUY_5`Z zoMuPZQv`ryZ#7wLz`p4dZ3!R+FH*c4fB|EoeUe>a_oUtKm%bQ~6f)3+0r>A7M}H!) zSOJk1TjLA~6!w8d7+>eap@#_>03T!*M}-&}jV1F@9-+q~`Ow?Zb|0;4rvCig_^5b) zoL}gS%}54Dl?wK1y?1!uivbgL?RXhRq>-^+RzbB8{UTkfI>641b%trZZM2g!$C`lh zbL0sxY5E(R*a3!AN$$tuIP6u(h;(KAZ2$Ix4JNhb=j5b|^&zeDYzk(i*fM8k6im6v z($wG#`ja&z8MA~?fIol!j`mRil~C_5*8ApGAF7>|^ciH+0IH??+uf4@Fh>TZXbko@ zJ}lD*V7$3Q?MSC04Mnz^**7WrJ?kqL7#hR{4y+uK#dTn5#ky`I}qA| zD`y8HVTWp{4i!3lugtKET&OR+0_GgoERL?@o6GMVa17SD9eO;YnKI z3h@ZJ*W19cgOWY$$(`O+e1~|9N&v}={8^k&Qx{w?V8$UwiR*z$iJas|nGl|N+C7Hy z`)0u4Qzv-S43zPC=Q`nW`9XaH;MwMIRH^=K4knZ9ue5R~Q@E@(i zbrOiS+05OK3vtTb%U^QQuKXyMj7RTrFd%tCsQQ=he*(w-GL9=faOgI33zrN?Yh4Sn zTr;#8Spc5WOSKu8r)^^oh*h|LFL|EcZ{||93Fs47fTVpc$N!ofAc+U>?Wb%bV2E;G zrVp6_f_ZnDn8M~X`iuyQ14zV4$P68=>M_RqZEVP648X6CB zK%~FYARv@sfAC&*(Lc0~>Z2?GkWxd_z0sf5&i5JGaHqF}z+!An zy2L<=Hm5W*Fj)^sYHSXC<#?A&ATsd2Fg7+V1DZZC3Eww0J}eqb!66?n$@Zv4IWsCP znHv@)raGf>-6n6HyA0p=GTF&C6QqvxPI$X`J#(NM2SW#RIIj-p)z^?6Z7cvZY0qJ| z-(|0|mnZ<*?l$*MCd6&_Qb#f*j!Km{Jpo9HYqX|ITBc;VKGr85*zG~EZ;Nt3&BkW8 z!}n<(fpNnwO$^LJ-=YDKXhvdKsu#xFvFSe1!t($kMS8@$R6;-Pg4(1k5j`Ws zuyjFL9`tlnq-Q)o31&vUzuq0=^Ym!IoTTO-q5fVSJy8Ipx_&4bk*pk}jv>U9*btjK zXvbKQ6G}NubEr{C#o=^}C1e^fsfsSes>!L%U7R#M6D#U?PhT_nGr%$H7d7 zvJdbxLO@cTp8rJPWs~{8+Mtn>bJ8Qz{m}kCLtP9&q*(uW5##`imKVgav5T+c%QVS| zjTC@xy}wTa2^H{0&Od&FKhvML;D3Qs{s<){ut(lkm2*<1SOX&%ksE0g(=&j0{1g@9 z?{1BGf?$0{KIX?Ev5~|)3i*|r5r<77zF_Zp2bmBx-aE{N{FGrMjwi$?>@6mlzCZTf z^e&X@_$S_5-hL4<#Y;ftXY5@j{g7W$k4gXMpXmqYVaWfYABkfG??FHH8KwTo0TAT! zJ-^_mDHzPaX(<`Z6f^Nt_DH3+jhU%a{VZ!^J6NT_TVc_7qCXk_CgnAL`#SeEZs0H;m9C{-c-0qj+45VC$ zOUIZ@C2`0E(8N3CIVc|_yV+J(0A%zaSw{d|VHRI(0YH*j9GwMeWXiNDQ3O(~C8-4{ z`#=^rN}gc%d-n)1+?dahC-FZCVA)NDc+))Q9&{0i5vQn3@%91SBNDg*>7J0~9HWwA z`caHa3ZSC^FU?J=?^EBazQ3+MRK4V+=bqumQD5(nAO&0615*|1@gRRr>~w|L$+mhA zn4o?q>*z{>_A!>kjF=E}^(i((d(CntM<+tgx2M@tbRkyIWwFI6F!qSMJsB9=O`b3x zAvxd?72-SzQmws5PI1|8b@fj#!}vsk_ftS62~cxzpG|x%T_KQaDP=^<954de%e0wU z=#9HpEW!IYe206tE18gT0G^y|ssN)RpE2x*YvxMs|We zERKMn6-#w32O!BF6e*6NpJ%R*_k}*GK;Wf7pQhrFm+$STbb~{F5WaUoYHYj&{bo)g zaLkW$23SRw5JNJ>)%iF+)fnpx#&<7|EVid5g?NGNU>i|ypV4>N0Z2c<#{K>j0{x&z z;XFE=M~Cz1U!Wf#VC4q_v14Bb?mqM0^(3JCq;S0_JOIVbJKdXMzs71q>|VMMgAzST zI>Fveiw(1T!Jhec4|Xn0fpv8N9Zh9CyxQ-n01qlPlmr$Pl?l-|-8s@WBSim92cs?Y za=6nW+5!4FOmDZNJ?0$)wKhhZ8X-zj9c$a!(BEj+ijFv6s`b;l;rN{FsFY+(3IR!1 zM}HL{X|ZHPf*o0C2TYh{#)w$oIGC&wy(0PN(T+}`-k}!l;tbdNpq-W`=Org4vHo(O zaOH-TkHnj7AMDXz7y|Vs>>~YI_&^2{GPM58aWVjMDk^L z0`qxoygd~Cq%<`!U5s{k-@Pk(N`D#kj=K-UlUb!4Qs z(G_~qUDqpGw}L;1->A<_2~jOx@g9XfeIWkC_A&{m0YfbH*FB~$f4CpvVgQozL#T~X zn9rnL+*kQ2R9T(R*^PgTFS+zL{?iOn(En9@LXHyv^4#~$!;m%Z+ui|Fh!5R2yuAz? z-6#OtF8qch@Pqup3sOd=y(8XJTz~~W*syiRJLqi}*ua&O>i9W!m`VTRtKL!XX~;ja z6Kog$_ZC0ny@2xj?xDfWBte{v5#Gys&$kN8o@e~5rtN&%C6zbU<-{&MrU z|CZky91qr$s(uteDFh@n34cvP#Yw~Gh5(Aj3!n(`6Jh@h`{$MGpOLUbHB^TR9o?a$ z`)4lTo5Vym)bmi!o0y&l4hH2YFySb`f?Dp_J4uB2+TX4ocX{aloiv_>+}$R zg~8!MUm?3wT8&KZNE8Nvy4j7gZVx7A@ zbz@eDwe0594YKUr5-W$i8?9zSKE&?wZpZ(hrdwDg{;%$T%G*aSVn8An1CiAC)B%(5 zJ=LtfJ>C-4{4mOA-2Gg>zt4#sw(vDLzlS_W@AG^{ zB-iE=c+o^twDBC1lY8;|r)ZVCMF8+cce(d6Ay%7aWG>n#5u1=1<^ZrI){}A#3{WDV z?tkC=qqoO}157#i>K$C9iP@X*eJR@UM>>H2W`4q}3GABp2HWGIKd?YAHjDMNJc%9B z*;&pw=nIR-Gkp^>fH5E<1BcU{;kIN%QUOIn4;T;X07*@3N3jAVDXAEqe4rKV$TSB5 zdwlPBy(H2D<%#KGamf%hH8EBnlm^g`-=@#YfGLhV=G)10UXUv3&+Z4}h>3BJ)(AQ7 z)$QyJ9mrvSr9Y~_hV>QJ*AKDp!Ms}rtWaNBFG!*6GbOp0&vEYF!6X1_yf!ojz=z)3 zDQpS*ZVb_A5~5~uig`Q2(hv?J>|om)yEU4L6IX^Zo5qerXG zxLz`P^ulq;bT}YU53Ezq4cqm{wX2#Bse1E)Di-E_`sjqL-zlk~(U>003nf$47^5WB z6YVic8)5fHJFez8J9A?73~jH9W8O}JfIJJBI4@*GlJ*Mo*T8=L@Of-FE(Y}$)C1OU zJ|Go9jdN~2W6N1D08Tu}Hn_{tUK8VSr*8`FrS;2nPYY3&9g*^xktDz@D;af5Gd@#Z z6Pw2?Jq_iL>*tr&m+I#Vpgbnl*D9lO z=AX?v{loDK`g72)>-`HsIoIF+4gcV27eFErq!v_+LSJ}b8ZrSOG6O)}TjHGeA_Y@7 z4}e1_x$8YHWa{}U#_|7sBuFie4IRLeBT=L*62LgtySLg=o|-<-E7a%FOX*LxL9t_#qqV~ZPEF- z{&sH#ksH1?xNG=Q-0xm~2QRna2O}HFZBa13vr4`S@A;(5xtxbR$C0wqlYXgP?0(bV zpy@r#1vYOU@E%9`HFzPVy_DZAnW#Qu=a~d@N(TBvIR7{D2|v!kEGNDor*K}STCZDY ze!IRydr2E^-PKTW((t(<;Ni*v9zwiB*q_4w)Oh<-BHQ+=nY^M-V zb2ijJxj?_B?a(*aBP8`eE}YMjdIqI`x}Te;P*ywo)DEWC+++TN{AClVaRdNL^d64& zy||rP(M9-iqp?t%uE9YPpQlYrNg&Fc==7`*mbWZsKq^Kh?rrq$!vCJ*04hN$V9W_t z#pOa@r6PNqp5TW)xpN9B!dN}fM=}YW!0`|HtK_699VBTtC+SIC_W|}T`7*~abUEgs zpL+a5lIHUMAJW|O<$I|2kurDQe@_#DBoZ(Py~|ILqd2cpp8<%)_n_>jyrW2gM|PNx zxy3k;Cratfp(l6WC7qy)~kBII++6;T?#-_Wd#gV z%uavghq+kc$#!$pqeaQGAXy5%2%7dp}u$>-O^JT?wo@NcPaJ zX7d3gT?(jr1#mkF=zG@PK{vQyu1ek%nH7fv+8LV}qM`q=d%4BY9{jZT9L_6h@i1lE zHD{N7hwvBfd!BUo9>@O8M?E-B;iA1wmpi5>Mu$Uh5Z=?fLT@HG1FfDdaNLSJz0(Lt zrN+c%3bTs>eJEe**lzOWTwq2y=I16xrTZJGk7$Y2Lqq)}iqlu1;WeD7MH?>4~q2Z6p^AWEhNk@M<5)As>F z7Gl46&U+AL!z$CpCjjio477{woPEy%0AdV_N#NxIeN3VR=j-gdO6d{?s1t*%W;o7W z<#ttiwAdb>7>xRxZUYL3adTvDdPgf9FG+PSY+njJj`g>T%CSy~AO&G6Og;5;=U;Vz zq#SePLOozaQp}hmGQF&VY5>WS-K+9Y?-QdVqW#fsH))HssTwx6kSD!+Fz-RiBevfI zBa#Qk9@wF8+>jCJEWHYWaRorgZ7}gT=AU>@6?w+Hk7L6SyCpU^4!f`QPxYuo|4a9_ zx}yF36kQqEd+p}|S$?j*h5v6H^{?!;N@+bV*+1F6LWo{k=TsX@0@x<&aoF9YSwWU% zv7wFbqmMw({w=;1b$}!n`mOX)G5P=~mt*=dC16gSmnp7KqWoX{V{(ijRT_WO+|S^r zU}u>0Q~2vsQ;3(`r`>xwHkf%2@wGUAk66#;#+fzb*5o|s^$qcbRs!!gJ2urCox-{- zHpUvPLC@nuGQFYSgCc!1MYyi7QJg8Tg`k;knNIkwqHIBF#}-0#t>_eQTO$M#gr?h+ z36US^m~IW(#p)Puh2s~>)`_6pI*sdV^Ge&I+&$5yv;$;uqA(%tVed?jOnyr+`=$FN zx>pHty)ih^3)fGGkIG8G-^>`ZM(RQ=iO;hp<9{p3&B-}7fKuWPa-#(x6?>4#4S>7J z)1Lh9lPmx#sZ@EN^LI_x1Te|{)T}0`e+ou=dcivL()tbopAEVmYp6JB_}mac(RcwA zA$}t4pJD&Ja{Ut%i%_8&Mxh$O;n$!On(%wWfW}$5;JC(tE#db!`F?Ow;6$Yi@^imK zzyIQ5XEz7MGJD&5MIfaY1En$nMKpPZJ;neqA+GY1K^&%j z2ax#^c^2nW!r?nCIY#{+-)O}{aAeDqvj76J8g|}M3@j+HoSxME$N%!IJtx07QY$g4S@CB3c1N!!zA!%i?_j()bEm!O5XovvfX@? zNT#LT#BuAt|1DBY4zYl#>6ll~aHIf63UG8eS$7=(R@JzVO3`-04S-~}xQA^Ja);XT z)G|1BWD2F34$9Qj=Enh$qK~@kIqHcA%t43TeN?vVr9hs`r9Nxy$B*#+KGV}7zSn&i z_3)Cri{8uNuyePPH7MU|+-S{=$(`mbF#>Xj7wpXYl)q)Zg6n(-Ag^}}!mbAWG8|u; z+dR*2*T3;k(Ic_b(!)+mwEr=0ACr#cN)e=HTV~ABCnSZKoQV4=IL2i9WxJPwc_1}B z+A9TMVtRDEe-;64$%tfK5U{?=0nLUERHzh2en1Z2KSLYt^hST0kSs~|Xek4sL*lUn z9N>u&dcQQ7+Qf~qnW(SrWD8w~dOqp7Ozz}G>Hr~u0e^RE%o9B9ci}v)$xV0}TXf%>mY6TxUi58v`-^ⅇY;zG&r)qY0@oF8I$s_0M!phY4UEx`X0vB5Tt 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

pR6hjO(+7BA?hF@$cBV1ttVaQ0kEXT^{3C``f-{ zK$*+hCDQNP71{zp5@`MJ3>!1!z+0?{baX02)}DS@%aqGlise;Gt6Mh&fILw+IveGt zM=0wph21LF4>n?dN^Ei4QGQuHVgMgg7Tc0(5a|0+6fsfOk3hd(8Wbe~rkLd+1qv61 zO{27)GmxEuieDB;I%*u6KtF0``_VJ34y&GCFI}4{wJ;79X6FeyA#?P99{ol!fZ$L_ z{S(ShN!^To0qsO(UoxL6Bh?HP$TVeIO)A+n%LPcEoIOGTquP<#iJ5}{d&cgpS zre`Y@{E;(r`sZ|^9nuQwC}1?-EKC)__J~D;6x30|5~VbxU}fp3I6AHr)tf07DpUAQ zl`Dj*JoIZ~#b7n=e=S#$uEzegX2nponcK$itDW*g^tdzR@?<6Ksz4l|ic>2&F+mqX zEEh^sRHVLEmKgU?ZMLzQ9qUUW`QiGxKtBn6_)05r2{m@U4u~0 z(d$L2;BX(2q7v?lrNkOjRLTJ%@i_9!jU!_}9bZ2&<` zJwnpPQ|jH=e#mpYt9$@Teil%=m0V}*V`9jqUcuRI({D}h;BBnu`j>}G6RC5 z6lUD`Hh$+X!1m41ETYE&c(V5in27do;t!+=xz``C>5AJ2J$zWJnAnxRBhiW7XZS~; zVT4ow_TÐ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±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 z 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≺j7s~4uh;X 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≀S}gDu;JqSC13`PY{N3yS}Pr@r6B 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�(umq8k-&d-M-`6uWS4Ld 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�ZcbZ_hX5a&b1Xp2n8E_Z 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%0D;LzZtIJjn zz>mfQS$>&v9F`PZI3B`+r#FHLOf@L^QSTYys5A#9c(fSC`6cTQs(j#c}#E$_+lIPFgS6BfuKx27^nXN%rM}J1`tZIxPH; zynuXrewi*4)@yUtiJEr)i9_cv;{2;C5+`=L9urnFGkJuQD^`BVa}>+B(`f%uF_4)S zuyL6UWbA3QQ^JNX^3ei^1LsR{OU~guV9?f$bf?k)6Oa$zlVrVU->GC!@|4lP!bXM@ zd$m5Er)42CS;WFIzLch`hxvq@<;I6<5ensak`tNUb9gSRwrmgD<%A=+Bgii&#w5O1 z9JP^bw-4_J%doZUBHlCdP)8@~vxNuD9UcHWU+qb@y&V&()RB1W7qNh=xl9|l-j!&n z0pvK}`GMwZm}tG+@sCXa`1<1=AD{)CzG{bHM*I8X?Mc%=XyJD4IKUOUN;5x;as%Bx zO|Vcy5U3g8(%3?;*z!Eyr(*wT8-Sn5+F-T=z!4nNXF)bu9vhYbLLOdm9T(69=C2rfX49RP}8 zsmb`?4uDCtn1u6GEhj-$5a}&9!iFyyuhB%c(Q5oL6Z*ku;6D_u@mRn4dDBPe8r0%y zzQixY=(4RTfqsVNrsfR#{Yt0O62Nu1)LCr#eOwm;!QY4L2Eeyv4jT_}S=kH=NjCf7 z)mF53CO%&4vf%duz+b;oe~*v8i02O$-w0%!R_fr-!_sk)UlN8TfJjg^oWgrO4FIVO z#m1d~_khCk8^I)6fb*eUYB?y6mf}1T-UG^3nhRgLg`kkKnRaFopWe!F0g&$pz6Tx@ z>**g%13W^!UJfnIalwnn-GzF&u02g-h=;{FSMq=&y{m>WKqfB05@d2m@V)^U>q7p+ zF4lD5sNt$jx3Cn4WhK^oNE?=uG?#5Uh;*X3k&*+bhvx@9rQp1vhtFRJk*G6h&xz!^ zRmOEuEg;1;E#J@vh;#@zy2TQbcDw;10laaboa6D;EH_|}-vu0crN{3TFyj41z~`v4 zlIDWzcU-e887`>tcZT)f0`43Jc@Bjez!AY6Trbs<5X;j*p1bPq4NFBTn4|+uhw8c4 zcD>T{cWXZZ=-Yxw2Q3~&Fiv9l6=(xQBJhLjeiQH$#qYcZ1RVx+bb#it>Of7ylF#nE zJid!@jOL2$aQbf=#{0Bkx#)Ia654kYsC1ifqy2XPr@m?ZC{J(qrhXo2Nsz41$0AUxyWY5_;asr2}#$R zKq4G}&B6eZ##1-yTia9Qu_`w#e99=s4LV?S7);VZBwZW867r2<+@$BzK_Y#8eHb`m z{HTKT1el&VkWUAj4r{@yjEy2472_2uUFqGTD39mCa&JQPh5T?3;om+0Fo~6 z?`JQ6?sAT5`$xom^Q7%$pM3rSwIi$D@LA_<^ye5Zm*S(J~BYCpods~*)72EudlLUINDz8npt zH;`^Eyl&k_{6=`wdK9`D-m)G;JoR|8t|tU&U^8>P3N36|84ikD*%Jr{F&{sPbiw#m z?j+*3%9}Z^4>SO!=(>Cq>2y$OBLQFu=~ip2axl&NXF0nep}*<64LTQ_%`RtfUsU|~ z6bbzu^JHmxgD!S_S)5&(~l37`ZN4+NVjyP14g<9Bpp1`UB&4@k{;HNTcd-Q=qgcdM<3<|bbW$;7cHWt zw*W01N%npf^}IZEVK~nD^`eF6`%v;>@r;6X7x8yQN~YIoKZj1$21_R;))V9aadh3#lq+7kR>F930B#3Hvk{q^3Xw03FWIm(6>VgB%yvCNV=0nB)$Gy+KKa5 z&*N40g9>z^ejPM=rTVIYq*&eJ5kVwg{|0DOamM|)u6GT`>K2mp`>bIpsd9IVNnTuU zS_IS8gZih!jyTuB8WxarOGvuDS`g`OK#~q79kQ5o7>qjXB2EQ)5_oQ4Daj92!JitG zU=qSA5QMM_CL!z;0Vq)kC?WoyRnM=fUcO$R-VTQapb_eswrG~44ue?wc^=mIw7~Z` z!5ywYOctk7GL*oOY{mNwK+uc`1vunj81FYn2D&#X%pk0%)AJqHiQuHgf%0rcDaCo- zc*J&*>zSi_by~r@%r~E*I={R2+i;Q372OT#l(y8Ht zx@R*_25;13i%7}I-FmyHqG&I`rl~T{SDX^<6=-xaV~^qf3ruFGYPhZedv-dB>nA(p znFOv^QI=&1?}wl>Cl{bamn`Ew?%s2$mX|$6x6Ji%x{Bk6Q$E?FQ2ka4PAR#bA7>{5`MR2@wslSL-zD_2HUY-HQ3h^ z6tAFPE)BlG{T5mf8bNukpd%<1u`V3+glK7Mac?fj^`6zpQjzO58`agKzruOkdWo*< zcJiCy*&NnC%3I~R2-ahy?JB`IuH($3JbuVFpTas1K4jzjk?Teah(BFDE-Xi}E{{>i zY7pyT=}>h8=lMtyE7)bMi(&U-3-PCwjxKYQWRPnS0=)Umuz+dY^p1^ z5aa8Xk?10g>k+mKwm#lx9G^_dH^wQnoMg`;J;5ZUo{vBh^G~9@hNcmY)yt78xX;pK zY1_H_IA;{;2NDC~5bDvv=C1d3bsRys<7*vVBFb%#x3_WKUA2T1!20BiU1AU7#kknP zaffa(iIySzbBHIHgmF*j9ozC zJ-O)uzo49#9f4spH0LM`Gki!Fq?y17?t_KwOr8VIMM+j@(Pk0D;?WCOSd^WCQ7&-8 zB>dR<1DbOdXyIX5b_K?8d^zI^j>iwE9#55!59voRz-nm072tq)Ie;%Y&qDPtI<2na z*a8-=GVb752n(TBcX8|mXxbATXZWB#i-EA{DcX>JHSG=B@)(ec-l7fZzo|wzaPKt1cRS&8MWS7x(JuL3(F$^jT+NBp+9 zlyN|JssZc&&)(Yrw{azSel1z{z_w(!BuWB505rcr0tB1i0KtzYDN&F}O06#&mSwYT zYd5&v$)$JKNw9m)5!u!4VrRWGm>JCsW=1n=dpxt)+qncuO|DppFGi)dwpc0Wg3385 z)@Evrx;P2zYU&C#=TuNBSCId|(GQ{^(xhfQ)oGXlLL#gvHzz#C~vA%OFOdBK`40Vpyr=jWiW$j@14ps$+G z=g;cZ>TBf})R=(@VDozZ9O8e|d@;YIaYFb-^*oN>EMHg8;rJ`%=ha2%%bBan0`$6h z(V8jUtB1}*8Qv1WWPKD{bz2J}Q6DXqI!c0D3ZqwqdKOpnP zZ8jG`IZH)N<%0W4ab69go{PoPY6$gQ))(_C!UVO3q0edORZgrwUtCrv+&Is|xjZLA zujps*GCPof=sZk|LwK2J}g zeSFTIXse~;9^6Bf&W)y6O^=tL$cNYyjPiq)PkR;sQ9m{)c?RYC zD<13Fe}nVNc``@cXg>hYqdH#jQ>`ZRb);HM8QLy4CkT)#DYyB|{|lv~S_&_!sZ-`N z{}6iUWcdi%$F1{@Jb@S2k542Iqn@@y$IDMu@B*7YWW5f z&1Zi1iEm)S;qc*~KmLy~ArCC;apY^#j=cQ%e+rPMaQN>Ip+0UccjzDC1y+B0^RfR6 zU(ytxjz9K$Q2nXDee5@(+Ed13*t%>-y@3~8Zbganq8|KTYv~UDpZ8S6%lec5%Rx8^ zJ^QbpEFN6lrvKBER}Vgi7vPVdj2%Qd&zyX6<{&0WxJBndAHbkDo@hIOc0Haubo{^t zfJ4|Cjt)%+uO9f*12RCPe|6x=1OFD`-#+;G!6X#UNsr;Ve&9bl`1=Qcj)B~_q)!gu zd~7GAe|IllfJk=!$C2+}9QbpBQIGw%2fr+70HLsT-ofi=$067E5BILlGY+;CXD$S$q!ds0k;Y3ed5?Tq~#Fgi4y#hyF+) zs4vCm8gvUvry>nntZk)M2azx_6$~R@LOfJ#xh7ONBh`T=C%rf>9FopxQ?8zMJii>r zp*nB`@W_wz+a9(-ByOFSs{u*9xGr_@0OCL$zvy8dkc1ObqdGtm|8Do-IuIo4QES@0 zu@BwD(Wnj@3E*fqbwH%~d_?ZV{rq(+L0Z;J;Mo3qxR+y4<8c8L{h~mU0GITMTqpWp z9bgjWHrBU8*an&Q3otc0BRTD^gGT_6IC0Ietp>JYL%*#%A~_&Z9V{x1S;{6Rc=xNt zJsgo7r=U8R;{Y=ZdrKU@Ht0^^4*srf2XA)Fx2>G*jzKmsg#6pVBp>P}XtXcg1w{I# z&gUk^-&@0$SFfoD&nt%atIYQRSk!Rc>g73Gwh`Vhu@$sD35=Wf3nVGnx(&aR z(MrGKMn9qRs@uSOd8|)$#~m#|H~R9;Qy7QGu!SAYpIgydF*r zD4vg?sR4_?6+tA=I`U(yIFE($i$TeI3-PH?lJC2d)<}XMLQKWRN(6i(<93 zt2T&XNUvpHR^f!C{GR*|m1^}3Ep_)F<*_B(hhJLzV~qR0{NdNvzH+x(z5U_0*S@(1 z@M!gW)$e`?t=?Vx9`rjt%Xjy^TKMkWn!e@37HxOmy88o!zlZ<-uv!C?{u27lyLZ+Q zU47m9gVcY5_Fc_fH(x5?I;E!#4fXaU0;NH;hoI3Ybig%S8i(3jv=uR)S3>bYv|j*8 z{b_7Ahx;1PRYS%3)q$k-P=XE@1d#?1Z*SRVK=E0Koxjm3DI44hq1;C2B!U_PsJExs zSK)#moiq48P4I-{MFAxBhWjc6c*NE@bh;QpSU4q(C&ThI@(E|8>EcXw0mo-`O+G_i z*ObLfP0yOOcpErEJatai><^gcN?JaK<8y|l@`ENDOk#Rt#%}{mj&ss|PD&}%o1Dze z$>@KTuzwo$jg`mXeT?_T#4tXs!TVG~wfKQhXe*?!-Thnrii-3-Mt3%VcrF0a;lT!h zkWT+kzP11(TVAlAMXi{bHOp?*sZ1y_#sNmC#_}vuE*0n-wP>Sxrp<9CG(o{YQ9?i zt;`pd--cese9Ki8*KKQBo^j#6CIhZO1@)R<$%p>t+iaIQb-X`rc1ipYiHI(Oi`*6HV?=|~lh~KI?B7G{5lty~tK(k$O{|JTp}Yj5cHYrPCydc zZ`XtS+E`!xJh!#?7X`AIPh8jSV3K{^as9=8*hzn3AZh!SZ8%SYNdz_b1d#-=#D0eR zQSWa~|Eq&Z?4LMZ@2_x73ZZ=VZ>qhe8;;kvb}ROj2Y6h7M~y1LqF+=S!5jf1HEMbf zhbE`~I*>%CB=nD-w4=KKO1)_~DIr}QT%xnmws0LN66H0hs1N==N&dYOThs{$DX|4z zN4hIX0HqyRO@9*V>ZtUU@qA8qB>POLtG(i9xIy{6>c#cK~dyDt4+uxIfhP$oq zEL87Nx>fvswH~V*_4L7yi1P<@TH^RD;P12NYlH5-d@sTS`0R_|QV6pt1XM#?f%SgW z!!YMx1`_>1*HK=)Yn={09YtT*=g0k8Z+o{5VV}RH(AtLhocFW`>3TBl8|`7#m+R5^ zA#o_zALD%-&V^!hz#P|xwLl5uzKyX$D2Z`lIf9Wt#s%6`YzXlS%1oTk*VE-$gU(2c z`Pnk(rOzr*1Dcvm5~SmN&PW{dK&83VD2^}7r!ixIzmIu%SIbZZp4F&-C3B`cts!4t zD~EF&heQp6Oa$f!kYC;CHwdQnm%4zm;krt`_dO*(N0gYN;(EH;H#$*Xw_hoAr0{$I zXw{y;eKEYF3e;EesC*Cgz3K5QI`nYckChni=d!0wDWKnB>sDKDwq@=6{z=_JLMh)Q)EhAJEKD zq678J%R^h8320_G!GY(342yPz7cwIW68@*+9IGG=rm{TXYl)Q#hd^4QjWs*D@m7>F%e^Ep=vS9%c!zLM(Q!a}PSN%?Ud zfwfdP;IC_OGU-S9Wqq>Jhx1=bMHBoYVM&da_=2{iPZj$aZ%%J;;g(n4_XRI{9#be?>d1j-dTli|5oa#6MqH%7=A;H-!uN zNu<9~&wsl~O^g?r_^T)14AML91PF6L>m|AMxnMo>P%7h0uW)6g#HmBQIPUo5U#0DW-$ zYWb{Yht0*pXbi{8i`oc}JK?Jt97jC_gT~fTo*65Q=kI|-*Uja^B-;0)xl)KiZx|P} zDDvMZUeIZ^|B?ko`umjWtQ8}Q_#4V{X%gjABPB;olxHm);WAWP*25{Bk9w{&p2T%k z&z44^SG6N`A)R#QTamT_V_HE9zO+ zr;C9E?r(V--)tak&TItZIG(8iPZy;*jT6y&YQCWAs7G4RIFWEEwNN04a4B!}d|8Vk{EBp?I9(uE zcBv3W`Wu;x`3N+gTGDvEuPSG?;Vk-FW?l=W(O;$M0{d%Bnk@J?@H;do3jFCDZ zDimN=H^K|$aji#&8e=j3{t0SzqdqM^s&?UgXSESOf5%)f>o)PiiZAuMbuM5G<{3X3 z59K;hP8eTqcZ9Jpuo<+sm>I`a_5KVmyjWo2g3ws0-~Q5`VNV9}I8JbpUx0hi{)j&q z_M)6gWgzVPG0F#UsN|rTkmmaUS{~T&;`upchGIUHH&qU8@QWB*-8J=2)zZ-kYqA{N zXp13i1dIIAd`b-_S`Q;!2pU}QiQ+Z9MM1rVe#4FW!kWKy3hfz>_v$BaVZzz$iJjQ0 zfuSdHUDd5_>r@;7Q>rUVAWJy7*$!{-0%Vfm{05~H+(`{eXSf1htl<=Q0^xqQ?{*Wy zeOX^q6T*FN@9pD%jTdZOjbkX60N2qQc+t+azR9g7yK*gWK5O8G+wH!61n1kXo|2!& z`77GV^wR{KuyrK2*yPrcPXXBRmQH-~)bHYj8K4ul@@)IKDd{RgZytZch4X9u=-4N& z??98sK6c%PCXT(~`eRJsY#sgN3s~T3NgRFS3rR;G+os8*AAjK}!j)sMKk=XA#XEa+ zi_SrAzx>e?zl{X~Y-RWO|A+;HA3yV(kN*H*RPjjs@h1WLln*Z-`rq+F-2deIWB(-_ zo}T+c&q0*)#2bfNrN09()O+A-QUCx^kMvdPPod9BC!|yjC_3;-%|Yq0BM1{vLVKhX z|AYP;>6Y||0FvOSbl{Jm1epLL9rzd0pG(J(e)_->$qOa$G>rQEhrWK`U!wj$ba@|x zL)DR2p9((Sgco^d%QpG;(}lHLK2`QAt?@*~ZC0$UkMOy{W4S+`cd$1zSTZ3_E zYC++`maPdsPaKCN0VFx#k#IV)kE^xx1M5(IF3*LnWnIe$p>@#F(3JiH!X?e>N4d+z zIhBreOm9EejCm!1>$u|RatS~Z+GnSi@SIC&N?#Ix*VNezztp30VvJ6DTo~aNZvmEX zEJy=kgpC@I6q9Bv1T(o6n;-pdQJSv!87|GHIDsadkvL&RaI+3188eb!!}ACZeVo{< zZ%LM~ZB-_mhZYGSA>9KChooK$@kZ3&n}Y7)g!F&|l5j%WMe9J4HJRmjrQW_>fTKES z^cguCiT*XOhBI8i`n4;T8}0S>!x#VnKmbWZK~#DHR(In5*MT4b3jK=pKJbUU7nFR+Nf(AC=b$FsRZxlaBWC*4CkBr)H+wer0==&uPts@K!th%^;fbKXN3FF9%h zN%%YPuntKAND^8Hiy9r101R=VsSX%9;E~8@E3V6Z8b*329i30<2x=?a$?(Uu^1Njz zL8TJLdAm6$iTFlP$q92@>-ibRsayL5l9Zs_g7Mp!705KBUg4B9mH?Q(YRI8*|VgmDVNqqf&EK9vWubao0WA=!(5$SvYH&K->hQXW4v8BBUH zJ{ea+TkWWaTVC`OaNWunapO20k+_x0b`?>Ss}qGJn{qD45=9BV?lbrLOU(Lv>iz5S?^1R6r{&iK7%;k zUl>RZBOJ;NNn;3)RVLC?e%uddt2Wyi3CA^kPF}=utvHv7Nsgv!@pf2qK&0}V5-a2H zXK5~f&g9?GIhEl#Q?m#t%~odpiwFxaNjN9jVU#zOjOONLT<2ssH-A!UAZj14xGZwioFISR|a7gaZXVBp63T+uUfCF zn1_-7f%OldbWYM`q%$Vc;R>#U+2`WC5f{Gg1yeYIa6Hw%2`?B8n(j;z$nOYum3uev z{zo7QN=Ge@w+V7^+`KE01i*vy8Upwb&NTOdNGbF`2P|pSZoS_ia6$lSyLKn~OPt5( zSq~)WgmfQ(gz|QBJmLbj0CE~ZorewAord-Td+3yecGlA~%=S6@u=PHW-T{*8&Pc9- zGM|f$=|p|JF7|bR5-8f~I{h;7+rgxrK%_N-x4*MM?IQ@f@^#l^#5wJc=*bjpL2l`ZG_e6W5<$PrDoQBJZ}| z;`5Z?kb>uqt%z@ax8;^EdoO(7@g34NcQvPdD91h3e2C+?Q&a9kbgDaf^;D|$$9V3) zd-7Jx=!1H4>eQi@pK$)^)U8$=XTH{T=)3M)ZDAAbR6Zbv=7_q}&IpmgBj{AY)v_`7htQ)%~i>CiBc zuM$-6P&#q_yYx>Nr9&_(y!zf%hPd$)zfAa>CP7C42~COF^kXV--J1| z$$6>4a(|q_mfz@z`%<`0vJ&ICn_v|`{Oij2HaIU#z^W7FcjXkVV++T1?|SCpgZj6A~vR&*djlyj zsdRsGcfF`jrvfs;oarybH%i1`~y`EapCZIP`7qv(ppoydxqo`*!b=d}U2%yZU0Ewil z#aZZU(lvPMKr_!3<`e)*sps`M3xJaJd~qJ(-^j!ZoRAe^aa`mR<%#lNO6l4p(%+CS z6e1{BwCB3CT;Rka+c}YemY20K?hl-bbm|MGrQ$>d3df>}EvSCJII+1+aXg$r`r@)4 ziDSaJv{IPF@t5=q#VGV;^`bt7_?Inc(NP2EEnO(t@$v;DiujjO0Fhz@b5=@|rlZpR z8p$H8tP~??=S%X65pfgLSuXL5%^Na6C4^s;mkc@!UC*2^jq|)R=SrO5eL+5lB}3eo za?Bh>`nY+vJc@MBmln$-DDQb=(HxNpR-GviSI{5SGbMfja;>mf9Km@%r=Km3mXJ=5 z701xN=S$~`W5^db&g(3{u5fZ1(-4NU)95DZ#q}ZZb-lczjU(R;^Fm=Fh4z} zM7jB~cqbLWWJd+@046)pJ_42T}zAf8)rwB5lA|2iD%+Mr=LP+6D= z$iu--frfkYEeP9=R7f`h->nwBaE^p~@+~qZ4mNsn%{V?3>-M`5Ke*nhp2Q1qsMP5{ z@h(*Abf3uci>i+73B(KKR+vqQCm?kk=MzXN+2d1~s7U+n@P)YF2M_@UvJjaB%{2Zg2(l2p{8;W@nKI|&S9be4pFjp&o)rQpN$1{^VZ# zLjy_vr{8^i0TT#^p4y;;lzj84s|UXb#a4O;T5ulzV;?;+jq^^lRStiI`>@fIYQlYv zK_G&$oOoQ)W>voe#a|779_0d*?Xyt7 z3P8#Ipo-%JocglJC)J#igc7*w-$Z<2KEuDOEBfiw0K>%vDQMt%plc~QDV^13T)ifK zU&Sd`cap!~X;%+4rq8DRI36o%QXj5|2rm|q9_0w|sIK`bnd29+mF1!twYXrjs}e|Z z<9MSIP;#OC;-tS9?X2rA0MZ#J{&X?oC*XYAj95Jqlv`_t@w~`8Td3`(pOvE#`W45C z0zl$csvSikuY~0e+@E=KBHMxMX9GgG9uK9sjs%A~k`J$<9&QcWj{HK|p7zQv z?bu$Q8MZpgs25-o{|@Y1+1`>^uL87gFItT5Rt`S6P zaPHX=fVl~<<(F^_YIGLzq94}l+2))ioRuB`mEOmM^QQqx=trM9h$O(G{enm$oyaHD zxo!e@5}?tpz>||tq^n=2{eo2v$i(u!S`B#Oc!NNdtpJp~`1@N2h(04=sqTa%wt~ZV z(OwtEJG%i%8=-vL7REmS(A)4kBTR=S8%PQ}nrjF%UPZcWEuZ%`RDen--`j*R!6dX#07^pla!}eg zkhDJFYDK#V5VfHH6G&=_L0!()ZFEX9G44zEyHDNOri^zX>?qT_Q^=PNxSMg^#+9Jl ziu4otkjqnnZiLcaj6=o}!HQ=C`7*&W$E#y`eCU+Haa}F(!=#8gvdQ=UsLKJ7^5e09 zg!A8=(1Io0=QKbhGjFXSSv6h#^4g!R!3oLt_3Bpv3Vqf0&FVJ*3T5tobL}?6v)@|#<}4hN zR=)!XsapNkDz;|33$W_;ypnrfVh|@LfFxU!2rB@Rm=9_LNpMQyLL42F zhQiwv0ECMA2q374Cpf@)gx+F*h3{2#z#w>3cS-_qGJvp%_lJ?rLjFQ9IfVFuoGOhX zJeHhrMRPb$0VEY?v!@YH5a}$^%@yXASO!|0&zws^wK7|8VOz)MszqmPLOt$E+yAqvnVefevjADHBK+ zN(@+hkM2(Z{epIty4)Op`abfxyO7UzDsp3CIOcYHkzRmC1c6!(V_|RO=xsWVAC1XP zClThBB`5K_t^-Qg+KnHW2p~xSMRn&R2Rsr0(spe}{bIpUq!$a30%US0-7*~~P9;yt zbUfgKcgt1egM)^G{u17rl%p=r16{VR;JjC5!+Hh!TIM&D-^BUEO6TPz3D?6IPLCpe z_hzre@h`UyvKLM@#nq`{Ar(FloWCPD(4*pgD%@G-JRO0g{yh3g*k2j&^ZmnL4kFwI z@F5ph z`n3((pr6+PAQ$3y3a4=Y3GSdhwpO45?AZnAxi3BPJq+Muw+p|!9hL2CY>#NyepIxZ zitA86pY7-OknR1Yfh3$y9ZbS=X4thYEIH0qPy$QB*=jqOM8IrM5J><_=r=0T@7p1% z5lCuuOkx=A-M52MvA4o`CgA|IrwWkAaV&ZOOiK48gXoWSkjUBktq%M+ppS4Cs>cfu zs6p%HIAD_ih#si7p*;eus;3w2fMZ$!?GvC;r>mxD zucmiT+-k`}r%oJdaq|PW6B6ga8nx-_i4;F5Z2I7&)N%*qTs@g;ZG(PrO5!{l%Wr)L z>VQorKX6NJLDYZMo#Ix&Y>%g_)_xDtvE5#TZBPlvZLo@A0#?wLcUoNv+SA(Anr@eI z{oZJ6>OlYXhTALxGQP0KB5KK5Y=B=9X{aG{+N@#t70)l!xP7mmx6KwT|a}sw<{s`FG8?+=krh zdw+uaw%*d_&Eq}-DDvWbY;akD0%Z0e?5?;oQ~^pig3SU{CP2;p#&Jq>8~SDGxa@}7 zTf8Fw(HnB+1e9B@(V<^B8`)c}DYfG#o1F0s!_K%y9H-;aapb3y(lJ~QZtZpyt9!MJlicJjD?f#3>NC}B{dha>WT%F9v8y+(!2))hvif_%Z0KPDWdcuykbWD zy_E-bxg557llRh#d_wE_QxS^;*$dL7;!i=%Nx#30g;6PrDKKa%YW1T%x-_K_AktG) z7AGk6^0e)ka0yo30i?GT=`WenRuIRpn6nlKwAV0!#fdsw-8Bv6K1H#xN`U7%6AQ0l zXc-Hy>ksPl=7PnEyXVVTxW)0kG%jIFoGkzzRJ5m2U(iomoLIcBo>2*6T+g4$s|dfS zoXPVA{6%X~9YVev%3^*9@i(lqDkoZAQqJZHp4=$LEDpqPWX@$qk^Xw&oWzNjcq(S_ zg+H!95l;}s4(sQNJWepjP7e@gjOA-9`ZyI1Kocy#cu@~SU)C=c!??~b7j->iVj`<} z$sllJ6fYZ59Dl{QqE8|Gs(z(3g>c+bHWs6#1wGd|om2@)Y7<(Jz)c(ff*p zUkKA#7gCeZRc$2|@uNI_xg1I1yi6$CTL+|gzPMjJ|H(Ac;e45IyNc@yF0mDUVNu@1^7Y<^2)m68s9I zJ~~E?qnzsn0Azls27nCpU02VSCd_;KLIFUTg#IfO4pS34`g#7GF`=QK=VN%1;dg5- zmd49aWziTf;dgHV9m4Ue*6GqX+IPiTD2+icTl4k{>!tj>!Qa&-WzOL5P0vGJP*p3b zD32Q2#B(XH8GKII8s93hoh!H!{_s4vS$O&Z8K8tHt_#KFXZ}YkCWc}i z2`<25D@cTAxOF7M@xh{ka_eDne4BRQde~b}BAsxCil*Qch47>`u5d6rPtjY#so*E$KJXxq;{oGq1?b`N9820L!YTs2uk(H-Y+&GUx(Ft^Vs{C2zdX* zjU)dQFYvEF^Dn>fAK^v$mPHi$q7HuSnmJPC@}D zNea|)JUTEX9g)5O@aRX8a?%IT^*0%ydH2! za)6{~|M;ocV>%`f1dvpG>iPjVNHyn<-FyO0PF?rEBot0Ajoy^(e1sh0`5U0*L3o;89W_(vS^1f>F+5+_X{GyQKx$gzw>fL=|+1OtVosO{JufPO~RKL@oYGVQo-HUN}y)c+7#ny}iD&jym@ZAwr`L3j@(ki`51 zfH+|(l#WI1ZnUFO2`aID7-zRz+v+1=w7vd)hU-8SL8JugCx8^cr}eGb8bPE_19I?O z{8V6P`*D3F=evr(6Aud_3BX2xH@~Rv1>898nswUwspn2HD&qG@Uk91?10?P9d~7fY^?P$T|6g`1w>=z@>OhhJlwzt%Fq=S7 z8-9m2h{P}fB-cKa`7rLV0V5q63#lHQ$G+78ly(G?P>vnns9~o*j7RPRlkoSS_1fbn zp#+sm_X#notI0d+T!mNS*}7QSpHkuLI+`;KeQ7 zT4RWp1KE~kjIR`I-G=f;t^SM~qAJ_7^D^NHgwG>d^W=Qhjc{dKf z9`6?s?;0?ut$q`b z5kaGx^U>`Ozq|IG_Z;x(E}W58v(+s0s~={o-}WK??w!>;RRBqM@2*;i|IXdF*WOtJ zkmUP8^+$;RPWA1zA0qtiHLLp0DxH+>R_TNUKXA~X#|WRpO_U}-3h z<5H-^`GmerXcF;`Gg2K)BA`^M#j6ICKoZI!kU)n3>ahQw+JF+`>6kR6)&Kz&*W0fL zl7rA*%)*2$w9~3NCE36U!gU}?=}!$R$nOuN_?{HZgi<5W(bBjp3T*_E=Ja{_tcAaK z`hrXlX}-9SIS*|Flja=&sSYFwrzA(kR&F+!R7QTY=A1NVU~4y&H&dDMpU&Vt1WrkF zs4r59_-EbdcjXCX3Sl~G@jX^-;ie`AtudqzZUvPg#P=FKSvqcYU_q9SmcEYegP(J2a-505L>wkFsU`!D*JH1S}H9WK7U)fTGF0nv>RI&5mcVsnv$oJ{2=X$ zbq)Dnl3%t~QU1$iLwNI>a{SpF66wJ4dSF9QY%Q`2=s_Bem`|!X@_zj21pu4{+*nNY(Obp1E_wX_Oo50 zy#h!Q;a%Eqx7)RIdv+!IRVKT-r5%Lw#aPHO0b~ zYWUsJL5=hGyE-840U!zRsO3&ur4!`|;HdddYo!BW_nnrH+o7lKG=Hq@pagn2ZaVSK zNf*aIC%aCj>0op6ol`E3M+j`vnUbK7@AZ3Oaa`nUdgp|z4e5_tO|DkxG3)rD7Dt=k zKzRLl%AMU=n-3$t*d#Uc`5$gN)chtC&UFM>1;A7XngrP7D8Z*zH`))!rB;+rV5tpZ zIxO+;hj3=HK_!L>EII1MbF~g)0kl#Qm=~%vXZSwY8f$TLUXOo2cpdq7r4#qb-ttSq z^ZgUw?an-&>)7(GGX||FnT}1|M;!n2IMTLf#aRwc&NbVJHs5`s9G>KxLHfb-;cUA zus#q*y2N030OgHJLm2U3T$vhKS8+U&9$%-^{*)QfIBuFLM+*cnwfvMmn#TA-nU0U< z_})HU8pZL`rI`{xv|Thbd%ifP&y_eof7X~YIB&lwX{AU7`K8HCg1H3cIp3>h14WJl zdJCNe1?jrNipKGEd(LyZH4ZHT^?D!I$?%POQJ(Lkwx4kP+xAg&zU33B?*2)uf$Lv% zkG5XrIKpi^t+u|?Z1IBzs#it2!_7I{0co`Pj`tnhH*DqVLw^zD4dJv%rz5*RIF60B zb0hkhP#ZwHeQ(@B0LccX0U(`3Ka@9~y?ye~z3~b`q!WyH^yr3so9P5leLQxoiO!Eg z2{Q4x7~crM=;^6ps_mza(K(+>Iwh&V=bzv2Tzd2a{JegEOIRrB)v+LFh7~$~*jj{^0T6A~)L!@lXynJhiNKM)@K=uH z`jC&nP#@9*o5=N*YT6&;LVMKTkMy=W#~EKwFY*aR{(3&7CtlHy@~8pSqnlHH4rFzF z;TA+W1df6m(9(2nfZ_6t!iCh!#*E)qbH*Y$f4MxX47ljDGVA9TlLAb#HSL5IXj!uz z9jGCszlw>h5C)EPA_`>zE*NtPzl6Dltzq~gdkvtHDgkT&sHDm@K#6329ZV8{lF$ZF z>7jun3t$r3f8Ei&z@!^`OtHZv^PJ2ts&1&~rBSs1#o~GU%c$$A^Tw!&@?_{{4eS`h zb-tcoGR6#~hcnMOt~VWfCaBg0J-mU5DgZo@7&LRCWGftk_yxgg=3;3Q@dS1zQJ!I4 zG6yw3Add4@V7x`YvTq@i7o$?G>Hwe6l{PprsZUptN z$`=j0J|5iy};rXv$x!cPax#c~fPmbg@L>i03g?s>M&^I@G}f(q(A|`CnD_)HK4c zRRK_hdR|qp7?bPJ{FM@~_iO4^BU-o@e$~S9?O`V!^F{qAFJA+b?D8x3>SH^jDA&GU z?t9An#p}!dIGI5|&8(Cn2)`s@OS~ldv9wf*#L@3lO9uNZ`+a!5ro7(Q&2weGXue>^ z%3&xSrY4}zn~UXflt*VNPDo!XpD{;qp4T#G3@&tBlTVk1i;gDnoXDIuhPI&cLTL!$ zEAo6v-Nf@JGj9x*`FzsKw7S+yv&mo&$(MN~0Q&&!t8R1RAvR@J0vn&sK)D_IwSLQgD4{ zQffg7*T5$qCf=vz!GdoT6B2n<^?p!W@bfisK`Z3<#jyaf6|^`(zy&w28w(KmetUs# zXtPghL;6s%$7~H^;zaIDG`le2l5Z;=-^2ug1123ej$Ho23IL(sdOUjI_Z={45spZ& zO5c}S0U8O%BmpLIOE=VC2a)Kc^fc0m;{s%Ah<_||;G5DwwfcqMIAk68pR3iUH(bHT zur=H>7oN&L-ie8Vsl($>Oh6kPl8zcrUq1N%VB$c3dh=jAChoGwww_qWd2F_Pa`fvo%Cr@6eepeb*9Q89G@Io_&x*Vts~Y; zLjO-q+u(Ifn$GqjEaK0}vu-*#i7nx5FbU-lOyYRS)^*eeaH$XNJZnv7{it`b6wUP% zIPvwX0g~#DNJYmPNq2yx64Zs?pAvC*p*?lbC?AnKi=PtS!QrSA`Rkxjeh#>o2qsL@JK@edrgT3g*235XbieB<%#Y>;}*@0yTSuopN?{ z0NM|bWZ>`2XAL5KR_E7v{-WI7bg%Rd!1SqL(!<;@w1eOY9h7`-N6{bm0+SwaKoU+! zLIrTt;D|IO;v3R&i(Ze6@xXpTB$4j(0FvXt^J1 zj)wh+54*;~fpr{rkLUS*9@z-1TwtC|MsmXmT(5Lg8AW-gi)Szb!1!NzS$P4^+257^ zL*;ie)hhgms_9jLM(<_ea#XE;-S?djzYQ?x>+gN{!|wtNx;$Xm^V+<14(G8TJ8I0UcDO+sw{R2ANdi>jmTqSjwioW+ytlx2a^pm{75SPs+*vQna{wg)8VLYN087+Pxdt%V$}QZGPdFwqpMv{D zFv-gWPB>%Gd7(Ytk>UdKRAM?aYw|tys&WnaUdX(t+ciYmw0v4<_pFN&aw02h)es8uz67Dxa1diwFgwl`eNvEU$!d-BP38Fm& zG;APA=}Qc#2*YV+0QsmP)N4D=q-wwj=hQ@%t<_tx!$p(^e-?xKF!&2>j@93D63Yh$0tnQ%H7)JlG zw|Em^(!(l1Cicf&!6fwGLA1B-n8YyJQxC5LNJ9VE6+mhPl^TJhhjm199EpSzk#Hsw zD&p(vY?US)iv&0%j_>Ml1b>_Weg`6b9Ylg-S|5IIzFTlQf)ZHd-|+{wU~^&XHN<;e zzE65kj>qNwWIql_0z_(VYkj>P*VTQiB}oUQU4bMx4bfpz07bU55ymG1OtPJiFfOVC zNpwO&SR5xP)Q0?xAktCm*rDbx!YKyoegnFGEOjbdQvw^u!p9}I8wyZ~K+(8O2c?##ZD5k)uv7Y)jp!n$N8MzOt-&3hu?3e#~(yF+}bTDMs3qSf;riZm zt1T$Eb?Q`@PNXgGpBimNxhv7=3=K0$v4 zP;?6CVS`EN$2LfP3;H+D+-}M^VU#Zb>s=KNNlhr1Te}g!-tLHGZ^7m`9@Rl42UN0w zr6vbl+Ce|Bb<#)mJ^~~p{B9rhgGc?~Q9t6>)$?r=q^x z4hrWYPAt&5hyzOauUG-3r*lyN;Rh5>MnR;%n3-}1EvOvL+TlIY)A@+$A5h>G11OJ9 zNCP-d=c5q9m$1M{V5m`nhh#$S3AFQh`LwL&9o1^e0W{;cYuq@k z43_9vblOsJ`~fYVQ8>YPT|Z+D8PLL_GKBDp>Y_TVBV0bK5SVyTj>(*`c`<)3#R-}l z`uXx07nKPRJY0OLIS%hCL13*IfHS=;=)1l=nrd9+1WL_!HFBCS_2m7S$)a56JZvW^oVVx~bex(*{+G&d zs!BkGLzJ;>PR0<1vfdlU63|HeE&%LB5WZeKXNI9K6yY&MHDcztj)~gR+4305p^jGW zDYwYumov|m&Xh->*Gi|$oH)B$S||@euN3F)FNQA{=A>W|&zHQG;tO^?EaHXgIF9-* z6*VcaiFB$a1!MQ}UCGa-29W=1em)h#^}MRiOZ;N|N&y;%s&mqSb}yd|GU2%G%#?zf zj#Cqq<*t;cDuE5CIh7;;x?GAT`%(T^&pE}D>9g6Tmd0b<7ULIZVQm_E8j^sNlSP0RE{hc}{D6o*(k;8;VMs;%{ zpN>Ht2`-QgxRfF$9ya?WZypmT4wz&+Cf&e9!1~djKJ_+UxL{Sz%TkAQY#W#)fFq#}u(Vq`0X7}FdEoofFv`F1c=v(-4KM2NKN)Is7UncEX+MCK(GbSeR_X`D@mArW@CX zpv?fT!*XUmqpIj9*69ovymoR(3MCP*JB~;Ik@$C6I3scEH1?wJ2OsAuBr5W2|`~ht^e%^q?6Vn3# z7D4I0boQs9>THJLSbkRKglkNhakKvm5Q*{Z{{)(NexC`Dg!*=LNJ?@cHsbHDu>aRU zB%yThA&@k0g|nS#pV&g}VYLn-HGoF@bv~*CNa}dH9qrJ5O=<&4xIgw*X)?~AfR1|~ zx*M?MfI$y9CK)?B7(L*SB!Hyd)B%w-jpxXdX7~fH}V~kR;j3-Gc_psMv zuk?FeuZKM!l;_oOJ&?~AbQBZibwFts$D}%t)Ce5y6?Q-*u|=FHC%UCtoWPGJRKJry97H-~bW4}Zs5AGZv707w!} zNsbb{=0aLT3MpKGB9P?036%%3p7K4dZ=n{$R%-aWLO`i443!;+Bxmb3g4@j>Ie<|Y zl)w@0=cg*#J+c{)+*<@u0u^oWw3Qb42TPBVB5EouKb{4u})m7avzb5){rhgD5|$07SxZf-O_)7&l`Jsuc^MPw_v< zd=csXX!cL;{u6*fU%gw~dM#VE)~wlT^&9Vff0bLWeZBg<)$dhn`hDm(s&`l4TBEbk z57vH&@SW<9)^Z4cZ|z4_oL2R_)gP|?1@v31)*79VZm)iC^)2YvSMRJ^BK%$rSo-0I z$p79C*ZvY}`TnB%V;ui(^#^OY*=qIA*1iU}C2S!l{eiirV%%b0DaD~f@o=2)slYDu zF;v)F3>9sV2z~(sG3r1Pd;$331D%Wp<24PLP=FU4pAkq>jT%6~ahwe#t=EndM5;R> zA^nbFlskm>V56-XkhB@7@WU$s8VN8-07$*-{mDTE#|4m-3rK@Fj{rUg8%F$aWi%Z@ zcv6qLHG~C_L}#QJ;%yK~;yC_{vJ71)oK}{o+JbdH12e z0FmmBO2(WTLwY(VEoSidDLIontzi6LnexwBXb*t4S%mE^+@N$yin`I>tzm`l;e%U) z$|%wWwgQR@^(T6>14!3xbY=Td-hE&a(hG+o;aDJ?2n3My)b%Ide75PH6TmY+f9B05 zgza=tvE`d^P7+(N*oz6Mc4+F zaJ=2sQQ<-~!Gt~q3Q(cXx(6n8ZuKTOUswl{0BjIMqEk%>`E17;xu%>?yAMP{n4k&4 z!#aSJ3Yr9v=qSYbE&dKh5%zC|41QSG7r$SzyuHQub^+vkR=OjYl)eWh)xn+y;AST$ zB!W1MACaIA0JLx5r~!n!FCWfZfK$7jw>W-ZzHR66tBx1vyW4fy4ki&uYIIE6D_jSa z956{ZCpGG>Tfil1K$6{0QU9)B(v|}zHEPjc8N_| zJa2HGroIK+E{;fb5Xo^ya<{d-P9VvBsJWux`Zj_|Cw_M74G)eJ0BU``2KEpzBFIB$ z8v*PHAW4M9ae_guAJ@R57Mu^kBZAuU`q2~}xTyp?Y(0$Q;bW5RK!bEPm?VHC2Rsr0 zQXNQgoRan%wn3#gYv*BuC;*kVYkey@=lpmc90yW;I?fjkQN9f*fF&h{>xQlAI-o66 zt%vxbQrjnOx4V&!z->zslk3E?#e*odWOs}8wP2AFrprEZXp3iQ7eh}flt)BdV8^7~HSD|0U^DEJ- z_T#x8-0E9r{y`}i=6cZ(WB)P7{JY$mZ$tY%H(S)!H_)FQ5UIIzGT;0G zz~lE%j<#sf^%LtYKZY77RgRCF51-7n=Adt$^0)p3YMrv$aQ@sH*50D81;0?^(|9|0kcfRIN($lrG$ zFQc=!i|cBY%Yj%L3<}%(jyfvoO6Mk&PdDJWQtA>%lc%63-7xs z7S@AXwd27}Cx852m<#VbzG6fx+>4uzA_Fcgh#FIsfi$!f;5K*V!}GtzJpz>{_+MaQJ)jYV@Lg?QtP z{bkuTaQ4CE833 zpbJ19f-nSLW)ZdlC4>nmX~<^-N@yn?k{Etfza-6~J#;dfF`$NSPD>~c4o6e2T7A(J z+QTi}plo*pdZV~xhH;!uRuf3ys4wN0QemW9Re%gupw>!iGFbzgqR?053n`ZSO6o#} zz!0}=W0)XQ6y?!@i7#9)5d=#^aeY{h4eTI4fw4){Uyt7gmPItw2e6FyhhP}*4?(dA z%A;dZMBayH^l~J_b^>rh`nm#8qO*|=Iw78bQWRl2PfeN7)D@HWgF1tHZOtKF3QkpS zltU1yg8J$Fl*D=PKI44Fd9WWv61biKj>09Ve!d(w8nlT1S2!<)V^Hl}Y6A6L*J7!0 z=nLA})EG2gJZp|_K?`Rkep%C~&leUYPK?^WH|Vv(X=w=U5x-*sLZLLC6NT9{U!a8& zG~&c|ql)8~v{@HHP7xOA?DBB_1d#@}DM2N^c#Go%p9T=t3p43p63;VzDiw$m@R*YN zH=%`Sn$PbQE$ZU)e7P{0?n8K~FewozTG9X*A$%UsYd?L$ z7wS1(geI_XQ5@5|@&FLv%+!teIcY@eGO!?G4Xt;^urP`R(N2vM^g|XMU?!7;*^U$@ zE9h3l~CT} ze|lh08U KOFdhGzwig&>{H&D*abd51o<(h}5XUSxJCMPh5DcQ+f_gOfygXK5bgpxwJA%Ax;T4+kU>K;rLV zHxTKe9gluZ08%69G$)T|+YOut0iY~&H)kRdFC2;l=(7iyB!Ht`)yZG4cQ+8JFvjprrK1LtjDhsN{RE&QuKzsB?ZWy5=2uZKOosFM2t06+jqL_t)a z?d83T`@aoLqH_nqB!V|}Kq)?y^I>9JfJ6j`y$tVH8-XPJUH9U77_AJsy)rbZ+72dl zl@Z3@^~s9r_TcX`0c8);J)jsDcoMbo!LIrN7BDJfIg!y-OG&`*Jpk1T>VU<8HoofOa9Cweq zLnX9RoyZKK9dvRb=(1e8AfK1;K486St){BgH{>V_{Y#|#j_339$Ia1V7}ud^6I-}xSfDGY@u5vD*qLf+*g$wQRO0xo4kVQaOoB=M z=0KSrO!b#TCXWZ=p(Gsw2owy3Yv~CZi7nZ7Q-3zN#Sf?m0uWI5Zv&E41z`s`vcV*@ zSAa;3U{Zf>KpMjFp~^^_=MyeQvNQa>7iY2yh_5>&!5Qg%2ICujQC^lYe$mg!OHhJI z1d>i?YJk$|(n5a8L|CY?pxS_vl$_2cmP3wS~o#D2EG~MIOv}5ix4Z?s2f!hz8yZbaWoF|TAD4CIav9@g zQ@5z+N=x!e3BT9UsB0pI1=d1)x*ONSqj_B&EO)BSrC109P-6WAlDbiEd$}`3M-1VN zB!DELoyDGVP{#F={N)f8KvF1!{tY0B&Qk*P*a<`$N}+!x0_EW?Tz>%|0oWmc#C}Zx ziNM_$!YIucXV@Gpjq~_sO#{kcVyukcLwe90bA1L%r=$wXp{7v}9f*>SqI?_R!SROy zlD30LBHu%SK&Y<{7CDYc_l40u(cVVgt^J=_{kTsfY#)`^t3k#2*1;qP$f}2N-|Nmv zxW08j3D2ithT)XOdC%RzBpXOd)xfqLos{Unh5Wk$Npw^~e!GAEf9$<`cw6V4=XWUa z0$xNOk{}6^AaMwS1W14+c!ziqp*wZ4jU|zJY{XHrNTP&Dq9ll|#E7jp zw4<1?tt7~-yTzn#9(Jl-q4W4j`App%bm~sg)E#1HJyYzgo>??iXVFwU==XbYUJwFF zOL8XT>_!j%_&)Fba^7>!d*1hh-;44%Ub#+tr(hC~E*wJt_Xcf&LG(i}{?3sW5032tVZW4@cI@^4+1No>*H^3#v6aFGzLrQ&ZzB!g?OZ!9cpv;h6kYiZd+ss+UK^0c|Qn$tI}iRe6QEv zty;S7lX{(8r?lg3Ye&Bitk|7=p9~osQAY%plOm2N_nQW74ky=rhTH>@e$>Yq8I0O- zzj8iF%bG49EGHpf9_cm?x7#=Cc15A-*%;@MLZ{M`Yh%cNEH%6~u!4LS`eW8~4n#69 zpgsPssDkpk6qAMDFQ$tfjt&L=b+O&nj{Iris5OKByx43roGH*7%?`txaGz^>rS%Z{ z{ha=lRwu5U8{ z&anhPU~a3?@dZv04^fkMuZNxE36k+V3aB6X{920gk2oh1{iruBY;a;riyQU;H0oNg zE7&lFMGkuy8rz$2IJqG?mEeZ!@#wU75aB1B)5$@EpNP(Q2?U&U&LoFcpy65X5GJN4 zW3!1NOjN1dxaG#`U@EtwHK`bsHor)jyjU{p* z6c>sJI&q=s1D?a_Ne?uB#5WlS=;1k%cEL>m#0B>UJx9}f;ohPEoc1EWhrGvpQ^=1N zZKe=kC@nw{`1w%sxC*?e7I4A1DkMV7Z_VC6A@qZd&4* zK==op0A7+?^&#iH#D%tpq5x%(--n#XB=#RIUroZT0!(n9jvf!VSPsFag7Akt^XZ8t z^eZj=pj?7t<0&Zmk^Xs2AM;K4P>%0ddLjS?I5vTH5*(X|Km#YRMT`8U6Um7f6zyU9 z)1i~e3IA55MJ)Ogc$$O~Y;qxgp*(6W??!zIJni+OUjaPPf|0OzRIIAStRV7*C9Y|d zpYLA{JW?%urE~3I|A_W~Fou3)`xJmiNT(|MBYadEUw|q{LSyh>P!5Mip&w8Vg+>s6 zTSdALI05{nFrJ+Nkf84;D2Q?i1`Q#d3J_&*Ul1&UJ`kG?@;T#i@6$OXs0IoZ>jUw9 z5An*^5&(E)!}D7jU*bQ4i5#KumOb)rnJp?ok#75&Z zMeX*D%y*++bDj8t#Bid7JeKdjDyhr5Z@mHM7m!(s0=0eo&ta*RN{MSzk2}vOyI}iMmQ`I z^`|hd(sT2DI^+YqljGo+XDZ%}bVods>k7h;#3theBnYS}5rl{Lrn=TR{-(X%DEGe5 z>{5>n_lM&4S`p485c?7TLHTf!<9b0ln&kcUkaR4`_s&D1OyKSd8Z?WpfDWoE5s9`%V%xy*=v*y&p9k~ZB8wpZQ893ITQ@9#DQVPO z29Okj63|h$QQxgcsomB>kq<|}+0d`IQCeo=I9Guv=WkGVXqP)ZVNeXXUIdW5nywe< zodQYm9e^UuUjRG*$pJ|kShZvQm&O#+>v&EI6=2d%{ZR}idG62xlm_nPEk)g}`_~1L zM0!!~c1O2iVSQHf&(~9=+ex+jcC=8%{=xh6Hwh$}By2$FhF3a+c&~?tL!G!Erk%sV zPCZl^mI*vfg`FW<3Q`r%hr3dyQ=D?=JX8jFGy||CJQV7{xY-*TG7tz5{`q(!ezA)5 zS~^;8?7(yUu2ln)_EPcu%Y#WpmXcJ zj}Ph_4%=8>bWG;Fcq}s!99joB5^@Dc@jQ2j4utl>{{!w1h8{%x$2^ZKk0rC&Z<@Yk zdU6o}((3B+3v&R002aM;4Z8et_J<~bMsqK1{BRlI(6tvAf4B&p3vUoW`tG&x;>#Na zI=8x^x~W08 zN5{=QzY&J}%h$fS@f7s;(jWDHob8Dpjh}=LB_`ri=&zoHBR;f-jk>j=1=Z3KK#Sox zHt^O4mk5e;!+r?v{)GX*a~|_M_dv#p{;|gf{e?hMUwXi&f=JldAGRS~k>&v;0V3fD zET=QK!S6(Tn@2mc4M(v#aeZhhNhsGBcCwh%FFT}R12zUTBf&}JGdb@v@H=@XKD%-t zjQ64EfP55sFnL%$j(iWtkAzOZ&7=2@QvoJX56g$bCj!vqq3B5;=Rb#>C(;Nn29lEd zqsI__3y_3#Dv+cAh|KJ>5rmov&M0m-?n?kkv#}hIG!3PNq`mN`g`^1=>MaeejKV!2 zIaZv|{y@KB0P*@H^w^pPCLvx=vd6$b_;q{DE1WM97~%%60D^d=3O62kG>RVK+{mkk zas#do{#EI!Cu%3)_ElHa{tV%;oYe3NHmq^9N;Bda{06xl_ZyF7Q&5h`Uj>p-jtV5f zpFom=`iZ03S~IPo4m^+AuC(h^3l0gh)PwkYm!?9qam>5DCqoY;F&|GJm+$kS-@FGy zN8mr?bp}V*vC*37k}Qbd5$g<^Q4gcLLuWRiJRI3(ff7jSUBP#e&m#4~O$#plVYoF5 zNoJQNty)SVkQ78e5lEr}NE*^%!OA~2)$LWUB<0$W)stPpuk#7-@Bmkd0*rNeB zdC&&;n+hC3M^JvDC7?nOsTkC`BXG?rVA4+hJ6TZL5m3@BCfzZRg%RImu;ssIxF zRbUDEh+!W&lfH`ddPqhX3M=hhxc(DiRI&2*mdlI?leoq=2GX)8nnIej=7jCMR z?wA6!P6LzR--QEt2_*5o$o-ohk414TVf@E?!UIX%rwdkv`w&)7uQGu6J#kCe!FaCj zaDN6$%Stlh$vqLSU)pT|l90|G>5JNtufyFRu^Zra_eE@Lcs?X-ksgLG^xIgkfdz++ zV4c%F7-9U;m0>6MIVOW+Yg`|iR$OabSDy~=b#YyNMz_~Jk;42kFuFFJK)S%dnjP`_ z1J-Eod=5nFa^^rJlM(%J#dxIy^I4;-?Q(kn<9p0-xfR+HZVD6lAz0M(1~lAwx%m|O zIjj%2EacprH|sApSonT#)X7(xkzakV&dfhP%9m?jXwqR^6&;yIkVp;Jj)J8{BOVDW zj#^W}BV2E$YexA5hnnE#e4`2N*z@z6r}gkBK-Bam!kv3o_{RdqH=upYr&Uu!9Q6?v zlL`PPwoBws%SlbC9Dt-pIRvd6sjpQ(-H3R3C5VK0obRX#5UBy-1d@d2!K9j8yn0RL zOZPV9?*R$_7(l|kadvN<-5Y1Wy8x7Q?*Z^`JpiWV0rd>r?X)|Lg__WSyF0YAG9BaH zsopNXox%(A=SKE+^}Q>9WzfY1&*{*hn>r&8#w=*ZOlZh$!NhP@9)gijXxOQ4NbbuF zyL&J(o6C&2d!g>YNQ_6o(9(t#?)~1;c~t|WF&q7pqwAcIACSh}R+$@CV=-%}Kttm$ zZqy#2B0j@8(dW@Z+_*pBh3R^4fyT!?bQ28g!9@0;8*aoq2r#Tig2u+;w9KGxxCb@O zK(P_u13j#adwUbu@Wci_>kYd{Y3n=}_Qw2Hm!^?TJ?b6L^eI@Nick9a0iasMT7$wO zmL2hml@_oZHf-3!!WAvR(4y4<($k{V0Nk`hMSzPIs0c*S0@YA7r(DpaTUA)3;sPi^ zDJQ}SMsWev3kax_#sqdE$CHYUc_lFL9$KlV7Z!TEnRXO6F(7_!l((sYw1mkJp z?+@qFsrev2bqw`B6+V<4jpWK7MSI^DI_MpNziKfH{=$M5+rfqQEt&-2l7N4azR$fs zzy)Zwn+wyb#&Yqva7r+Y`LUk}$f-aY`h@@)`=0gV(ps02%1 zX}ALi)PIJtU%60zDsV7OrKK%y__IG*U$%cJmFqVyq!T0Ng`?sQ4kH7LL$n*sSL6G5wj`#Urq>J35Vak*CpU=bb*^{hahV?lyDN0l+T2l0&^tr+qdMLXF0PWr<II?m%CQXz|MIE@8~ zwRW96kA;VY`qGL|U?D+Ybz?UclB%zk9V@{Hbk)An1JV}(6n(bzzm~oN{Z-k71fZxY zQ1-KuJy5yqrzHXSo681D9*6!>dEYM7x9YVD`)*iV+Hs9l+J5Q~zFBn{3o9-q*noBrv}%L@K3wN+)aPgzN17Tio_y{wLD&1z2f}kleVR@th?9OfZzs=|_C;S1qPJn*OlwFyej2cP4!T`uX(7 zeeZE*vtRU`O}{Ui&3-BUsPFx7e<}26^8Lu?i{VGTr(%fjc_evXIGg==`u9AC5WXnA zC(eJuy*GNqIf#1lXgTWw-jB|`YaE9vpp-y8!?P~FcaMknxvWTcLf+@H>EPzkbAGhP zJ>%?!`zS0d^+1orrlOV*)B`|C;rkS7fZIE5)WLt7N!uS83f=PD`Bx%5sYB34* zJ|yj3VgDY8?v=aaP^T-@P4{hdTgynOw>YBhKQ$mJ59TDt!`L&0>cK*TSwQ&LJo|> z@rX+|yoL>>*i>Kw@eU@BN(X&-ug4z_d2#=KF7!p^3(%()p8*VnBh%(yT77vA7K-Ko zA_4q)?%K;ZgpC%AUR=Dgfg{(J0UBL{X2YsQqwg+m0VZ8r&Hl)Qc-MZg_%iexb5AXP z7kVar*88b2<`bU#J?~S{PcBz-7TTlO7lv%ukn;?92@>(>so@wl-UuYE!;Ou5rw5uS z0+BQ@N%#|taH8LK1d#&T(QL&a5;pjqYWbT062I3Afh5(vgT{_wjZGjLD(Cc;xtTHgR) zjJq%nrNNaExE)LOFu!yArM{H`_G6&W!1=E&Wm6o8M~g}QaQFCo)IWH1Wx7HHe|VHy z7nBx`Ixzle@u)S5dAqNnrrC-4`r~yq4aiTmoCJ4Gy5K_EdQwmUBxxX$-8Yyfh-7ySrT7P=JcyJY_PUmE-8`Cx zovBGb+(D<0>p8bof=e01D*~AQA%Ubq5J`YbcLnUAetFPGv(U5?5TyDee%?aV4nUPi zujY&Xx+Q<~+uOPkU!*VA+vcYMTsyU2^pC2jhYF}kIUNaZj*~o?#Bqaoc{iS8BZ&XD zKoZ7TA(%9b_`kJ4QqbZju#vZfq=V%n)L$I2wxb5S{rzZ{0Eu=4k_aZHai1$)epZf#0VE0Vs0ip0;Ew=-1R!)Q@?Xv>`tMNaevKT1-NE0Vc719cOdx=TU9V z7YzQcd8`MWZM{j0$tsuxRe_|irZy-oCPfhrFv;vj{OfJ!%?Z4BU}3M@n*&n2F)j!w zSyFhv**Y)w_zD0e0VGAbbo}FbSEwswLws}6Y~UZuyW{4teF5)*HH$Lf$$>~*hwa7R z1-br8V9Ad7s!BQKx)LoXasPo9k_J$({)jEwk9f4KWDDlPdr^O@t0&BLJ^>~<684DA zkM~*3Ve3ogEGTh(cGx!L96&r;;2cJNpB~tvTjefehuRzSYzhS7r@g)HQy%i#C+clOj0c+rQQZedZ_B#@rS(d*$8(R3z!% z{dey^_+7XU?hW*J%|g=fQm?{)bQY^K)f4Vm#{!bCN9jQLud738OW26~hI|&qi2Q!* zRI6XUooK%i6EF4)|H(PB-W#Dw`!U7p;y*0L!q#Z#4NPDao6}UP>A3=3>vNebnAp1d z);eF?Ub(=}@D3f)A-)k4uW^@c%~-QlCk(b2O|MS)ZS(vm#6-}x-u_BX+b~g_)b-7` zpCa+!x85G#s;+onf@cr!jrOHFk^fYn&)U*d<{bhn)lb@>_5p@AnJ^EIw}R4Q2SDvOnqcb0hXZa@gO4d=7et zGrh=vi+Y9wy@+>EXnaH>cyY)x5+IlXoJaj2KI|RM5b!wS9n16~oZu8Ka`4DOJMtyC z!GBg93%Jq)NOvqc51H_jd20*y^4m>(@- zy`3_hnjRbMYJNq^^0;uo^7~m&*_C4bj{z|0L;kAjpr|)D@>Pu#DB{^{a7(Tw>)P#g zJ~^4Ty3sGbNndXa{gj?a6F|X%dOmKXtL{uLoF8iQfytE3P>`>vM|!W1|2WClOO%gr zEBfge!mX(P@zB(gO+r6OQz@Ga4NNcDP~J&tI%Qo4Z~%)Zee(nt_AT{Cq4I31F9v^k zCS^nT$-vA~ALIL`F(NfL>c?>Qm#QhKG~=_QKDX7tOqvVC_e--r2g*C)n@aaPwf1?S zvB?bkQCI>x7M%qdV7xS<7-qwaCZg8CJ!8jgJP@uL#~HJx)p>Os3WJ}t;! zfH*=4<&Sl!=Y{+{GHB_*^hFfPMP;P@ROCUz*be`A-+ggtT@nXC7(|)_Z;Ac(p+XRqsVw( z_=fzZHTX+TpDD4az{1izvcoM6`FI99B6aI6$L0<>__XP*i9p0T)#ACXS zG}76Iyj+0UhkulJBAwgmOqhHq7a&p>-R|K9Wg!=Ca^ZQmKA7ly6$|m{!Szl&R|%+^ zQ15ByV3g@5=KGz-8N3G#**#w>MY_7E?sUnY;=|li z@uwyK0w3hR)E(J{{OitD{>g3tMe>d6le_;l^ip-K^nZfCcJ!LOR`av+{{{;du3DGw z02YL<)~{8+fq$q)n%s4;d}O?8SgS|7Ojq02^eDe$rq$Je{>9nzS8D+zHAU)Ys!FlY z;j4bV6#XkFtNv{F!*Iu{lDkk(gRU-J{vM?FHlMF*z`}~l6s*TM8x8k`+R#t4;n7ex z@;e%sHP}~pzi2>G{D5;PhWp5Uz&V)W{i}gUP~KMrlI)tl9qI3nyFGmo+@G<12|gcA z!g8P`jQm2=$!_=y3rKWxf$L;wCdqO5Ugdz-hWH;09ZPb<=Zx=t=_&a8yo-Uu=>IQ7 zKQ4JZ+3eTnJ|jOA$5AJ9Uz9)M#s=WE3(Fseu3Y=Z@+VQB=dXQp`7yYkU;JkFF}R=0 z=JeawmeU`FJK%lX`#~j}{gm$`ac*!uEWh7P3wRGI$J_*82_E$>;Qo)!xGYO>13V&# zOc04c(#gP_yASmeVA6bOdaWmf`0}(%1@}TzYdsR57aE`h@QD5dk$O__heahmkMm#> zj)?1>hr3Xtn!8W|IQ63Z9W5eh0FoMxbRwPrl7xk%gUVim3M3Is^76jdG>oI%JiPBU z)j*{@kQAN_(M0)vp|qHU_<0}+7KqgQ>bF%xun>g)cl*XyOqVr9f2wY(2JUPDk_4Dk ztQwe<2a>##N*Av4PVT&gBmp!P=eLtv08+QnJcz{h6}C&bVHwGE5$!Crkc8`>cMA(i zsj;vriRUK)9E9gp065}^Hd+AU^Hr#@6jW?!=yvHudSOAR5P0$7xkQlVZj@lmS4!cvlI>F6ZB#}rsTx}Bn5 z?#eRKcKHEF>Oj8=OGqwhKjOII=CS zSxEB3LXrjF#RQRFg%UuT-_+rRJxR++1d$9EpazGh^$c`jAlB}JrUuto9zi6<2{$%| z6x7ENv)eku*l0@hMR;TiEz+3L{vpgyxgk1|84Gd)X*}i%j2ck?8#w@p0MXN{ zFI-cBBolxl6Xq4GFE0KF{@c`-u0_VPyL8Z9WjwD@DVziY|?NS6@*3jCij<X7M>wHhVU7 z&i6Sd{s0ks(Dxw)?F>&R-63qq#ru;^jDPEzV~LiAxFOH^N?&*&<&2@f6o5%+w>X-O zmXUZwn`$Y^gK)Pa<8&iFfDZoAXNx7Ioh%|r8i*t`wiQTHEhE8SRRJUkRr&)%Xh&bj z9&oN;V=vbGHceG9DPS|$ z5#F2W4fP|w#oN8Y@60Z*vSLBM3t&h9MLf!_72yInl6`VbBiyQGB;?B@SM*MVzu6!Y zTx#++$p(bCWLiSJk3>H0nf8!r2Hy!9cq9NQ)0xf{GwNYFZ_=AlFJq*mhG3FuK?!uj zJ?b3`PR7ws$%FC{51zZ8eTMzeiKI)OhT4+@I{x9Qd%>a}$!&Ib>u9mG%Wc+K4VxfR z9!LTZ(FcEFA*p+<*JoGI4@$3}-xZc6YntmYZwn*^FwU29M`x)=v`Oe^VOa>{o_|Op zurlsN{Q%TVP}4)ci6nH*xkSs*w20(_zX~G3?T8O2T`6cGkmQG(VA9*^T>?qB05`~2 z1#2>>Kk7Xi&{TJ8dq&~j3BY+^y64ibN>c)OaEv9 zRo?$LKvHpk6oN?vk_s(OZRaiolZFw$7)(+@BwVMwYU40(u}kVtJCRPfg+(uMblY}1 zg!p+2V4inoA<3fa$vAMmx`RD_S_tHkh}68LB+W9CSp$-U?g%7l7L)D>NJ4+)EhY&t zNjs8F^-lvt2`YZB1B#>BjN#5q59-@4j$+e}U~AJXBJBhui6htYz|rN_8w&EtyERKk z&6f=~Oy{-%kV>M@$n);<{lgz^@)>4mh$Xc(35dx^9e9s+n%|V;90{QHkq^ z1edrD$)nu(2Qq?5W*@HaRb#LlYK(ORx$aL3dR*r)0a)!#Lk0Fekd z5kTq<w!d`e5l3RiEF~^8dBGx~4Rn)je2oaS!TI`JnD%?Gpu{62P5$gbRy91eoemIj~7a zJ?U=n0(^2-t>`_uc>0sjLsbopap+*>vyJd45JeU4>S&dL;RKu5F4eNq8K`C%Nq|WL zSP~YPb_9}yWhToJ-QXbsxNI z1;1Mj{_QEZ+tnIu#KfxG)>^}}UCj~0#fHpXsLK#+xPkaKgWQ0LL|3FGRFCwisa9J<1e$3LHz2&n-=;L2!US2@Zs1wDJ(;#J`-T3TaPpsJ#SDw7pU%V`9G0?x?ds*V@+VjF>>%+G2H> zu=WMpPs+H?{fYK7^_WQ7*V=vc2~4zC+5`1(VM1;&N)7NISTUY&NMa(s(h+EU6BG1M zXF!j5cd9tB;3kRtyeg)1B%*Px0u)#-w|ZOP79PCL*} zm#1%mV414=oEonneZrP7UeXlTmErWy#}h!8r+=XX{(FVS`xELvkm+Xmh-XASUEaQU zJNl35+h0e%sXkBp>0JKpXur#8^R_WOWKFlBovyHLsSW+USFxpO5_m8EPttw{8t(J8 z`>=2-L(gf7cvGRibUWfrh5MI`XEl{_+J0$MrvFiA@@TXbb`i5nFAY=hp8H?;5+7LYZtgvtfiIm2LzmL904%ZP_`rr^#h;_ovI zq`1*ByE3rE_RakNK0x)Jp=%N_I0a9cvAb#CPKgp~DG`1gjo*4uEM)bLU*J<4y9>es7xVd0~+ z`sbynXWhe<_wQPVx^)khyp9E?S85+A8$vmyP3g)nq5fXe`T7{1ukL-`OnPzJ#+Cs8-OJDzJ=Z-03Lb9YY9OCCU!>w z@&F7Z*g~L?02Bd53;K~qI}RiMW73Dy2gBLya{STsDTF_@`X%`zUTy$>)wBft-s;y@ zKOX1NE5X%ILVqy#J!4iV$36swW_q8Xpk3(0pPc47O4gckf*-y*d2n;Sh zCS|i1H)6j39 z<}D-%OG29FK_mhG>;woE`wPJ6cB)xax??cu4lEv-!q{jnuz;kx1%R}jUd{nXCOq#6 zBE6l?5lpJVd)7a;LU4m%QYX?0-AAAY*PDP($4yNy{llqhi6_AKEG+ZfsTvTU;0wkn zff*y(n^!HLeHu7**A|hs1C+ezj{-1>3;yhvZIwXL>sotKxq5M)lLvbQup^Z9WxP98 zkxu9iK+;TVILvvNs!EZ4n_Tg z3jidJiwTz_$nS;mm?OyVl5w{~*LDg3Nz5K>MZMLd+A{b~%k*aqeyGx)Ht6tu7wu2A ztUwoF5efYxKqP0xF>kntdDDU;#`MnAz?zZq4TDjRe-%W6n@4FVD33>LD0r^erT!IV z9^b3Ze*Cu{?sZ3qe{ga7M|7NbjN2vyv@8HnL9f2D*E@s1M&NxJI_WzW&t^Xs{$${+ zJDa_*7{qaHm^aLQfBEt>WuJ!u~AYq$O8btlAuD%S_7RrH14(~v41a9a0aA*?k5J$HWggJiv4T1u85hiS%umwh+Hpc$Aw7_1pWFmKaD$najR+)(BiW`s zGln@2o*Sttc@{e69S^$VXeYjZxl!B|GY5N7KW;E{Bbyt}w^&Gubp^Rm+m-GP*jCWq zwH_ZgdIgwd3HN3k2J}bVni&YcWNO?07Cit60kvf0n%&% zlQd9Cgx`^(p80Y#pl1t!q=83wTJKxZqrSf>cfQ_*;1SzX=q~85+x5q91W3|tjzbkp zqB{UfUE8TPUd6aARuxzZ;JZE0?<3&Qy9OW$?Y-k8+i>6Th;mD?*Y7|&f_;U``%49t ziUFnIt(KGWV3KATsY^S$Ee|9G&Hg^zXWLpz!u=(Hq|PubCZRq8K3V}AZe$g+O(tB@&M9>R=)}9#F1-xOGrBbNjQ3}1M%O^G7{(2 z1d}@6+*E=~9cMHk=`B2O0r(ipbV(6b& z4L)-eiX-g0m0W*yhc?|RxP)-_H-T0|X=}#pf#Ujb{igM7+fA+mw4F7oe^hQi+aYzs zZA^CtEa?A^v?3%3YoIs5}Jk7i~2 z_+Gbo(azU9FL$kDUC-NgsRPpownZ*=A?4b|In08m{gfFid} z-gBu4L@Lc@OZV-r)%_jx{kxy2lr;Tp0hsh)*^||}Y*qkD6(1;nk`~h|V&zZmLH($; zOIuYJs|d*$e^n0Mr3QR2&;nD#>jnDHEA^^d1ColtBw94mV?3!Am7wCtH-bpbZ@^6p zNy%J0X(1_pbejeq35!TV2_7||o-C&x@mU}F+@?h+VHrw*SNA}Ld!WL*2P*vb?AzbF z5ANLu_wIw=)cuGT?!6oA-MPV<-`sPd3KOK}(|gJ*e}oC?^_su0bi4!g)qIH?uT9>X za$R^EP1bz9(yWz(iJ4m7Ho9Z^x65BESD&ttbeAy!*EC-rt^9oc#reHf{jBbJ)N8Ez zvJQV~Y`#)`rD9FfgKwkJ8e_$Mn1EVpEEWGfG+gsi#s31my65SNzrh54rnaF16GhdH zao*zIqc8s=G`gp)?0Y%?vH>X4mA=f0f6YiKuE!R=Q1eq-;AoZhILpv))Y2n4-3?0{ zt${t!(g*Q@Ak_|*{_oH;d;Vo9CW!6xd;V4FU*JO_Qv2buzr=@RP3_;7e;S&ulgj^Z zOr+nalPlm>Jayl$_5#PGjBGtZ%4~qGgOdax}$_7o*-`1pIiKafSl3{@$mNnGsk;f1oXid~5 zp;GHYofrNAL!$PrT)f&i@(;8mYENytt+F9ri~eK!I!xqka%;Tq7tmmvM_#}Oi>@s$ zCvxsO0Ae;n+k7qV1M5obdhH-oX`SB_&86S-vjR;Ul6(F+;(HBm?O{8Tt!HX+UHd$( zXKOM3`r@tE36%AF+RoOkK-b%@vwimY_9dRBY+r9r)yr5Yn>Q}iTc8WZx8&DzT9<() zI?l*`Ebx0e-l8QJYW-`_`Hr&<%2su(8?V=2DacRcTc9$o56e;WM|>F{63kCV{|&@D z&&XkbY@W`fjP`8NxXDYfZ!l>})VsM5sw~tazoDd(XmDYHdR|F3z(23+UET(S56^cc z8xc;`>ooOoLA%S_h;}*GlvLySJ5a{Qc*y4$R?-b?a08TMxwlh-a;y(QI@X7v9RJBW ziiI5g7}Rf;^vIvuYDIrJZQZV>b=;qcj#mVzTKyWHqtT{NCF*ND(|BIz!h+1Drt4LI z27i~qTl;l9*Ie!1`s;X}MLUvB^LWn8o8B}icpmt=;%zA3mhSct-0SyQ;vI0?)4d)O z#>GI|wm{%xz-NsU^l(VM>!uq>F9A@3nxxkC2E;c=4eQl-&e8%C-vhM|>rR&Z918+J zFFzsumsl8y)|@G=LcI)4XLWc^Spz0tJ^E=R(J!@~MSI<2x^9#+FX6~Gy3($hY39Qk^u{A|zt>Di10 z{mCOMtzm2=dKLmR2*0p#PFg^}e9!c?<&UMa*&mxOt$xm%Q$O4WZPVk) zP5r@Y4oG@#;~S<=MgbtL0!%`_;SB&uaKDs&8ppU~vsX5rUHqa1|HY>lKj)(*rHhN7 zhWl$-zjslFg@W{==Wr~W{ZR70*f`Ru?eRdp`{GvkzsGYRu3Bh|&v|Ta07Krr96kULsq=wp zx7CUKqf;&}tQ}0cA_ShO7FP~D>Or^wlGG#M-0+X@wOQ7%K?ln{Tu4+c_aJ|!Go!pi z-n}+jrV>gEO6D-aeXg)sfdXVQ%bR*2?J{&B{6O*1WSV85JZMu4?EJR51#t9E^_{jy z087PSlE|;9KDV`av>kASagew8v{N`iBwSw=NO~Kc%ZwX3U&ZqfKoY@j6-2Ua>b}gF zp#$Sp(PIa4nRDcWRvVS@~Pyr6zt!@YSype0~Er3&TJODbz z8#w@}9oKDUX;^8;b;~P2CHk}9+R@G}{l|X2td)cJ)V4s;X)XM0k+Oa$p8ygq9vR=v zm232An%MLg@Lo+;002M$NklRiG5 zKRg`j#Ctn$A*sM3QU}^w3?iwZ(M5m^&Y_@DxeHZ>WTUKsLT8{FAhe@~2G#qCN3C_Z zQ4Z4ce%n@0!e5K$($W>@I~g7b8IjL~Y+q?d{l|lLL%UydXP~fz#Q6t7BwAh>OF8`9 zI2&8CXIhh(*QV@#Zn%vu0YrKW^9Fyv-vIY;xZl^3=KQvQspUH6M``JVvjSP z)9sk&Mx0X`aJAvN;9MDW8UxVCV6-#JdETJSgm{C#fv^(6JjXC#;8DAFr#;k#`r79E zWCihU{(c?j4}-E(;y>j_V-x-n3GMdJWcDKdarr*=2-iYSW;YmGJBEW&&FlI zNC1-Nezg1(==0et%aLmUlIC98h^*!;9z{$!@QC_MHU}O(vkWi^;m<6F7YQmoeQkB_ zhj2e_+60kahW}Hh=dZoEoXvh~^|`rKgkM};nfn3U7fs*0cA4&t?_K+W31HId%Hj{Q z0GJk^Uktjg~>2h+hmO^~D_iA@sY=WA_s*p+%4(TwkgR78R=ik%Yx0 z;TDQ~oG9Ps>dy?JUN!+D2>?my3k)J0+l05O7EZv0=?CTq<y&1_lf&=%rakQjcnbzc`|e8=jmG z=0PNXuiS_9;>b2j#uDN@ksGa?$0>eACJ5A_9i=8fB7?W(68~VO&*(!2TpwW(sXkqQ zu?cRWjprI`no(YpSAWTX>)n!U(YGUCVJRtpgqwDBTj$NrOJ&qcHUMA zAn8!fb|4bkBP<~0+f{fp9qK3Qy<_@c(^8Vi_idH+F9NmRsrxqxBstNa0z@jdq_mS; zjgN7dR}EOoANdyV%W$0EHIO90q+-Y>*nX}H>4jya zEl0BzTSO8dlF;HK+5p&eBH#RxZAET^Ikddph@;IoUoKQ0wM(F<<8?fL1A2c4+ys62 z$4vr6{G%xWp!T??3mRaAd&hDZPqv&j+o185>jaZ{=A*_0qH6)BM}T_4(CsQvR8r?8;Zzkv6K z*Syk?=ePPP(uCiSC!eDC(5K70=oEV3DF1}nm;y{NY}Vv~E;p*Cxf z>nFV-fJzal%pda0^n^H`sXU1xuc4fqv8<_FI@a4NTV)&EEU(X(%g2UxSo{{5>qDlu zOa?Qw&EF<>T*WwqMZ;Dn#(`$(kibrZ1whg-s%yE9FF+ds7M1>aX;tOlWwX29*i~6^ zV^epZ+VzC)TsFJ=jono`_^Y7OXQ7P$6-|+@^xE!kS3Q!`YV;$+tFd2EHdk6#{U!jW zSlLs1u%DspFTW&XTo6#=Iv~NQdW?@esI(K9q*+o@!6d{NN4*hDYNlHp@unTwCXR{| z7MqGySa2eEB%@#1A9bHcz5ZNRQ;YS=V!gLd{O;@%-|P2#{eBOCxyPyeZafF1dl&lM zy3n<$vVT|l5H>LVWq(!rft>FCH`^%U?fz@{@1%*c$97}FQ@exKJyiC8?f$ozVE;w= zr+5E91$wsple>Qjw-$ca`9D(jvEBb0%GGqwjj}Vl{~QyeA{F8J{EO;Ycf9N~yEia# zG?taI9kQeBE4x1h4VMLXW#2}l<)ynT5l#hYRBtJ-+WlqdSozm?KT)Jjnwxs4V%M%e zfWBH$xeF8P23v)^YX*9;{QJ8mwrZnX(YXs?RAZ>(rCpv|wFCfC<7HiE$zS2aLe^P! z{T}pO#UJj%gjD}l#oDgZ_|TZCi0}G8@S$O;_}9B|9a~l^{_XC?O*QCskM8~?J~S@r ze!2VK<3mxWySW<^-&TF4zx44Ym*wn-aLwP8!{4Z{`DOV? zfuh~zu&iPX?eUfW4DFHkq|1K}y;%Dw>rarZ0@txKSa-Gp*GbjCgrZ+6{!jFWuI_rp za)Dlu&sKZ~AAFLWsz85Jbq0iIke0_3OQr7dQPaQq$?m zpW*|tNY!*0Z`~>VQYEfOccSq|r3?iaN1*O@N|3Iy8Tqd3{RB1%$W`Jx^~9UbSH2F7 zHI-K3diJ>WfhuDzUX>oYp!ZePLYMT{D?Uio&2`crXz)OI#(Rdc5CtxAk{q1{W3 z*J9h1y2sv z`*y0uSJNYYv9jGfx{UpxdjpF8(Xn5=P3LrPB7Q=DLx=Iq{$RPP8`oQe_avHbu-?53 z%|5oP*VA;f@==6q{vw{m*K|hruaF-7sC#dL2AbZ~{RQIto6oSFy;92p0ayZtl_(GP zr%qS@6dPd9&UEb~*wBh}FVTV>Ei*MA!bYWR_qE}=(V|wzb!>R9!BSTo8yIm%f|dm) zQZ`TPMQpt3y4_8vXMeQgDuKN2L`$?9{o5rs8!NBi{_tWvoWuAI7<@G;gognP&Tv7* zlxjly{*XD;Vfus*0FfzVItRV7`n2h@X;?f0aP%0`J(K4T_8-L4R2tVwGX3r}RM`^)eS^g;8-<|tv_7gHT zBu!6jd@2B)dvfD(=yP*9cWCh|iyxB!CN2I`?}ri3mwY(Rf8c*Ge!|0zsRw-fJ$>ug z`1H=qTao~VJX7&*)ccrs+GFvcUFqq0wsYP$wcZ^^KN3trd;&<_(OdNvAV~m9h~Kl6 z1Cx4VP-!aG%XEP$cdrw`QFO1X$A%3#&t!xPgsR1(wH#1nK|En8>4x&Lphwm1 zKqQRA9f2eQEn^7(2ULPH1WmRDY_M42boUn-y^K&9KM0GJ5u;5n~?J9nZ0c#JphqQ8p!k8X??0!*}U zGqd1~7}4Im(%%QS0FH27I!Trz6xA$2@7>9x@}n zHQg6f=Q{vexFJT%KQ`u<7|jf&(SF@@#+Af-ICj79WE4Pg;Bm63Qdpeu((r zS^dGaE6~vD<++!#8ju7xfutAURzW1_ldIpG`~E6)B{xe1944>~|NR&%!-- zX@mN$Iru}Ly!On-bE}wtm@aO72l|=x`Sh3PaFne4q4YmNKg=xb_ZyE^GCJ`z(`m~(!eBPd5Ih91f8q~ z`_hn;^Tqx&0rg&Ns1JtWE(VT-TeFB{6@XHa5^!O9USB7amXao*6W+<-40Jj^v$7vL z7k7saLsdYD8s8r}LJet0uVvjz%r5({Dzj1b=ZvTOLHxHYf=qaXx4En`Lf@3LvTTe5amZ5G^WnzKV4i?Fcq~Qm;3lzXgD# zT1rAW;wZO<)AgYyv`6o447EUorKDD`;gS*gi2TISZQ_VHQC^3w<6;-`BUr?Fp)~>Y zXCC*X*BKl|KL{O24(UeV-`)%j*0YB14Omv{QJ|WIBwD`cHK1JrNYa@z)-dAZ zNGKbWM@#i1zQxs>w!>}lSbYOJD2{F$l<>VK6#+?0nuR2c&k@8Ez=;aDz`YZg^g9D2 z6#`Eg+(+AiN$}qSCTW(S)c#{Skit2*4GuAc>Ze5_mofC7`r`=d%Eh2qs}Za|@t^{PJ!QPpAem<-sEy)z*sm zwE_8@;SH?g{C(XG1M*W9{>3Wd@o2Z!!g96zivg&HSDSpD^Js4YkkrNZ34kOs-aD%0 zBp3Q$vy4PA$&C1U3rWVdb6rWep-Kkp6rfkkpHCzNcy7NYzwMtqGI^fY=&`^8Jl=3%B}S_aHriV<^ES0#<S070@k!k^qxnQK{+-KqOdLs>1joz{EdB?*5m%zFmcS6IiOj zdV9I8^qJZtu%P5Fud74<=fR{u)`j@T)vBF3@daEcuo6=lB4)u&09nD(3hBGho29kV%2t&FrJ<5mdwVfG1LYefQ6Epbi1H z4rA>jrQd|E)c$o@9VYq!ValNdc1i)zv>U4bt`r{vhH&MhyD#MGvFl%;eQ3`vBl^j; zyRQVmOv4*xgC##fyUtXM?E*m1_*VHJmi&*ofG9ia4*50CmyMUWP`;z=PzmaLTaA{jm*76rUoAgWg8Qc_S{^UKggxKCqMvut zqW*8bsykJJ4<2z{L_Q+lEjm-aUV{6S<#YVsPMZ*40?5{Mwc>%2uzRveTv@E5AZ zBPdr=g?h1mEf^m&x!-aNSzhsvjx&#Ln6_R{a*QcV01`N-)ma zj8(rXc?7DfDld88J5YdjCBKJs0PI*k0XvpMu&yMy=_ZI*@=p-2ShaNddfBQUEqM&> zc%>@M_<03DS8}?*T^x@4qy*2&e0u=im7Lpj^FCsDtF7u$w$t!R<=>Rx`A$%f^(O#W z@-5t7iRvGfd>i+XyLzVNiQB7)Z#;u1HSR}|k5J?Jny;5!M!uOnr6sStjb5+$cFBtf zFIFub!NQXN7WIMdau#Ump3n2XYky^rm-lC}(gNJBX~f5KVi%qtotC;ccl{e^SU$Zg zfQ1c!Y-L}^f~T|feB~H69$?9-79YAi`ms@m4M!YdXuy3rryKNjpg(yOU`GNQ94;K` zb`={L30tD|3O3;U-Sc|1vp>?|uETY=xLRf^e~AV7K(nQC0t+kd=3wO?puB~)^UR-? zh#FtV0`HPJW4MHkj!bXbi2K0lxA{%DPR_NyR2RzSktb#sHb$cMR5x|q0VCDW^uR)| zgm|z#z<(SLru!BMl-P9U^>#e(6sc{!5%tIeNu^cmyD@(De7NFR$zHt29A)=Q*!fa{ zq;H_#4f?YcZ(<=O(CMSav*8$Qy`fz*&XHjE8Z7aIXI30|51x?R;UVrmeivW?} z{zmpQ;fLgGHni5r2y z?}w0|>B7cYi53#RvGHhN^C&lQq}x{(&v`$Da(>_YL5~~xe84jw=f>Xg_>9Mr+60nL zcxUH(k~#k#4?v>$l!qYFk@Vhq^8!Gjuq)QJ1h=9c=?1{a63hWg7LW`RTRaM`#|7{x>T+6~0EGl#1Yn5cL|9A`08;UhZ3K%LFApRUBtp4cEFB5Z z=uTAtNp}hgY4Oy07_|D_h3;s9sR;Dha`aj;h$KLsJG2y(w>YGMLObQZqrV0uZLxTC zr{x#N6ZPLoi{oqVJcuML9tq`9Y_=R|Q>b|mNdu3HEgGrd5yt1;07!X&$b;t%0FhfP z^t=N%|9MQXr49GX^paC)JG8T^<>5KU`gUOavpt<>-bTgIZf|Ef$(!pp6V)>sF`dc* zNh*kRyZrAmT&;Hs^)CdH&caPF=}z=EK+>J|Bm22s&h>Mz? zk_HyBoc0??r^U~MNg`db3Sf!;>$&`CxrpW5jk26h3FU@{4V^X60!v7prFj2G3yx+} zHUT7YG~3>&Q)fiEDv)G>DmjZscdM!eqXo@E67B=llF@dmfknddk!l&~WUgHPb6@!1 zVi9S(djrdGwbV*WZ?Q_8}H7%4W~VA4@-`pndWC)2E;# zu8GvN4f9Kb)oXWR{u#EV98u2a`hA0N^JumqH~LQlkW`CF^XS)wLH{tcFFoLMt|1;a z4B$OurrJ1!^!vT~t z6P^k0N4y#TbYwr=1diO$DgWNc9F#|}?Sr~}li?ZWm!43j&|YByX-pbjnRKHcQzOdw zI?7#ghR5bHE;Wlt0z@Jp=R`bv%B~C|9*=4ph@t;*^os*}%Mop!%?(LmDS=1Oa08SU zA9|olMhRJ{w2*}IXt_u|;>F)CcV5MJt^ks>BiY1JZFRq_yGVNxd) z8Mb8;i4_NN6dQ3A2Z@ykacBp&X&Z4Ihe>=R%uHsMHPo!_Qn#$t((Lz!f`kS_pBrGy1qoExJjE}@fb`tHs z0kmP5AWn()Cx){O7eN}jY%{Ef%k$qdTn_k@_m2RIbjwm3+PBH^#e8>~UUt44+F#bb zVm-GyZjPm!|`I=2^Bz+P!TUw#1~Zuk@);{M+?u<8x%n2|F0}0 z2_Oj;zg;Ro!vr)^qKYHZm*cvt66wQzBwVuz3pnK#kpz$;Eaz;{Qj17gJhxzR$AS8U z3Ri8Lf=F;VMwe`@@3ddD;$S^xewQc#Z-zD1K_Y@hCd3QCs0bc?yYXBHj<5TdhHD*YN4eJP z>Bamyz$D7kKqa(S)Zc{mTMu#FyFJVIK+Bbmki&z1JkybNAlx?Dp*p-+kA{{$cdCp+>Vt*V8OG*7Myf*+8xl)Dqt_$rVXyghNw9kO| z2!Np;oDTt|UJveTT1-M%1Cmfqj|?CQ=OKV2Vabs1Zx`}+=epy4UR`mVh-bb1NEaZI zu+$`gWbyuY;Ae$B?!tSX?^$8Furt%yYI_&`1%Q}8gdkXKYAw9qTcH}51l@M3@|Er1 z1W5Fyt=kMZpDo|n@|`NIUsi0X*iv1!(Q=Y-?M48p=BWa(RCBqIujV8aU{j3`@p~)k zx8wQ~P^!av<+e+eZ`A)q!L?f>z$MM48;+|1nA8LEKZjM4~IUtBBWKv(Z&slUm4s1F!@zNv_nvq`Gx5Nmxp{3xwPSLL}+GbRgpH`Q5$G z@80L1-hF=e0rRN=NsYag-;%I`*7(Pjc?mxuYV++7#53Q&yS37?(3bm4 z>P36D94NHwrmE*JmXCH++=F_S4Gk4&SIdy0y#f=nR*NA~@xSszr^dMz8~B=HqE^&* zYZ6Z-#oGv9-~Mkae!fvVBDK>M zf69fc+V{8aDAB96hY0c*PuI?F9fhWAPi~#Wgx6d9_*QI4(?SsA2|{ee2anlVcXn%V zqY?zFz(n!}{Q|-OCn_Gki84RZSzg6|!h~C?4{f~weW(8KDlwrf0z?1%1O+4f%5BlQR0fSMEsHUn!JVySq>yeK1>w>VH-BK6JU^m(@6bOSQ%Hm)3~o1 z;FUStI8}{ybe?ONssfN?I#=(h!h&$Qb_VKwv~Z+ZR2qgNybbwj0f`o#%GLBy-O4uf zdr@I|sWOQ$l)%-klopz{{`*3?TmNS$EHrKXTeKGzmbT(NZ&$VJf_|cfrmauu<$PW* z7vn&y=hQ|ueNg*R1;#zcQN;%(I$L|W;unQ+R&g)%gYB6u9~Qz}a365|5wJ0SRQn;p zouc};|B`@A$K~xO`MfAsqn=(=mWvM@QJx9)Y5-4}iu7{jxW57H5n&zF5x~v{wbcCM z7Mz!B_2Ybv$l)tZJa`wvV2gF=Vh0_ZMk|5<%e6}<@3XyXfsy-9u_iuol-r@a|P|^TSDB}=#F%( zU?VQno1<$ucg~fwB$~ryJmEmB|BJza?SG&>v zk!Zi)f%f*rx_q5Z)CUVm&3G<#sLiw6{|N7A0VL5v67I9Q_qP3|^oMxQC2ODDiUkg{ zu_aW6=Sol38j;;7*9+&B%h=dS0Z8%!ph-=~h5`U=+}`-80YH&_Q0B(W@h~hTMPczM zvp+G!aB{z!rr_^`WhDLr`hKt1??S)PLJ}8#Xd%g|7Az!nC3PSPtOmX4lGVh4(Fba zeold9g8a9oGj3Q?nz<1EJoJr=(cl+kT2%VZ8Z9No>=8AH@bm7o!3Puh{L`tq%uyWo zIroD>ZU{b<^ab7i0&vwE0*I8_wc3>dK$Q0QGyo~%N%MLh4ewgv^*pNX_7V7^I^%_S zC(1t(^!T{(dPMT1x+744OWo?a5@=%lA@|NC%Rk_sTI%u^fSxYYFMy+RFiC_705RWw z06`A4qX-1uE_k$AJ^>`%u7x9!PXJ86u9jIGDuO=cmW9g0I>1u|b2hUKB;s|KWkuI! z0sty6ce8MrMJ3VB+pb@-3E|^_k`B|cM9htz$EKi1u*Fbr3EEf2et6L)?C)z zfohhPa6Dbw5rENvF4UueMaEB{1d{N)D4qwe2hT@W&7#meHtY!iDJ2R(h#;r{!HWH_ z_uKC5Xu`CD_h4vL;l{|vD#n49PQ`JZL+Jm&=u+n*l%Uah)FZ$m9ZV9IkTjqP&odrp zK2tc(9J-03U1sDf2bUPOpnaOYcLy4AFIrN_FS{45cyE@wVk3BDNdRal1&eE!j6Er%c zmvi}JlpvBD=|Tx0;kxZCQ8W5S1Cr3cJN!dY{?dOkFc>wV-lAnBc_3^;IU0b3{9_70 z?qnfsa$#NrAgS{l6c&=`+C&4A-bWZfk}VGPjx2GbYeXGU9LPTiS6FrfzT@2eaU0q{ z;2V@3xDEs&x`UkO^hf#r>h-vCoJY_?PY?2QBYPl&_IW(&l#lPz*~~FFT%Ei})^md*)|zzX$zc{^H#4uR-k>=lG_{S^NEq0FEyG zbnf@;IPOxxwb~nVKbc7&{Q9LI&;2ZqdBYrBvOyPS-d=m>0_GoUKfLr)=*w$wUHS=i z?yZ?0U)0qO1!%O$@WmgjEg~Gd@clJ{NZ(tFul;Za;WdOWavt;M+K-?McI1P;xVCWN z`$!MV&q>eYydH|4RzHjL+U4D=9#AlUTkOwjppdR`U=kvbB!Hs6>|l6g8DXeq;YfrR z2eTt7#0xbJhG_YxcX1#)>@So{;HF3E4-KZV5eMLD5b*>^1`yw!?F$W{znyRuG~j{4 z^34E_cP4ss1E|lr+!toP4a#)n>sEm_@i>4mR9Z|Lh7JXXV`ETva4fb1I+597@SvO> zD^su?iE--l7^e}xb8+Y59>nhqPbKysOiM?*p_A&Q;z7O%bwb%mmBtsRpqdLdw0|r* zW}H|>`LKXQi=3m;QR5ht0FoO@*KDIu0&*i6t}hHOjs!41VHs%{N>^>17rPc+iyU{F zs~F^`Wdv@BawD=A{Y4PTiFg7?-Kf`o-ToHmT?CLg&lgI|MGDgCvW+e*J0cx2zb{&@ zwJfyHVji!`3oX#bXB+G2N~Iyz5R-9#5Ky8816ojOg|-4p#BA6t=pw-a~UAJjKQUvJ$lBRM{07;rI!)2R<>uV@+*@p5Mo?N_r zr9~#@A4I*A#zH&jf{@RpiMXzaXM4vPud6tZeq}hs^Vy&!=UIB3IDS)AMnV&;uUy$4 z#tRkcW$oHSZ@cfo7P_dxr+V9c9!SAMVNpW`>EKk1d?z)2_}s({w6BY z2{36u62?m@n6$xS62=*yt78~90zA3_NGeG$f=C$88hBK${{9Gm=<{j1Y#RvUKE?ex z5P}j&%0dAo^&@PbcSHz;*bPdKmS+eexe&I&GEyJHR)g(&?<$@r7F&cr#G#9>9;BNq zE!X+n>#Q_i?}pNH4!>6ktaKq=bNLl0375yiG7_JYw9KR6xc179oE^`_HdsKipN3Yp z=WGZImuqxEW@T7c&Gj1cm8(b>ssTr6Pm{4FOjq>;bULqMeZ<&$&WwK9Q~@lR(N9G% zsmz7j4M5UKJg0R_M;o*pOxgrU+5jdIG(x#IfJY@^k-t<;ct4ca&-1o?fb+<#E?sD*{To zyoXm&yR5xw`mrM?6O^UAxuDtu$$xr~MP zYu^&yBf8~5fHZiF=&>M zT+W!wi!hX+Q}>e7KntARuI`wN;WBl~0G5)dM}SFKo$FslxtW3sIRQ#(KojE2EhEx( zYPTEbea5=jh4KZU)Ddid%Z#vQIZ46${@I4QW_)MVhHJMsV!hPxv_V_1tU9&r)$MP> z(h)2n)kpx1{!_(^)&DPmrN7_uVilE^l>V<9wfaefACz9Er-Lnjy`_eh{X z4M?gifJ^dxi2__|L|C}86Cje|RP{prD|bPSyP(EhP(#9fe|H?*9S3*E!Eft6xO;Jt~huuhlPC z{^f5#qxH#3Y^)Z`73FWHdc6cswqYXQsWvQc`(N-O1t6tr4tllm&#EwyvYeGCtDk~i zmEWtz#LgOOnlwait+v@FZ}pEc(R{zjSB;JCJJG8D9v^_yO)FI^(B)=d6(*23C;%wM z)4Wpke?pgA4po1BqdFE_PFCkIfrpExYIR-d`l|Y0FtLWqD+4CHnyVw!Q?7J@WtcAH ztNv3=qyY+51B~GDRahX^6z5e`q*uMC=ijH7hlwn~A`<#^nY2C14|!vt_7#5cn^x;F z0VP1x@GC6f#H@b#3>E?<+lNi~uyltU>DDwB5<||k5fk>QoGWckV&fn@I`pkfzzm%Q~_M}ZiTmX0YTi@q`qBY%w_PJzJx?vpcSTwCP z;yKgjGNl?(Pfy15Zet4V&Y2R8_u@Qq#zX@q=3TjtL_NkwSGL1dk8w+_L;JdY?aOt4 z1zm1`zit)kZ3i+0b+>&`i*Zw~U8%NIEzYwm+2*T7eO=x*FZ;uhYE9KN+_`ost+O@g zKh0%V1ypxsc3b)q>RW30&`^bO<7@F&f92L{UujNN{T~>IzGiO~fGACa>uOtRN^L_w zaNKWuprDoLCtILtx$Jz}A9^NcJT`SUsmj)#Lcc_P8(H}t1SN}g-e)wx>%<$ZnpW!%yLM(^i z)4Q8%2P~qop7x(tpWcG&B`kDlD(T@;byls?f*dV(N&j>c{jhpv3&wNXs^QRXS9YdMf`0o+u<@G3FEZW)qJIDFQ3zvYmEocjzC|;G>PZz>bS&>zeDM1!(a%%$oG2Xkr;rY z_<{H+>N_q0NRkl_?*}@Cu;NV)p#ArSy?$;i-RGZ4_eG(}nP3mveLT4@*u8}O?&%EA zix!e>2>Ya+A+r&`{7*j^okIAPi;?)FsQ2Q9g^SN5^7;RE?xz>O4gI}KuU-6#qJcBj6rj<}mz5LHmo7b<450k)*`XP1Ei)96gn$WrFA8r&F|4@b&0pejI<{IaLc^h^TYO|7!lc^n?t(@O<(3RflSHilYAC3lh`MDr_ zG`-8ug(yuI0UY^vu5>ZKe=6;Wqu(=AE7Zf%&gCv6!U?FXgGdHgLUK$m0i|W#m75=7-I7vienmz8Ul#=Wq{o$83fc_hx!w3X1&qpFkmV+g zR`gfV5>Q!K15jK5Q3TMV13^Wg=oaB3$Ry5307G}!4$;01?Gfz~S`HeOosTG|r~*V1 z01_+*l>_Da-c|nEh3&k4D)ZMT0V?R4TL!j1#t3l7L9)6={oRK+Fs3toH%bC zz$#jT5|*L#ek}HX=;jusMEafd@2~5^?q>Zg&Z~G`$}CRZ3P9SG9Z49|c+XMKLPH}8 zH$XO3kxxJF20-b0;rg00h3j2v5lI7>kk0&_(T~y9Q5QFgZV4^{gt{rvR2IKG=Qf%@ zLV0nw(Xxc|N{q${2Jdo@#t3eeS~}9eBLN(_M`C7Y0Td!gL|~}%-8)wTNCdVB0Cie6 z(RsuZRJx4vb3yP!2&NS~@c0y>LrK{R9@+4o&sr=(5dx2=k%TP^=TZe-a>lp()Z^GC@owl07);; zy^;T+ovv)7(mc|i$b3H8~uQda=KE}EEp}7D1ahbG$K$$3rd=z zp9nGy`SE=YfQf(&!-K0(0!Rou6<25gN()T=X?$lcLlN$Z_J-KsUH+c1%Lny1Re~xv zD9Uv#JHvh68A+X}aaRgbMDIC8FGzIZJt2h&s%j-UjbOK6l=t#zGm_R&T zyG0kAn!)64GE0Dir`ET14tcy5=GV>D+kiV}D_TvL}o4fJ-(f!b)6; zcZK-90RRbVja%dPGx%PFr6P`VO+SL3x3t<$<9jS;iWAIi&$Y*m(3W#8b!{kzKvFa6 zZ!|O-WaQ@tWh3VGA}q(`STl|n`P=K->pE~=#yVpi?^{u>0G=$eMYiHTwt8&_1?AfU z_Ich{bivjQ71u)pj=Z>Dfv#u|;>%T}7xQ}^_##3%s}6}uu%RajRbVN}h~pCl*KJ+P zJ>dZbNM zG#6k1TQmzr%dl7^AsrTycEoU<2_zYy1d^iAn*d2g5DE2YVA97ZL8J+sUr_-hO}G&z zV1wgmDQO((MFr3^j&y=EV~7{`EzifzFo78yS5yE=V@vD#H9&{u63n@Y7Rwdoe?r}? zp5ItJuGcuuPxM#05}acCuUj9-ht_}P{aO+pmka$(Ac_56s-<8OEhYiK)IcQRa!rH< zm?S_Yk=`3BfJi;r{_rTq8=uRiO0ae`f^iOua+<=z+(-`jU~z5)@jXgkWEf!rp0ogX zO9dD@g#6u!p4<@f(?#MS!n8~_h%kXb{&1+v(48AVd-xn4$m0G4h&1Sj;(0ufF5I_# z?rT8ODilBxpZm763RWDT0Fnq^(lQdCdjyesaXc;G^dOyZLjKLt+vklDe%}&AQm6ot>?aE#l6|%SAlWbvA$Vj%Sh!j%x>y4^L<^E4 zEYd}O4LHJcP+n|SP3H<=64!M!Fo|ITN+rttok(w9Y`tcVK!v5GOLPzCvgB_*Mz%Vw!7gK^}tEO5NgVqdQh?NSEIN}I*Fnc3=Mw~!dIGp#00#Hq zID$z%$S*7+X|CKDCXj^k2qbYH)4kdw^}7qIy`KQ!(xM;dCH)FC&>eNLzElB-5`dDh zgd_kYVKGT_-L{PSbzn(YUJ@3UgyqC?P>Fz&!;AZf7L+E@Zvd1!ljwKM2ij2{!Q^Hr zL7v8U00uo&^=cjV5h}k_Syl6G07kk6r7hAHY1{X)Q5%(_+g^lzQL5agLjPJaR6kG% zSN-j}5@4#v{!+#Nu;sNH?1PlLcB>7*g3?T7V=d+%1eNL@->3wa>ao6R@K(zWe_ya{ zBxg&2q`$3eXgP=V$Um=pv-K?2BOj@Ky*Z)-NOc8md}}>ivszQvi1>04srqlK>*}k} zZtd@`-tC9GK+0Vp69}_Yis334r zhly-=vi(q95ED9g`v-McAaO2r9IAh06a4@aGgrq4^{WMKzy@ef(s+pE^=)Yi6G*r5 zgNDl=uZ{Z(=|YS7Lx}g9rW-JE>s>az-|z}PFg=~qjRxp)=W^pqSm^MWJ#rYjY+j~G zNp3XLmu>&D<^3j1tmvAj8RJvav-pr!tSJ)TgKpb&a}JuYd1(P-NVfT!F|iuTSU+k) zyYE<4+e!Wsj+TI$G9{|oPjcaDSXWvIqDjo6s*1k_6UWiC5~OP&cfx+HWd)j4!Y%0c zF}I?&M6sak=?b+jaKpPh(}s2m9bfHUZA1KcpgYheBmZjGYAe#m0$qVtBg$EIthOxb z>V^g!fffsN#Sv_AuBVIRM0pb{&R{#roAmbtIt(S6LbwjVQJ~LnLceG7F8h|f7!I+vjlr>~RYa>X*8DS&>=b*~uD zK@HvBj(PMKJaV_Azi+Ad{bD=%c{Ju&X?q9x(eG`GQ1rVN_9>aR7{XNL=GyvRA->gz z@e;*2!TAo$b|1&}t#l}ETWQAmYPzJ4@1b=aj9XWl&@WUjnDV~heKcsa`WpXvqw@Zd z(I3<%lvC72%Ssc@b3mxka!5|#{#!J!$WGjsOJ;B56x7w3YFNg73$UzV1ov~&bg2H1 zp^9;~4)Hz4j@i0iJcknPAJ(G1PNjXemSMT=a;*{R0OhuS0FAVt+5Q&=t+|496)20Y zHGGaCT=R>~wI|eem8Niu`LbYV+CZFGIsk zYBlO{gqkAN$MJy;%RN;9-IT1HtNL?jL{_U(B`VT4QI=D+T2hY4S6U9*XTREbecQi* zW*T4G_OGGAM#DCMPqr%!v2CrNK+iY)^R`YLe+#uz zhERVQn8b}f`!$sB8_aN{j;`Cf0#LYaqlKMOJOz~%+<(zNpAGkAPgL=B9726jqp#7A z1)@rM#qcvMT%4=*I8HsN*m;ka3K22V<8X5Wf41I2T? zD+$+c@jV&Eh;Vq1%3nGj&rC<`^Rzhhm^9;t>lFJ-_Aem+@8{$8XK`LXpNn67HVv0* zm%d|v0vf$^HsSZ@^XI)GWj2}5f6E<8+$XPtNf%OIN<1JT-^H`ai6Fos``N^UIF9ir zQiXgEpxo%%m*Xc<&iut^;{l|9_tLX+0O4rx8I=~4UYL7U3M2t2&3!HUm<(NeF8Vn1 z#r$*O$5H-^7rv%G7S$E;-;lo;^vCo0P&}Y|QGOud%Zx#NZcm2S?LcZGZ4DD}8(*;) z2oO#9ELRB%P5SK$)IX87C6JyT_jAK`zck^sS)hr@Wi4IV;jttAKw`%-`)|K@hs%Dw zV5!9(1V{s*gbTC;As8k&W6z*GfG->;GwDf}J&k<+@g=_JG|&Ra6PU0mh2u(HbP1s1 zx1~i;Lx3JS2vY<=ZZoX82ulKdAxPrWEyGOSnVNAwPUpsrX7tl$s#%<2xn;nLupCru zw>Y126~K>BJ-t|-Xur@B%R@J7Un%HgxyAYN_+tAb`%D3p(LgA+FSUN&qCYnD zb2+HA$v73`qIiAv>nX|={rgF@^RnKbXm=6p60Hm7vH$=;07*naRQ;^??}qCj`dwT% z-2ze(Kq>)`I#kS;v%`sw)!SDBOFT{km)?g0Q0lBKT*uC+u2)JlFtXGcUe71;-&8|5 zPS5{IRVzP@dgYNtvm58P320OVhdjfv&Y=RhBLE`Pdzdc(+%Y9|_1uAahGMiVG^Gs5 zCS?;{D3sTU{=XGiBmg3o*ZBdClLr?&asON5CHn&+E47z{M(vqwb$}Ln)~TRSVX$;qqTQR z)s8UpT`c5#B@Y*C2)}%xVA)7mJ}N4~BOLz<03!lP%)dCZ9)9^!0ZjVdr8m}ofb^Fx zzCQORG`}J@?`i<$XRj5Z-^XZd&ePyLwk$23qosHGRGlZusNW#e8BlLEg#X6ge7i?(1#U{L2m=Yj?C0vMvJHolkI7TOj% zf`tvp)+^W;4>#2{XE2|SHO87w>lTurn#CmCmvUIHYlb$*nq#dvu63bxp&i=3(7s@V z8Y4!z6YUrEnBf}EisNaSg7+Oad}$HYwyH>Ug=kCJV;Z2O$J+&{gpFVgG|~YwZVYPx zlAdl4C{bQ_s?&r10FcD*09s(7g`^^o*EF}(~-8dBV$9XNg{ z<__;L7IYHzGps4nCsE&KVA3F5pG_b?EhCkJNCK=W0yR2_B*2;?IHZFyF5^&0bD3BU zCh4G|0GGsZqMULq0yyQziLj{eR`rPdI?z;J&u=XJX#+_(Pt7uwK7I%!O-L9|I+%1z zAPE5I81f4ciR#Aq`&b|e?WA(O*<0i1f=QiSs+t&pQnS)A&B@Mtx?dIYzKZfJy|E zdQd;#SA0)fQ?{5hhj9pC$tgpx*o@r@-aA+9M$QuztTJ``FmI5%pd?fWl{SD$rwj`+`k89F5cuiJ=}Vug{1m7aejA!By17i-6#LF_Q~(o%O1Ep{_c*0{~E@@-GTn8 zk-r3I1V~e=!$I5W78x6;8QVuKm^h3C?WbEYVHnBSS6gFPU<@h&Zm^Dqm2_LQL^H~2 z+dLO29f5YF)ACI_(l=EAFYU}&m$BdqOFI1J?_{{wXG}vgy?&DyU`nVrZF(P??elj|W5G7mmnLws zGvM-@5#G7#S~Vk`0F4C`O}g;0AbppAAYh%u!nu1OWI_466Huv4(M~P?4s?$)khS2v z_ap{Gmg_ev7r3UC!7P8du-7mYwxQg;xuKj*#fIbRuw*~O4aX75ZiHq>BK9F{RL0#Q z1?RcnJ+|sd-b9tLpabXSO^yYW6(}r&@E0mG%kBUd3}-x}tM*xx4;M!KWktC%pQ0b{ zaO>r>zQkCD^|4&WYvm$*z&*a&wL}XLldH}IHgXkDkQ4r6$?4z_+U<9HGhBc=nK+c; zFW(+Y9L?;E=JSuZ@6GHsU;{XLPjHvC9{*tCV1^4*_b0tUw~TVqd;LQR08Ma_)4vFf z?)K8u`jPmqWtLCZI729hE^&rJXa_7((9*@h#MClP8FM4JAIc44nvOjnO?q8HC^nM0 zK)OFY;pf8be*buy3!df5jp$wj&KDcbJqr2{pp+B3Z`JMRht$51+b6UO{lRdl?o~%u zy3k+3BGf+5NT!R&Eslh`(EfeK;jCj3>5Ic52f`b4X*k2{w--taF9g2$%a&c4K|en% zZ%3`TPnge!cI*lcq^)SDhZd<2rdn{`RP$A6us>}^Jv+1g{!VqHYUv*#pMKv^35XSy z_tnn}_nF0o`!9?8&a-|$iu-gT)8jWDTEDNyvfX}~xOZpaJPRr;WbwJwg8Ol#1lS`$ z=w4Q`&F@0JN~kG_{3&~ut^r5=_Kci?dhMYm)O#x(N!haU`zYUQ3(3=XPWr588;@Wi z(+AMQj|IyWbG9D!5Bkg@0-FOXomcCZpkCOB!v|x33bx%aKKi||F}HC0>Pj20*1d#< z+08U%JXZ&h$K^MM>rj5*YKK}IgZkQY+ppone5E~7^Pi#qw(B)d;{!e2cHZzGZlb}q za|T?mo=>X&*6W53@nOEw8ZiJ!?M}CxuO7h%c&7PU6#yCsTsKy=-$V_~!ELW&p#d%) zw^iLlm8R8707!~Zk#Dg%u&o8<;rL37Crw9DZ?-kGZ7cd=xkIV~*feUe#_Il<&v|F8 z`8uAba1mlk;{Fbgg%ynBgYtNmVB~@1M8J{7{gWB?TQFWG3_ad9T;C#)bf(3<6&p#G zT+>hmEH#-IDDc<&&;a>D}+B)C(B=TdUr3K?^Na|MGQQwHvqngraN3Kuh`-B^O zwm9B%$$_jAfvyY&m0Up`A>?0mW%x_M!EjHS?;9s9%eCV;OJ(~?gBJ@#;l>ZE-^Rwp zIm4fC`AdLEC##M~80WQrRQaKVer)n@|J#c5SlBq-?5B&#E}waozib*#^o9tIdSrLl zZo&Cxc1LNd+UK8%4dFaz-3Q|QWjTSQ;RL~=f`z16zc=Yh;W?X{N%EI##}YH19v@WQ z=cA>dW2xy?Zb%)A?g`mG!gD#iFT(RUnK~%-1oQcb@}zXso6rBjrSIpT4d?TJc<~4J zbI_k$`kpCeX{qT+`BZpc0v4j;`$Byw zjGyFWz>52A@5;!k5%GI{BLQO!&+WiynjnPGy}^+*L65!B(Nw1&@rkiz0w*(x@n!1} z-Yd$a$A;r)QWHzIdE}$ZrZ6-xw!{sl4a)RYjAy!Rx{7fNAi_ai z___f|If<}tF=tn9)M&)GBVfe&c`?2WfGIs*fGxi*<-A|CqX<6f{dU9k#{F5mPIq#D z=-0P6zHxtwaz#Ije!o){#~0hJUnkMOw^DK58aRZ0C|=Ldu+o8cdZb~cU4@G9ucIFn z%H@LjuE6k;NiKv&M&ny3H!&DDphY6_fjBK8O{4~5#*g?tJpkLb&_I8*1L3hyztn;2>yEorqZ6t?uVMZI zP@2!H(I~zH+|b2=v}GQ;H0ZO;~OJBXP#<{QR=B)=~QQvEJP!F(*(yJ$l? zw~P24+vnU?t(mg6SvIsKtq)-klq6~X5p5V%CdI|Fj z|HD!s0oQH8XQI!9tD$kPv=t?d>({!rBkletZc))1?An^zz!9Yi}c7SU4)`+V|Ifhi*z~rO8yP#ckD0a7wq}`SL5H1zU|KEPs9V^(_W0* z?B39Rga-g%jN`ls4)GWL1c&HyL{XeUZlr07e2N5TYe{V2z0;kcMFP8}JJ{o2SKD$S zZ1Z$wXz9mh=?W1vvMzT83E)`Yab&v@Z-xCw0@oUF1U1jv!V0u=(sGUK1IG8vVe5z3 zc$_q;w8X#-OEcP zOVo<{!Ln+rBv?Od4e7;v0CX(OuY)?~1@nUS z4AON=LINn-pr!TTz7X}W9F}(jaD;Tzf@#4VM89A|k)WXfkc35~wn&@Yf&Sx0W7`#M z_!?Ratr^VM;gYQd#}Pc@57Y=E@%vN&N+P}~))Z?wjSb^#%?qt4zctqyZ-JF4YlyGM!QEySpfTW@& zBw-n;3`8ngLK2pd%0MIm@(8d<0E9)$Ptl>UdkNp`<-icmZw&1#0!N!!J`y02o?nzx zQ~^Fox}_<-KK7qhez^kF8AE$Sdqw+yWBO?WNjSgpIL3tzvK7Y<`e8g)0N%z8Q1sUr z!ong_5je^Ygxyh$OQEpnrG-Nx`H7L60ofLs<@?{h^kub@}FMSt-PuSJ6+Etyj!hXteE&`8@g`F5b*>yl39)2wN;AU=l4R z;XU1MF`l#K3h_4dZ_(u*UGJek_SuKbAA*w;X7P^^9fFk-+D_t@GSIlMU5c@g+(O8dQssbZu_qg-V9V)2b1D;e_sHk>i+?ns(PbdT@TasT0>+VI1(0-ZUB^8 z3m{X&TkDpRs{f%nR^MI)4Bnt7JF1KKu#_7 zhPZLC)76{hFSd%h)ED9e+@thmJA=C7gTRw;g*r0@HDdz33k#Iy)4HxevB7Faxm5m= zy;E(8KDa>O}ZRct_ZY^FNZ=5pkmYqrn|HZq#au^rM-nNDtCCDDyGB zG(V3EPienM^m(VWUkv(^Q_)^8ekqyU8SV4HQc%KU;0EZi#4c?@JDb?G*pKwt)b1F6 zIXIiy6X`c#LpeMh8IYjyy)eRm6HV;JmOSFimHA_cm#4D>NS}>Phx!pN*W=3G;6QZ! z`1|C&*+Cf_w93BVAoAZIp9u{?{c&$_70; zK7Tqso7t7g=Yw&-x)=I{bV8kheqR1e_yF>qiJw&WBYZ}BP~Gp(=RYeUUlzZRm5yh2 zLmx>V3wqH152f$%PpzPQ|Izf+A{MMON77Rf)TUZV+ZP8)BtZ#`p}j{FJ2Nh{M^i&V`;hObvNPDH zVB9CBGQ9|I&^Qo3lygLx3f@c)Cw63dqqvWh9l>7YJ1kFTdtwB|CNn*VKNyEIzbt@> z_;`p5=KJGgAuf;;wBrK#%+hFvz{8AjB&%ewu@7)d2|@vG@fSLLPS_Tp0Qjt~!gIuo zcs^G;--5zrR_A=-dDDsd_}sZc@jU9RM7%tp{gR5$Et3JyHEz(H$8#{=r_ut}&c$A} zJ%;Bgo~v!wu;H@=n@V^N?pTCPB|JBGxSZLx6@ZWlXQ<5wbpe$@{G_ov-1!VcR`*u82((6;-mQR(!BQZp`j@ER zZ>^*$<9^i3&egi7xe$->iT>K@8qL~J@BYN@FgLD_O8atyD|oK>4@9-+ z6~LsS6rMu>lK4KD4enQ5X#cDm7LsJBGK1gLL!&cZf|q>0IdTk7Ywzci!GqymPd-1V z9G6Co0DY9FqxZY>`K6h+FFY4707+j}^ZB=DUbuKh!Uo^Wx#UAA@A=dh633ts?-|AC z2bko4Lh<3aulYZ#97*K!&!!(w98wD5qcQ-ce=r9Z*UlKK-O}9O18p zKd0P-^smXEi&LMApONoPLlbA>#~5~>i5^Sl^XD>WqQM?W@uwapY5<2p>Z@81)A|OL%`I_Gbog+@a)-fbA-tOR)UcDPx>vM*PNk zJV$~<=?;Vme6}Sp|AA{#0s(sxBg>qJ?N!_!f=e^XxW|&jb1XUTwj%#tw>xP$i*k}~ zx0(5qqi)W-_N6 z6#xxx$D)e{(4gNnRc@jvx5I__$jD*``bj%41C(G5#%sCmj*KoE-$K6;9KvNFir%RB7mS`f9fF0&g@X4 zJ%i^$ct~kKgXg3=m}tAYt|GpuBEPPifi1;yneRNx|6OSm^+ndtN3^5ZPJJ8|`$Zqe z#rp-<$AtT=2nGoNtPBj&#!YGemVjFt5T%dbVm@&_Zl&Tlp?bN+>&EtA7840!6mvLU^yKa?>kqATt?}4sH_*~Maw`0-Uu2I zs1r)ys3VK{nR_rsi-81n_&gRmnH-cmPGX+s9*B2%p~`^V;l7C`kp3>>H`DUt%JQ*3 zqpMJ_F@6)(!6TN>=Qi76OhXO*iv)-^Rptv7+Qs>*1|U%xkLxgz=#TSzOp(BG2HJ$I}MZS#1g(Qy!Wd2ApYUthtQiaGuYFzZJfa!MsAc5Po5fuF<};_TmgcW%o;SFC+Yd{pGdS5Posy zwYfOLv}E+=8Z08&<7;mr{^g6`pL^>PL8SQF4-g--!_pDrzjyJCxi=C2y&33S;W);_ zMH^73^>V&ve|_yu#Lwp!F1&FG^N6`uF1(KL3u`Z5cnx7%c6#k10jh$2L;iO3y9l3_ zKdU~8^VuIhk~s#|EWpUvsCv&4qy+%0#S!X_VS{eIE5vyjK_u7WI+#ST$mzqp@g4gW zM;bb5&o~0u2z<{TRM5Yj9$SXrOQvO8kUwlPd8`>*m>bBJD^|oCXU%6V=(mp9&a(ua z2^@8vE^JV89jW=lwyOjjnk;)9!6e;9Td~~+*+5tK z#V}pGpK{Sf0NV4YVu4q%~5@vbXfx;YTGdF`;#3@rnX zHds{BEhGsSZUh`S&nJk)^(ke!JKVbr^>nFPJig+!jn>89On-{^bzheAWM{&a9faNh zCN1Iqmde1SD4ehv@!SAdGX~YbnnkFve6u_fnn3)3VKl?%!9dI%s71!6w`*X9f=;tEHB>*d-IG=Hhm)|ImWGIYNw}kN<)m^kn1&c@o zX9*zD)hNHCdpv!)kqA_PNU?&8HsPubxWtXF+J4hO5-cSRW&t_?Od1N{K83}k!POGg zK_vku2^Vg{Qj#@hKi`M^mYD5)FW(>Y*7H43;j*o>(tMpDt7+aG=|=npFi8MPn*d3) zu;ak-nnfKPuK_K1uC>m$N4V}!*K6DlxDyb`!u)Wx#{GsOkR&W0=@yZSAd;~;OwhV< zu}L+a`xu2KBLdu7zN;l_YziCC;{Ej#S>^na01}`7MMXT{lLB1Ypd}WP2qqPQB&q3I z=gChVZv4~cv*r&_f2jEie^7lhrR8A86QGp=E_GtO5KQXKp&#*nH($r~c&GiE72}zf zl5Ef$KqQeIpZPV?Q_7viO-frN&3oZI_-bX-*KoJ2Y?z0e3>eiK@62p#F zXwDSpI&Wvt^cLrjba6)D-F(H|swkNM06gZt4uNHY%ZdyOhGC5FxFg<$Faaee%Ax%v zzMp76i7wj+1aZBbj@||mx+0zcQ$O-`FF6f-Z*|MvGA$eli$+CDNkQ10Od_4&k*}b< zFPPrrFR2&lj3;>1hj?MhkrtE)_-TssEdov~5B(+Tabz6Eo+X@DM3J3P4ajn#Um_;i ziZCrDa-E0ZGCf|@Rn=8B#R2xr8|E7j-gb6d^>$o8T1KkQ7Az%I|8Kg65Wjazef8RU zx&WBAo~(Gqfc%vJlWK5%x1Fkdg+FlJ_RDRxwOC)&0H_=^wJlx;@TuBc)mVr0s=ukK zt@~yny)Ik;l3$?g3acSHkwO4Okg;!E{F(4BK&f^i@-7U@EIxgHFT<+_l5P#sshQ6B*y zC-iV;GSXwj!eekU*Mo@`!5>c0s9cacqV7<8QC<<`k#^!YSpYI5PpH=bRd2RDM-VZBB;^RKVr;momSD1cOo$!{Z>I+Z! zkuU61C(=;$p712Y)a4RI`Xr7k<`ema>c>42zDJ!zIiO@$hkVmm3?? z(tVj-C_gCOpVbV}Wi@KeEu)kDy;!AI32(5I!xR9~V* z!w4h(OPNQ*N8DI|jy@bd1pR{iQ23w>fJs45sVLWdGPvK5dXgtHUYtiTeIn>ZIdho@ z()%T7@BzO!iuPsvX)nT$r~UpJgy-b@gEI`v_XYPsACr#<_d*FwO(XrZJR6*5_$InX zLA)}X*`3PgA9Wwg?1DZLzc=Hd%J&96Ui4@Dp3F{Mmkk=dC%6;W?cty=Jcaxl)PGc+ zLOQSO4jjKh{YTWvRgQ}z>O>qGJQAKjf1Ju3R>u*(9i0dvU;1#EOUa4k$xhxKk7z$xjvBbMn{vl z&oVQS(KznE%sy`>GkgNBAAbKSa5=LU0Tq)!7&>x@IggHk7s-=hvhO(<_qctA3tUv{akNXO5y zVHxSowGUwlt+P;rGuMLl@5ni$EjZ6oZFLpGt=Dd%Smg@SCY`NWkn~Liwk7;1r0q=z0f%BmYNXth!FR9PVje5H3Y(Tr=K+#>+* z^H9Yk7DjXnN%mx0yc+M-o@GmA{Xb*DJgnrJ(a&_**0F%|i1dXC^o~XPBUZe3#{scg5Pi{41K_k$4vNnqIKzVe{Ii-wbt&2GSHzxb-spiS-(Sa42jX1FoQ)n(29T}+Nhp`D+xWgbE_=N_5vVkia(bY_ed(?k z6hJHQk4J*{g!z7aD*3RqJI#%~ug4!s<@5h~=EoPlf%5;*{sa40<$V6lwF`;QO4zuY z`)cwO^jqntl;gp53rWugA5R=i=JU^_A5H8};631f1Sk~1B=2L%L&*R2c)E`et*V;ei0Uv z1eipNNJfm4-NC_h+ezGy!TvPwH&1L}r4{F~YiVei8+y~qsKW ze}ksI9#+MLj%Uwr3|mnpPDG zP^9(TEfnox{x-Cycz!6S{Sd%JJkFxd`!5e~7ne~1W<52)yLPh*${kds* zx4KVmm9ASf;`P1(w9>C*vEH)lT0H;IfYN#%*Hvf)*B9@l4cArl&z-6mH+s2RJs%au zQM-bA0s~9!tnYWFXixhh>Q4;D+Y?ZNM^ZuC-+=-IVtXb596yQ!N0D9V!$d7zC1(o!8fWP=5Y2fk~$I3 zd5IbEwBX1e9*so%{Wcl8*q^rJ_>sUsN=akh6B_V1(C>qi%cH2654rkW1Rq?heTgoV z0!dEf@AmhGdvG2?`@=)(;1Zsn zuD#(s%b3@vkE^pu%sZsH@Z-=k$*0t(Q2&$im(;Uyd>^{M9DZ8G``!Dr`jsHw_nEJ# z=b+C7p9_BjdM^BY_*)r(%+V-dA%IHKix<9!jhgRVh~-~}&R=*n|2pDdv@fi^LA|h$ ze*^I%tbs-%zC`CQF3i1-eBaH#dV$A(_rfdr*ARYT?&S*$(CDR?@~_T7qc7%Py~y-f z{&ncL;xFW5c6`r9pHjnau21;YQwsW3od|kxKAmUnt33wH2QBt9JrXvIqe_TB?66mM zWnD6KzB|Nu8q>Qx*!c5UGW<^Ic*lIjO0}4SoZq&4IzJ-V+_v0#x)bk-R*&%`ZqT;8 z(~;@Gb!pDFhY0F5&$gXygUTPaT;)8!ake?sd=>N0Ss+Ab0L1^IA=?Pxefux!vkg>t z-QU+^+|*pJ{l~h$!v<4k`?=a*VWa9-hG*&8c-!Mu|73Wipw<5o`m5@%R-^ptwVG#Z za9%a{ZvW=?I+SDE{=)Wo=u7-Z{5=1mmHgkR+pGA$o}U|AHD^$6Wp$t1QV{nqeoL!EpQ=l_q5 z3$(af1e|mWN6q2px|S>GFI{CFEGk+$(!&Bg5+D)*sI~x((_OL&P>KK&UA2kh8~(9j zL1sIstX~JMM1BE0X)fJxe(mpf%+pep@p7kR^$EPLAZ%0MH%B-vUSyuJ42vUEsl@QQ^9NGUavRx~OIuDGEh@PDmI}=$CPX zIj+VL?gRM7^;F@St!NQRSVj^W(k&uobr30}gGkvMK_mjS{NbT94Il~S7lEX5i%5yz zGLQsINkbt34p^@l_CpCKrFF&qR|J#Fj;m{{<9-r>UhW?e zP;$624gk<{UPvXVMCCdXEesN1r-dL|Of+VUt+wlUj|Giy@du}LjcR)j?=e_1w4KI# zj4o6^!uv;esY;Ni+lO(UgN36c-a7z(_yasAED{aKxGyt3#sL@JH`q<;M?W!4AW2v* z60X+-AapbBK|2X9IkUL02tb9Pu&mULFzaKy1|s1+SY8j)0WJ}gqVhhXWhA~&1(?MA zeQXcFDYmCKgEwMHyF@!|vQ1{c8K+H^HY57m(^_dlzcl<=W3+V<^BK&R8gZT)SOk!W zz)>~E@0P#bQd4y8b`JZoe=Qld!P2`He?bS75KotG28@GBx`xBLCV?c*!!#htpexda zg(eZN{H(z_#EaGUk+j=G}I z^d8BDcmfIih(Dg0j`X_=;6lH@05bGPbVd68>b{&S3D6-t6J|cYI-~X@{6N?n=ERgB z1j+dmsr^{e252Ggmxl}hFq8xFVH|%delX5oz&s=$l4$|wq4=TrD9R7S569ie_pp3K zb|d}~2x{oTp=s3cU%078qMST2dd^~&;jUJT=emnx5@F0KiXksD-z{PtsG3f>v zcPvGf^+v`GxdD(taGz4dH{(v;Ie;hmr5g>C@38 z&}aOQOFra#CjEHShj2JJ7p0|(r!$3kk&nk6abtto|48&OHCh0cz7&5{Jt`xtJPI_c zpuRNfOFSB+1&*hbM>0nlmLCZpMfi*Hht(qphtxp$FxCH1^bnNoJcRTw1W!c|GJF#~ zpcdi}$T&asR9MsSXVm?1gsBQN_?am6^Xg~91f)J6KB;<<{`ug^sF(5RA5D`drI{s! z6A#8`7NPM67jjM{ zy-|W052R*dgGeWc$OW7GQ+s3mIR3uWbj$@kp4t=ZLw;H+>qU99$=z}<^35u{;yoEW zw_wqXAFjs~PmBO1EuHlwpvulzj|mQUm zV*n;#Z>`e^4GzTki=92`{j+tHV}=@a4XuUS(w6c!g3TXL$%-omX@KKmkZ!g(`Be^zb@wr z+8E--Tvx8?N};~CO0*LevP|!xAC^WlTv(xNOC=02Ne7Y$lF${_6gmMeY_8$Rb7|6~g`GVGNtKi>v0sC&t@P;0?Lr^gm+#0U9cwmZ@` zjg7icPtJH98+@=h!2TbH|!8;OHi#jR@s@xFq^q>&X@(2D#6E6zYC@^^dwKla`} zIEpjR^Gtz|3J{Qhgi5cKDwU+tdkO>;dQH6`m0p0t#vnjI@?yJ;v7H8ttKHaSyJ@%D z?Vin@Wp;EE-f_-u--K?iW3G0>H=*5dMAu!+%qsSLy>%1bJ?*Y{x^BYTQ8DZ7&Ff?O zbhGU0zTd3OLX?of?w;=b1L==%{GNPX^7Y9lpXXD*U!_V+$?{B-l5Vd5cC^cNd& zK3pJavy?w6yp4sF`t^S%T*t)Hg^h>vE@R>+we8Q>Z^HgvDNAx9p)pmvNC2#Jp-ruv z!|~6Dta`M6(CpKiRNRj)kdzz}nsNRZ!i^Illh&XVgndXJkQ-nhGL=Lf?8Bmx2rNL8 zN~Crc&jmc=)mZ2U@IGNkg`4taeLT6m{P#Zi2H?=;~ak4{UhJs^}Q@plBq5{#rR9u|Ik-al-6X_&zu-DX51YlSXyc|9t##5({|o7o-T%-;!T2 zkILAdJa4j}e?dQP^rF7!^nv$v>mH;fJE(qf&_nQ8!b_n{CdB!@3d>6#0v@RL_N&KMN zit{oO*}ov6-TrjPLPas27Y9)4(b~fFJYj=KxSxCD9dbn+&#Am8UXA({bI&{{+!)G@ z6MXcXR2{+dXmluc=r-i9g6)QIb3?W<^i-vWdZ%Qdc+eFg!zy|n-|k)+T5TH7@rux2 zo{2&I~+re{7Ey4Z1cdBu&Vw7 zB!%&w&jFOa$S(C}@|WsR7esQEK++YA7tEl+aTAr`h^u?V;OwrunQ{cOTo8!>QwjRJ z-Ez<2GBr#+&wJL;h4Ll`Pqn$Rn zae)hot%=43&L^});TZ}0-K00fx!~AnGz2+s&^Q$g)*2WerGru+mhq5Oo5sS+T)n3j z`Bnl+9QP7H3dAw)O4mm@FF?S7^9i-l`ZUMSt!77BmeJ2G_N6&a7>gX%4#9p}pR%T) z$JCQRlA-!Z>$CtBp&B%CT05iS`#o`1Q=!w!1?v*h&s#63mo1DF#8<3Wb&NNJ8(IwI zuA4Wtx1a=;-u^Mh8^Y~d-#&+sulhU7-+}FdOAHZ5(CC}KcYpjnY=8UKcb4Cy`o8mH zTbJLxl}$&!TZwNizuONLZ{K>?hkBO3ed~MBw?v>xA7C7!Ulm@L@!cYv)>ISsv(+8t z_o6QuNHt;qD&LpV_0S5TIvt?G6Os!mah}CnS$WCV!v(~$R7Ela9F^nx?+lfG$_3Hw z^Sh>Z;d+Xp;uHbYZCyK4{6WFi>K)TNu48-|6+hd41whWn+tMP`29G|&IMV@-HvXXK z@|Fu&KBfc|0q znf#w^cm)e!pXR@skMT9r8L~P5pKbX0h8g7V*zh+S-i3aX|44tE|Il^(U#)Jwg7y5* zY~OGm_2#Y5%m0@v^zHR;=l@@@p&OpLpO3W{z@}$`f`1MDe8aa3|932`{l|iDd!{lA zWj4S>a0$n=xnOfa(Wf{+TG6I00Is$aY$@0Zd&@gp-r0ujHpoPv>7Al?w!$XRv<>-e zpy?Bwe>Vi13nICp+Z+!_SrEwqp|)sSHf=?Dw?4O>tutF^MAYwsQdtjB^E-5U=H)_V zX%Fs$W4rXSkFe1DNtsZo;Ctd&grxHqM{F<&_o08@0h8b{sTutU!K9Ws z^aE03v=#Sz)>G1KQ@Sml0Y=)fJr_(0CR{E|}CjFGp=K$qm&e!AAWp zo_34rxgL?SAd>5;Cr7g&Qm$vAHSDYhBY-b5+RN_0YkOOw?7y-ej&eOFtpOytV9_ct z$pw^LeN=t!ey{K-)M1~;Ukn7wf=j<{APL8{+ra(tm>?2?BzXq+p9>)6>Mt8enyHVq zEaCo_9K{dDT4H#=!9(C}VJtXDt{Hz@B_biYE5SjCS#ok@l zD{*|brzD)8ESN;kNI1VMfh6BB-Zub}IPTavUwqq#{%z;X&Y9{TARjy(`dXm5fD%0@ zq2HmW!K`9`>2Z*t)2@Y*SsSPh@A6iwcz>lzi#b0=FsaJKdn{HiR)sPCK`2$ut1)z| zFM{`w8`|wNpSN}n@2Mrp;JDGR*35D}sWw&X4F>W2!Glo{=V_IywX+TL$Oo{fK9R}a zfa7sNCD+3dL&Vjkk#1ywBNtF|fuw9Y>LH+H14&V6%r6F#nf)O!<$^|Td+z=anBqKK zy;?Whi2ZRvB?3?c&wU8B8o+T?d{jBZbvqYOBH-*5GvkmQP}eh2;faFp7Tw0U#{rFO z4@%boBwfziQ1B)|jK30YZ@~G@0!o+HZ74)KJtq||LtRjb9+Ut&x%IeedsM>s>;ZsD zUjZ(`lhWq*GUF=FmlnQU=-Gth=QwLq8}y}u!i~6Jo&XU~fCxc&avwZ-4xT&*Po9In zt$yH12lH!t(J};>9|MC&YGS|OH;|9Igo!?YLbVz+v45#{=Fv)^DB!^YXX1bmKzq45 zp&Zcba34%0x`aAxCt$<{P69^tDJ*!x^GO5RJDltlg3u$8UOi|*lYK%X26B-|pWc{; zCi{gZ*heG%Iz2obg})od%(j6d0~3>pL4m)(qBbo;;jx7idB-AHa7Fv{?9v>|czkJr zO;0fV5Ii9b8!c#$U_&eRhoD3IR0f2QQU7TpY{+PjfJBE1a01JdyP;==331N?7CQAw zW3K`b!#ZT_qhi^Tz=R3_V{hW&x^EWg>ZGwB^`DO%lJ=wi3-Td3gnBQ^houA1OY#w^ z3;Xe`9Fe-P{WQNwUVcjMfkvgLP*OYzgjL2S=ex4c{LDuw5a zL6m<{KB?R7IrYCRPm2eU{)&7?9D!=`S#cEls&q~aL$6AzIF^KMo-@W&sB%tcy1QL7 z&l+K-r_Kvw78a6)3)Td-U(+vYhZHD6?Hrb%2+ecIglZQo>Q(E4b_nTLwe!{_Y%V-c z$eH@bp<3dcFcya@XZ11Ku44bjP>wbMCo1>%k;>!JaGdbeF=9PL4IDqWYtzy}ZhssV zkx!pCh83tVEe<6BZt16uq4<|j?X)x`<9b@B%t4fUNjoJCqCV;n>bKQ;h^i;e;Rw>9 z2W8wZ>XbPQy_`HD4M~ro>Tz=r`CmvKmj>dvKU2@x;KB2$W41?>=Oa(ciirC?2}DT6 z{hvGeQj?nAz#U^PL)#2v(f7!nOyp)556Hf#>v;Fk;9i z`UT;j(GHywhK;s4^c%vE(Hh4Bf<7d2V)eLy&{wdZ(E&c8J_H_=S|d>4Xq*^&+EOG= z2tBR!o6Q>fEvsK*KlYT?XWIRm)h9Jt1SfkX_J0wrCm0ma59-}!Lkuc(OZ7|WC-p9q z3loQhE~y^dC-u;50Q)^|?f2G-=&y}^h97oV-Y4*bbyV3aNZ9WYrPJg4K7f?Oo*7>N zs_gOjkl(gZFM%g13EKspuw9A(U`_0v@gaR!?l3q3;Q~-YvTSfdU{H}g)tGo75LI0S zz#`c$RAayBnXd}<_sz6gmG~g-ooTTu?qK2G_57qa$I6k;kZR>9*R40j$_%K`xMTwY z0v60Lp%SthV*DlA{-yfZE}XA@OLh9LV_2|(r>Bx>C_Oh}yX~p|;f8;aSB`}d7f5nEC1rsmb=yh-2Db5UF!4Q88{W}_1xl@Tk-wPho8O+*&881larzbqY9u%IVj zHlISe3npDxRg<7;RCq@0LB5N6#MrOny{aEJ_Riq>mL~)*WK1a|dMl3qbYfhPVV_S% zwEZ5o`?O9#@;UjKZiATsbP4hjV4?>*0;>x5LwL?QYyhA#o=Z_*70+v9BH!CjtKC67 zuaSWy&);b3K+?a6=S1Bb=KVGx>`^K|%Ya6e*lq(zxUUAyz4H>z+mN&`RD=Bi|&!Ca9{pyX>WSB$@9<~+dW%}{-ig$TdM55uLQ1mzxKpBW*IX0 zaX>42l4Aby%8Zsd0P8F7mkTDjo{MtYee8DJdLDILIi8Om1thuPkP9O1SptwG;e8luGEUa)s}7)Kdv-!U zW-Iy|dPXW)SOFvd;Hm11n zL#@VrL?DUdz&3AVqz3m_s~lXY@nE5UF{so;F@A|Q$bOt30!bW)GIU$Of&xscQ!_wP z0ObiJ1r&_0;327&iiK8N=N%vkevbpF#~1NyY^OTyk5U6tFj^nN_zIz!+OfS$>9cxa z4=JP82<)LmSQ|B=k+2rl@!r%%Qll0WUzgNDd@YWpFwT`G)k7M_JCUc=V*ykvtC2FYx*13n<_%U>9;I~fV-)GbNL$ zz){zxOPi2haA4zwjnEDM$n%_s>M#6>=kf~u>%yNhbaFws@O4iV3s<8XZWR1m07!qf z{;%@^D&>8;{?+wg!$jlH)_uNi3-sTv)7Ir9{ouOm>i{O@{dV4e$yH_{zZyx`l-{3#W3HZl;aXLE>V9=WSf{>pFV2QQl{TPY`xpnZQ#09!_{|fq7 zdEZ(Od;N>+H{>tkI6lvRrvT@V*i+$!%z~N+>9$8EjLYf2X%qTCTWPxh(>t5r*@E|% z3lh1&k?U!R9+kG^dbnT_L8EQ3UC?Q>Q=a~!icpUWM7il%Pzm7Dwqq!_Z>u0ipg-Dr zZ$}8%KeFRy$w#;^KG`J@tR|RLv4H!BU{V+hn#U?{`=FJJ)%g zsGX@#;Q5>i=ndGO1(Hnv54M*&Hn*XT{iSN*x9H&Q*md%-Epb9k!nH9#x#tM1h!y`r)zR+mKo z@qXn}9qjVT${640W$#xk1z@iV;YJ_{>1%mNvVkP@7p|wIm7ojfV{9M^0oO#j|`r?FyH8s}?hWQq>jQM+>`Vt2`OcNtHjq{T4$gGaMHIrD|w4wA-c1S-%(e z@n_Xu{%}rGeY17284`^@5Uo|65Nz;Z)S%$GbvzWU0*?qNar+8@iSISq{2{9A3CRYO zG}N05Ai*P2Ac}O?qY`XBH+D!k9N)^&aC~pN`%#DZAdP6(_2k5m$4&E@aWg@sfKuma z!g2VOT2By4fS5n%uXwNGy&5qCc5$9{$Mkliv>5ln^p@Y)3EgyR<9pknu1BNw|6%<* zo|()zs*vL^jC%@T+xlOSj?iyNzORnQr3U~d!2y)s&e5Oe*xZhB)JC=s0DL3%o3_V< zzL;O&fz9!nfcl>3lk@Q8K6vsRJn09X^aH>Ae&ERq=GXRurDr1kg7HxrR`%&N3Kp=b zb5MXuH5dTdfD#4@1eEBh!&dVl3UJAf{5HUZ`~;M0Wk+YB1eLs4_ym{~fNg_G7&zHr zlEH<~Zk+=~f=TtL|8S&7Z-7lesR8+IKndjuCC}NU}044Ukb*su&)jXL6pxb zLPQ1Qm~e~?3XRww0!odr2_`k+I2nqn8SNiW928n`o=(IM>I@Avl^Dg63_t`qEVR!+ zP3V#XCZQdINiuALNgdF$`h>AZ0{{U4iGYKx=`TWnl( z+f^-NznnTP4I}-Ebg|=S(h8UrVXd80_o%d1G9J#xDxvCOlcl7jZ?P@k_!aw!3;mx&)s*u+59cqyUvJ ziW9J}OBcj(=r!ZKIEHf9MAhIz^HoC?!?3T4=ZrAz6*?+s>=AW^>gNpG&Q9JVteGQ^f>xz>Z~+u;ru{{OsIOs95U8cUauiBbKM4!pVxB``Cq~L9+WcI zdjRRY{sXXiT?SA;bujsG9a4~<#C?N$>B)rGp8&xy>RF}Eb~ismF>!xiir_wkUWwqo zgwjKb0=*nRE-M=D-}p1K62bi(KPLA>d7t-9Wk99gC{#Hb?|~9n>P9(g7xwE?>Zo)8 z`7fyvBZTc2lSj<`8lJDz5piD{8aXWOweZ}*!`NP=t0_FUGf)761e4AsC(J!Kp0lY5 zaraUNT;hTNfhA68O{-y3#`AePIcl~W(8#FNE~1}Ej+kw*PpKnP8_J(d9W>h(p^;&; zEsTC8J|wqN<-vH%0{RA+N#d|{yNJlR)Ul03eqQ?eDj;g&uf=Wk>9&cR?{iob*5L7xOcj31@=x^b{i2%uj ze8A&JK6-BQPr(*Lq96N1k508p#r&;|@8En*iY~%y!sUzNJxsWSc1(Ld!^A>j^Izm6G)7U&hQoPV z?*mDj_vQaH;k%e%f`=sGuQ^e)Exc|c_Dk?CY{WuQ(Bog&{t*@=t=1|2Vy-W=KN^_F z^)Y)jg1%!qJcLQOzNtaIIfd(XZa1N`N41aUKW>^zxU%e%xUP` zKYm3ziuT@6o|Cvh$o`-YN-%df>fw8DZ!*&_^aasBM^tG9<-Q(&UOpUwO3%rM5&(qE z3-NI!)9($V{AK-w!FnzUN2UF)g}a$j1t{j=;31^`6THTytn zpUHk1n-YVTu z?_;W){})j1Z`Ga5e)E@{u5IrR_aoLhTa};D%J=ac0syPTaoOOK0R^B{fqVqCY_Q1z znP?MeBCz!UFy*GZ`B@(OZ-ZXphv-_smkWO7c-HC$FjbyF|G849bL@w0cR;8t0F`bx z%NEd2{~~$`kSJqlRL0iqc4uLSp9797eA(dLA_bMs|AM!BAta_e)`T~AQCo|@bcdYTi`5B_CK zuwcOUcS+DxQ*f8~D^#|78=$h-JX?zK#@={~hwoim@m#G^v)L&1AU)TU5<#Qk6`)ZL zctj6O-XO}MJjWkdb<$UXN;%~pxqYU|>&1EOq<#WL2sZCj28?0|PJ&CNX{hTt37(M% z>}5l_DNUZz0Bq>4kMQ1KY!Y^Tn9)*P7uo~{cc+_TT-e$pHf!ZAu;a~XF5uB)W92*m zrKx7M>T_tgDdofQ5>WEp1(>8YF4o8x&j`U}4bE>%JQ%Lgu+Tr%FkiEPh5K}UobR

Xlef(JzRFhy1WF^yOz4Ke|tj*tS)G$b|Bpq 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

f_!2HXBq99@kmUDm*8Kt-O{G4SAKoF5 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¨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

j9~WQt13>F*`J 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%0A-Z-v;|jcDCb$}w6#Y=KNn}DVFUd| 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 wa@DpLAWnzwTwHhhI!i#( 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

o9m_#7b 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ν5nLf=aUukz1 zqn!b@#Yy=|$tWN7ZPDtu?29S;7B*;{^;&KKHsx~A$JTpt7Ld->YT4*lx9(xH92j4* zmZc4VErI%}9K@3=w)``wpKnoV;d6xTa=K98DBH`@d-kBx&w6mYhnNAi4#ydg`?cEH zo3URN9E$ulGzt!9p8`GdYYS0K|$(YPa5> zhx!NjW`AKi#v9L*s+r__tVyAb+?{+o`b&W7CTH?_Rx^imZIExA#YVR_8tI08NI$|0 zBHAu zPiZ@JlsCq-EsHq6@@7xzd7NLfYo??m`M#)|$A+>0st4p!%XK4##a>0CWP;mwlmcW0F8`YO1+ML z=|>bV`tu?EULb`4QKA#d0E6Qc#u?un%JYZVHspIYG{Mqwd@=f*J7^>Um3vX&=Y3DR z4GH^83Jc8XOCI9_$g-~_Z| zj>a2!DC_th)CstlhC<9P5r9VQaeb!*Kq&TvunYF3(33hT?|d%wl)l#l2oicGdVqm) zP3(g2s0y$rIvqVNkfP8_7Vz`+@F$}ukngMR=c5vbe!Hh)hmqe_I(jMmgftwddM8Z+ zbhPMG%x)2&N$i8n4i-R7@Ig~R{PV%n@)nH$$3hRpeF&@JhYZ0aa7s3|i2zlo9>jk+ z{9KS0Twiy8JbDc2-wc1&H-Y*uhc8A?!+tw@(RZ2wh!VT#JEb5UXwxay0+PZLDu5#2 zG)4}}Ilj-j??XI5qtF=<Aoxrb0)M{<-iop#uVr&;8-hAq{{~SV_>h*~&>D2|cI`r~us( zry05*Kbnvgzl3q|J;jj{)JxG1MfM~9`LN9SQSN;BKHfJ25JEq$ZH85(aXj&o<@NsK$QxLNeKgEMD_o5=#Rq$KFzuR5a~aU z{zdr9K`17LqVCTl{m+A6i@pH+r(rGnB#!%w!RLMBIF8S{pN<`boen9n{c+1m`;m^Y zv|l1{>FMAB#9xd(8#|;^xsPBj3>SP+xNbxI>%QsGLn!|z(N85FMEs2Jh0uKpjq}r? zBM7UpNqMhI=i!m~Zi&FgheWzgZN;R=nPbA%0D&o^dW(tornu7rf{(^`u=M;PMVo4r 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

  • _ygD1fTs6*p)bdvm=yf2$QL4L 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

    7r1F_|HbpSQSYBq<>5-Uc*6fWZ3fA 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

    4ND_W6 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

    =!_n?a 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%0Aa#L}0-&O!e+_2Jqm{(Iu zON?~NNBzY*n#z?5r0^jHhbNU!7OE4Qa$5lUL}zouaG$p%RtZy^u(2PiF&1OJ?T>F3 z7KO2qBX1PwKw-DM-kgQ_B#4A{wmH7soPzXC5SpHX`?V#!(wK(!w}+|(S;hxrV!be1 z#D`>9G3J>Fhu0aiYycne)xva)b4`3j@<47=c$qO788Ohdf@l*(bZ3M)k^ zf)7^l0+9{|_XO6T zNb(hvE)G=MMu8LhA`1$|{`CoM!7?C3!GY=Wej)i5Q>6 z1);gHJKd_#3>o7H0BS1Qse^J89neIbt@3h?lohJwMFNfI`uH5wM=sxJoJm1xGV+l^ zQ#r~JP?bE;P4%Nbp~w}epIp-|)oG({PiP(LJE(4wm%!2iFx9igU2acBJq*0sA*{A3 zo)o3#!R`)UV9ZV+zp)O830>zJj$Be~RaXnsP;aNj{iSeqVyQ6E08o@zAc!`=9w-hC zNBI@e8C*#e_tTvt437hB3PXWO#`q={b9C@q?JhMY!mdxu7e-eB(1Ai$Q6n9IPZJB# z9w{Ida;Jq8)0zuVe@LBLnjgYJxI4L7Ks&4Bv!FqO`;Y&x9~Z~Cgq8?pZ3w5pyKubH z7#l|Wp#{Qd7gnBcj7B*YUK@bxxMs{RVWwUjML(bvL;qR7Oq2r!Xs6Pi+?azffi;7% zj%RaXQ${O52z`{$ANdKa7=-p0h9?S{2QhCGQ^cHh|9bMueJh|p%gkxzJjyQ@r?m*E zcZE2;g+9!I)!A7YsK*@LIspA7M}+-4u(4u}4D~wMdwG8=}B&J8G{^=bfJ2G87=Kv55tO5{}mftY|<2E%qJTjyO?Lz^ElxyaP%hiHX zx-Vs}088KoDN{{~ma6?>lgdcz5!OqS;8Ic{Nyl?HIy5o}?T{?fIr-a0~pnqlh(5b{=={_``lhv!*W@Teec3XSU8W%Q1M*0hX%7S zA7+T7l0eoR6M#?D4`+tZUU^Ay0LFh@JTKTMg8IT)N6+sGMJIP~>A86R7e@y?+ylQ` zMQQ!ZdSK_ju%q8|Jr2M|`#sU44mQ$H?ty**ziK(>X(&e}2Ak*2^zHc=x1s8w=Cox1 zoWj8oJ@KA4DwI{)2k!-9YtB97YHyq@2;396PP?FqKppxW2?o%w(qdx}?iam3^v5_) zFbjnKxE}gFqInP8${dJ!OusYaI*tI@ftYUu(hk_}hY5Tm1;0TfVAWwQ1LOXDBXDS% zJG6WN#&uevw531gL;8TPFfQ)MoghzJ_ zEXRBdjg1bz5&1)9(IKZ$UYrofYR3E*d{>mD@K&f}-EtCFRn;g=Jre7rm& zVBE;{8?A4$LJ<9x%Om;d&jNc=paAj7a4X6~If{>@)^z~)1IlNEzVhcWt;4y(xFl#r zt}h8tB0w~s!*c*NLCU_vmQ7lR>$$md39f^{-BBjJKLAK-#_uqc3h8%XYkYZpoJ;`0 z;`nITi_8V#;mE&1oRcW-pz)lk79igmUFr}JULT$rpz*sfF)vzz{#DEKlj8)}YysL( z-egw>hUxg-5|;)>qrY%S%ZUi@5|-;C+TCTW;6(IOHCA$BBfOdyOSB;;mX?fl5j& zo6PBG=V!4^;xzQ@>ex)QX23;yG58;5%Ih@S*sG?g0o;)tyC{^14hMeo93sL?Ny>@(Qh~sw87@5Oe+S}U)sFE^8ukA%{#uL1;SuRd9tX+JL(`vL?U9aU-#y1%zLJ3}}yj@_tj<#7KzUm*#u+ccUl-*DZg z0?@Ib%oW9avHE12`XpH0tJgz1)|qlRro?f*-WA$KHb6h`Qhq(cSnpf~%I$M6Fz7wIK3ru?XrTi% zfJk^w?2WF|rvb`0Q)0@q(2!rsT$iyExv14-YqNPkH|e(iVCOAY`U@0*H84AA+O#fo?Z z7np^L)jrmw7x_W8IXI zVxL$qAwH=%MCrV*n3S|A$HL!IBubTI`55q%bg>rmukRIDH}+4?>r$6XHU=d9FY8~G zx126zq<^#iDLF3x8vERN#ln5Hey^NBIsrsB!oQDwC_NARdF*4!f<1@_f*UhL;bqHkjU9&NTq|S85cir})mr_Pj9=CpJk*m{(E&3fbWA{40knrB%-09GB zhyh0r$70r%8scMya|HHR)?La~NPkqhTe;dp*tyHOn&K5d{vi#35|7`Nm=88Fg(QQA z%Qie0Z?klu+<4C8y`&D$!JDKjr9C>{FPtkR74`-PN=X6w{kT%9jneN4T)2f`V^_xZ za`+vP045~>FnL$-dqq4)oh!6`D&AMDE0hBWA9gNtB1k_ZUSc;Of4#9++#SO2fV$h* ziF$X2YB?3@J7pjeHY``~HVCj{gSywneurG2h=lPT7_JXTP;OheF1#1{wuWoN^qk%< z*CiqdQ@Q;j-W#I;kr2Pj1(<~R?Q(4(B4A&|+~Mvq0nnT4p_Pg65OqOLeggll>(ru?~sm)D*a|?K#`&y+5-uM=eaiK9N&b z6bH~ymh)8-OnM@>t{CBL07<0$LpBK}r4*BLS_GB;u_Cu6PaTSUd`rGM3|43r5`%zT~Tl!x+!Blrj>OsfrNpR7fHPBwRn; z5BkS9rjQgon*Dh(!h?=xCTRaDBRd!tFh2dW2Zj0B0FF|w+6YL>S%LVPf$cfCzJBLs ze4d5=l2TG8`bDnW2DvE^>0k;(!a`y$*OJOdcOgEdc+~4qpFNxmkSUn1_QUx0`ma7; zap+&qrrv*~a}ENKdY?r3?6hbv^rL5P&&zthiFV3*|5x8?fExDfc0b7+uP7?ZP*8n_JsG? z8x7hY+-+AQoq!|?*V%RUW)b_JP)w?kQ9cTnY^T{IpoB2FWZP`|;L&CQ;Q*AAINCS$ zU9(YmE845q>+G#I>IJ~G)j<1!-SMqatUGsyP4#b8x5%4NZUYqH*N5?a9$jiKMZGf< zGt5~5?9;T3G3Xz`hSdx;Xg=rb`Fe?g`K#yYrD?DXJc1Gu?K24xfurwiffJJdfJDki zrKp!r0Y|xQLVy&I&S0U{JB>+oWO_0Hs3ILts%6>L;M7h{DXCNihk)QDGJ4KR~2{Ff8gJg{&djS#|jd zKU|PXFU0k9f=DSBYTu<;B*afsLP~*1ok~ZfY}A@^srCbGcf}erO3u>Ro{YDF8{mUxSV0 zRgiMbkG2FLod8e)@Tl*I|AqxX)OR|{19VC6kAp*iDd~+r!U9Z6&qR3uNqz6>>IW$V z^&N%l!U0_0^1r?%AgRxBA4uvm^KW2N_5Y>)pO}_k-giRRc>L)5MBvd=KjJ0tXSg+*#_T~!skPNKmq-FwPRtVFPkARdZE)Ea@DoqQg;@fcWsLnA& zl&1seJhU51Ol>YfIdbtf8s*5<)fm_d#0qhoN*g~j#1T3UctexRi;!QG3;2X%aHd@kZQ#h2Jq5U;rNIVT#i;?fJvQu8|(m|qXuSL6!&Yt*sSk~^viAC~65%}iqyY`_(cXC0PT%d>kC8Ze|(d$NXGSun{i}}FkDb9ge66)3dC=ZR~bpb zOI`veM;K3efiX4+aLo2y^pWzBXkZ-eMM9a5`)n^4Cr5By@im6*;(o;|3{jwi@o~-B zSXYa~lgzw!|9&Syq3{f$1o=YYDP}&}W3IziBxHj=*psf;qL`oYCB}H%Hv-*6Dj%OM z3`6{S8Lrt-o|KWsCeW|&Twz22^#FLHgZB_OwJEOyR-T@gUkb~VSOCW4i2xL!1d_8I z{R@-{L(soD>X_0&Xoo({0*t zWZ)39mBRQ|a_Kh17}l2lzfmtYEWx4vIo!wu{RiE`z__*``n5DVxhhx228=qTibubg zUByXufr{(WXWJ!hSPvpV0Mxg{o?K4;sEyBND5w9p-oey;{Q4(<@VwHB!5!zmf(@?Le!b5bjtv|&?Z`jej}6Z1^UwK*%dkOInI`ne zfr3%vz`~x3@jP!UZp?5|e|(re82z4-7?w5&{TiPr(793oP0=j<{LfIYKB(zjgo}g$ zLXUf3^#P?l9t3#Ql+n}!=~Ul2|A2gH1MfL!a90?$7xwrqHsG2#vB!99gq8I?@ede> z?3SK0|6vcpPxPAG<6LaCjp%*6$5`}R=$iza@}uc$Cx#bVYYHtX{4QsCSVu zxrqQCQc4;sq93~NvW+Pw5hz6m3Dge)<(3PwP5=${Zy4%dEkJR}^q)HfR?Uu&3uIQJ z{geXI;_%cCI+$1*mOAL5A>>MKG1aF|i_rRB5SkPa($N3Jm`D)mG+)#4-avpI_c^W? zF5QAF@Z5?|jN~Fel`BF&7bT`f3UMDPUO;$$Xktemhj_SZD+>AH{0bl78lwC2H3R*i z_1*s@+G#0nN=-gC3u!T`oO zJUdXRB3-UXy0ohnD|9-DxX7NT7n>*#ox~EfUt=yxx@y`cF40FIeS2VuK`ttiHbU z&|=*x)u6todBnp$>D{DkL_ICuEzV|?JMP^f?Fax|@orUWIMi<)vDV5sDAW$x^#1n? zewQ&zz)85RzZV{dsT?5EZ#=SkR) z_&1eDC4d+Fi{9Na07v}e%JmKbIHq?k>}!f&{tX3JqQI4z@-(ij3sABYC?#1aC;eKx zfhTb4N$-{z043)M?Pd)MG#;GX!9K4&>QTL~$Bt_TEOX)ZruCw7pF;h6Nx9!5P^r~< z7~v22H?7AIPDsCXo{7-``iHmzT(|Uz^D@%^C6-WHC0NJ772|+j`knF{*nd>oaAb^w zZ|iO6m_janS~Wa2y*C`oyN~x>%H09`vh<{PtAhjOn6KpYs&_2bgzyRH3I2MdpWq+k zuR*v~c~a72C?7i}QUBlZo_B6W`n%5a&P@_r<7rQO*DA>8JnCKU0dSG-)##w~N&c63 z=g0lV)f0$hXosPWNlFz5^pJ`9tkfF|Wmu~|3C=*tOQd=J3vHJ;Ck_C~*+qgLitRG->7b5(qbpyY{?h0RT zH5f~Ed>^=qF$MW{s!Pq$BHpjV%f&Hm^qu1?BpnQdISKV&jwcAM|67zp>Uz|3hjh8K zQK0^6@&*pq!5=W!Mln8?CTu{yYrKQPdYM3~U4bRAmwI~w%M5aXcb!vg<=dp^5r%6jiRSHRv5%zVmJf)~yd+?R@+Zq_n6LcD(hHssh`i{WX1#BMNMCrr zvrZ@gW3*4C6Uf&ICZ#}}PQ@TE1tNJqkn=6jNb`Xo1|~7^huKaL$@|=S9qlm?i2+0m zG;+Ova^6JxziaKvo9GX-ES>>MEI$L2x?5I11D`tkrTNN63?O34P;49s}$sAdXRt|EZiuIO`9jQ}S4m6rjqjSbiP-zrb4dT4_gm>1#5=L~tY;Bs@idR0 zMLb-vNyiZXN$j^4<@<#9?MFPoJj8#Xyu&|*_z#_TV=b`1QvfOdzzom?%`3gtB{Y$Ol14^9$lGbYd3hl(b zR_Rv?EJpbegqh+IQ$k_@(kt3=>mCokhaOzAX|US!*4+rdtUYJZbL1twA>3&Z*!r|| zJM6R0W7e$_-V69goEs5-f`35KVINcOQ?BI+P`casg@!PHuX2r-bRFsF2tTgeui!E1 zJ?7o-kTo@=BmNQZF6SzQAJFcQu0Z%+97cEqYr(C@@mJSh%cZvjkl2`p`lMNnQ>uEbsw zDJ&gv4vDniak)bZf|v1^TKf=gi0(Cahw;7_+Qn@($nNHLAU}aaD(c-9-Q(^-zHQtd zw=MuH*Cy&=wLYU6k>4et!?k@3DN?pEtf+K;JIss3Go2K4}}8s4iOgxzZI zjyAwv9IbJ83V4rq7luOyzMrZ_hsOu-y;WY67#_uUVj#OcA9ipwt2z(ygU%iDIp2{A zyZC-=&)%K{2LL9KQV9V`^nH+7mi-mIpJ%3kgRJbFNKqVs!_l0MV#H^qz$E6nLp$-pL=r^$ zJ{u|w4@Y}vR7mQsh!n~Tmm>d}0HjXWYyiKC(SHUa4Nl~qEDB?s8@~x8kzx{!m_y5?BYqHj};sBHUhi53YN^xX<2g;62DZAggiOH{5G) zLpp&+^xjCyNEgGZiQV!=ummbqBVT=@LEen=Z|4Vjc6=&TA}jaOEW`0HgfEi>q z1tJB{9nz7H`0oOe@^HP(g<2&r5ONj>2?WlrgR|@4>^k_{t%I`*?C%C7b%IE$5GUoBP7n!-M|~bc_y^kW1zZ>) z^nI3rNGY(W6If|4s7Tjw;FkhXzGYcD16CNAlmclc2J_9n_u+cX0--NmmjN*84%ojE zp!B^!Qgfc!=V5#}FmUNdT5`?OxA-sbFT4IuQ0sf{11VAw*wty-_?~I}yTwncDQKk+ zrtbujBB$L)cE7sY)9zmqOk@3F`TiV`gb%y!U=jgI=@~xw)2Ak7&-3k{1C%d76n)?*65XgT=1`xynOmZ#KqVC$`}mLIIRR|ssH+620|$lbQh^Tm zHoD7-X|DmzBpdyNa?wKA+Bnb`6CdJm5ika!Z-L{2S#HSl54~3(79Ii730A1>AlUD|?0j6x1SGusyc6k+r zyV*mD8he@ARjw|vL9RePQc9YM`s%_L#OLW<>7=YgfYPqSn$RrRt%(((=}0Gqrb$LB zEYL>Sn)oclGvMe@yhdK?0vt*}5eb%oP^{mikTiqCb>KgX=AqsLQ6HE(z-=^_1d!jT zHW$NQ653)cL%vJBT^t=GMV%eOO0;*#+$t>7kgp zIUfibQHpVu0UW`Sg3)-)KLUfw8Zpi`T>9ZY()}IQf&+7a2Ki_|6rU>6LHvr4)Jz}l z%M!kFQc@Yo#C=al%|)=Jq%{ofFd&J6NK65V#jgv&RU7JEC(kuTxBzy-Goi}tx08?h zmjtE=0{XMaoWjwEFDaJrt+3>ZNQC7kH{~V(D7fWD4&p1r6PvR?#)b$S{$+iMaD1Yf z9YwyB%QR9f%Do5u7N@odXy+SX60U2NA=`yv^dIxJ2=%ViB{{zX;DI~2jSr%p=)_Rg zNz_ju(qRIj#I`|*pA#LK$iQ=IZeUb61O1v87~PhE5Ar2Kxt)!Etr2F)#jxv)x#Cb6 zz=km|c|fW^z7+5xU-3`4(^L?tJp z9tsaPkq!l`LL2=`fk?B|(WRukG%GM#7&IHt8@Q+ne&yRCPx#NDAx8mBKv88d!lZ;m ziYf#k4XHyv0^^(bMvOZ*si~k1{R>QMq76V&q#0_!3R2^+DDD#gvCk>s0USp~R%-oT81>vOsQYZySJDG^dirON?f=o&UdK zxy<(F!xbJ3JS|-{_#-kj$B+Es3 zDU^>2Wvowb4mS+-lFPKA9f;?km;_7Dg?txQm=dJ+nPL)i>Bj6z4zAZK{P|29;>;x* z)k7QN%rzTa5=pdugozg-5s7Oq7`Q9`xzEYCx zj_w$IF4mtqPR(rb0V5vkjTDxO3>vp-9mP?sr|^`H!cre>%2&~Th!8Pu%qHVP69f^7_ z49^RcpnqX`4p)SBE|lkT#TW+yk_af;Y*t2x!7>nOvr)-Wdzf=@BSk4C_CZoQq z_#MU^)JFiv0$2tr{lZhld8i+XF5(RI53Z)fX{hh8w@IFAd)}4WR%k~hfsPOX!AF%# zqcp#2(TvhON%!8Ej}jgLijii0(T(2 zCDtTuM!6^X8?9;%`L*kni(sGhZgi>zxPk%>w8aF-6uVif4&mTX`nk0N`EOPB+Y1Be zf2>ZV_nRZiPHv`+_n25sV7f|5Q1xzQ97+iM&B_h~AdT{CrO_dP=rh# zV9{H#hYx1h5A^yj=rm<2}RQ>i9s?Q40W#asrSQ04DyF_M}7y*KOW0gdOP} z<#B|`#TnK2CT|1U0ALe)R=W-MH%<%GbGiVeW6nd`5eL_2-3RCdR)MvWiZk933D+w< zqFoci_$ZHh*LehF0aVgZKK6umi-PNjJ)_+Ydy==5yI|jvUUcq*eOK|7k^mwpk6F|& zUl}Rs;>rUkU?ngH03@W(wAWz&jsFa=6%O{DPqo)#NS8iQUV;6>`A~U@_kpYDk^YhM zhWDfcWeufOdsHK(sF%D4VrbX0y?Ye`v25)w#J}Mk=kJh6@dB>fcv${v{sxB>l%A1p ziUFXKp0}v~zm3^elLxC<&MgwkTgM#T0l0-DV^X#_p*-YWYLSA{-8c-wedllURNTKu zwClCaGJqWI3h#n20clZTC5HoHYrn9>^np5hU%t+(wHF|t?(C5(kndUtK$3w2V8wUE zMlRT9#(i*UHu7EX)XDP&e?Bcidxm$Jw8|#eaX**ViclnyE|XS=0Pt9cLdy|!_(zNBu#xC`eR3(@cLNu2Q&g-6esf?B${*o(xzul6*{jm~@eTZe@LHYf z*%zvEF>cZ&;(Datu3Q=0$^krzT^myaG%k(a7NpZH{&WIJ z+ULq^sD}YUo!}5w)Ef$ve7tW0NdLkAL3s=D%>KLA?ohZpn8bi21~heA?H`rb(OxHr zLD`qPhb~Yjr3PDOYa%@0C}yE>MWdy&UTTh?ug` zUj!t1s3+#v_b=2A?_V#0Pc$yCqn-ap`)B113$EI{FO|1^>m;p)u!Ql|{-B(M{WlG+ z-CzNZDKEp)b-oBoE}D$>2U|oYbOOTVKg5@m??L*HfFv(m4nCMgLfDK{eiDdj=s1|EP??0)Au zjX)(IKzclOpQ9uEYsCkY9@Xwqet~>R*KFQtibx(@y&?Wi?Pf{S@tpT=ur9&#j{!+X zE#2BDBOKGENC?kI9@h3PJqK@9eqlA3_#M#T(hcQq)~=Qs60otWlK|3<)>W~Hj^7#Y zNNit-0Hv$EO9HU`)qp(#&T3aGhoX3ndxtFoarZ_e=5BM)qh4n>3e`Aa&b2l| zi6&T+^(E~y1uL_*7l}}4sR_1|;!7uplyb$^cT>O5hhV&t7WMVLtbaJ@LfNQ>`+N|- zD|*+Ye?dynJ>TrpJ^=QoaKT2(*FXKb*MIcm5FhQmhr0)W(Wc&i;>x=~Bm$E9{vP2c z`W)(m@8muc`Ud*$hkdGVv@gQ_jQ;2LKZyC$8-G!NI9xuLS4uAJN9pvBm69PD)8hC( z6++2>BvgbA_!k50e;V7x8Xfz-;%<9~=mSZ+(eJ%tgS}J0`%}2V-s)n1F98>92J*SJ z=EVrtx^-rC0`YFWxe=D~ZH}W{A|h`I!OA|6v^P*6-)z(R^If+^)Q0#L)DsCbB$bYm zKoaV!S8L;2P<~Hbjn^QZz@%+D%B4W0UD2K97SyxZ-DF>k_|@tvc}0Rizc~WEhn1@n zjY$FQdqjr?X}%Umia7$(3%CMkH~Zs3`$h~zN&-kBtOK}GOM*u_uMcg({M3b{LOQu> z8zy6ZRtZVP-Q4Zp1d?(Z`GX~B=ZrQj_v`;(0Z9Oq3NgOqiY;jYFeO1G1|&flsQ~HU z0+6yZ>+&i7G!Q8t>*5b%&)Wbld$d6P!V)?rRC~8W1Ck4KgGhl}0?`9|J1!8&x{SXU`^io_O1C#zw0ZAzU z>8}Mq{n&cwpf9~AUhun(%NfIG8gDl4|4rKol%1hJo!}IkU)|?V_x`!3DI`^=fFx$q za9~V85?-7M_#v>1ECZAN9FW8Sp&xC#fk+HYV)ZaE=}d}AEWHy%I$_UD#ls6~+f3r|5K$RtE(DI%wG9t}^~V_TD`{i|XG0owjy2 zyCMwtKtg76<>3+-AcO#c8Sdde+{1Mq?g0V}5FjEtgGEg%>WC=OqBB~pX{&Wq)Yz&s z-l?KaTdVQX&SPtBx;MXlp1rr{oV?EQb>@7&&pa#8D7D>fU;Fp^{dnb%?`z%HtXZ?3 znYG^ed?#W46Cg4M>+L3A6{~8o@ggph2*lYEEOsZl=Ygc1<|=ENNE`Msh{V7oQcRj{ z(SMMw;t8bLtS=U;Q#jyDFR-f69w}K6kg_qYS`*sQEcb~LQnyugf(BAE?a?#H; zoJ&dAhyqxosQAE5sy=~Fq&PGlcB48ES}Q2e&GpA3{}vriuSDe6mnm{CKAe;5{2CKL zP8KXW8tzhRQSLkPzF=(%2PE=tef1ut)5AmjEim+3qf-c(G1eq@%yGF0MrQm~o}E z0rm!OpS#8cm}J+B%U}z>$Cr zp*e1qng1~k`m>5i3%Chl0X}q9u38jZ(LVZFgzKRG6~itQWu*k|Lhnl{@=>olsY-N^ z&#kT!aGz9vVpRdkv3Q!N#oT!iiGf3!Ia?Xt9M8j%u&a~PRr*gVrier!QtxN5PKkwj z&Kj)KEn>$%eESho=1C)S@%-{j{c&}e=gvZj?#pU- zrb`<&i~MT0;4=acVpnc-Jw-|63sk29{od{`cP8NacB(5yS{KMg+bD!dsjTP>fjgt5 z+zPbcF<2rOW>d`(PG5`@DajNf-+XaGE-75iwkoXx6Zyr_{6GncD^j^dibJ$64Qjx+ z@l*IAO}L-dw2Xqu3JzAs_*>&e0<_5GWIq@A&9S)zN~|ZI(Z1q<{_ALHQ9;Ygunxj%!WdI)G5R)=;0 zIwf+^9zdnioEYe!4dO{1!#nah0%J-W`=FiCO@)m-`ajYs=;+ptjpy7Fy;lkHH4RS> zd?_wR^JT6w-lUD>`O3tc!740VaScX&!Lcm3g!X5s zV@&L|M>GA3CNYisrHthYb*%5|NHg#L75dIOrSI9VUl%JPeeL!bMEdGO*vLzEJN%WO z!=}3ZKVSI>8+}3dfBR}F!a=v|zk>hB98~*H|M`__Y~a=8ocPKvq_X=%#j%HP5dIO689x(E#StS z!Mr0yqZ-T?N6w*xfKD(e>w=9bBGJ62jmcH~EPjMUz~NMj*1?Rz66$5`5_m`J905rs zh$k0mf`xeiS8M|V%zwBV?1%d(H;!oR+mQv1KEyoGEA>ImnD=mHNMIAQbCTm5MT`r% zU@O3NFraC6s;Wb*L%!ss4%%QR#iaxfn^H_t9-6C;?-lJ*;TiyQ!`2ZUBLVss+qs9KG=sB#GL|pGWceXp+f#qwY zVO4nE%}HmdA1ic4EkgSn((@EjLLwkZBI_;;B;?y}F49LQ@cWip##M6IK=&8(V??|s zxN|J}onP+)M9RVQtW4*NlUO(X8jB7hDBnnw+bJ%}DB^7~=ZIw{+Tmw7g=ysHr#eCf zftrexkAALlCp!ZbtSi!_1c8*bQgx#L8Cn-6wDiMzwoDl>_C@*%ccRpPI_3o@x8_-B zCs^PP;qW^t#7ZrsEHn%4z_pb#9qCQ>c6Tbu-4Jb46dea-#uk4PuIq@g!LM@YePFXP zp#{IMa=khw04O0hsIw&;)Om-KD(t=95pSsrki&y(Hl({YT(kKAOuPp)I;cAbDa#h;mi{OTnPKkIX(am?TAJI$K&=Xja-qu61w3HAr4jr zUv4%Ch!0T2mv024;nXUa6zWs9bTQrfoOP_ zc1S013uqVm`(w`zkJ#w1e7|v>hwBEobdv$#!+0X1{=O@*j*hVgFNZH{PPK@JaNhhl6_U zx41V^bWRR6I_PirJ_uii{k`0#J#WVV*0VAW#G{`_Piv&?5g1P*{R8a{<57g)(O!j$ z5kMsY3Q;n^6zy62yAc2-?-`*v1c)Sf!d(I#U_US4`q3Qxo|VRjZ$?J;)TtUtj5pbbT@u3XQKV1-d1O-N&hgg#hQ{vzr!8Y z%p}0VaJMxF`ECjKIRsMO6z*~6BmIc6g`bA-)$T@4NufSrXL=sO$Gm;eN<~=Pouu)( zUf88BFcAhowM3-@@~ho-60X}gVbk+^TK=AJ6!+or=zf9bE*|`!5EPqAZ9M{Whd^gtf!2pSf&fuGcVC`aQ=>k}zQ(RxMW_9pCqM*pIb{XgY@3Ez~Vl;p)= z(*G@=!_0##H#t^NN^75JKl89|Ybp6fSO7<|2ivXzNP_*N20#h+4;sKE*x$?V1D&DY zhj+D~+L*8M+aay{AIa~8KaDV7y*BMx17Z7}@EO>Y_m1|{3$6UCkix(5-qxOuVC8sS z4xq*A>Uc; zMfnG?%mo{B&Gt(8tam^1F(o7xX6Z~hsVlhjk`^l^`QcOEJu<)~@3i+_)bk8}eVRRh z&f1T)lL7%sKhjP__?@*|!s7?}2=?ePt5AN7_v`rJsn7*@sdDl-_JyoX7)L^^-_bG6L_fZ5G-c{* zOkJt$5wSm^*7KVKSa%n<4dLzFZhc1@VP7|Qsj$4B)+Oxw_`6k|$9pCekw`&lTXJu5 zKhnvC+m#A^PsboqU2=D_0r__%_v-ZiwIj7RebA-vx|RAm)ITAuBxygVEN571R8AE2 zP7kQ1?+^lBicA1CrdU_T0X)hoB{3k00Hq=w@k|jZ3nC3{FQ}*Q4W@uJ2;jruT6}+X zvH7h+0|67Aibz=y>7vR=b;a$&kiSzI>2C#)f-g~0Qolqo>C1qmpfEKgiE#+TR05WP zNaXsCzN0>88Hf}N`jGZTa+d-?!u2u$ssGaaHN^<`dpqw#+GonRWUGNaJK$V#E37)8 zp7xvi2D#^o5bnLHU%P<&z!Z@fh;(^-k1eFIe0g2>Pv{@CF8`9%YZR3Hg~KQU*xkus;b5Z;Oud`XPzH>MK)+6auTs z?ohG+2%xD>!M-xLH`s)F2r#1Wk^SigwT?$SaM?!X4hH*!9RbqSz3O(P>;5ivE8_R* zdx9M)op z4(vxHikpU^94R8vcRK@-^19`9D@$PCf*1H9ZVWJuK)6sT${CLPAmoT0Lu!%#Vn9-t z=Z-yxq>Mxg$p6zQBrzbVD~R-EK++e0NDN5&bG8#iV#-QPX^B}Df3f<>#hZ%f?y~+J zA}qOVqkX>%t?)L&m-Xuqmi{T2MCSmPK#WTu2FG2R2bZ3MOV7cj=inc;4qRGb{@Z?N zNdc+5j)S-^HUlDk0&s(X5VBCz>9OX&ZZk?dc+u#z0El?JU=T?3m)MNr&PzC;BLL~o z*o)T37rQ;u=)VLY=_ssNoFK)VPB4i9O3eP13QC>IM^%L_U+A*!e{~>a9yJb0*RAg7yedNtgr}%o0bpp&n_mG`R}>;@7(b%v>Ms@#!GsU>e#z zuv=29GBFi{A62#J7nB;t*5Sa?1dyaty9=f9P56N4mn(DtLP|n4NdP!HT%rXy_%OG- z%TyeAM7yL~#G`&?HR6v(yQP%~lTs2LAl_)~_mc`X%0k264$H!Zxy@gS@&`G9L&(3& zf)hH9#%-lCErk#B^eTS_;&+(Kdza1!V zt@Nj(+*KT0y}|D1;Ob2$Fl@O$1$M8w#-EwS#(}xfpP#}33;thlv6=;v5dM}BU(Zni z*MayO?0wQ&*kf{|v_3$(x7(rXBM^z|-y^M&Xv2+MuT4CI@xum4CE`h$XcYRB0gf<^ zq-ZtF#6hn=%^eO)pwb8(@xe4{IEVWgC{n_~0WiR&p{Q?VFhd;Pim)<88d4SC-x9RH zLY?XkX+!<$98s#pJW}AA4ef4Imq`evtmvV|l^Fd8d5@~$tKG8VP zeIlTP)`2m|zcxL`s<04t02U#?CeG(7MLgHMYSQykCobnFBYu~(hM$IV6sGlU9TZf? zpnq%JIVPrdbkbr^5B#u8Eg)TGoQ zpgjUd#2^Mg2-KP#R5g|=vEmHPD*{Z4n{gijP7%Pc!kNKKN%X^h;%_omB`uhi!o zzWN?E_WT}S{puKOth;>20OCL$zt=tlFy!<;_fIHKHlw)I-0Sc+UWHV8N596)D*+1C z=6~Fy2)1p|ChEti~$nU+)%&zYb7oR66g&9Dqw>+6R63%}>$a zl+bp?cJ#BhNbRwSKo~fWdmHmUS#qXFDt-?oWll<`>zkM?J<|if(^J%8exDNnanvzV zUJJ%OSt$~bGe-xIbPV^;tjZOTKA#&eiXFHg+(fYm_lM>g&BM$*MR+AYlOLAG{I>ug zCFuZSg;njxzi0IOMXuOJ)M8%n3QwTRJa+;wV!Y-!RXGLd2PrHGr{nuo!sC7eU>b^k zFLvVm1eE2qVZH>FTt2REK`@Cc7UTI*LiMF4HWoFap5%naLRhARL@w0?)HhQftLH1Q z>9Og2w8s>a=B6fe5D3UzyvP%3m+RyLbeFo6 zt8nlfyYtO*w7(hHGaXE9aA)ylRj5ar%MDSG&soAt3HqZF%9X7M$ts)m4sI%x`z_W)yyG}(>8qY0?@YHOWeSxX?YrqH@_ZMadT z_lxV~&FVyiuk&C{9H7Z{0RbJBuv?wZ0RR%NOwL2Q-?y&|YgGUZ#%hpSIV* zL1grO?SP1|=7hRW3OL^lcLX>{3;`rr$R8dL*CzooX*Y*!`Pi;OxyQrfng;s=qe)wa z{KthoDJ6yW!|ncrb^svu9+BQhnzh5$Lgaf;IA$c%0Gh%(!`(VS7W;nfkV^^;kA>gH z0pNS~OWvsn2foIea*Ip{%x?)lG7#^-(O&kDj*>46 zbP)f6M!*0mB)x?2C-Qq5fgr!P+YH|$5aeCsxsd98$9TrbT(|KQ;y;w%FkFP+5nhQN zMEI@97w$p$YzQC;;WzDP?2{3|qv$#LB*JgYF%U*z*h!fbm!8p%hbSkvYBw7+{*OoB zwlQC{hcWjsPqh1uD|y^cx!I`4czw@kGS=$x{a)l^KFIr>IVl|M+Iyv0Cc;sJKPQO; zU~Ruo@2eThop;T4n+8{H4!!3dROTU`xoG>I{4KB6$NZJA_g14`C~?WF6dXw7n3#Z_ zyW}fV3(}+%)RO2$mdkq1#Z+Ux^SvuaEwH^Lc#5aWi`(O!3ni{}{JMcz{ z_z2)1EK^J(5NUEQDH&~&CN<&t61GY-zoAs-OjqcAcDFd2L;dnTXFlq=U2b%ih}8a7 zctb$gyHZ?={I|&moF&MAbF?qx((XHv&MiRt^St@?9HkPZ7v;RNkr1 zNBRxMUS)9-<>W)oYKflXCZW#4^+&fG2M`Ys$v7(D;NN%%bpr?x+~_vkmlw4dL^^B0 zMH|9z3qSK{9=@l=N-w|GVz2_rFy7NBmjRGqKN4c4nU6du%^;islE@kWlVF+R5rHi) z8JL#>fF#5-mu?v=oDWm_i%4hS4FijqGEk>ALYd}&r&3V#r{EIH$AF$r<)i3NU9Yit z2Ieq8=VU9H)%!Vz<|MoLEn7_l$|lrkVwg!^Ov#(PmXZyC6B zPWYYnD$3D#yaxO4;UB`Yu>aw;Yh*vQ|7e``03-?j61_>*{#PJ3$Y+0Iye2~#$xdl6 z!G0wCDtsF8?+b5fkHLoa+gdB)ef{uE(aKc7bU*TyfjCt=@<-V7gyZ8Ng22ND02 zfO>2INU*=P-_@S6vo@mg0GEsm7^<~i5TSZOi78wGXNrNAdR=ar%8B(j}CW@9+pfA`t27fB@{>5@-4qGZB_{>-7Pw83RdM-Q8*3!uuV- zq&+E=^YnASl_`bUU7uAse?!dU>R@6iF9gfu{z_Pn~H6hND!SV;AeHGK!Ud;_ zQbSSSpi{B36Ddq3ke+u+_?W<}fv1Hexw0k~Yor`C;MAaxOKV}P2Bk7Kf6%59#M8KE zER>H3KEr%&8GE+hIk6R>(Ahrc z3XslM^g5Tf6iP^Ed$yA@(iM;K^|@`4Z0%+CK|MXIdU3rPk?!!9^*D}t?&*Hn75V6A zV?VynX^hKf1t(}!e|%UfE^!xH*vAn!y6aqgN2Ry>oBbH{*(qVa z7l6>t0KgAiqwP%7KHy#awi4g5Z(4(Sa_gR<2^Ik;rotYH68-zRO<5wGu; z=s7w7{BCOs`f4$|Jl~*fqjFi7Yy=$DJIH75 zRd;aM_f&T&R8L*7RoN(Fzf(^t^xd*JSfnfr03x|l+^H7!2Wl(Cv8b=Cqs$^;sMspD z23KLe@r8V;1e+*q8qCLFQKAF$ND*@ew`2Y&1v&KmD;xQ;&yB)Le3>o)qwIda{WaA4uOErIaBbNOZh z*MFfUG`_! zd|i6JE-f(sZ9ozMM?D-IV11bd5W?r;pa|dyZ~YxCfRvs&F@+daXzY0(yF_GYfWqdV@0$cDK9Mnw6vto)zX4SONsb zwc!KVg?5Tcz{7m5s)aU&YVqkz8#}e;G#B~ZT8_eX?h0-y>{jUYOo82OE_Mhg*qB^s zO+>y``b=kxgadkgl0zFS1Tu_J&c~DT&cp;jB58$0^&PS{ON%)=u-NA(b^3r#`gCBh zAvM>heyvN_C}Yxey)%3QwMZFhToUbPUA^sb*SND(960h@Tso*RL^!cSd!#6|!pA{` zz0;)w7Xo=!O6TphQ5=73blBgDa`y>0$&E-q9$oF%A#B<^+~p{Dz*;ZOLw!3%AUi?a z@2To}ORZL?aFFWGbt~I(5Q^iMksJ=X{fSldLAp$V%Q_MFNu1%1LVUdlL zeEjE=v(a4utGm#|fo-rfX^w&oI%|`(5cX;(&d09jdSQ>UM#4s(a6nm4*2vmym=u(j zp`LyGTDJz4z^`f(<0s9M$i*GAYyH{c=vMR#N<30c-0$J&KY>R>blg9<3@h!3`#&Uw z`zOtiMxftolv$3%VVq{yD)kEM>DUb0;PY#M**yN{nY3171Vxu zrby5Ea&D?sj(SMxhc>Y0a^sqd(B5=jYR>x@uC?4D&3#@1K+-Z;>{Sn&D06yY<8)$T zu+tmA1J%wDv5yPelt>W3R9#!<(*|foV?jVbEP+N}pNjvu6nkFw)$6daF81QS`Y@D< z%s!ue{XYQ`wGXKOCi*kFJ^#Ziuu)pkA*em@do|H7Rr@rdA5M8&-e;Jf*6`#&^ly?| z*4FzW`kfTh-O=ySYM%a$X8<6b$v>Bad{us7>Wb^*e7z);6NlIK$9T*Vr85I@J;2Ut z1~ph&s$KQbvN^ZLQ^}qF+0# zl{|s2>#TX)D8w%nr&wiv3?dEcK!2r*rh(|kEO%_qKwKYzN&@;%F4<_ql;%ybg8u2F z^<1*)(dpb)^bg<>f?N&Ke{3$%r|Ps3KQ{oVWM;u6 zv`2tkF5+jUDjNqmv<@ig!Aax~rkZqJYFbX0p}(Dg5|oe%IT{yOj1zO&My}e(rCW7! zXj4DruWT>P>3IzI7cK*P{1D??Q)bbB`cAP%hyxA-kmN@-=V2UYIHRq+ZWwPUm}Oj7 znpMpOB~))!%bqlyeU+@y1|Fo>+q5rGW)n^8%xbONzHTN>CNBRV{--on*j<4y5@KUV1 zeR45=*63RLy&%hfjBz!`s=XDgL&>RrK@Hx2@HQ~29lyIy(w&fiH8sDg4euZ3YIV#R z`n_Bd3`0K-q*tgTOad1+sS{wYmp2C!JCHwEm#he2m9@z+i2oMewCH+|8+vL659Oce z25prD7i7^LVVwx2A~OaaK*zgN+lKN_+joRpP%dLF94vY#v<)eMNZ!rb z8iXJAZq!yPv8_e?J<-+rT!g=6Z%ESb^;N0WLAja%INb3_|88W8OLzbi_Wkz30ANe_ z7%UX$;Q=wSXA-a|-Fd2b1rE>Xs1n+E{Ncu}|y@vuOd za9}LF9z87Mz&U)|c+#eW?O#W}kp+?>)F%YdV~8g}=swt=+CMgKfqg7`z_?zHL8KdC zN%`n{0g4T>qg@O8kbJjB2c19iPKDRtx*qcG4hB~(f1L4*M7}-Si=Ff9E7JmTt|e1blA*6xt*~g9%~%HzoR{?A>IB}_^g~c zfDfO!z#?9IPQdjU?}R?=@3pq@1=v4m?}sni01mvxX36)2`;gEg+=SnH06@l-)&dvr$y&WNl_%h4yC|y& z%R5B59bk>2;|=XRfJCnS7U~2Z8Oo9XN*7VqC0ht3B$vRj@5q{n`(WRwB`s>_hHwqy z?-P!M%Y7Uy+l|TjCb>AyNlH5Y?*&8y7u4JoG9>AbW@7E{ngOZB!ws6E=t>9qX zyFpmb!)mZ-_q*~n&Z;C1zP+oQTBM(fju`7ue>2{!SEo_GyhESE;rULj*QdZXo?;+OhXai;(Zz(Lr$q;&1d0S*t}lFo%{@5=uyTZfU;0C_t$z#Ql?B3R^S+ zDBcJk#r=85em#6d#(b3DkX?i`0Fpp}M(o<^x5j(2rxEb+zU+sXUvdn_d>lgY2w?(} zo`wC5{VVSozhh&%>9)A0qy}@Qv^>*pva6n6SUoVj$^btxbE*!1@~gQhOTq!!QV+g#AbZpcG+z zkp3*}Z-qF2N(P`LVBX8Ia?*!3z$6>bj}4cG$d|DQziUG|36_ArM+9mgiem=SBe;S? zIHQ;pQNLr?Y@I+-7%L{duf?w1m}Tj0Mx4LXYFR)@>!OIHy)Hi*5;z)zNX#|c#ayy6 z;HazpS?GHYYWO|SUXWW*A5&6d_Vw@u?*~X{`Iv&z3)<7N?csM_`vRA3GJ(erYV>>i zW8q%yMg!})caMAn!Vk)Kc}E3WCr^4uVD0FHcMX4D5y=6{X&}s$k{GbW6qFu}PI=cw z08~SOOfmtg&7SGSKoWsTj(nSURe<%^z6EG1)?fQZc^_=Ed`#Xi!5UCX;%Qw5n3N*r zzFUN=u&$nzZ;7tKx_XCUMMn&JZ@M`=g8GkzH_C{Lu2Qa2_W1a|P1lQ?(s)l)c31>x zY;|^+TO7Pcrgm{VP=33ln>yO5OYKhY;b8gQ>AeB%$292l{pX?SXAYwK!_-&w@#$|0Fnrl=~P7O3L@1B=Lp1M3P@e;g&@+l28HQi6b9f! z-xCF`#YuX97OILg9($PiI3jrXN*8&J>FRja1uB4s5t2z~! z+Dqz&BmJV`tYVXJw76~<@)fif)eVJZ3Qz2M8JNY!i784kS9iJX`Sr99($%u@?bklA zj_yxa+hK&9MX`hbsNn|q}P zG{oWD9Hc+itG=IuFxT_bekHI$&(Hc+19%Gha{bX>zqfNUuCaSNeRBGIiu4@%1E|#0 ztEnf-^|`-qPVXxGgHW=#xe)osw2gK~>iGWDXFD@2>=&3xceRi29&V?!73qhhEB(DD z_WRO}>Yg;Lav;!Q4=4bTV3~`wJ;82&i%Z{GyOm7=_6f595rIZKc!bGin{_;AVAQk*kbqJNw!Z5oPvq=ZEKE(MB^Q(0 z-y1|?F4)*O=Q6;FDI+n<;xAB0>I9P1zYIwFbBalqfQd`M1jk(hhb}z_m!5-5&%r-x z9k{f>{Lcp@r3wRjVJ1){10vx+)_J@L{+EHIwxWRVKzRlt)fTHgbsU8Jr63XxqJ0!ggCi(L;>NMfK76pVU^n2#3$jz|%yyMumY0irLpZi(1^ z1oE?TU2V3WO24@Iiia+!m*u1K$1aGMik&M?V;-{n*?bISnk)^=CFO!?j?_E=A7pFz z7&Kx)5_7e7nA^rL!hPDAUgb=)aB!#3<15a@2lk_3SDSDKrQjev3nXP+tR=BglV0ge z#|MP2LultPRnm~7o#2q7F{Rk(rSqmh4%Vu5&s=wzmi1wR{OBKRl$FN8%O2cA`T*j-O?(= z6EH;wBby!7nV3TRVhkJsPm;zZ>H1;OF9LNWjKgAOl9WI>fJiR=XV1c{tGZPV(oG!5 zN{ggwlq1EWSqcCukx(IQK=3h;)WE}Oj*sif0!jOEa5@)ZQaVzRkAYTDcyd=E{yX>| zr=&{O2hPXZ=zc8_tI{zjGM2{yErC<88>IQtxF#Ij!&T3i zmiRgdII2~kh=g*aEJPbk1gMNcJdMKy5n+HQbkLu1)rNK!2a^+}DTDzAl_B41xMUlF z>)#wKa>uC{N558@EMda~F5?Iw*%hpE6bBoQS;Zs*YbwwVbKOR^9Q|3FoSm631kQ}A zLVd|a&RCQqaEaLS>Zd{N*9pj=`t0Ky=bmroXm0z2h8PEpJ`e2Sa0@tyYo9Pcl z|CT$7Uy?+7?o_F?4&^bAXoF>ig76st4djvz`D*kEX8^8avN=@Z(O-ohp6H2wO;1ZL zeLu#AQEHr%j}17wKLikw>%4M{u6vPG*#@8^t6)V+Yjj_e>O7GS?$-zNoiS*i!lO~| z+5n(gO+5Ytwo(4kEx3=;Qn$Je^VUyFHRw;HyGfdd>pA3Xb{B}W;k8bh>0&;nmWl*a z)ujMbqMn_}mCh9OlUzsEz#cZYS*n8a+-81m5CbODQUn67vZf$Rt|ck|E^akHokzO4 z#-itl0H#?Yfe|aMnH=W3xQL(Bf%`Ab;^_V^m8Nn8L@rWgb7*_kHo^u9Hx&66yNWps z^(}Fx@WT=qcWatO^MqV@NiHlm(~_z%56l_-2o?2mGc0;eR#`C!O6en$@w!Lr+X{0! zPaC|w0d@4Bu8Y!>MVhCi07Ob&^8knx<HO~S}jWfxUt5aDdN$dB?SZ9(LP)Z=5d%u zW<@Zl1Lef=XNr)2nI$WO)$?`lRaiP8ZcCh`JYe^8ki)Ea{_q6n*xPlyu6CkYpC3521VE2|OxF(?)Mr zc}X45iKwS07}qGgME7wtm(OQ`q|0#sgTYOGFfW)=Qnfmi@B1m{L1K7rf7DM3jJYUB z%18rFVce}TxdTy-=GQ>fJ5R3?^N-=W-0CV)6kEg3R1zsX*8q^lN_fuHT6Mfa?;R`D zamZhvT&9i{>0oGalAeE3NE+?pInCC7`T6xxl4^n61GasSI{=Fv~Bta352%q#~5xsLoJC#3xhJlmZ^>kS_aq zHMsBTiDz;fF#pVPHGMI@i}=xPJu$x)nPb#mxX%>d2lrP?PEiKkkM^X6{!sMufCVtA z1HZf6%3w@;3?Pk4;C;keq|kcbU@i^HQNNi?s^c0nAW(|lZwzH!YAoWf@zy+OV|!|HDh7vC#Q!M#jun2O%W9FYFTJ8QQf{DJ(M z@SsNr)UOB+ApCB0MxcY!lnmfVCQ#=c^qByO_l%!L1pEL{g8h~7YV-pE2dVZm;oV60 zg~zoM2>(=gIJ((`l0*2AaTDTCdk^593;px%3J<$cbiW6U9@y{8C$&Z&*D0UUu94t! zM*hChgz{eaXmlIwS>w6LfqmP4)u49T?AMKl4IFq2Z$^)XIM5DbB@Y6Np7y9;Q0}m^ z2j3B_{BHQ1Mt}%xc;5a_Xw!Td*Co6czF-qb@Im+zYeeoXkzK!(fjfb>rBT~$IP`lb8pzC|ll^BoK(9!nmG;ZJ3bdy|!oiMf`{rd)7 zwFNj}4vz{ec>p+Y*|t1o`i^zvZn!`h(%O<#kARwOhR{9J$OpDepk~Q{kQR zPS{rOPLB?lp0ZDR^$0&9oba}xokwuMyot|%N!l8;cei{vSd;=7BZBYzABvW$RO0zK)(6;Q*QI2n-|X!Inh95G@=kv`%4d|4l6bEUH~W+DJek~j zg`TIw&N_v_#lzxSzY<|XTJKI!V<2e?${oj%*aF1gBbfFo1=lY$*)+dfyc_K;0UeNE zFRb^`&+v%7PK3gdVORw8o%F8ZRwLi-;omh(5;}h*HEV&qa1NPsupb>M)_8$UVw4om?%+gtYR-V<%`qc>}86Rn{qFx3JF`$Zp zMQj|I64LLD59JJq#B7uWl5E@$)WZO#P8tl(-VyllFS^-XwA`N$|Dr!@eavAJOl~ zTlNcKOGNA7OVN)Ie&2q>AZ4S_`$gD_`1iaww8sVfZg@Y_9zlF244VO%kp3G3`4Ik1 z^h=HMzi+&yorZnaIIBHMVc{+B2_b&oo-#6kl1JbZbFtP5CS3$bYKvl5Zk;T3=O1T?Ov_yLp{4WU8>{oeyQ%{w;;U5*=}w|`ZjKt zz60fVD0?~Gr}xHvdV`7gOKZP=Fa;~^*Bb+*CmWKD3cg?Yy3|e)?}6N!WYQ%?(HX%U z3;)QWN-FJxh)rd+!y5q>rQsSZ39ILSSd4o5rQsS3;oPi3PbWBI=GRerZe89vQtn}3 zP2QJ)NQ3HPrJzpRURX!}AVuH~{li`-h*VeDo&k~mK|s=lN=O+1DXWN7Sa%T+DGMBl z7qLQn3?d12MeU@pT!8)$fo0d3p9QkI0!afa@;@zAF@C4>8%hG$io8!t5Y9cFrxzof zTQM+QjBx*X1M4#&(&+(uA>zp;TOr1+Z~K5cvKb)h3_zgves%PH(Ccj9b3!ZZyuS4U z!aXZ`r}NLoV9`L>o?Nd_^H8p**}EZs9`ZH!`IMAzdpGy}G`|s+>(eoiM|@rH&vFy7 z?OzR>RYdCh3^ZZZpnuN{I6ANawj{SHHy8c7zkg0Y5eh(!#e88aT(5H@n`wNfq^F3J zI`CboFIE^)9`??B(|;+jV?@K!Io%N8cg)G2>x_hM?X72o&rKcA(w{ zIBeVIV*f0?SFKZF;VO;3CkPbUhH?k}7)aW$>{sfLe{XWHzX|!th1(`4YbC@3P}*Xl zzAT8e-`%flPoh2lfM4&^KMWr5cOm_tdr;Y(MmtbWsz>@RbEjLU;5pPcE9;TIPCXAI z%|?7xO=ZhCjDu7=Qj}0`h@VK%zF}!csWk-Y#e6Y8*aeW3C~6w)TmT}qi5%_M<((U3 zmgq6qQ<8#(0ujv*QYNDPv_Vb6VNwz!Ac>TXNU5mIM?AS=3o!4R#76oDAOe&U6wVPo zOQ8Khe{UcO{Ta$%04AZ|Lz?4$6QJ}tAPHa+T`vQVm_pLU6q7!ee%Zhd+PBDMfKdLx z2HNlFe`>&|v|rH)6cI3labaNw9DSK(`7@TvXY22@e+7snyq#4*!gH2!(RMMr6wmF^ zevJjle+k661Y&U9rFn4aIk@y3TzU@vQR~2^1?Io)hxVe%NDM>*D8l2#>AwsjvGM>$ z{w77FEQmy|J$m8AzN_s7l`a8EE#0dCvUE{)8rM|R+T)wJj|>3Hf;$W-`kc)INE7r@ zr6)eXy4p@aDGM%rDUj5qy)VoErHV;ifh2Za7qeE0)MN2^0I3rkx(IN@K%h#cSiE8c z#`EuN$<e5hF!UqfiN#l`kOL~bjxfTFGdYPlB*r*}Jq$CdfxY*U& zIt54I5)SsDC^81+mr2vO5dqrIDu`(Q0&aW@KBUD3+=SfocC8DiIy^uOX*O4>;{ev3 zX_9ina%nm@%0xZJxQ?ts(x&8me|!?x697aCuu;V=Rb*J`8@bb9nSv1mc9>GqL1%+I-^W1*K&Pd! zHwb%`wW#-)aZuR+d#i9*+6rsgSGikUa(!{g-3-fsAOdpAb8z6S$Qc)9OMTfL>fri( z#T^E_+?^r~w{UQ+R!PMuH#I149bn?17p{m30$i^;p{kU|&zUO`P_@?u%A?|gA1>3|dGKkUSS6;pa*Koz^*9Xxu5b_qbD@ggOp(Rvm{YR3Vu zv{0OY`@jGzrtE~;-Ep{1rj$f3^(5p2*5nf4Mj+J$CkClzSlE#8;VLi{g9LeqpBs!z z2#vVkaMd*!*SAuIqRyEZV4-=;z@%O3Dp795Jakt`lO(#Ii`}Z4cs@{ltJPUzIfwh} zFLx#;u|er?bLOMItCX$c9Hch{NoTr_a>>OG9b_@3BvS4vYod8PT}reQC^Fq25}-aS z29d~h9`%O-NgKI&{-_o_7wRIlQp855zc@)?)^=raswxNLlm(O41+!H855bk{lw?_& zuCKb5fRUBSDZya$GXoGc;`-DD$|$5$eH9mk*CzoOQGLODe-w{)g2h24>SOsc%19E% zIW;4ojhoe}=|RFpI{-sO^b4c!_p1U(;Ez;#TL2OK5lSztGjPEs^+LUJ)36r4Eme;fPn~ z;^1DWca~B+it1Excpd;ajj=FKp_EpM>)4fAomrQzHn#%_K>lbqzZ~{k#vW*r0RZ54 zSc?%RMWs0ilk3XaBGy4J$)~9q(;#l(=cC?wca=30c7v#L)yTJ0nQE3J-wbt( zS)c;Q2*z>(HWufr6V1}rc-<;T`6M@=r-M~;^(6%aHcZYPjQ-VFV=V%K6sNqoZ#(J{ zNAm-);j%!QXceUigqX~iCSj$?Rw>4LsWru-4YXQkCSNYa>oWlibpgOF2t{ z2>>OjszedxW9yRwMK&u7NTNOhB?tQ`uS}L`qmI_Cp{R#k7M7!)_1qkP4D~OySe?*@ z`(!S3$02?lH_IP^Fg-uzb?6^gRU*YcOs~RjYvakPLv-4fi88S{jhRxTZ(7!Dr*{RO2LQbN&@Q>gqYdk|&RkB)$yy!PDNeJ7rx-N23F#qb&sy|9IjUm- z<`qk4F5j5THfC#50$rbhSRcqW8v$#i zz}2?|2QlJMr_X2jeR4)N=MG0b)~MXvd{|R*2w=+qi#)DVn(CIJ9&$Na?&JQZ7O7*Z z@H?w755}Fr`X8(cCgOT@f2BGe{n+6zNmbyw@YJS9Bi{~lF*m9W`PC)dXwqfhqp@Ek8sSDopH{w?Ol)YA9FV&G7{aJ{6U)F1s?r^-P- z!dt~zK}inQ8-9U01lPCET#_1*&RVpyn_H;T#`0csacUUS4=2~C6?Fh8ykwHVBm*E& zWdhb+m#RQHLt2|2qX3{VHl@cS{)DzypMi3uXtWUZJ?I?;+(^nm$BeZmz$5#%Xp^1+ zl8ntL|Ac)!+JN#;2*-^i!cWS#g|y-Sn0$*t?@fc zXXN{20()K)=s=W!q!xtR!ZY@R2!CjtwMiN2_wuizr)(T_Yi$uJUHsO5JIWjc8?WOq z6bIAxbB2xdmxZUIW>`Adz7rM)+XjW7*B*;bz&`0c7=0V|e))FoAg<$-aFezh){$@3 z_Q8@1x2s`)BLB#^Nx%WR_LJxo^1mCsX8Z^?w0~ioMtn;6Mf8LLYyZ-CQp+fEgim<{ zg2aj)q=@uW8~v2u4WC86-+Aw8UP$24``Ysw9rS;oy#PzD++LDN=_%A+wQ;~Nq@tg} z{tw}!=yf4>ar86TKZGCP2%747Cj&P9#{Rj{s$qPzH#7YqS9Y0$aywQ?`h`tS`Us=~ zkYocu!ss0raL_D2YJVrh0W;96qXrI^<@>y=aNmC{+$rlk4wQ}KUR?kySm72E;}PB( zZcW2wn0zwaiSU#5DPs@9Ph(~^Apg_a-O*l&0Jf9DjwI%baJx`vA)nSP)awMK-DB?! z2!Q&5ceM`%E6tUU$~ah;UGJ!e{>cw}bkO{=@PKwmp?=-%?L|HSO7f00_3I{&z@K~V zBieEoV2`~&Ime2Xk0!U__gDpxhk3VOU8)b$@jk0APtgI~cf9SYqT)I5;K~j0maO}; zl6db9>oP8l5Amy&(GH$3afwRh8hC(z2p@zi6e(%M=%O~1zyq74f#bE{{!9|<*LKp)m z1S&BAhAHr5lyMBqQ~RTk02CI_KpX}hF;J(gW$6q!V&Dz~YFIt290QCxfh6Pi+Uw{a z3$t_v2zA=%cj0U3KTBsI5d)bzm6MDZP)g&;dK3AXYqqW+(#6_i{rueZ7%^bQ6pt8y z^l=m`PBF{k8K}g-B?5s6O!}OSex12*tX>8zvHL{*c{RfL2*1~8{YVRc&|ZiAce_1& zL&#bK@wnczh-dkjauNg0G9VJt8HmJe22?^kfmScVwqqV;tnh2?1%y8ip*$qe`u7Xt zDH-dx{4;~*h7w|Q@RWEo)er9e^`D-ygI29pN_Z zDi!ZH@~z&L2s0q*PCEvXI)NnPn0J8B07-UZ8W!vIVUfaCbPbmUk`#cV8h|7d`!2#U zjoLA7!*4+Ty-tI)9pN4RE`FdNpt*lC$-wl0cD49sDQK@8YoNT-&Y~&uU16Lf=Hd<5d)BzWgt@f7b_!m1(NbA27OwF`!n!Ven%J#)oCt~~vOd=4dch*%K1Cx55?xPQy2O!Dp z)sTn!dvU!x^3Nil*|)I(@qP3AHxzt~`EV-tQ&ODmd$fNeDfRYwyB{~88g^-4vp?GF z-QM?bKjiCQoqJjCr?~Ik=nr6um2c(U5Ada>pj$rjkL4Dm(0e<9M_Z9^zq(J|rlOqQ5Nt=7 z?6wpv0H$p`?IRvgwsWuyNJ_#5n}d1?JQ7iFa*t2X&F(`^xBNY5%FF%ao0 z>5#w2#XcMCJ`>hFr0!Qy-qQVg3C|O^McQCt-z%t9mZkB%=*NmkRcFQ}#x(;x5{nb` z4|63!u~UZo!9b)^tJE5b@|}uEeo+&B*L5l)WkDnYc8VG?o|g^!jP_9&U?k*-9R%(P zM++N=w8cPDS%CQhP^VbMeE^tLiZILn4+oM+Dak@Vn63R&#iWY@NpQ(l=3W3Mbx}&{ z1eChQ|D`|@Q!-*e(FGt;Q4QwpU+BW^i}Dp>d^0ZER6HkN;G(S)L|TgH1)!0D=jzW{ z0+IS~eLHAB?GlJ_3B23e!2Y`)u!{moT@;d-QWCROf30Ft z7lkCIl*H`#FH=ln3P^v8LefJ}pn>vCkJMja@xt8W%~&a^$97n!sHMm9Ea>we7uZCR z)E)JWZ7FoSBj4Dn!j|q|{Q}FlKEoA{s^ zeMWG;i5K+G*;XO(&(9&gMkx8`(|^XYe9W@?Sok94$5aU|-&}k_e^|e=mR$9as}VYA z?LQqKe%uUeB*J@jO{~#zFh)QU=H>O_K4%SV#?_GtFhgG=RwwYms4o>KiL_y}oS)o+ zgFS8quOOWPNZZpZ9Qu#r?K+N#@qw}4TF6aMZ~zIAXf*6{7e|w=I9OHS!U*HDLYl#i za?p>g!U!oQjWY?XSzu1&agYsNqp>+SaCN5eBRX&Z2!#;>FBVG*SKfqpUg66vI*?Vw z@@5?Trm9`OXBSGi9XxVp5vV;R9G)?b3(*Hhqbrh{%_k6O60DL3pYr z7>oW9z)_(BG%)8WRfuOm4FhpV*JuXPnM<@fafw7g)&V|N8e+;q-;Nr5&BcG_MUDPO zSf-rB6oxiisx&c)gKmGkQi60{x9(-yYwG23zhM$rBVz82xoDioCT1Wf{Ch5 zl*$~8pFiD|I07R8{Ip~I#bpv5*f518x_$zt2*@JPg06pN5T}#fD*_3Ez0v`=h>~95PprZQ9=}SN zDWMD}rg#&{ou=&K5@^9|0#7umobzd?O&~|7Y(_qqL^de($_3Ds5|f;{ZiX zNew^&1q3LdfP$nLi#b36#h5S`P(YXqK@$+QRMd!wC4z}cV>uEPwQSHtK`aq9b~{w7 z-HF{kZJpfbi1d~Q5%Q6xEHY_L7PR`IodmKCLiuE8 zjK+p|&tlCU+l2=TXRDnA?7lgq)0A)a%p+O6n_{^Q2jy<2Jh7|T=t z$>Kz-e-+Y|+13bLzb#nCO;m9(sjNv!xNf(<-k61Qb_T1AY0yo9!i_`vT6G>*so=SV z)z(N{M}Q?+Xj+<*^x-YIe{OA^k4CJy=-pEw160+zx+TgRgl;S#LcoqR_ zbX`v+?sr;07b{Z?0xp&ZGq`dK_b1Ng$f5+TPn9Si_RZ`{9rMAOD~c&7KNlhK#=Rm}hr7HsUXx`DdCYO1108Hx-xd4ToHEvLV zase0;2)2Te_(7^HrY#=Uud+I>Dv&e34!y5`dWwb0|lhCK5on zR-YpdlQ3_YSy(Aio+^oD(DXd4#ry=2)D7WkZlp;4pC}wiHW%PJ0ybH^?c%d>L7#`DkzT3tKDU|5&EG(Uzkahw)Az#N1ze?2V`|HIwY`( zEFu-7-Q-%0)_($yXoHpVkp;Hd%2>5mi20+!gL4{2{WU%u9OfZBK`#$k)L+F6sm(|JF~Pw4oHnv}#p~Ht z20$8<0g#%Y<)ubfj7y=Zv@y#=y48oHb%V4^4V3SbbtA{89iq#^m&)eL2d|49!8(8=o zjP~rX7K(#WUcEI>9MFP%{7jd?ur=9VZqVST}?n8k2Y& zy|_M!uj!v9QrjV0hB z29iG4&f(A+<(iK681x^>*otuAY`(5N3I)&+J;+`FlA4@{{T(6>Je}A=Qrcx3 z+M8HVa)lSP2ax})d?Gpw{f%}yIx676nSD2U#)O(@wP!UPM6>V7&&vR;gmb>_qz|n9 z;{t(8AIq8u`9)pa_4%ekq?q80l&K7c+LzMi!G!vGMh9 zLcfwfkzYqXIw*h5Cs6AH9Kw@jj`yM$OteFOH+mM~PuRDkqYhaJaUxR&sHL4?3CKzV zNk~8Kyu{ukz=D+aoO3(ECxj={2ffExQ`m~givwrB(O)l7za5r0 zK~Jz&v^BtizxIS#Z;&g%Bj$Dv>KqZad5C8pV>d&a{e$K@i%HPu&3lEVI>xbihrGZ780TnG zwM#B}wgppA{yug?FrFt1qZ_30DOf0SZc^wyeaP9VO!si$ENqe{K;hcW8x`XBs5Lb9gg^2(Gqt!%GC^5PQvxO*`;;`=F{Eg+Vt$Pc2kIX#vX|3k^hAM47=9>Xn>c`K|Ck2Ec2)jz{7b{rup!(_OARa^mD-z z(&J70RQR=t@xp#CI9ggAm(=`1c+&?kBFC0^zV?4FoE8x8e`%hACh>n3{vf2sqnWW- z#QM$|8Q_r+y9E1J78Y@$*cBUT8YrT4EfCK5h>u_q$pJtY{n0-wKmo|Si!jB%i!gyZ zluqDL3&Q`y4}^Cv3McuJ>j@}&59t7jHzSiRB z0RT*(_2BOYlFSUK6vbfDzXc?bC8Yml{@H&|i$SY%7ljE#qV&H3kq}NmBx)C}H;Gca zU4#?Ye?b%jZ-0M6h<`RZ6zzr{)b7GBal99_ z?Yb=D{iUzPmo?s}>dJ76hwm$Go4yd?2clb}RnP;N=XGvc{k6F69!FD_A>1Hr59s=P z1ua;H>-IT&WSVymvbW212I^t&mNzm0D&>cLUB~+29L2XaEZqsV_K=MA&woWbgzyRf zIqd-`x#YZ0i=tEh%i1BNe<--xlL&tty`w#c^v~II(Tk)eEG$94U_X$LBR#RG^jUPy ze-Yu&*w~^GEF1|h`LrI#7LO83Naxj$L8MQk*d<#6ASITNeiNM)Z21C+^pV^mJdg4| zl+OsyLci;xEwO-f)_>D!!gY!3wFE#)z@xXL*M%oE+^6&xu!w&jK zenmJ0eM5WMIfVGcBGQTICE;PjH~Yt&1M&qR=|%Y|;XWVhvi~b*FXEpPO!f`|>tPgI zJUZ&f7LuNl0UVhCHswd11{Uk1W(jvfpN>qYA%e1|K=DtS0Fl# z;N0RutjM}87Zv_;t}2v;C&$MbGC`wAonL2c);FR&)!nAor|`Q?tq-X^EBJNFMw`CVmv}2J0`CDL8E{?QI@qhw z0YH{+761Hx#3 z;;QX@eB!E2ie0s_KjO0OyalB4Zb2X1&-cQ5#x+}8Mx|o46zwl4FAC{yLL<)0%bTX4VFHRCYs{-waDgS=Xz%r!Tl_BQPl&`^ID; ziM|7`YrA1*F4}iP-Hm_E4WR&$a&CyVYX$26xGR%`cH|W2G~_KqKa~`uzbAVb^oM=o ztN~g5c~~aySYZwGun!YXN$+1Q3KzQbkiI%x<vvDICTa<(d4@vnPO zF$R>ryDs1|Ws(fBs5_Pe- z2<6WVXSmZ9e5Z<|?a@5;@0-f(L0M7M$1N@C(~fzS0g;M>;;bHcF5Q&k#-2^Eh-4HR zJuHkHmuu+Oi19(L**ao;l;rI#RuQgY_jHG{4F&ZjsGsGa6b6V?QX7vW`iCDHKQu3M z%kuxy9qq_%W;fHgqH)#(@o9@lUPfyW4~t4YTA>*WN@+_=F0LbsOFyC|<#Bq64ZX;f z8{Nlwmu(4%l<409B$Z@goL^)qsYeOMJHR8_A5Lo~+zs`94@^pcq`IzuEo#Pi{I=^( z+DGY9m-W{|5t;#w&RaP80T8JG{gMWXTK=6X#UK&^f&U&L={$gR4)ZDlA|*iJKkJi^#?DAg9VblQ_~N%8|q zF55a?jr##;l-m1`D*;IK8|ULh&I`#^ksBA{)Sto@ilw5JmzoC?`Gt#}B zBUe27{c?V+{G=T}*4}csoTG7^29l28AU7Pt^~3$G#{u5B00;8ws?EZM~Y znZ6=@K%WMWQpm?FNR7e#Cf7$3864a(a;i$ba6P$f8;x>Sg|n?nl(R^mWRRs30*S~1 z47oJwgYYaHKoUND(k_mgke&gI$bu39D+DrCpqx3}7-Im+pJWeh=#hnkTz6OleRz?@ zke)ig24+NKZ{#N+i9n@k;qazjXcqw#-3%Obx>Gp3?!|!YQ(WAY%GP6 zI}%E+vxcBt0yX;EXkR$eqYWFf?7@3D_~s|_gKBX<04B=Xpj?$bFhqWS98VihWbuLO zue0FfO2R>h76U!EM;qJ)F8-sNja{~F=U_XCN4++j)&w|M&R9ko=k;&STY&qMhVX^W zxF36DIUP_}xdY4TL#v{uyL(+L4wm5xDSIufc7j@$GHR0 zUj%-Y1vp@aMT|=1+o>#f>40f@00ax=kn5$qG6Fox+!taefa}OIj!;V*Dod7|2x&%a$?eR*Va`a1Tbl6Ko`Nr7vM&jZWETy<8kC_yZ zg{4)xqzp#+8}u4=1lqA(Rn)N_`psCTOpxe5{#SUDkpCuYi8mhcTf~Llr~uDPoEen! zaetQ@F_1+4H!pw-xMs{Rqf#tJJ_0xja38?I+XR}>{^u5k@p2qt<&Q1J6=*`}0Zid2x;n_wirXe#*MhHlIxq*S;0n|F(4}&#tdG|<+VCM4g?-x4pHekH)V(myH%T&=UYA{kA8X{cOsGqX~h0^PwZ7biitGKx5kqYc7&qR@izW>kyixDQ$% zDjHFqx7Zqkbecb7>=-;7#UsDBz!J*Q4ggOTPy!oA2B-%X<3@+b&n?D^k8x`);72qd zKLE3eET{!Vc?2vDQZTOI+ORiNR;%2ScC5$h1h*%yC(AkgQSOFdzBIfB_n|EGMvACM zneUB2IV%E5Bv5ZQFWR)hOct8h8!(OlG8U-xo)OdQDWw;o+?o7{=7M^R4`5BSzEHkG z#LLnou5SwSPnl@+DZ#u@M_b*|o@qu!7K?U|=gS(%71=nktYg*~tjqRbJ%_yn8pbgL29+qOiMtSz2j@c(Me%zr<{!X+@f~6$X zE9pW=F5Czd%0+mRIxJ-Wg8K``hP^D@PcSB=jms%|MM&c=ov)3?N&hhGTbft>)hyii z=x{)oE#ja=9jInELt*hK8|_XkB~=D|eHXN2v_2s0+KT(K1_ya4e|&0ikl&HUVVRnX zcmk91a35p5flPh{%IEtTx#-^!cCSVPn#ponRu$4=2`RS)tTHH zvz0*-)^lTaIH(otj}8k-xX(HXnuYNs&N2w_+``Q@hLmG{3>R9%T+DB2AwLx5ZnbM% z0ta{S3;FUI0)tobG{5gO*Vtnaf2Y6NrSVFxo@jjSWEOaX8H_h>mej8i^FW-MUSAeV zqeZS2?FSZh{b@W0rcd}woM=u{`spd$_Y83Wa~(k2fTSkjHf>G{0EBZ_v;ca{j4dTS$KDyuL%t{3-O)@H2Zqrd+8pR>^8RQU z;+r*qNiH2A-mc9;J&&>;VCIDIfEh&}`ENLlH~>6rHk^f{#JWCYC^iFy%qfm z>2JvZk`PWTBt0iT>g%|l=Nzbs`xKti?s9NIE5snu8Ru0TVxoTkq;?pZxNLjhbhXDK z08^|RQGIX?q*3`FId98P2?SW3m5)JTQNyQpel54kZ$tnv%s3-wgdi_`oO2BRClMUzTwojuw%nkI(#f zwPP#}u>I5NgY*ws2hWHAt&45b$AByKk$JyIG99)~fGIuCA(8h?_$>4eUPn)+`R39uK zq1?0Va{?VC0}C@%72`}coaHE|DZ0y%Q4SpDISY7c7WaZ%;t}`*E~JzYiZ_Z{}G=dc`2Hu(YYyf^^tt1(07=Z>3vVL*Pr?_1i}bJj&rQ-l`dDhh0*O9AnBpn?KeexYN+&>x@)J08j>3te915rNA)Npt%Kwk*kCjjD zeGla&fK>ttB^HkoOGpWbM9=9>8S6q6TTJ?|0FtP`{}=mb`D{k1U#UN+zt4k6tS_93 zXuN#syor2i@Q9TCLU5peGBKW@35fIu_7msVEY=;(b6!ULZ=H9YV+fyP-;|Fc?3ge5 zjR?P>J)t!Sc<-3^Mw@NC7o3|6#l`PEWraFf!S69~7Bjq_zBi_ZgBs}f)D(4~MephP zdZms7X=SB41^IUBb?OX>zBktfwBNA7UZRZ0yjjJ~4Fu$?vlc4!-cflapnZu=#?o-2 zjrVtIjY8k?_iMYNRnQ~ser*TxJ#8M0cFXi0dK7aR0HE`bd<)7+r$b)^Fq>Wvofou5 zBM$bS$ld;a?Is#y6-6fZuFChG>f7Z86fS}P?{{MLytyqxfT(?{HSw>iFEBT`7RCXd-S+}H{y@6N9220giVBz z{!C=~cR~qB+T+9^lIGFU|HXX(06+jqL_t*Vj03{W3dRvu<{c7%BY(fJ1M!x#U)YK8 z&6tTC2L_`Sz% zNUcRZYOpm$0PY4p29nn6Tf^-EeW$Nb)^PYe@6M9uBj13ILp>n`5Fm11k6Hi z4WLa;k1G0JV;j2Flqvujq#~sku1_o_WqEmD()V{(#${UqB;~eowFKHEF3!ku5Pf$h z7LEuwDlJF31R6C%y~6Nf<)k8&_7%tlS|6ly+}{F5Yz92aZ_WTp35b*dkP;9nQBLZn z^g+LH9sr~ovNjV%LM zq~B1_mc|y4@)0KBC=cl=rqf??aQ!d!)aI^}0VXl2zjUp>ped=-&aMjbH(#fB-Hh_2 z8}zRGF91o@&ir!#Yw8PA#kh~&jlCO7b?jF+(jUGz!zyk(+OtqyAkGW0&W6j~r7Fg! zzFw?LVf+FxS|{SWN7^Q-A=YDnMe7*)Zig#23*SG|W@!x%O)Mb6W!q{6`2a4hM!tG+ ziT>o)@BXy1+UrNN~COd!dKfus^BxnwIzLF=;r+JnN-?v2pz zT1Lu*v%byVS#0C}0U{NV0z@j}F(1Co+F3|pSP&}|q5p;jr1LRymw<>%K*WE4AmS4EbZMSnn&OA| zDJt*eqMcSzQ>PZFQN(w`4;})PI^o0Pr!);D;fE9fNvQ?j*EEpyM}Rc|lE|Xc59(F; zFd@+B|NMyVLp%VaU)E=ofSV@PCW}k|sFr21&DS)c9MURiM^?PL4oVmH< zZ0U+`FVa-kkFWR$;UCh40E3#c#Vb}o%d^X`K)6p!Hh;w|XjNDH^0#54+3Q+%`7=-{ z>-gn)_@MN%$}aEl11fcC?ywc{8ST~DrM$zUC_1l77rw)6_{I*qlysQ-9mNh~@7k;* zmjh%fZOi5^pNINuvP&+@x7LV>md#wl+5y!WYB*SuQ%qW=!0~nF~h<^Sqipo(9ddWp)oGR0by#s zF-DJdEaKN03sU1yPOULJRVf0vFeGLe;^$i98L~JaNh8x64Kv(IrVr8yNTLHbvY6B# zI>#ED8W0lr5xZndz@+J-(6JQhRotM4B0N8Gfzv&O17&V_79HTxfpIU4dnp{j^+tPU zDndygD1j^e5Kk6t%2gbEtJPv9%Ao`75h!N~GszvAg#$x%j5~nG!L&L;>P79;ht`mZ z?8*8dsi+3!=@nj2gvmuve~H>z>Cy%h9c=du@gZ%GDDSCW&{bSDFQU9%S{+}*(ShQ+ z^nY6K#?k&<3kRyOTr$=LK*7Zpji!qgd=KO&mq;wuuPSjsb3W=FFAd=HP%pX8%4Trz ztMn2(7bD#pXp^a0a*5Q_Kzr;_e4hrij~i?EM?Tm;vIn7kz@E~;$U3gZ9qr+{W-KHn z;L#dxHeV@a+5=5ow`taDI}LuATiwMr9o)d_8QQ%G|A{pT<&z7gVJQF^#_%cvTc{t) zn`om$5vQoo0IH)rZ=px|3Dl`TIdgQ;qvyCJoGcCr=-?G-g%pDZ;}nb^Z%!JZS)h(} z`EuO9!Fx15r}E_@naHk@Mq8yRJWp|wH83PgL$M30b>dv0ZfKt;TjNmQW>L0DH@PxD z7Wp?yi@4Du#x1~!N*DbgF5?Ki(*3oZgm9vow8ol-cye(y)WA4^1t1Rfk|huNPb=A) z$oIwllBE~2tg(ifB@RP9b?Pi{SOe6Xr3|Z&0idC^D94^2(0$gr)0H6#RFu5I2rm^U zdHvh5u_TT4O0)3X_)$U6a8gyk9JpAZh_au@(QdY`82QGcacYF~%+(RQDf z8!)aX^Ml1)tn0HmQS26=UD&7^jCS9oFLNj2`WXTMLuC=t*$5c$& zg=mj7o+~ZEJd&nz15ppTz#G(#e&PXI)#5$?64CgpgCn}(Xg^sVtB@{)*BLeLhye3~ zSs>DUNGsA45NQK5UliI94?wXJ^=`40^nWUD=a<=IaUDJX$`s0jg|Tv!PxECE?wi)V zG8OUm9D4|KgS(I?OH!&m-yRlb;yYseS+i{d>j>N&Y{cvGKpW#-l|%w#2}talg|ItK z>Wg;JyedOGw@8a50+6iNs&ZcR~OEf$g&-|e53V<*25ySXO;^<3FTGuBbzyt zlLnPO#&g7an~(dDV8<=5J)YmR;kLl7;(8*yNSese{9C9@uzI838fJ{qLqdMIT%&T* z01}Vq#rHQl*FfC?4V_UQ0ZQ2xo+~%h$U}IlThT!42XNPhBD7r7l%vDa)H3u3EZni}=vQ~N-Cae0TN8NN7^e3M%^P|@l)7}F zS>^RadzSK(q~2%;t$+P>yeF9Ikkd*)07e(?@?GxqTd-BzepKWP8Nx3m60mI z3V%a5Uc|v0R>En>|AfEGpN0CL5^l#k1P6q|o!Wel4g~Mg7AR2m&S<_)K*b$ejfex= z2$qs0fD`@$+EPB&CCGnFyIY&bA)k2%?ga4ApEKWbOzxQ!n4{v4nQ3Ln07zn zT@5bZpot5(v+PM6mZE$UK$4FGX|qM6gJ1%NUUUE!`EdEe68Q0{e=-7iB!4cyDFgh_ z03bmVmu+90zw_S|a9?bz>^jKLekQvtKoav)*)d@m%KSur17TnLt$zaPzn4Ffo8`Ek z;~EaW&9mAu^8$eNk^B}Q9NfQveiP8&rW={a_o3zh?I8<0C)tM(J{vU)`;h*Qe_Xf+ z;nU_Zr@;ic4YS4lLU?lYIEIGENNgoUYiT+r{s!`dxwHBSe_JKY)3gW67Ux`eQgFw!kSS7vi` zAbqPmS5J>Ce?bV4iM_*Li14r2J^p+K>FjR5#=-$KyUVXhUC{J(99h`7O`ebVCbL0a zg#1k=u17g^-CPw1+w3jMEa)M2hcY9GEi6rg!h%u^BsuHEamas%Tr1N1<2G%DD_8(4 z*tPsP37`YJ$)?}24@Ece)kuGgy;WF*@U!N9CLQcie{5n1_}d?C@GxKG`+YiKI}+{n zSMz9xvsYeiU|#q@pb&qIJ!tMo5wK*jI{N!Hp^3c{{eMb($$Zcx@BrgkBTHdt{HLJ5 z(>{=2kTDK~-wLld7$5#;!U+@OCyD_QShjKALOueG-t=j{e968gW4`#m7fvDkFY+JQ z(+<@CgYdRMBTPH(&N>PEhx1CWTAYCt2F|P-thqvX|Rms5cu*Z z{~Q~K--D*XB=Z7zbRIy`{+I@4$kNbzNKXKw3jk6K9+8W+4^d92L6MJKs>K?|BVDF+ zvV4>QmHZD7PRjXl@aQ`rQwC`Iad0UEJYAd*?Mb&=h=HpXXaXc9piu%I5$KbC9(Yc) z4kVyb0xo^m6t-?tG>zDko^BRls=EoMeKJ?ExPdfk_<&%zud?&RR2>2#31%9>-0ti}6{pUCh{^j$N7;j<7H zC+hT%D$DGd%upS_*Z6t57~(w_%Ia7Z?^Q+)>38K4eTG`zfcGj>74+kAojzF^V9|F7 z{t?5V?||9i2;|?uDB*aQ{y||I-uRfO+8xn)2B1lFyS7#bh^XzsHyMGnw?=EA4{EnX zYoU*u`(O=+=A)_I?$bK=baa1&b1(B$qpF=rb21Gg!CMBR!CO!d=&iSXD zr;-0%KX%cUxL`XY10hBIr}5UH_rRN4Y!T_aD>gp{j}p-6dx{nPAqV{+$J&gy?*Wwa ziuN3kAUt>fX~FOTCOJnPdQU#jJ^_RW<3O_ndXFTaQ350-nvRc<&c>FK5^#xJw(Y_7 zN7+Y&-7?lo^I?b9L$Z{lc~GrU(3Dtj36bt29?z9r!fAM}N%#r>A?FsvTQV#ssq{N& zpFkk(qwE9D%_*q=Agcug%pEXyn^55)?KaeN2zm#?4@U>&28S$f8Swblw;zdqc=twVT|Tc6rOVP>Rr>(P0$z zQ2Tm=6aWDW3Zx!w0Ft;OsTaa*aW|7BBmqLs14(sxOd3e~ zu7#xPY`qBmo3@OE{^@cuYfqsF@PRBNH3N7!*?CU^58wfojMA2n5)cV4*wO$}?RD*W z_5~1$T(jk!jKjH;FSu+=)plynu0}Wkk)-Q(X0-!kYQA3YdNt~WOST-;mw-q;no3eV z+psUr3~Z!-$Q+fbv?|dKiJN9k@#y<@AwMs~`l+rFYg6>yu6k=Zd7ZZE%dX#>F^Sw|Q%&SZSTy&TRA6==5D314#rfQTa)j z@~<&a9>5|3l{UGX+?659g+-**3gX?ZZXL=c0BIeM`uT0{dgM<7Nyta-qjqg#Hh7e8 z9kZ6NwP`;MF6NMLIw#pvkgpQ^L!yZNezm_fkikB8O|O#Ph%fRAEqabcN?{}IzZAB^ z5>iPFZuMw{rV3LfDU8<=uAv96%XfkPHDnb1NMZWU%x~qG?kJDORS(3|_@VgR-2D1t zgvrHUF~ZqQUK{=6QZB=`QF`J6F+J`SgntS|%D8sR$<3>$@ALEe9Uv(OF68Jtk1Q#r z!6ax;+*fW*?3(SnO8I*>qCAXi+V}k-mu)2!4+}}8KM5oOQ0mr%e6Wnv4eiK+D>nN6 zJP#xRKq^8!St=@|_#Xh03cNVJpe3VHoc}yXg!nX2M4Gr@gZ{l>()n^w?mq-1ox}Vk z3rQF0KkJV2e z_~AofQl}gK3lxA;r@a6z;0lfoKK|3SzDT@|%7>+->-MAl0F$mOjX|XA=zahu{g`&L zasRN8)Ts;#AgNRC-)agUG6W>0#y|lirBLq0O8;3-Akww?K}NvQwdH@SziiC_M=rF4 z<$pQuKc?5Tp?m;H*We_9z@w}2LvlcSUiB|30Q%JDeEf6cA_XAy^CR@1LAmFy8XSW| zSK)pMAo{noe|v8ARfQLo!{pTb9P=2CL0UVm`@Z(;*mc1b*g)uGbO|m;fA?w3s_B4w zNH06{cW73Z*2|s)z+-i(xeU**l#EZ@97e zvaP7UJ}bAwWzhDlLmlv3de?W&y*xh?zYXotyKt8+jN`AsydY5N=eZcit=$`Lz<8#E zRQljfK%mtYj?e>qIHnY1s)&t74o=x59Q0YW`YZ*?*Xnc-rCN)O2^J2F?ODu7j2GI7 z9EImm=gwyc5Ljx@U`8|nxUsABGL%y-j?!r(W2y+7A3=N|TZ-!mNb1jE0}{XzSsYr( zPh!e3p6A$O^#Sd1KC);+E^oS{+%e*Sj$8>Hv<^-cb0{wy*3=W}Q}tn1Pn0v28OD|9 zxLz7%^SFL-Y7##*K)K8~cM#HR)JmxzuAifd5^cmJ7LcYfL%ePZ9hmYpY0D6)K0$5= z9Kfb}2VI}VL2m|3njH#WACWc)hPL#m!oe-TA@;900Ore@3u|JFGQ|PLgAAy6c?(6ro;_zIMhSU8&G4z>%+ai1AYEFcXFySbgd1el=o6mR6w9;t76 zSJanWM+dt7P%Z&8z0p63>$dq8EHu=Rxc2^<*Z zA)Sj|w{0~R^OF(3i&9){IGfwuWe8KdXQZ&9Y{A9{7lTy&Z9E@-cykG^SGjracmo^2 z(Jd}*0N;uO-FeWoC8ZSlKN#l?M0wLw!=&!$|Jq=NG@=z7%EEeaK97wJ80epfbaE+H zrr>~HAMSN;!ShJ*QufCPa}{ED1{>4%Bzq9@uiuZS``f_Pha3xB7S4AKoUc!IL{N>&>wb9Fw(=u zi#79D|WH#R$vN`1CkSTQ+JW zP_Q}}3av9{hC@7rjp~pSLkX$AO3o* z!l_!D?i;6c3#p5`f8Cd$*Xo~V3DXUwlEwX7r?>nmASqkPqh z$aP2gbAr(pZTwLCX}uZGm8EiyqaI_hk^eQyBOs|GZ4^#Q4Me%?^!WzOr%k$Ij92hn z^uhO{RTt^m>x~Q=QnQKrVSw_019l!@%Ty=6$ zUognZ4rzSAvJ~>s^}SH;d}X}V+e6qz7&_M;!u`G>2^QVyV{=34-E0V>{&dm=PPhbO$SsokNP!X9Z+Y8Jg%qbNiI9d z725#RQy0ui19EGnSza0XcOy49C`Wv~p(p}}ac(b_MyY6@v`iZ9#q*DVlNHJ|w;%E? z)W?e@66Td%$rqwO2uRDf=>1dPoFk&&;Q}*<)|HGUr8Kxy8~0x~Tu(0QdNb%RX&Ofd zX$mtX)sI6uKc1nD@G0)_hWtYq&sBXoc0w4g$&Bmpo~YsnGug;bmXHWUsAgM69q08zc{O}h&?gJ!^W%cvD0hZES}B1}Pr1vdej)86bkWnxpj%Ad*e% z{yuH9JsIKs(N=c~%HJ<@(rnP@jF87&0SrL@ne^kT>WSC2RERx6RumJ z5AT>&M&oy^%Ax<(29tyC?HJdvltlkwzeAj-^!M<-)Ru+Ak$=Cuk*PxcPsqFE*)Cb2 zX^PKZth_ffc5|nS%u#_BriVlMc2|`3Ld) z^$+H|&SMcB+`0~hKahXz(82b*?5pepGFf(rE&BX6I%PiY1H6geW1m4j-|@5;pnvo~ z)?P7jkj}z&TSVo3q#c)WfD44k zQRwfq_h1bN?PNcSUU2}52)~u-K>sWGWB-JPcFUjmugfu@^ad&WssDxmH9zwmD8MB7 zEj9*~PD8&jzm(rLq3jp_Y3SGN?_}3Ox$GzM2_F`68=Oa3xe_i{PwiC}4b~EG+7RD2MueMypfv&upt#R@Dj@`;nM*Kad%F+BX zw2fjF;`hm$T>3o;mFPWT_=xwA&tK2e?~i-@b?#V%$>kcwCzgv6-Dk$}d(AZ-&C5H@ z+CbC^5L&I!?}&TZwbB^6j@_h8v;jB?HwDuTI?&!D(*fPH+TH#V)N5nLuH*^0yH{Rr z(Lwiae;)EbY;ISkBYmH+QJNUU?HSKp(0l#$F1@FXXrns``5!dv`RT}Kvb%)&7QiX( zPII|PmRIgKY23fyJZNqRF^|#nu!}Sw;rrNa!EEH;@89AsLikbP zPG>cTc18!;o5Bk~(wpWB(SAG!ve0Fs|LOTYBjdUIo_yRP;4KD5zA{^#*UcCxagl!B zHJAf1$xnkw<|)MgS@zk}2!G?p7LVHeuY`9HPkILN1SU~BKqm7o#3z=OzLJ0EI23PY zK$<9a{g$|DBM|0Y=K`3M06l*LCYb<}qSyiw=~;v?vV`Qn&t9;6lmJKnTl>cM5dXim zHrYe|A6Miw14q%{f<}q!w?q>FDFMNf{!c7cearp{GyWd{lKejir_f*jB7E*U zxZgiIt@25zFMlF5J6O-y51bbTtZ%{@;VFdQWMA=Vy?Bv*(!U$=M}&u*ofyZB{#}?M zG5E9A2C(Po`U>bRTpcq5@oV%NLkRHxVbse#3uoF`C$t^m(iFY#H>h)=HyNvg89Kf9)v(5(_kF!e@4J24?uZW5 z4-5DBTcA&2o!h11ea0Tu2-tK@J8G240v{|V`B+EgGZD6pqQrG(t9(v=3F)7(XXO`2 z{d2;L$oHuhTT1#Qie0%SF4}&BSz{w#0v?^WfaJ#(j*|F~v=-+W@_iJ&D;z_4zma22 zT)8D+QUV|)uGbQaNN;JcIkeuNchTm*>O6{Y;*#w=a3miS9z^-C_yCS%ywBz5h5ZP> z>Ob#1NMQ{sT!??gfu$se`sW#WAL3tPo8euVIhgd?+y*F*)#$~ z4?DLbzKMk^H^ir1wPnJ$332)!{~~1%J9}gTR1Z1$xfmTaA93ip9Mv8X@ED_`{y~g5 zq&trY6#t};bi@&=O9*c zT8|(0@AmOtU=O6*eSc&)^#0RCP26hXJI+w~S{1+dq%D?e1GwOCN^Qeq_dUV{U+mYx*uP}tftfO>@ifhIW~7Z7-qEwKx_ zD*zAb3R>xVEx)d)m9ERrEv!xFujSh4JA;4-8uvL&ep~k%l+#vFOF#|*N2SmLCIkFr zfS|(KZfyh#73$q<`y%~&n$=yQ_=4K*t!b4ImQWrn9`$t*k8nQ`>U9t3JLN98ud zl@{`+U1cFZfhFBN^jBh$CIf_IAIfc~@0hNKa@vcbS%;6Ljka6vwJJsj%aX9y6oSrxN2UNO#XO4n=8H-2>h;+So zBa>BucEW;BKCVkFB9Wes9z--G_}y{XsOb8vl~zQ(RKFdmJK?mCOsx9#p`58va) z4wpc=TlkyZtvc=NZ1*;%VvuMp@+B6LHhUYrTI8=+w|aGSoqCg}O31I@B&`ckUI+_F zDO{&+@m3kA2e{n|lt(V!YAHU11tln1Hd@8tyTsk-t_+Y*+$63Nq4p+`fTu0?7BO88 z0HpOH>Pu}CRZ?S{O90<`eVtADRxr!?#RlFJ*sYt2^bytwYq*E=fGqmMem5*2b;o?@ zUf(@M^Pog8$?EN5|GU08RbpejDr_TJLShXz{f}X63A?wuit$=f&`^T%ip1iMz1q>Q zO+_7hQG8Qj$DYu>!ci%1EG)FJn;G~SYNmuL>+yQ9An3rRnuB^J^%z|l|Xe+rPqqaQMsk+R^btr+2d z7m$SeJr5jRWYLKB-_ouRq5mE*iSshoq5QuGNTU6cAF`Z8@t1&*OF#(2Tp9!zxqun=@@EkGi;5c_2*6qbR0iGCcQ=S{xm5HyuH=9&RefIru8_~CBkp1%4x z6hP3`M*#3N=A8b;i?QXOU*!HBnw2x=7pR9U2L0l3XcC6yp!D?sgRVmP1PEO<3YK-+ zyMEpA6=-c%c%}6N8f3L!`4r+4P4X#O_2jawZ+%wnl|Kg%1EA=NZ!)?On(DIbig~eK z{x26Pfk*#0&PPfh(dFnL0*N|&0WIkwb@+c`y=?E_p&04S5@aRmrcG%Gr&>;E~WJ&fI@AZ?aT1od#atA2!tZ- zFeIbTLL0g?US0`p%)0vWckn@0-bKH>H$bGS&g~r@LVS7F&dWX2<7RKZ;t6U`PJKr_ zuRbNY^;b>AbK}^}*POvP$|_VlF|bs?l(c8U~RafG>{h7$2C5dY?wr&yQw!;{AzhC0VETd0j-4`4rs03t#lAeuEl60gMgb7)VnMIdWCjv zhbdwy0Pv&E7bl>c6(MY8gmk}^Za0_zub~6I^axzq+7UEd^O4^OHOnEb-M{yb2jqxbNJDyZ%Qzf@76{K>0`M5=pW>^ z2@Kf9)>(5=&Oz-qXQP5~l3HQU)af8zbm>3z=BcAy9_0}jF%(KJr08Jjc37lXn8J7q z=elDNo*BXtRY#Q1R7#~5HvYni;vl3Gs30;JhsWj zG+A63iT17M$kq_zjYSxNxXxI@SLxV*v0_(TI=2RQj)QAfwPx|Oak9i7?_wPDv4t7n zSvGB?17xu|vy?V`BJ5b{#539l^nn%Z>~om z3R!-l1MNDgIvAk<#PFtjLvcO1avPk5ap6sK2~??7rh8=JhAh4eZ$)`B8@;j^#CuisnY%5F4U=0QaBKl*N0Mwjs9qpT8;d7o12wcNWWXy z?9H~3Pun2Qdcj++W4@M}D-BUfB>pS9dfeu#nR2TN8wkAnse7N!`Cb7>&o6*^Yp z%R3`IQL^}zU5@c34rykglkCCe`6bAY_#C`n2`D1VFk}I&w3Wb+(Kc;dl1syGI<9le z%UK)Xh1kEj>z6UO*O}Hksh4|$g0Rxp?t=LPOGG6(9?j>$R$dG0QHM0Iq7J&+JecClyfc2CU#3Iy3 z>ka{dWPz*~+D-GTuL_`undtVD@E%aB(({!p6_ts2p5Z)qBu`+~qV)XR!YRC|r*>qdkW&<8a@wjMN|bS6VadejdVBwcQ`}5x6%9>1$H6+<{P9muMrrmYE^;Q_w#u zz#{|W+?_9#w_`qwi-C4vgEX}`5Lz&<7+D#K_U=%ZsFga#sf_WA^6`J~$|N43NK_Y0 zw&-ANg)|PjiJz}ji1GZQ_le9@xxF~_iy?}I3f6yETFb#YD_O&;@;1l)QQV0BW8gAO zkH=N_6urMDaJ?nWPgtHBi1?+UWDrobC^ZQP9rf=hrdY*u1Ax@Eme%Ki4P8)P0wfWz z#Jb3r0g~uFNCyvd#IbtM7N`W*Ya$dDk$Rz?S^AieHeP2Kqm=Fpo;NQ9MI{&?%E&6N z9^*i*Xvw!Q?(_;VzZhYCgh(#wChLM&px}O(QDQf=duA}!D+y4JGA0f3OhIqb1|tDY zc`go68vEAX_$`2>_TKF`oW%RCwJ*~J_c5C1jT~G*9uCiF<8HiFW)S#0)*jfA>LC|x zIW{(qYkD_y!F;UndKsOsMtRMpsV=!Fry0MDkPa{_t8<8O#zo=C^4`YvRq?#(+Kl^D zU?C0Z0KeKjwG1^gHLE21Ri0A zb!q<9ag#lomn&1_r9zY^^FnJ5`gtxtw6=3S#)CMp{kqdMF9$Sq+KK+K2Qk;RVEkD_ z+dDstd5DA8T-1+It`>wBz$CJi)ED*cHWw>H(Oz=hHVWwvYMa7I7XI^JyD6LweN5BB zSvCNP2rjH7ve0seKi?oQ=}vh8kAp+uPJceyWjps^ZbVVD`JlF3CjjT6XoZWgwm({e z{LRh*c`5XScF?bt$l}mpr_MvzG0hD;4sM;JfC9+^&r4c^1CT;^-KT@iFWEExqb2|& z9B@C1@Q3mV=Rq03OLSbgkEH|eV=Ns6zU9Bj-sj-pH#%V+MEFzojCK_ImGDvYl7Itr zA0QG-fKF^7=?nJ#$VU2E^L76*q`%EJ%a1r0!si@Uegf$LmHfw%4hu&+S%xs0ANIWABVHJU-LulW$5o6&wo{;gZ|(6zn00O&By*pC|N*y-M;`N z{mE?gT?gQY^E>%X0r7sTL*cLF&xALi1fURz^ri3{p&9zS=mWHbK%@6$+eAC$cjRXT z99Wxg`%M}S#I<*#r&zMw(GoTJWU1pF^C;p!72al_K>Tk^*E}o(M2b$D_-u&I3C+R- zh(9YI_wPe|i~pj(*C!z9nB0K$x3s6VTZPzC(#`}}=(5nxbsvs>+99{Kg|v=Bg!v(=lbLWQl;6bfhbAz_;|72!s+UZH#h2+{A0gDgNH z1=mO0lxfg?(S~qhia_|a9v#TtZLSXJcV`+@a*@t%kR~9$QQH8=dXa3@!!@CyD@)gthK?C|N`s=b~O;$%Wr>6XQt! z)HxAh9uV*%V_pChddmk`Wd7bcMapJW_=9j7>ED3UKeLd325)zejUQK{X2&XMm;W~Ow>E~twEJOHz2!WqgHW1#{ z5Z0h9o{Je_gI}j(-Uu4A6ye*o&D>n1lPmYh2(MFO;J#L! z#SO=}U#`yJ%6aS$gmbKsDSWRe^Q}?HPhh@?^g4AeCt$%@!_7?zNMC8sW(aU!C{EJp zcjIgqz;+vbcTHmGcP0IU(-50}Z_Z-`yk9qpiat)o`(Ih6PxNr`t}YKJBb_WRjYIx5 z`h0bigs>imw=l~>0u42Ny*iu6y5jH9mvFeh=w59L)Q&9e_6X}9`<(WGhWW@gBQ18N z_$%mdwA0Zui2n_q!m|kfmThsKhkhcwC%k}o0+F!&hV}U@W;6gK{~hN!#CzI14&^8C zh?FcPJ&$+-m5xD^a5_KI$#N3qOI)_S=fCAVCDZ!gIMj{=JbFEPS)liyE59lnh9)4A z6ZRwhW#<{^ z0mP?4BnoR!%lAW%`A6itp-*G9+@8@pggAVM83RcaeoA{(xE)~vl5Rto0Ha$StcNBn zBSDWi2hCmn_w@+}D{6@Mv;Q!A3!cm4>_fuM4E?UjxN3_Ybaoh6U$qB?9Vr^04+z_l zKe3Qx3JWI33CK`D0bwpC69u(YTBCwiE1Ji- zv>l?2S}JyeqLzwwx|_DEZM&21_VlUKukX3fUDx~Gy7#)?=YD@ro&bWLKIeV!xxLn1 ztmlvK+GBQh_Rg^P=lT6^ahhC=Cwnh!AmMu=zT4g|VH`<2V%yM;<+0VqY60)X@!9HJ z#1HQrt5%x;BbrmL*os3JZI^;bgFJvWCkunYGJuF&07VGr<^rf8J;`@gToRuIZxA1W zI1!i=fjUV5NezLZp$*@!L*j@BC^Q7~=L!W-MCk`03xLTq@)Whl;e(uAQJUY5<~)!MJ}47eu^~e zr>Ng@U`eVB{gl(mHI~<)AL}^nJ31==o3i#0Fe$@%WuMC1U5b2JqjJ6}M*P52*;*08 z19P)>7gYgx$j#hcXajgSIq(}==gT-b;G04|1RDy&(Js^*fk^w~P4e~_ zzMH+h9_1$hX{!`!qfG0Op=G24T9dae3VTS8@002Mo-875fhJwLA$>2obfb87uSD@l zi%8I2>MnN^(n&Ytc%)lQKake7Bl){4A88 z#82WUqW_1r3#PzhJ=-444ncZpd1*6!#}>Diq?fw@j9QD+$%0UUSzwm27eS=_R<0*~ zPv&)SX{E@Y4+}^H{Ba!x43+2Vd851m@r{Uwl7%5!_a&EQ^hc$v+??Ho$VcO%NX0m5 z$osk&@ieYVDL+6!TJNOz5)WZmP%1^c2|y~Vfx@CuQtR`MmbyrXi@?&hluB1>u9TNv zhV#gE^P0*@{W9|k0mC7pgf0X~@dE?E#7$>vY%%l>1u&$O@|>^A^>(5^m>&`hq4 z{;BZw;#Ee03v^cZH_X zqx>T~^476bkDB)tdkFQU!pU^3ge1#X;saO9QRyG$f|jk`a5G-io3hqjzwJt`?8@xC zE(k%N>lWa{#u(U`J_cY)^8k$ipnp?M`VboMb$b5Aaun`?7tbFmH?(1ZaqSf3_XcEi z2k3Hz*7tAeJ|5*e`e&xS2(8a(Nh<{C6J+Fedk`NQ>HUmr{x^U%t$pLy{NhTj;QKXR zgX>fg>-Y6F{}=M}84cYqjs~@4bas0L3d==l92CG$8qSln+nJQs{e2xQ3|K^#jD83_ zia@0y=76ud{hw(6WlA7b+933IbLN+6t8o6Q@DEyCY9Ht(Eiu(+4e92gKDcsAn}c$2 z?UuF??dZyCNt*{v&&uf5hIA&I?LG?{&u-}%KfpNsOHxnExQE9CR?*Y!j_!#rN?jd3=ny{vu!#^uDeN;MzXbrwHf9o&G0 zKK!ql77AChbJfY{-wnnRtu~I0KBhiCN5(>)x;!o;ofh=wc~Emje4a)C$vSPZiw!?{ ztG1HG2dcV3qlNnI+UodhfpiLQtU5hU>(Rp=cku}4ny z0ZIfukOi2e>q)e?UImb3BA>XOUxj)f5OskTJS^pIYhN74a}{AW(j{-Ol$D9`AWXI^ zU5p!mLGu`ZEXEe09!g-#YUn0op(_bEUvs#ZhxV;j;jFF;fQ`D|osan2v8}V*qkpvT z^VVnxi`!k=5IUr7kmeb*@V&^L=%QW5WN#4i6KFv$#R44b7Az_48)R~~ox zJG`ZFSo*<#yl7#aK&P2Jt`l1)j6l8>=5%*3>LJ&B^be`^%sgQf&SQ_ExYLln*HGQ* zP;zlM74;F2G{r?f8Y|q%Hu|4gDNSXd@s-K^1a?f7&>n56H`&C7dazuciu%a~-gFPg zkFRlSg7AFm3|eSf@6P6F!T%<=Mn*l_N=a_^{qx7gMaqp zj20r?lDOGe&0;~=Y1SJ&a>a7gUyu0X&S7sglq_J)g>H{6m#UFY7QsfL-pHjLxnLTK zc!jUEX#sOtY^qx!Vf@CbU0Mj7V~=(7cVj*YuxK;{`(eZO}Uzw$iiRGYO1SZh}C0S_VThUK(kuUVn5Ai8{iHvpzQmn|J`{%?e9{oi3 zy<&|P_-X_ir{wyv4EZU&fWduD7~PhI<4$!eC9>QzBPP^j1USAiM$X3hEs9U{3R=h_ z&vdzh$_G=uavsNng{~shzd}Yhj&U!|@rI)uxw;(PhJ{6Uf-$7#002M$NklW)JCHltn|)sB1^_hV82R%VGy_mB1QdF~Js^Icuw z4Kq+qTIP*GIdU;5d6<{V)_9!;b)Y!ztxiLHW*p;K+@j4w`dyZ$&1Y~QaCS3`Q2t(L zFS7)Cr;m7)GnkEP4f5|6R;siSMlJ|PNa6X>bA&A6EaXRPsE1j^l1n^tK{_HG{Ug*egOG2&Co!~eT_=oB&l4~n zBbROVcs3vByC^n=Ek%B^_*c;Y4Q9j#sq~zip;a`YznN)TSu@(ji)tZ`Khv(N&uKwD z@;EQI3fIe&qyiJ^!W6rxoW{?T80D)4rj?KSrohtIzz$qrd3-CK*L;4ORML*~W2Q-E z42>(Xrm&0V#n|?|MdACv014VWBt9TL1dZtVID;9%=VKn$x}$7bU?d=xYehb@qIF;# zKy!I%ETcNKtk{>dskEz4b0PuE*C2~$z<$|&7-y6D%FKai$A$S~k4n!*J_3rlo;cqW zkhDyl&eMYG3Sov&&SD&zGhEt0Aj?*?piCC^Xkit1$AA`sZ!%_S)PH0dNkG2cY&}0l zpoR36v2h3=&{p%~HQW!?m9eT8j2mTrOyU6+SbK!I@env#ECU?S54ww0Y+(6^-K7jR zwv=1MWhQN4-6}3~@%-`)XQ`J2Eu@78fFFOKG$)4Vo4?ze4UH@(-J@)mW}v$S$7A`?)&N}3pCu^5lS_=W)*#)DU-X1Ex4 z0G7yd)heUf$ZWCRUNn|K~et5gC~Z{uzXXd(Z0YkeS=V?OAO z>U7jgV8>kKizW163Bs-V?fwcC8-+@F=bT%&`A7=zX|cK_^7|d z4Z|A*a^ceAuP3!0b~aKz{V{7B!jArwwT~g7<(0(k3cwlv1LdSoz|E)5(-v)XesjO!Sj-r@s~F@gxU831M4*B5|8e8@#V1 z9kg-f6*cE=cB~SNGCwawg?3}eyf6h<~~%O(~+*U>(3$nx7LS=R)@kLa8D!tSIQa7varF;o#uWb z!a|kunnV5lf%S^>;{^IIVJpWt>aUmmyBvTC`pf!VNN*QkO5CZ_#{5g%9Tw6PFL2b4 zXRTJz-~py39^>}NwDEkmxHgXW1OH}siH&*V98?!V$yFMu1^i}dj5dZ1pXOQ2(t~=0 zlPVydfFjDL->fc0y$@Uag9Qkm;C8EXB#i4sV=#jW!K7(W)7tLQd(wl}o?xy_0MMa; z{wVQ`b(>G`E3fMJDVvbqmS|Blq`#p*=x>+k`rhj|s5mZM#w|lSxo(>i2Z$s#x-)FN z|M;7vsZa{jdmvd%n#Iuj&<=ODiFQ~TUmHt;jhh%|oBi*Gvw6#mM33*kSBzZ1`J$S3;Z2Z;aL`iuWDlt7+yN(dx< z3?&ez-A}q~^V=^86ZrEn;-mZoAe}>)T(6N5K=cXn6ZrEH!bwX^mxQBq0)*&zq@RjV z0+G1n@s&@ku-qqM*gpr2fTPQm0I4uN1d}2QOG!&js3)?(MD6_y^$^(8j`)A_zZB1k zQ1J`@T~h7~<%~i=*zc8hNiDc&MEpNr3B6gK9vW61pO!L58}IeXd%nx==gsS&sbsk_YnRU#dqlV z|04b|+0H-Xj`g;P`;qc1uzr ze5k*PcLh8beAj;l@xK%S7(ve~A3HBYf1{ssUV$dTBM$kL_rzA{r>N<9XcA0x8* zZRqFzr_QSuo-cY>{uc?}$;*H1f7_yCUdlq)v>HHYpKrxT~dhaGwz zzwSJWuzD{rjP(tmk}_;<=ZU6C%o6ulOy9f7`PChoEn9 zFDnm1DgSYffX-I`J`3d%&-wQwd`f>#F_HdLKPKJ*eOhdB3@BMFIwImZfL7cFeO`IY zxt)}=oZEe*TaSuI6#|hSc5XqKKqEcCeb|4>zaE&oC5kU`+k3G0A~`#bjlN6+U+ z68DLFV>BM`6?a1)!WRI67%ho=#NBZ`HuE)ib<q3P4%bAVz zot5DY{JMxoICtRg!WcBNoCGk5n-+peWDzL>k$S(*8uW)0vV@fREr6u9jHB5-q0Rl8 zGmDWw-uKu594EUg+ss9O7n=0LI%CtM)=2{WL1=|U?cc|MHaO7+V79*j%<0$Ia=P)04(^c5!xdi2&`H-Lsg&Py&v!k7XYt0O<-% z<;&`s)w2lsGmm8+D?+{>)CgQkxppHksTjv2Fp0_&m{f#tWO3{YZ5;S*A=3MQJ@8Ng z@<;RPJBoP{fk#OoNe=7dJ?Q0N66PhXr$za%&`W`(MOT55tH8)rV1!|=&V#G-;Oad1 z&zlEVC)hs>NE)7=bB_HA8-K90!!|%ObEftFZ{MS^ywkfA@ubGTUx&41xA#5((8A1? zdpD-^+DnwruDS8QBTPCX)Lv)@g_DZ%z0kf3;VAy!t8CW!UdvG)F2j1F{gv@dt>;>( zHt?GpQ18(Az}+_>e7Ppm(eBD%;I}t?jqy6E?}m1yK%>i*z@xMqkS_%wUC@RMwp&(s zyl&T##h-pn*PuTx*Cc>+TX?**OlWie-DyvS=biR8!T^d$2f-3i+IyENz#NM2_Pdm> zL;jk9Qn&y0614}M@AfaK?-I}`Z5#TVEFRqsC5ucMxDM%=YWF9;M*$*rpNZ=RKrHQl z53gU^Uyu)A7+Gwh@zH$^6yv4)E@)NGsB4cy-P|EP#$vq7dBy4If1y6_WIFm4_INU` z+ko`0{GJ392~7Uc>(4fd!b({S-z%c72>-J+sT#R z$flB-zTeQs;2tVw+wp6XNq2`kK9G1X>CE6U!&yD=jU@pQ9v1RI92@8(qn)o6UADYHyZMlaJRii;$ zihO$wfJs6KF4ZF68g{-m3F#~1v$b(G*l?4k8zT{}mu48Fpv$D0#^`paTf>Y&`tlgm zMcABSjz+lNn9frEMaE=ym7x` z*%31RgJOy~Sj`du6kwqyx$&wMH}_kKeo;%(`=Q@Oxx}Omz{zeoJFpxZr_vxZ3)iW- zy)f1%4q(v8wy!%0mor{LYaisBYFD&mSEF99qB$G=I$14m%EoRK(&zAF+KUmcwMV*q7dD2aVQyZ}aDzAx`Db{;+X#e;K%~e*5^bOpSVWdeM3j$Q zv2C}P+tbk=!jh^3EPMzvg%R3CC7@ws6BZO=tL<8}_ZYWNT8rZlI5fw`2B}aZjH(HN zuu{}Ng{kCoGEu);ADeDqfzP?q+J|xvI0nB}rj6iju@wx)7hF?K#rEK((q<1>}bm|^08s0Y?qb_^pDs*-b#-)j`n*B z$~Egd-Fm1VY;t9W7F1Tb(^&LVTz1Fexa2};l!lFPSnQzw*~%`JCUl`)#u|5qjD^Y+ zh(wl{CZRlm7}cFCZbzRGh;&d}LG^Q6yg4%3jRmxc8a4vhS;9~O3;zI+2sBw^&b9^VqN?UB zdzg*u!osy$I`T0y-O2{2Q6p7$hSzIYfO_~@NsBtT>ikGt&n5C?y8`8s022D00Eujr zC*UX>{h9=l41hQCm{v}`sI%nJt@)Ur$^0JXdmJ|G>cVn4t>HMP1(*5E#Fmmas5!|j zMSE-E0+Pn*M0-$6-_sX?B(jKjD zUSZal0!#P7xyI;bj3;IxJDx!}KGz&wj`8iyhz*GY%<$j>(8cl9iRFbjpM|PeUWD@G zBCgDY#;5W0&rSj~O9I>vJxM6i0Ghz{7>{}*FezyX3CD|+EJhK)Lar1!0p|-BWx4g? zeI=XjPsV6D>ucOMjVd`8=SddH3K(cmUC+l+P8%0+r&96lxE}|TWm=$HZcLL(Q6IU2 zEah=NZs?+Iv#{76(Hh=wM#Z4!5|_X|0+L3f9Rws*p?(@KRfs3cVPlbRm%CCPhkEwL zR;v>XJXcgTKB)ua*uBY^f^xTT8;t2_4}dv?#&0tRV9vuhwRW=eZD?XAy8!v_wstV{ zp|mkv$6&!WSgX-I-eoQis$-aE?!tgTDgvu$T#`#jS^y`Ph=Z$e9^Ndu68TlF)*Xs| zU1iR+2lGf5Fs`BGf^K*N^2u{}0lG3?YYyqc^)aU<7ar#elgt9tH%FR~o{#>WWmg$_ z(=a|_oTTx}F&LW7A-G=Ao3lbQKqj@z&t1QoMgUUnPoO(Pj>&xAN0f9%Mt739d+-Du0 zcV1a@KLLPJyu#?$jOU~_i0O;-t_}vL({oU)8e;aB!+Oag*>rP6W>yB;8y}lV?SP}s z*1{@`YY9MI1NsrbC;cOHS$wKQ3&JbqXc61{KS;;-i=l)ppV9GlJnC=hq>v!N%f(Df2oLRz5VK8EMOJQf>SVv{!? zox&ElfTQGWv5iS2qc;Q4zEV04cg7pWCr6@Sua($(EW66 z(v{?4cC|FRiQbQv%JkgV%=uCU(zgh85-o^tjMd16=@^&%bdS%Z_p&KLUOU}S#m<}| zbU&S>Wk-sBT_2yW(YV>AE(mD69`Kf{qfqZ5c|}0)QMW2<k!W*H#P(76X!{6@CC{_@hRvR&WB>mA;97t@gWf) z5%&sr%mSz(K4}>S)&I101nD2@Z*UL#0BL}}v_k*c@4)6L>F@Nnp`Rx{(tn!32Ca2k zw;X^-P6#47%Fh(4_hbL({*%b}sei_Q8tEVSZz~q!-xgm=Zp1#%o%9VK*V%eN*&By) z_xpR%{-?Qz`~wKvTnHk)rM#fulR!KD(AC>H@g3dL$r8qUiDwZ1x$_}5W6@5fJ@KLl z)k7fZw~3E++FT)xBPXW#2yx4SK}@hPzAp~T)`9?~DN4g?F4A0Uysm<;GOILGx}Y8}c);8D_&63R#5(v$kF$_f@1HZTfTn%MYG-0mv|#<_mCzfPt0{@C9D zrE$MbLppc6qCg)J56X+;DT0njWL~Ay`hbaUV%& z_AC?1X|Y)b@`+nwGZ@TweG@x1fI6GC>BvWxB(e;>Tztn#f=SM4 z3m~2Ud+}X_36%LzM0qRlKScO%i9h*C@CZ3RQZ52T1pE-7^k1#7{EvMChyF?Ve~3Dj!*N9)Ta~pOWDVuHy8+D4!rbvT$@!|LlLlT?CmT z@F;R2N0ys@f%GKsg!0tSA0Zq8L}VH1J%{==1tKM&KKh6Iy??0^phV#aRQjs}P)R`; z<Nb5QQjN{9Fk z2T;lRListuf91aLe=gGX``mv^2`#tL{pAb&T;k;f#+&lKPWKA}ZhoTUc_2QUxC{C; zcS7GM;rZd;p*I9c5J}%8V?HKswbmp4h_AsWAig{JwZaS)-*2&->>9+=A75r;9vtDe z#TJ?X#Kk?rau)N#*=MihF`t|!dllmEa`p);V)!2McL__O2jdN9or~|8xDuNt;W^2y zf(=h7yULt``VO(1lHVn_al6>1D1V#2i?3(sIlJAY^@tt3!cK#(6=Y*f4DYAjEKR`k za7i#dK3Jpo*O_s0VYN!F(?+2F&GIrsG|+B$qe1tXyTt>niujY_-TDpzz^>k+-wb`# zc~ZZV!~M^HM!y^V^oI4kes2QvR{5FV0{u{YM|?sj0QP<7d8CtzwpTdZZxgVP1oaZ_ z;)|p@EF>X40+Prg(u)ZHO8>}t33>rUN`&CjIsZN9xdZ@P-!k8;PY6p)m_^U;4=xrc+LIsbA0F2ujc#l&U@_f^YM?hq+#`2;AvXvLIdyb=OS zm2#Us$CxSs$8#rLEG5DEQG;L%}(W6DF^;Q;D~fYRei3wN`Ie13~{vjIi; zu$fHf4nZFik8}H>1SsueQyLGo$-{L_-0vI|XkFqscQXUU+2}6CAGdDN={a-1MF7%6 zikY~@qIHXV61Sjz_v&~122bD3N0j|4#vQ+3-4P=oe51Qo#`l`N*j`}ZJ-202^CaXe z>8#KQm?&&14F+RCaBaovpg2GYSo*2x1ZYqNum<%Ictn3(;N(JWNEI{%CPkX>6~qZl z%9jf?`X1rD!uVk1FK7r|u@!ZeH4LkV#Tcd{J{j4W@KhP8!@C>JTQSonbzjCrJxQHJ7+>BS5JQ@hK%sM?;Ywfkp)p zcyu|ClnV1+QG77!y#OMeED8qWJh+CEU{dy|{GhxFVJ5G$jPm8?ts{#ynMQ5{eeY-H=C1pW zM)94wjr4sxupzsX0FM5hSq;TJz@$?HwF1=FuOZ{x{L|3R{)h595WlFuk*6YG^?Z5KlDXdCh;Eg{(m z!$Q(F7x}dP-gYmg@ZkTRnW|m|OXcHhtHv;Fq!h`P3S7x`yvb zZ(K{2gmrphkU2OV;E`0$Rv^B(qm(JH4}qj|51L-mML-!JFEq+pFrVU_kpz+Ixuf)b zm=7&$K)l8=Whi$!kVL>xsf+QGa*;*=5`7mZU8l7}0V2_N*xv(?qVy<#RNsFTM2bMA z3qVo?CjAd+8TutzUlq>pSk5sTw@J{5Gy;r{WgR0>D2uc;j8B3|5ulXPDE$f`sb^+S z0`sl_lb*^-r|ghr4gkFmm zGOF*|(y*THk3iYJN4xh$JIuc6Y0dvHDBI^)H?+U3rBBapd#}{;RC;v0ip;)UX`|5& z07Tt>gZ63tGP|vX2L1SJ{@dTz!D_#g-EP2jAwa1B3c#rwhjIX)x@BIe7XTz!c^(4f%ljTi7y>4jarF&;*? z7B%#K2HI8>uuahRVzti;sIRHGrVsKBFE6fQU0D2RsgMS!SRi34YjO`^<4+swCM_*! zljRX@*g%$Ndy_H&Rs>7D+Bg8z2=61{?UAZ-K;KG353`h(1PPm=_ZvnhBpfJ z>WmmR6d5@#LYD`%@haq}1;GgdHhSaOg2e}kD$O+}B3>Wh?{*lViiWu)(U1v&&g*u)4#mc;ug93odQsMLI}5A%Bb6;}$T)`$Q?szC zPdY3fHRbcYrr|@llPkXQF>Ih#@l|XZ`b{dZ`#>j3g{^&1|JZi8K*aHeYXdsEw}#BU- zp%x*Z98?8^aNZOy?8HW`F{m>e3mY@FVF8EpoTH8IC^3)^uHecLUJ#$qQGs^MGDp?W z0tUHk%Nl}qc9cu~(cbY|i9{R2wbCeo!+DZr6oH`y**QX$itB8`c2qsCD>gu@5su;` z3rdk?B{)E{hoCNm;&S#1`)Xqk~%rhp$ z%F(`C#H~DC|2Lc`o%=9vA|UCeKxV63Lg1pZ3LEI|*s5aWBe15{z=9&z?Cc4!V6E(u zRUCJ-x6qr6_|57S7#x3tA=_iT z5M&zFhVgB{QWMh264h`VkAN_t9`jOwO|MoQ2X?5YvRIIk>TQYYvlk0APskPCxO8Z2 zkxif#xr(Ftv0Gi`P3(YrtGsID+bym1#xt0Q>^j)c!G@W>J*f4t@UQI9W@$Lj#15?% z@rJq~E=kDmE@ws=Sa{-Bv1Ca^4{nOld7I8|em>HlbZ)oSq5PBn9TxS!l{l*3gz|TZ zT6{i>{(xns@rYNL8h5aaachrv^QVPi0WI_q$Tbq_>tgeSkvKoHI3>8ak1((>h2v6x zjYD|5xy+S#^uLDwH*r0g719(I{pcAG(=mYS2Aut2BP^OL$TK7+;l__h#m8G(4RG*;e03wJa43iN}b&NeG? zJ}b3ac5v%OAZcMBwi39K1d@2P#~ml-Vu6KRJZ64_uuvuC)&NYh#i~M-ujk>y3+;_8 zCoPIiatqlMkaP^?v=PBTobPOAWJl&v#A~BEvd|8?ALXEb=P;wa92}>P8RcbZbUzyD z4McfzxkvZc`QAh!_e-?boz2tzY9l+}9ftO9(H2Vt@DY$SM#Xp`Aj!jZ_7ra-@*TD} z$Wx&=8|#B90Tx=-wQ(BvP4a53x&gq2U2l#>JNCy`o3!wM6nC_mIL2RMyD=B_{5Y}G zoDaQQ*BDu#jjb(g9rEe1bp~w=@AXzOG(UD~_3`oO4~<=_jYB>SfbDn|;|vy=CYYG# z!D6op;q~5Jmn|*H8%Zom@N4WLcL4nDK>$y3k`{- z>pjn&$kKu}xoG3jjyb}3llvC^#gAkE_W=J8OgqZF#77Htv!HK+VQ%FF^Zh zgGsG?!^QACZ5m&Kl5X|0#NY43qoUVEz~*;yDc3A&p4SK|TVKvYtXd zb5QGmufyjHSvndM@Et79YeZMxqMm=mbI#=5-Y7Rgu3$4xQhh+>k$+<65F_KuFx(II zO>_sd1T2xuHnONRH9o9$z*#!aQLWkQ&|mWSs(c>f7?#rLIljo4*iP+Vs)`+Cp=^aT zRV_AgU1D?8p*Y?iW<`8l9QQA0LwqWfEM(PbG#)f&Hu4?y8%zQN?sT^DGZFuwwO?4^ z;XZF27M38~q93pq#_@bg>~ZJDFn;`PF6F!5*@ZVG+88q&dY^gB*WINO@+ol9#sff5 zw%apQY*Za%Ib95iyZ!DMTzOct!B3HIzyt50vA<)Ly9Jx%!bAzAioW(-os#l z#$Sr~m#urnbx>G55^00sjQ+T|OTtE{_>{jphOqO5qEWi|h}eMguO?1#YXoxjb}zS* zC9vbZglYmP@=yBP8CW*5eyZrm|10IRLO{zOxOOqd5kT<^@mV~t|D=5CJgX46bJnpC z{!o8SyibQqEyqe6ietmmdBQRrSdvJbwjS{TGKrpUL;tJzhXk@<A&dTCz3^oQ+|tsjb7!f(u(je{P+B45q`&i#XkXk*?Cf-jZy-S4%v8~ zB_31`cw`CVG36E?8_m|U`ke^?PMn>1Ku165uP1&2{ZMI3JdF5HoYM)sE+&5IyqkC$ z`Wxqi#PdFZLMb50PXS3#o5Oh~KGt8+$)eFG{?8OxxDn6!ryKwPA^;^)j03TN!LF*!U`;IB#CMU-CS@tfpbhXN3XNNge{~u3 zqyqp7dcpyai1d3MO`63g=WP-|y2EcsTDXiXCDDAQ_riO0xNwUhzqM1SV=&*H9qeos z<@D_g&404oH^WAM_}hY60fFRxdxj`xc7D0fK0_|>0tXuO@(PjSbc&=u6< zI>rTF;%)T%pY_lEw?(pi^E?0N76B{2cTj!ef~z(Tz!369;L+t4i6TIWfTgo27Xd2- z8lBx341K7{_&f~zsa|1}Zj zkLroQqW^`11tbNQhPZ!LK7~dWks>fD$`=7hQ8>~lJ_3<0oR3A3TeV3nJkzc5>$aerlVE^^g;2~MU$Bm^k?A?M4u5UH`hwZO&SCL9P3(=WFz9|@SnD-<|2t@^(AyHb zV)cmM!>%=F#_+z7vZzFVbQ+3s^BGAisUfg_O1zxM^E0SPT9Vl$*Bi7hLN4g*0{Twe z!O(O6m~s$LPP9+IU2ha{-*HT3kBjGqa@^k!eKzs1qT6^bD$gi)qo3a4UiBYJpdS_2 zc^cvKxFg%p&z10gP51Lx5l*^r<8YrPFbVou;sf!g&`OUhs>t6yU`ENT>^q!f_!r1CJ{Sn%9dPI9+GpV1$+ZcRXas72S~C)Uj|)WgAbn?cWqSZdB0b+va`$rwdA$FLrgaeYw%SL2TI0BIfd>W2=${Gg6 zM|1#$V#?#gG^8`7okN;KB_N8zgUit_fJcK`L%?XzCE+MNsmNd08Cp^zrSD)WSBc{k zq+GH^mXRV5i2$ie8|iS#mIRW106@CjQWD=*lmxf9ltm=2Dg=`9y-*`dQc255DgcY- zf_nO%%ytXpiuUhOiT5gM09v@bT#obzOo}WfWiHBFSt`Oh2FKgT zY!Gf@@&3;4khb#pE;bIqCK2v?uxPY1PT#|OaUzRI5r}la-0$vU zkS^?Tw`urpws%OI;wT5#Y>f!-G4|T@9dUp^Xzxb+&E75CfdK1RuEuY+v3|j?=9jbh z&SYn>Q;>fMTgecBR;E>?lZBunt%NB-xsr}DrULQhYDF`B&lES8HVs0*@y&%zWoQ@2 z7c`Zcm_O;%Dq^xq5#=4_uuH|EP&TmTj(I32+6V&vke~ zOoBfD?GmlZs89b_yl}Sl>quV*CE(}J{{fZyt?cmyUS!?AU-oz(+Sa$B$FxgS>Z|ss z#y?2f`vlicg0}T(B%tMj*7RA|9V;;C!y&p_F`8}G- zN9DSY3F}Gw4K&urNNWtk-Tq5hZ@1s3^ro=>Zt^AC${y{u0_l98v~Jr|<@TaK2`IV? z3V^BGV^F>?(+w*oQ9R`*S7_AUYkq%;qP}bXIaSY(E|w=CshbOM2o{wHU?QNZn+D(~ z0*z9Zk1ha5u%OiKDSUXqa#Oc=p-ug}$R!zBdLj!#krHT>hVvxLMBPyz0Y}~Op+T03 zu00l79O}^mAgC#8U3zH<2Bo8a$?{OTfb>{adyiMIRI-58<5T2|v^A%?$Nvq0s66L% z`T%H4&e?PxzzHmRrQ`YxZ_cf|u985X-1FCc9B#bPI3B6xoxlEXm#C3ncLS~ux$L`v zg?8kxy8+{7WM|%&*CRZ#A#de%hoJHNMb{T2-Qa4jug3;nCg0X`0XFu8!qyw{0Wn4{ zYUzy+*fE_Y>FhaZLvb^E3i-N<4FX%nq!)Mf!TcGMS)%pDi}jec(ttpivGwKhfEuzy zFtmm?h(!}Fy}rdpr7=#T59&F*WDhd|fWYEN6^^^gkfq7!r<<6?UJU~PfLY4WlPnY>u9V`S-p%f0bI#MkrXy^%gH;Q8LT{^L5h z7kcN@^~fD{!&|tHYG!?pRTqJziRA@uKeTT`8{bB*9LITFRUaI8Y&^d_dHu}Xmfj~( zZ&QJpk%sFNlraPdOj8GUHqP^;%t{mj6Hj0@H#7pt=rp%Stn2rza%ngvw z8?N!__c`ilwMfMVv@yJ%!*QqBL*y*PPZx&OYyeJK7!2$p~ zLmD2(^)lv2RUO#SWMFBii9m{~w&E&)1;QAqP{4vnY!sGq(9i62NoWo&`%IN+<9@j` z-Gu@mn8}Cr4h}Fr;XqZHw7!3ut+iH#cPAiojem;6V#W)Ta=;%HlNxNGFu8pfNqSQU|vEUrvPxx>;1c`owZ zBkq$GffkmVefp;tmQ$V0E*8v{1G4JT22$vM8MBh zW2rRJ4*Q2dubn9niSmu_0(isD6-M$QxIha|)bE2(-x5=jXuK|DtJ{k^(GSeDqy?7s z>^!?l#(ZSqVy*`D$Lf>wl~ioPaqXpcGM-=RPG~`Yv-Q$=Ed)HqRfReh@tV9$9?PIT zaAY?oAizio#^d+|dWgtJI;jEuYTOi5H(_B)T@$DF?spYqTsszCt<45q@8m|KhXq~b zR!c$oXO+9T281pBNMfywjRR{xvlQVY%4T(zfa~Qg_o{i!Z&;Ed@G){3mUPjE_Cx>@ zxxAx)hA!lR{Gr^!*hIHTL%+nNq-(`h>`Y;(f&MdKiK-(6Kt@zy<3J8ww$1j&mUB&* zFXVbH1M{z`)Mi^Szk>=l1NT`1m9pwFAK+ptzZK)!9c^5=g;ZOokz!VAlaPN;Y`Hm3#dtMgD+b5CUEjji zn#m1dV=jXY?}TQ|gWd_`X-*IVNwX!?6I*K#5TXT3nXx?Pm9{WG3gx%4i?uNfR9K>p zi6b6>?pT%5mv~i3->NQ=tD4c?V39ngD+H_Pezk_5ZC9eb%h_pCIqF*?NOlQyp(mEp z^;oEhvEm>c52ZHLoNShv;q@x_FdpDqlq^e;Wgre=xaMo2fAY;?#_&pGD!%t9IC zCpNC7paJQytVCcA0ZQC%s8JQC=lpDbf?8lAU53p*w5LWJ-;O#?=8-X|sc#E300Liw=T=o&W*_J{vqWIK z=(z~+8TD0l7S;4Yd&YJa*07n#*Hv28kHvG#u4FT(;rRxjDf=j%OY%q~yFCnNF#rdJ zN|VONWV4d*Ux#=`;0H9Jed=gF8}$H_6=(rJX&DLUwK6_KDsQIujarX3RMrV~@(>T# z%Um2EU4!cygyZ9Or!iiO_+#7-bB>1lxW0#__mJaClev(m4W~7 zvgvta>N{<+gz{r?Iw%hdF1fYSLN#nIqnCcQZw^f*CW1J=$ zY)Qs_8QZmE(LeiRE2NP~Z;CCKXoG84Y!OgPyq^hmQW^T`CVQI42bkZ|r23o}Fuz>U z%Ug;2ZfvGp!XRI)POd<`TkW~-VDys)oODPh=2>i^R|&mEU+Y#k)A=2C7fS#*MAO+Q zU?Ww0)Y*yS5{T4+4Xy zEfMo~8X>@PM8QU^?>W}y-a0u#Hulf%nom^Z! zigeF<&u)lPcnKGtt3?mXe?fZE$xe=loa1u>O~!zp>i=pZZ~YS`!3_!J-p~c3Ni=Pg)3z zXSgRsDCcr92k{9Z0Z`(h zR7p-RiG^K4u*bmIxPtr~53;s|}K%o;=efi!EEF86M`XvQ47!J_E@AT?W&;9ytiJm+6S-S;l$B&f|NV?MkkR;RdXRAi{mF9%z)v3tu9P|j3 zcvQc`S&#VV93WW8_XhWrb5zH;O}x$#5b$dSmaP)7NF@GJIfefI3$E;G2lK%Ct$*5r zIvvV8i4a&h;}ZZATFi+6oybB_q*45LfF#uOl?AZr5+#7=Eb5CuqDYgVlY{(XXaVSg zWhBuTKjdI3$oZ51kq8w-3rW%OB8x@@@|;ruBIy8;e5m!$K4}ymSwxC}qo~}4a3Zv< z6oE)lyCPR~|C9izgZc^3dQVKL1z<-HEejE7^&!I4u8+7RNaTMUY7!`lz#{4|ijROL z9AEhaqTIh z3;m1pJHu{0h&~*o(gz#4!EK#MD%Kydry_2j5@kzyblalMWGl_6q z&~*)*&y}}zy8r%KY~v8-&iikQ1cd%ZA@#-3RU5gKd|Ai+%zr0gB{0vOm-YKN+?Vwy zt=kasoZpf-C|m@R9FTQ$rd;TUzbG0x9={mDXnj>TU z>${{R*kkQ;X@1@-9u!u)G~W&g^!$kQKIdkB4bty-ZnoD7;df)bM1PoQjM4q$W@ZaJ z5AizNXwEn2`MIB8&ES5KxW(F_VcsSV#1zCI#glF+^dQ?{&f)Q0!mc)_qTU8!i7}xD z?-Rj%W^@Ohm)hbu0lMUhUPSs%b&W9-^+iBZleCec_D3$eHV4ly2OtvkEzuU~e$wW= zj%Z?Oz1>B7yrh4L#8bGM)#xOB4&QvD~E9-v&Jg*zOl_cOS1 zV{l)0j$09cwBJa9NNT7DC0Zu{kYrv2k{Ue(tuKc)Fk8Wl{J(@lHT*7}xq8 z`u+gp&^fB?voY?}gPMl$E>lxCBD~mMDAV|;>Z&TIKhzAV8Ojccg}_8fTMC%S1Q6lz z@zO468?TjhhDv`l$!{yrDm>(?f+ZvgEmA%Sc0U9+!hh7s5PTx7FZ00U{+8z!qr|Nb;a$ z83~#%LuK?6EF;l6!39@sUjs-&I43=2A?fdE1SDm8d0&>g04T@;652N~H%Bc(Jp)hX zd{vC&e@BsTU|X(QoJuc3dj=Xg>k0$tx$LhC(GLSpWow0q&pes^O`!^4BR6MvK^K6Q z#$2YL8SOir+g#9s_Lt`!D=f!(u^e02hU;aPngrNXGDBO2p*}Gt#v~TsJ@$Ni9_qV^ zUu&xjft0%?jmLKY+awWabeKIP?J;maGeS#9UMJn!J z+8%GShA{FqLdhc1HYfp2+mKGWmGT2vY7D~sTVw!6@jY@D*)JI@aDbkDTi;Xf|5AJI?4{XJF7?uA` z5s&_jaa|=W#!HOvDr-uCNDYX;97MXrRa;pNt`96EC4sZXJf;loxd0}e%5J*ZYlhKuj zditgGAGJ?<^|;gnSNG|!j)SY?;Oad1|NDL5>W%InW+ADht@nTLepd+kq`i>Rv6m>o zpESI95b)CtFCql|bi)hEzgyv`jV$aGc{l#+H4j7EZ#-~K_9ZIcs9lqR52=n`-&}JI z)azyZsOyrj+UsvW`W7EhoxK`=^k1M2J^%Gb0Avc(o`-()OMEy5J((Y2h3D^Sq1)@m zAN?!Z-FjpGHF?nTUa@O>q8+Whihl&~rAX-6`lG+$xOUG$Kl>JH%s6YOLT4MJ;c1;~VfCwnsi5Gr=P1pPcKv7HIL)W|u1(0;jiy>%q&9RI5qH>pO z5?H$JV)@9W+69Y7T^Z@!`T$5uSv(?_ZQZKyfgbcXyR8m^BeG2N@3lZAFxmAz{s>UW z$nHqr20)0(slN{Mcz9FJ`Rhz*SMH+g3qxS&dK;Rad+vISpC42sukMCX07{s=b2prZ zMj#QB-%bD#fkHPt1Hgje+ItQPL5rTR5y=std774v`vB6hf5+h4I<7!IH zzNn8}o@6XSJx!%u{Th)kvsCMQ6xv$Wkb!!t%(8fY0~>&RMLZMzJHZ{I=AitvU`#tL zfXp={S3vqwrq&(TfsJixp+p;B>!oE_L20I$pn?Qo$(AmM*SZOCVI*p;Nxzz;z405yD0Vt$g z%S@^&^9HUYOAn=;1JEzyy9(3$HltqwB$4H|swMzQ-=P2Fd`s`g5Z{%5^2U7nV9v|z zISJRVDd&aj-@-WQ%&xiae&nyoo7U?%`X3-tpBNODmHMFl<87{{uYhzfzluFe<0h}X z_iEIu@tJ*b{i+*^*#4PlUwbJ#5ar0#8@01KC^9o}o@0zWzSsG%9W2^AF(@|4^3oKw z!pJPgMzUPll*eGBS*vWwIgRUX4pqs;(p+P#T-1tw(WW2=`h}VF|FHMw(OFyf-mjX{ z)ERjaCI_%3PuOM@^8*+pW&;Kbo8bWr60@1bY`{cfNHCdDMjS#SWp;)pYC;kxp_NJ| zCn2elrl)S3R_bZm`aR8g-{?Wj zE)@%jzQHy^8|`|20nT47j%y|0fq;qON%R9_kvKI0monOBdx?&PLiUJE3x06DCar?* z6IXiG$ZxO>3N3v9K)cUB#A4%8J0a7;;^`1B+n^_~guGfrIY0*%BE25g2enzPNdr*O zwkyjR+UPof|Jvdo_~9XcBl4N%F`q0X-Rm@ZYmlE@xGmJ_AGT`7g2wT1m$(%9=%2n- zNJp;LCLrAgrdAwR3DqNuJ{y?@B8|6=#zJu%$|cupqsk%>V~7V}ffL1&0Dyr##?3?d zmDY&Lz8JUDxuISk6`&R~IkSPhO0hRI*BZ8Y*iO~W78PF%6yN;|0ZdHME{&5i$zqA9Xwq4;5_82ia?O1bnr zs6`7%b?Grkr<>~-5%E~oWfnl6Mayn7u%H~?jdLKZozONbxKEnSEDx~Z1`vS2F9MsU zda$qr%S@SiqW%^2*bwIyyW>$0vdA?G$7ODoP5#XF4x7~#LNZhzK4*AHn7{?QkF{-8i^XPx-z}6lZf1?c6B`}pNv|K%&#!a!? zy|@cZB0%vb)OWhXC;OtmPV^c40e2|Sx`Bz5#_fJsB_s2u9&F;GH)6a8~@ z6;quU(*V`0jWKET4}Fd?lEJuy#iL;^KqF};M+?Ery;&CBmzCaJYXk=k<|T$J0EmLQ ziD9Vc()3KO+>OAO!X}JwWinUPiFj)|UxxFqOGx%e9rru2+!hhuosjJ*BKm<|=L)S| z_hmhU`-1Br%UvToa9!SfZ#2$B<9|pC%1ux5sQfu9EG2z``@@vi)4U`kO6#vj`EW$n z(fyBTS8hnE$0*z%ex%q3^_wG(;cvqE$aN&mPXz1~Ca~bjRJnsafIW)j4(D*bphgM-HCc9P{p+d#lU_=mI z|8Qy_07(QO?Uq(Z0dC4^(g{!?uOsR`@PEY78PSZl~sE$0uPZ38-1cXgtMu~lKzUk?t zNT6;Nu&&~U=zXC-?&B!8By}y$%kymd%74fEQ*%N3sv2mzAm=KiAD+rT{r%UGu8iXe z#2%*>i-}x3uTlft8{6@GsxM2Dr6aOX)(7XAVT{b}hkDGmk~u7g=L}rZ72rDOaLJ~8 z74_gp7`bNw3|f41@1v*(fTUiiKedp;z-z7C@4R`77L?Sg2qFRc+ruMpo@RExU4wGqAj;gJlgk;) z*~of?c=oH>f@N& zK^H)c|Bm@Yhz)q*XWAJ7<(cnm&pH_kGT8bAU=#urg8qbkIefq;prchgjpHALKhhp! zvB9gI3!fISfg7IFNZ;4q#O7xNGChLh?}cw@CKRAiNPyH^!Wpd@`V;4+@BtaXl=HGi z<-X;d2~R@bWnT@OLu#MMmC-xGD`7Lm`>onT(DU+-wa1+7`OFAVdX@!XqP>G>D6WTX zlV9|+U=p;Q1(+lQL=qy4N#v62RfKlh0#pfqA;0OMy?m%ZuC;#ZzvKf@(%wf~1CWy6!KN?(B=cPO1de|qxa_0Q zkIl2@X&>#Tz2=p0Gn%AXwn47$*3XQj|(sab13?o;BrlU!V5dRc=i(H3t;gZc? zj^mHAx}S1!zOX@=&!c>Evo}3W;~$`Q8Pr+l5twk?-Z_0!eHHytvSer5%(Pr;jZykrHr3uG!vo0Q$(kb>2nzzsbLI-Zug8 zIKTHlMEFbg_wom%=z$-|uzz)}n%QTtN5OjtlW2!Y>5$_Da#au=BNCpL1)7F$I6z1i+NKE|uu?l?$C_5LRP zXYH3lCSCYT$3?n-j@8VD+35K1w07agC@=8;$vLYLcoezx^M%j+H(2x=HtIKl2@uJ_ zaXIQ&zh*y{e~5gahH%jql4YHjLcCUoFA0x@M@_u%v!}F13(rsO-f$03&(V9eT>-{1 zYp`mX`tcEV4fHl)51-QUp2n@`XRG)Q$hxdP6mI5eT;CS%c9*z#Ut@PBYeGC z1QOmV?BExA7(Y&fT_@uC>@?a6G!DaVE>Gk3sJxw9Xwi3`YAiGe7&*Wx3;`t(kaQam z-sL)39^B3?N{~gst%+J3Kgexjs*!%Ly^f*rxJy~B&$RJe4K}3bad^*6Z&hn>yiwYu zN-EN2EhKFTmNPWJtalgb6`io$8pzDFG~Pdy^(wt*9MN{_OCHc zg~cZMK?l!gEwXeJTR6{4D#haBE1Q@?+ZV2*2zHt5sxgE9d{kFxjr2RY39>l$p{M1$g?+d$52H0Q>jm09LL-yO#~wiX`<**Xs)rFanR`_9r|{Oy z^XoR}h_(y$xkc0T?MSD22h^=7r$O1JZa})N`X-5hw7K>idm6$+JBD)Qcrh4IHlT@s ziTo6Mv=GPh;7Y0(@fR$(G;s~39SDEP>E#jti_Ha0xrg=ToPy4QDXcrIMa*F2D{P8D zq@t#hhG90=e_(#N#Hz>JKC)aP}8jf7h4XZ@Ctpk){tgZQrlmbuzmu$rnKn*>wzPKGAMK+#XvK8QXPo~co`5j?+Bh%}P zeqSN%_4zV?7xHzxsgp~iejM9Sl7n^uI7ausAdQx?p{YW>1oyF^te}a?=Q=rqK&Da5 z$mUU<_)fCuhwp!BgD>K<_Siul8TsXGTe%uDvo;$D@$Uk`{oQ0@U^ zzq=jBFLt@M6~{Axk&gbE-Yac_5?Hh$5dlfGenTMBRt8}JOPeVjv&Y*==>Q&4f8Lee zDb;&XzD-h;Zwr(xF>T=y56ejeCheAXN}D)*hr||?03>ZeIs5nqcRRE}Y!J7nY2CMh z-=W}pB(V;*)v+F8EwH2n)(fx>GSR?3Knu?dYQla(&OoMALjMAIRE%;nAQFTA-addK zOGng>#U9$(&2K7j0oZ)mU#E4T+);hg^vAM(r}H|CP!8Kv&`^ea`PuPxsf)J$-SWN~ zfb(2%)fNLumuO!AMgwr37)ZJRAnEz_CAfcmJMuSEIkEN|mG{?7xu^$e|5V;l%KxoE z(nSE$02}rBHlXNl#q-Dq;E2BWGQd&G-_Y1H(xo8Mw^%s(8kiL4%chS(q;J)V+-`-a z*9GwCXl_F$94onKL;b(iB2pGa>iK2wMh@i=SoAebM)7RbH!Hbb`z8=6wv3dA;~4;H z0mil7vmp=V#CjPBxeSCbm`5)6gUkKkazD5{4*qlIfy)!jf7t{}AkcSL;)R`npfCT9 z?#&*D7FAyNzpl6$NRq-EEix&kZfB^T?kY?zeq ze(e?Gv*{;i%c+Hu#iDiJpt0p5SX8>=zvF{6YvG72G?B%k*a8x{cI#FK3r2AH*6lq2 zLvW4uz52){8d)MD3s&8>My}Vo&4$LV*kXlCHi{?kh|fA1{ zfh-bTjTcdJ1#(RVz#&*9y5{YR6qbgrt;C02L%w%y8?=*^uA9-N1OQ!k4ja^@N~G8R zFKC*Ru4@GFL4eV}6DU$3U7rAW@^=8EarH%Qi5zUi!7@NX2f%^<%_RN`4N59+*bERw zDQUam3uyg-Va~T>Cy&rfi<>yK)MIY8B;l+y+;+&0YD;GE)&a!C}c@zvOB^n!0{Q<*tX1uCM;Ww z=)}f$qM9d5Evxv2?hFwdQQR_jt`Px8)wteGw(QP_)?0PrJRKj5T*{??G_Hm#s@X0! zT8#znY!1rQdb5yENz{t7kS+rxsRRnm_bSs+HLC!VD(N`FbUr#h4dHcIrlWqV;#HGO;=xSK9neO2Oov+SV$XH=f9 z)r`Pk6(GmpZX;Ud>h-Imn6$d z<3(0X;5_49_AHf?(Op>}Nx}VV?_Y8KZ&9w4-w6;~S!%+01h=HQ=NfG2+JkfYCb97^@(p>oZgQnWU`KU2 znIiD0R+^xcHUr=Y#soz?S)LePpVy8J-}J~7i|Zo`OY~t+KvUl|>Vf|uQU8jMF9{-` zX{84s3H9F~&JQMf*eI6-WiY~1)PZX5^QebDBv&Yp$*03<{s#M z_?n2K^B3?g4JSUvRD?- zc$@7Km_e48Cg#w>_Yz6OdCB$MlmsoHFZZT+w1A|DQ!OkADRtf?9N*@qq$Ki_C6`gq z42a|+UR>;r>_k2+cM(9b-&mzgP-uaEeIOXPFX85l>lFNRUzw?5K~~wD39|8xZ~hV@U$}osF4){_jvy`d9_$wQABMdD{4vyb%a1 z>MVD#gzK{=yTvG{)}E9sOaZ)rYbpAN6U7ris2HUGXdRdB*4_njdS8@d>mSz@`ZZuT9rj zNfG@A7LrEdd@GdM#xNfJN14G5R3cDmAkMQqJ=++(~&m*D}*k{vmc9GY!{w3%ik-iR%G~q|fDO!%Jo6S~Om_>hwGz5NQ_lC@_neNS^_i zJd6i#sh&i7>bGMIoQGMG9@~lWVlNJ8zKg*ma@jVz8R?{D(gf5;RhGc%AD*M>1@7p2 z)LWlt(?66~Br17YFkkFWu?L|3^OcEZg+Zjn30Ou_MXR(ux<9l4yHuKP4aIQ+j_9Ai zbNR7ip$oOfiZox>=o7rM9OPprO646GH|Ywm9O-L~iItf!#?e3qVQEqeS@a^1ZXnW8 zza7v_!0Kq7EGW%Lk503>nAf@SN?{V?CD?>fj2G!zloR2KMjTf;H&M#Lc)?@xlELSRc^b2*hDh9NXxml(Ad^@Y^RS4f6 zZfB}=vWx^5QVanQx3cv7cwD&ERE&(}7JD($-)HXSY2%SxEzLnZ0ZMahY*4X#?P@5w zc9UF$%?7^Oi@<~VBJyjnkc8v0lBFct$h<$?>q^l3*gZDQqm)mwut8=v@(a=t*t8%( zytdb#&!Bu37Mk?TaciLmaLL?l&qMyhu$wXo?X_Q7ZjEim0>8J+9+OKO0jZ3oJ=Lq_ zhc)3j;Z^g4Rm?x`9Gm*ZdT%yghH}fJ@PvIz*pK)(9h2RTbT11h+4ayD z<$JZ&Hq^Wi?~vHI^dIs!BcH=Q?eB-47hdsi!^YvS!gu`B0)a8_Ii^Vf%#VcoHEf*9 z&pJm!+?Vifc2fcyhvseOS``))ga@>p2%i<6V~-^sN6v zcrW5xooB*3eOR~blywC6$slHLnn^Z_I}AILA^c)I`>ZVrJ)aNQI6QLFQx%{c~dPaXHyzV1j{#0m%{>sk+N@iq1=~wJe;QOwuP2YrA?;cLPJh<{Ih*|`V$RtQ&Z zIPS>L$j5NJ)p^v{74!r4A$gxp?+5q$J8-|BV~ubNgN8^A!kYur%vIyy)HX{(}IrBDu70P|qJnpZwB2Z}sgZEVy zuG%;n@4JI}E?H*T;muKSetCy9Tcvqqw=@^wjD;r)@1gPmaRK6~{);_qq+{c7Nr14U zSt%%4WUCPgq}a(+;rOlEmY@>(jyRjWN(S{7wtFjP`k7APvIze4Lks#Uz>9HL{fS2M4a(5dOUnpa{qR*^ewET>z4_ z2rP;LqYG+gfu;C3n+1@m42VPk67`#mWhCh5vL~Mr zFdwoX$UpD_B5H2S3=3W$Xi#YlHt*ljO?l4ac#^j3c-zX<<5 z|J%#eL62%XxJ4Fy5ANg^8OuC0;ihm+JDeH)T)V$BRnL|7I_X-3cSu(;p;_HMQT;fG{HXs{8l zVMT$*dzN;W(~!VCZr*9qJPQzs-4kG*cbd%I9Dzu;m^)Q^e>}?Wl&Jq53U?y?VXaZ$ z>f!s}-ILzPkp`ij z1v!PCgFIX(S%AXzT>z2l3p>an6e|^~gOg~l{+EDA-roU|q%4>;iVezljc8;DqVlQH*xWt?&0`5wuTz-wygCN$>ibIyh*r`rHnd6krnD z7-{|;NMF@&Gnb2U0In2RxX-Y}Q`Ca%!hJ2l`76t}jRw9O032;Vz6Kp(4#%0j-bRGUve5<{ClIL~ zx;wo~sz*7o63DbsK|Xblw^<^vXt%dnM0x^}P)-aa?UHs#RQ@g1cq9@-DT6bSa2bpZ_J5-|tNRuFQGj^8rXI01-j%zD0fex8z-0YD10w z#y9FkU{WcMa{d;8)Pmz#i$}5kBOp>q8TvW7U_<$T*TT`ImXa>EjD+)(1tbECz7<5u zT1@Km|0N*ld=^Z)NH4f-yTmfmWeZ7{0ThP03}F1{02r6s^>Vvjo?p7=m&+5)e;JU( z)n9Y;I{;I@Rokz*>pOT+FGyW`^>+Zw#FmK)f@}ZJ@BHp>fIwM`M;8F2ESOXbi%C~J zj}HUVvH$y&T((^iL>7k#2#Ud=Z`AK(k7t!E6j8d1m0YP^VF4_Hi?u7T(tN2BX!PAl z`0#1!(e1l!S>UJ!+SHTj_M0y7Xpr9XtMC0AKA7Pm?fcgNBx>mWSF$KUuF$?;1%+$0 zE0_KaMY=100pO@1xBmNo0dUj+S81mK7^!`goKL&Jq7m)=*IfM+z@Wc;!ZKlrs)4x_W+&dghj@J@A1= zF4=mZoYCzAyq?#hJaKT)7wt-x4+?O6RxrUEh;R+IXGb<+quP*M(IbFlxi}Z`TR6q7 z;jp1+uMroe0S0j^#RUvDT)7qQd=(#z#$tDl6y=+a^ApH4%_4weu07R2JX7t?Kzcb* zBUb8AqsEv>~pz^Km?5NeQ|py;!1jb=VdVq07ApOp>{3PgJl`&&*Fxfv&|>Obc)xeikzh z?I78c5<}3=v$?TN^kE3QI|i2qu$35M<>lbMBnFn{q906B%Ug5L1MI0RmvY;1|M&r^ z-V)lsxhUPE6C1HcVZ)6E?t@j3z7g%60g{fQ{S*CjuNeU)FbVy44AbAb2Ef||aHuWs z?e2q-&&_ue{ky=Vaml>%-BIpXvEOIcV?Ibyy1TlLPvi@eJ$9i!EyZ>(XhpIhc|$AG zk>#aP$S3u$ymk!EC-tkk2IW_{h5QXDe;QYA^}%&l*&`V)NftUP;B_4z{$jGe82RUT zBhoB(6lN+z)BRBHRB52zrwQi)=+^TIl#?#bxdH7Mho^djm|Wyf*+R!)9SbDJqV!Y| z?aj{$2vCU2ohA*^Z>mE5boRdMG0tPxaqFaNkpP+|d50vcSh&W*;$fc__V&1|5njX1 zvnN>Sr}o6;z)I9#9P0M(iGHXq6sMrQA2b0PrD-GTK(GPzI_hk3moZr2W%t513Kkr( zRJ}u@1sN}WeP_NJZlu{hX<_HUKP^sODMrCKuS@89dwLext_v!-%T z_N1l;SeVxC*HnuZdUd_drUm_VI*s$K?t;XK7L3>QRHi5w7GK=SN+IIOG4 zN}QV6z>i(D)kqUtN|~;7Qc%%S!ejgZY@`K9vOq(C1i4(}nsEOTQxgMmp4dXtI;J); z9{JbmHP$#C*PWP|7>fLHzUkHoqc7TFsy#eG^G~%^VH8U=e@3p_HYOGulaPN$LN=!3 zJgUCjn1b>*NsBE4lw@U&G0eqv0hFSJxY|HyDQd;_WI?1@Q|akksfYIWrgLS;Pwhhg z99?bA@2A`e67~OO{6wUSH3pJ47z@NP9T8|V7Waqx-FT$iDAh`1kbku}$0Gnj zkt)3*sP77IrZhN(^LW#wa->@vh*C*smlDues$;w>bLU z%59YA&5{P=xXjN8XklJS%t)7)5kN6hEkk&dB&CPrI`&yBj7d#2&evzaiQ^$GAz1_x zZa1nq^bc)^AtfRZWgd@>1an))BGN4wQ8N*L$Xw4%MLL~Z%S^^`&03?2HpaWSnh{XW zenm;s2Gee4S$bTW+G}Ajs)2xyg~}*gXU6gv&QGr8#-O|nL9H~h4D*UwBaT#{OpQ3o zpzD~;4@G(c+=>ERZ!n%O;0fTGP*#Zi)Za?l(2vB){6H1=)vibmsE;hA<#mwdBR?la%xSQ-Ktwg)plRAc=oH~ALFx)DRcXL1ltnihQ$~ zG0g=CR{@AC@^D^vGBb$7{c>mHzq!%#v%*3--aM7&cPS7u3$T^Sn9ls%==n+Wyl4&K zdNtrVsh9INoX7JMVDF7d0-*=B_3Q-j#0_hs=jd#1WLy8Q@H`O5wz8*jy~=pI0QIEt zR9K(wzs5xhV5^`N$6-l|OCh}r*K)&LP zQtq(4E-@MB*^^#s5h%DLy$EkKnAi1MZWzkhqDs~fq~FX`bF}fZQJrfI&ZT}?Wzo3Y zpj2^#MYN+n!y3?udBL98Lj7uiGA=jw4$LD;GPh3-#+x`jQOHH(i!3lbsNHPP^T6?+ zU>nl_BAge^Tf;DPBh~zl@FQjflr~sJtVAjaT+r zUqkwjomTly>t>lv#%ihd;hcWRe?6vKf-2d1pYkcM;4I?1S0U~87R3RvY|fviAL!I z_EYUO=x@xQhG!5T14}=mCmah4HQM8N@?axbfOAqAfQWEPK9~l$BAk@>$Erv1jTTvi zdQ3ZNVguNL^SZDLNNV%n2h78z<K=5fp`>bZl0Fazk^At-P<*zy?DI7*X(!2i4 z0$E1-vH7gf-L;ZkU-L6ldpNB`~RU+=ApohyjyjKVZtrQgFj9<)P zLs>iG)TwxX696P3{Ug5SF19gFoPE-KXbk?G5VpBAzV2st1y#s@lHH@sH88%+2vCYG zBi$mb@hW({&#hyg>?_Dzx-{`LO==pO<-ssN6@g{8t-edqUIl3ta zG(VhRx9J3UJ)+UZ`;VL#!h3uI$6(nD;otb5_^*Wk^UTP_SBLXk`E4BkqnveB7XI2f zCzBY&gKX-mY@sv&jNE80fZ4je$Nk?6q<{9m5YDpzhlD@MA4C7m`7@BYF#LDzU*(_qVfdHuzoAD1 zRMH|4>3?VuXcTJ}04d{=&Fo4S157cvM4(sOMfp*l{DFY>5+X1O zs!{v>i|PCC`dyZiF5E9IaDukxMdHU-Z^|DYu^_+IjN@U*^gJAm9J0lweD z{q73%^LzY*;z|qS0V6;`_$a&0sul6x<*u`4D|jE1Hd)mu?})ICqjiD9@>Yw0zC-?2 zZa%_CNM1ptv$yzeS=)sYt7@1@E# z0rRW8`Fb)3&)=YqnSy*bGh5QN9=@v_ExlHx=a}KpbM0Bv5^mA(ob;a&?n3*$q5aT# z0O6l#t7Kxhd(@}&4+=-1kI503WXktv-Um)Q_p*(+ zU!(_6P8=pM=^)CZbT>mE)&M#|AMy=nKhih*cRG8J{(c!Y>Y(?8P0kM7S3|hf+%BPC zI7iLxNPoM0*i;dJJUq;9x6!ZgJfrs+&DhV-b7HTzQ(cGnox!$XO&afE%mz;p@&0R9 z+LKkRyLJrZN>EO5S#eXL3$P}|9wo4aKqRu5L?BLi1J<_z=#+Ot;gXI1P(V7U9-6fz zRG3rLIi$4#?7gq1`Xl{{6Z7a>VD=a~))1sb2@XxvUcDvKDX1A`*S4^y-%TMSf>ik9H}!XyXzQ z@KVr>dcjo~{lSA=?-hwq07(TYXe$3G+ktibR9RCQhjnp#M1se8X1FuCX$pNW*YPO> z^M<#Dueb0WlfKz*2++SoO>9Wh_o?QRHrkEiF61YRL)(yUKhxlC6QSg4&BHoK*7aHj zNJ=0bEFNt#A^@r0MHt}G22ub@8||+6JAjvnq)m3Dn~`s~x6|81`Mn(;flfPA)uViBVjEwt;=96D>}4Xp_waT{?{5?9 zCmA%4mIKc!Lpu>zN9!Qe-#HIqwUnXpQEm*<2SSV5;i9cRYESx(y#OM)c}<0Af3hex zpb7mM7OChDS_B>u*hDVBSgf;<<*LFq+-CxlQ2qrF=^q7>$l?+5#}<$-)qXLEq_g$( zhY#uxrMRyCR(@wj+w;58cl+N3l44LP3nqOlkaQ7p7N970 zwUz;vQ0_M>%KQHlko0YqlQQv4ug?7Qk;}H&V$#KW863C_4lvARfadZzxI7LnkAwfL zdEoK{^IrxeT>y-{Yj6Dyz?K*^iuHo!p-TXxV)6RUD;~uM9=USEhE}X4aPjutH}N9d zmgxBI#~|w~Z&=f9F|_T5pxY*V5Wqf7x4%NA8$auI2h_ds^KSS31KQSOK{uSQOzctj zz5H*`${ybL1|y!-x=34lw0{pTa^+T!FTaNsL$V}vD^kY;dGZ}mz50GBFRD7w;#K%(zYjVu-A%!|OGoX?@1xg9zG z4uB}@CEC?1BEabC254vh1=n2J zrDVD2nmh21kNUj2Yf-O}7g;L0<|_aj0o#5Z(vR^too@I0z6W%u?vexH32qG-8#1#y4GFdRzX*Zi^SO?7ToL_ai$e%CGxLu zYuri$<%+P3gs{Tby0b0{Q~F9B=|tp1{Bn1`OQ6IGsm7k+(uQfRJtIIqX@NZh#}#iO zPrAli!q0}*2g~hwNKf^njpWS+EH)v2J+s7{10~B$)1j-<3o`)5T4_-*Q$oH(N}VMl zpT1O`163qgOu~5;}t3#=w@`23%)?H}X7OH#erC$fAv5 zUe9|w10dz}LHfy3Sx&FPxZd^wO+64lp}jD-`(IG+bbi@2uM*f+*3>&e;K*pE5bd?Z z5IP5U;y$Uf)5#<@h>eQQf%TC^rkg&C()X!|EIRc%iv?P1vN{a)+-u9hTont_>=ths z)NuBB>(aE*zuJ|cWD#Wy>Q|@F5J$E^nP?;ZfV;+-g&4igor-#FODquuluItj#^CsJEKm|4M*vJI@{tRoqGpU& zezHv#f$9=7MA|@>jal|E4*i@!CX};6uM~$Oeu+NCrG=aIVzoC4^=`10V48siCS#>C z)x-7KD+01`Lx9y-8ynEpd}Ww~`dCYqF)9|g66=D=3Krb8?dds)e?VwVFGynp%|GU^ zfZ~6#GA$h0{z-oelq_3pCzT(|~uQBordKhzHE z#QAoz3>)rVwM8zB){2sqWT?GrY_j;XkzZ&}^w2Kc0=}XR>D?NByo>q5t>Q-EIDtDu zI&nX|sr(?6w^*FQ4?_OAO0tDO3DFqb(hK8SNDM0Lf$>N#AbTPGyu|osTDT+&MZ+zc zpWt#0@oR$lT(SY>=+hE|S}>vJAqZbafHXl+7F(EVSl)^N#Y^qX{@H3jG2 zn_gqhLV0_F)!aC37Ymti;WkJ?`+AiYEi|tRsuRO;Ja*j{gGno3 z*KP=h@-4|4iTcE#(PnG0IIbNF=m1d1w*mBEpdQA9zDOJ=p}o`v;#ibVuG2=VXh%o${ca1MdzRDmAcSinpb9{-+GnO;B<7K2jP0?czFu#8cdOBp?8Tg*&{$|fmERs z;`m%|bbY_ias9B|#^L-c>=_Czz$^UBU@+>rf}5_C1yFrjx-5t0ix~`A6k0D<=|fPj z?fBpQXq30lSdpOdtK&&GRl+qcBUu>S&#jU~ZpPK%TBe4Zz)^d{RbV^v@so@a=o}+y za7af$Uj7*XQt8oLKb&udG(4G$a>x==FSHv0Nj;9DU-QE%d$-|y)|kpX74;{JZ@7-7 z_H=uoi+YPQEVA5`lBQZzk0sJHtE>#yeM*8Xk!(uLu(2^H@37|bw9(&S z)pGRQhyaOG{>@wp@#KPSp@ex+gN33r<{NF7Jx|3vWbWjvklxTDOG$UK+xVFt`VYH- zpP~@xw#lA`Fw%>2k?v#|Sw@20hz!^imrE9wYIr=q%mzMlezuWYtmC|9BfmIJmRR=L z3sGJ(dw^Sn_=m6+u?*q+eYluYaUFPa(R&o^JtQUtxL#d0CO{jQxDn7qpakR&|kYiVq-%B?l0>C8U1MNkG+vWGe7ZC=Sqdg0SMUe2ciRYYe$+tisb?))^ zqW+IKC;XkLe@4|Peh<}8c);I}@bl(rJd?0-&pxRg3(+ou9o`GgoL@$}`DepN1#BRP zuJ)vf4QBH#?HLy5W#5&b4^c0(&9~*qLdi>{4qUbgU0_msn6;F|{#1Sy$A2wEmXLn! zeB!kF8OumcE8>48N3Ps{$$sp-g7{x*AIoRxxC{*mRQkw&*`)Xn!ymFZkNm#&0|$VT z^G^7T4`7Ksr#*@IpK1X8*)TUkpJ8t|*N6a^!rR!DX>3qy#{?Pe_GlQn zYf0BRWye)TuNMEoK=t35c&LKVqcP>~; zVgunFl#{WP1pO2HTj5*?fXDoebIy!FrMD4|!5;#2+I)aEY-AznO98If9E9aBoDWI; zKM3aq07(uk9U=S|GXjueuqXzO{)hQT|GW>2NLe5$295rWjliS-seLJbisLcJ^gmJZ z&*UzkDYm2(yKsx^*P+1@6!OIulPLV2K%fyUADOV+1d!=Gl+ODx^uKFg_#Z*Z;?j8* zz>yYPK8h?OWk4jvX8@)sot#M*{sRCLl@~@}(x2tXQqsRTf!rpbJ$>JydQm;!h5k|d zjqtVu5DehhTL_bdr*lvOlU(QpFbOlnf3ScQ14w2TNYWw@>9-*)Bl(zb1z1wkpzNpe zYbLqM{F(fk69H|nK>vw-Uw+=lc-NfpF=z%zg0`9wkaR|Sg1t3FzjRFPFiVzx9%64s zzikO0VD~{EmEl}e!Z>tpW!Izs-s@=gN*&K#6HY}{j1%(!zXHcI>S7$34Q`!{_cIn2 zj}U*Dg+(O99~3umRUW`2=RaCVqHqn)qq&pF$7fYk=8P_j zRC_QJ|F|E4N{_R!c*M{=d7q;}E%sjdV4CLjY&g8%q4$KxwdSb&@Kol!C_kf5$fwYf zl>Q`p217-R3cKdw~Aw+{$hj(LZGXNeO%}Xh&EzP2Zh|P5KUQ!n(r_4*fzuz-&hPec~>4 zy-nX~JJQtew6}E|xF9RUu0Hm;r zJL!9~h%0Fr)QK=$vkg|DIYpg=y(m01iQ{l#HH^o)Hvvg4SnqC%fTZHqQjqaD4i{=e zg9tntlA=HS7IkDS5!J&oQU}VZFX~K_(bIlMLi3eO9J}-FTnYR+BiP|B&s(lt$$nqlB6talGGY_KSfy-mgEq zro06p23bOCh4#;1Q|dwi9%U33ZU_{K0h4}J`6_`deb48mi#nlIc`ALE-6Zu_3vvNq zz!DOR@^jDhQ`y0Y@7A|7zXIn4c*3>g`T$rJsS!|9ihKhr2PFm}-vp^5cRbEhCCyFD zO5i)kTfr~kF<;nQ?RpRWN8BTB3o!q=2VHuvBo}Q2%I&lFi7IrzvCmbJo?NrhJe#qI zq(r)vLAn?~f-ALp8(}X3kO)-T7$BXrPuhs{?DrbHjmW=O+AXaY@jV3>YioF{U#UC2 zbyJjvom#aj&iLH}z$0L4(GO~$Bdyz$?(j@vbTo2M8C#l~TLSt8L)XxW?9cjE2 z)uWwZ`H0pF$RZN0Bju6nLzGK^AGLQ3_VsVdZ!8I5x##Fj4Fz6wpNf#LU$_2W4G_OU z0V)k}5&vyU;1cD}T0Z)kp3hGYP*5*`NEt(fc;VkK8? zwBAer8U1nTYx)nkY-8Vs<)h8Lz9O(FDEi)2Sy1R6C_tbq^8f-Rd#0`&0d4L1*_A)ShXLO!_5E2;yVqw| z{u!W8viJG#_xK02wNK^u@u599*{3aM=r^dHJ1yr8#6z#b3s$T{%5tTv@S;7WIX88c z7=b|)CW}H>y&Hi+SK|eUEDK#7Ks#^x;_A+3O;lR6!QLts{NF! z@j{#dh(3>8on8CeZ`TY^^hW?i9eJN$dm5IE8Y0(cv8%HSmWZ+zh{&~BchoahY@emN z8vq;X3)-$nIkC&Lj71`VN*62;)n{FuWi1CE z_y6*`NeCzM>#uJ?Jq#{I<3MOAY`-x82&9&H1OQ>XzLfxnnaUvXrp>frJfx+c0^lPt zthxW^*f8eGntO97r;@X;x1ewh*S$B&a|`(d(j`-QXRks1Ms(y#-_r?{7-;2Qi;ZGk z&<7*DL=|!dqkR?y6^TJ;-&w}6+`O+)PLfN~c$~}+uzH~#W;4UM{CeEKU~ZbglqPwb zvRuW&9kX7c4b`2ArAj5Vo|mLa3F@yiq*1v9Sj?9MT>lj4Vz!kj_{nPH4k8a_4dc zKrKZ{IeErVnAu70U!s*mvb}i!6=U`gOsGPuxX92WEY@)jgek1?mt;V8I;7r z5(5wkjm8(r*++ARV$P|Y8hM;vm=^9-vY-5buMS_6-b#qdFy7Q|Zo6Mnr;|2(}lQ_gLI znyv}}WT>e$ZHTXD<_1H`P)~kFPzqJVN~zq%_?D`~p$d)rneIU7Vs5fn+>Y^V0DQsm zBia_5=BN0d)24ZwKnq>>%bL5|#y^|2t#%EL?_*YrG*4|ambgMI@>>gRa+yT{(ij}y zEW&n7F7B7L(w-$@1D^+)g?is&Zs$|T7l(I>E9~h(1S-*er28|Lf87LR&o03{Cn zT^iLw;OA(AbFaoY8JWnR_Wk$q+-oXuul^F_B^b`%lmcMkP2&bdfEjB-Ls1gtaYC9F z0u^JXIz)tWGZg}?>a3|jnT2uyww0Kj+2G8sR_(;BETf*Mz7YR`DV2a z7j&p6jq7p__nV(=7nfmNyAzW6tpKy^v2OptSg6)VOZ{>XuOt-~`4`y}(`%H;v#P>gK@#bH5=j^7+DceeuJ_iJ&A)#D^vo~NGmAb zTam8F#dzUmy#n!ML2IfApvd3NRoj?PoPE{;GiwfoqQL)E2VPW50!6y;l$VYk$yWXBG(FRv!35i@aEk&5XgykYO%mj_2 zjR(Wo#Z?=4UJ0r}&$$!MPOci|8p2MiIzU+1Va-GQ-TrQCKEmVzb1{zJXYOYfLhoR= z8`K|IV+z>9LijD`OnB0V3NL5$L-x&(HfTN84JqBH z=DDy1`co5t5aQd+*R@AXY`{CuXm>$P;e@|iq>akMGHt*Z<{^2lO7{cEBST=xUH%S) zpEgfoa|rbeE$yg`>(!oN@9=3O_=kYWP_FR0MjOHB{m5k;fk<@TPtB~QBH=y%1r0!w z^S*2&eeAOBQvG=d%SkeUC?EPSAzeHBk$eW>cJpI_fP!{Ea?#c!6$xq~`Sj|Ph zz}?9LFE`ZxIL(ctVD9*Z}vBIRrF3E8p&{ z^r)ZQ?W}hRl)hKkAfi0;E@yR`?#D5?4*3BRNi|9YD$Rpt!fpm&k`{6Zn~g!OK^8R{ zm0A^H|7K|c@}JfYX1<%?auH8X+<$ooo_v_+<@MqujDHR9fyoxU@8OMMJVVco`pkD1 zTrP_L7kh6Sp0#!7{p&@pXFM&7AS?z95_rMvVoS^_u^TWTz<|MkgfYf8HVA{kV1q<3 z#36(zEWt@gq@*NqmL^J?5R#He*`0(Y%4Bmpnd+WSJL7iJ_MW*i^Kd;^ufP7^->qAQ zkZv>2^ywQeUVJ&b?sJZgq;o$0{gz31zrrluVBmV(lUy~zKS1y7L_RqF3v1EN)8a|J zM#e#ZcuLuh_8jXzrQXARqdyijqrcweo_FuD036^>A`t9T@eS*|2yhLE!DER3+4omMlRWY6aFHg{4rScZ&qjU5yJn$MIh4u4u2DThVYf}x54M6`frub z0;KCv`oHVHR6asD2AX0QZZR-*)uIzz$ho+_5a1CPSy=kW!u6o1K1LYrD<47Q^e#(D zVFV_{pi&GjA)i9^#PP8OC2H?|ir4>1`M|m+Jp_=1Fw&LxNcC91=^8G!utekY4)XmX z{L+2P{U(^?2G@W|`gN9(t^tuQDFhsS>i!T);NnXYNeWToA)i`)wiMLth z2|Pc=gM!K+%pGz!BiyPV7Pml8S-Mb$d?&>H_C}P8U9iRA5gd8*%Y58lexzjiXr+hy zORN)CAwC9@4tQ1eGM1jhTkR##)O#}Yh+b!}F$p+_?MwsjX(22mAwC5tL1T+aT_BR) z$kTPkKvE1W-4;e*QxjWdE=7HN>~eD> zoC|GWwkGL2P$454ks$HVf-7_j>TSo&u7BM^UcbdNnv7&^iJz37WE)B+~cX zMa6=~7Lj6?Y~*6C8TnG6kpfMJV+%;%w;l=Zp!9V7_pDaekm&v9UiTn=mu;QFN=xhZ zec~aDp4;cdBOHEL_<-At@T1}V?%|Nu^9V>vxn{%fx2%)O0gcvSGiX9TJ*1oz4?r#D zlzT8i-}`6LQ>aI|-@P66JkFgHTc8ATwIKdsz12Fb(0YB^I*5ACh93aPZkdy|cxX$d#Q7BKY*+v!OdeZ>X zw^Sag(f8$Gnb+tKw+0t*Uyo`90OE7WZ)hd=)hHg|2rM3rw4tzEL;XvDQGOf1l+M95 zc^3f`b!OGjcN1Ac%0~MGE@vgPJCPsYNlpW1y^=dTaGY-h~K5@Wkl6RO` z|BObt7Wv7Q+SUZ>m3F4~&-QtHWdh`MyD35Q^nlkWZ$r4z+n2I*w3pwlZt>}RVTZiQ zqkV@6NJ?2yk}#jsuHHy%7}QIalTdy~V!N~%x&Zd$(W9VjXmLN>#|W zfmtuCO5i&~n{Uq&&<}P&YF}ccFw)GIacQ6 z=yx>U1Dms&@|WEcGI9ym*pdbQ@|0$qdmIL+=i>|Q#b`Cl?-Vf zj(ITH9Bk4&{Hp;;*MLbm=!XGt!Ilk;Eh5DrQ5^mjh?I8W7N^Jg`=>#qe&_pV3`KqY zyY=rzfKi;@?^6HfVFExSfJc=6E#T-6fk<)up8}EqB5{|}AX4!+!6LGB)CDMA42`+qwm4FsLX2LXVf?+k+q znQwh(0@TjD{GI7gXTaR=;00x@Fu?mx#eYHD21?&aBL8(dE`Ol+UA%yfYa2BEyZ-Mr4*HT@mrbb5THoyj0s^wW?2Z?s}_udg$)cphwR4ciX9^3zj!X;XdgGeWrXn4Vo z0i@XV8G%JCeiykoWAQ?r0*v0e8cxNdUke(trJlIX7(^;aW_v8IYl@a5vFNAkb!vM~ z3HucQhqj!`UKrOdASpk)lf}H~0+M1731CuBv`>IiPqf#iNbl)H`Fp;BdZ;{Jh`*%( zpL+f@Y9|FEQMei5>wub1g#NysbdwH^RT{_v9Ch1cjG0+IkAkqfSASB47&lFYD2 z@_jKs#kSF{nU&D|(V3aWsHbgIYbNIBbbq8tmU&{!NHa6WXoK*3XS3rw$x=s=Fg-B_ z{ka-oLIL_~V{*AXTLK7Rtdoma9OT&>B{>NY!vm0n_NqMCD)Mn)4+}_3Z5&joYlWpI z4j|bQdnxi0Aha0ajb?G`;5MZQD{Qg72@6w|=J5B8V_ONNxuuoBiP`2jp2K{et&VYqL|QQTON@&@qHqB2F9OQ? z7D8c3>*gfp@x@_@-e_-%Gpw?=0hNZSz58I^xA9lVqE-RRwUDc}DG8oupQic6U+iV0 zzLsI~&6w}Av>d-5<`HS%uc2yANng}MU{bFRv||qL?16P_dJC6eyCMF{u#(=D02-1x zav#k5*@?Wueg!y4)P_q`&s=qQdq1>08^`;7(e5lZ*SYy3^7FYuZ`3EY<`ndn5r##j zn1c|sq7=HoDl)#&#ODe5*C^_ls0KlH~kc9Kc+ZJ9ZlrHz4Q%%n`R+%X>(Vg|P0 zx}>2_ubZxdNb59-8S9|`)fL7p1{)`Sd2%J{-J95`6+vs0#o8RiS1?71X)MMA7EmVI z7*|$S>7ZwixgoLGz{YY=lUSFegX1QxTE&K<+n`lI?-X|$N&?`DSc#Fv#tN^pOA+2B zl(6$r9~^ucG``ytpj$ifJ@hN{6;&T!~p zw=%IDY8YD+GBkGGMix;Pp`HeRlfTf%29HOOn)ohPqWP<(flM1(>y3iU)WJ1u z%%DH5Mq_0H8^_`u;U+b*TtFLDuW%MNqv$~Rajr=tix-cDv_brudmfvubUB8Yssu z6(*wGT7Hg{-wwdT!I8RvusqiuY0~|^)SiU+9nv~y7K?cRfPjAgE)R&5iuvKK6K46i z4pYHNZTqFx(-W*3DgVWHD*Gy3Qs5i-07ucvP;+ zCjFk+LJ|R1qikAtmpFnM0U>1Rs0tw1EuH9(v}Gi+@G}$rRxfXqXGxepk^);%7*~Lw zl815f*ZMOMPXOVh1nysXzE2z0>(zNOjRVcokv0^d;m8)m%X9saGOoj$lb{XmQfH1j z(!jjtrDQ(R*O)V|kNW4@G! z>)+tdm-A6hbqZD5peKuT)gtc}q?c<;rCTpz{<1{^jcchr zUl@b%N@=D*8^h$vFk1%5BuPT9Pwhn(-AWu-dNTU44pjU3pLHmYO!O#I9fK+Cl47Dnmxu}<1NX}s~K6+#!3HEJl zdM}89w3FfXDC!}LP0M5g9_sBC4i3na zy>_tx4I0>DginThO$y%$oMDNF-)U_zW*gCSZwAH@4ra{h7{>;CgE{>o?pJ<2JDo-U zd8^pTHa#x@Bq4sSKeKfx^2^D|t(on3UTfp>Z^m9uY+R!|XWi*_+1w^~J*IpWJ#{@g>=#}tp$g%u zb;F>3X?Za7S(5BDvnV?9yz+fD3J3WZgD51QBG>GF5R%KHk(6O7O2wzj3`~#9Ss|a( z@yI1Q_OlhcBVj#HL6)6ihk4<6(lT99cwt4MbBz)u2(!`wNUD+zNVkm3*nRUd52>E~ zw<_m|Pr3w%L+mTf^I+@&ig4#6M^asCKYd?ChAmo{WU~hExFXXBApM$?V{eO-SXBY z7;Z!|UNY7=Z!X-4?YAY^CF&{M41K^@JG{feT`GWLTgS{6HMJWhF9;H%o=IWae!6yA zbXmLH>k9|Eq5qmt7Z<0<-?l6K8l+KG9Hf2j#o`l}U>1Xi9U^8u!0Fno<~N*dRF;PH%C=6Z9F7KQDNxSTY2+f?tWNdjY$SMbr*E$ z@h(=nHc~Cs6Il<#BriU*UgT`$Vz}hmJunIkwqgE&B+izPbxipp_zKJbEpoIaw0XQ6 zpcLRH9M^g5y!92oy{JDBTSxNtoNX@v4bb%pjtJNwk`tROwKOj*=jHvYD6Cge(OZTn zr)pu)nco7sDIFTEncDGzvC()ex(LH!ya9QWWtJMlCnKr(q276_Is>DgphWN1$oaI&d zrkw9HoAb)W(b}i0!4I_Fed=0W{JQZ22naLvmxbl@SEP%kOvsAqiHg`h?1)K|9~vBJ zm2O4x+O1;yOMlDgHx~aH=FT5f+{=#N@QCA#L{(%$2@2f4dnn?=_M!{KE^&5)~Vr=N{M$a#ZJ5)9eP(OO$^RX;zMXa_u>Rl zTz3*)yUlYF9#EkkMp=Vg&bJ{|diVFw?jN}rmm*CjowMC2)WbD@^3i7yM~BC*=dkwt z=VJ_Np=I>K1JE1Kw`NjOV6WE4Xltb+4V5oN#Qr=8y)w3pFLp%UjD#k7NFFi*o~M!6 zD@Lc(08?TE6%hBE{B+9K7m7o!F%ZG4LrC&=2LNu@>K&}S{88(wRY`#S4%5#qTf?5o z;=@QH=m1FvGx=4A_#{Mz#$NbDv<8gTqZGyiE-k>!sU}0haVe#Gb>f-`ZVeaLlJJ}0 z#y;uP7qt5&p^2Xy_bD(pz4S2$%BLdRInjyh4eBdAO#OMGw6v0mxY4r*Lf>V*P;er+ z46;w17-kgLPYknlyp1f|)f;Vs%{?NVK$8&xDztM0@P!W*#Wog@~|}KaV`A=_F&JP@{_M&V6)pYvZD#xUxl6fJ2LCi|#9&BeUT^f5D{W{eg1^ z9qfm<#bM>4v1w?|SlYBh3?_M`up2ju*0B5|oOBs0t(Gi)&d%w{{Aoz3Vw+7T(iR*g z_A7A7q(JqnT_}t+@iYutJGnIT4(~~CRTJpTaCVXi0RIRnm1a`zvF&R}T4*ovSHJNc zbtfuFGy#I$U_clH`jcN~#I3vT=ZNM)G6?M-z9)>DzOiDo@W>XqV=19RV@smjNX5{Y z#_YyfCzLvg*OV28oZCG9nVgv!_4?YaDlhGZhx03zaBiYg1+#)CoaJVYdgJ-T;NI5F z)g*A&^42d&O-k&29BM$cLDR3o0Gw6EIloF0L`xM(LQ0MJ1ivYST9gj{cDb6_Ix)pg z>>QOvma{t+qA8_LF7?m{dVk|$;*QOYoQg2MODJqUa&gr&nhjd6Rj1_>W&Q6VP3=c* zwu(LWG2rVD%N2}@o621IO5cjl49@09&ovswcOE76{kkOsJItM9`3zeaJn{NG3{5+0 zLqwxrWdn@HU1%__+UcM)(*}rz$s6Wacu;}_ZI49-R~2v zF_G~zu3v1(F(J}7+kVqhow)DMkkTqpo5M|FzW9Sr4?sm<@hRAe>X-vayL~?d(CFQL z{fgn(Nqintu<`z_2m~(W)mgm%7W6ryc&(r^u;*l%mzTl>3qnnPmqVfT{R+-3kiP?pG2t$eebs28Y{x@r8j`f6Ku#A{^p2$b0j zgtNo2c|X?xh}&Yyk5PDhC%H!UTDmfi}(uC9N;S~r3UFc+kZ|$C}&LXEW#_yG*9%( z9~tSG3(gdxAbKADmW7{CgP2f*0reZ({*TnIV_h0T>vsHW5|I%*R3R83pKTh4`BVWA zf57r8@Y+N4Su}>Foaag>Vx;Ub_mKSt*C$0j{%nHpDQsHLnb58g#n_Ag*THI%WI+au*?v+2KvRmpX zoQl*_wc8nmM#Dyy1XS+`<(bA|m$Kv&;BYg4suQiU4-QyLi0Ag2!CX4@)t0uQK`F4% zOuA3yvNtTfr9!YbpmTvm30PH*RMZg9Fgh%Wd|BV8OVTCwVqt#Q3BgG zr)u8jZJo4Fa4UpWD(Qli@;H_-j<-Yjg51ih(EV|i{9{VBQKgYg6z~`VqOx2p#r`fNT!Lq>G3w%gVxW7`n~ONk{oI;#kf{~uU^wk>at=pPPdb(OMf7Q27I0FzBBPHk zTO7J4A(YQflkQXj#K+|hY>?NWrlqtVW<#^Jyq4!=!j|4oy@*EMEvu5(ABN!w6%X zvCJEIi3B;vH?8F!%YX+7b6Dr&_;|EP*LYf+(4>4DL?lW4Iv1NqNJ}@_m+b6)93B9{ zda_q99Ydr4ubXuEqG17?9D#22>Z7)8 zE+w$|s~Ndz@GQ}GFwbB_#ku^scCjGlv_h#Wqnxg2#V;B(g*=rV;wNuyHS5=Glo|bU zSG9vF0A{~L(VBv_Dv<_^^O>jd<6Y(ap&NiBhr|djlWY%O$MDNgFHAI+&4qV!VH`f~ zvSUYmF2%c);w(^FY=4nYUESgEc1oL@!8T|^&UBua^cOjyLgn0@YC16A7&9Z8-juoC zYoTfrhpyQoo<9f{7cQ6k{NxmbUr$Pal*Wm4U;r8KfOXrkkGC1lIi=M8$sw-SODG;{ z?F*}vQ(E6Cw!)N0E>iff!e_hn1bcM`F08j%F^^X>vAwLYw@b}tLg$U6IOIg9i$`j? zxqhC1v__ZORURXIwRGyP(=NQ)Jg!QvCEr_Qn0WA&uO0cDr}5=fJtGrlfNtEE>9b1Z zi>@T-gbCluh&1Bi?j^uFEb{rQ;kL?>OSkNIew^Om-Y(sI=MtlG4I>A$LBpz~3?jAG zkqmV)&_&ARo-a(zW&$fy8XdkroL-qhE1p^I-XF0L#yXnxvD(sSj~b!*{s6v1dvi4k zQaxHZy1KWO?T*JHqA;FK!*Au;(S54I&aDh5z*nv$enH{!QB&0l)=+e$;}H}5xO5yb=OJJ3A@A+ zNy3-Hh+M^vRoj&CLe=J5!x)fFI}imLEeO?tY%HUhC5gr@n?eaUTfLD9&Ois6%nyp5sIsAdC;z0)n48 zK`&E$Fs(~BnadTyG=HV%BD$ET&5t1^tm-zi9j(KxipsLDIj_{t*ejY@;rWm!rFh@@ z3jAAf4h6WCYBvCNeWvO^2j{jBzv;&fM!aQH0_0sx?LRUDgo~|wf^x;^t9Q}9Z%D{@ zl}eg-T6EeIa2AeAxX-OyLd@6=yhejQb~oMI=oJj@I>k?3oODLOlgbpO{qJo*$p(n; z@CEfE%fTcmmgBm7Al~)r@kjcn^_3CUJ!G_1r`e8x3{XaZSZe5xD7pApqPWVQ(4wmz zmWtgB%3u^_Y#Xu!aFPG|t4N4=g3I)hETcg=G7E1Lg9E0Mj87-4um`2aE{CVA!H@uq zN3QgltFVLJdup>>;q#t!o2HJ%LcdnL%KaQx{rtB>a#r5@#=wf6v@*{Sz;{WG4x=m? z-|l_`bjM#9nWxG^Hue@ug$x6R2X5pyF|an_FP)FrDNnWO#!jdoOLuvWMQ!MW)kj{g zK9j(8EzxRor|`o3#OE$io3Z=NvKNFn89hbV~gpgZ8TZwimN@`RD5 zNeW51eB1&J^?nyG;XOq1SH)qr)tiAy`0_>E5(WO=tb(I4xnkHxH8spj==zn zz6R z?yGUwA)r%R(vKjq8%GLTUB0&zwUfb%6Gjld9q-d{c;gLM*w zZGZ$|4-0w-#Wcb8J0U_nV>w$&nFU>uRjNq)zN(!2vjfp;V=$Nj@zOfVDC5|p?mMDF zBccJag8il&V0%;gB_S2adIYF58e5?fU>RtKJ zs>d50`+wqc!Kp3ES2cDwo45efx#yiNGCDKIEHrefqVo_0SIs zIQqGMQiBHg(a+)TOR#ZST;aJC)6?HswoU&}_*?j5~C0 zw)HSRhj)v+|8A1eg!y=`&1)SJ_slyR29Ldj)BRI-NV3`xrW=C{gV&vE2U&#GZ0yS@ zFnyyJs>jsOUXtT)L^EJ-l&|5O^X&!Gb}6kzT+*B)SK@DvR`VE$COoS&d7dPA-=g9> zO73H{|o<)U%ybAw1%mP|go9r7i3Me@Bxt8I)mWx`)E<75&m>-Bk-0^SMw@P@b{t065ZoEE=*I`BuMCeu2}{e{HeiIr&42FMUez0vZ|4?WE5 z{h97STBnruT|Cat)m!+Ku;U%{+p^-m2?m#l7*;{HZJpNSII1U>L!!sr4~{+SNuq^S zp>NUA0RGkjX^-HTtHOhE%@jY!2cxbMt>Yr0)8#DU_IU`u8{uw~hFDf`Vx9c2r6PLQ z1zij6v1kdmZgK;(Wf|=FR~YG3gR=Qs+T-ooCc`g97T?qb(@6q94!aujxn4ks4Ou{% zzZhj74*T+#$U->6yw<{W5|Nl&3;_-wG-7BG*FG(Zc+o=EfHK|xvH)(*Jj+xRbagby z!+R{dNkv$99xX(1a$PmIQrt+d>i0|R*{H~*daT=TCi0*zlyvrMaoayTXGkeZEmCSZ z!Zdu}p^6VB7Er2#LYLDHKdGQ`2p_aLx)w_P3N4iK(-EYZcfX+m;U^^)^wAm?``HYs zCHQO80*(V*jDM`rEa|oimIhc44GJCP`0y`>T|?_pO^;sB6PwAl2YDrtD3(YbtLeL) zKQ!Qhx~<80E8+dbMTUM+u2G)^G|O#jBIYuOCFn+IO`7-UMQYwW!uj=rwmSz`s}1FQ zl_JY%aUKU&SyhyNncIHa_z;(eaF9~WBW!7R52;_E7ajX6*|p6_e;TmT%Y1Vj#JEG? zcatcVm9;2T1ZVPbWOmUT)Sf;e@l^LEmsa;96=n1W2Qn-1wA8o;cFGb0fb``O;YkXi zA&M4PHr;ZBCOAL6fU5}o3VyJ5_Sye$0~y=p*XIQlYN{1kb_uEb_xc-lOY%R5dYe6wsszRS;;1s`nq3y6U1Qt(Zy{p-AF zz2<7uCJ|CSz+u>UiHAJhjji}UJ7#dEu0Y4fWG5lsyI|dHtzM#hMknL<;=W#4o;<$N2~5WFIj6 zcrQr)ylON@JpJ*rMfIrFzHsKc4BY8&r=2*vC*D)UKf8SXWj8UyUy(K&_(GnxBs{N3 zWOt$Pspzd+%%B;$A|bl3G&PnFf3wzQSbLv_45AS)_Y8-A4I(+MH(>ajbNgC9y;;1| zIcLm(N3$teJ)2Ks@}9&>T@Pqpxz^1-Y$qGcf{r@6ljd%|Q<`n$Qy-`?nFx*pA{H;Fq6Xe!5^nTbRRYOen($1A?H&qGf)8@5GC}?=gJ}7hs7^C?;IkV zi2+B5&i+L2BE2o}<_Gwm;d*l}L1y|p_W1RVa;kuYas(ZkO>>$GCAt6q4xh^mJwzu~ z&fsRmv)@xws=e+&h`Q22#-=a29f*-W1GxJeSP--vnhm?})CeT*m(gwY1`t}Jb*zzb zknid@#B_Xyy){LgITHg?z)WpHd&R)bkV6zGPHANNgm zh3pQ;XEASrCK!VaCZWUN+w08*GOWN!JNcEZiZ1sPFHE9eaxy$^SHN} zh4@Rvtzce`LLcb|ij|EG%5^wb{%)eMk)|X?pXUA%93h0fW$Ow?5J4V@@=D@?zeAET zUG=nuL2GBo$mCZt2e(5uM|RdBdX&3>8QrAJST8%5*>;1${!bd=?qouJEH_7e6)USp z)gCUCnL3AK2q4N7m*$87MYlAyumCvfIRwfOnTAMM8Rz(RWyy}F>@sv;m{@$8K+%?I zloTWe?fO`?gk%GA{CdXP^h_n6)Xy|vTTL@ICDRz=xa*vz=D%j|#40r(zOQpTl0m5x zF+;NH;8I7otaf6(EVVyrjGv2~I5SWMeD3(NCzEO?wEyBU2Nl$38K?F23-+cl0L&OP zsZwc?1DL#*C=Cuj$>Y{ow>&jrb*Qe>FUTHAm_~Mt4#yqUE*+`KB^3Q-ytHXzFilpo{U~ zxtysu#V%T`>?=tPi~=0tU7DIP^hb{(An6asdN=AhrGUoq_wz>+jr_${?Ch~KN=oK3 zcn`xrWK5sGj29udz@GJ8YdAOYjLzJQTP_9!hZX3CZXU)vQP4^Oz0ihU*gRy@5|5AJ z9}Jm3$R1+IQDIng<~ZM1+w7Q z=~;QKTL75#1P$=4Km_oa5Ak8yU$j(vljWS)4-Nspla_K$b+Uth)e-RQPW*Z~&CU9! zld3L2vPvy1frKD78v|OJCzpmt)W7K15{aA z6E%f2&gqPqmB?)rvq`lnuqm-i_&B?nH_VQRn7K58M2iQl5GU3L&oud|UJ89^e}4_Q zcaKbSq~~i{4|RjbDD1D!;HTUyGRcv<>F8f$WmPs>m#_V&y}A%EnE9^kkfwrs47EHm7k$=z$@f z9BcjGJ}A_v>A9kN0Q^+u|rxh>dIxEfrwK90#A(i2?nFW(ANuy#m44o1; zPIslA>DW(;p~@F(>s&bSmjX6)>zexC)YDitC9ci9N`>*cX&cH6<#`65fs0_DaL!k1 zAlvCf`_BqccI0H3zMAoOo=u|A0Hv-kFra0g8JtpO^m`@){(mE{oO0y)VEjQ8oRk#= zx-ocsNCGVw!x>B5s4w7}U=_zjlte_QhN+EMHNBR;m{gZNdwjm5Y1k;vEuPyzr7*vy zE+G_eXrX@+<%L`*lZg-6<~LJS#K!iLFdXw58y`vxz%$2ZxW7MoHHuBuAv4xLtQm^i zXlqleH)V8iMM)|EFlEc(4Y-+N?`ZkggYVJrPT^>>ofl|VTt0REsW^o6YUzdDN;x(6 zrb+~wv0+L&Tz0O$lvT_m{@5EHliQjXA=*WWRrD}ks;J!4FT#7{PI$v^ARX=4)vf4~ zCax_O^^X?9GIiVM*B$7vXO;h2ITSb^HFb#w!I;8L;rn9w51(FXFmPgH!s1UQdWy!M3s+M3I^pZNgPMu z-~mbO>Km>o524?q>~c@A9ZoeN$@W!dcsBx7=COv4ZgL~vEgJYZl6ieA*qw95`x$vVMRSY3v~*-&VHFl7#xcC{HFJ|%+{lD8JVfyoxxPr}A6r1LXcXgu`d{iQ zd7tu#8-)akOdFc`4a;Ds+#Flt9>=waZq#dJYE?okMhD17%ogPU^Jb}?hP9>yzX{9h zR&oy|LYdv!uT#p3B~$rB*L8r@s0u8;0NAylBAo$&SmIv!l4o4@KWK3|UD}yPCSr7) z1upB;JK90%Dl;ML0~(7`|EP}w5g;jQsin{LOGW_ED!KG_5bSG?{rt=CpR=#-))hpP zg!6gO)%U^rM@?;4@zYKnzk-rYiF=BPEL5K+dzOPKNfC^{W?s}Il@S>#z^he9h&)}C zcg*y7MQ~*A1ZAwX)*H8D0L*ULPs@l_lWsEg z89$}Jz3cCpIlB!43<_8`R|Jnpbyu=ixPFg3(5EZHk&+{SFeO@XTu?2Fbm1g6Li)G^ zxEkHo2eyBCOm!dD4rj&e{;Lrn3}j#@b9o1gL_A>JqD~mjCJcQ3;*a^Rdjwxi4M2TG z-wz@){po%Y8uYj4WP@bO3REft%N--c)<^5o8q|EEkVa(?pW}Y zRSw^d{9vp>O8+-8xwN=Q(PsInq!4S8WupHey$#9o4}Lnp?a84B4Y>Uh>%8L2zchxb zPE4;mYc`ng8+G{@Gm@KLG+W1_`)RWv%#DK)4*QWh?b&s! z^ZWIh+EnMa5zQi_57mK+w~}ND|*Xo$X{FEXGl^UPBl_a z3dTPFARFtw-fEA5^ZTa}U~468nM$Xd zxdvsjLD;H|TTpM0eyvFb>Vu(dp&#IYZQY!WREdx$P_5aXo6w?;Uj%u;fc{L@!9=aR5mg ziXR`Q)NnYCGWZ?{c`}O!mO*jZz;A5rPxZl`l1NGA|)Wq+2_TSU+(%#EZIghhB+q?V=t_>@x zuib4S(MnNgW2%&YR-+h{6rAB)w!f9L(YccC*eenu03ozCXw(C+bc85LRI+1Mx@eR}^d&_f{oTio= zcTB%R68x*^Bf+Jem+)HIeg3v}#w&%?Mz*Q^w8xJtj7j7e_kO3mBCXp(S@{WYM>A4l z4RN%n9^l?p-O1hd!*e`E$2|g)usb!Fc*gvV$j{Wu_|k{M#}|yL!be)G+&KH2CZ!t* zj(B&QWW0ZJ3fcU+yFpixcVqCY>VX-CW;=p$96#<-jm7&kdNiM?oKS5ELzEdjLpkIG zetHkBSf*3HEBxMPirlbXCttE*oax8Lk-DJrJRruuK$dK;pB;McY5JOVydB6}{}IPA zY(vE89{`yyP+{56xku%N2Iu5C)y^o0TEuu6HZS1E_jE_aV-Iv2#z@yIX zvaKZhCc|JYU)rIL$}are)<|%iA%0%vGdtQby3Rrl7Vug} z$Z+3rggWR_K`GR0Q!1T- zsJ=YZISf17D1^zGHnIlkr7@|NtLgUczU$5N4 zBQYaTp_zWVF%%S7zWMWm;4jvJH3?IaThK=WJG2U$%Vt~(m`{=q{{Z_bw_*uipZwkh z$CiZD?h6$*$GH+0Nl&KO^T8FcvU$@;0C^kM4P5BS{MpAOA`7 z%`;c)QNmI+op?uAQjm4pCw!@4|Lj;7$E){t6H?lrC&hA%0Ys7}MxKW8kzSS(`hk~? zkl5idpI9q*9fc^*J@ApGMi}*~iDR}58gzOL#}Y_}QBaKF#gXSes_d6-!2+^$0oceb z(5?y(5iQZ!`#qHc5CY2&IC&s`2#l8A{h&vH>$JiRWdH(6g zt>H4`8TYYp&3L6$FexvFkLOsg@$bXA0H_{-y+6jSfww|8Dc?k~U~_(NCsLL2SHdT~wPkY?Vf}*t0dD65?fnEE{XZOwHXEr-RvO1LDAtOn5RlM94YjxxRLFxD z(vvj6$#R9jYs`+xG?=z{6CA1d z0`5M!QXa}Jqd5XIrXx+s`#WnbU2&$!xB3b-Nr6~55#Um^sf@V4EP@r0;F4TyMsW9E z&@GRjFCi1F=6<2kd1aAo4Zx9T1&p5-S!&pnG|AggA&p<%KvL*3o^FT?My|PSc&!9$ zIE)|Z<0qRiMgNONG9Wergol@jU}Ss!!q=CLnS2-YV@phhPh=wK&EdsZPSN6S%Q~5X z7NUMUvnmTI5&z~3syTcp-1YUyTSxFLc|AJyG(jVLr8?uQBhh_$(iR&!EPN9`Zm8C` zYIR73_U;U4yA4O2o@6Z4S~A+U2Ca{MQQy3I<@Q-5i8PPjeKt5*RlZ+-Z~l1Uj}z(T z)bqPMODd3mGBA#cfQF0}miPLZGZd9(`Z_paf}h{AnI<3i(f_eKI3xU}G&Hd{W3AH` zb4Ry#`2vAD;Qw+5(Pdb!PhOf8EFqs17LSlplsInMEDZi%rJs( z_E}^GDD3yfv6uqo&9kZKgFBX} zu|wojYlS~TJMOVDwo2&Ai$;+lqC|oUKb&QiYL*(0XVk>_=WZA$V5N&sX)&XNFo5!` zLHy8av%m;@Vw|=O4i5K_zaA|T)n^h8~uHRlQYv(&c{_Dmf)DZ{07~#WYO}Nffj$r6d_AeHMzfBvq!14X56tA#hM~ASG0! zV|9#jTvGg#1~UMNNEh}1MEivC+f-^GHlAkU{ry6#tE^+oZh<*dWoA355^kA5ePs15 z)lk;1#yVY4ppBcKb5f*f#);Dc+0MzrLQv5-=7HNQPknD!DqTwxv1@f2r7?BXlVtxu z&!$=3YX0JP`kF&cl8ecCDy(VWMQY2+shU%3Yy4)^lUJkGKLi^?w@S^JTfbht!uZ+1 zfcPdZ1;h?dH^JMA`9h}!mp=9-TYbWSvBnQ4vN;oJw!^cj!?ZZPlN|F_if~o(BR+e^ z^fR0zJFwo-qRpO*cq?jO;LDUtQF*58VIZUe0}~v50(7IT=x3B*o7}#@m@D`;o;IAD z3O64K`W2eG#Dj6%po%5bJLO8!k$)eJ;8Uyw26IzS`RG5N#9k$^(PFtQ2J-@ClayL~ z?Rqkz|DpVvgNM~>s{G1$v?&eNsM$nZPJxL}49@2fnVT8vFG(pl+C-}xBQLVr3CdyE z^ZXb3^Pd~B6T9;0a$;L5g^9x*-7;Ogf?&@)Ff7M zD{8~+Ba2A@eD0Tk2F6D1%p`H*<+5z|$7q|@WL*bUDPfOG(dvD>wh5g9Rel?DFCuXq zy|3mw`bo8mSZDP%wZy@}La{_F!eXYl{nssUKJwgd8e`hOErB1{bR zeyZL!Xf*(Mew9CPd)7!Hj(j-LuH#s`OsXwKp zY*B9pe;83N#V-v{D_bDssRS?#==_I zt4d0Amk-gmldha>&}-8`@gzpZuACUZm~91jpf5V%SM-0RrOp}4S3Gm%AqtvUHQ2Ky z4|#hNaZll_DAA6L99k2xv=C(NvR+OiAc_arQ3r2I1pOvEw351XkQ=GH#E$u%noKc5U*-`Oy;-X=w5fwjbg8CN z<~Bcm=c$IHgzH=@as9Jh<^FBgo7|*TDAs3f<{R~tWIKws7rmF6$Ro9!3FlW42nxxo zIlfXWb$7mcsh~~9bxN`&1@S1cS2OP&6inH`nH4TWV3g{nmarG^aKQ#W0Sj+pbtwaH z((}&ZIXOYH(Y!dX2KfdjD(pjD4duRr>}KZi1+!wDsP}0+vgav7uaqk7V;Qr49hn4b z&f##AN^SYf&S^a8cg~3f*Kk3sAJ^CIvqBl1*}1SDa(S$F&nL`S>+G%VW0UcRby_Y^_@SA6onr6FsYCVjNY*+%3|*nx zpxD<_zA8O~&_hjQccBBiKabGgCqO1tZC=Z%Ef(vYDyWiyFo$&K}L*P;x5lft|s7=meFMBMc%%QNQMUicGdy7AVt;1TJ&U@fXje!`kwa zSOlm>zdiInH$4IAl2%0Dplmg5G;DOCtUlbZt42fAMD!hkXz+#hKbuNl7`W5qNzpi# zCubv=^q@@ic{ZX<@1J_sq!US}ef3e!CKI%7S_p-z`S!aIl|N;3uO9)6)TKC#&9icW z=U)CHQV>FeXv0$2I&53&>$9PC**n_}lmtkdA&kLbQBSu+v`1z1v#cJ?y5#YRqG>Tj z_23t&3*^`=uBcjhT)OXTeD2}0ea7*cRmpVuj&Ah~56WCgN`G3C<`cG|j~jNVbOo|>p^ zz>lG1FV;;^wOEly>?Na7A>F>G7td;Rmhs67A@=daNkzAXX3GXBg($x|C3!SgxRUE^ z{>Gg4mlW?2S0_&D4R(b-NJ#a@uToSv#8auN^*Hb_wQcm9=aWv|x&fp48w=jQD%t~o zjrww-rmxNi)(xK*E|5>oEXk)s5puxvZm+Ea-$H-;lRikHkayJn@T8(*HHP}|kTuZYx!ry0b z?oVJgHKr4!2&VZMp_o~E!Q5LGQ*!AHJf#~@#)JKvj5zA*H(US=Y8NDH_v_|DeRz{N z(28DyHInmC0h7|pS850zfr$ntP{Es;{Bf8jDp)S~qpd4Vtb#SP7OWQWKHLNR_Cvl; z#^5~g9_A}!$)zo7-`DGi2g-TzInjFw0>q;=_;X%Fz;NJv2kg}hGsZFET=2{m(qfUN0YVul$@djcjD86n~@QEnZUn)S% zA-spI3wQpmxBQ(mKpL1yyF*E|o$#eKmBI5i=Pm!*0Z@lzGK(tD;BrKFl(970FEixL zbYJgwm3>>F(FRQzzRGau?R=RY)i&=`hC++}WB)NkHHp@?v0v-3vtIjjm0DqX1Xa*`3`=pOwz*7}zq()+ zcTo+8Ly`f{Pj36}^TC@WJ|wnLyxtYR6*er7gtYk>tCi0Q-AG@Uqa(aT>fXk^pNn-9kQPjl;SMdI&S>+l4ioRURp6!9$|t7qeB?$ z{p)qxYS@GKE#EyP{@>lrj@aTewKu-1T}Kbjnia+}ON$E$c7>dXS=x`ei{D3-q#NYS z#Gg#c+E?mp_iR$gC5*fsl3@acdIQK~^$Gva5ccmvkRu%rd>!ch-H zW8!=IVLQDXsa>`xE-{qg(A&IwRL1mL#1%GJ8XH7hm2nR*QOxbO$T1cz0Sm#2ELm^~xx!v2V>D9!&J2th`U~u5Rl+E~!P?Lk5sX>GjzB z#Cg80y0%sD{_>|o_WOGFZ;8;SrX6Z+ z8TqxZk~srSU@4E1APpdfDf)AH)OKYVQ!cpsWz-?u2+Vn79*@YZ% zj{V5D&-Od+{eKekNjMPk2bj=nPK0&V9fx{ps6|UXufn&0rN#~U=r(~pM`G2v`1K## zRT=NW9AT>P<%I<87v(z~I;!vtNf+?v$irbH_$lP09lkmWp>kpy{+>E8>BsHCdJfV8 z2q|Wm$H?bYS4h{;vN&?k6O6RoUD(UwOSV!(TN0z`uZP zQ8huEW$GR}PM@cZZW@6hM^);-Fd|>RL1>S#D(Ak>t8J`s%=&B|oHyFOU>rX`pp>Ry zk4fl7`#CS%=ltT^z!;`)Ntf`wD*XP~#y)J~g*rySMY}303&7@IHB@D36^o8bGzD8X{k>ExWB=k+DNa7%Crtqu;)VDy?=<8+kG`VTP(A0x4B*J7QE5Yj{ZhPEDcoeu+4rC3&C|_nGQn{gJTFZ~m@#{7FQv}?y`_NHUbt;knw zTDIY*tq6ok{-GQoPJg;rJ=Qw8dHk80g6Rz7OxcdRxt43Sn>kg#HcinU)3|~i^ML#J z1#4FBlT_hfX)pSFyr)yemT_+rqr*dJJ|cK7U`FCS*}lbK5hqlB?+cs$NY_>*Un!t8 z7JL^_dNWAu#vz-%jIS$Ajp;C3+HZ^@)ycc@haT5N!wGhNJDZIItKDnz0xSlQZLeUs z`38h0=FCOx5#GL@Bp5auqEgQV9T=m@D|QBv+#YY`T+hB0-srAhlQM?LJ{Sgnf-i-Y zo{)KS2Fe5@fjjuf_YuGK)66?V6oO&o6@hYXJ>nJXPu?Ukr!f*GJ%WMyK26Jq0h?%F zcRKIRMh>MC?nQr=unCDI6L zJ*hIZ5zZH4#CO9nex2eNTNS36(ywVSNeGgr#}(z#J^*>qS&q~VQLM6i##nG^zRz3? z8=bpz^enNe3>Og zPW1A5Ohbbp>NdDIK=cWC36Uu!x4H1cw6&6TYOqf3E0BMuEWF(WB>UX}qE@bj{escy zD90m5z{z~qX2$rY=BcyyhpEmU_Q518V&5zQ2NDz1$>3#SJrYPj8?z_*NiEPzDi}+L#!-G2;i+X$wmow+q)?rCAws9!keW@Z zhugQgad9xRp+iw;XA7KbJj@{@=GNbWdzM63YKef0pJ0KLtur`*TU%|KftK@w zHbwm}^r$hAO8E{dpVx7gI#aX~#jtE`C_`H2(mFsWz4*9T_XC1q?~B+;v~slk2M=3p z_ED$^W}Ck8ec^z$5zAt8Zop?Qo+!SPejN~alJbHYiMP*cAa6A+$U%n%S(iz)7uLrNk zmOj5d-2XoS?m!X0qYb1st@gZ_j|r-5%{yu$L=P2Cuu z**V%x)2QEbjhjM@11UE<)}9>ardEJLY@Ty7+BYXNT)5>rsFp8f-v%H;%{%`Mw5!M; zQB0P!7Qj-=ZO_vNKtGs7uGdZ=EEUMNbf6vl$ne%`9PIO>!rMFojz)(Ad;1mRZjn9u z0-2~?Y>)8=%>ih^3KuvDu9B$+7Z*f^l%CwN0~UD#DA93mi|pH!He!S5EP zI3p0Q6s9@_q|UUS0$hh&CXHorP;JcT3-NnXtu~AKNeHiJF|v`qjs2W%le0Hu8)G{A2^bfib;s6b}%=o*?C1!0(er`2&BAusQyGj*9uAPA?uM zV0?zNys=QS6f#jlKV@b~0@5qZsnT%Vmnsv^_;8(#?9$j0Q>$4SZzN$mnq8=2qeoDT z1qL=`yfsEKlq{1hMfn4+mRS|jhG(N%j`&U!wnK28eO9wy0X-4z2siN9P<8hQn{0qU zLE^&ggwiF|Aih(B%@GOXnP2VD?`p*M%`}hNxzw46cB#%nhd_X}_I!c1AwSHe{Qe1q^Mxt#@W=xZgr$ z?3#`&^pL4~0*pqXzSu%fHtq*o?iHeZ3?do${dTcHRacP@Z(VbdVh&Mp_10wB)rmx z?GdCeRj20szJWx^EvF0x#-kVStAHO?Yvo3l=!1Afh4ZO=k_ zgS4EVitCY1LwKW9>CEWChM=tQb0n0LYWW4YK7mWL&hJqYmloYzi&NoY13zl>R+8#l zfx6JaON&(DU;{k@m?RVEP!HQUsK=}k=Cf!ITkXt4z8zYPG@noUa}jix*eKI;Vz-sJ zY)gTp9nuE5C`5U$+AmU3F07H}X{g6v@6$MFmsNRY=CXEpRq|{f>$jnVvu(tyYcjKu zuURf*ra-IwdCVvW^E{MTS~trxQ@d#ciPga zlgr5!@{H_(U#I6%kvX&v&lO-q1*osZtgvZ4*v_nFC*it#f;w}iPX}aM?GhsaN$B}W zmc(Qz#V_$<3pFN<@1uIFNzb{|GSc1F4r2w6gBfv`t|0$OvC~+A`ntttZ86I2bsIIh zZ{1e2M$gs#%Ek;`ht`dSsIQB!k!Q>3Z&*kw%;34ktd++1Bw*b*2lE=>B0YCZy+d7u z`tEjjYRga`U3aNT^KS=BdfM6{EJM8~^>&H+=div>mq+`k?6+SoD^jt_+iA)d3q3da^=obe^*Xp^4POPDb}?q3L3Us+IqK;vlARwQ-oEdi>`TUi} zq+X8JdMB9LK0lH z+2t(muiI%aM|l$mmh|4!9W z5hlxGyoq&<9cSL65@GI6Y=jVz1ICAfj=&H z4*I_Ps&&>P3p-EYNr?kl_aW;}=;JPI*gzih;Aqr_@cqG|sD;P# zJ~$k;cnO%a4e^gFC@10hs+_aB1G3EYxOEija!>12|6A^J(P@srmR|h<9qqAR(;r0o z`<$yhjPOTF;%es;{L-fo{{!p2;8|#D0qJwJ{3V4zqkgqM3SOjiE3uUHIS0#0E&*2` zyS>Qwx5}sDD@YHy&&1cEf2Uk2i?~XqF2THpzlU6x%UJ(Fjt-x z?~3U6KPGm&Wclc!z(DvV&I-1(1WKP)HY4I&)=|AirGxLi(P|q9{mM?Z)Wf>0wA&?q zvObfZc6ain&>kJYl7Rah00e@*slYOlLmE0K;-6O==3*Kp}OwBOxhtwg>vZdVK%pXPS(%h&{XT`to>{%-tH2j$xzsSY%PrAg$!-`y9iLw)z_ z``v2fJEtENH!^rH6Hjv;sJ9m*ai5Oyqda3B!+kujyd0guee}6+D~}-lN6JUa^Be#b z?uP;OD_KT55B;Yg0eOBIgyK8mWfyCGR^WaoNPwGnpefjM$wE>;ko5m>KU3c2P>=Nw z!FxI^A8~!k`w_xX;*u?OnU?B5TYbTYsPErJ07gm_{YUh#7-`VpU&UCJe{nA${NKe) z@EPX^^m_mo}>z+v=p@DjpgS?zg* z$pYI`(2u#dl^z%KICAxepzj1P>okwwaG%zX1@xWp2-j_49J=@E1pJ+|j>Y5ul(Ltr z_3#{XJNY#sl-nk)%HX-Dz*QTA_Z3n1*CGD2wM*Hc((`n?yc+5Iqb*W7(v7Imp?w4b zljuE%EP9sncpkf3omEIr!K2hd=q|CDFGD;WZrRH;l=JHCCG2HQfukehc7cGuw0!FN z_zn?Zzk%nhi$4HBxjpz2tAOs;xAH4dZ@1nS{{cs83F&G;>9oF|YYeg8a|bO=rRQEZ z*M#uNU^iErq38TIevL`rJ#g*D)4oEzS%Pr8xq)4P>$KthguW}cs@28pe zM$gR$tmAGc^nU%AOMp-cB;6Ms6St|C<5NpXsRbo+>9)&Cz@**Kv-;g|YKQ#MF?T2G zq2IUDqxz0wrKk1&K(Gzz$D@5gn~HH{?FzO)4=TF13D>_<>5`fq^p~|$Xh#11ZkNz( zLj#@P#Q!IXbvQ1kBw$huD4{-b)z(DH?Qj}>8h_iJx(vpL)#21Y?{GV80yvE5vewE7 z2OWH^L+|lzW(}^tL)yx2FwuW7K$DqMilj0=_7NeH(s_vqGT$-YhkQ*!M6yyv+v2i)BdkUP53}i;VFhZI_xgde5<+v^|hO=YOMgZTf_MJY)e>cqCEhWXy2z@ zYV{jb+HY->>HVr*-YRe8v3~i9MWlMU)>|iE29f4x=JWJDFsX7PPk(SS>cYq#>c5=A zA@*Pi;{jmO5F6nX!0X9@EijCa3pq?4>LJTVImPI&Uapn)Sq2tzzZqHxg)6q94#ok` zcjRUxA1o&2bt9hVI&w?^I=2n%7y_k!&&f*Sb5SpWX2ZfH|L{u0XASz@Feq70B1_o> zBISB0pIStM3%+5v4uMF+dQl(1p<&b>0*H`5wQQ8u^Hmz>$Ms0*cTzpMD(dgIxO8jT zZF}+x5ze`_J5PZA0gFdh$A1AtO2MK(Qg1nQ%b}c}1WclJCk2z@c(fz?Q1+prq_BiE z1oz|SoSVCcAp8eGr2h2SH5>AM0W|6dg}wk9T?G(*{kpGT$BhJ#^e5^i0IBp4qW3Cu8o6h z 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®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∓O#5r7OB1p=WTTijrgcZ1D@p? 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

    wJt|8Ey*UM=`iel_1D1AGY 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%0D(GJUZam$L-n1R||~HmNo0Dv!QHYr@sA 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

    ;V-K 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 &+LVi5?DCf_)cC4NArD4aeTO5XduD z0vzas5!)Bj?Ibmubl12efjnOPL`l9?W1Nu>nJAYNaExp@&RTj{v^Yr#IJu^rzh z>|Ru97!jiO5+nda(RFeX5n7&9l;g*At!&;u(UraWo5li^GJEy;c!7U}9A)4RzPI)P z#|=RZjtK7-^zM9cnM^olx<>h<0rMkRJq}n!7AOZpNHFvyz;VYZ9gARPSj}#!u`gp1 zTHy^O;MSe5iTZInt-u=@%WQ&MHZ~QdIcX{}FD3qsU&q3R)utN8%6Heb>`e;C^&pHm zdB||*b^ND#;SkTZ#1R1c>(I#g<44$l^to0pZhGJNdvYBnm##}4Gh8_qjS-JDP@U7!kkgfo!h79{KH4mu3$^{Ei(&QLE!W4;=`3li&6UtC=Z_47P4aA?Uj%k z``zJeItTi?uE;(WY4?e;i}ChzH?{oL(Qz4m3U&=5JHKd7JRulEZ=()S{nshuK#WoS z#@>w;lw>kMIbSll+i}(w(%e#R9?BJa%yAfiEItb52E(X*u#t8n`AGq6ai>EngRMzJ z^541R6Iajx5>=@emx6rSrVo3QJIG6$17t)ybCbV;DlGmE>6yP%hVg*kZ7LKMdr$y* zud!+^mfarv_j3D=y)1?iLiTXBH$ytg|868)G!LR!Lh;=#IY91Lp9x?!Fj++g0=?&b zL%&p&0)t&mdaUU9rDdo9shA%~B;HmhsyqGq-@ty6Uzzo2-nMBy z%vUs&J^z*n1oI=LjOJgf*DY@YAS@W2D~FPFq;D_Y6QTMZM~RHHxwZ&@Z6h!QWY__m zNbw|_i5)?U_0sS5flBwSgJhEPEB{FH!BZssvhur;qZ?n@b~lfe4qiK&gVdNTy1bB- zE1RC?vTSRbIUgk1i?_$TG}x(SIf*ELZEF3Kc2&4IU5MO?n-nL6Vl|?qJlw=el+oMG zh~BM$D{x8@wk|W%ug*!eSi`KEZo?aNAy@9>3pT)0_ckO4(IcmgBK9a+ViX(?kG<|; z6zw=JI91Gw5Tzj*@Ue>`T!}_Y&bu|RLrFr)w=4XP=SJnCCx#t4CU~u^#3x9(A&l-1f zy?cAU{%UaBLeu`z5aYjj=c#SpOfuajFmuK{^vuI+qVZ7?*KXC{2aaEkwqyPru>hho z-}lf36CW&(-uw#yX#9Z1pG&JlP)3O-?-r!0--;=|wQW00{c(!0cC;9ax{bVi(Tyv+ zCUjGYCrlEQcvd1_w<*(6A{@(`=?d=We3I;dt+}kEY^{Fat#sMNwY&P*a_ve8mEGR| z^*`U_88-Yl~r5;53e1@XY+toMEVR>2UI>8^*rNuwf|xaGA+Apm0{i zboy~~nMmGXww#ipCq*fb_ZMWs3*A$`FH@!OcdNF3ecr9M^;di{SnoYGV?2{uIyKg> zGoihA9JFvA#K>5#)-|E1RH_-N%sRi%noO0PA7!odHgJOT_p_|>z!?{uB)cggmnQnf zz6B%8vRfEYpO6Jf2ceCw)Fg~u*I3XfME#$cWY(u+DtS)vsQSek`fvJI$}c~EbgTN-=cb_?zfRS5p6arLRNvM$3K zqF`8Z(}|L3QGd4uko*lWIzz2M-GK#>1RiJMrw|&c%J0E#^cC%ZkfjTbq^O7P7o8kP zB|BaSQzEpe;<-b;Enn$Gu*Cx@xB`|C2lMx0v(!G{{??y~I`7cmgL?TfE&I%1QW* z!roiwd85dor8|;=XWOpbpYtm&OT9MIg7BrDJ(>s%@l!_ixYb{-eAU(0g;Kw9A>yM3 zQ1ZX&;dd~f%PUYCKe7pg>%e}!KRskic<{h*dfW6tKe_&V3iqLxaV{Hy@+Lr*3Ox`zbREnGgfRPu~WWJ@7F z*Uw!cYZx7r5K_XV zy#&;rZN!>!g0ROTl#`jltiZ=6_73ji@MMU>^Ux-l^&cx)g>`m?+5HjvI{b(wkr>5j zJhVs@D%D;+Pm9}U6CANL=Rx*~Ur%!MPYSCB1WH?60Uiu(Ax)v*UYh8&Jie z8zX@xp(GIK02?TzZ@C4=c)7M>-QgQ!JK6|<3#a6p)0rcWxx_otvs(Ao$sQl<$ttss z{5GdR@s=P|A8)4@r571jYOAKG!u zC~i|ept!EMMR!fHk3iPm<%h-jh`^{ji@{xDJ9`sA4!|BIadx<~*sovMsC8}N{^`XLz!D(|?Lq01>cAKh z4I2)d{w)?wtvn+L)gtAo^Pmb*dwZ&ZiAqByW&pUVdDl)y{1%FuEM?itPu*^{SB5VZ zvfdvXD2uZ$lZ?5~f591MFsSSgZp?Ksk5T{ey_MTG76S0p^BzP_mfNGm-{#MqPcQUaq3+&XU;ljzZD+ec z{(CKu7qoDx&Ni)!{UXo+$h7W4v@L54&i;@2CXrr$8qE%}hOtcJ75RNU5ll8X6@eEu zp8E=}qbex^G?JVr2m~Zi()g&&aAZf7q!~0H4|MG4foiN^in43pBGNn3r>0{CzqA+& zKN3mohLTFE>!|;8RJ*?SBA8imCI0f%s6kYFgeNE1vF(^45y(CnyGu>lXXq>~4CG3T z+3ET+vv#_4>$J7m-KX=)QFNyK?n+Me*v3MfB0ks>M**91W~CUWF|^SYe{c)9>6sO( zwofqsV5;9q{+JYh3;EPKMlzwieX|rC3nrqDMt^XM+gOy#s1XOr=?@BQGv3^om;lui zzOmBC_)UVK+gL@p#TWb15o>t{*`{2s^&Pp=f2%uzxiG5g1w2d=4lcv(QU^WO6l8K2 zWD8(qg6Ns_5+|)83-Z9cB|q#3;)jlXW*kn>O`!pa4vK@pjvK&K5btYj_CFunLe z`Lox?c_A+tHw6kL$*1dJ4;G}M-|tGj#x^?6AK3X1TLrZ7P35)Av0enJ;Y|G5$E}rc zw8UH}BotWTJoz)U9P|^Y8g>Xw!lQsO0;U#I3c-TcJS(_SEmORq_D*G9oFd>110|bi z6f&-xJS)KZ7fK%M4`w*LEipO9UM(PH05n>HT3$fh(Q^_#sQ%JYc0qQahH#R==n=H=ZqYhL(gGW>3Qs~X&rL@*F`q+AUmXk%x^xa)MpR6!&B?R zwoODh6PeBu_(Q^(6<}LGFYZ6gW1}uZ!ZAs%%D5#X$)vBNhV93or*}JpSOx)99T%{S zJJJw&5Tr{c^51PEfDU8HaIdHNomi471|Xx_!tpEw1{NH)6>AvU>$)JAYt5Kr@a|}M zm{SztKw=XzVIm&zrR)wKw!4RuKfkg_EW!V$BoI03L3O1dM3X7!_>7M& z)`o;Cv6x`DHHzqDCen=W2M55FEe&>FsLb;6T0gJU5#CDx)badwQrHG{Q#iE;%T<$O zSQOjkP)PGJKrHr!=;D;U+~8_=zojy422F+0<&@ed zbHrBL7nZ}E>chX`c>5mbLX|?twrVl{5b|&f$=7dEBokgD~OETmtTt^BH z(4;{MxjZ+t!`ERQzDa$IOdcUE?FQR6i6r+BTuyW=p!hg>a0dsO*BUGNt#>Xwh`<7m zvo6zBsq34?Lf+rheB^Dp;+Y8gd`9o1zjX=kX9+?ANXyJTD}gI|tIq}QQVd|tXX*Vq z-z1wf{_2|@eAcD0_m2ZyNZ~Eg`-PP@EI#KfHmXHczUp;`3)0&M?#H}5xJv#?a9h3` z@i*egG-akr_>ttvr&G|f<a4u{q(f5IfSI>f z6&}1~-^k_?`%_VXKm&eiB>`5>YdJQ3a~LC<)VJIF#IRopm|pMp zOT90y_P6=BAbqUj+i&E71Zj?iXY-OS<~DXx8uP8LVu|2X8P{gqqW$Zhh>U=g^v7yz z(SBy^uS3N{Wpg8vz?UOme-MrH{^kMc5FR+nkW-eI?#=mqEUm6QoAV=qQUj8{Vr9DP zb8 zD=m~#9$G}`_MCN2{|LF&gd4AU_jW7HNG|3I@8aB}$5mT^<-Lu;ulC2JV&$tf9(}un zE&|trzj06q86IF<#ikmmUWHw$5Iu%^>H|6reJ|S=C;-mNO@SKVp(icH@p420zZ@yK znEF43t*vO@m(LFN1(WB9T+_*_CYyxUvQ767Yj7dJzDeSzl^cexY~E&sf;2v&1j`LV+C5kYvN!2rQ#9J5Y-Zb!*IA(?6BDSTM;>0#AZEOK1g?bf4t>NQS|F}Ph= zzarx0iQ@vN4d2^U=Pm21FK7vNsu*Of}&$Tt3NCuS;}N1lb0Pjt>G!xbi|EeKv; zIvU?RLchv!CZAVdQz|x!+7X-IZd|{Ri#s=N<;}_SW=#@{yIgsDr;x5p5p+C+_3_;b zUKh+^9r&fE@&NFIF=k=;?Q0J#o5HZR#d`q*vKuJAIUsc51kKi<-&O6M6P`Rh)t_tC z14S%fbYrbqrzAk!&gL>;Z|5yb<&>0K{uF4SB-WQd&HQO~HcR|obK{Zw?*1}G%HV^Y zSFZL=chfQb&%OK-8y;H4DpL|dE3O}$sA?I*Kx;n)KC?=vcw3uMRb4apJQ;{!R0*_e zm}|l#1~?t6JK_TjsCNs5P3iL&u6)?PUEtqQYK75ISQQf}nK=3rQ>YK*%RCLrBhiJB z+scD)K;ANh*fuHv5;Mj-r|o3x22I**8 zGd&>Y`N1M29|}=Ga8Pc!Qew!r@z_dq z%qMj^_>N7j0H<2Tpf%(-C45)M;D6mRcrgUp*J9+@Ig0PGO)!xS!ETrV_+2XH!K7g@Mw{>EOI0B+%{o7y2Wrjd(PfZmB2k-dFk(cEdyy;yLE0Y>z zfAALWh|kL#*Nvf4O#1iZ>#ZgQXN$xiiZhiKg1&a4b!*no5>sv@jqz*e*_uTG6U*RFu?v^uyn+N*J zDYxjmuj{H;_?Z(&#opkq*!#;gd@m=&QX(D#q<4=m`QKKMy6iihlDHrCyVui~?_xGM z0cjXqA?mVKs}JRSKW+Qe1MaREKXgFy9ec0WOpI}!Y~!)E1B6_4x?=li(mz;B9+9Xg zTs|)Hv5iOG*kxJ!(0gfrO`uD@70A^?0LXU$AEh2;2Z=ubU=`Rv zQCD%V1Hb^c+i8wNG=O=bDWEh$JwKM)c4i#tGC-0D&;!Nhi5WJjP!!wE7NyRw2+ZEy zDdgqmO?7JSG?RD08cKcVp~_?m-;Y>Qza3K@6m%A%aBUb|mfeUuD$;RF2^BaOBff;5 z`tN?imV!*yp)yn4=_jp9TL`1y9Ej3~E!E&K@Rpg;B6$3RhiXcPzK9gVYvqCK5-eaL z{ppYLQTy43W$Z>12*IP3;tfDOudg6R!`zb%Fc{00jZ zLlh+{Ry_I+<7-0LKkf&ZR7+R`4`hu7Gb!kRVn?Sd$d7k^*1u;GPsc6=0Qoz^ZL>kH z`h)C=(#7eos5V!CuC6S!81iy~ji7qv?=s)VZ2_D8&LR_xHCknQbbwYz8M2E0b@Nt6Q zQj(xH2ZX*oA0}U*?Te9;tn4cmefnn3~qhE__`3j~_5Lc7Jd$Y%z$1eAoE`ay}opRRJM z)Ph}VL`v_*6R!nNOP0A%@f&Mi2VYNvkVW=sFYnjSB(9F#_-KzW)Ar@v1v)?5^$N3< z-mMs-o~KhV6|JC88$N2^3Ice>^M-O`#sXjEkEMX#|FQk0@Fu03Iz+8oPZ?9R4=gbBdzo9dn(2-Zo;MHCtTw|V+(&_2#ZW{6o z`4jnK_}}wc9UEmC#B?~aUYVR%LpLMR&>#^5?l4V4_Z3$lE7)X>M`TtR=0 z24nZgZJDw&c@{3IYs@30I+HG9*iiwuly&^`Cz>I%3yh$FFL!b1kfU8kG5ukot)nA( z#nqvV!kbP7{w>-b9Vileq@m5tDNrqlJg8G$GYSSBic6nyw#Hn^3n@Kd&U&C*=`V;ge-l|I`~o1aE6m;wN` z>>Y#@O^fjj9!dNxQGb%7aw2{vmoe{*4L***GFSS#Hr*T#UST+zhuBe$V&A6b;%@`R zK*NNGP+|bpatOkD{XtCkWda`oC$;u)W{OSdo5&^!!X%ErFFn70x_^U141YhzvrhEv z4gGTGuvH<+sbsM9cQak-?PJ>0$VKe&?dKk~rP4YXCbV(3dZW5Ba?w)Q>`PR(sTMqH zsz*-B&ov3eRFH_vsu1Csaj#3C{hi}u^9(UhcW*ysR|;!?=g)7VnFkZ?i#%v1^a^po z1Th42(;VO`7i+WGT`d{1+4pfRlSCL_l@azmT4G&yVmZJWos6Jy8xazn)E zL72cxVdOkF1l7Y%g#!bVlyd#H#;gmG!ylu#kY-H8{H3Bw*0)TjvLX3x1Urkz8AJBF zh!+AcAA&!$)XjxzhI=sD$pv{Aw&UYI;FF=8dqo8JMZmx+c8#S4YZhix=QW6H5svPO z;;GAJL;rd%t_SApCvoixr{=>~USls3^NiTB>24j8bN&^w)SJDrU~ZDU=l$Qbc^z?R z(QeeWc99G08}HYdAjU)N58^TP^1Nf|Ewvpe#p)9f(%kY;^eM5nrj{5#wZ0AZ4v^Bq zbQ{Z%K&?Ct6-ty@UV@F&xw<#0QPAJFmn~Um) zagnPs;Jz+XyV$dxAbh}9Y{cYOHXJj}Da-N}92>ZYrH61w@mICihGdPOAL)j#0i|F&1q3l>lY2lcHB8h11-vch!sN_Wf(yKDBjr010~S`wEfcVRLE}RBisR6 z+)+eA0)ipbuJvqvQ0%);{u8ZH8h~?PgwGz0Dp5Es4Z}$?x+`VacXzVCypP&-7QRJ( z_ZaSXh!v~`tvU%`BOM4%DEdAa*(sYodM|B!OL!G@SsdQUNP9Z*=Pu^FzwKH4?N2Cm zRU$aUG4KI}hH$BubXsoJAHvp}llw|im3ybZzxr?|L(x9QY!3vAM=O79aDv|li4ojB z^?h<`UXKGcS##30p^{1t z8Y)Fd09!vQPH{yVXh$YeE35TdCiW%24B}`ULw_q!N>KFNtmBAdhbpH2xy;9G9j2#1 z7l11^=r>)k-RM%T3nGm9;_~snCSNI%t0q++rnn8{k+L}Do0eWwSM+RHE5x5o3d1)Q z6?g0QSlAGzXTGCP)M->>4vJxLUjA{=#$5U8$t*(zk7@g7N5y55%F5sUfQUEs>16k$ z!6*wyk;=R-Hue!?W3OPLkV3iN{)sID=Iung6`9s=JK}FztAtZu;I9!w&Dks*(yIUo z(4+bqolA&PI-dOWU3Yre0=$km(R7`mg2=3lOuf! zMqhjY$Ja48$rHO*|S}@&lZd%}x?UC@ueBS&sA2$|3SV?&8=!DXNnTKkmnr6+2;OxJ8^N-*v90EjqETod*9SQ0bHncr&sBNW zI!yFR@-rKDWHX+p{mVKiFQ1m2Z^P&{7WDDy!BB-tkxsj6N{^7QxG9E8TMVsG9Z0@d z!c$k1qj0N;HgszycNbw&Q?x2Xu=D@JNf}*1Dz9fCGFUC(M#&Hl2X#MjNx;3*qO~t*4S-7rX5uB1J zE9%5JrO62|;-pM3M7K^73_CCZ@Ssuqjn@WWpJ+kX{Ku$g4?(IRGa`g*G|LCizQ%Oi zd`XO&_>YY%3cGZAad{ys_7l3v!o z-65!`bWK6&lI|YeFnIQRp6mH>QUFOQsStfS1*CExOueaWBXGEvE-8;ZV8TIVfol9Pd>&>9NGS8MZms| z*(8QujWNxUjG&ViA#Xpk_r-TpE!Hl6^5*PrV#?c0Yig3;(j@8p0sPn1n{5SrT^$mxT)6He6i$Lp?`Qxl!AZs9^+AryM;9SKn(hiMzA1bL zkHFB#K}h3lEijA^9nLzSa_rJYD5TEFt8AyC;NvH~`(w>(sdn>ZG3K^}0%K7#8{ zupR<-UVE1|*kvzhAe-u#881jpG7!|Rl)3X02%O!!0s{<+1~t4H**@1b?%y4)2C`OH z-8vN{XoIa5E*KUE_gpELFTc+u=BjdV71hk1oi6M=Q`xT5FgNE+r4l&9pDVIr{s>GWhlR0qlf7*4^GDivcovwfKbVVQe2p zm*WjpmoK2`{WuX<%gd1>%|cS`$T+E|s>zCR*5L(Y+ZjcR@@fa{jNO9EZD04z(Sg*Z z4W5%h=T%AB@Dc7O?j-=I;e=NO}H$767^Q=OoW26gr}nrvj*r&CUcW z^0Kv-Dv-tJu3Tsi4ln5e`29&1?iZM%ujP^~qT@w4y1;^0^W%Tq2E_p6>dFvx zqHkiZeXbAb-m<3UUvcVR%1n@BN;9`s+^!mdik+FJtRHFGi`=z}j91thFv$nIK9Knk2@4da%pZM#I z87m6q$W(Ev_!CNCb(OWM#Cdd>qC^UAYA>#(dE zkH82ZO1QE|8}GBIxz3vC!6 z1}lgOVphHL?LV^4occotcfbK_;crMzw>0$U3^@B4xjs{z=B;X6w8?SpTB6dKiL7Du zP;V*{$jSovWR+#bG3k@wl$Pu;x65_j|)Ni0U&Z*$yx*3>5`Y4~Rxh9&Up?4HA#DH1 zGxJ!GFQQJBTa6DK?QNq};azpdwi&FHyC0Zi^#a;O511H%kd-9y-fWZzb$wuvrX$c8 zKt{Y>s22wkr~ss#s^9cODJmYV{!BzZl5EcSKSzN?bGQjA1WCe2K}X@1+So2e^tjA? z0L5!MH@tiyK_Q9Jy-P%?^5Lbe>i!qM<^HWuvH!~9jo!I@2b;b-NFYbaR>_3|@%!}0 z7mA}!V(oYbKZ}%iQqw6xLd44(bUHy+$7>|a7@m~aI6u)C!Sz*RY*d57;>Rrl=dYel#@YeWBQ4AhtLg4`4Gl0)obdGamTF*#uPJk8k;i+thun2o3t% z$m=%AhbUabSG=&4yFFchhY@l1N_I5tarTSXBTKLaBdO7#i_&hd&aYk!4>q|GW(W5Y@H-?t@(_Ei+ z!+c&-4qI@BbGDc0i;rcJ+ihIt;@plo8(rN@%h$;yUftDPF%sOL)4UGaN7XHx%25_zCOiYB z&(@^TD^L}__*v>-v%Qn-P`2BIEDBm=bnPUbh{V+xrC`wdQ1Y?yqd?NlcP7p%;3%O7 z>>!;Rdx&_T@NLoS+~IB2vg2AIj6Mn9h<&!JbLp+tJrJ(oTn&wMwQwF69O<}_bzgg& z9+EU>xG`hhq@}=Dq3&yn+b@J450#b{_Pj`vrz`m$thIKpqwM^X`U}M+w`Q^|;!XKt zP`*E+m%$y$vuh~FM~_}A5hvq|bg#3MSTFN4R8SSiW6n+v4{)uQZW6(qmxb2Q6>(4N z3=Nn`jZA<b9<2Vcli%JoxomRmJPqKK^8+uJ#LLA6oLX>gOFAn=6*PdEz&2m1qBp zxV16CHP2sV6jz>H;hxF*P%;aqcns(%Xdw5~mG zICH{xkt~q)l zMV4qZ3o~;}OKs&LOE^7PN!ujYz*0T@srgC>LMqHV$Nk=Zb{Yy?1CW>Cgf);iEgs4h zk)M&U+macZ$6G>gCq8laSGx^Os2q`s80Kf7_Dgt@h0nJ7SJ}M@(?5PJ2R@s^D_2UK ziWHLlya3nBELWkB&qR}udfRXEMF~X5=6@~42&U=|8l$PqqcHc!3JEG(G&Y2!QTi=o zr*rb4gUGWxAAVE<`l$P9;YNKxvMW;kj}6m~tan;2oA8;J~<**#RoTZg9d)ba(rjb+1Da`o0y-&;6Vm3xa)6P zfktLXJ(dhX7cV?L^T|9Gg%`ppu-e!zd#9h{Z7(Kk9$sKQ=m8RNNUx*v#MKM1Zp|Az z7dhZTAxPj^fOuNRLBnYHnJo;_?P06#?=5#eQ%7W-YTDib5{Cm)!LYE84<7h?d+v*Z zbis4KZZs6x>xMS@JPFnX|@=ri#$4PrRlPOmc_z{HIBf zNV$=;jZ}vR%dzfTZj5w`rzTzw{4DLlos??)oU^i-kD(`aIBv4YnZC~l1An^ll&zek z8^vDhZr4qAU%38z;#e7Uvnc1$S6Nw_ow$Ep2P29wp+UH@xjfxpHHw#q#|$-jExbDN zR1Snv1g{Q8i*oK4h!s|E@4A>#?wR<^2pP(<@uL{S0Bs?y^rtG6uxW20!9A`uxMZ2Q zYhj!n>$#=o-yCXeCeNz-SHzLmD`WMn?q&!p4B-w`+6IB?h=T$E(-iklO#sTC5goVa z_qT-vL$f%((=U{~is1Vfd$H$36*MIhzXS^FI7x}E%^ZGZAshPW{Ni>Q`X*7<(yw)R zfT@r5HcGU4T_d-ti+Sh9f`;Kh$6RIs*3L$Po1ldL%w`=IEknEDgFWPI^I_u#G(j#| zB(!a2@l1N9AgKK6>M#&bQ0aTmvHYu(z(FnYdym~K$X*7?tf)1)9?|M+0lJJ+YUl9T6#N{&*FDTx>hxMjdej9RNz*O6V)cKAWwm@xJ`Z^ zgNpT44ik_Fkktb3csQ%cSI;z&3Oe`00zbwh79@umvVEdAY8@9CbgdN)o0VKCmV*$H zt%4ISIuc?}Wohg()AL~L>2wVBGMpW=17e9^xJR=SpL9GDrgr4769rN%`4n%=t4wQ3 z$*k3Mq$#4k?uTi|T=5Yal^2eA3!6QT^RDNIt7~Yxvth*j)VaiIJDd)JZ2t|>rah+) zznJFya~HcM`$Jih_*`%Iq3PpPQxbc19}{BlpZC z5+*gb3CyFXu!y#&(Kz_ zEm1D!>Sm8V%nkbWHrJ|5IetTnkn;zT4?POE6x#SQ0W~2W@P|FZGcTy0c)$x3Nbgwz ziF*GjeRA8KhFLt#GbK4%FaB&wqx~0>Hj%9bN}Y0yZ?tl_Ny$MkH{2>pQGkF~qoM;{E|^O5>;Qr^Lh?MO4mMj32eS@LXhiCCM7eTnY1}C_=D231Ie{ z;YJH|v;!~B>0WqYY@aECuK1P?I6x~x@M55!qGZ^vwq&CZkw6wx&ow%5D`gXYMEv_# zocQU4KD;2dBu>Fj>dF{xPnG93x)@!yFdhWuK}{`d>d?V$x6Eh3kq50sR8;iv;kSDP zB2?d0ftjL+=TBZn)UNN2xtrj*zZ#E-qfH5*$%BrZ&;jwNIf7$I$jRq^m9Z(c?MXAB zhq*Rty`Nc;B^>kfMQGX#9AinMS91LsoZ`GFp!sw60X~m6|NR63ztIpAGkNasoH~4D z334*GKu9M;;R!3vpAC$!EUX`r86fkQA~Y#=@|k&EHHn^0iW*n#{nDE0nRkBk*sy(D zn?!GYDW2mSPJK3mG|UFN5u|CFl(_s=iQb;Bn>{y#8tofwUTFvBvlL^4#0b*oIp17O zCTv{{RNszQiQC_MV)!hbx!keB6;?7g_-Syy+TBup>y70E_W3tX$Z2*)$`)=Yt`21R znM+SK>==KXw+_uA+8NfN*@pHL<d}U8hpV`+=g@%+X=Rn;>%}9mZmIXew$&QuO@usUrI%*z9?2a3?6a61 zbzW!;@gE!JFb3|w-WxjpA=T0*XQ5H5BtH9PQM95nkobKllb(oGa*H18OgMSJlNt?TP<)2+jU0C6WkA|M%Gm%C*-!oi{g(*9P;W`C}A_GDzU#;WQHkZdX3pyjK6KzQ@E zRINZBtUDnu{D`ySEDnY&C0)yJ<&zT_u}(t6SV?YQ)+_vAS+ygq{OEE364HT}-u<3N;R*dj)_+zQ}*;Jg< z)89p=cZ=#1n!kR|V*k|eIPTW3s=%iGp?CM<3@R`4pFwO3Dn2k}jfPsf$e4SMR<*}8 zO%p9^Gm2BoW6o|GzPKg#vPw$l+dF*fm)>@d4Ds}r3*7adJ?c~O(4w0zrRS{DU-B#1 zWHo8M0`Al)M61Sc9iN7dt3pGjTbUODiZ&gFP@^#gdalTY*4J~Mp6q*Nco-5UJW-rM z?UrMsEdkk}w{QKjV%(LS z7(c4m_Z3@K0XI1vshUahpt7WF`vp=55HZTR94Jqt#n?;YJEHGX5$l(yRu49BQ|j+| zSCu&(*SWl8$$!LLwGZnACItUc7{G@Bn^*BMtTH|TAx6HM*>5p^zYxlsCyXg<;4H& zQT4{Hn;PH3$A|poqlu(Esc`EK>@3>;=ELBZG8z45zych?yCm z4OkaCcdANOiySr-y}>p(AV@Nt*%#!_o_0i9>6g}}L>h>HPNL?nQ(rbrxDjAlUP~<+7CZiL>o&F}-@{2TJ=qd{2L#YP zDp}pj#@OaauG{CU6^tuNy8n1q9f2XvasO4+Cshxy-5AscieaQ?rEOPryWmE$)1un3qq_G>~K$R zmt<=>+J?4ialfD_R8Gl+ruscYCa1K8j@s@^Fqw=@y>KtSxMNNxKEBj}5RY z10A!A?y;c}Ey6B%%Ni$ylsYxvHp#dB$%1fz@-=POx+^PkOGb1UXanTA_l}duqTT06 zAjop#^GsV}*LhE_q0#T+zbDq_;Mz+<$6Uf`W}CO9Pg`~>6hWzP+w5$l6==mNfkfZF zvIwrcJnJ=9UhFWiwNfxJcosObqjlaigky*mjV(aA>I55##5?x7rC@k`*%y6cGgfC~t-kCAZmwNnYR5T)|1A3V7B#pzx|%Iqgou}6hAg;t zn5kdO*JrhypI$EYg=Q2V5~3BXN$bN1d7#2_m0&y1YY*-+j?|E)Xc@(7zP`IEhGzjw ziyR_omALMM%)aY%k=>m-VGyEV<8o*>#aXx^*ZU_x4O1T>li>lNI>C7bp zDdd)Ie)3FHAEZrMp82nZYw!xG;=9dUcV9&j6&wWDc{<_kMcSOqAXf=;Wlq*N&}yr5 z5E;QJ!bEOpcAYfaWF!7rPG&1N*?Sf$TL+t8RhCsu!EyLjA3ye30zg!uN<9Zq7^B({ z1J@>e-qFHNi^@wbg0j9sqFL{q1hp52lzUVY;eB>|Z;$BpfgQ1TXTcySMjQ$l>nFpGq3IFVE(v^@D5 z0)Gcis1qsT-PT$3%*kLGOFr;4O*b;o%`crP^F_c$HEif&7DuKns>s4v7)?X~on5kFFYj&TMjArABHTN$s4@o0Z$)lS z&AXR=jU=dN?9>vVupB&pcEPPhqi%6Ot2`!zsq83!x(^Iy&jZ&{JP?Av!+fyaAoX06 zv#oxI;fa+Q*MPHs=q)9_ENJx~k0?{00bAZgj7EueA2zll3+=J&> zP(iULDtA?t4XLge%ZluNBDmodeKgSEr`({jW%yVSqCo{`LThj@n{`AjmNO96Jb0I{ zLY)<%8txag0(?Xsx(=H(rEWN{!I!S?Se?gi0rWl{CF5&86Olf_NRd#azlQRtH#RA0 zpvPMM_uksF9GaIINf+C!w93momvAGF2fHJg4@tE4&#f9Kfm7^83{QRd_b!OI5`V(B z9_tA~S_ zS`rER=ej}=y}p9^hOlGbUOf(1D;}so6CvJjC!-8hYDg|#leFX+U$OZi-VjfRTPel=n$q4o}9J{(Ds`h8BG$H z0jck_`fn{8bX;Zir=fxUjlmmMQ8Co7PI5C3Rd|amuhI0*KcUMfKTiy%GZI>c#$K+^ zdFrsSvPUawY-W=vR1nyABn8FMJ`?48eT|M{U>zerE} z6x1-q%F5pSBG%@|%>PG#VG}Nxel8`qI4*O8sDrqTFAXT#R|Q35G~$3{72&5Aer)Jo zLH-f`<$jJEO~z6*66<|8%~H2c*7`&CNt=z1g83&?k0DEH*HS|AJjq-w^~g^1t5m>t z&fW~;bp!sKmJx0u|FujgzJmq@B#|RUE*yTJh{pTHAPOiOs(4&W_SNESGf{F{1Kws= z9zuvLRD%wzWaWw_tJb_Ii9++qDLiPrgRAOVRbL*tv3z{{Hs*7Z3B80a8o8!3XZ%+Yh>d5f z{A$%j^qvb(i6k!1mbR~|l}wTAKR)&R@|_$j2B@+0#@&;M$B6jJVe$qv$T z^_5_0-P3}@JRSUeZK*xqe!0zv{5|{*6i|s>h{vY4g=DP~`>%Awa5?h_==*XiE3IL^ z67$XMX%fK=f3sW;RwrF%&;I+9b!t5l$#ouZ)Y*AU?UFb7u^mjdMb>=m-U3;B)rr;X z?=@=->k`;iqmEcDSCPk_tVb1plVa*y9iFO=yp&xy;Gc6czVo^m`tYbfMgpWQurPW{ z^o?}+F^w!GCXf2-pDZM+3} zZovJ?g*ayKxvqfHn$RHDY6bi4;#0BL=r(HAJJ&R?qg7syn_vAXg%;P{t6OrW{`zgX zXa&dA42?_bXy|t197dkmEe?UH* zky0|zJC2*qfpem}9yotps)-Jm^X2n^M?y0a_M{2m1Ek;WMrJ=bg`59wfyooKQBtOu z+plSqa-kIdbj%M-6|SPchkj7LH$gO+uqJPg`1qn}x=tWkR1;3SWV9-N{o6fVN0G;Rg5T(**w*ANCaF$D?7_JeJKC z6idx(_C=%yPg@sVMWSn0Bt2Lb_XCRZM3_F7p!0l2zL1nqJp<%HxpZG=;3g(Ph}h2d)O zW@oq%nhD}Gf6S%NOO~y+x0z;Gr=d@nMf}Mgh|W$b;y4*vJYAVTi*nWv(Yx~UpmHo? zX*v!|N-)Af;qoxVkF?HXxp5aNK%Q!8sf>$pUy;SPg-=o(Vw5h`OUt+Jdlb-#&bagn z_!KKt{tZ}r=K9MxJ3bGSiVj`u__W{CxhDYd1aQh5g}3sW2cv2(_b%t6S+Z7scYCuL zb$7c-OJMJO&G=@~JNfCT;^E)aNwF-30n5$js4AA~WIusO>$P!5iu zM02Ymq{qe~k8M=_TOwNY(e$BI<#$2U;FqrXc?nP_a=N)TfGSjys(be+3ByYknB7WI z{yw?t=cRJ7scKCg%DnJ#F7v*xfrdPQ1XQQ2MVlgDZ3Pn=O99e`(>_S161>!c+4`D7 z2<{rW?HGq(b(-6|geP8Q_M&uHte_LnP6eN!0Mj8KB{7I06=Lr)lfabm%O=>NpqAnI z1wI!iD&kjWun(|CpyLx{S z_BTsa`kt#Etj52w$|GjgeJZ_=Nc!Poj2oEzCm#~7keuay&lFd2?KdYsLs+#w6dL`# zDwri0Fe3pk?sE*Z(u3Z84UOU4i_Yu2t5c|+@6*Q9zn1QMI~fwacJ8TkyYJ_sZi%2e zxPvkiA)gU$Rd8ThXG*w4n`DNXsApa?l(QIyq9~2JAxZtQmApFry;VUv{67phwH3{Y z<&LFoIKOx?UwTUQ)73=5+{HDW*s{fl-z8XtfV&mP+sw8=Mfp1ev{ditlG-=mw&3J7 zs8%fomCh4m+FWBwAF8)yV+L^kWkT%BOEAevo`LvDC1T)OvhsCC8{5kH#vj{7Th|fLkU!<3-v#99AD}0OJ_W+kV+(cv=`%CW}j+0Lmmav1nElbnXDIGF%UAn8MSMnFcz^&N<hb+$NJ#Ub6T{3JPElZELVAbR)%Bvuv@ETCr1LhhbT2G7& z(Z-o3f#)~Td=Cp;O}k4b$LV!LkxS9o{eqVow@tqNeZcGFq9@2tmO^QUxlf|tmEHJ| z!e<|1M5RQ$^1groNX$W@+);uPqW?r{@I$0s#$&Nl%dqs1nY1pkVL8^{WW#@dSl?{@ zs~e@bAhj)#Ngd9Blw=O?%GoZo&m^OVf)J!xx?jJ61Eex(R3m+o_RLNx*6wP{HPD~e z4R8jrpJVszPbCL^{3jQEs&+k<*b5oG*gXO--p2gaxepjUhzp+-04Y6n(o<0)pIdKh zH>I_ooAaE{DWUGy5mS=$QZ+;0znA_g`eI@xtC%m1_^ANvA-u_FHC&; z5@;@k=-Oy2|E7rEacfvjbEdhc1HvkeAI?)Ygg-i-OQcOzXMW2TG*%u`YvMFt@KFjt zy?J0+u0#W0Axb;fnE{V&VmIcuF`)B?W#@?6WVeeaijCO|F9IQL$nu?G|I%~Nr zdib+;i7-e3NCRQrR~iNsnj+S4Q2ys@S!+j*`uU zW(|zI9DR`Vz7(M2H=mJkTWt4xxZ2&P&j25o>&_&@);eeZvKkmd-%3}!dw>01zRq;v z3+hP#_Mu0m#Gh5R3kY|1)!=26?f&*QCCKvN5e*el^ZWVvd=?6qyAcd>U30ekynzGW zSIT@frkPE-6|*TCOipwu7VH~LjbFB18awd6w&<0T9~qTyDF$@s3!3x*g77dQh~|6=j_p9874=zO|CVd4NmyvS0R_ zU7mDnpJAQ889?S74qZ?lzmh%g?V!cw__X-*ML;Wu9P{ku4dJa4-GYC4w}EcKMIC%- zzVL_K7?aOO;XpvX&d|+?$zxbkNwt{w8wGdw6exCoSEUO;?yLr`5`6uNphzP-iNRBW+w46^h*B{z-cfi49`W$+xY2-i&h0 z--Dy`r8lP4l7O%6+uTZ0U?FCXsK@;j9vxGT&t}$~JXIGMj_Z8^ya5j>SRR^jFSY}E z*C&3*fP@(AY$8mRm(F=fe3c6g+9dkTcZ-YNu<|TruAREFWQ^5Idx$p3@6rs2Sh*Y9 zr9~+XPBb!T4p0d@V^M-dxs#>(1Wp(W^QaY?j)tib)<{WW-iRpAN4fD1?&+qM9j7P8 zwDOS=*FKxU#bPt>t+0F(W?eMW(t?K@2$~$H=YHxidkLeD$5(j+o5MMAsIpz9tMzot(xuCH8WWZ zgT<f)f_~~tSt&jXoJLq;{WTlF-gG`yO26HuX)K)sS`U4)Hj)cdsGw1kU2xyWc#OU&Guw(wHqAN|^)F!V zzO@c}Q_!D)X`Afc;DF6VYlyx`XD+XrcGK&*fW#IXb9u=#={HTkH>p6{lwr}7Eq(Gu zM`;Buc}NwsCfb>i^S9`cGb zY5z+iz@g>;qmprmcg^rfJ%eX1kynkMTBxQScGXlZxl<;2i4E~QuhU(uA1eCOZY1b6 zSXZNLW%QhJ8SDHZJw-_7P-0Z)`7N;-@CNlvC|`}25VskO(&;y`L!6Hy?}cE+AGF8q5ZTbg~n@6hIo z-mYc)zWQH`GzOW^_yR6eisr5=J)UwA7$N-qfZ-t%Vv!y+5Oj)i?;+=qX9etn7tsdJRTF;;(_xjWysaEyMV7U_5Uoyh zu2S_clHK`Zd+)#bK%}?r1!S=t-8n7Fx z_sxbSCk??on+IOp1&%0>Q)g(%@_|Y^AuXE`QSL26@PBPaN=M_#*yW#erj6zzhQIt? z;|Sztexyfi7AC|Iye!rDTH1!>72;PBiw@SmYtikIRwG*$Mu04f#mLqsu8&vs6t}84 z#sP^H zL>4*zuNd)n`>;pYm%T9^n?2dHhMP+;m%G&%cK$yjlr30z@Xyl^ujFVb8ELd9`?J!c zDY54{mz{8|X~h}SV$)i#Re{YxnJYqy&xo&u*TcW-2D_IwaSoGdQu#NZMCjF*{@Ik0 zf0vZOg@4Sq;tZb1^VYCQ3BcD$hi75&jKZGUB0!88>f56pWyGL|1r&k|8i6wwMTw^H z#B!vJKl*LnOWgiU6xw=QO*pr>2~)s@zsqX@g9lw6^R8?N6HDQi{Gzsqn7{Kyp)fPp z#%lu=4)rZla9U;*#GX>+QvfBN)pCM;mhp8nm67n3{;95s23W6;EXzRUU)1>9+}Xm@ zp?N{0YyHcTU2S4Y_N_c1c}g(p)+;#~R>Lr^9>D0wuFt-4NB%2W_m;t~Qk{0%yvv$W zoe9oM_Uyzxn@K_hm#c>9N%m}DR#n!I&5xcIKMq7@R#_@uy%E^GTG`J?-RZdehI9GZ z(3{WY4qZ@ND=kU>E4mk?13_`!yUg?@L!)vFBTa(tSek$NOnLAysN&L=6wL!-`wsYK z-mVa@2mvEPFos_bxl*N5-{+mp?-DhLSrh%N7`~BA0Pb!uC_F9q<&zGPab@Poe_)_X909T?I`?2TV4Mw+EClI@ zCDO#*t4ak+hkKVY?6p_9g-!Ihq<;g|_N*##{G$tND0ai1P`%JQgh5awf)|`%{zNFt z!o7gC#`=3^D?e)eCPL9*y^98w|3acyA4Q`#b@hLxjXN&9X%c<>f4EK#a0C~w2*>}| zA)IxV2^`&J05sPNTi^Ya8hJ$Mo72ZW%B;juXCS?fpVJ6EW`2C^hPMXup>9u_T?oR2 zN~d{1yzUZ@Z&@dn65vH7EF%kKQS1?=FQ+V6j!sgVBW}_DoS%u+f zuAHMR{44(q8zzU^TT2>`Y0F2ZT9-GL9ZC{&c1s^U{meP>b@v1Xt~dVpc-- z%$FOo*t)qck;h|?&&5G1jZHpJM}nbcqc><}roAGss;8L(K(ZSQ>-0lWi=bC6kp?7t zb6*JQzIJ@`B@!1@~H{ygCFnPk2A<{ZbibK-WQ+?N(gF zIJaUxY9v@;&hBGnJ4U4ASr&APji5g$5&Q`*~c*GAH-Wt)f=*v3Q)(NbF+ z!pm7~q_J}Gh29!D5Od}(hN$DaA|oCbkIeprANx&H(k;Wu|4p?VA?R&uTf{eMhA??7Qe@w5cOZmko|I$3zva9)7fqtPK=Yx_K*>99`~Kpo zjLu)e%@qenzM*?ix-2Og9Br<0D1wU8xReCM_W}2pzRoT?f~c%eC&5Xm5C(~3#@gDD zAjuayDS)2-2YXhd(JK^h4=@mmSxFBy+GIXbWGSNSTGXoBYN11x++nP_kvxxPB9zDR!>2_?BjF7x14{$a)QhB?hY!c)H_ zBM}kcS5P>{m&nOYDVdpZX{PfqGH6MBA2jhu7emAwKaB=iww;*OU|kiMrlidyys6lp zQX+Bu^rpTDd11AK^c2Sa4#e;qTUS?;gN&UXkg3OgwIUF|OdoUzb~(@ZBHi!RJvv>8 z%D({Dx2-qHBL0IU9X33o(EckCJl7D~hf(7T$M8^)NcOis296o)`s7dLJOlda!}}iP zAMZQgOFi#tUG2k5+h896G}zcUb{ni{(Vj~|Ixay0hd;nygI%3c{AQ~9$IBk|1&NJT zkwTUa2&uJ}| zgu?S|KOV{FFSYQ3Bz7CvjD9(d zs21H0Eh7ai^nq#vny>;3G}1^#j9iWH*vb{yfZ8)Ey==_ZUBc3m@U8B{rRGx2{dZ&|9xfGYg7jHobLj4Gc0N@Pk-@7@PDy1WBnhm`&f3Gwoz8Z4OT)i(^69 zQbRP`e$a>%3_FwXCDfY4&4ZHEk@%GrG%>#Q?J-MLc7y68&GudURyjhBl^ydJ(cFuq z&q3DO7)?rco)#Un3gzj*936rd9NvI7vMO)kA&b83?$w!~_`QX4DcY-_We4$d>YOZI zHK@3oNh!C$LiK_kObVk@NsbxNCEG#)xWaK!QueV^q7U6k1(wBvJSaiXKBO5SOpv85!Je-~IdXcP zT%}5RVA?y(w)vg+lLWf%x%X(_AH}h48GiZNL-P;DNXQ#~o#T0DRl+RAfGH$F3L2Z>EUfj5O=QP-zMvwT@KrCu1)}%W5 zDuX03j2Qfd^ry3%>gF&~P3s_L#;U+0iNt#S?)QowbBSVE)JQPe>}uAIpepX02Uc}D zA*QIWtf9@QG#A{d?@7kzn|zC8d_8XHL7GT((jZ_3&bL~w4xf+ol{%Bg4}aO6)@B!{ z{4kR#vdd0$WP z>q~Ok-mz{Rb^O+mst|!6gFG5A!TCV&+d_&jY^?4+nio5DsaCFdFJ@f&?Pn?YuU_82 zts9X=e|22*RN4PA-nNjV*5&${kskHomWYlp1AW?*BhUIX1!CTEO- zM%^uSYuQ%6;8yaP!uMvs4leA`{?07j{Rd{pe!l!5)wtM}{Uen2_D^GLD&pMRz=rOe zq8hqsGlvY-<(AXPNw*_=PlD7uD7m6iSRYpu8^sY=;3A_fkb;RiQlTuX^|bm6$LW-@m?ALzw*q#( zJ!lw_=-jEG}%)mHyW!Ti6E4%&Ga^t?4{hX^)Yv+uZ)(>%uCtWetyjtoV1 z)yT;=U3U8&Ly^5}qcP9>g=k3l`^U zgg~Z_?cF&-!i#r<9?T80lBFfW!W8hP+qlJy8+!c_ChGA-aick!Dacp(otOOY-)k(% zIxEF%hH&~A4Uw+S)t1Gf01}aPU-{!d;^$?))9@9o;F+DR1`M;pKs!s8b=sZewT%TQrZjl$zzOm`TUL#kddFc{fTN7@<536aLxagYdPz++nF zDex5fJV5IvR#SK;Oar!|wQ=vzu_%8{`hV?12x_3^6UeUyg%U@3`7?PaL-co`VkG4H zAAUcJ1QK0vKq0`mU--@g;DOR0K+AQE{({=*LH$^r)qx$wp>cIXRkBzX z^dQ=74&PE1$Y~=&hUne{Oh_cSM{OAUsu&MCtTe874t4K*Ong<@LK$e1W*91V80kPS zI)YB*&4`m*@!KwHWz)gP)3oGBW7L4o>gIpHe?eN1blM{?1bLA3DyxCx+KY$Sr38k=4!F zHAyUnT+n})jE{%}AVoH$DL$c_fp8`_7_0t>>@D%B1)SKq(iVtfDm56Hxf0xTi)!UB zM%=vtyorYpl%%Jp$gK>!ve{EYEY%xbt=i;prl%$3UHnA_py<@q>acU7 zh+0obHIYs7I4{H75=DLMf{rVe>ic1P5g1o6oIMbJUh}Ip+Q_bdyS>2B3}9=1=Wy0!A6LV0fd4XY#E6ZRn%w(NFHx6aTM+1)=qpbn z(J__b%ewsdyQMJfPo#JG53X+>4}$H!5nx@s@nKki_hV{$k~jQj3&RTi^8cahJj2;~ z+_;~_ruM2G#I91MV#g{`wOiC|QKR;zMvR|Td+$)OcTv=?qO?WrO>JUtB0Tv&*Y&)7 z-sDZLbLG4^C+9x*{kcEi{F~78qZauMZ$Ip0%RFuC@u0CS(Vv_|*n^NK^ZM>=^W0w+ zFGQz$5V3l1IMT-b%h@jH8IvjG*GC(5IukgLr4tGF`&WRm zgKY{7L23%^-&4<+*@*w=0to7p_U^6UCip$Df0DZUH~0nB8rQ~L`u6W{lc^gfi%P}E z%?0h_0aD6FjXsvL|^@UYQ8yET$)Esn0)3s}LsN z;!bsGvaa|lyz^(LlnOoJWI8M`Kf^hgTs}uEiUSw(zLS?Pt+i)_l03LV;G(i|;u%T;lt-r%3!>)$8c%au=h^1vhz@s?2rlyWZA$px&@~Huq zR0zGzLV>~yWhY7$&bm&cIp-=sN7}@-VKTlLeV%C{!>{V{p+lG$Ch*XR(XRhv!CYE~ zVNlei)ZwEKW(<8Fvwhbh;~0;FN-FM%&aXKA7l*Ppv!6rvP0Qcty%Nbw9Xd8wgM$Bc zB)Dq5Ax#vPlTt{cLBV~sqv3I) z8j#^aXv^?&*7O|1+^Wrp zxt?Si(AS8gkL6wejZcM71@B-npwx@zE(3mUGqnEW_)?H9~~Lj@ndy=y@# z90X%vvQ~FL?kluzH;(5x3~pH^@q^3^+iF0PtiR+duFGzNBWo&+4Ld0%SzUPrF?5n( z8HVS-jzT@$?!U+AL7A?bjvIDQi(CGEV6A$l5w!U?diN=h@4u#>)i?9W!31D_^K;`t zZ-CPAP;lD{A0R@$>PnJq&XwCb{m{G)|8=2_Oj?q5-AZVtIjEJbdy(((QO;IdD>Xr$BG zJ}w0WUoIV18#eEHN%9ZnCf%HIEPGsH4nCgWOtv9!?n;8Iu`)|rx(c($n57ZruGwRk zj^HxP@yV#dhx-H&m|8RY?n5<3j&_c>B? zx=pcGtU4_$kuh~3QQkssjbsJf{WIi|IV(fLs|zK1Uyxijvliv&+d4^uCF(GcEREbM z+ani|-9}K7PAB<}ayi~k_2@qu017JJTKlCKXTNDw9rJZ7r4zZy7Bt_+ZMyjtHZz@@ zvGtQF`canvihe^TpPpyiK@wGTe(Hw4aI{tADUZBvv7`a=R1y+@!M$5oI~iAf0_fTu zhCXKii>*-2Pfn_R+-%$Z+H9GE$2F_t6dkscw_VF=ZE~z*!#E{Eqb|r^O?=g><5>Da z+8_tu>~0p9s`Z-ka|ao3y*#kA1Q%(|QOWxIr7A;mxgN;)}6IY%e0o*CUAbq*yTc7GiofnxMkVN%Pr6NP$X0bU`vHNu-;ZCGJe$>cB&k zK@a}jvjVvdNkjw7InIxQCkPT|ko#SRGSFGiC18=YtO7p&dC=EOo3meTPt487ESM)8 zdcb&8f2Fpn!61WH#iQb>gq;z|f={(QEM%=BjKS!fqr9;(j|&q+7)jLKmv$ZM8({^rJ{lxk#X! zV227iL6=#7SzN$A5k1rlpnNvgTkz5VyM4P!pDj$ zvKf4ykcMrH6mWzpzQ)^k-2$1hiZpf}$gbM12VC9AJJMszM{`2tT>!!-+z&H`UwO8C z_IObHNt75;zzn1e<=~&j*`E-~&TsClEX~^~uBDm;FUd_are^s(^BhJY>py5KN^g|s zF2XQW!2B2X0p@`V+B(iX>PwWGLHnKhA4=yWTbE4}*9HPhTjwx|?91#4!wJp7nb zPV1JuV*FxJ@mmo(_l|-oEE+2xO?Hhg0F6L9G4S~DP+=@ol-l(3`xR6h*)`KG!iMoC z?J&+B#WUfJCfnJ(o+`{Z0{*kVbk;v1+Wqvpl(HjY!GX(#L% z{53|9Rv-Q4BMH?K%&sLS5XT|~M$5sUv`HY@#h`Uo9*di)^XLW-7C zxZv-&x@5TQ)9xftgpM{)QI&ktQQc0|R&ETmZKNuf)=B+RHp5)xyohdP#Gi>$TBpJ= z&845w(oSxuSMYSb9rwqEh>l5g(B3?{dnmY)ROzWg8m7*obJ(}gkj0`4j6=y!eoZK@ zV38$ftzr6b|BLDs|)@fz3JfwmwxIZw{aaOm?{@-&G|+}84ZqIn8w zsI8{mGif$CdIE6qbP0ztmQUz|An2iSbl?mRhq zW22LRc>h_Q2SXM%H?fh)MsM{QL<^N_DA*o2E>fAJ%FH6f5qK~{~w zCWp}hY(sIO6p+iAc+jV_%hpyWGBP+xVP6uhI7O)TjtZ? zp0+sY!zroeAUeyj_QMh5tG}cdB+EH%M+|3|Ntc_#I46cNL7gYr99fG&X-U4<8~5A{ z`KrLNa<|g%SPlhItC(MzHw*XBpo5Nbvisg|M_U24XeEpiK&j>+??TeaLRmgHdhSk5 zHp-wRu5l6g(&x?wJ+c-;tEF1)3!qW^{JPQSRfuZWI{^3gp0*}Ss&~Eb^ugE2#QVze zuZ^oAj_)mOD>k$MDwkfe``Ab9h}C@-Ia!^Hh1mumfkBMzeWA1Sh*!t^v{xY>pzKyZ^7Urs)l9!O+W12dMxLk@-`xc%Nv z8ythQL)3jkE@^hzJn3KWFsOfTr^^(Nr(umTm}VLTs57iT0Z@E1dB7B6IyYHH@H?rVvY+0$&A^0(pvKR&H1vUVX$M^g^0TPn{!~b*TE?c)9 z=}&7&bW@Mn9RO*(UmzK$i24!aBm>g&G!O$PLm#tgtev`?h}ew$ptO=B!KXf}hiQ{{ z58Bk_bBd}J8;?X(k!fy!<3Hbl*Z^z3ov(gVtsqHaBtXnw=eR+;GQv)u03(T+jgRQG% zG86$7jlMOmDstBdeG`dlCrri%ODEiT0jTGwA)jf-wlE@Fll?{Z13{*$u!dWy#^wS& z_I=UEiaZws$M^=x#c z$`P|O&4^GS!0~=2u^9%OqCG!x@7(L}1TySFIdxXv%^@f=k!OqtkqC-}$d!1#iCX>G zd0eyVbnwDpUYiOiPQXm}#d6Ggc*F}&Ot-H&37khYw3e)pJao`gbR4g+Ng}R1H7gchRVCtMb5Oa{W|fgMnY{ zJnJj+GztewmEy-T9|&!0*H~>fu+PtqG}VSY&*4R^SJW!@5rPL7Y@rszT_p^xyYz_k z^QzUW-EK}}zKON=57;B$vaicG7ln80^8MFyYflG$dDWrc^>4Iu4P;>WH*J9p1q?AS z?-Zti@D>G{6%sSP3M{3}A2+|eHxj3>)~td|E!cfhzp&3w9wbm?(mk{lMP9=Br#>P1 zD*ug04GFg}jl!cH4w3lj56TSguWJ`69adJ2bAwy&bA>+u>>^GYXxMH7c91@C$wMoZ(8@< zs!|9di6O0TnEt#U6+s)b$uP=1zAoXAe(c7&TS_$Ykxx{9-b^szNBr9*PxEg&Q=F^) zlh)+cUxr^0v-$Ark}*xMbQ?TBa&F{qfqbJpm3t+>yRX~{eY&rDV|^XPSGd0Y+fxi^ z%eyY=g_F0?J5UVic&L%rd5ZgiWumTG1=xl&78it9@ZX1S-rU`0s&w-<_Z7%Mj*Vkzu6Z z+MJi7)comH)>mxSbv@g!{VV)}7-?~)1Z2Uq^+dkfQx4-uw!S}Uwu#(ZU&f9UoR~10dsdiZ+9|5ny5BN|D_^NDw*q!2ioqBLo@=k{x{sbf3j z&!;oI1)sfQNwhEpp>{tfKOlP7Ur< z7!8Z*%6{Db7&`evKz#h#G)vD?&rQ|A{=qOj+QugOs&3U`d6I_-kC(hhN}vJda{PWj zxA7tR*zUdCGFMe(xaUXWoydl0ANFw40#AiA;Nendn{LoZn-BdVD{-idn!Is4oBzje zKF549bBa4f%i&>qwOHe_F}jsgK-UREhjCMFBGoh#U~f;qP$q9^+4@?*9Aw z5ikX4v=3w{pa?;we@$oDV`+M9*D-UVKgw`Two__y9C=eV9dXMqD)0c}b-P?fAO*eWwPaqOOkxKFE`}~Y*C|prwYV&&kUg(DWyfin(d6aX|%ixP8&8EVB#`$d; zX=b<=ooG24{ibbgv@R?enDX8lzw?d@Uw&bsX4ayE>DpuY zldvfwh=d>K6FzC_U|B;CkdZV*LpkTE_@B&8U=l%HC<+J#e zo(pTVWXDV2#9jOAh-OyG*NaP%vQ*cvwSDh@;2lj|lh>{}e_9CZ97_i0U97rMT$fd}gr;p+RlVY+8CAEiPSjnjegB-mcqvfz}aFC5jj zcnDx`v8l?mQ-?;Imhbt-PF@)P)jYO*4d7u^`ThaDP(y02xkdGvyh5q5kR3$7P612f zrV*!6iE-WLY*7wehK)fmThP~5yr?WP&3XkqdE-(DqdHfVHG(HplVQDwO%eF4lfv&g zf=|POVwfJ^fa~fhXXcqA9$bP-Q%b6}JJHKsY``X@0*0qS4oC*(KT>}`m4p6q+I@Pr z(~}emO6h-2n?=W(eltQ(;OOtQr?jd<&!UfI{6rJFef~tjjoE&M(QOvSLa9zuiVsrP z_?zE7x-}qPch(w2ds2G2v7~zu>3_7p!4n`tUa$dapJ-s-(712Dqvf1z9gqOoI*A(X{RqKs6>-ezE{(_sO z7sNahw+3_Bj@(Sj@EeS1!zs<8`^PsH>~IHI-z$0$@x<2llm96)9DWLf81DP^TvOFO zqG9#F->NjMQIOy;Wjtt~IOgOSsGg!_x$py$0`k{K6#Ia-1{0DjyYkO|CY6K@s1!yJ zch<>=Wc~EM!{8-5z!J&L(o-IF2 z^g%#8+LKnaM4yPR57#~xzSL&5XbEmTJiZ&a-CiRPdHp5-!0mZ8#}xdJ)#u}l&X}MN zm*>xkAg#5Lhn452d`9QWdNN%%_fP*_PXIk+5BQtVg^Ds4R`=T1gqoyh*c1S=BlyH) zufj!P`8HS0zV_Sw>ZvetzHB6zR2KELkpM zt-~k+k9Mj@S~N|&kK(Od6|Fu~;hN6U%FopAlKuFdjOhsj5jxI!nVNP|=%3aAKF~}2 zEV`C(xA>eycidI0@IYW%GwrGVb;0!StU+mUsRG&%K0^|DYFDln6>zje4~hjpnM)Bh z=IlZi@9}dxWbCmE*_192-UVB~Eg9dsHi&Kb3fn^oV|}+?1h->_KW39H?Tfelc(MM}gDEa*=|> zGg`tFVt(VJh=DEX>&&~}f-YfRcUok>`@!oM}KfgUgJZt_-d zy?(3hPQ(ohWLa?!wNE4?wrn=*g^%C8*=%UKQc@ja+I4*4roRD4?GUR(7DOc4;>X4I zCIaM0*WCf{JiH?Dg^ zH@@=sw6$~`otQrQ0X=$nx}?9;q-ls#ma2Wmv&mz4RXF!O#v8A^f7A&-o|uN3^_So8)S3G`7K;2Awqz1p8B+qZq8s~ecYz?GT<kZ+T1~FV$2O{-0ym(`15VNI1(Fsp-Dl zIjbIE%*UA(#>{A{6iljlli}aa;`ZD<1Xb2ZkoF)Gm79Wp_BkvWkC&uO94k5m41KBn z!PPz@y!$DFhArh=t=CA@zku;4@Zn|IDi-B$#yUGwSC$i(kMT30>0U?7y5e3jwn0yzB9*k_2Rj?_YWUb{ZQ`= z+_pOGnG>IqODYS~i$Q`~(3qS&tm8Hj1A59mh< zwIvRtC|-??T4gEQ6tmM|IsUL~6uX&moJaf$Qzt8Ed`c8YUg}LJp4rGvq5AXd{!fKe zDV?Q=MueD2A!yi9QO=ESj%z1(N_nX>7G=ivjC20SZa~9?kHpvJF9d5wILNF`LPl#2 znDnT74NCLB#s^hioT=y_l(N2)Ad%~);hfji{L9+6H7WZ^i|4h6&scq|@3qvTCTid_UOSY+ouEXFa<^RYfoB-kJ}c%<0M)txZUbhWy%mb z!5%uY@1s2f;qDEVpU{aah@W;&?MX9##eq1`creRO-dna2o+fLwWG^G z4=IU}avd=s+5N#6u%2tDD=WHx)OI2RkNl!;@rMIzDpwEWvL#Pkxsh5$?DT!v*KB4Y zUiOTHL=So?dAT5B6}@ZxFU(WZReYz$2^1P47HY(jrWOn;Lr9VQZfI?snP${D$=4UO zrS&!4)-<*SUbv~C0F2lnFZM?dvAr}SHI-iBEDC1`h$a^Q>juA()9-^?oev#XZN@3< z*8($6&bw(ad<8!eU2}=Hc)F7v+uyjBFC(7wT1=*_ZBKHp5$n|}uv6ycR}CFoVQ1pk zboYJz$RBUq)ECD2x%SHAqt?;SE*9e)O8!Jh%+JOJTDUaQF4VKEcPW2-vqDUmeQjvyHz7=RtnDd ztZEy-{7A$BD;ZLwVTlCEnjfW)_;m=k{_JZ%tLp0+xLA`x=)vmB z%y(3*=Lz-(%60~(JQR7B-3+q%oi-I$1RP8+uY|AGWC}+D$OHcCMwtV9h=~i$%)^K! z2I%q`tEDZ@6V9yyOt+5X96CXp2n)|%x(3y9&C8vOecC<9*lSG;akQThtpvZ?h2#B%ABr5Ycy09CVcA+ zL3V*>*ybsbaS52v#Bhz|q0d{1t)5VeKk>**55qrK7xE!%tM{Lzn=UbK2N?HT_j{L; z9!e5uwqw^nzt-t`zn`f2ERa~97=iTM~vk7H!gbbm?zG9Z}t*SFJBNVC7ibyeAm`id0E!- zi3fk@`OQ0;cuk&wL!p0sg6bCP`SEPeZvu7<4n)VcQUF{?AtvsQF(kALsgTe}WBV!BW=M-zunBo*?_6AW_NHzbdFmUd(8Us#(yN0=BIG z^?ZW(+lZzIqq*qzaY3qnZ7*&x`_8BY#)yu^hlZXR>uZ7W;RU~bP`gw3ivuHh%K#el zzjUCYPTKzh0lDd4Ifb<}=0}~OL-0Ys3nDX#!hgh2W3Lz?I62<=6zBL_a8fks3PTZ`zk-({QqV9;PW%F=uRN`wCB){9Los zgri|PUWEyvmU&5GI9qFrD6iUCj#b#+*3uUt^^L)g0-P9uNzf`sd=E6_^2&hvk9;sW z#8h9fQix=N1PBM(a=f0gQmlpzSG<^5H zcLM{~2oPgQx3w1E>nAf{(<2lSMGL63gcTX7H;lZNRA)vvah7^1fd_kUzw{sfM5u`^ zpC>C&N70Rg$2_FSx#Sq%5F+>*HG>y@~p|PGrYFH@`>i-T6D6g)yy+! ze~u0i0`G|H3z@L8>v|HB=#(6frxGfkWn`kIBuO`wiqY-l1QNjNJBcG903kG4<*&-b zE_q;DfErOurM?jG4Y6e-%?6%ZxT|t7h`Abe_YJDl!rAdGe$)w?-=vBvM3drLLSq|3 z%Zfq3c(}_i%HotAdJ-s4A4ZZa>P#hIa?@sXfJ~@XxGyLYmGSwG_PF~Kp9juKT zl&{aw(VQ7C)4();_ZJsxe$vLUPs)BnBHa5FAn0_^c0+uUVFTdhT=dybTIbqM_TdQP z3%Tu^X4jBMoP91N!W@LrX!={8$`!ZO683Z`lVJ|RHSC(Tl@6m8@4Q(Dd_Kx{9?`Od ztxRbz(pZQhbj+4>gVCmY^S_0MjYTnT`z=rLHlDuLM$UIUz&ulH`zGCAhdk975OTUI zY(+d@aS4CLzOixs z#^1JYdw{i=^PgMEgv`YUmVXWYdvkr^q!S+h0b}mrwEX!rXQu^5b1_?`j}tkwD7U

    sdpJrMFd0TdoZi)4#F(#J{A!TEXz+_T<4PxQNMAyaVC%Y zLxl$jcg-Q#_iLA7kSXp#NzEwe55u{?bUm}0GBs6u`spddZ)N`}!}kF;>|+f;{y()K z&2L^)eDa|Im4Nik7uO%39_A(lWtWFXrQFs98DUWRYg!@v`rx4i=_oO;0R2m;CXhbk z_ed|!s4!g?b}9wC{cC5nU>4SR|95O%Qx~$Z&s{r4V_$*(C0N`Tj)M|PTs?JC8`n$C zZd!_+{@N#u{&2nM;{8bPbaxL|9S`bYnD*~m&ZT7e>ECoMeW9b&xi8t+>ge-D_*a~# zm@AwhoiQlH%f)7&1rgXpti|@5v3R1w1eC49bQsaxl?+Gq?~jJ>9*O*U^gZl)_{WR< zfF47U3Ju?XulvcMD7B81r5>^FL?vDiFi9de&=nQKXi5U*v^fr~1cBk=K9HvQN-1tO z+?bBnyXDcwfR)-%#lrfy)DE%#a`Z{>Y*;y)R6B7cMe)}G3I2vA06|#;y*(K(wN8v4 z-XqlrPvz^W%mbGkpEZXN2p(}OOxsL4Y%KiS?n9n#xRYZ#k&obRXVzfZ` z<4hdSQ6Ef3Ox^BwVgQy7f@? zspy{yTM_=BKH<^!fJ5at3xs^=wo+EK!`$<#r$)L8yZZf)tqPBYyR8ADZO*!2ny>u$ zj$Bb*xJTVp^dkT&i1xFv3v1FzM$D?I5*5jvXx~#iHBoieSZn2%xu2}L&0*l#0w1-V5Wk-AKhlxp-j7!aXivc@X(?x3C3g6d~dI@ql5d(1KkJp1<|o`?a(o zawBPFDpyN+^lZ=rzz^|(kWCRww!JIG(=&2BxR^!Na*m=??^S!%2f!%V?r_2>*wQ)# zAuM=#GKtyC%N5})mnPC+nQiSSa`y@Z8GD$+-Mb$S&EYKu74o;47R1nU*WueJ!gQrT@m8h@#Us5>lz$hqp+ z=T8HaPTduv^)ONrNFsBNU5_Yq_9eNOSvh*aO?Gw5a?GKps6D|iZi{%TaY60lZ|(=Y zlOf6}`Dz}BTA=y~n;NPcn3UKVwU#*2pm)7c?p4`U8*#`I#5~{>k5@5WSkfV1gO?RK z!97afX)zIJyV>hceu}h{%VtH+2b;}F$$t!vZc(@ouD|7)k_eESX5$#KO1(M1^tlVR z10?^xm$*az+d7N`<8uveiHRad1}kcjVOLVk$d5~gzV{T5GE+Hvj)wy6#qArRA)oUJ zGKpza1r82Dk0j25+1CC$*$9#f4HAx82f+W0ItkL5xR#3woQw306j)tR3W_g>?32_^MgGc=+5haTeY|FGO``zYf+C9 zyD#YSOE&UuY@<4BD-o&XJShL^W+#;}FZHu|-sgb2D#enXRN$wjgwM-8V+GVNlmH=zZIhsogA#`6LY5@w zQWW!T`;Py^#DZ;QO%%R%p5PB5hikMI;*aSwA@;yj-a>6Zv|vKvQp#-8PS75icv*AF z7t(?s5qsHZf~jf_@4akZ5pLA@R|*OJ4GQ%3^5>bWz05DGg873nD*gmx==K4@UqZ~{ zZ(bAnuJZ`}(jVQkvZw#{a%_f@n#x}4!sfLtMp7h9K8e5=vRjQy<2f04DkPYYUND)q z(+N3wDkPMASdl97a{Gqn`%74fjawPX`SUH5wSC`YF&TiLKBG9jU@0b~Go(){+_UXQ z9ex34XY=)4QABYF$Qk$pcKQZYPUO!{T~B(}1EDplE()Tq7R-pTO^n9ngPl=lvSsp6 z%om?755BYfJ+nR;ox5@np!kpCQS@QJtx$8plCYtI{|4{&%e0)$5dwg?kLB=fRxm}K z4LWwj=kSL-g;Io&G`#H=4NFgu){i?DP3DA_Tk~N&z%-P~>mM=r5v!VU8 zFMdR8aFQg`PPE;73Bz2&m&hmkES7o{$lz$sP~flhW{)36YWu2!$SAugY4s5=e0XyTW=9(VrGR=Xid zjyQWM3nNLy|1?sgaM)hW1{?dWFK3Z+(bY>*&idl_RS;Fc-hNKXDZ@%ni@)LS*Dprt z7ac-B?$hbs1r8jC3QFXrSxn@?IV#!Jhdwpv8($Nw%r1}|g2zfp2gWdkpzyuw6-Gb$ z@P#3zr)s}6)&}%Glgfq)Qjt*Z8ARa7AUbbN<}>lcMtyOK)YmY*9hm=9dQrd!3XLP8{pMFm41ctgW}TBAfE;+d ztuV@Q2G(zimQnj=P1yf>_*nV2de>~{1kq|`Y^6|xq*Jd6U@|cwn`Ae$a${?E5*b75 zxlxxQt=d@I)0W|w{wyIk{=9y_qNlXVP1Nc`KO&xnL7iJW$L;vKR2I$tinw2L1w+!K z_ru1h;pPv?qENU=-;(N~!P|!$o(~)VpJE$yAuDT8s``8a6JnaIpc#d{Xj2<0#fM}M zs8RJ;DJ{ie*?n14Tb{22G5l0SBAao7w&3=%=@`b#IYsqI#|9X+`H^j%vxMl5(jNYl z{xc;lOSYX<712S#QIYb2lV9@Pc{=W|9LP3M{)S2%}yNan}-#<#UY zw8Re0+1@;sU8X)8xz<5%#$Dt#|2dol5Ti}@v7WWNBa;CgRSEH zC*-VlDsWKy^k$Bvb#1zv4OmVrIumEm1@zsf2YjCGM@z+O14@7Zu{EkFst&|?)t?XV zw&FgOaV*(&{t!=KLAzkKeB-he60SW=$*l3I!4cZvK?JFM4LG*f8#gTwXg+mJProMI zE-n9lO*&vBc@vng;IXvsyAEYZc(LIT#=6BRvX!!x#4%ZB$-n`5OxwnX*V3{Kp#$UM&M9rOVRt{js@KYVu_vUN^*f66W7w|0qL2b zu;+E^oBDX^;s6PA>`^;c2>W%el_?o}HYS81DX|96WZk2B7aef%0ha=~u*O;otljN_ zkUh(~p7FF}%VzI#nS#%~awwpkpI@`{R#3uz!_dc9dIx{32C`0G@?G9-EHr~k^IXQ< z6?%OcqA)$ZhALmKIL8OJ2$Z$zS>XyC=ik6CnA{gMTbUZpaJW-z!~)wcjGw zv6m5()0TQ=T}!%W9G$_LnCfqbLs$p#|1kSrc%-_4s85^)b~-YwsvtOsp|Ep-Q7xIX zBi@r_ryDAyo8_`gmMES~90CvOP}X~>DgDVm1uo<|=mO$>8OI> zAz-J_X|H~L{$h6AW_yL_Q2fNAHR#Dl(j7y>Zq^QgnfGQoA$8+!%^XU1Jy8e$2<@0TZED5Mx`_^v@Pat4X3M*RtdcH}3_7nwx) z+?lQY*ujt49kY4)?HRM^{hvdWKQF9(z-;Ak{R4-03C(Q#lng$$%|#smEt54sX7bM7 zCInWjH}|m|#g=WZ^oBLvJp4d-|I8fLS-HA$_O7fGDpT&g(G$CVh<8NiEHbR=g=4zf z_=YtZJl|#ShU#ef8`|ewvd)>jw6`ra8?2t)N(SU=m~`0cniI*xJAt3KN9mZ}#RI4m zaU4FB;YnjQK}z=7DcvT$w`TIF-Gl1q1?n(VDXjz%L|Upo*l^$1uJk6so{uk7%Tu0N zyO%y3gl0B}8v{~UW|CBedL)gwwz zwB3}xfRlj<50m2@lp9{+bE$@?uG)pW(E;%3ZMg{eNfNEcG{{>Fi0BGUmC8uKXAfYU z!0_)CC**Yo)5GNh-YFG_OjK|LBo=p*xfGl{ylJveml5P##8;ooG&X@h`^#4eNE;nV z$&yG5N|odfDHcTVOw7aR5hMr#MO26&0Fp{+&0bptQ$SZFlxA>uJT3}BHNCmkNKkI`>J<9L&B2WZy*H&hHNKG{2Pqi&ZY}d=AP%nnO#N;YH<{V86=)p92kU zG1a}{W`*m=xhbT`02zu7Vfut+(xde?7MBh$;FzRE$Ig)KM6=~svu*oioHu?-30vOO zB%x^enypOeYbcY~!q~s&)yP8-YtyX|LIRNZ1}8|;JV|{2Q?gj0RI%_i08R=$DQc3N z^4CXOe6}zIiZ#8>2Z_OdkPEmBP@>bEm4by#Y`@H*WoZ47-}ZtL6o=x zKBU!>2GG!2`+=yq6~ycH@_u)r=6T-r(wWRw{B~e_tC8*ONDk2!?;z6WN-dB(VE3v7 zffQJ=CB4e}Mj6m@3B1L-b>%x+leznSZT3qV*&n9jJm=yC;Lmo$G+G?`K0!5<2=Dun zg2!0$?i<;LmB(H7Z~0CDn+_vs!>aqPP~4?R2Eo4GT6DT+piD0xmYF*OPc?O|ZN0fC zzVRGjt6mPdQyfrm?8STdEA5^9#IS-L=D&0r_S9HzJJpTd={xH?IYW<9M&(E7O0NoXBEOF0r}qA zIY^G-CvN|bjw)Qp6rq5htnNhMx?GP)EE}2-7f*_^uvyh4s9wR1S?r{f6n{t#2>=`_ z!x8oVXjQmSIgdJ%bF_EVHrH^%_c8Rx-AumyMej|8LhRwiFLx6pnx=3Mx#ot;OeKRb zS^gx5+eY93jc#fncO{`6*NjT>Da}AVn5KvSub{av1LbQ%H#r=5B4RZDbKt|jJzVP@ zWy;&kfqs%LlP?1(=B81EwAT!i7vdsX_{vN1t|b)65$e3_^vd_v*D29w*Yt z(8}c2gy=Yq+%a!bi>_zthN?2;mLqMQ?g&lA&ZR^^3N=#*4iMacQFE+t*1YG_-I|fl zEPx6Of2N}Kt^>IJBTi5!vU|9)r+7vnwJU<0Ubn<}_+l>sKpRp_NdAE8zc?abF0uIR z+L45-%?RFfTmi$hh<_lOH5<3s-*-)GfapyGC2X6jtUM19&*bP~-4s&oBuMt>?q*HV z7LDqr`pQD@8@>;tXO53?8vcQcB&&@#Q~&Ab*Tk{$uvGD-%+$a$`(ubaZcR5p59|W z91_QeAx5DqdP|5GH5a50;icRkSucFgu$BLOL3r#0oK(bE*F3*GG3;!2RdYE93HaeC z0?9}w?G^|kw?6SOz}#-5L#Cq%ctPZr6F^7zz?+tuMlFD&5tTq~&1E+Mg4b2{gq#Y3 zq^+VVvh^;%}T%pxK;r*4sKmUofHo7Q;#?b1q<{% zc#e9nY3uaBW9Lz8s`6;JJYIQc_DH!PuLahO)4EH6--f`P+-8e5t^N*${|+h{T^BCC zDRpY0gM61!Q#EQ+4VO}jS~Y5>9PSpKiFYdoW?S1Cmmb4-r_7h_s(IR9trYe$kZlq7 zLhag^l-pY(!XvEWWOIRQ?ZW-W{gIs%4&&R!EZcG6(@|$X-sSjzE&z!8t8N@&9rIkL z3kTPC|DDwf?40lbmPB~J6@}k)C5dl};8ZQKLL+}|6Tim8d-_5Va<%7}C$E+$Q_Y74 zJhKsckWBIS-CVl`glVRUKVM2BRILa_{|`-P85Pz4M*AtcyL)Jn?izXqkVa665ez`2 zJBJ2^Ar+)!C?$U&C7pr@NK2=bNH+s_{`ao?X5a;j#hN*X^L(GZ_h&OtuFwDl!Zqoo zBu=`6rj*Kk+OuW7jlhq6?p|eE1Rgyi9}rpQiSIYGw@yaq^&dUk5(qNPAkBxWx+Puk z9`{7k$mJblSDUsq4Rir%=tB0#mHDh`r1`y4UBz(kxhDjCV2PX)Gz0lsllH`?aFj03 zCw*r^C$5qX{tei^mcD0(RPTh^J-+`&h zZXAzkPT^uXt@`-$h15-+Tsf&HBD<7c14qF@vb#iOY1*ogbTn^ttJEBu2>bUE&*O+v zu#Lj|3%)+=?|S|N!}Gw16rT^9ZayYw)*n0^2@V}8vBcXrj|Yqht^Z8CqX6d>doKVh z79m3E7F#d9!Vo=Z9tv>z-clAqs6>TxB=F%W@cO>6g-@gS!;Orc=HrS|>m~Pzl%ACG zfyMT@%QU4ssWqAsNT92iBHQ+;BAjz4(t}UR+EUyQq~*PzTs>Z8x6pEj32ssqq$pjy zD^?9htPMv><)l}5n*56z);_hLaC4f=D3j-ZQi{oTH+!dS8%(_^^MWNOrL1=AGmFu~ zg70be<9_e1C};h{P)Q_rl#CK+tt@UcRL)mkutb6FeBQjM8lUO%`4$QuY70wYy}w>a zh=9{84Jqf?q?3WNLh?AN*b$)8AqBC~f^ZRSRBB7D^8%TP#{yryCRojd!L1bO9o1snh@x1@0*zJR=wlje1~A{o zjSl{`D<+4|%=@+m-+WU$9Gu)gGQ7o8ZwWq_#v?K465mneXqI5ue3&t5y6x@ zQ}t`>Tr^fPTsIkKa85Q;{`-DPUg)j10_|?)Cyf-mWB{%ABHACvkc(zZaRI=01Kj7b zBv<1ngDV63|1!dY({fD z?(pCy$Z^`FNReZX<=|aG71(3s?yaFU0nYnHaqlU1rgk%is(2#nUA?=I7iKQ7}h2zMr4q!ponGX4nEjzmhTQK$XhG&9WT! z^48R})yv`}O>A%GD*^c}OFK>9=%zm|{!j=h_vWDOG!bTh5ct^p&V=Pp5v_ra8Q#NH zplKL_^QR)mTddZB?;-5k>!$Q+D(9Z?$$QU3NKvo2eD}qFcTTm-?rM#0K`;z2BI4ZvB|WZMSi&4%!`HrR?hOz1Ie~yPhbNmT^9x7zwT-r zn@y1+*5+8QJY*s$OkyNREHV1dE&KRKd&|}LRx&xW8IC=~mEQo@S@!v7j!(A6ikw4v8UTq|&!jpcWI_O>+IKBiJwBALL{wrz~*wysw4I%abSu3DO2Y(vENbcWuZLMj+Fn>%w_!M9e)s2&GHR4j~Y z@7VwwxKk|eOuni$LnYFG)%Rzu#?Dv}X^j~;l~o5CE)8*VLM7lkgyW+4Uep2dV=!aP zHCe%w2U7*l-ZQaSm{C4k3L*8NXeu76){%7;fqB^jlRroDyp%vvcX6OuKxJpnRNP)H9|{ODP|6F_3Rk!!Unq$CvmWBqd&oY`sx|BeN#a7q&f1-{h&JliyC zZ_l{h=sEJB4`aVz3y>;)daAs zj?WQh9gQ!V@oxKJzeU1q)_tX}2++rqH>^Gb3us(_t$mOCe&|Z@4eeDP(>F6Ykt=lj z(!qdXQLf3P=TzlE$>OzTOgB?JPr=5>+9hF-drl>KCrKoaO$wlaWMzK9*hOYyk&`eC zi(sHnIutP)SL8k+B;<5_%|;RpQFufd1<)ev9b2DfwI(H`)5lbw=MFSMRMH;nKYe2Z z)K&o&WqK5St6I>(g*#^{EjEqHU1jURE|?gZ1#yb6tK?rqpZ4GcN{?^nEc@p-0{`PO>tm!RBG)4crm%AxJ<^vBk(F#?o` ztsmNTR*9ffLR^I+T&8pLdgaQ(aacBOlM@ z`V4NdGrLaax7gyO&bE3jeKIpZwY`^%jYhS!X7hu*&I2~QX%(tJ=emZeE{e z`FWzP9J6kx9B#l`?UR$aC&}ryhLUUtiWk!2__C%Hl)qL>@%wKzs}rwq+Gvc;k2Oz? z0iHjy^(6J{#?TC!6;<5y?L){{kn^vjL}fZ}ebOw#KtB`-GeLH8sMf1k5&%@M^fGiJ z{!^Ju_dfdB5|yZ`h?Y#l9oSdblkWcdmnSU0VNE&>k_)l-Kj0mn2kEL*W$EsRJpN|8 zvscc9WNPog+39`gx5a0eey{-fNchfdI)nat|9t~1f0%H^m1D6k^V!Mup!CtdWe?kr zS5&?K2@NFd*-XDRVcylLB$<2C*E)q=E(28V(8 zSNt1oE7B@LY_CAj@R@`YD!L0?j~zb}icALR7!L*L{zkt$D$XGhOUOFkWBY(JuZQg7 zEMQsc^i1X^_htQkb+-2e4F_*{iNjcRb38i%&@4~34f9_p%}?k^{V`1 z)>NA|7cWXK-0%LMW{=pgWsmes!Q6}v7;<8Vyo>xoRKm{uUsAq1POr{;&!Kbm150=o zeOg+b*e@w?f6A!d{+vx^QI%RX+DnFvpBICbP;cYfFD*!^%1+Qz$m*3f!#okyeX?xG zWyZQ|tGik%GxlE4k3&rqL&;4Zph7mlyWK1SbP9YF?X$j&B6AA`>nXl$e7P%b z->C)$F;f_+e~V6f3rX&N7cec3IOcuyzZtSsOE8R&PZD_x>7f7@T`O-olcp7tB@^|8ccS^K7_ncneV@?k)i-${k^Q~UW2D}l*&KkPqq*h3# zL^^AwIi{o&G_-(wbdioUA;(aq!t5gLJ)mBNZY<0n5Z$tnXNvb>e?piBh33PP1X zGm>1m0CAitCIpuM!BX5!0v>#`J1NrAd>1P^e;fOYm&E(2m-+LZuR7FYm*YR*8@I0w z6}<$ee6)RHVgs>$Y$Z`6P^HnV9O=cVA3*6yH%>NifB04NI7F0?z2zKsY_lCP^G|On z!P{@_TlIkp2Ioh6E<^awx~9gD;28I2-p-pg_No3aJeg$UcJ@d3#K`rov-PSDDAc#~ zzD*v?)%L1g=H#mjrqtKq;P36|tYOQ7cXKe~je4Wkb>*z8(~b5`neSU_m`TNE$;S@O zw(76Lj?J{=p-acjA3Ml^deq%y%Nl)5yT7eVdazq{jU?$Ee)isxzPuvG^7;MR_(nRyai=_zUCZt&Rv z$YcuZr%hU2ZI|xboC}KQT(N@?gyf#M{s)0#X#>tsfkQT4J;RSt^WN)A_zp6_5D#E1k;$FB}<~(U-lpsgwm=H`Tt}(|ZGiZXoe}B&fe7zBc2FN^1evC2!K9z7R(gCmvQkIiy zT~S%s69~c3nk{&nIp2rp&dIpm#{SX^fkjuB%E>;5J1%=CQpE~DWr{v~q}e zc@Urmc}Gb41Q`XOo(Nb^@Y0#?52CGrRs zclJ9MNpthHppS0{b?Sl4PPjdh$E#W>!=Fxue(h$d}KTaVu``hj(!* zZGR%kY|oWju9q&(uQnut5_6C_50r*!jKy-|(vD}*Od9dxd1p00pQRZ&f>?8sytkFp z<*z*>G8hX$#)h;D&%1atz$g!dL4fvf~)crMB#ehiOXNJRe^%< zHW)Vf-IbImp3{jTWI}e$^F$j`Z431RNeYjy%N(uP(p^zszq==-K1OzyqVnMy4uZF( zU%;9Hquh@udq7;4&0?2ofL;)5L-rYIEL0eM=d7v{hGza=Fdzv_*%`nSBs9C_{4C>B zi?_WiKRk-wT7Q@1l^Wpk?OF;}9Pje_MiL8GfM{+GfHVH$x7~kgMX}?kS~D#FvKhiy zzTN#-RVIo`M~Opj32!4uNq;9mnC>f$&|N<*)eQ0)z+iO z@+(0f>{!2qt4kd$&OVHv{ICB`j)TDRx4Fiy7 zGd9AD2Fbfjo6S{2J?6--D-xT=K>-0dq>bX^*EicxkP;b5QN^BWaoG4f-1l_~Otj;F zFj^Asq@Gd`c3QsFZJ2Na_Buv^c@2=@})Pg^GIX9mt*j>fpc`07To8M*|GK^Bi@ zW(Kb9SxNYgT0ezoa2g$G#s82B6GIP3ZT0O%pH*HnoBeko;@LLU$xZeks#>*qG-_^U z`GR?lrPCoh2pF_*BQXBi7X1aqIcb_lQbExLEh%OPLRE{mF2c6GIe8Gu9j}B=TFl1p zMIRO}WzC3Q*j#eb-7jNQfhi;Q*`qe0#TTuZ@}>j5r~iIz<$L6@M-2ssN)>oxAiQo; zPx^vGF|j_W=8em4io>sQjcnDpV^7kE-5tHA`crvM<6t@7=OGXHn;_;m5@tf47S^b( z2^6w{U_43PvYP5R{W9S#G#XV}i#}fPW!^jvs-WvM6yVtOdNA%ZH|W{1J2R{*l~{Jw za^-!p<=)}5c&dn>)E>UhD9NcReE`7PKg!npWsqBHi1|9?DSfv`pQslS>e)vDnDlH3 zcqqDl72qtzHM+Rlyoiw$JXt_X?R~kED6thd>A}JkQHF8$V}ECV_ZpYkDx}JR+RPMk z1%8NiHJb78q}Q5h&0ho0pgq&(^DO7^8fwk;lcF zE=NJq^g?6k<(|fmU$r~>XAb{hRxw7)wm}@3ikYVS5<2!bG?(qRT5yF^&pE~Hd5feA z^B9k{ga$r=V|qoU8RT1aS3WoY*b=shHqjw@B}} zAy+_hcRtNrt?l%ixx{!9qaDZL7_|PhIME2)kh`M`x0vBM<@n&L(GfR6ecf2F%BO4J znh?i4ivjS~r;oYriBsU=6vzDMZbX~(R@{t`{MP`i3U zLk;>F58dw>t^Q3c_AC3z%NxWOBCP@cIh-O~Pmd+asK;L?#JxBIQy=q);4GpTJpF+1 zo$wJ`9H}Mp)sMmjIZp8xEMdhZ?|i&;os4koLZZ{HXpg#1Dm5OE{zJDk>4Mq9G@PEA zv>mUR^PMa1gfpY}+W7#4FnmSTO?Jcn5LMsaqR>V?Fi83KFgEz?`O{d76c1HE)59|VqB*6~bVeNtR5Vh`a9S1Jk;H9=;U#|NlVPF1#s3r3j z$&h(EIX-ih<`o);<(sx8yv7A)2*=IRz@KHvha?wIW7nng=H^eTERZ_G;oM)IH0LpZ zb}xgTc9TGhZ=h)E{m^wR0ZQ58>HUZXVdMWzcWzgEoBlAYZzVqL2WaEo&9;df1O*x) zVtew(50Luwv7cnyNtx^MJZaO5oKygGu-$ARyCG}tj-``5m9GYhG!Z_Z$avL^Qr(YT zQCo>MfO`v#7~D6XP5D@KMEKL_gTyAeb`TD7y;-0Xmw{FaU;VxQ00DyH@PDtL+FYns zS|lzDI-ZJNRq!KCMrUe9?k#5aB=4xsmnD>y>)6NkR22)Pqfc;?`PMh(Iy*@t3c$o) z*<{fX-ILnH%gP`@O$yyQBkr9*$w zwgzO%5lOKZA$Bv`@*~IZFcbT96vn@FJ8Cm_;>XYa{Xss2pcwrg-sp=pP-LI&MU-PZ zG^lnf**a4q1Kxl;rN9M?bJ}cu5m7@iy5AcgE5$~<4y`{Eb#k0yr^u+#F~|DaS;a5k zJ%;0DUlT>Xx-qGc@_bAgw6^~&MRv7In?07JH{!Uiywn8T$2n`eWc@q2pQPyY({Qa2 zDthBdhTnRWsY~yVUg=mU{o2-A>F1c#%i?FpFJ3VQ@Oif?n58f%0uqM&YH7fJk+-Ih zq%sh9L9QJ131_(pI0enHlD07@I*Cs6)mWr-p@)CoO?s5Ks+0ToCsfg2SUXTvGzAme7sW|zG zJPy$3D#KAxG;at+K~@ZGV8lj^904*RtpR`&j=|jT#IaIORhU@R@2)Nfv*oyt`gWsm zlo-o>4)q(o-;zf?4qJ+yzc3TcbGqGFO{JNffSiLQxfR#jGlwFoH0|DGq6xOS{V*X z_VEAR#coafAqY@@vW$)pp$2|x8iC}!C_+@q%1j$ryyO|R_T4ipQiIw?s7Y^elTlK! z)}o>-Sg(0zsi(zo9uXI02p3Ab@nR2$#9&L{i~;JAx~aLnFnQ-L;y~koEdDqRAR37J zqvLMnRbM{kIj@Cz6bKS2SeL~D`uWJH@AaKU<7*6`FzPl-ZHB~O07zq${hUWFT z)7(0O_{z_=+`o8h2JhISaXCvuJ5@*ut!3nOYi`+a%O6I$HFe6o5gPf^8i z@@6IrFEN0P)1lCNpUx=0lZq|8sj8}_lVOX-#JAOk1ooUYQ2AIPinxiMS+%;Wh!6eH zVf2Ljr)}9Zis%nbcFoB-8&Xhgr}Mn}hUfud$_yaZ`|qIeion=P5}pNUe+s{N1Pl*aD=W0 z;8c3-Gfu%8q)9a>HfUnxeeihl4^F<-IEplBM6Ug z@Y*dT0efy!F&U=TM(lU|)0>eICZPM|09zLSK4kNfFEfvXZ*c1`_Z$^z%GqJ+FTgJX z>k)TVUp97mtp!>9)q>QF)*k6?RYMSN?s*W?sFg&wIZGg!V#Uc zp46Ol3d*7QX9Vh3fRLKp|DB+SMqP=G{$plz8x)v-B0V6v6g0Z#x8J(3p6ovqG?tjT za{#h6n_1Q@anup$BaA;-=+oA@ zMgIuzhJUtG7th4#7c5_-$C6xji_?(2%1zfvuzIlS&eSrA%3|UHFhjP3gRl&$TGM3q zYuWw^O!nngWhba(^FjzRYq}hW7 zxDxC>lLkyAD2O+Aj)xsr4Zj-p>_{JJg)C;V=ywP(&p+`OXMzO2Qxq2Ed@J23Svg*4 zlIu|Q?Y*K<)>sv}n{E`Wcy@ZXZZnC-bQVE`eOd!Y@yI54=bupLWOrwFH#G#)5EPqn zLzI{Zir-QXkzoy(p~Ml|4m$aWQ^C_vo))ST-Z5Gq%Q;jK?*B#ZsB@>n>?r}@L8Zn$ z@rGK5Xry{mWzX%~c3=jdho%RRn*_?6t5>aaFKUculu}P31gs$j<0!g-lR9k1vD?!j z`6{wU1Y4M|-z{(`Evf;GG+dP0JCZpSJoLrl6sHJ&RtaYbU+Am0Kzg4&M8RB*X5{)CKSIvxk_0i&E8USjZUW%u` zTm4W^6=ZF0ooVx67ljxSC(6s(jN`T7z&F|mM^Ja~cl~cnD%=1cF=s%m1pPV2-!BCp z<^(d}Qh>+EHTKCmBsFX5KlQ6Nk^_SvV%WI#!P3{2hQ=d}lT-fcAkf*`&XRCr5Z(wP zQ1!exE1zUsHq`NVi+rwj>-v01LJ#hwxHFYHo3Nx9R zNtP*Cr1kR>-7Uy7Nc(ZCaG=Hvn34kMSIqchJfF(WAqX3H065sjygo1m!2DB4U2-Du z)qS|ZK#eE^5wyz~k)3AtU3Rig2#rXWPLkR>)5g}EBTD-}&}Gb(=CzQQR7I4Jb|qd1 zBX_kg3gn@E=jYD5x6hQum~yZ-qZ2uyWMVsJ7YDv*n6Iy@2pX}5nLM)KQl2{7Cs#uL zycM;6GymLwXZJx`t^MO@9D>%^P(rH4DpIe%{!X3e)?M0QZPlz$=vIZZ+ls4ZaNQC4r^7|dM?9&y=Vg$c;&-&JPo0o zrObZO9-#pt0(a||)wX51+M($tMN{j3Na`3&5dtV_U_p@%aH2JMNv<~fkt}H=2mV8J z0V*|5xhuFrxT&8v!mVnqhr2|@QSc|Nv4X4*4~_vCF|(}ocrU;IVANeul*~M_-}Cit zDkOi(@=E**Truw!fVwv`!oSHxX&HT7Pbf#5#YKixf-AgP3~a-+AFqi{fZTKN!3 zf88JrlmC%lgIA$KWIf6o#GcTZsO7lx!d!)*=y&RGuIyz`K>z|yqkkO;PO*D!4?0{%zenN9eCMD`?3eR~giDV)A zodobH>f|L7ERcCH+%k8vQUWG}N@pkL%YQ!)*>hKZGn2PovsqD%mmIX8(dXSC{Q;Ch z_>NMH>pL|F7NGMYI6|9%XVBuT{!bPdLC-o!^VjinJ22FWjI@SE4nRFIYebh+icdVH zo|@CsO8D1O8cS2-IGI_LijS+)9{6P$8XjZ|eoViSEKG7@*FuD}pT-eU+dNnwa%ysx z$Z(K&oK4H~thO?7mfL)C{nO)LV;c^Kf4Pe66rT@e^y0Sc-5dNIRJh?6>@X!T-Vjo0 z^)qoMCzD{;bpNtTb0*cg@zxKOj^~FP8Gn92Szca$?g&{t;;u5asrJz6J_5ss@&=Bm z1pezZ9^1b3pt|4*=hFRU1B)VYaGh%GOc{ASSIMAHuK6GGeWIeszeF;C?ik^;Rd>*X zeCj7E;z=7t91JjGML^UKjTIA>FP#`76mIN8xZ<_gKx0oY2%+wanc;|b{8YZWyY;UW z5t>d)42&uF8J50Qwz_*LOgzwkY1Er@J)bR%b1$g(=#G6d9RBLg%Jm!h>eba{5T{6< z@YO=pnTc+x=!ZM@GllRlx=ocMr#tTcugGz4u)rgX$}X=ejB`f;1|8M_A~I%fOony- z-Scd3VHJd!_c+ob(@4>C4zb9h0T9b3OSYc(FKuz$eQ4T@84M9L;f zHPxE~S^ov?U;Ybda{QFHQ_T)7OEc*2Vu4|p+M_OB63zt2t%;dy zGQtnCNVBxe0B6IRIMlc>c24j^eu}q=`nKGa4YFek7vaAO9*@3Nc_tU`U0YB|R?~Z+ zcOGa-POeASYTHc_M82w!Y_uIi{m2Z(o6SHX-Bx_$&GCoptjy#dhb3*4 zC3?g*@=xn3PC|W@u0Sv{TVoES&xMRzNht&9Ii6~~E{;2O_$?>Hv{j5hzzfpHw|Ym+ z=3CRsUq`l1@zUpY1M(JJYyCk)4vlTL-uVeXNGul4;@#hFw^9%ROtjA;H+j>(wKU3E zmV>iMo9Y#7dD@81eCZl3a&>O3z03+zQzGN_fM%KTg>7Ww14f?CF-e|+X~JUVa%g5` z9M>XkM&wnSXrCM;%f%8XAt)A?Pm`UR+j}dL4<&z;k^YDWx`3bd47Njn_i?4{1(27O zfGwtsMxL9B)M;$3jt-Ap{waaLbER-?=TR?klV;K&Fhfpt#DX=q8=2yv+kLGCM94(W zLpW22`#wfZP_ZWD9y%3FFsh5_iXb&(cm{rb2dPnQ(v!Xep+jb`Y*Lfn0(f$VE6Pvp z+5Sh6a?)t_fbU*YqM$V0m0W3ABz!L)n}4(+3+I;*77iZ!e^J3q6r##Bg@mtdsqyN$ z)qpT{qK$Pc06E@SG#IlkEjAeK#`3>F;D#&;kwsH{L+oa7OdWhtfaN~uY7Z=+@TWLk z#QIP!*tWQ?T08iTe!J*Zjq<{A8sbDRXDihXkJ=h-nwdDqbtXvKr6{hGPj5vL+col` z68tjY8-u#(k?eWwYk)N+xAR;F0pp3EZ^a1{N@~!t_Iw#wR$qgC|8_Q=TCDu+2f!7l zl^7t_lAt&#Pv1%U>bY1sp6Xa>j|t|_)Aj}8u{h*71u=9gOn+J2K$q)l!Ah^ZqvW40 zIh?hBGH%@htph+43Or(l2h^_DEzS;PoexaB($~59$M9__`^cM&{iiPMi?S=O>LLd( zc{>S`gXIMa0X3-!c!?JO?8a-3evsdvCHVXIYBw9_6$h!8pppbRH+0wtKPj}A-z>!V z=be;1?4;NOWt--<`_FA1ai;HH{gYDSG_v2!t<1^8qttxleQ*3)c3k`Q{qu_w^bC+* zUTBj|wRqlpq4Z|Yk{RM@I#KOi6&d2%&*5_yBBIQ%jBQ2_cw^5)iSZbx$X6T;US4zf zJOl&tGW{#xXizTv7kpRpB#_Gfa;|d5#b8yfX)pOWV&C{>9;gM16NA)wiPYX(@E??9=>Qi`ztvSmHnq&O`23b! zO>U$4ckFqDo;H;Xd>uZU6m#9PzMt^5?W?3s)^GELk+Y=?quH4y=27oRr8kNfH;P-g z1}}3e{(i=X{#$r^xz5s|l&G}z;<5MRKl~jX5IemRxApy*$}fW_+d91hTazvjSWc~* zJs;6)46REm?L)puNt6E+4RLW966-iLC9E*0)UyI`hJp{&V(mbJ^W$R=hI)+TphO8i zPjzZ@vQr{Kn%p(90EX%{WjQL6QVi*wDY0zg8dh$L@cI`l9?1Rypo7=ZlZ>BGSXy~u z91`;GGq5BE0u^U`Aq3XuoflWdj|gJUfle{ciCgvpsD&fUT1Qwtn`c$$-kUj(ed!c3 z;ByaoDXLgX^=69)Kao(b`#j9j@K|Y=%F;J?&B{Cd@lzy%XQlnSgJ$066T` z9unQPJxev|Brlbiz(Ko9A@C@7e4uKOhSe93_~SF0e`LP)9i-I1Sem>R2;6y|0d!V{ zSL*^R6@Gsw>8i zGd!aUYRY7_MnHSp8D?7V$SKIb9P|nYfDrlp-s^UXWtmz zbJ&c2W=r-{#{Iz?;FLom&H-jzucE#nNegn33G@6V3Nu?pyYf6=6a26Wl&GW-8^YA| z$xPh9_@6P^yV=jSESx_b<010&n{!+{9%7Z6;_aFYg=#w!7oqRNEhN zP2b;Pq1|+gXQDwye^D!V1xgA6B<&08eB)l>ZnOXof5*a0d0j-)&ULUBrS_yy#0PS1 zg}y9dHnbewv!usB?u2519JY1O9lmz7xOMB#7Cs4hpZQk7z~zkGTy4Ma&e?w<7?tF1 zBOY5cD!F{sy_I0=c(3wWWKMK?^uWl>U1>MSe5-BGV)d^XD@WdpRxx(>Omf7+`|dv5 zN%YVAYxc2f{|vjES0`|rU5CFcljy{L?V?#*l#|gQ8Q|mJKuF4=uP5ON=3t%cZ{A%y zDR)VSa6~NsL|FC%2899u-(wc>>vG(uZ>xjx=p;LL1u1>7!w=AfK{E$5@nZPxZx<-Q z8uhloJ3lj&iA+dWekdrp%D(N%SDF+d*@2%}C+RKM{su^rSMa;GJxQ*CqkTm`D$c|` zHwVKmFyB`^Iliw5*mf>k%D*%a;&M;Oq+J}YNv^-~Kq&iD%H1--ns4|z(^f{1nwqmt z@GtVs1&TYN*Moy;=bm`j;{$yB4=US62Ic1)9RwYlpO@ogY+lqH-lV7%CxOx?No1Jy z*Onatsl5kZ%?vS$Varb{_{uPy(ABcEz5_`DwC)%e3A?uOm13nP8^Az-p)*w{X3_^g zpU`p_y>h_;D6Nv3G(n}LlIH0wq$8rgBX$B*m=t0{gq+Sj-m!L9^XEIvWOcAAy!UB~ z(-YLCn@R1URfx#w;srk7dWDQTHLD_gc!er{ko|G2V=4E5JV!H-YQhKgh=0sR4%apc zGqsTy<$bX$x8Is3Y0@i*ELRNW^Cw;37s`Ifs&x-XZn3I$Y)zC_@@!uOU8Z?5y1#zx zc%8<(c8JyYP(e0or1CD3P+PgKibB?L@M>!DT@6wk+)wz&_8Od6a$<-7 zx?^&DYix74(ZFKPOp@S${X#tad=a`7`HLi<|HxX@g#NymP{>=^YJ!9EdWjxEgObE7_!mOm?2 zT+FNEa~O}0fdtMZq}1Kymz~{>-f|bXLDwmk4wbXdksQYL$ITM()tXY9H16vQ;CST% z-t*+ArXXk(Msj?FHalrNP^6lNT9HxQZv&jbDDWABpM(i3QeOz5y9t)OiartQS1TV6 zq4u&}B@>Qz-`7(UuL>@h$&pdoqAZ^W!2go%do=JYrOv&4tD|JjiNH7r!wE1J*~cw( zoCu?#2H6UW%1XJaYKDCGG8#{tK@GZ$`X6q(b6QC1>v^J5OuBKX&hu|))PiA%?Ey&Y ztRSM)Ey8|W`&87Vx!~?R(bj1>LyNfaQtv3C5y02?Y+Y2HNWaj`MKr;6sBO$-*s>N6 zIj-Q$FSg^q-7jj}gjE`njka-kDdtGlK$B6=+;TUuRV0F|Ijog#e5`KKSnc$LO0dM^ znfuMB@1{8V_rw+a4Sn}}Jak@y7UiOv*C7mcEHFck&+ZMfL>kWu?QUPv*2QXvnV|WEx z1+-qA_0ZF>1sj_1yT?Cyq>IMhN}o7I7mz+sd$W??yGg2G+yUX6diy2E;wI1NZs2R( z?xB*fQHMD$C+w1zZb~r!qu48=$i$pnHzPFoZSa14LfO5Zcj)rvx3Q9z8T z^vQ{Rf7o3wRh2TcZX){aV?R8M|EahXOHvW_t6A0gcKLnFcHPzM*H3Hyv|_(Ac$!pw zlQ^DCf7Fz}kY;`HQjc1-CZ#4*1ONcWdU8jyKtEvsV%prnQNqtXh8Q1My(i`r{GG~) zD(rBRk6}?I)?|)_QwRadq5)EF0@2~u&66v zz~oDT$^f$*v4?^QfO@gUpJP4mv&X#>IhnR#DJQcpLX^qGgj@a`+IG(b`$mTVIUEx@`J%09x9 zZ2^h7*bxAD06^%vC?w&||J#zGO&FYrh&$oWO%KDb5rflG(dVo_HXuZUWKxUfe1RAE zcd5L&tvqA#WWr1QcZ{9SVS}Z+_%bu=K4AbV7tM)laRBrImP*p{g^)Ze(HP;15r4lS zj4DhEyZYktLA|KId=UQr&Laz8S#bgR+D7rAqw@htk=2x{DeRk<#3Ll%lY0_Q1W=z; z>gbMx6&GhOkgfPVI53&TMh$QA*J;P0BPFv;v@^sb;I}L4szwenCK3zA<#U<1l%iPN zU)~Cm8p0qRje+aBbgIx<{QUUI=@CmRk02qC?q(Qt*?;9@xbxIU@Ly`!d@$I?Z$*nD zWeAAaK=PpI(KCSiGx5oPjDIF86qqY6(%Om#vExhB$JNm6q9-imx-tqav!b| znDK#KTlbwSOp7fe^aHFm!*KIw@*B*n_1TZ}I4tJ{O$~X#oz@tyL%ZpsOVvPI1H(Qc zVc`ksRyxFQ@~VF;M`Tn3Kl$`(bgNWBR2lZm^6Kcjw-`|Jz+J>qXT5u?8w?p74P#Ek zFZ9cHVr3rlJiB^uU4TtHP0X17rONKz>ilH6F7(KMV^lc!-_D6}XI|v^f^4-^?k~o6 zRX&V;%Hyxr5eS-S&lF`X&OsR%^wyfOH>g7q$Qd^o{YqG%9}y~wOJXb1P~gM4lS)Qt28=;K)7XX2(#3GK*;lNfaF%E_(q68 zVaR7|20W;LS6Rwgh5%m5p<^m+oDHn+BxBO_Rhf|!5dpUsqMOedRD-f}s7(D{f>wQj z=SU2la2gSvZR21SZz%h-8`#~$mAxSR)Jv_DU-dz1 zF*!lrPVOJZ6GCmtz-GJMmpi@|vLo-g@Z(6?8meAC)HJ5(;Lw{?%kDdH{lf1_wYf12 zrM)TGZ&5i*%mDI|DFMy6w~E6Sro0%=Rg+LAR%$mV7CjpalX*=kD!9%0mGG)TZ*bg; z7Mfc8OzI252b-%+k$2&&S*>XOQV(M1?#sdC9jG0CI;18tL{6GjQPg^fgU=VYi+!}ETI5ro^PqSiPhR}*-WE(kfb~fQ z9`Q!8_J^{IS{riKg8jP`VD)VZ7Bv z)D0aJ1jV>}oi(k-Izo4e5zC?5W<5)T@0O-ZdmgDo+^N$``al^ewv+E+Fpi=QgER6+ zz$-|(@e=aFc#Szus5)uQPzWR4)du0j$+w@dS8R9=Ok$3&wZjqL)I&HCay-v(l)-Sm z{1+euv62ul)PxvtjW8a*--DzyJSCR1JN!O*go77gyykZWXK;;BFzQ_rF`^;lxPga$ zcL=|?zV3H3mn=6GA{deTvyDxkHb&*8Qkf49| z9knY5hppwRL2s5Q1SJPrKX@L7-&nn#uKd&iM*dle|B%o@EVh%l8(P%Pgj@gYWxmM+ z$DV}FDA9F$R<)!S*b*rd!L~-#4WsB`O!{{Gyqo!EG#h0YlP*UwBEe-o&&QvYjZSiy zUqH(%3+`X00gC~g*V8EVxy zJa<{5V7}+*{q0}MBB}x8G~R6-XnZKA;>j0#KH6hD+#SX9W@1_gJrY9Pd$W}oEY84C zlKioRL**Sw%FkbCIU;2pqTjyMC@09KP!EvA7^%?ydt@Dnj=V8JSk=r?VP5^9^Olk| zf^)MESsB_y2B<+>#CtfYfjTyTI5lXc{FACZt&}Lw?P`WNTqRg_7vXJv6btk>$w-{~ zuN`fG$RM{LEo4|MV{JkJ20a}>ku}aRcgLLEYQn&xddX+X=QXG)OhQUVE#t{GgL!ECG6p=qq*jOoUADZ8_%hjK=xqTW~hSuuN&%j(DqoB_y-l~BS-5~HM zHSYG>VN^0c+G?i>V~>rl@Org&-Y)y1M|t&Oyk4o1eW!pouLt=FT|Q<1k50-rwyPeQ zFmBL$h#LmR6Z9?0upnnz%iVfEpe%O87~#GIewG`RN~7WkMt+?if<{!G63~VC038m>37D{)2xK%6*4`=;v|5 zF2w<ApLLhN3~`JAWG+03uvWtFsK+Fy-?MjNr|GRI5t16pxb_y#?_Kwt)}9a_Z%_@$bX9ZSG-x z5&8-$%RU8`9FLV4&5A$j*M7qroNOalr`H9GsJO-;6=Ed~ng-gigWhj*7JdU?Kg3yB*w25cM&3EJ;J zt8q>i9SfG4Wr+c}B_CtQ{j}|84fg4_S1cqpFP{@?XEF3 zId>rxTqOqwYQ1#c>S4MSmnyIMi-Gmkgixk@^k`V@ka+HAAj=H=*QpT;#CHp#9$+(M(XvP$qA&XUh&6e-O%5qZdZ`=_O^0Hs&<^o*`VKiC)bG02Z z?CqtAD`B+rISuU9gm~ig#`A z0wCPRHzc$FO!1Rh0SGgfGeVf-Y;q?x_z|-oF_Yk$-T$HKJb;>Lzb>AH5Tr>}kS>H0 zlnxSlC_(~A37{xdP-#ln~lp-I|)$Xne8 zSBs0JjK!#X`Qz^0_2U;501JZ+)is}HjTnYO3OZ}D0m&7}_!+rLY? z5KDnTjFW+lLF}RNQT;yG*<;rY5uH0O-~OpC~f{-PRiEqmuDa8&D6;VLF54aQ2Eug~ zS(geon}*^~TXUwju81R`(eSR=AucBhd`_zFwS30@_pq0&Xd5j!2qRI=GN5inTG^WK z*t*Z&bI!vFluulXU%}Q9MD+p8%(98lgq?Vwr>-Or!Y$AoSa$_ZE+^1@fAU#P&%Y#0 zg@BdYoppFt^^MiaueY|}^neArtzuoY+ayXkvLdzt*jb_?b6R$FT>Xab^z5n4R-;fG zVJK>RT?&+@9CWksx-br|NKr8Q;{6*Cyl8yhS+z;D`kfb$jd15cm! z{MHFdKg;X8Qw$aeI`s6sv5fYevWqu#akyL_ybgZ;@LwO3NHQ(a@8<*R31xSd!J1&! zi{}^IH<_YkT()Ov(UjiqM~}2s@0|ZhSaAGDlcaLap8JuT%ymDyrqwcj-QY09bbm|6 zm!b6!om%VlGjfo82>aRU&~g4s_JM3S-dULklac-tODo6crj2yJe>P}8cva^eW6A+T ze>e_4eX%aIQ~sjloJj~&bVfGh2;xTyrIKMutB?~;VK;IvWy2fgZ@9|(HHyX;iSOp(S^cbR}; zxz$BYbgdck4&`o9KEMLxfp5UD$Y=T8#ZcZNS6g_%fLzqktlq6qw2<9UWIGr5Uw(_L za>qqv0ha=^1nY_sB-KD4r)h6>U)_izRYS$T_uQ7JRKuYO-~WQDfB)LP)};ve{Z!&;UWy>g??sDru3MyIV?(Lp*?TIoUe_O}U$8_;9gnD`wrh^Gf=2lB#g5xMG z^eSd@#~KP^!Vetp4_&ZgzZ6};fnzi(J+AFsIWr;CHVMPfFa}x3n}}n=wWy3o7O`q_ zx9%F3HGI-m%6ut7hEx_u5U?GHRrhi$U~`_GG`Upr0IbpMfYZPP=6!-l^V-$qjz;cc zp6^h46;nQMdbxQu50x;}yTPRA7U1$r?e(TdNRR{Qo)EV+Jt9a(1XvPuhu`JAb`5W2 z+D5)(Cqi@gXgzaT2GiT&EersRDK+WQ$vH4Y8;rw1O4`Gd8B?M{U%BW{BGvbJmXbKH zO~0EDT%(}cRE4UPfUc)B$DQtm(?}gc#BWftk^f3uYyWkPnohe1R`p2HnT&oJKnB@A?mQ+PTGe_}aMZM*F^Qxf(-w-davg zu5H7HY;WPB$Hv+QvcT4{S?wH3%ICl^KpKGzd6B)n71Cd~qCH~@-qS5g9?TDgE4wyr z_E>S+^*pXJnvC@?hzV*bj&$2`JkU>el+g43B%#U;OZC*2Cf|iZ6rlNw z0qN)ap|@&ht>lK{*4IsFU;FmRo%+V-GlPxTjBR)@p=d?19YxkpHaW~1?lLhlnul?1 z25w4z*~i6p%CK_iHa?_>e3s>eC{b(nUH=DsBkTe_j}};AikG zFtCZ-+J_Fs816Tk%q6%}{MYxj*6MntUl$_SvURds@3>ZCGT`T{jy z1283buUEdDBQi5QV#d|-3uFtv1mB*Knr=JznTXtNWy&Z#K zR?LyO{V?F-ppni1r=PiA*yr0*5&2ND?Ywi!_Cdz2P@dr?=@>$rfVa&EVp(2OvUxOQ zCJ2J@AylRAoCU_A7+YQ2Ce9!A!ckq;spEIZITAC%v?1ml>y{IpJ69m*2!S!{5zZSS zqY~K-QD=c93(S;UY{lg%IW3a^uIO8C1y3dQ)?TtuIB*Ro2iti)q(a3Ze!Lu}Acrsc z-D!wQ0{Nqiub)?ygG9loCCuP z9lo*q0(-@3FDb*Y*oLpqk`MQDi$l8Wy{6ICj{1@&=w7eSvLT$^bs=W=Bv8)1#T8Ns z!xwGYX6%%mtsdOn*jHVI>v#%?yT3f!RY%v!P_-Z@i4 z)38p?D$)MG@mW&w+{oG?>{j&@{Mqp@YMO+&QnB!aLGfk0h+#?IrY(yaq=v;wW_4 zN*-dRxZCvjqX~UD!mv%ipXi#kg^BNFH#Gdnc}mv?os`QIV*F_Y?vbPAlf3&GVgcD4 zl;-=zThE4qAC@N6ZN_0eVl_IKT`9n-%b0`#wN%?Of(lQEd3~kdi*MQb4+t{j7~i8$ zkMxT}2@bnY*#cj|tb(W8GdE62Pl5-R!j=R*tW`)v#zljV6s(UFcA^tQEIcI(MjdG< zT*1Zow!)|_Mn%UHG5g|8v9rJnx@UnP(8fNwO4ey?@7@)}#Is8_^x?Qx@<1@H|M{@k zvrFYGM>Fx+emjdD67!xu?JPqx_XZ#o4WVY4rpb#PZim};+5CQ{LA9C+d7b1#Z%ug* zHFX~<2=0QE7Fb$h{w7ar{%jsHb`;NuxEj6m0m7+$^iCA++Q~o1z8OVj2e-Gnium-2 zd&x5*3svahCnU#Z_yIV|suC^4)Ifnb^5)wn*+4lzn4A6?c8O-$DKb9t=k@vT{pO$a z)Z`AYE9~04lFK5KuEDcBISzj%-hMl!w~jn2v>h$nhA4J;H!`><*c3rr+r1&~Nj3@( zwYhIb79Bi(UMyRCmG2!p?+#x%^m@*582aXDFT3S7Yq5USujKw6Lzxsp_G@h%;&%nq zpd(ng8_01(@K7HHp%_2js;y#T;HHChv!aC!6T&&;eHH46!3TTBq|7c1xv*-3vXkWW zi-)XYp-#{=^KX{!U#FrtQ-w?x>(-(Ac8f!B6f+HlXPo^g1nn1cjCpDk2mz7W=d7B6HYwz zOtk~0(Bnr&#X@(OcN(Jf-g4|TywfW%7wVxTyQB}QaQ(hopw!>6(4s5p2_rHP0nvBw zb{n6Jp0|b#=T#lS;>Q`!ZBfT%E&}>GfEUX%i>2z$)wWYF^Gb?W< zWKY1+kT_i)44KvoP|~NX=6{UFEXgpnfj?hyiwEK|(m;%4+A#ZwR-p&Ot)~Jt!6{4H z(S_{F8Tl{Ei^pTnm(H%K!WC0^aq;bifTFt8rcO6-CTmznNLO>>!yf$Bd#nUOYaQr`tCy& zQ-xD#PZ3J6X1-kp;|P%k)iCeJp8YJ=wUukK|k}C5Xn4Q>2J2h zt?k_3IgySdnti@19lY5qMMsM*B~^Jal4-H&ju1t|be^{J{fQnE*-7X+KMa-SqF)1p zF}60@j*4R+Djb zI&H@RrGetsjzX*3gxmk=u){m@!~)y>CTCWSQy+yE8BOgF zZkYS>j=?^tzu9^KW&F<~{=im2f!74;5C(d4KIeSi4u^R`V>DK?=#rCrZ{d3eaSXRE zl#lnD95{D*pw^3#hhL4&i;0>179pLOD~DtzV^T9)S;vJ3 z@1{fY|N1r`VsrP{NE?2WSuBYYKF!YNz59oaB38)71!^uHL{MM*&R6k2>JRI=GopxM zHri8~txi*Z_b&(jf-n}Rl0d-0m#RtU8;BW>f6JZT+js&;Y8bY5I9>qCyJ7qSlsZsI zLa`wxZ2lfQvXqW76}TCH1f?~)m*~Gng`7Gq?c3`oVR8tdbot60Y~wIVT6;tD_@{0W zvx}!nBB-cJXhH(4%bNLcA)z6-!b1+T9gwYqapN9n$Wlx^Df77LN9EtWp_dE4=UJqO zN*_NB%ZR=XkMZOm+0O0?Onc=V-v)=^^>_rt`@%+o*q5>+&J{UhBEuOsEog306lv!( z{`p2J$UmE@5O%}{qywr_N)-FsDrG8dG$n7Zvzqtkx=u6XCFXvbw)JI@a*~Ut&x?I@ z|G$VwVdQg_dvX4uWgM@niP)185741LTUkyft0^{rgwp$dKkrkHqhijN#=^+=**_V_ zEfhpbncaB1&8{P6I{<2>FvF|Nnh~rJAg&AxjIhaN`v-2TlD$oAF8$jmX!IzAu4m(g z6{C?hax?Br3@`R*1ngydn;q7Pe1sD`G%=(lVfd}Fz7or}!c$m$<6Fkm zs*u%2o5Th;neJ!a;Ub}A5%nn*h_;HN6tqdu~=OJ%Za5`Ss@kR}m zcgB)Nb9%ki5!cKt7`KzhuWyQ~BBB_8RnsdZ^2}AQtoP^3IY-;-jO29JgT*B;^?h>F7v#>3UuCH>={K zk+aERxq9)Z>xED2xP8_x*(tdqkHLy@Vh!i$;w@2bEB^ySb8%%RtF!JxtA;;S#2;EL zhl^@nfz5}vMXTq(wmQBD&F%AnFLXxYw`mBXd>7+g2HHqVU7F%wQLG9DL$ueyR7fR+ zztlZKw(t<`jaPATscbG&tuhQ_hafi6h%(P;IU|Lyay_+r1 zEQIJy)nrk6ye*7>^d7~Kw}oY?GJ`+xT;KF{eh$QB#`rBex_EwiTD`6rUEi)MD?h|N zw@5F0XXJ0<2am^ow&4f#NBXjgSBvuN!6RJQMTTD1;z>(QnS9R*U}@JUpUvunWUF1i zb40~vr-_$Sz~C7kiX9g>kT#&$(3{?(%iF*<(_H@`-p@VcK>^DLCQ~a|$`zbKeAb`} zEb7c{rjBXm#%;EQn}=*Ya?Gg%T90f2N4dACoglxr+VVwxNONn#tXQZoRQVJi3J5Ps z_^rLgT4^~E+C}d}zl3DYEMde1i{3qH%h?Nob%9(8xlFHn<9WjCXEe`J_ov7YWV2N_ z8zIi4nrBoj4CzwScMoLQHpI+3f~B+Y4;E9kw_kpSsb?Bml^7W-sL;1WTzqwi#laz5 zrI$-kXX(NVg91U3>|$5GTBex|*ljS{GaTO{`_(_UMX-ETEDGxS5@Z^2;&`F<3)&yR z$YNBTGf!XSuO=s8vK{dEzsk<2pu~zXVADgzlX!G{bC`D7L#UX&M_SLH>}3mGv^%Rx zzYH#deI0s#FVPd0iX;ass4d;Ib|dDvbnPel1$$(LzA58Od#zQ7_Xj5<3Y84FV@BVB z3fELOT%QQF6$pVf*c5GC`-}_o=w@Jiqe+~(;>l>n^Yzm}0G>hT`o&VPDyn?^V{fY1 zR++(ve@nyWMp`CI5#}s<{wgk!3vEIRgz=7$NkObxpX}lIe~<~;p}LCM#2;H1UwLhy z@Td67mD8MfILh;KhM(1_efaCR^{A=J+P5}51%ZtT^ztK^?Zy|FX`yXrI|ZFD#h5?k z*jC~3%=i6k#BMSjNV`4hA$bfTiGob)z}jex`@Qxas{Xfs{qYrEw=a1}9!e17I2~$a zl0Ip@lPvY$Id{)-1c*(%#l5ZfO216jN^pQK2+qZMw*hwhH^p{SC&_`{;d{@SpDNc4 z3J}KGpz(2e)k?Ql&@JZT3X*@u#T4TeOq)0;~@#zPE9Zp>32neh-R- zVQelPN#7ESXWf1h53+aG_SQ_f?WQY4RI8Uy;b8vxKjhmh^#^A%Gxj?Qe`;S-9L5hK z$V}(G3I`G0g_OUbZF#?gN<`Xka*Indq%{7>02%S55YFC6#z?yr`myfwEP5aXE?ekU z;W4_4KwnhASo==kC0)U69cKvL6*Mo%L0s4ibm&=j=ieL~ssZLM3`W*FBiyLY-r10E zUMaqrFj3rtl+Nn128uN2SZA0O~V#*DKg^fxNncF32jk zE#-O-N~Nc+xv^-7QwsJ=trAoyT$YzpJGN5xjFyDL$=_=mKL5tT>KRa_(ls%}oss!~ zjKf`STntpQhi^f*5m&ZcTSR3uzMY=sg{<%HKrcAETH|$jVneJLVl-O6e7zA{L%pRZ z5sD(rO$ker^C03D9KeX#D}e=nZ&L6up0OVwd2_UMlN#0ymFZg;1&Vh7I_BUMI@<73 zKCg++q*V-&VJ3LCw2<@fOI919ihR~i+=QgJy71#s&Xc&{)}x0H)Sk|`sm#tdnj?ve zK2=_&D6xMBrYzJ41<5U9#lb#IS)LG*WhIE?;gF|~Do)!sbk~^1jXsNc`?Fqt_MfdQ zD1-=@KXo&)R*Tk}QjF2t`ir+QRi0N8-yc1`F|(^|%0v!zT`_ve5>IA{;=n={vSglj zEEip*rV?$^eUTFU%ltG~Q#BQ3S|21-(oMTQeZzJVi#zb@K$XP(b z(flMdmQ{$#m@G@!A(_OH)MB@N4^_1z7eMutc{Lynl=hh-drl}s#lLMjv0mxCoJnhz zD`+B)PZ=N7>qjP0lp8Nd@W3jd>wUuuq8Yksh7qD0_aZ*iXbB(T zS69<2*+O~Phj1`@zvUd?3P3oidKmV%6Zb6i^rA}2yeq~ zv-K&+_BNXt^<8E&+Mt`q|4x8`a~@8;4mWrl!o%y#D zs_y|_&!0Y*I|~v$)-AuWS0$1<``wLftBj)UZ4#UJMaNTs2y;ZwE<^DDQp|Ufp-ip_Rhb) zg{^vDTU;w)svcr-Uic^>y^S!vNTimsf9+M5;#H~DZ7DFWmHk?>(jm2L@x1-KOY+QLE=Bc1}Jv#Hd;F) zQmR2)cW51T!`Xi3_Z+NSp9KJq#jSI$HtzWirr%51*7wY~<>aYZVETbv7dC4<#`nwh z7l%KnfZVR`+8+1%jwSfBHg z71Zci36=fhNm1Wr1n=yu)yT{e!(2PII$2jEo6y zG)&pXAW_`NB&*BtlRXz=?#Wz&#_`s^S)jud-@+`=(TGa=!kq~=U-YkK5w_fPWi3mU z!S^DUFHWPJ^E~+P%DSJzB<5WIXnbD?@02)Q6Ajgxn-py;e6mMtMTcX4yYrK|MMBJs z3)gGXmh_(Mb_oUeEGn2`C>BrdC9u0lcHT|gdQLY^TI0;XzV$=;)1HHq=$omY{^u<- z_4@)#?EwMp1Lxj2+1kS8doN4|4pn{|AZDJgrgZIBuCfnt|7{v2W6I6+4*X2J8^isp zUefFJhWSd!A|F`bPi83pT>Fn}NGJK{sL(L^;iD>k^=3`Q^$yjkO~G zB7;q9crq;hHHBfhQN$F?dgV0`VV7gCzj*zS4<$I=3ShNWqw?ae%ux8XWUZk_=!^Bk z)YYaC|NQU0Qt0Nb?yYw-rTd|S$pvMkk_*z-dvL`wNK1)I1Gk6b-zJ;gkJ;)Y^vXLb za!Kf5`aWvSdoVbyEhj4nB}AH48Ua>wRrW)@dUif<1HO6HrRuN9p9hbNihx#kwSKmd?y^3NiRRpZAzhyGHjImnjh+% z0aQIVZO0@dzLb}XX`6Miw1llBwfFt>VUbq{GGzQ|v)mmU%qPvV+44aZlLeOd#3$u| zOTv-Ulz+0bcS6zfqQ1i~KeTYftMKq0v8|uDTUr^6)aSP^Hm)d!d@~LSwA}MM8Uh5X z{~T4w;9BVG>ay)nT>1-w{Tl-w##T+G2zzjk%G?ijOYejfTMGYAb zqs^HD4+;)(`%KmKcAL``7B;d_cahyR|4WPG%6D;`RP2#0X9-ERXcbgi3M7;0Vz3V1|gN-sWXP&osbYUx6|}D6lErk#kn_LtZnHBDLH<_ zf6GO7pi)37qh1o>@?0X+puIzBCx$CF`LU|J_vfAMcY}ZS)F-%Q;qZH3$hWL<4;

      #vDauZ{_jCwN3SL=ARbKUB`ht^!;1X77YD$H0?{y?{ETTXPNcP0rZ828@Z3J6ZQit3ww z{32OL98+R+Q-(dW^C2*ou2;y#Ni~E3at6MUMhG#N5xZJf3qi+$(H$q=$jZrY+XnAn z{44qbN^_s-HG2z`UpBMXGEn^474yu_Z-!MuF>m-X+6m)(i4FEJYwW-76aUc#&#lOl z{k#r|jq$S+wqH@RjkAt;C)CFH{+`LC9u7-gThUr0aAD3inE2>^Vg(HV%=?MfK^hxZ zr)J&lb$&|ip;g)lX8OIa!EmLZfT?wz<0Uy0o4sQet#3F?ai-BywY13J|B1NDT#H`BC; zxsqVgO`yKX^KXOKG{5A)2Xk)?TPz@nd0^efA#vL^JJaI$M5$+D6hmGPJ>REH^=So2 zecu~ACj3D~;ZiEE>L6P*IhPhHS<@y4Z#Y_if(MPAm2X6K-wb~T_PvsMcfr7h-<>vN!V;}_pxCrkUBPH^m0ydiG07z5^2 zp7#uob2fMTzB;Q%hOWOkwzQGFB^A>(@Q4OfDU}KHqiI8vDbZYfdX3Z9g{aMPlW9yy zjeuj@`CzFhitAb5{LE?Kulh-_FpQ#d5lN2nz64Lv3<3mbolAji(3d0RGGMq=`4#vo zpyaq_v!WzT6!e5eD1M{a4fgz((C{wy zSIC`;N+zsYXdIORGl;*ZcfsnxMwHN|Q!yX8Wa_G-9It~oLM-&ZoBa(OFcYk?@|&#d zDXqyx?x^)Uh~%EH8d7PGy}2|+*QD3wY*{maAPg$K!c{cJKK=osA<6BzOM8(lpy~Q< z5p2945Xn{(932l%B~>KhdTPCQj|= zYbZ||(D9yx(uAwA{j1EdH9RZ>6$~d->NQznElkQ~uDGVn9Qwxbq`7Kzgv*rriuYJ! zxyQp*Z-Be3N%wX&!evCsB>I=WzT}~)6D#usjo=c?dP(-yJ>$4^sNF8e7@~ETq6iBF zR6Ex(dnS3hJq4^UAinLV?TGfk(n<3_6(!;J#j0?V0TkUJ z(>@F8WrOGeE^T7rebdDO$P}cZ*lK<4@H??+;z0#sx!c;(N6y-Rue zRGy1sS+nChMcTpM4fc-u;53fZ{>1fA5C%ynLvIVYc1&M7N4g9^3FHZPl; z2#!RzNjg^aXZ{#w=(s(uC*!amEPQ8ei`>2}QOhmZVG)*34G4xxi~T}pg192KF=Eww zFRUc)b!mA;Vrw=sByMXRoC-KiWF1NWDj^|?`N@@6+j$sU=)TF(VtBM6*t3&TB1ipY z*~B;V2ezaWMOv)c_(X3`lGI10aX0DYQ{BMMs~Dz!xjq?e^DBu7sj(I<9)}K4`fjro zgsXuHWs?Jn!5i^lYiV3Nud0Fa&uxt;(xgEe+ohK-*l!6BlB3tV<64PO%i)D>aP@go zrKpWUk5xg*1IY7N`?sn>m^4O+Z@pf92+lw;%F!Nb77-2f^}w=86itsoy~R{CpQpg3 zqi$b)NamCr9mp#@yy9^v!Ipuw1q$U}_!#$2vA>KeJZa||8oOV+cMc|Ayi`bONH`=e z-22B%q415W_u(iXu7rADq|A&K zckbbO)O~VF&VHZ7OHHPkfrE<<>Ihn1%=M9WcMS7v(K;8Hs27gIOnBe?WorV z@piEx{~qbgAacw8);Dc~xVC>3s=!j-l?jwUcOB}&{Zi5y4-C$7o^X&_wGgwPtY`&p zX0Xc%a9-K2n@5|_3As7e)iI}3tJKW+(~>^%VJTxGf~RgeSTR~Em)MoT@K{j#GvKC` zp`93dlRKshmHGf&fCuSv6fOifS72)l`)lK_Vu(?;j5gX!0;ocsVz`Ora`nnK1`Gr6sy0p;mlil`6K3| zZzv5MxIkh|y8i$3Kc_=!boU`Y*NF$GNZObniv_Z`74L}~!MB3kQqzaSwi$1~Hg-{2 zx}A@A>faM`52)P#`U1G=leR?dRz~(f}oStAIv*@=eChs>-^jJa_{9-ya7}Lv-hx@7^H^L`ims6Umtq^xCs;K|G;=t29_ck zJt&yW;;Q~Ozm2b03IQSn+WlgEp`U###qu_a^Yj@$#waE|Mtwc4_jZvV2(v38$F*<& z_c?YJ*LH3*&rZL>;|YJ@smAD{`E->wy3>&IN;4h5)7nu2G~w#of5um3*-R_B<0v)c zuPOZDaLxB6+nj?)$0Jw3_yW$CpbWHOIhY@oUI0qNPKwQc<<$bXs%j(b5q@8})@fHL zj`>ANh3$7BPN9YgdywG8x+>q3n8|0%l|RiuDeIV&Zz1bE%W;=PU7zZ~?Do)(@I)Nf zmCq2a0kG@_T@tq@=pX>KXWN$8&P{tHl!7M1P)W0ihZZKd>tPRX><)vlYmRAc^0f5b z{o!aDo>Lrw70Xnhlq_~dciFAVu`Q<8u8ggM%TDiI@RkvA)$iA--4m+%d|!i5o!=!Z zI&;^z!tHLfP`ESdE;BoKHs#2KF}oo3qeehU`OD|v^*X)n5{|KxDB*?tRrUfl4Xlfe zB#N-m_5B<3ivxjou4th31(X|9xBL<&plK&C;nt15Hin%Ct#W1a%&Y9pfyB(-A3OqN zum6#dY4y49yx4wV=;K`o#pbKHCv=1j*cZLWJp-!cjiD7>G`nO_y}h=!t4;uLOvfgj zG75`^C#R5jX-6aJ3nl|1P$nk{ru}#X*6T2)jTKO*kgkd$OW#4z$+GlcLwXrtSKb zu3kI_ZlbU=^eQq~?)ovTNPeFGHF~#Tlt3#gyq3Vbl*Sq zJ5yyg8GM$n`7!TBc_Hli!5IUqv=`v0dB}>p$rHI&Xq^00lrs;RgdBKkoa_YM(%3GR zSBBuEQ=YMe-T=c)zO+;)Wob3+C-!vqMz712+T<2wXPlYrt6kc(+y(Uml80}^(GDl~ z+1OT0u)|zfPbcvzc5Wb}cfwpNX#RB`w{4DtVmc7h(sCoQZzm5^qb|=meEc1KbwQSi z3i+8IsS)C$IW$Q2^FP0kA?5g0+mJlnS$nR5{#M)0$w5I*?j+j6?3RjXg9|ApDh-<& zhC;5O1!^7#wNNcp$4q&+!;ogEJUa*`6U z!2iG}2((|&Izz^+P9b4g@z?w9)A4WF$v&5B{u^$-y^+MNj}Mmd##hlDzI``KS&00* z#VisQA=LDJnv#`Jn_n_I!WJr3Oa?a+zivGxU#X`#`t*8YkjfgkR;-R$OyqCw9m;G0 zd?c`&9jza|7`u4B`sC5a`y3Tq`WpW(4D#_@$!rwi2Hf={H)|PFqyb}43fVTgOjb>- z{*x_ZsD{O)9%8Ps@?s@$G?8emC#JD_^w|-jdkqKQPQe?auxr{U=3K|UyppR(If0zc z`s%eORJEZ2CS!S^yfi8tZ(=F4v)rpkO=7}EIme}0--^p-2M<4Z-frPC5j%MDljUPI%MF>5i1Sd0`QI?@5-sbI0E3*rB7viFsLHp3pS5y)Ji3it02MisP63!l z&gDI?>8Ew(`gdD{!FcmZtCcT1i4ujNCeOmh_;X}{1ezmFivy*Mz7)|3ENBF{8~8IF zno@H3OVKV0dgXsoG1e?qECBIUPw=EeQYKSl&%dznYY7hP7bIxXJqqA_E_m;y;di@= zNH>H*--q6rpt!vq)mHrU3m?mO?lYVjNtiEuL#_p%6mF{)`A(Aw7cG3ANBwj5Z#|TE zIJvj(H5wpDdRIfeH?t8mu4m8NJTVOhc7`&)E}qQ#$pBp^RvSpV4f6v7$jh&%c2>W< zqOoa)o6_2tcNrYX_Fu3NywKenU`I4B)U<9doA2OtRr58rsZ@Fim%-m(>mHvwA21OB2btW*TZdX( z+N9ye=2UFyZ2pW?jCzGUZ_%3(i>U`pW|fyb(F9Hja(Fvpga3OnN4kIsxu`@I^S2kA z3t<;CJytgs!bmRMA%1~Uo-@cHzF*^RzPzf2uLBs)+`T;l$$Ao@E|o02p!5QA1n zkyKhrNctVw<`kY@!o7RLU5|eCygQ_H*YmG*u&|NwRJVT-Y{Jw=(4SZ_`*d~7=snZm zQhhmf%}O4L3WxpGuxFQE{$=fF2JsfhMpm_A(z>z8kA}7Timi?h&jNJ7UvGaCo2o~~ zCvcB54fis52-igp@a0ABacmhnwNIbcfrLu&&ilcNcB{WjJoR2vu5-KVIr0oWtAFgE zl%2u$X!F8wy8_bHU~+7~{c~vDG2|_5zwF$_iTh)YNIT&X63&pnGB&MJo?}8CO_+8W zzT5-~O>Ei22m2;JdVT*;8kDT9ml?TZ8TBw|Il%*$qHzo1LNxgUpGQaURpGF-e3?ta z+RoNOTm2U&cD6eh@zNzL;Lo0wt;N;x5TCV1-mKA+;zW;U6{zoLnTZRzWWA*~qS->8 z{h_54{ow@7_jK(M++WNx-tb%VJe4ky0D4a$dhc2(fX5$F0FN{Y>~G4Qzd9w@>Py37 zo`KI!y6zl7H1sa5qCb@Jm7Whg*yG4fe#Cd5so%_5WqT-cu55gDoYDN#$HwN_hhe_| zgQ(3}lT>C}R(4$5SwsH(k;I|ddnO)zQ%EfkSr~7q#BuAM`T!aJh%rNogPtz?GKzJr zel{8ly=BcrcgZD+-GA1(ZG-`4RJgHznG~-oLF&eaqC1sDC{&QaN?oluJ*J|=Y885* z{q~EsYI;?$biRa3Sku_euj{XmV<_5(;`fJ2g~!TiRQ|>o(OV z0UrTRX151Ro~pCgUQ^er)Uju<~Vi)z`+UwZb&9nA)qVt0M9IE-%- zTXPiAJ-wZvKqc+Sb-i?UchX26@ycJTMk-_L25ByLpVlXK1Ov_IEd+O=J8gfxz+?w5-kA2Q zy%qs*PG+yK;H6_oC!?YeOgO6*g9bJ~Q6w~P`6SUxW@0MAg7$)SUs{!y@BaDN)(YEd zXyqf7I?p*|BpaEQf3u%TnM!Uetp2;#{)bFZUEnz-G_@z{(?zf~I$X=PQ%E*6FRn82 z2-(t(8VNeuIRn$|AZ22fmfz44C)(oUZv3O?A@6ypTltKTD;Y|~=>&41v9eu>8P#26 zAk((|gbvfWJ5+*wZreoTNw6Tp8-lL%sN4}=<8SBk2)<@(7ACDcq+9VG_9AfW0pw!W zSJ+|5*N>x|jqXUrrf>g+-5%)scUMb1ZE?1IR4Vc~i-Ta1p$p!>3{R42fvaMQ3 zGyONeig2m0$sXF4Aw$L#iy`p6^|!O~K!D#mQGqMaTzl-f3T3{uzAT()O`M zN#3wx(s9I6O2iHwn8%AXKh>C@g{EoCTLyDE%-|68B`243_qs zl2-!MRXVa80Cy)Rt}F;S?Ez zhk5JvXZYxiSTpw5gkukyp1$R7Odbo}J_xg*uvz+$lx5kZkYuVLD3L|@!;-77L*eCa zAfIq%i7LIFg};OS;>Pi^bWZxy6Nt8@IORD2U;w-g__?eqzf{eej3^_<%?zO=YE)6j zj32qs+rWNn?AfW!r2hYB0T{T4+~MhFuQe*GBQe--Hg}l4mF!;yTyI8WgKv&Y&i_uj z9OYLH3ReVBy9Ycp$^Vb-N2`TA-D01i{51UrXNx_VgA@^*^jqJ|rbk9CAbtbLtM(TL zZmL!b`Zi!37P7XL<({dF^?B%bv(pJT^Q$~#z+m(X=O-aH4`^^$-@Ga&H{LI@mu&xe zx310fNg$%USF%R$Cqhge)m5MZFSLRn>9u?UJPzzO0Q)-~Wf~uw}FjvrlnSrux$Ya1M<0SRqu? z4TMn}z9eWLj&yq$wCaO-o?3nbN+otfdnW0>j|xP7H&)nL>Ck5xGoZ1hz!@Q(Wb6zT zx>vwvY9kJS#~(jRMw;DP`*}TtzlHo!AA*u{-iF;^r|5gnKWbJVr={*Ap`PZVPj7>i zJog`nRab;N3v0~eMLXaA;9^A`Bysw0Zp=YZ%hAf|qZ)_E2M3o^R_l>D6TNuy7gkS| zd{_qG{Ha9_)(}sP{!aa?l2EKT^E^HId)qRbPHQ<;C^w`iGf|ApV6^G5Z=8SfVrApq zFQ%9`*>|VzI)Q}{>xAAGe*%BPS@Oa6RvEg(>!uzP15=A`dj5fHX+0s}l(jl`mOF}M zL%{R(aWYfKdZSAZFIOlps`M%f8&rR^H{EK8W8_GKmT36rAAPBDMVGyQdkH9Qw7ijy zyWE3@A;s@nVe3A>(D&ZLaKrd9GRauH%YOvUG~E#0t)j4Voi0l|xL695r%aSieB(b0 z+PM`x%eeJH80Ihp=LaZldnVuWIMP3HK@84hl6kvlK3Hk|6QuQcc1bqAW8FFU9fPrU z5N#`sKFs#?Z~ci=k5RT-UZ~cq=sZ|oDn8y9C#iMQ7TgI=Ar{}4=RJgu$jwHiwRgGi22J6bJ zUk1NL5yae7Zv?gMztW@M-@7;P8Xi0ZKa#Id8|44cp(>;h5r~vXYmC|t=l)dHNvTp| zr(?hLJgp;yEqvCRODCrSy zwXV!FVh|zu*IkLB|EAy@cc%xmR~tNT8q$G`V#~Hi|Cn~r@%|r8XC2k#`~UxKbi<@` zz(_?v;7!BmF?yt+q)HfsbPj1nVt^phjBW)%x|EV|5=u&!Gz011{rR5r`;R|3hwX5- z>$+dB=kxLK=`$=z&<5`_8Zsq3x`JV41#A=tH)#YR7~60&&iR{4MRPR=-8t|ZFnWfSzg zu{=#(ht zp@Yg_Om8P$gz^;sK==Llm~d_y=>N!neysYAh#0O&@5-%ht8nF6p3_kP;H#xX%bh;C z@pxN$Er0p%<8|q^F2Wb((-IjFa>;YU(;4o+@`eb53ni`79~Lpz+eA>)qF7}kwAl4u z69hM-@4BxC&H`;<_iTKvZ{Gn0aRe)U0Z01A0&$$&6HI>zwSvi zZ$p5UX;W?4B@UU}L>d5$XX&Kqn)(y;DiB&j?RGg9Yo3ZYipfMCd~0 z96e&W#~$_t=aY^Va(bJ|EAqHX3~)1z=(noQ-#zd7#}@056xqe#3&sDT-Zlu4NXnDBX5gaW#bCqAO#yBq|RJrJIW z0>;OK|NYJ7!oD&iLisZ2vv>X*!YH~u4450dJ<1}wZaI!6un<-hNGdfNK-l|6L=T6F zGE{*}E$imEkH4|O(fE3zP4jLk54FdS^Cn=BQhu#V@cgl(;>O+WTX~T|oGi^ct`xt+ zjnE25LN&)guO6zLyn;e7wM-JkwVfM{tcs@~g)hKXX{Yf~*2V(eYa}KL{2J=aGCqaD z($Kqnv;s5#jmN3MXO>;0?*~cHs+0L6^#N7%@EtO;Qff#mur9Gfz!57kWg>Am~mRQ5=qMZ(d z4s*sggvJHJ1E(A5`B2U< zQyJl?ZDxR!)X6|W*xdUxMj<>MlAiY2iTi=!)cpvn!~rvmo*S3+*jEs?tVsnv_7n}H zSmyV*QuwAdf}E-g3-q-2f>BI$&{jw6h$zs$Cp-5l;icdVQB(T+W3|;Dc$8 zhzBwP8NqhYP23^pP=0$z^)Ksp`liT$fd#Q!W3O80#Z4BJ1|v|^nv$Te9Usuu-tSgZ zr?MbH(mu+3p}A?E0MrJUBoWhZDt(hlZGTt1&?xYFS>4`*B|(TtTVtdFNs)mA!M!Y? z_E<=I)3yDU8}9b&g+6Nd{ekZRuYvdX4Gz+TL5Y-!K>@(Q!6;%}wk7v}^s4+TV6>ZO zqMG%7#Ic1=(-9UoL}67BI3d~y9QJYqCJ@}ABSaUZyRjY!MnD~D;AIP|f=QaEL55Ck zzy$s+;meXIQX$GpkssJuCqXn7;?98<(D~01WD}3itIwax&0hS?0Fs8OKVmEh&OmrKEaDdun1V{>^yWhP=6*?1h$~qDCh|l%2-5K}LZlqsoa_WW39>_=neDNQ zS@5O!*=vjP)?Lfhi^8ubvvivuSXsgi+zW2XL>q))n=Z#m4dNmf&Jtzpd9f#rQ(d9I z)doNb-W{_Y`Qte!qlQKb6A%6&9PGwZ3KGJLY9VQ?#;A_$_&$*E<69#fR%E29^TU5f z_tf?6@wCDKWF|ULz#h7El{^>6>MFe3TdQg+)5Hi=)on-JTXw)HyDY%9x1MX1zkb=| zk#hmfa*Okyeo&fk#kKSXaZ)V0I#~(}N@hhkc5c{8FKrqTDu8|?){!(R_06hXTu>I) z>-n-c|2#N^Vl*U)wYt?ye#){F8UgI0M95(Oy9Q-A3zXoheuyn|eE5@*ItL9qFm?I4 zMhv{Nzt37P)Y&oEqoq0FGC~0p4Uw^zt;Zzq{9n!N_52UhQ#KHN(aNWG5r;H>QwkLq z4^N|7o@SYoxLmM5HHYS*y$EyW@4OB9BwPtqX_63NMK`+g&Z%{DK2U*Kt@U!!R55+= zi^a>Ofj#lAz&pd@^S>h3t=@!P_D*Y+o@$PEk8*3Y?)N2rjy!mvCnp4yuYklab0>~x z)K;Df^gpJP)Sp!8?H_D!IC2Rflo;Wr^xBgygLoZh-DLED{*rc)=JI>wzY5Ei6<+8CpR3UuRD5F~aCC=-XF&~UV zWDbSFseZj4kl$2A#^9R6N-($xP;ydW^=_hG7mgI9>oey=^Y%s`f&%C_CBEC$?pbWf zo%qTqs9EM)5=Vq9dt?SFZ)l(zd2n@ahikTN%;xA>&qY>Du_}gco2Y4R$oV|o3KXlq z^Wb{Ik!(g|h$_{wN)yan6{mExiv2nE?{$k_C=Oi{La{I0ez=RqAFNNO=VyDUtGBAm zFDa3P@U~CKA?$$Duj(A7!2i7aI&pm_#eE5a<+(hH2$*3ff7mS-eKgfGC%jH}`WJ>z zH)b9ScucYLKn*QD8*6MR)Lll*f`e#w`$CfL^y+R0=M!y_Bq!uQP~;V%j|1bV;-sSZ zh4)5sb-C3P6TUnEp~^!5^B-V0KXR$zOlH;G8qB6;i1k(p5Dk!v;UK>6+5oI&%kS;XaXYu7TroIohkxsjuv_7<87YMXM! z=m`>#u0n&2{woywU-Wi2zz{oXJ!`Tp9FG?PJ&vO)OVM?)Ew)}Be>(lU|4S--|2x^; z)gmS(MYgkXH59Vm=}&25M`Eg*kSv*qfQftmrhyN@Qr#9gw_Q$6CAPKIywiS)<&NR^ zihcRVTRI<8n2=9DS1PoRY*kYN?~@ZqIw{(INV4qRdyYk+0mq1cPvP_{Ws^>yUu|sdlITKz@rcII^iGH>u zJXfI&hoM3L!j0sAQBiHm;gA>&nj5(gJNlA8N>^j_XWghV zWxZ|h<+ttPghJ9cEJ+ae#S#HQvv~(Dn8FpttJwj zqNR`nj8&{jj}o=3mxJkH&~Iu}i)|)l%5ojT%#?q0_=KyX(^%F3pEBtN6<9` zdvwv++2F)p_UjR3{$Sa3vxFfSmKA_5Z0TQ)ClcXoj*n$UOot1I1tR(6Qd+0=;Co?F;@`r7`o?agg@jr|kp9IBKttlGF zBxA6?#;6K2_ezJfEt=Ddd7Uulw3q1neYmV(-j8=OdJT0&qdtuC0(8?!cY0*tZEAXQ zLsXn`K*(*r#-}9$!L&jKG%<&6z&1E~UO%tnFR!y5xE#alrC&~oEH_TP_<3~{Y9+ZR zd*r4f*Y0SGBW?Oxwm~aZ3QTfbrIz6vubAS_lfYiHRmg831uQF$QSkOM$1BP!>Z(N$Wh z#jBwM2eIEI1&TsTv$w=|Ti1HKL8;gxky%@3n8>MHs14)jL&q9H+b(}!Ae(>dO&hhn z^F3Hxr$F{009XTx)zE~C3J+9ZSo9~psD4VL`9dSqQ8o3X< zFFG%6>;7wSM|{ViD;m126aC*1UNz7*4|p4*G59z6>qk%3L1~#eMwOey8RPYWb(H79 zzUB`AQ%B|ZswS%c3)pyl|ImqBYb8#3r_LW&)VO)}>*KXRt_+tJs*y*w>S5%%oq_Tj zl^|*Y%l*V^nstC&`TgdZ%G%Rcx-Z{-x4s9IfkvO)&8kxeh7LE%AP&P#-;!PDZO}aV zI=qECqrS@5c1Hq}vru(rJABhO|AB14bJZ{OH%-#B`L7(riFcQtfoNc0Y0S6Zy7a`E zz2-2AT2J4l7qh?Lk~W`%KK8Tejv=ST-rn{1Z7ofD;#~JMx}aO~^Fhp`V*bCew0%eu zT9HX|8wWF&KHA>E8{|`Gzx;;D)xEv8)1Wj$`Ns-&P~4BwIP%ctw&1hs?}H=XPY3q) z_R1SJ#WQnWsK?5ZVz-L0gFW;jeJ|3-Zd%SPb0VG4B&FWBj?^&t zJ@uQ3W9OV}x{a8B?x>Qr@F(_LN*M}t#Ul}A3tffnwE7RNxMz5#i~QE+!Z>6V^uDb> znLn3*F~0l#%MEh^*)}%k%Vy)fU)&S)GoN1WwGke=Kwt0ZDbAeF4?yHlcgby%Kfk1E zwWz5aI;7fTh^@!l;$_KXBYAL>3pNQmf8)JB{s{~+7FUdxNWy8%17NgE77NfIZfF9&ksxL_48-`eDPcIbZ7N#2{{Bqe=<{$U+eOGI4BdF zfb3=)0RKsmXWxyQMf3q}V~9o3gC_)z}q!&u*wonxVO~b1;@j+zH2DCNHhOyDZo`ss%36swPU9 z9l=;li=Sjaa>^h`^)^p??A_dSLnH*DeioR3^yHnEPU^MCmU+_Z4zk6mv5*FEv(+vi z2MI~4QvZ`^auRi4_hsu`ysq_9bqdGHNempc-r69W>LI)g@@b&0#q~M8vJf4{Feq{r z0evHLuwET4vi#%74(8}g`{60Td?cHHNpMml z9!rqV8d{|?TwYaA;hqds09@ekC40(lGI8qHU3HQq?5 z8*p{i0iaY#Zd)}zBA7U7;#!<^^<|B3{=-xvOzN#2KZpDXJnDz)m;HQZ!LdCY=u0h} z-kdv;v?_QrOVcjT^op8RQn(kv0N7q!dhhzzOcz3{yD^bqMavtGnji712%%YaEEKVafU-1X!`wrM5G@GZ|SJZ1DA;OBh6S zkibefpQh+@85NER6upr0v_AcG{8W}?AFWZ7Z^w{SOkh91ji87ZVy+ZPQ)8rH)kPo` zMbbopDa>29aNV>&hB)qHjj45=toNm1F1cOBudhOWi*p+hQ>QG~__P}HjG9h(E-jCi zuiHh~RzZy4e7`+hLTbQh4}EVW*^wOD0ImJDPLpc~d8F1(YQ1rZQ1!7sEj<7CGvM3u zVjzF{XheA^z7-wD&z`LlkYg6E3&|^E{jg3wTG&F z)zI0Y($rD^QE#8ou+zi>fBQ(rl+*Hg*HpZti{wd{}O(nOYT!+n4f zL?i&Hv+3uxL6y$MirD442`{KGe)xP+4;sq*kue8y@ouC=L~if97+0^$nqN(O>NXf1 z2@HCMv=b+W7M>1$DBKXbnq$)n`}I5KdOjZZa4J6*l+)Vk&Ze#GeRDYW`n-MWsT|!I zD4;aA(ye7z=#)hv{wyyz-;c()+;*DN$i25N?pq(B{KPw~$&RipP^tW3vz@+^N@T&6 z9KdYjjsLJq7h`NIJeVSdPoe>8aL~gF5DxG1f_}CCU>%JD%WI)mmBwq!>FEDm-v{fi zh1^pmb0MMEI$c~4100GEXA_;17O46Jsjm1v$X&e@prcZLVD^9wX86fZviI1`~MYrrqz}`Nb?o3ry#t(2p-q##HYU%ZLrIuQ;kmHUfX+9?S1HoSr_yZ z_5+`_2MPFb2UhtD1aQyPFpCR~CNq=1bWRSNFwbPy&(XTJ0_XouQe6`@02s?>E0OSe z5R8J5s7|5jW@YN3J(!N-e-XAT?cJ1@m5jD6pxg9bbo@+5NOt;BmTDI0uAQLS%}as! zQTEDP?zQ=Mj`YOI9zrtI!y8JV77%}8$QL5u_d_9Ex`Mnc+BYC54S((8EWCcdAV+T1 ztDLJmX8tD5xArD&CF(mxeVBZWw1AIE*4GGQ zFOoYzRb68TzZ%cQKTMb<5>DPDv zCx4>oKnM&<4pVw52ZwDo`TUxRIIjDi??H#RuF{xy?pLMEJsV95W4u1hMNhw4lH(lU zBv;jHx7fxAWuj&wVg)+c`o91oyL_M2c`^nrspLTavb(4+~y2FaARF%0^ju%~_8Y z20d*2wZ}3^cF%i8;dr};6WD$j+qmL&tF*4ylo*fdff0*0az@? zp|^;1yP^+dJ`<-X9N{Hh3D1Fu5oNO{Ajw7HcN^wz{}7*~Ig=@)OwZu`a>u$D}EzZ2kVc#luErMNC zOQbeik3OL{+m>2X1E|ibRD&*r+|?IEzW?9tYFx}R^B*wu z?v{7Gpt>O(-8?T#WevXW8?6#gv;DXDQZ;xjEHVO5mviPY6b86PIK))_4~;;gSG%S+ zUsG->&D_|64tIpYNILODM&JFHNI-fW$~$z$SImg4g%{UXYYW7sQnS*ZHuYQzHVMVl zpq!3|&@pM^xv}HmpR5=j(v%Ttay~kIn&k{Ci6+P6 z2u+5SOlMJX7WDnT5~@chiSP{RBWC$dwS$o|o2$Ms0XSg_5IqHLbp48hO%#b(>t zW@8w+!S}tOAletlAE|mQR%-Oc4Mzw0KJQ&=oi6me{dsuYEgg>Jl4mQZdKvshQMH#y zYpZ8TVYZ)89N3+0?8}O$I&ZDrv;BB(9GZcEr}En`#%qY*A#MFRcKdf|1zn(sUsn+e zb+;EA3e;U^CO>S)cfg`!T?L@*_JvXf?kR6L-MlPbYPomt$4DGh`>>TfR`k+DvprC< zQ=HtYq3B)*tMQ=Sy}Gn}iu?@Z;}Pe-@4e4@vq91+iP2c<;^Cdz=(-WMffGp=kX`ei zMQB+B?w8aXU*uiHy^;3z(_Ra6bhu$fY&Okphemq|W@vVfuXAJI7a21V%U+pWSXRK3 zeTQ4KO(vXg(7Ch!T^{;Q5^gYi^puItse|go^;BZ|!!zXP(A6X}BbnM%RXe5EzN{_| zol#&O(opH9LPSQOE6uS)(=w7?H$qjH>Cj+x`%qi{Ma%_51*Ou`bzd2GI#|@RZ8m2z z53j3xntL(4ELG2)1U!u^3VLRqR**e9kX!opJ6D+lit+xjL$#>{rFAuCXiiRO^wP(} zpa`9Vuf>#A-#QtHwE0OMx8<^bhYFWzR2JQJ9_1TOcwuQui2xF{Hdmj{?}K!;T7Qk` z!s3p$-AMmHPlhsJCc06Np8k&!J}7CQI)F=o_m0J-bRCUy%2M~8LjP@&0d|iwh8>yYk;+?nGSW5eEi9fKu$F5AU zcy|Tjf%D~XzB^nFt#wpmDny7hd!wpD{*4;YQ>30?tXVeq*UJMXSHffY9OoR>xt!fZ zNq4J#88w)c*qY6-(ZuDUl1}P+m{)mX%vNHKtjwsJn(B+t;AfV75o@N2EpV>Xtx@+o zvED%6==ISja!{Tb59mwz$ey)Yv8-_6@e@%>e?l1-(-KmJCB4 z!$y77;O*`I4x2~w;7^GWRX2X%b<>H^Cc_^Kx7x3zTn59$8&230w41mSNW3~I+kk>- z;^q9_Ea#^odwM{i1$wmgkc5@+PA!jNTrbQ{myN!_GeH6Q@=VU0@N_@!qUZG)XJKFy zPr2&gTfJklzDCOL_trN}iiXcBS+F!l#1KtKf&j4YYGKz@zo}4fI2)uWBL-3Qz3IHr z%aCoZ;X-8AcL=BDQ2h&SY|jL$|Fng{9nZJ?I!G}qi`SRiCM~LwzHe737+)18d&_OH zj|AO4C&+*bQ_a9IUNJSCcTSF;M`MJLMX4&|1Duy1jaU)a^mVpHs`y}FQ+uendl>9U zX#B%wa2WS0l1q4+kaS(}RCw>Vf9QE&e|xO-?%EEO@d6kU5v(+^GMXYtw)3*TgB`gl zeS3YmOgM~o^&s_8u2z6j!^$Wh&9fnu52>h5h9X_bi!&*CmyZi75j*^99R@Jye#MF_ z?qK}gc8{;U&43E-XV=#ik!Q{laT-kq79_EZf39r&CG`mArTpP}DZdQ!@rGz?5oJrA zpILVK^>zSZg>lDnzcL!&k5gQDULC9bpg_&A+zI6AM;UIWwx=rdVDT}iJ`=!#Q<<8p zWT_M_-J$c>C`XK2%R2H!5704{1c>$~w(@+B1^nUaH4Yu3t6s&2p%g@#-9ZDuG;nX2 z90A=ED13d2jj4Osk@!eL%}@w~r@#@FeV& zrE;7gjEX^gYDSEKZKHJyaf}E!E|G;cC@5KloAdKV+sXkW20oZ5y2a$WQTK{CHKB+x z&&(KurnHBiD573_Rq9YejTNw13_4BWLJIOg^zW&Pn(6~*yCv@Qqn(GGtbB=jbzD)5x1pLa+JpML1$+RjV88oyw@Ab`xy z$uB})ge`?e9?#!VZ*vG$8TxzYg+c$=3!W$NyyJWlgJ-v2Xanvky1bTqJWR5W!GZyE zUr+NDTdTgFn!E^Vn((O&X=yClfVGLuF8T7d4PVs$(sDHg3qL1Lf>H@GEhcGR{QjT} z7F<;&m$h$OTAn4FC*Au|3d%Ol^{^j&e)u26YICG*@A*Gw@286)=^!{HWik=qTqN&C z2O1`GV#~+TXE+fIimk5*cu|25zcvVuV$e*njL$gtT8Ur-=9Cg;pJ3pkQtV5-+xW8F zc8jH&2yRAnd|{%kI!FKyF;mY37181rKaICRn%i4G1<89qJauzs^L~CR+815TX2J8SdS+6ApWm+xd(4bmYk(d0Rh^AI!?Dy4Q_O38321yGUnOU>Hfu<_r(`KQy!-6o&7_Z< z@LXWf(T9j4e9LopQg{1H_qo8HfGRTH`Dt4k+v_3pCLy=oQRtd75C2m9Y9p$HwDkB$ zbLQxVG66MZmqo~;(kbd%554?*j@~@$at^&b<{>g`J{nKV%_Nc7ya`@v+q?n5n7IZ| zpMO)BsSlewt|l1e=~RWe<=YL1J#W+NOeReUojpeX?9j*r7pXRc4xKB4RHLoK9F(8a z7}d^a*6q_>l+k+_xJ$p4Sv&(QV}eRX|AnaCjGqimh;n8K14Yo79rc^HS4y$huZ|b>z8yrHxkG=?!7T4P0!t92z6KCJN;tcKQBeQXnCnEWvh14SbwZqeJ)(0Xw5w9FKdKIzB83lK+DI6YDZ*D|Wx{nM4abtBesSp- zZpZ3>a{pBL^QXgf-Sanvm9K|ia7a#5XsU;>BO!7cbeD`RSM-Mj7Qo5y8~7X(!Pa4) zO*ifZ{+VLGa-^6!dm}&@@R?^*6ejZK*G@kW33yrRq3yMgphF<7_@!b~NidN+I=4Ux zl%V*JWOGK6syfiv;e`4RmXgz-Vh0j}S(;~}rpac_>PRz)Yd1~xAV#@r^4=VZ@a&I? z&AHCh^aDM?_LpQycEGp2og7=#m=cB$l~Q0^m2s+3&qIWYKD-9TabKd<;H@rvd9h%C zFd)ZO(VC05f{BpMI$(qh*)|-;V%4}u+|8D^5{K8X|10+o3F15|*$>w|A$i2m{AxAycAF;ejKp0USka@6{{l?{sL#47%3`@|IPid5iY`dQw;eEIUDXWjcUGJa4Yvhx<(3gy*(A zKtPP`;vo&M%%2UYF9ebasaq~g$X>!bH$`r+CKi zUMf23{S3sIpB}sZpl!E5+rEPitm;^lXQm=6Hke||Lj|xXKHyQ5_6(Y(+qDaU>58?M zig$kDK8I#wO2{SP7(QR>*HicMq$96}R?SMK?4CP|4FuEhIpil`m~CBFqe5(1*GR5~ zlcZmr^}Ncp$|G@sgPAO>t-E|__&hTkFQCsBPh7#q7~L`H^R6>$iOqA9MB;2|@}DTG zUX$9#Xjk^eEoZGZ0r|V1=FdCzWim96dXGd;EU#q3Ie+YxU-y3JA1x`P`7S*u+vn(Mo1D+_UQwMe^#;luXppviKCRhhv1(Xi8FAF3&l-58LG zr!t3_CL#wYW%r)7Lt>YXt0Bo&K|=_9so2d3)&is(fcp}hRer)2TW}CBpRv$l{C9NI z8i7Y*d_y*saN!)POCFI|KG$=s5^;m3Uu-wwj3hvQR+8nH_ z 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

      ^i-aNMpj$ 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 JzrHymrrO0AMCRg;^J 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�Qfri{if*5dm< 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 LQmIgS{QQ3bUSR)h diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Contents.json index 01bdd059f..45265b0c2 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Contents.json @@ -1,8 +1,19 @@ { "images" : [ { - "filename" : "Home Dark.png", - "idiom" : "universal" + "filename" : "dark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "dark@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "dark@3x.png", + "idiom" : "universal", + "scale" : "3x" } ], "info" : { diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Home Dark.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Home Dark.png deleted file mode 100644 index 46926d865f082e65237808def7364f3e9b051521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2972696 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 z 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�QI8jRR)&Pu3CK%KJ$K>U!6 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�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

      A<6qAe7A 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 zƩ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

      MBRS*oN7a_D?&4ri6Kj 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�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
      f?%B#Z+;@+EgO!E+mH)W( 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

      {FBRO2=|ivegdm&n6Pq z!8Dn{a-@)jPLn*>dRHgdM34~t)+lIFeG?H={8g6F%`V89>fgs7k`ju~6{fi zE#I)DP@-utlo983;xT&+k%J=*2;9BmW=9L6T#G1pV}*3&-ON6lQi5=XErhFX+kcmz;|7F|o$w?a4VAP;xK zUja%~EBK~^;z6VRi$?rG7(cZY)!tCK6`JrMugfTUAH~dHCzoMJ-d=DsUk&W(erIa0 zf&M@1hf-$lFqDD(0e=-DawUmwh49pJ7SA=Ta(wO7F;_it^X{lXVbP5>c+>keMN z+lag)`^)oV3$9@>oZbq{;mP2CO{Uf4e!juM`{hd2Q3XuPUcJJLhHO}(((y)cuFqn| z7`as2A&i3$+N>g2t&bzhww7T7r%#H|@F@T&TTjw;Yrj&);+-Oy7h~rd_fq(&&tg*6 z&Tg4w-8l86W}uA3@<|b1wLBLSiP`~*^aXP?{|Y>-&?D`01JB2C`K=iu%WSy?Vw((* z-Vw(=HJIBVx$P93<3(eG=$fzP&_f1wH{K-^Zewnrp$k(}k)nETZBb)2^9y4SIu_ce zJ6LT&YAbedZ~&!P6nZma$OO>?>Qrw1{*{U7xnVHC#j&M^c$< zAk$+_%szJZ1XUX_{LX}Xr08Fpjh211-mFD;T_XQhTxjMn#XjzlF;yb%rd3kyI79EF zxSdx_%U5Jfspeg@vL(Tlh7|Gex1SOpCx){>pMtVnMt^%KgY*y{%~CqW?wv!d5qJJt z5fgukg86RS-h#WNz-Dcc)+pjX)6xn?IciFtE-<^)Hbu^%BJ*KZGOLXJf6qYHo~hd^ zEqXT>#=m)a(#*fknSqQxtE-y@+^)-GC&@}J1tDIi&ajIZ9A<_@6~LC~aloh1B%$Jw zkXL%G3<)0hgx<<2SurfX+rMh9Gryfu7eESs6Km!K+|TNID3p>!cQ7|kn(ciuT>2Tg zTOO?=HKN=H9JQ)PEx-(hijQFUP>_#vXBe_Bux}$!eovvsGO!hJtBv3-I=s3(RNBU7 ztDoD#p65|+$G}m&l}hsRyyt0o5?>>D9#B}zw^>aEc(l3NlGr81phqNJQD?i4(=~1N zT|pO)aRC^9WR6aubF60079C6U!QdAqz{DCYDucTIgI%`wuvO>dD0q>**)U zp>VV`t?;w;qnB9xho(UoZ(f-?w-_uC8?VtSrG0Ec1aJtb4lMaVb!cbY{P!>5Y~drP z@KkSF#-6c(MgBLeri`pgbkVWSP`(=EFZwZa4vw1dl@!`at*ECJ*q6{hfBGq#I7qyu zzTo}$nCg9~ht)^bCEJENmLKZ~0MWT5S1W&o5bQz_dq8=IlIOa4&`v zQy1e1Rm3gfnI-){#-Y96yBuKQ3*MnWKCW#-d@9mwi|0c_mdf>?Gf}7WCR1~QJCqit z131G5g#QjSQlX123U*N)U?p0-@uxn-1ihQL zXh`2#B`c#P#Qyd;t+X8hQo&OK-~oj8@BPCZ&Nl?}UHz>^IkISL7@9w^gDn5i?R}2_ z5PlPjxg{>mjHmqbo7|6=bN96y`tc1w_>9HTFlu4pif*)J3kNK~>T#T3c3qjdg6R<> zrh1rkv&OyWvjycrg3ANys+QTF)m0u6zkJ4kGTeh<4H6}%@nrcl78?lH^F1=_GZ?lw z)rT_(rHHIpWy5N#Sm-Q}YS)^KLWFV{=U}ig{>rq?mq9dhd!7K^HutAt)zGKz(G@d_ zc+}kW`((0Bt~vXwwgp(n(DPjNE%c?vi=8Ht%0DtHUg||_8f356xRzF^ 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%0DCyIQfu$80rl@MvROF-@qrYQyU=^mRzEs|F zcOn8nY8Z55`+K3#HDA}4@Vl6guY`FD+c&jKSo;fD!>>A1F=9KzL6t8%Dn7X&l)1@2 z$Jf{|$NNh~?rdo|?PTru;L#2t%dn7p2JJ*rNME}tChW1GotiX<65Q*Lnl>^808nwW zi7>toNN2?99{~mwgvgB;|D;Wy_rs@4;<=kt(C8pK5}=tKJ=|1~vi1?A<_!5!7wf9g z=oFp;NCJRmvR>rayi}an($E%v6c05dwGNNBqIXIA(Qg z7-=`Z)}anB%5kgfvp+1a8G+IIy0>rjtW1S%rnQGnLcJ!t>ix z6nVx0&q}3V`^F@@Mt^(B=ukvx0_e|_>SXdiXw<}gk0k*+Z+JRcX5)G>Wu#Dr?zDBZ z>@|zt>KHu!Zy;Lwj zMI_G_`0ctzWifoI?%=5Pk~V1_abW46w(%=3#tM;`x&1rItu6Pt)CO}k!oR}mh~Wpg zfn~E=C?#_07=Chy)CmR=CS$@u5k;9W&Q#GM zyx>Yx-z7#%bJ+re(fjmtR43Ecym^vcp1Q1A!q+u*o^{eA<5yss&#c?89dMj^$XiE* zmefEnJtrJJs7(=FF1nbm{@vK$!RTk_+5w3%%@7wtUOI_R(%t$~_;}yWIAPM;2$s?0 z9bZ@9dNz_M%xMG3GgzR~Myaed{&ST7kl}W^3fjYVQ=`-{kbpD#MKXx0BYgiwKRZ9c z)|hJ=bH;Y)3n}C-Uu@^O;J))NkKgA*y1g7=p5LJbKpmy&rw#>RN6Aw|6sHGzuTbbK z=IrGitzse(fkM-KR_2(Grj;tC^jIP@6@-p>Cs)v+V4A=1W?rB=UkvA`>K}wRS*h^g z@4@+5tZ&;9r7}Ab$XSJL6gKTrnf&h?(yfOq75*W8FGO^Z=fK^hgLk}}!!7B_>q@i0 znZp!X?4VXrx=V{}Yt(ubzUQ}-pSw+qH5PoP!o>0CFGz(&vq--OCfpg#)FXG0WQvh= z2UQKNjwvp4Xqdiwr5y+db1N^TqAUM=Mm|KA?cUUUl?`OX@OeUhTt=SBT@Ym_$#?R~ z5{XlW_n!X&`hu|P^?0~7~%rmYyS-d#^ozNP*KH}%4*UUwG2kfl zcKP94Q9RiIa)N^2t--yeUv>XjD4xdjkg;s_0X9GyI)#;#J@d;BGsO6wva^22W74Dk zOj6uq1b2TyeTgP+L4u9U_qV~`H3$^&5jEQz{0;Q(xnv=S6nMfgBh}^cn)vNSADng1 zXZ4*;gFF7+!yB0}3t`pqpvLtr)PniU#U#RK_Z`52hX~F;@imT}vAZ!wniF62{WPKl z$?zE?GY@SH?hB%AtZPUYUpJ3vKc!qSIsMh79kXbXTO|&d*ldmYh-Jh+`Q=zC8^SLc zlq73nk`kgQvea<^P4Q1P+cmbTA0(YidF+@hd-n`{QWRCHUB_RDa_U&u-+K(9#V&aF zxtSRFeY=@8zVhvWUyBYdhKf_OaC@7E2KKTsD;I+w(9ss#45=ymF3Jw+%oV<4H0*sI z3#P4R->qY3-tLj)L5aRS$)?lVZtY+8#PZdt$HcrEWZ`E%`SO4k4`qUSL!IsG8;p{S zik=W3haP`2R>+DoQtjN$I%D{w-G8_*x<$zrmsG}i6R$|p_Lv>A_P*sJ99rDVt9$Zx zFATjwBAnsm%Wq8y@aaVzWIoNx@E(RYxS>+3xll6d3he0{ffts1bmQ<#rv zh^aHBw~-We>wNLiVtLOb9pr)OII{H!z;rc30Hn$_sgly#2FszPyAuLth=`NXSXROC z94qaHPwkp!{^vf*QL{rpM4L`}`z<=!53@|16#Q7yAl4QY(PBg6a!z%m&O!rV=oFIH zl(^Y}_BT0uWErOGGEPc7SV8Ce;jz^v^yRd(Q!nW^0E^BJO`~r?_af+0UtUFNB9y8g9=rI+Nbkk&9Wn`Q`SO@L0`bitQ;q1lN&o@G_u2bZA`TvR zzDgn_bzb{ib|8hS#T7Hypt|e6OVZRH>aS9mqF7{qqk=qtI0UedqK}#dZfdw{AP8|* z{bQTjn7lge4MV>(d13BpF6BhaV;qy^jH=_MoJT@5u-R<|l)@SW?%AwsOuzbyqYYIa zpfC{3LLf)JH{=B!6Gj8iU8ZtM5s&MplT%Eh!-(3HU3qj9Jb=Zd(%{(=}v10}$N zAFgWD`O1hv4|Gsp|8vziML$2@VOq#NH|W=nbJ)ok>=Y<&B%>Su(U**Zf><=i&_p&n zuSm~V2YDxEwUQm^XEc*rh+FOv{REMZn0*CnOjlaJS|P^zK3(P{L}LyYO5Gw3IJl7e z-wWQwG7Y}Uh((zOMAAQi6{SDi#3ijCYr+d)$v*ZYKkbwCyYloQ0eVR(&=vcFvk%kG zVtp*5KTSb`2gBSE`Is_D-7`gS_ft$hS$4mhoT&{G8jBxu=F6t!;PG*7VQ4cP`mcE)Qe*cH2-^#~g>CSOmr(xWFsOY`ZZ4x4|Ax?QRZp64f$~6Fp`D!-B z#B{TS<6FTILIs=lFsJ-S_T*EW)(^)kS-ruEbiL8wH13>u62y5fRw!r`bnhSV_a=s1 zoSsr8v7V@XFiBIv4{0$K)n>AsPi7}5>uAbeC3aG%rJyBO>r~XAOMajZ9vry%I=|Ra zbK9jSSys%jGYijybCW~x!&pXWb*qs5DgCv2>JT>Pw<>WS-kxx!(_mU9|XGiD~}=J>J!eb zhkci)c#kkMf8wt9>#A`fHxC^wY{xYGjL8P#dSUiLdF8T^ch7Pvm~dmm@#-}uD<3%P zLETcbY5l^hKrCpqFWYa3W+{!eN`e@YWvbQL8oA}@od$3uL4 zsP`jl$J_3B;pjuLxeNqY+^U|#^rdOe$uI-p=ZM}drx`eIGmaE`nW)%7^@3u4j|F=f z6yN;B6ePGUuGO13a}H-%fl6EAxki=A zjcrSIz;ERZ{VtMqFTHA=j_{Iqce7541~JDXkFbA^HB1?AZE;c;hFRL?;k$sbTI9nH z_x26Sy=&foPvX29XWj9VxRwP97*8*)9-H?2c8d|;4EGquGFOQAg06RHh1H>XaGRq} zc@WQu75S{c0)=Z{xg)J{N3v>7a|R3JWftNXqc=(j-MUL7W?*vOI9@IMa?Qfb_ z6W9QWrvA%YZvi)6XL!M^D;c{eZ{2}B+z-PeyFjR2tW<1?w{m+9LIeTUS|!j{l;Ry z2Tt0|n=(8YaMLMyf+2Vt`zE!a)un3m2MPTqoY9h(aDLpq!WxM5IUMk4(ZSznf0e)c zz&e4@@3ZN@A3{rgXbVR_94Az&HpmYt>{qEc0PKGL+WweA?RErzDt0dFf+x3&Z|ADWS2#Xu#-T(V67dC9 z00EEP6l9>VUchlv0aAn)lXm*>nu^B8ZjVS zsC;Z!ig`XS@mp@UV|qG_hIQ;4FH7`8TT`xM6qKKu{!3Fz_om$qw}Rql!%Oa$?pQ?z z&4STL&Ea}(#9fSO?|^qBWJMP}VDexHI*YyPIz4Vhu=ISQ1^W0Rd^|m%VhpGw?0fMv zKF7m6!uF@!{uO_~k8A2ARpxo@#nX!FD)aAT%Ig|=87-B#xGtlmAlEr$t=A;dx>pc# zJce>jaexA4-I>OOq6&&-!iDgiY)(1ZSH3sH)o2dnu z;zc!9qMgf&!i-`Ud{CE!^7RfOC@nY?|%9{#5Rfk$A9}*6yvy5 zg2n8b8gr$biN#lKOcV?1YCB-()GjGPV2^P}!UWMwVyxUsdPUUV(hag3aw}pJKca_5 zeqnJS3N|QfH-Xy}5W|w;?rBpe$wIYhtcdm=nBfn{jF%0UzNMkw=S)SMbizZf4V-3m zXkHmaHvUYOkrq75>R{g}Q2kcQ7$SM^&Mog4d)PV%jD9i0kOVkaE0D$``vKk>GM$j|aF;v60fM1B zwiGKejC#MjYymRn@`7Wm$&<;3@S<;3#N4Xr&)P}8abs`M@^+LPVj_8&iI#gbyp6JQmR70(Y%u9@(_q<4I32HRg)HrTpr4ce(3A zSUqco7p}ZZ+6ectWzH_`yn;AEV=Pf72<1xRE8*=xb1X?1IsoA#Ks zD(`HF*8YHXS;Agpm9R$Z%C&#!Q`wtQSY6%I&q3d{rEy%J2T7BCXP=+~7Xw1&#j1W@ zT9V-YYM;vrhfNHdyzms2r>!ssp&ZQ)ba^=OBZz3&&^;nA6`T!OR+8@cA3yzcME}g= zG@3medyNEC4-o>vC7o3-7V7d;4|eD701z!Qiy68PQ!iyQ$lRA2K$z`z6dT1CrFHF8?`vF?PnxnoEjRZbDpK=qe>WUH0q4$;dptb+0=LXMz*`(b^I? ztI+^t>whYaXj+)mDtvZau+fkA9np03h1Vb1?(Dfg3ygX%lD9FL3QU@of!bT4JfNnR zJZ`o+wDa%^hXPmNgJrpaKkjeklZ>WD>*;rwg-vuAI|tAG1v)Uy$?7aXNq`U=nbG_T zI7WxGxwZzeTQ$?-4e^*4?DtU?MCk}LcDLN?B_;>$QyUULi{$$El=uqru37@aFoTeP z{`%MH8ZI<-ni}!)1Li7h38?aF{inAApqI=$4G+{C9>@rF7DM(g=(J z*gce6BGZ!z(?2DVH|;M{&;Q=VU;Ryfvi4s@S|2+hCJN@hC|?>dNto&$i#;w8-}<5- zH1P7Tw@M_fqT|$`V!Zz`8kj<>TJlbl<$ro!x%Z!*AHmTF1e#$+OlBcQYnt>u3qUnI z;iKnmUTSYiBTS4QEv~bHtmrR4z}*E_4YGfc<8 zCinY|X&f#zne8YkG0A>z`N(w_p>Xf7MB1xm8$;u;Hk}H}(3K{{v;TZrVw#H(!MB~U z@Albumc3A3ZZDHbG;Mxi$32;t6u)o$%jPd7{FPqVJzapfFV6FY>vjFoSr1L2kZB`E zIDHV9hD0U&z>BZB8ZmrcGa{dcf3s40Qn3yny(VnV&d6Bufpnm_!4Mi-ENDpQ+d6)p z%R0Sgzbr2!)=)=gR-{t*mYqVq!LBSk^nL|hAP0Pw`rHA~z>OPx>m`=^IKh$gE$7;- zfRfc?Hsac9n}vqLKmSL9alRaENPaJ6+H$`N(RK{ARR=<18L}{*9RH)AoMlMTeynKX zekrk#xpcBPS4Lc?rHzdNY;7!TSMOX{p7T=l)Zn9P7$Kg1)n)YEr2l8v<%Z#)%T?yi zVn$@MOBR{HRx4_cfsd=cOmf4xXZOV@apk*6`JYa$;>#X2{5&67 zgLgh;W@RGy&@T`1Z?@6ZH8xT`KgRECpceb3bxIlrYXWmxyU9J;nN_R@Z5+e{c3!3+ z_%2<>oN82)_blY~vQtnMh>|H?TKpV{L`Y?l%Qrn7Px{kpsSs#djL*%>+wT*Xs|9)o zMduE#*oRrN4OpPq$B*ccE1Qa~-}=t&xiL?yGEug|-1+5$!VcMDQxQEg#M#iqijU{9 zW4Db8=z{%4%IqHmmGf{Y)7Kbw>%|q z>M8{vKT!Hm)>h0F6b7;-6->Pfbsy8_Ga*-3ltc09=^2A)YNUzwrqScn*Y40^1$>{p z9oz$y%V)GA(x>RH^)+(rnep%(B`Wl+9`TMTrkCnFF`)#E}2m(+sF39N$P?`*$kYobTsCDUj6| zmpH2aEqTvr#;AL2(7Hn1vH+=UXSFf40W3Is`1TaojhM|Y8SG|4AlxLLS)Lfj<@?OdgH2nW_uZ44S{DgQI52s|s}uhSzg7Cw0@I0+(g&x#0#00LpMvo;Fc^JL}fbBIK~a4V}Tj^6p521e9cg?tOVU zMi$vb*K=m$c~))?@^80e?h(R}mj0QD3an*OV z^Y{Y?f}L|=GlxD6y7b2L!*k2?`aa+%vG!yP)4?;bcpZ)Ci0l9B0?=n;8eAE2H>$)N z*z)I}Iovm;><$t{cTF%3LA=#x38w$Zc`~UBhP9zXmYo zG@X3yT<;X|RgqDOvJ};L+on{nqu0b61J)T(r5xO6L+6MntoL^|h z2NaBCRc56q1P?p-=@r{r7*NmXj4n9Lb0?`E@$WO%S9%DWd{sx6Z@N?ZK@Y4*bQ@>+ zNg7;mWY=pq19%Z!yccMG=gi~i%Fs74r|Pv_*y&c~87M0%TjH9PV|(oNYy0Yu|NcA9 zA^)m2#MZer5pFZlBPY;+F*-ARu{q;GZLZhpt4Ba}qk+Q_plUhuClC8kL5>z%lXNTK z>yIiV>)|<%I9)jJoyH%X_w*-J6$=kJ%J>+rA|?Msg$$_3%VIZ9lvEP_xbzDW@s=+G zQoT2@Hsf?T&23v0r`G#h(iwW?Ou$W6CR=|uK%@S zA;;_q;DriLw}j>-)-M*TT*o$p8!4bcWo1HjNaLf2wh`7Tw+jOwkCBm&WlfhoVL;)l z1vWZ5pW;sRrGXMSs^?#Vzirl+5suYAvApPZI(DO}K+T6|i6mK^i7a zKi@?yELU)(+qgFnJ`%e;xx;KdL=N68m#)oajrZCmu&Wz6n|!9xX6Ue*BC?UoUcV5* z{e2jX0XeoFD!Sh_bqbDGM4>D*?3daiB>~3-)ih-c{rQ2Et<8dwa#QqWRzWWC~@WD~M#Y zD{Rwbns2az#I?0S8TsQJyFf%hFg(Ic3w$!Tb=<*_YVyMOyON4RgwaaA2_bZ}X+A4W zE@DB_Fa$=iKRKO48!cwe)X!VKxFJ0RkM*07`aBMQgVit!{7Nz zpZI%4bg)kCHSrA4;e`xn8DlnUMvzTP-<@!!x!3f|#6+PWBhv&5PlL1hMAie&{rz7i zG+^X4NVF_c7|hkD6PGO>0F{j|Iwh8Ry{(7H%PkO?hy2yuy8ri2BVcrl6lDv*k#lab zsmPH-!t1fXQqi)+HB@93PetlwL_|54h`4F`_@BkwU0C|=t&+W)?&bawDM(5r{3Rfv zt9m#vP@8^CqicIm^zW-|!>46Tta$t1OL~9clQ3Mzg+L!OcNlACxnPs%SQj=%fJOq;Ey1&oY1kW7aZL_m0n zIZsBZd$r*qRl41v6IK4rU#LCce*kI<&n9!*;4pXZDFGs0Q45(u0};BnNH{>hp8n&4 zqf<2tMj4j39I9nuSG&!^J2|9cHFY?9e2p1G;bE?~0FM6I$c-@#Tb=LTuCF-9L77hTf3T9xL3M67+nSPPWU0g6BXZEQLmj4(lXL#AEQa)%-f9zCLR`dn^ z5&3t-gj%ONjtqLB~LEKOD}N6(9^Sfh*g2OU`_^` zY}GWO7;~%W{@Av1iHywh|?I5=59V;Yr zhT|CYe-h%)QGvuARUtMyh}Yc7Zl+~mblW6Xxi4mB8&)?XauIi~+{#q=awyv;tHg5s z_NrbT&HCiE(KcHqhJgBo`>xUzV^^R^cx%q@Ki!=R8{ZmwM~)H*Vy`^FJC zWaX=`KkzkVhdo&{WQ{_P?*p&3aU$JKDDt&gjSoy0^@PF+s8LP8%LwqtEM5nuv4dai zJ(n+QIUpnt>Da;U>Lp4|#T{HO*g>Ul+zno07tSH!f?Oh8L_}AcF2!^o9ba2VbL5*S z#unUzj&CZGzd6UK>~S)(IRMY<#;cJ4xo@IIKu9Yz(fTKtWto3kXM(uh$&%{>xMKEE zh+?emqBHA8=B8QzusO`9A|Q&?J#mB8 zo0Ux^WsFcwMWGD=;EY7>NoY3!AK~l1MLB24mQ-*2gTX;Ub&JRhZubJam(_#i5R!fK z#$wpI?pLc$r)QT&4}+htXsY$0lNSuwQx^jfQtT(<@82NV77xNX{s6=r$9sO_$t2$A z>%s%++R&eU{xC+r?-uoHd1C6X$;?==}#t&c1H^@ml??jg9*K z3s6%cDY+|X5!bIsm#UgD;OYNANg~k)tc7 zB7G7w8QPjCJP>%Yn$`e!Ed=6H5IV=&!3A8S-%|#~ddF<8^s`vKw^uy)tRwLkx;me*9TYn(Gkg|`BE zx!P+5NFvhx<_inN<nGHWyB)$e{{n_ZfhNqa`&@O8(7)^BdtmwL zLO>N}OGuF2<%k^W{mlIGfvZwoU-J8pj9!n4ZLU1DPmT&Oi_hMAT}4qCY-3wFy~N(; z9wC~*d?=c?ChU{kaO#omsLL!#^%QYrGKci1%3)?Oqz_0u-mqs;8$t)_YG9eZJ>epqD=4Hx))&|R)ok9qpQgD4qW~da z2N$`9vAI`ENJyfVcxF%D?Zs)r6!nP04IQe)uyN6422{n7=}RWe7gRA<+*0XH4pb}F zv=Y@?X7JacsYeEvT)`F!zhTM2TYo6bZ@K8h9%EMzvfZbk)Z9Br>QQ3x4-xPc)Iz}( z|1=0?=?MTBY4(ODRvwWC={}WrPp0A!Xx`47q&*2h5;a~1gKi<3!a>yc2lwxe-+_YV zA`ZoBDR*xu)inga3ao7fijR>M{g#t3Gci!YKyN#Ss97efWg8dbUB}EUJxi<|k_PyLc^+m8@wkn2-JSZYk_eBm_@%C5!kK7{{RM1~MHU}_GF5f*ilGbX z#fS$BhH0Xk_rel)bm1Yk!KmvNlr1Wdhl*F%HUTCk3Xw7PQBZ_Z*z6=U_I7FA+$}xf zVr0=RRcaI9qjs{hL?mN;*6)=-moyA>GW>AFO{AC?4I4EM46g$%6RqPBD^IhL!dntw z>$Jv?%@#m~LwhL+_q2=3rfC>p0ZCOnLrYs|6~Uot{sw}hK?YYFcBtJhoJhZ>lYwJ4 zXL3&}NwF^#96Eweaq$^#1sj~SZ`I}n*@HbF4hjSO2{K6Jx<5mHpV~OERrCghb>r5i zzS*Oofi(wrqDF&O7oASX|J38Rz3!6M133^VskV7OE-zT4W|(!0NivoF>--fxalur4 zK@}6{FIMdr(IMkTx`1G@UxA_6Lj8!+KlFkUj{gb$3c;)2mFA`}I@TPlFZZ(^k+iDh z4(fh@WQv*rQBrT<-d{n0U~Ub&Nw!SX+*4eyzD_Xg=bfHEc^S* z;pRFqKOZ1l629?R&2jojoNDGM1a)}Y@M-dGdTYMUls^?F=XCOZ@D+ugjg21)e$)#o zIJAFTt)8k^99_G=vA<)L1<0o_UlZZ#G!EZHu#n1WW98ovM)`(n+vlz_{EgWxZ1wlS z^ul?HLkfPMCGtc@{ry|2@jQ-80Q^F^#poKrcdWU^-zn{Ar1?5!o5m<^^fYDE9{op0 zN(bL}lU?_nF@tETfyG#-G;n-9 z&D`V41D|M!yLjae!!K9K$3fkTsn)(SJWdpmskQR@ujGGOwNww7o+N6+{s8H55fa;- z_=5-+vue(2ni~H3XBR5P6jCMi`Ew%d2=mbpJ?GB;=$DU&Cg&K(cf&~X$P!7wQH32( zVon(miZt6EnW0a~jGoak4eR=6kHNJ0`R|zTSb-8Q{`iBkZ%2sLz6cgR97q~C^OyfD z%A{uDA}jg*(0LcPs+MG85};7Kp!`|qkzG9gGOrNp)~ThABtOPqAJ&cjHJg+nZqUpG1bzQN^Hd-t0eIhxstKh z9Gz{Q2av&}{YBTADNOY4OrtRfM3k|tJpiC`sCGTneh1o1t{u(_Twj;`6gXg57NOb| zN=j>iL@s8ZA%Jq4>7Y0khq2{cX!n;D*;Wf$LHrKKI^r)~^BI9F&=334q%pes9Gj+Z z@Xl;HPrk6ph$8!Z>vNJ*8DhAN%h^r_Mzb7gO8VxC(5V)%*96MJNi8I zpT^E&_}x(NGVGQ9c;yhIyFN-{Hmrns<$kB*6X-rVnuAYl^hGV2Zh=oQ-HXdl1=+k; zQipelWc}77B$TVvMl>+}U6HdaGy%4cyw_T0vNSK7g>b%((H^ZRdk?zh>d+3Q``j)` zB@-ZigNx8@Gz2ZwR(q)eSaf9@XLrHc#{%i;7z&?PGA69(arbx4?qUXaK}ZO2 zV-(|DWVa;LQk@F`4T}7Lx2uKUadt}Uraw06469*KpOj@4VCg{Qx^^f*6a;NfQ+4d$ z3yZ?c9?13jiVo;*&Fg8uy%e0{x~X-^9v)fy>&A!b5H@W6x{^WuB!yZ|Nhx1iu)8cL zE8|(SYxW!>R2+zt3PJ!ZwGVre6dy(WCrn%lpSs}=dfhZx+YQ!FoY6;I(D>VBZ|dN` zu`m`dxugh-U{_d@L*Rk3)E>CiX|aYyt}_>Cdk8~5{Im_fmSV@5E$b}aJ?YgGcfjO{s^mTH&Xwz9&0K3K`EIn1Q>ef&hg1O5 z-eZYy(I=^I%GL3&<zvW#Qt5J0}`ILZ%$J3w`GoWfsRJLC5vO`9v_X8$NWZq^rL>P&=JpoA|3 zY#^O9SOX;x%fHA6UAGhLyW{?dqRngLjWpNB?9+8Snj>21ss!pPZL13*PP$YLj?8a2 zk2yv@(-rp~us*2D=Ibd%Y>npo$_p2NEZD&6$CO_y!~yCIItSzEkL*o^>F&P(b7~a7bY|kuG~CKsY}{!bk272)`1b|O z-V0~Ozz9NErSs)+%GI+`qOZEO#}TA~>NsHc&S=fTNR~clgNk741|A4bjLSdTI0nBY z;EzXJg7&MQld$K`;w}?!AG~Ln(KL(a8;BMD>k`e7>>tNk8H5x!-{e^l0_l>!B5n{# zAKTJ^C2X?%-Qu=+#NGKqt5TAQAPpcy%FiP6OP@sgA-EG~lEmrop3Fb_#-yTpDe?_9 z-Oj=hEHdq8%5-$)mHD}R1j>fdm!`Ot`Wyy(4O-5_cEHF_yoE3c&~vQ)A+r6wt}tw0 zZ&jPVtMb;wq_8GeO6fo8m!n`DXPT~t&NtbM)0oq3++$_QHhorNS{|mi2|PORoEVLS z-g<(VF}|QqSrssYylO4J2S&{jOp1rX{Z|SFNjBGlryk+}gdPp`-oMXlJ#~v!{9(w} z(0TY`J*XwjZ)76Z=aHfvcH6m4vH2(}2=2d8j<1M2GlK+0k*D44say!*d z!G#)xYdYMCK>?VoU9+fAofpJTm4?Pxj%e(jFnpU&2*kPBoxV-(_(}>e3}KTeb~8Gj z0Gi`B$`k>(xLSiHg#QajpZk&KM%4L|6@ z0cSZhWMN_a+DZHe_Kr|wEX}(p_C@T0Zg!9*M4vjGETGQ#ZW=e@O4%V^TsiI74bGVX zPKgDTSUwnJd{#T4Yb-xg8bL=xFq@EBc0BU<9$n(%0=l$&XvBuh;gGd|Kdn3}J zW8xF(BD1&4rp|pum}9(nTO;37`cDWU5e-Q5(a~)gm*&PYh1Ir2E0?OgsOvqtj$BFs zOj=~&U2!CrU5M9A0Xs7!vWx>v{8pb-cz_@#NfzC(SZ6a>GGQ{jZkAvHt7muCLXPMKa5D_QiPE|M! z@gmev`GzK$tfYY#!78rs&900Lp7Hf?bY_waXkOAQRelZg;Hz1wr$LMUOIGWR>T9B+ zwD556(-{o`?Q*TI=2t0rLGWp(*1kLbbbidr@}NJll52Q@!P}#OJ0aeSyO)wqgSrR; z&Zu8!najDJ=h0Z`CDKF@kQ8?EMhJq`51y73(%Euvz>*PC(Am-wHZHL;bD6_XZZ2rd zf=?qm#T^I@n()=+6E;l@NsHZS)Q0tXd1Vb7aK`8j-~923sB0g}a|m7^7VwLSdg=<_ zf7mTZ^TE?cjotWc*}4n%J10`QVW38>SgyJP&`X1&1ptsgqV+I12bzrJ-q%W+u=MxA z1=9@nNpXdiDFR=`d;J{QY_w`5#G;2PQXSof1f})v`tdD|-mg|9U7q;Y)V!&PAE?og z?z&G&x$nFcaO3GH=%K_Bo!PvY_R9Poxnx!#e326Ft?EV{DpS87zp8XYT13(6X7_x; zQeOmSJ@Y@tD|1B1FLmggUneYs6P(I*LOPlj@+$kQE;}Oloa@_^+E;CJ z+qfHO#+$b%S1QzRe$NGhM?RY9)7I7bN%k?A9Ah)*}h2wR=7dNgx${RAQo#k^#rKQGD;3R;1dK3q_%EY|?! zS@S<5;c6E9{-xmR98u3ne8ZL?|66JE((ZB0?e*W2dX3YHx=-KFo%ggRCE=U0 zmMnSkzxom(-?_Cc2q4oJ+|n3UzdjDm^UY8{$?crssBQaoa*gB%*}y{s=oPz;XoUG%RNFfoweXmiqwlRLpg#q?CNWjj7ljJb-jbJ7NX1FhT<@tvH#imn zlX;HlLybLG_F@doqn{H8sc^E?sJMh`7uBeC!R_W~eiXnNvL~bm>d>M-y-|`Q_7Kgw z>FN~H_m)MU5+D>fgFdKo5SCx-Od+>u=DFEZ@e*RAw=)!AvJRnz4=C|m@*ceGba#Ny zm$lRA%X=c*EzvGR@xsL-VSo?2%V7+J6Il*d6soxvO{mLK-?)bls1rsXsrM~bbSPZ( z;j*?L)oSjmLT5=Pk&4uR@Q$FJYtkLVr{Z5F9;8>80DIkt)B(lRM70x^0-{zKmdzbB z+A(l@`J%M>g%<;eMx>;vI2na!KEFdp;#O1&%ji(;eg5aEz~7V;l!Ri1a9Noy~Mjx1v+ z)G22%(9YbrD-2_@pA+Xs>!GUq|o!+d(sA9%S2MTjakQ< zzS>+W2>1EZ--?SD)$FbW>RW=#u!BfvwJxtiy=|^U7M7q<`YH8svi{^8Y3do&*cgSz zKz$BC-e?nL)VlW6l_o1c67V4h#zsRSB#tv^43CIF`iYufnum6p#*Lfm13{jZWM&Fg z0gU&bumGz;rX(6iI6eXMU}B37>QMT=HX<(ZH*=D$U8ta#c3%^ZbLE_f!f<)M=0p~N z-b1qOEf6k4MdX_)z|A+!DN;`#rX42*WaB!+=K8$#6iUiFD8*_VC%;v?ckE3mE5493 z`NbzdvjA)0F|{r+BarYKVr)G{;cDv%Y(?}Ti`<`rPSLnCS8-`+QpFLXU2r}%{`jHrFFfsD8lLgh9?DV?t;-k5u zClL98gba!$;X{^TpOW#lti594m#XktnNA-KfvR1bHc9-zy@7e-$G2QtL(87v5Q@-f zLK8#LJ9R*zK7!~a1RsRr-TQ}tYVZnQW4J}QdJcvR_%`Bsx()gv=5Lg>?ZZm2wc73O zSJbW_dlgX%2R4nVXCWc^+a|1RaYbx!IF3fIF^9&3ck2C}gDC|Zk>8=zbROhwY!4K{ z#BE2x-BD8n&BHNowOj~(;c1Ci?tG`-pm#GXRvWB{eqr#Z%D#mYMnvcOOwJ|IZ2WD= zIFLGJ;Xrgiq~?|oCsyErCqNFNs5%Xhnv&~0Aa?!O@!ICU7@{x_6FkAi*q!|3ng?n+`d#6h+BUAz=D6 zZ1)G#qXBW*;2|8^gGaERhS4pwmdHJ?4{zqGm8c7^befhz#+zJ_r_cZ_`IjhD$oEG? zrqNF)ZtsCo{rP?c8VAfk+~Bz7V|q(DQ?a84CRQ%`zeR2cl1m!xQPqf|PV^~f2Y{yN6 zkF%K{OhRAx`>39z@NamaHqLe(@T!!97RE!&`e`wcee!=sh1$y=*JDrs}jgY)6J%2lk80ryf@N6?oP6+ySjB{PtFIgpXvL` z{azVXx&w0lHMX_UV?ADig+0n|#wbE@9F@)1NpI7Lw&l~r{bOs6b#25S`2QPZTqv0* z5R5+l-(PJdJoJPc3KJXCKhPP2cB6X!{pZBb?4d4n2pg4v50gQe`DK)NTDlRAF)6rn z=DT<|v$-L(@{VluroCx{eAmMes(-cm7Y=mvq`NFK+YSdnFRok@L_iYLFclDG2tf}2 zJMwLARPhk#oqcLjdGYePO=UAkD~MURVFw}Ef(Rua10aTUvcr^fPIw0WRz>S*;D4Xr zBfVD(>SXf`4nn0K_R|oVpr0}m|9jeFOta_r0mC?fI2FR8S-QV$#ZYoFrbyNi5R75n z*ujti+538mj>?z0)ilvC+E+kyq^yS*4F164WR{=3z;45pThQdWd;fp>Nay4ocE{!Wuo&{quv@@kvA2hq^;br`E{l9ia zUHs$sm+~k0hkj;v<~qD?nF2*v_iY&&gbUcbeBIK{7X>KDwQZ>qaoUi=UagZMk4f9} zQEqOE(1xSe=q4PwL$^6ab%9xF|F$#5nKF~B6KA=iiaO2wPbNNccJB@Tfo*URoq6Aw zONAxhvaVyxYJer8jK4fr-68wK-n_Kk!b2Qfb0vd~>K_{Z0N4_`YKekJ)fqy-41eEV zGjq&qT}u8Hfg6WS!KL8s7;epynR&c!6p%o!E!BRNxZXv`Lm{hV3?P+Z6-TAX~lg`e+Zn> zs}9o*3xt&YDPtq_|r^oX^nQOuB?y`OP^_yb73_)!7WW< z%YeX(CIDVAbLyNd2{x`~ZM!lOFFwJ7|0QcX9A>qiY3(>* z3?geb*v(MAS#&1Wi)Li}yqONeI>F1u2b-?sOnI~kR$$`PdQKMP-@C}y2r$!Se`~hS zPv(;Zy_-;CLkudsbH1QYrdKZR30D%8rG`qyw{ZY|^S)>A-_OAScj6`E)8^x&Yh`CM z42X$pCCxTVgc}y}m4AUOCtUmp!_)5ppbeRIslY%a{v>CE@W;C@noTZPjEP?+cFIJ) z{bmJbxNmJ6?M`g4U~@+pklL<@yDI}INc{p*vO`nfLB>*Cu&7S~aF#rO5b1#X<5ifr z2*Z->+Lkz0KEu_t(cm~c=pzu>mP~B#XD!p3k19qlMkhcMi-)p<^|jJQ`oDRg*Ds(- zLpofCB(9@xbGSH?-!0AQm%Nh`m$>2*?~X*S6++%Z&Wlep@{&obF~RcFe|{u>`f}Mg zQx$cH3xB$%w(Zko9|BHi+0A=2+4Y4zTUH~)VF`a>%uXi8V9LCH+`j*%TpJ*dSh*Tc zk?BQ$;K0wu7J|;lRNOBtEb!gRB^s#kN5aJM&iuV6KpJP1a79WlVB;=3ddINqV%1;< z)7c+fSUfMhkysZgc(*6)QQJ)Og&ZV6&5>zeRzB3iy|s^AX9AWR*IMDgBBO`Z6Yn*~ zx!RD;dh3ZQ?2sy$q=7rJ1-%KJE0hf$ZU0)sB0Z_MZn5&^d`==hx0OC`OZU-g_|L-= z0`}Peb}}OnO-j@J(qxJ8vo^@C{@b~*oYrEELH4N>{q)2G;J5aDmgq6#J=_>4dH9>r zqwqrOrn1r`r1FpZ{GNT)=C3KI~cxEBOkM1#iG8fUW zIhGh`t-JSI0p(~TJ*vs)7M_Z*rgG&aAV{EdD!|J=Bbhx}+@tWOszI!_W}_vMJu1`A z;y~x8w}GFe+cH@Dwd$s|`5|Scv!dxO!OYqd`B7Kt(HofUm~J6D z`GdK>EWr~Iayl>ghI#=PsGSnm)g?CtS|F@6@v95U{gbU*Y4jb5kr4)^6GdJ9zcUUQ zrR>)7!^Hot#k4(sNdY@%$U0Ff--sW0g+m^LM}x-mB6k8(DGBa;xxWOoWJI99R~DOg zcA$^0|4rBucD#RAehx?vN-U~$n=(=56Bbz(Mcpypod6IJ<2g$a#Swi-9NI~8iqIfK zSnhiE-@NHc@uLM_LFJ!pjzC#^_>03G{oywy@i^lH!b#KX#?5LBs-v*GqUJ=iP_V$? zhb%ZvZD02Qq6#6R>yA6zESmvMp^F{>LM~yqi0qKgi_2IU6X3e0 z%so&m=fe=L^L{9`TXO$?om=NYJ^(&Fr?%tlvYR3NhD4-;vcw)F!(WW-6g< zE}QQr%>vVD#O}9t!QUwgf47g4gf$l~M_QPGWG?2|`cb!{(F=|s zjce}JlQSF_r26tDvzU0|;E^khAP&XHVkB@YF9bAyq4=6ZxhsEZw6Q}GjIwzI{+WIO zy06(VXpJ#j`&*gjp&h4s*X(D-Iq|Gn+(s$;l|Zv-OE80DEr>_}CyH13tw{P&DFjT! zG1@~~-Yeycn{A3V-izIwGA-lm97JrLBgr>sAUMW|F7{QO@f@9oa}XLp!P z;xz1i;(y}Q5nvK?T>75_QE#aj+4@c`VpvyFR_X-Tm+xJh0J5bhxJAyyJ*&O5xUmW} zG7;?AQlKtS9FJ3mc!xzfX9fx=n@cvc(_GuC7j(kl!&p#pqM2$rpB~vSu zp8IuY=aPqBnE*h((Ncz7kEd4$TF8GY6}Ay16Ol18>Uue)IGS!d-0 z13w={oj7~A6-G`?2VL-9D{B&ix5hL&zpC|JCN8_1GJO$0elRRE(1L&l0zjE53*UC% z^Ul^!rGj{{jtLs+ll@QLcCmkuL>CW=H8mx&EV5P8u`ovGpaq{$y7{Rb4v*@-ujnD_9e$_M_&r;IGd$Q&9kdyplDRxBp3x%+zy&^vNPvvH2=Ea-6JH-@i`KHt)wtE7a2eZ+4T_lB!4M}RL;%0CDi$q%?3OII=52t zK{MRpa#3*q>DwANY^-2?Kxb-4?1u(H!^FP$Cl>x_>{$6I&6U?;+?%>5gZpm9R>riY z0_x+2ayMWeH?FVB926S?12s;i{Z*02MDYBir_Ed%&vzvd!J50s3a<^p=rd zs&F6eD41dzmflS{ABhLkvz)*7>BkSnik(m1J=6!`2vz_Tl6$1NxgEDsG~I$S4zq+t zd_?%u0m*W35vvquhQG_oe!XifH;L06faGDEYr=OoxC%%MB(8ie{ZRfKbxSo` zC#_ZG8D(6JF=5`ufmWa>G?(-t^1_C@@xC}~jZj>L0uuiLrbgHA$~C|k2{DMk&zy6e zZRlQ{8DsWI0q;fO3DQ+U2XwCWBXr)ZxL#BD&+m%5BQI(TdzLr|*Lucgzs5qLqI#|6 zo7T3G!SF*cI#rPhq$DI|>FVLuF!oPJ{#`OBHJT)IWc|o(rJ3n>Jhm&hxSU3Nc%=eIodkH+1t_QDIhH@bz zvwIG^I@SIF;lmb7w}_ug0S4fTy(ryE-+O$D1H7E5;hjy8qCdRVQogv&+b@GNjsM?Z zG;crLKC@blRyUoE7sC^3K^b#ZyY%VW6$XOr3wHeb<5D%z_0hapA;RO7_)h#6kdU`jZA%@z>5hY^xER$mp9;Mg|6wc6c0e&w3eM6 z85%#yZ>{HMF}{r_i^6pK?G9(6EAdy9E?h>)efA0q<69W{d>%E}>VSNvWcTaUzNH;p zpIn}S^koiLWsQ>nc@hT#vIj2rB0n23baZS&&V~?x-R0e+i-D0gw{=Z5tk8qy{R1-s z$>E1M(&9MEn0nc%-kAKM+%f=Cr%@N`6|Z}MIoXTVjo31y(fH+B;cn16wR38bP)sbs zHlzFvmerta^L)J3a&gRlsn5M!KM{7hV9=`Gwq~39^Bu$9Iff5yS00$mFSi>?EhMOV z^v98DgGcBz{VeS2<=X2uml$x;TQ^9hD~wh3K%h2xK|S!(%I>764USMRpO8e@HA(J+NcHv8vuNG0_w z&$>8fcg?K8X_&7xj1$7nGe4J@z-Wkt9te$T^hY3+4h=jCEZD<${&j0lV|!#t`WTUx zihq@29;4qgxQB?4F&R3O6Q`GlsVj*FF52A%uOJTV!X}%SP)h(Q8R{7r}P0iRVto3xG&F= zMGx=ASQHhyoCzs`iz)#qkiJ*p`4H!efBD^K$sOD53gIJI8VWEGY z-K{0RUFF(8&a#v^(kj@u6G1JD^L>+h*$^fQjcv%wOa8tn>~u$ks8mp9)R{-nr;m+& zJ;8zUZb0L}S`DG&d4gTg_(^okZlArLf`nH;d}!DiS~uAjJUGU#eX$8|_tZxD5!KX9 zQ$#Vsech3uR`mV!W%jygaA=#-B2o$KRMXTqBtI&nNs#0bSM`=)p-ahDAoIZLA%H|M zXu)g#tk&5e?Ik2g1U3UsRhCnxG*U1EIdJg&$O~d9XLC4ou#H69HbR2XEhQz97CpBq_zK!1TpS4itvi* zPgK8s;jpQv<+y7`$~U0`J+wt26c3gP&vb{WNx%QyRR^Sgt6E$FUWi}ssy*OtgtlXF zA|J*kOrpY$wHQ2U2u*EntJyu##tDSnp#9sn#Wlic>B+8D84_%I(6->+L#da{E|H%; znImj-eXTvUc+HBO+tBDW^}s%y_X&D<_hk6%!%E}&M=3^>l{zMvggmmwms!bey%|)h zsD6FW4A$RMaRY*5_>m6qUYoVq0RK%`y=_|1JWzT^4OnuYdl%VFfXO9^IW?Oi90QJ5 z6whiHTj>@{Hsa;*lKj}JvU3w?#M&E!2)eUT;mKNe^0fdoBY0liR)&#lrSpHvWxZVenB8wHv64vi^v`tLFjQl$8Vl=C=ClX^yr{C2 zL@l5^`bin{2L2&i4802MnmNJx1+aBWhVe7}$i0-ng(&4UvTjTVG+GRMvpIfy!qPll zj!!hX=8ujY1bS3$1>Hm zI_wwUQvZe{5@9~5mC4Ay^XMjfru84%$Nx)X(oOxKt&Mg<jC>p0I+#o zG0mga^Q%ccL_FeAvYy^*D-XjoCRsvD`(ANO9Ut^57%XFym zFkG1_8So(w|7q9>W{B{UlI7ljbt`lUS~Y?u&8=OH@9sg2+>pt-K)?yeDAHNs&e<&f zJh$-Sd_ViAr(kEg(-y`kW}V80A9@1AXVmq6v*CZ|`=sstkWW9D2IOwr z8g}5vhM9)v5>Z4q%I0vk+Qc;9-!8duRMqkizV)=P?6te-n5d4HjWz=*yfHzQ9jD~7 z`drlejRN;v@48-z5}f1=4pjz;_p$#l-e-<&e=+>CMK4^L$EbaC1-PLfeEdXT6N`Wk z>{8LdzHE!<|A1?MY7c$oUz50L=xXewG~P^X_7k=El+0FHT4%+oU-JF&1$65z)kaqm>3U5qGOlC{N1U0>v?!A7E%v<|AYHo z^(@0&rIy*^#$=FJy=%mv%_>MXOv}EfsZy9edY(pkWS49rM7mXPk}JOcX+0N{KIUh^ zQ#3^;za8LY=QGaaR{ODKGl*ETg2IT}J)kZPo=8>MR`NCXzQq^$<%s7sS}fF01Oj_- zHC2em^(J$|`6&CdbMezAX^>&qZe23W?!~Fr4ZSoo830-B!|TT`2jdxlXof&Pzd};B z2)vN(!pJ~RtH7l7*bmXtgvx}Q3C(YHKwlVkRX&~N3F7auZa)^q&|wQ?V^GI%KkfDR zZfTQa^$<7Z?#_>_ZkSecAkehjxnAg^f^kyNgfb2@LxOZMuj~qy>f!gaH$>LO5d*(q zUbdx2OPLx1?pw*ElPyyH^1>?z$Z)6l`RaI)7MQ zQ*I$mw?=KN%1x$wTUE>8HRncRN7zq^OOdVj3@?m)Yv@&e60ixmjSg(z}<)&)uzb^2&+MD6_+1) zBDF6RFA(vbL|U?@!JK0?>Q=ghcNOJ9i(Hs~<0InzM|cR%YB_R+2L)D{3e=`hs3uah z*xNk@AYR!N`!(zOTICDm2)Z4T zM09XlfvO3yJ{~;tyjV2x%Bu|SL^)(>Hr{)OLko>LBUB!Uj{WYvYsUd75My)xx#ehP z;!TKzfE0<1DWTe^QCNTvTdjRdEvknZh z17Q(qz+l0(?@b^TVp>t#9!I1 z3Q|KHL(!xuUdL$Q4F89nhN}+kX4joS~ zLO=UHA}%!sCY_>4Ftf)XO(BoDB~7QyI@am-gPoM8hwYF*6DYZOUU)Wy=5nJr-ao(e zH40}HpU@O2!f8iCn5RXt#$io(G2e#?B&df4|3CB#a9i;vt>pEIaOku1^5iKs<3bD@ z&TgR#Cc8&GUkHqGu5;e=s}ZLUC|@x^1SlVAdmii!FC@28Mj_~HWjbTNK>yZFZLVlf z-t|UHlKE|W|Nr{tA!7W#^r`d`WkbJDk!aH_Xba**> zMIG$0iOYdnV$4$;t%8#v*rca64RFHyh9kDiSQT#0-WQ=tu2H+)zWIaaI0ML84m0Hn zz#h`RLPdb!O!&tVE-68W&VV;xnr`u1l%@x-(A#v+fgo7wmRoyTt+SCRxK#qnPq>J zNAimFIvG{6ztd+4i|soqsu_)dX76PUxfiz%eX_XP!psfdn6c9gyDUF`bXd*TO_7bn zptag5(OVgU2-<0ZP2jF;C0WjSn#|jR?oiYo1Pt=u?)*Itr4cG=_#XU?=UjqjUHmP_ z=5yOx$|dD?XUHytRKfzM>?|^N+1NeHQ>bvEspQ9CGaJ4^YP9x4^|x-bVc3xgS#Fpe zna5r>E{pd_U6enB6bu- zzGiyuk(=0VF%;UTNm3`I?cU*F569^ix5kbH92ac-O4aCDgXMheW?}%+^bZ+`Gw2 zTv*VD)ng{7jVaeAfhp`TAm4X%gr)k<{60m+5Q+HrHCh$PhV!7`G_uz;#0X@TS7T5Z zpdH5OfE#0tzx+9G%9Pq`3b|SAl$tmnc)zT>paf%82q(g$Lot5X%&5)+#pp^;!aVmk zoTJK6P)@<{t$27@U4DV6g2!ZumY%ov+lNEABZoeo{y#sB;}bMG1io>J3&AzlUs{=e zSQ+8AM%r`YU%rPXEdOyka~mJhfuHLCK&1(I9^LZ&x+^s*Dk=d+-Y@P9aO}Qsh|{rA zn1qwotK`{mFjN2;eC2d{#@M&kcgtv05Ky4~AiPPvOcUb8bT{nT8`$7xXs-v9w9Mmy zqY~!0ts8HGk@?^+j3`5ef0PN<*#b@Y4^i=9REZ=E+c%+i5$X`t1rDAroTz(MZbFa8 zv9t!LJ2R|!0sjap*Z)#@c9*!UA)M*f#M#VU8LT#VkyZTdta({D%ChVN0ig)KMoJ49 zlb(~!qh=CX$C-|?hX;jc6VhUD!@<@+$l)h*qm~58T|m?x%%|7% zU`I6;#h3dKQJQT%?xz6*3@RHZ@I)*wXP41K3-19-t#^^w=x*EKGX5nP<42w57-81K*QkBXDh{&{I_*Ca*)UG06Cb!TY@i4L#@GK;cj zw=Dp6{M#y+)!vV8E42v<_sC0M6<=c3c>t!X!~u9WpX#JJ()!n)6NJL9NT|Bma%{SP z81-MhGD{?vvu2R(vzQk{D9j1mGs_{Jb(gOdHuRx*ZA3N>I`mTAyRak>5ZNZj2f6y# zLDC>^D@5>$L(&KA!%2-kZZVh54J%FhW4>1jz z#h)<)cfV-cETT@iw{4bFP*vKU*7f$;P9|gyQbZaHl}rgO!<dfEfz0vsXX3*c*xE=b;osflS^#Irr=yUsINqiU1u+TO9y(Z*^5`&pTVk<3$)X_w zpDBtcnUm{?jM>ABeL9~f<-7JEsDZus2PHl?dP!ahznaMEuulmmCj^wv3#!%W`_Zff zTb8MHM}7KwtZg6qy2P^HG{>FrK+gr5U1SimF3d|fF`3QYSBwY@fwN#f54|x6JP&x{ zGwO0!{TdEfELs_AE-*4q|Fq0Z(KO5Z^LNSpW}E;3VM9PLP?=q-EJPA}iYR~rHr3II^^bPi%^}&C7wM2*gAgW#=M`JV z1^;mZ>4XA1M@#66xlGIFqq@PR42FAwSA3L3%NN5}V@K95Rw^b3gF}j_zQSZb`YUqB zYea&4Ff@nt+h{eei=kPuOp?>#18D>qrGQEg0|1T$X0rK^8n%xQb_(2Xb&D#K!CiXD zEGWzkySwM|X~Nn8hLN1_Y3T}jQ6Vr_C0P4@|9#j>fQ@@Lh=i2h0o#1mp*^=q{`mF7 zCR&lMFRPE9vP>I6HHkbh1TV?qlEs^U1(sb?b3N`{XMlxJ;RIaMBi-jP`mNcgohaXN zQ;RAS9*)9it%rKCsDG;mbiP|({!Pv~dJp5~?S^FHq^;~$YoiWiyvxbO}l40+=vF`Rn$ zDx>XaLo$U*(P)kU8vNG%o++#6qVzA+_<-WP(wJi6!$ogNk;n@YqufIDCwp>krg7~K z+_QkVlz=vE3qy(TYo${#ch$F2+_};+)Y;`jMPz`asV;FWPBQ5rc3PYvpEv-c_nt6* z;N7IaHLqz~SOUTK*u5X#fRe6Ni8=wk(j^q~Ho5lC7&~_<2Rc%a#lw9$E=o5xlVK|a z05aEd92jSJy5EiOAY7IimH}rWP{=5;?_za1K!kWvqE;HASInHhs^|HK{MZ)lD3nYx zOK`-lOxPclXwNyBdX@NJt_4|~xF-Ze`G}u!Xi(Gv6Hx+MSp`(=VRyqbt*jvplG#u{z%nZqPLAnaoqysJWQ{hI=?i<;Z$)a&)QX!{Q^nHIymG$-x+I zww0c*cHqpjgXaDVRGs1BpNb#Lk&zmuXz{Znk<9pOl$my51{reH;-J!0-b{d`fbS`- zFnEtKoAa{CB1bEWr3A278c_RjVE;#IJ7(hcP&`FC!A>8YR`-PKQ}LDrMjP(H9dcBF z!DUboVUB_BM=GLnC1DqRF;mzYgox+z zKG&1K0qFH-lybidG7FOR^mrrFHX&#HMBZ;O$JB+EFL^a+_DPxZck7@;MjEi$CWO_@HLkdcf~xc-r;WJ%Ffw8a1Z^AtsBM-4Fv zp+kQF55ojm>)NAs z;mWYV8>jV7E9UXrJbCI^7nXgoZ-XnQ!6d)jD#t>d?&7w#Z80HxX> zwBg+@`+Z1QxOlOShGv);D)J*re&e`X3Ag@&`Jy|1XyKZxe68f&?^%tL=pRp|6@KB| zCgJe;UvV4H+rsdQyxYjBHxSLYe(BG7J4T_ z^p`Di=+t3_qw$n&Q`3BjHM)HI;dW;z@+_``#&pfT-8rwzYO?ASlPu*>6T#FFAq1;kt`m;nlbt2l#IgWGB{g zesXX&W2`;t_QRR4&jOA!r)sEZlZ;>K6mN`hDx27cnZkMKO(t@6f7 zUbOuAqcsjT?89KDzappJ$Be|9)YkFbW+*K58r?C~W4Bj~OR#KIZJa-RU`nLcDMpK98DNQawj2pc%n+{*Jk9mVb$FL zU9YaTEAp*9#hF|a{|=0cw-AhrVA+wrD?VwOOYJO4B98bCjqzZSW?#QUDe zv{qWYHdT*pgv%&}B(teWsnDuZ9|iCIynVi|zWaWb=C|UH=T?7dUj5hqBPRI0L!-@J z4n)AM_FW4q4gs%m`2U)8;{vUdPZIBXGxPVo2-D?{y;UH=8h4g2va3!?*~byde!L*W z(|E~$_D&xBs#NL`_x|1okTJ`7)q0anF43-a=9Ym}Nz|vH zoRC4lh%V3Q?&{w|$LdOR07z8AYFMV;KK0IpEC(UT`#nJyXb@b-WQyD}a9<-$>`CHs zu46TTu4BE}J&k6xIcC3oLcMKqY@1IUZP^c@Je4OTgyL$L&7q>J2f@u|stXAkb_@JF zd~pym!adKoiLn+v9%nV)7B^#;a5qdQd~(|fW>v3IKKsdUw{+p_OPrj6#B zxdn_daGAW}Y;!D3HDh=-w7UI>EX%Qoc1N1#XyikWAaD5HAp%f?>Z8-C)s+11%FLnA zIX9Afxn6R^Kkxdg#)vNCi--t7UKD}Mqg#BK!KbI9kTbqGpq{eJmOrCQe?bh5w;DMEyL+fjlzL@VjCZTxSD`7Lh@>Ka3Am zARypWk;lYbY#uyNV9MF-+th;vdl=M+Ka^{+EhmCwI2wBO556NQN!lk;5B)*d#0DwD zM~_283y+M;nw>KCZnapNO18TATsWRoK)fj)6Kcp7J~{PakXJot$xJcEd#d9U{}QCWs7a zAs*Weh@b-Opqdj$;_ZLopqC1>@r{cvy38X*&E?0kwh(LRXY7b&GCl-Tem&R4<8naU z_oqWbx@=#!Js|y4dQg5)P;<)RY6J`Si)kj2{Kt*+Ev}N^zezSJ1SFzgv#e5L2My8t zJyw6Xj+~--2d6cK_?0AGNpyeaA?~7eEh5sixEZr^?kZ08@j@b*0M_;E$wxVj5(;7- zciz;L??oo@{tn%7saSOm4Qptk=Z{jKVyYje}taOXNlR0w3%3OY59Q-#2q#HS=1vEiS(G`IYy!{=Rj{qTIwY zV{Y2_LZM7)YLeb*nbXpD@ZH|d#3ZPG=^1+(y(829!r~%wYcnpf*?P2a zWB4=_t>4v~1J^y_MfR2{T;g3J44JF0S2c7O^SL($n^iY$zZmakvvSF?L3iEzQkI;* zA`trT7f@zG-&q13IySBw&Zlbd@Wy=Ier|y`TiKTK@c9wxb9g}@nfgxf4Z}aQWB256G%Te7 zL%yakuOGA5OQ4dxq7n6{FB_(d%$(?4oMhW#Wa@ivlF0_9(XAN@mA8Uz{0K#li*4Et zx-7H^CE3|u#%~B2PJ$;P$jC1zf&L#lsJCpPX5S=!0mt2tsgj9xilV+#>^B|#jEw5? zX&9S@uKxqj6mBN4dn*f!n?BbAD<^~i(R))KcfI?>91F+WL24H;5g_vgmiAoX?Nu|@ z;n|Q zwrP$>Kq$z+3`P>?#N;>`h7%m8qAe9ntE&M`nUC<_Hee_Fr(0L^ELKGR&JnLK}ypKvx*JICjtR zZeZ$ZlCyE|(;o_BVJYk-v4+p;#-<1$B+0fJ43=9kwj^TZo(oy!{xgtEQ0C_~!q@Fz zdlj{m0MxL2sjh88!B^L3dvZ|YS$F=lk%$X~u5{OT84fu^W78OIvomK+ zaMpozS_GUnR`mxA>)s=@p#7^@>p{}nhJa-$gmGZXa8MCH4Ezlmk9exG5;Q}+@zQsV zD=;Pmq>R~z`=M|$5N8Q|9L>Ccp^`>(iy_ias)xDo?EolZ{Msh7K)t+yU->lXH-L;K zMlHd(fIcaEJp8;xbEE>$bb}+ykQm0TD7UZ;qrf_%woPBvqeSVcrh!@`-3^ZUjv_ILVwU6Kzg0xX{}t(?A!B>(iUutJ@NL$flQ)}+u&ES zD9hnfX&BRn8?fpv_78KPk=k5N8?XBS`miZuUt2cE4tG&`je9+@;w&6-j^C2?>B~QK zGWT6-n>q{_DpdYjL|u`fB+TB|lp2#=9bk^|{3ynOw`Yeup^e-PYr=GBZ*H5}YZq9< zbfYjOJiY0V?vF89Z3Rv?m0?~4g2+sFs6Lf3kaBWV&SwEi82Y_BVg9i-<~wUl;rfI# z9oZiy{t=Z`Mi&Uk>r`1;=5lNQ{Xq^YsrHiy(K=Uu><9ZdVn3L{-x*^C+LLfVuPXNr zB^TCg!U2-!R~us-=K`^}GI8slU5=axsOILodh-3{w<_?E#+OV%%P1*QGI~LbGIgm+ zGsF_%fh;L@tm5ZRg+Eq~A@l{)s9uEycWwZXz=ol3d0w#t%9Qtd=|B0)C*3tItFz*KvHSRoZSnSlCl(4xp?41Df7Btch6&}by*C$l^5FL8K4(!q zi_h7;S_4Bf08T=YLxWV{+;xX`c7Rpja8cL5JG$htr1>$rQ?PSl3~n#?V4ZV*R=;WW zd!Ki?uTNq3Gh^Da9pgpA)%7p)^#DpZxUC@Fs^E?K!zA(eTbFMCA-L9AUm?|-v@?)^o+>?8n_Y{fzuR%wzIGRTOlh&HZB|Z~3EFRJlIdp^l5hXt^cC?l= zXwI_J{$~DC!}`-*$3ckXAt|=8pttC{Ha>Z?U)>rskN8Uy<%G>A|I3EC?)FO)F`!;O zuSo75c8VSMWt(Yb5vO6D?D;iKklu^C1c$JT3w{-HGV|m_=*FbIfw2C7-RoW_(X-m3|wwg*8on4HX@6+CeBV4m*4Lm$MZ6*inJ4 zRRl9g$cJ#oQ!*!TKG3VJ&Exvq{$4SSu@x>{nm|NUcFYB8aRWKCZB14`ioFY7iV#=S zf1t-%jyVNSxcwqOm5%--#UWP0SUO_smp#+Ca;Lhq@G?$T(WJM#guCM4TV`rL(!n#l zvw=_Bf|{#v?`_*$hJr)?_V>b>R@!mML|UBo)8ONF9WCDKSO-17DSZ!Diz5%}WEdPk zb&MS;3JS&e?u!J)>a^n^-gFbzyoc4b73t;d}*a&?am=S!Ad~JB| zI3<45&I@@i1{8;dNhMJ7i4c)}cTCB!iQcw0cLL))N(Pv!nsyT7+{KV{_d^7EX9;(M zJ2I+yC}_f4lKY2U(z+llX2X_|_ZWt1*m)vWxn{G(+>;|yoF@RZJ)hi&lcX5A#jPNd zdCq_~lM4vvyGgje+pU?Gj2>*YfWvL!kGHZTGWPLBDK{1lOp;RD>)ra!5dPej1WO}_ z-AJ5BlP_@OY8*_tnf?CMRANB2gV*(}B77;1>(=k?V$7x3(P*IUFE-O3h6e-XM;6_LHI-LmMgPYF z0IdxHE9_6IyNJ|XO0Vo!J7Bk>^#-@0W>o{MsX#$X z+-VA5v6RGr#}EbGM~d{Pb>IgWYtnp(n^~6$6=FIP(MO{{d5+;;lv}X@4$rUcOQr`! z6qK1J(TkS9HmOWCLxp}=!2vK9@=q2q3MurLn*+Y5OdD0hSoUKL*Tv1g<|1zcoh^haR&U?-S$N3F_*v_1*q{2>5^lL2ZOu;owKm&OPBbtWB7D z0@ek7aihX@4AHms16)dawWDo(kpzVkMV#k6yCo690qI@+UItn67(YJa+%;1daM@Tp zL_fyG>I}5uccUfSWe2j$KHW@b22~`&eh@qY;2`d4@*qzJM_2F6UbgR=R~b*Z1~(<* z{#fEF<9mL-y0JuSon4t0YTeW^>k_ld(>;Mdl@6fJX9qfd+^z4MQe!BID1DTiz)r!h z&OhuYMX-Jc(v2_KgI6&RwL;>9mbIyEFq5P$5^ef$IGcKEj+IH*H=F@`B+YHed zxaFzdy9<$OMt*Zr46;diN1+P(oe$ezi8&TM3N)>h{ry2#WiJp~+1XU^MN-V0D?^85NnXXk@StsM(%+&r&`lqS zpdPo18)o-kY)90OeINx|Mytwe$nzl}g&huLWeVm#>JMbtHmx65+-xI7*j`K7 z=osK^oR!vznu79Jd4A!)Wf*WG6-0qCO)g&R>eiT2-(=%;(WTiGC+OlPIlD>_qRX>! z8DknaWF+!X>cf3;!vhM$<66C58Aj^}292HC_&S}{&e?g*8KNk=0a8BUBjL_hnE|wF zDCg4Yygueic0IHp?4|+e8hpdar(9hA<``KpCHuA(fcK~CUS-{oysthHBK+R>RKf#5C2kCKQa5LfPsq$_e}bRq^k1$=@HgHO#jK@Ds4G&Q*C6ipB{B6YRR4e z+1!5QIGXq!ZOlxm0hkI;WI-PgG@+umX8hnqmp?dYN+DTdw#Dg}S=+3HpMiVoROTX4 z0yY1%Pe{xyO(m_-QSnYA*0PV(3qK*d>I-Uw#194RXwC}`{aqX|4Q#y7K#l7`6A?uS ztwSP)9Ap9aYwX7Qz?bvwGTjulQ}m%1{g3{+sK8zM1R{w}ZYqUv>}kMGRN=2K3!0Vw zp+}t{axG1^sjuOcVjOUw=~kX-B`8|MSLRDd>~~+s#EG)Yoc}-~yoY zem)R^VMhS9q`Ep+LV;)Bm-^g&CUNbn^n18E=M8w&K5FJ{b=-}-YbC%J?NF&f1^^i8 z9;uUd40cx;P*|5W%w5h z@HdBu!J`1!2>eumtC4z=7mM1wp+N?yuqJh5OvD^D&$L;mp2}e07rZbu47oaO)$o8! z4vSfEmX(+A9t#Z|PKUYf5;1|YoL6Zs@SK-JavPk_IEXLOGn~FuVn|qXk;h`^yel! z7jdYUDa$plDjMgfd(C)BvPNBJb9~9vZ=#zE^ScL=YS^YnP3GpBkwo)%=#47X3xJ&; zBS04$9MX^U-D`$C3cAJlPWTS5{w(niBTx2C=gO>PtR_NWbi2b>{s{;K>}B`;;V8@%kPf1^Y^-{5=F&&rHl|7fF?lFuYS&URXQUh zpZ%Hf?Lyx{#3t`**qD3pMBi4IDo_{>bQ9M+CYl0}6yLQHDOg{OIhvA0woTOAR3 zuhUUKwX=uED&R%&lVRj-EaKA~02(JrB2Kb-L)S2;DjO^~3RIVt5G?j4Hs>$JD=+az z=r(%}sy-=J`utFX0aVDM4d*%U${U~lshSA4sn#6VsJ2gWMfr-xv}#)JU#1P*05LY+ zf%sU}0A-iq)D>?Y`dTD=Nx8wP5?DjzrZ!c2!{z#ar0E$Lr=no!7j}hYjg~jBTmn72 zDVsT5{~2sv{5B>ORil=a4mHEP@fcIJVbxqARz%LjjlF!LL8a2fJ}Z#-dC~ge9CZ|c zx2M`+JUKt?K?QY73AIZMW>qUZJx$Y7`yj@%LioeoHve~ZZIVT&8QGPFi2NBDFocF` zE|>p*ZE)A&D8u`BDSz(SPJDDr)L*q;!gKNQ4{%cdhpw}ViZj}lb>k9Tn_!JYAZT!F zAhyQKt5T3wU8-skml?AvSNWZycHY%cR5$m27j3HbEpqJ#%b)&0Z-J`RARR=i9zPLY2*3on^yol7 zS?qu9gUkTfD{>tI{RE)r$wHu6l|x((?{t^*f`1+816oDJ0^&Y&`b5*>4x$3Jb}y z2<=A(i6Qh1F?BG_S{~NyHNspG!D}uJb2|*SUB0u=I}d(N6ep%(fu??n*=jIiU$f=m z3+R%9uNSn`IpFB}k*0ZlyXzCWnow0gQLJM+ z=isPm-A5Hu1iH615*>m7vwwy=#KT$1Umz7P8~TMx*h3zpr8!;-mP_Ig_GN)+xWWGe z@P2u$uPewM7Aop!G?xxj{zT$cT9U=I>;#RiS$&$Vz1RU*Joq=NJ_jTB=k|)l((qFM z8JjQ=C4u;WoAvYEsGy&W=~qbloQjK&)emtwcmR=D2;n+og01In%_?{%%qEP#FX_y> z4AH%`LU8uY&5{j%Ndcz0RlvXBTM7PQ+T*K(FQ8?R>4mD?(|MWE;^b2Lz7!G{D$Z-9 z&?FqZC*;QJvPWS1ebLnW>rZPLxg%*!=Eb4HCu6Ku=QzO@oSq3Ow8InM3WFk+JgdZX z8m`>OmmOM^p%A-@hX#2-<5Gm)1@cg?feCZ!oKf3frGH!C78=g)079~?fWPddnohZN zX30i&|HRk~T3Fmxbx5l3g`Ht}8+X?Wu;>&0d;jUnRZIb`8i?QCh2GJHM1XXU*Qbye zquJ$%(?AiyC1^=IF(4%^+LJNtvJCf#V%XCfcu~w9aFWR%0GkaPR|-fo`64AMrrpzw zf*~qjy~TqJBp~!7q~yxswsLCr!FT83dbdcr^OYx%z5mi5`5}2(Z3Zd`o>35`;bO+_ zqTOhjtFy2_86e!C(_Yx{^VlwcAqlVGVnQ;#_|FLu64;Y}RZ-!c9L>ci!E)-Fo$scl z#KAru*FPUshva)s3{L~yi&N|eQs(9zKl|4!#iWVyWSaxnY6qcUX77T3HZ9>&$=YS6Ryi z1}=~T^63$SJ$pSx-`Q&@K;mk~`7(7e zoVAkQ0kV6nP6S;hnLBaony=m;2+Y{iRIk27E$m|BD!Eft>m6}#Qkh!#tBHjeN30R> z2X~iTApQ<12-0_yHtoMze)A+eAwkvUh>Qhai{W!J!+|xc{{m~}M2RDTKC1!-^MW{N zMJOPQD1p-Az08DwIn(kVRc3B^t#n59YmBP+l1C4?Eq$OAug+&j>8QLfpW9oI;hB~2 zn`VrgK^q`1@s3|0XMb7e5-RrHlo9Irtj`;v6vg}Vv4%{|iK)WH9+MNVKTDCkpv6MY z&F_r>`gixI@E0E8Xz!P7zw!+WCzEte+KXE64Yro0(z3xQKF?%rxXuzQUdF-fEFQ2nbhp_@}`H-tA z388aT*x`Xjj*AKkN8G8Jg_>@~#@+lwvivn}^(are4Opt8+jJWB53bvF0;PlBCbr|5 zHWMb@Z}lbFW$M$b1p#kDb4gk!5fT@;1frtT&_F1?^v~yka;)QjX$9Fx#)3lGy@01? zhSBdYJB=>)N14pDWd4AjyD8Ya>plS^1`!%?ZardbNsGSh1O;;dRi}lVS1So)79tOQ z)@v_{&_N-0U0IzP(13F{*qE43Nk)?;PBA(PxDq2s*74`!ppHBiu3n3iZ^fr7>o0)B zQ(vBZrIQCOu6Gjn!DN9S)xuZ<3S|Rj3Oz4bP<9l!;y+c~T6G{Uc746CkA*K`Bhim2 z@+UbxEs-p~Bwz!zoggiCD7C$k#f7?O?*tWT2MP7_7>PJJesZErX4|Mi3M3hG&&&v@ zHE0RLlCGH}N)ndTMKfO-Xk}{=%ZRmTSK}kg+1VkWH{?;oa*}obQv6=~W zmr*~~I4gnU8@`z9YZnek#2tE|e1hyppu}qwR)(d40zcZvPV~H#HW!#1m$)-%wWhwDh%8R|cH>_!Wz%Hi}Dy zba*1X*d!Yj74Ha75)fiaU1sxeK?<}~-wd`QBB0=I-nS9#XoTYI%<6gQ>^$+;Rv0UUFh8`Uo zUVPukYa@WBTYGPt!1Sm?*eMWonuHn$5ka)#WMdJr?EV=p6pCcwWuZ7XK;SPyk`rlf zaJ4MKc)2`hkOdbm(*82xj&0gcR+}h2emk8QR$X9{lZc7aC4yYi*nov{U{$PHzC_1} zs6kopR(T62A}F-%69-y)xlb-fb%5)}Vuzp2t@LNuU&r3kGW1Pn3Q@JMKM&Guk4uvC zRPk!P4c4Xz)dV^Cqfv%d?k5E6NDl-9MSG62N>tJ=*sJC9TY$T8lS|Xg5&vB$=7GXRbL&TXlhzL$fkGLic)~z!}c+#x&Dc2@| z!e&%e#0-!@UsrpyUUD-`Paj(8PBkULfg_hcZRht=qLt{C8o-xRk>uZc2{ z_yWqYPUixd+6p2BIfdTtBR7sl8ED*igrxrShWIkgENyhkJ*ry0$ikb31-4!I(_iStnr-fauTp6*PiYvbxX}{1U;9EL}PV$F+T_jDyeO`N8Vtvdx;u`^-_M zO@E&y7pd!;3h!ik6Fv>Ha%{xwHk^ZR_uWlc3h(BO{rBnLEVflBiyA^VT)PnQqC!u? z&8zBXWJwwyJrPSBzb z8phvwO9e5>&X^|z6NqozDdVCNZxlMI;^0s$@V)fItU}9?S}#iiQO#keRLXC z*5Y>xUYK4SQ_+|HjYK(`nQIyzCi$b@XPa7>sgWg?Ue&6hk|QeQgMP3{60R~>%j<(L!n*LPit?L_x~L(;U^Of9SPq#hXjIiEx;7gxTB zMKN%y>_$;9X0rD=h-2EVg)yP*4qA>EaYG|qqoUmnWkE2>6dBzBKW2GLQ_e-qO;?O_ zzd=ebm5==>ZbRyLPPp^iZ?8kxpM2+ZEAHL_%7+!NTA1Xq9(y_4vnF!sN#pdqKYH0Q zj>F=v+LxCn6^4Pvh8ZZcK^!Reu%3NU&19mPhR78}Bdw2$h3B7n)!=2TznAk)1T*-6 zVn7j>r4L}*v`ky|lI^M5$p&_=gxO79M)Te9+pft>6!&=JQ^f#8(!?QCu}CNNMEi%8+5A>qk<*l z6`Vm1q&MCp-{Z~-SlM6pMhY$u3r^9drJ)(^l|z-V2Dyd}bG+9cyo~zfBz*1>7anIc zthA-E8;EI4Nc@^@6X*eswr4E(x{*ElL&X2@4)AsuX3;y!DQ1~qv>#Ae>K8q}k zUg7BkRj%B+7dJi0Os~Z=UD6(DyNji1Sy4U{CO#8D6{gX!wo@9OYp3nGB8%)@ z>{loMBT(~Yo6^a@w^pmsJ^JkhF0(ql_Yhu!1^*k(62qDc!{L7+P%BQVn{;1oDgcVu zz(w3aEUWue%N4$SmR*iN;$F_B)hN@931GZsTohZ7cKvj~mcS5enm63xntGZn6)+3;dtOowmy{D^|H~e-4kPwv+-k-1 z8GL6n9EchA=9cl#bh}q7bU190gZ(osq7N>5%O*Y1(aFxRT>o6M`;w(Hj;(BBP!d** z&fKb{q%-iGY0WxdkaYlr{}lcnRGag;0?$)O0rpDh^u8rI1GiC=6>go{e{QGV{9)^) zuF5s`?wZp@)56#o)&XLv)oAW}NyoLkc*l-xx3b|V-24{*ZM!8-DCHALlXGAyHtQ5& zZg84-jV(BW5%B^4pe;oM?Nozjv=?5Ll!?-ct3hU zA3}KLe_$K}!nk94ylgy+b#Y=Cirga^AG(}R6My%VRCXPl2RufYQosHig<5UQ0^zP! z>APi=-a_wja2mk%JO#oEE*w_GJxKbJJ9H^a{sO`YyW1u_lAVrQpPl%l`pYkzUYH?s z=OLm}t~nMVUF$r9&g6+!IG=N^-`BdOT>D9Ja*^Z!$wXlsj+#C2$stxc^!gzN5-=6l zWa$O&aF_=0N#|3e1B#;cN?g-_-zj)cQ9^}rkqG2!YKHF1P#EV|OVKbz=i;k%a4 zr4~Wyo+xm-ATI2@MHT)(7V2T$Zddmt_fhG*(QYt z#IUDPhPEu%!@W1*y+jRxs(p_{wT($gttI#M%FG@20lHlS?!TU^g(^MDg+TZKX^~pG zQYoQ?)9c0eCAoqf!LzIWlfP5k9IugLh8CUMqFHcEc#Z#9Z^8Q+`u4=Q=ERpv{xT@; zcoj2>{=<8Nphta`8!5#&b6>OQf1vU$LH2?iA(+-g4L<7Z2Zd#z(SkLQ<;;SD+qSUd zr@!Uv8FNTqemf_8>&}{JX$ci(zFq>Y28R(n5t}uWMPd&hx}>dXs%=6GsaSk@R1zOz z8}7k%#+55XRLtN$-TyEG$8g~+NFFC)SEFTAV`q1r=OjJpSubBXO)8YG7|l6Kn!Osose*gV2n0m#RBMb9dw2K)^^etg##lL$ZwY6Em$_Gq^Q_-B=Cjp@X()S{0gZX5g~C*$ z`bdFVZv@O}`seq62^;3apZf3yFURb9Watyus+yfYI%Qg#gNkNxkotFzY#`M~)lTu5>am%N+l&)4*25I_rX|ON3&`B{-e6 z>P4-S6^Go+0)tKxR%S!_iQlJF<^=6&`CuHX-m#YM?)>sXE3XuC@UJuA4`)&Ex4h?6 zSYM9C!YeK=-PM;aI;(=7YgN;^0S|K%6VDzQXaNIr1-~xphpBP}r3xPU~JP91qoZUA(X!_T3Y`|^}H|12X z!Gtr-$>d5wfsYJGGLNI<+?up&8uBaIcqP!AY`C0fH^&SPE{T-%E=0BcpdC4=z+eF$ zKVotHQaX7L4CeO00goaiHGc+3%sPRty9eXG;EGT4t+s*_YeX^aUEBbf*uDn-0RO3q zBP)Tp3w4_QnOp9^iwH^F8=F`+((vVT3^@-Opz=X%Cpmj;;?h8TvHZam!`r;twvE9* zx1xNT@)G(^$M7@~(o&956vTX?2B6&%!-?1hd^B$Eo>Q4$jtZs?bIy}8(Tod^QGYX` zX8cfEQu@yIU4nVH?k~z5VX;-Z4b)rUiPs*Vbfa~74J2_=Q_74M=Vc*AJXnAoa99I0sOtaG|0*f{Ilw#+6a{IywTylz)Oj|jkmAh(MwS81uFL1V7_^13w?c_L0e z|A08*F*Z_1UgE#pu|x&=s#m64=ZAW4PR=&L5wLj?tsBz>8?3|CNcX6r0==y&>6EyQ zaq=tjW6gn5zf}q(00iK37oRriPe=w|p2RBM_ItQvvFe}EicuaA-;gK*8n2(Fo0g5* za||2fw(j#N+uVN6#}qd2P1#JRTsG4I_-=Lq8l%qyg!rbdrmw{lln92 zvSNFhUx`Z6QG$S%s@WR96UXwkN6*dz>-y&>HpU-yIIBgp=3ji@iQ(Q0nl_&hGv{hL zHCDVi;BAyrd-X-ziS>sazP8AAbohH4NSN=X{I)~LeV3P89(lQS7~gOc@;&~wC5%IZ zTi@C-sM}5+_7eV_EEIjh{x{k2+}9u@?R7CE#=eL1U@-bEm^GDufK5nsgaF|WTA{Gz zPak9u_0he&WW3t7AcFec3SPwSF2#PD&n_V5PM<+8-ur*7onE#*nJQXfz8OHrT_(y^v}?$ zeyi-=$b@fB1{>Fu1dsNEe|3-1{IeMsb-7dwKpt6%c3*fn!NVw|j2%fvOs4lX)*Yip z@oXQF>pPJN%FP=d{l!hF6l~f;cdftA^JiHLtj`DeDIxhb049{`MG5+yxRfx)QkyN2VRgN_vKH~op;w1{R!q& zh!=@^5eJj_ycmd9xFfELE$@TK*j`+Z>g<;e=*t_r%nv<|8Kl5_Nxs7r-=Bk@iaeDA zziQx<0=dK}@lJqeQz<$97+^tRfZ4HOhw5vEVB2;DN;1m308Y2Sx8lQysxzH?J&h~GB9#lm!t0s|U&Y1?W(9RK^Xp~mi zXVGZY8_t?5j7!tf;SZmZsn8=oUi;D?d&r$~4pe8d0zmABh$%5#FKUJ;Yu~y~& zU-QgODp88ubca~f2KE!l`XoWR%@x~v2z@b`ffTC#{uzc55VerEc6lmDLuu-34~ z_Qqz%r63MAgKv59=^{r4fk)#Q!OpH4S! z?tx`A`CU^gOg%Ztkug~P60^L^7m9j%R`wfLY0w{$*rXt~@SKU5n{_hD^Y0qzXj9ZQ`#WNKd6)-2MQiymtb|LiIk{Hb~~z;@;g0e`4iWPbME%PNZ`Dtn#H9% zAl!`JPU8PNSVra$zr(iex!-7kK>2UtVKpbP)jOC(z+;~*L>@MVX{$d>r7WI;2x2BI z?#w5$F(f1{wAfi3iqN7iZB&3Vm^JHFhkFh*et5T<|BvE$n(x~4IovA-y1n^<5@NSd zdlW|d5*Kym8Q*g)KH7k_lMF*q$@yX)fV6+~<)y0$nkrPnp_dDf;7Ej30&ZUOf6wK@ zs$P3lOgeqb1I#fOR>V(|{G?2~W_y~3ot_;_@Iu7l)^;{|Wu<@C{A(Sa`@kuCizi2snwi1@fGmX1LmUdu2jyhF@Hdn* z6J~#>%(_Go%h|v&B3!}m_#!pSOANiKsFTB_BHqvKj5*0IMFn@$8aL7aj-(splzJ~X z-U<-;-RO2mDoOXe?>!YWrVR~V%f~>!{DG;-Cn)7Z&sC!bxSp5jraTML()A_`4wk*( zte7_X53PRbvzgxS;VCioA!P=cMQET_38c*14Pl65a#7oQP!U~Dkn-uGO1m&d2C+=j zEub#mU$0o_ux_<}!m5@Pcsud6PWBTt@-f!a&_oPPiuEjdt&_a!q-8{mUih{Nsd3<&Nd5tot2A`9k@Uw)=1{>Tvg ziRg}VwVnkO7E`;3>KC|x=?sZaO!fJK9IGCWsGp~j0yX}_ezNzWnO+p69 zWZ)bXqr468pAj`D<$gcOzr%S>0m2CUVr9dBuJo8cWn7sH za+U>h`~b*T09(tQpYx2E*p=q@fnD81oEQ+8%e7Q5Q6vOoq&|bjN%?{s86fzMZ)q?K zaS4vbld$Y){ZJmb$GsCT`tyo*;g+~Th&$H*kE-udp-o8hqO(S-?H5FF^HFzQ++Z#) zcNYFua$RCe)zo_MBf(g@N7iVre{ zy-sY;!Lvq&iTdi?Rw+iFa%@6<<1634wy^3q2tu$bagq|}+<@A@umAY3BSotETG{;B zjR;b<@3b4HHU8YY*}*$YKE)|wfqN)^R7ZKp6Vf@{`*y%9C5?;@xDm1|c3v*C_FU?z zl4-8TSCAitAn$a)t{lAI zX%yFsnM*5Bi^mTYD{>IK8ywsiopc6(_lS%P2U^wjzrJni;d6|9p>S7xEE5Vo!Dk+N z7q~Do8Rq_24$b<%q#qWIx$59wciO~V2R+*WmW0^P2zmwX@=;3} zg=j=9+g-Mg(+@3q)A6ICnLVWB(UlIVJ=A-l?QX9@$P{8}^2_@G`M!(T&Ge-A4G<`L z;+x8^mmN!AaplGI3s1VVX4mMxM*THlX4%dvwZPqe449@~qAN`+_$?zGa_iuUr1h{C zRj@3`mhk(%N&7~m+Bw@_Hwo^Q@u-7uuW546)YfUq*Vdp#(Heae%S&%obmE3GJs zcPE>)Ijo67zt2rqc`3M`c-==fg-bP$Bf!F?4X4QP#*whl7!e#G;V3zhR=K?+F=CuS z+rVTw;e%L@89aN(H_hV_4uFy+8EHUinwIN)wgfBZ4X-D-5( zqpj^THFnkrf#TvSB1Ap7VRggYxJ2jwxfO*n+DalWfB4kj(B0(r_C@dTXkQ@P-{@kB zzn^jHOtbr}dmu*0+{`p3 z6wi=)a_b&`lPf$E11>ofQ?9AfTPvJhTE1nq!b6J6zc1z=i^RC+(RRFoD74Qr>7(2W z!(Vz&hq0B^k% z&t~;OstuH8yt@_dsq|9&2+d$+<~&M4jj;z~DXETbEKrGAAcWS^#_4UDxa);kIPy)2 zRwi4~OqQ8<$?A?UM+@C{S3MxEKC(xgxwWaGg}Cu437>71@~A%AFQ;wT35$}%a4bo`vpEY9AB4GdZK4JVQCy# zjDP~Q9L&g=UObz!-m|2B)ETAkj?Nj4>`MiFL2g9?vpl?3iwhi4=;$vE{08|BkCuDn z-29Vx#Ca@kb>MoM_$M$CzV-Y}PEuS83ip6JPm6ATnsmJ=1-u(gyfJ1}%BDpA%lUEW zdhlH`pdcz;4H$JHI2IR+%>vLXwfcrQM`0MV>HBg#MZ!^s1Y*n$*6DOsoq!^dQve*YNv` z>rqdUTL5=R?wFMzCO`n2=B#%hs&UnP!{V(oiL}*Rlv^6V7q;UU-8(dC=y%BF-~68C z%I#TX!BZ$>B#TQu*-tzM#H2-JcUm(eiVUn9YzZamh6goBbide-uQ_mH=rRUZu5TS4 z+TsEzd>Yo=3-3v+th;04g>`Sgz5}!*;T}-Od|GY%w{uS=Biu46wk7)g?n2MId7P)# zvG|F;Jukau6vgTtozDhe(@!MM!uy8zcQY^3x;e&rp@Q->MdUfUDKsEqxtAh%okWFR zwK{I>oI}{11nZg78z`IcZ^oVb7aN4kz^8LwIhwG0^c&jFVH5;%E6>yKelwOg^d%hY zd`Y@DeufCe4Nd_r%P+`XEdfC}hku0D922SJ5!l(aH=?cLsDkgX0!_-=-I*9G1|M*& z=h*9h%%5r6X87Hp1k(HF)~tzF6Qu9%YZrnwg&B^SdS4>FHI8rhN)PPxlgWPqq%`g# zPvgarc=W23D!t)Pq-fNg*sj+>2fT=gY8>^A&y*~L$ax2%b zptxY??nCQ32+=2%dqFmQPz+Q6^+@~(5A>E(=i8F@sWEV3Hu2^B3E)jP?AtG}U*I0M zB8Vs{4K5Y7|1ad=LVj^5K(w-Ilvo9@qZquo81&gEWXfgD=-5bCLojLPhjOo5!=SAi2jKULsI0Xhn}k-bVmoDJpvfo16! z^&Qkds8gpiG2pf1LbsjL-!A>y=K9Xw{(7l_;a7x1n#~sfP*@qGFui)H`x=M@Eo@!) zy@vNzd+ueyDQ{2&j-L!A4-uIj!jP5)@<$sWXy$)n5rlpJlacU%6BZ7r^SI^G*|dnj z4U&T{TeanwN;!~3ER%%EaQ!CFk{w8Z6fM1lv?MQn$d+u2y#FGUQGb^xbH4{WqqC)6 zxvP>ob+FYZp%%O`F&FsLN#eyVqB1YKT@~$CwzLp&?1I~a2xWMO@JfRM$IFRz`I}P4CLo&Q^Fc0Y%p<)3#66W z5sf<2T(}!(r42UGZYzLr;|%?9jo0vrY2h{N&Ir896f%(Yx8C64AP1tuJsF?Y?o0Ly zm$2I+Ys@sAedE$Mv9IdbeY#xEzUkGRsl`(OPlyAF6FMFYjDinNdEYoQVnuMyPYm1+ z-;gvYZ3>c{_YL`$2cHg2>uh-Hh-YXxlYzI6T&rCmU3S5zWZWDvwm_$@!{v(AU= z>PMD0txe?-m^p#j8$}C{d&^QnV3MxXG%5B*Q2Cz4eS}a7T_ZZbQ+gB;A%Mc9zo@=_ z;m)OO?)#jLCBQR1mkBhbHBC3mh|M@cuTj6%#)|^*=SB`8PdM2o1UP(`O?ec)q31$g zoEO5XzUngcyVnYoOEdSCwBeHqyP$O8ZcQ-R{9z&#r5pIU^x*L0qURVQ#XtX!xo=$D zCb(A}mYbdga)Swoy~;*eF7M^KbiSM8F@EE=GgkkTK*M6f*ZYWe%FXpDSpH+xbOSM$ zsl(ow8hbtIEn^B@_{$!}98`DH`#PupuLIr8JLlpxDw=PC`X4gdM71nT{W2!-^`{Wt0YaXyW z+vC01!D@lgD*2J7lo6L;iy#CQZ;k=CZB(i=jRqV3sbs{J{~!+nYtbcy;N>%{)>Bk; z-Bs7^{mt}`uJX%y>N(ix<_U}mr3Z(+&K#6wwz~)%h+a&ik=N66b)AX{DYbSDH7r=Rv zb(&QB#=!NQ!)eP)2DDAzLXU_%DOo}tZ{_qv+?T#yWvI(_+y?OV*LIVBH4~}e!<_;_ z4d)#%11|XDA^z(Z;fJK0>2Lvrq9%?9aW2=|= zyS8H%J$RnwHk7U2y#NYGd!9haMj`*6fq8V89{G6~t9fx0xK^fY(yv*fg zMs-I^=i2|Y+mh};i~^&tZ^yx=(=a^$um6zub&FjDO@VPU%mIg-l9z9f|W&cHpP zFb<^@pOi+0(x%Y8N9^Uhn?e9Z0t6B}E|P!y-I>!po&^@-c~br1$mZ$(^-P0zR4OUQ zJqKZF`#iaa0um|sTj(>6S}4`K#B>$167792b(N@p{6QPk>biyqkPGLuUeGo2Fh5{ti4_xVCgb?G_))NTC&dhzN>-{YD zBUSowwl{C|J?+b{b-JaVkA%|_R5yp-bo#v`)5nx`igPQt01N&U2*(ojp0?bQy@iB0 zP(eqI)KX0xQc9J>hvZe)DQ%*L57a_NB|ZoW=lO4iApc6b$Q?LaR;$k$a?%87e0(z; zW+-`C;9oXndnHFVqYH>Pcu*+@sExQsbgE&5I+lN{_QwfRTYmrO%c5>~AHiFS1Wr07 zc8oYU|C2(5n5;LY)bEY_<+qP#fJUQVp%DdIj73G}EjxaH|6I(@L;lnaDrzw(d48A} z2XD7dsXhS$HNtH=^UFkB!)>B-1_xW86O)9vj(p+Vji}7?o$j+P2||>YoDP8s-!is= z0eXAv*0bu=(J2S9QeIXv#UH~goSa-3Wl)FJ;+HX|`vjT6w3?a)iPaVjvzip0Or+PC zz8-0M96D`kG5^*X8MaI>x(8=kUooaeco1)Yi&>CJL6kO8b+fSVW^d zGR?{Y&6n-K4>+$GIT>*eFx_mcx-fN$n{QnW**ge%4qpgRbtu*LVQH^b(WW*d-;UoM z_lYkRP&p(H-hPMPs#k_HRZu;|=#U=>|vsbSW6rJTw2 zdW+jgv&cZQ9~T+4gZjoL^wW$;(s}cY>*Z8{vd15(?>Q$wRvO0SB05d`^R8n|wHWKd1m^zbHAm(Txjav`)n>@ZIW>&Zn~%&TvST8j`I#6-5*pMeRAMIy z0TwK|KSIq`D(4#P#`O_fA+rEM=E9NgX#_FkRypN}vX_I!Ao$cf)m*S}nCs>c7{XwDB(}nZ(qo zG+~2%e4$_9Okm<^df`hydP$9R?=;z0Gj>U4Ug@x^er`^=wNd69?OPW)R6uSpn+f*{ zgO!!+el1nq=v~5x1wkHe`LNSAC3r@J_pg_EirTe|3K@HsdJYanfMA8V3A&&V^xr z-nfL18I$;k-{X~5+TunQcW=lA$)~DZnPemDjuJk~@pWFr$0HZwq{sJ$(C_cQ36n5@ zDS(sML+tw5ILW7aEEkS2Rj39s=gmk$_&$gGlZVk?W2-pyIR!y+$9sw6N`_@fM8>&Z z@5!>HlzLO#wNZLUqrI6vqh14_b4c@FRa)ULkH&95IS7)cjd%efVV6WzXD}K%QptO- z-$;S%Jk0aL-yiw-__#reVaCAkG>~tq(Py0iKns_w_Z||Jd+hP| zoVvEbEWG#;Pwbi?%#SsZ(uPoTb#CPF!vqicoQ6Tb6h*=+(E`4oC)tedPwp z@ewoQDS{1<0d?Y8D!ar>%C7#84-O7WFC*f6uzV^>&LZ-KNB^%}7OUCd!sfr`ooYA$ z4X>SYRQ}knWKHEctVo~k& z6A>BA7FU=EyEMJmLGh|&rvZ{C2TW`LMnjMI((FTiq80m!0U_pln?KfvwfVaw9%a#f zC3=n|o3AX*KfPMx{RnbXX@-deT=J+Nu^RACr?ZnV9_DSVF&fi&BZN2&$;DorVkZ%E2#abDozVGVp~1SF$+~>D(>U zOBV%h>b2mkd69k%n)ZFpJ%+5^7jf}FOd$)-_!rk47R1~vSP$TYzB1jPG_j}q^zk?2 z9Vt5`P05HYL@0=1p8>?URlJi^eW`LSb|_d5jw8Qj@f4LX(FTk?8i-AQpCh&**nQiu zgcfJ7X}f3eJcZvTO9;N8OP+3=g6dwDd6FN&c6+!|ICAmjB}n$ojg3d6p-<4R8jiR7 z)NydD;?$tGLox?qP}I)m(OWcWum*mDt0Sh={i~YT#s#*h|59+`&GHB^^JC=S5CHQn_;; z4AX=lN0DCyCAj=NgLbq3LrvGUlA*8oUA=4!7cl|Nwi95Ph40VfwtM_u{HHB&h_7g^ zJ2rx;ZF9?F`Iq4KJ-alEb zWd696ig&N26y)4pQ`%tUK*ov;Lhf54v4^fl68IMx_5+=l>*ZhqM06W}>B*KD2V@3N zg)N+N%%|XjW!)#oUMLOczU(QY@Ni!qy|~%M(Pz}6gwYaI&;FblJV$t)V<@<=*2o4J zk2x-DD*B>fWO`9RC7ygSc8!UqkIzY+?S4Nd8Y6Ou|9J{*YEx`olDA&G|EGReo}Z5o zG)?I8**jvM2en_$Mz2|T<(rE;xS1X?KKJ8=rw9%zXNOdI85&5VIdwjwTIywqG2DMU zDk8hjbCYiN<(I`sc1oUmO=5Y%>yIlHnL@mXMuV7Ig~Z&TGMu&_BOd(&;)B4~fR8rd za#;!`)=GuR1GSNnz`9coRGO7tDPZ{EZDH&AFNkQZ*Xss!(H<}lOYN~vn})%nU&yU6 zHNK!mHGjJN=vylbC_K-Y1d5B!=v;+zn+px(I-`GC-R5!sM{V}+FgD;~U)=oVguthH zS5QRvXWdW!@&TVnEBVjH;l-;mk@EIVm5S}=B&Zl3#j5iDD}aa)*lPY_1tv;xJCaHf z(fL?e#ugQs73oN%9JSWioGUp1lOG_LKr`)z2o8-t5d$Ma;4aq0;R9{dDg8Ti#H5jg zFL{6;=$4yFrpM@zNZ;-n4|21gf)k5>yk@Kwwr8(`w!Jj!0iKa0^v6Xq`BmNdw9mr+ zxKZv9JU|#JFV$K4Hcw?eRv=LhJR;^QmJwAr#Uqm9=%xX|;zt9|M?+j0T55FHCG0XRs^BXo^hqikPyz@J6Jp>y-==PV) zDOPHbVKC(rab(&@Fq>~$dM^5AV@Ry)(|+xg!o8};7(7DZn8ZGf9(Ofvbb(JYo6+m3 zNN8wDXZHC`u4$*`$#CxA3qJuRcU8d$hp>Icou!u13>NOzU^4mfKa!@^_)+iGZ9QQM zfTXryL3w!LU^_r==48Mi$p2mNUm4Ol_GhH0I-it_T}~5D;0K^Z-@lt)Y=ig)Q>t4c zM2hM|{?rs?ij|_pd@9uww=gVu6QyfxA~8;km%)pRFBkB4g%ag9U`ZNKN~l?7%EEmU z=kiqWGPWaS?)R6Paad+>qxYrdmZpme0t+||d&axsI6tU20dQ0gmtKT-QH7(zuQsPR z1}W0)9{2X3onbRkCaHtjHap4hSdZjun9>JT*ETiFG0(4HVjvUM!RrMHR?a=B|H^+H z39ta&&r2x{w`o#%KLCxM*Rr)EfI>ZUBVwP9f7oREu;Au3uG2u?LR0bGIVuQeD#jZR zoiedn0?duZQNRpSeXqlni`PVaf<{tbq9V`L!+^X>Mdj_qlDp%i}(3IZ`@x%&N>bM zGT}=NYonrZ-=jUz|MA;E&d(yPSkB-AsyceE@0`6qBz<^jm3!NuYFhZq=tmufyo(9B z^=(tT%&2Lpwme}LQ;wqlg-m4*7kuI@^(DETXJ71WpH`MD@v2mR)a60*!{|-!;2+AD zeTBp4Wy;lG|490UK zWn^)$u;T;$$R zlp66sQbx{&W8)7?<697zdFtllr;R>=FR6A(OjdV6%QGK!8}E&}Vzq4$4NQ?YA7QRA z$~=B!h_x?x#&93<)9>d~vX3&^wQgL3V?sWiBRW=lzJD=<%jtP{@s?|?ryN2&AMZzlLW9-dMz=e@CQJ(}#;Y|zc~i9T8{%~t=f0|l^#<=i-o5ZW z_c@g2e9skf#0 z9IUC?e5`=qNyH*;wTUodXpkcLOONx>^VpNA_>en=V)m7s(ob;c{>bKSwXbZTI>vtL8zB=d+D+vVEFwe~f6MA?+)D%H z&qmg1hiz*0fF-T#4ay_OvEG}ai}uA77%cyz*!eib{z%f_<+S`6@c7E`MsodSu4{nZ zNrTPM0`sa}hzX)oSnH)ouz8*ZWvmDjad02CPk?T9NQL#Mbj;lMLV8KlGrojto2f*t zShlfE;n9s^MuOzOr0v}Ic5v%C9ocoHD~*0fdN=lnx&-n{>&=QLWi)?u1QYnu--05uRy|J;(h&Lk8|WH0$D+v z)u=a)W1eJnYvae9QI4C!9)c-F2t00J80Zq7^~sChr2LG6DUZ?TX5a$kzB$2ktdI~H zvn}->2vAWfOZUkWE-DCU5)R9EHv`gYx26{< zE2-@YsgIe;hP;uk8Xc6!VtW0|e#vik!$dm+T3{X5?T)p*9yp``dY@QQCQypj?5yS2 zn{Qm>tWCZ2z#|7jfUN~djQOX^3VhBO8qwcT2cOM-W99w{HO6(B@;Yu*3Sylb^&3bT zP`_o3Y?e1O)a>u-9)ZXRvhu#YKuRdI-g+e5b_8w^Htihd02J^=RD0>Ctnu)vo(@*6 z3iL*{`X)UvG)j%7RM+#r`y1MS3Al4bVC*gnV*G$^Il)~UL)tlQwqFW};lKge4p&CjTD_^a(^d?L!eJ?XM%9Nw*AiBV_LZAGuS>KZX2k<}- zzg~`Z`GeH%c^Bs)_FGBJ9JJr@*8wuf@Zvt=0q&!M^|oO6BG3B|m@&WBKNhD2LWH?T z1u^9i3E_e?W(|pWN2M`vH>AKlEJ$Dv3iT` zMR_mCeR2!O{A<>WB}iAwM0O;`!N_=z9PRf9IPD^BBF6N#o2Q!PAQP?Z=4o8dbdJR> zI)4YuEJs*U(foMS1<(>QoCiaobI6pWREm?~@DfhEn-tDj?5OgAmo@tdIv~^nK0Z58|uZ&>>(X6CFoo8{qZN7P3ABaS<&eID> zYLjSMML;Beqj9QX0*pvEUPwKUdTdeFAoi?-bctnsANSj&n^+A}*cUpzyjM`4>$z)B zj*xzCi&=^Gpb(!slw%X5%~-O+gTkj%7%)K3`7EIen03`-&42S9K&1@#vK z!fF3C*~2*J*ni=DI*&|n0JIZx`FNYo%@v%^32-=2bp1`S09@dO_erWndP>3vOsT0P z3+Fq^2RWdGA$yPEBr?-30F5%idC-MC&DXJcvQR!qpE=3^_`*|y^seu_yEW-!FU$RU zGe>)?fPpitKR+ZJ!+J&aYYOWYr5}@hL^$vIAqHKXn{^PX^&H=2s-&;aj7^RMh@9dcAmD*0sNx&xd80F8)su2-7BC1cDUDL2(>BP2->l zNGbx7{^rKx0V*Vm|3@3@hivHo!XUP?f=7e-oL#}j{`t!{Y#P2 z0p;uwj)OR_=Br#NhGd1W0H5JZjtq?fSORrX-#jVA=R`(3Fv#fufOMGeRV$FcbNnr} z8SlNzPV;S$7vvcwB`E~Xa*`KWAT#U~Cy$Ra>=>`YbNj>&wgl<5e7RemfdNg=@J6Qb zfAJAsKcsyICH!9^R~8+VgrX{vutq1~Stn=MQ*-bD2Y_s`A%((jMxLr4KtWCA_*7n$ z=X5PlCj;C0^VcjZFC!hwkO3(Sz4lXi37kG;Xn&Wz!=Wg5PcibyIU^64y%Gu$ z5im||6idZIMuvT~Y@8H-W1Jx#fB^X+iPurDlRPI$K!f>aOpZb@ZICmp0Vya_+$Dk( zhR1l)9c$qrZ_2IykTY_F60gK@z)y9zTW6u*x7z2Lp8}(j*C*Q)31Bv$nT`>jF=lw8ti@ z^{-3v*-I2spii!06@^9}9BYzqUPXq(mUSuAW1lF`yj<6q{`rz*8wZMXtEblq|F=Mn z%?|WP;R|M@c&)+kR>R?(JQ?Z(z{Od)MbY~5zOGhP=np<1Nj{>0B-C$>0$2u$;V@(Y zDU{bE|7T5=sl;=npq_#9`#=|z_cn?8xf1~MsHbZHNjwNm5Qb`7$0kGuCE($jdBf`N z04Sad07)zKn8X_>w;vh}@Pzh5TH(EFJ|{OO0zj^wmK%=mSD8fCNfV|1 zs8oO4M`*Uh>v0%x+=;Qlc#asE#vtu8IAzHIQ3#b#kYD-#s=(kRgZI*I03g}HXQoHt zyK6X@CsE$XcCW-MQDb`Lo0K*x!8nLCahjws-tsNHmdM|@T&vPJo}X&BiM6)@)QYui zPJq4v$;Qo_Vmyt>ypkuydj%U2A%-P{HjIsi3=Qu04UlA3>)A;%kgOBLfcZA7Qu8$# zLUsz;M_zM}@Er`}jRl_9w;4Qezox%GCWeoPo?jl!1EIm_BYsd2K=Fd!;jYrYVU1Pr zf*~t{{-}bGBq6Y`T6l2^p}bX;$I8$j%9D=M%LYSTUS$K%EO?-jCK2!ZjzYUpJ zzjohaSU16#dL8LofJsm5dibEr9jvzsp+OWvfasrVg?hg%mEP?FASpNSd7Sp;W$8CE z0YGVv8n+m37Ls38-8a z>z*Y?iIQA>tNtZ~jE!5LHA)b0^Tp~WNrWznH%XJDQE!`9H_u^T!A5y+Kpx`D)pU%D zv;mWx^X2^og>>_9{jA!`X&D7Y)xQOE1ot>B(ivIWx1K<$%G491V7l2UyTk|2(w>ZE&mgmmU zFdv3|4%d~F?4Y3fn9paVN1{F|_=M;n$hmB!-4FG$P>=N;o+`z-yhwsk)#;RIjdQ?r zk$=pydd4)pRKK!b767D3v*ZhT$V9WM7j8bifTVb$NtIOw=9ltDRrPaVLb_?yeGc{6 zqO^W>y&C{3r5c^8UkB%|T+3|ZQ&>l$PO?uL`W&-HEac>;#tz)-0OD0D<4BwB<3M3tI=ME?E@?NIFkh?Idona{S!(Q*%S z(_^zZH(7092@bR@~K zFbK7F-fS}~G%*10a@Q(9)VDvM0Kl%Oyu?sS<^Na)A@Kar$w=4Kn+P3po-6<@9F7RT zXu{C7`*aX0bFw!yLF@d4%&<)V7y(3Q#zsS?#U8a1&;L&RLMYeY|GL*SBmqLXFTc?~ zFq{X!kbz?y9E}Zq@2?_|Ap`qul7Xqz;67ydT=<^<9f|xfSI_s3DO2#_cO zB%UUKM6tgY`+Kp!KRjSy5s*{_Bz>ceXK{mfe>Qjzs~!oE;@ui;=gEz`?t@fm;@R{P|?;9y9h+n%e0;Yb3Il>PdEq{Y0e_gor^|F5>_1<21IxEAk<+R$mY7zX@&|DAfe&7k}j^#_*#P5;Y& zCoiL1|1N$i&T1$g+{@xH(&yMQy;*{~S#Obx1OO;zrJRZUEm8BpN&!F#U*JxJTq!Ee z6dc^7sB-5TGJxz;Nlqa;j;akvzspanZ888Lkz$qrNWSD}l`mx=FR(M54$2vMN^QY= zC;4HuPEfgb@ue~VI?Y9Tm0IFXLwzh^6>>rb3M@H0IxdIyNQ{pT^~exDFj^WR4_GHk zObJsWqb#D_uVgc`q@)sPT=J5Q_Rq+1L z+z;6We22bI?fhf*9;5&JArBayvP!Yj9G;WnjC@N$aimW&@-PhZf7;#8s60pA9g+-G z`_v|}7U>;kwOOjE9+#U1E`^?1%;sb$)ZPMC9z*-G3N;b+S|#U-aS;Gt+E^7k}OBi0@2t`dA$^ zXdmZwr*jI1Tsb63j3yxvX_KDdI9dFUoE#aPgJb|EA^jx)k-9%2+qM>fNL%=Xyo3Mq zA_KhcX#gAIojo3fhh}_$XL}ge&V zA9zs_@^|LnC#8S*{oN1cgK_X@{;%!@gL%Ph6^qgS2z=;tOJe@bcXm437*FY!JpxEf zv*MZdNYBZ1a7yx6-_ot}@hkz8nv^w<`XSq@UyJ|~(B>v^xi4FE5a^`i|T zyE^r~1`a~M>5!9=Dju&JddbJd@&s(^xO{#MIyZ;Gu^0;RSiRWym68MNuyFP z#am%KOpLYm+GGIKinWb*$P(i~D~HD45UZI(Ol9M|S5h5g7>B7LfCd9lrDnuN+EBd9 zBqu|A2-v%G{DkA^Ysm-!lGbW6)Sq%U==qo*&hs52>5^eK2$ATAB4oE1LJIx+u`qn0 z9N%?5ea0lz-*p2f76rhHI-s}kLI@7y8?4w|q{C1h=!bd|+6BNnok(C`NPxFAn8vI@ zUT?J1@W^ZVSI{4%yGqZAqkMvbw!k2xf1wq=_kTL?17vPFcRVTU+IL-!a3AT*oBa3Y zBh>qUh~Jp^U9_*hDE339#ClnwFdqmvJ|68>!6zlk&`y9S$?_ZwsA`v6#qhic068I} zRtSvvuKVkQ`v0(eJ|M~9{HBk|-7c+v0BE5;R`6-r@hSB0^s8RyDE1SX=Ti+Xfq~I( zQcA#R%%AC2sK-9ZCeg-8FgSWGO36?^+Zyck!S$UI%oTY55L>3FV|*OfYs8#9qzFP* zhVv$crd+6Sj#b?)ntbq6jLPdXb}8%| z0ATPm7`XJz$oMSnU#Dki-?338*=!F6bN4;5Um_&32$(d8S>p=3?cDiY&sX2-|3icP z|Km3d>7NjKNLQo0d*xQXNW<|>%ydR2a88I0NZLtabR3!O?+_#9#3b#%24uQKXrE(! z_RP)il^E09LdZ7U=ao(B(s?1CZ(7%aeB?u`-R}@_g-~t0tZ}RX`cuoORYeXSAv03* z(&ww6$q^v)rEKGRnEw*pbDdDnm2y&s9LwHT(ySI}4+Y?yTX4`|r2h&5Dt{k zA>cybl44uLQWtttx!GMp(%s}PCMh z(|d)Ul!e|-u5?|r!#R!j@w^h7-K7HSi5oECo>xKWx$wLP0F_yz1E!<(9QsRHtv5n~ zL04>HKHy48iS{%>=rx~N6X|f@9Rjs#+bskjh3y@tAJcaKTm2CA60XB%_;#}n^-<-{ zQ=~UoXr@KTv1FDvAv4s$K3J{u0bhQIT#o&i`i-v#{ELJ`Fy6aG5BPQG!`t?IH9%AO zXLcR`<1;a-zazuvLRr*De%<{(&Kk$$Uib5i4*2@zg|TAPz3m(y!%P)rH4;s!i^nGEgX)S99OTL2@nY zZ8!W3z$6BSBq%iR%8Uc)%w+WE$gp zIEK3AmN8oYK%YWB{-i)5Yy1NX4%3i0nEYMOi16S759cfgwX6D_xh#FpXLAwqntMT1 z8yG6|4!%qvKkfoK3HceHADQnDIVVx>4bLL9mR{mcL3wwHt$2c%n}QH*=Kzl(fDZwS zw&8jW6H>^Cbgz;Z7?cR0A;WBW{@9ggn$!J7%C;-*0n&T&-nW?gY-{K095)ZR0HoK z?E{SP{GBqq{}XkI`M@LfKFi>_AF&JU91p&KTH*irX?6nXi~2Y_jPzNk#7S{?obNK* znGZP9>kaa+SBfQ&EA(73D~Wz;CS}J(36M1+>ttYvbR7Hj2n?3?ph$0ApPn9O^|sL8 z-0@CdT(9D@VvYlayIH13L!L)%PsRO@jn6~AG!y$hyQt3Ze>$#^lvuB zD#ddM)MmGd1CZc#b9fa13DK@T(~xHddN!`Fb;o4hNJHVO!8Cz107rQOAU!bPk^0*J zrY&lsH^>1Xizo5||34FI&aNpKc5@xFEfes_6ky)K{XHT8;$`J~`T)xPSMw)xjbof~ zNCoLWUO>xYev9qp_uu=}Z^6(fuV5V9l%KPYFfQKa2laY}c_ll}a`ITel08ygFph>s znnhYv1DF_ToothZ0o9a5UiARHO?PxU;Jes8Ny~Kh+%OTo1QOoU@&A;^TY7n?L1&e+72`H2wdOo z&bCM4`F+CEt;GuufT6X9wmRUuv4dc+0(9%H!CN=HtWB=(wzeiC^t+8OOw#TJWcG3uz{h2<4dOsoe>$NV%cXCW}AlhqEd_??>6!z76t|Z{;5xG&X zU^p+hK}eD?M9E`sNd8*}MbyKc<0&lXr|Pskh4@3*Vv17EXXOTe#!2T8#$QdB4D^s2#Fd; zd+0)FOATO>hk4TticB~MON9UZvD~%Fsb}00wfiHNNsXWQxvML)y)^{Qb_C; z(FRq|qF$PL&!?XG4D!-*>1R+sJ*~F6mY1M6%M48sNs?e7+6Eaq zihLvk=E{qFw^%O$Y-N@1xC8^g002M$Nkla zdx#slhqZCM>;DuKCWy^!E*kRiJ|xJK0-jsB5m^9|@}+j%2GAqfx|$57^Y|;7@7MeK zfTR$xl;l0q4JzUJ&$@f{t3Vx_=n#J{LZPnO#OhZQ<$MJrir*_Dqe)>CDsaeSnE*yL z9u~C*=Rm<-C>Gzc~XH@BQY3HCOTb*1pPwK$&tchm6;1ACi(-L=ay$7MTMLir8J;& zHUL8I?D$wbze>!s%W_D|8M$E@>OZp*L(@Lv5hGyPUR|k1;rU}I54Eq-n_c?ORkerD zPEoA#Luh$OeMrnjKCbaSVivx0M6Pg0$-1nJ~9P$VYLZxlvw*Zo|4;Yvfejl<*jJF4(9IM??8Or~}XrEX~ z9tt|IO}=>yhHiJNAEM_iD3aEp{GYj3#SsOnWc^3?DkOz8^Z`jBz^|x?D6WhA;VC-q zx?a`J`wyi(zK{XH>kA%Gj9(RjAwjxp`CNv1Au}xdh7AK>yji+=9SRlII?6A>@GUzg z2#7S7bz1GY_`lw#Yi8;du z%H$t?AW{gF2!TCmhR|hb*ZsOe(K@vX@F9Wro0T4z?tykLxBFY&ke(5LBi$Y43;|1c zPftpr+&lm#g+Q!BY@SHqI|t-kJs$4^h?KjP5os5nk)U-mlzaHB908EPoRk}b=lAmf zz~nO_MNpp%KrgRQzqiP+9A8%+mO*~Q{7XH5%Ue(M+M9wmkQq|}gf zFm7hrg>jR(W88d;bQsF$BwMd4H1-)PrB=Au$Fjp*vf7XlA(P7kA2(lNuz1}6KQyFW zQ(&ON_`l>G1dR6qN%&q7kaXVw&i*;=uM&*B5&&N?BVA!&Sk<5Clc?`AEUh=<`bM#W z&q8}m%Z$ztpntxe?2WQ8kBPMk!yo6bYPkjPWyJ}$2k9`xP6&{A-23%cmQ@Vm0bzqpT2gUK*c$&FhgtsJ2X#eA6;wa(p?@>tQ}j1VGM#(I)kp zMKP~>jdG3Z;9Qfkqn&JGun7RqQqENgjE@td07!Cg2PD1auG4b`)?c|%E#zR<5PQ@* zjr_OQGk9H?G&fL+G}W`gQ7+0FYA$p~^76+d0i+jmiN`$~Uh|AW^)x8gBT@pnO3k##LmuNB-KD7S zE8+;-A-@c$dvfQS@SGRQJLVM{=co@bEAf4dfJ%WQh#x8!*L|Q8Nft0Ig$^R2{8$`Q zyYb#-c8G5?q<34P=OMk!OpA}T0kBgu>;xpOPt(v2r`)YB=`}wQ$JK7gkM(iB2hWEx z{NEbjkvz$(P3?T-w-cVPZLhFgw@7*G{X5G0gzt}k#DenvNCx%sF%R}jH0y5HaL82a z)e_XtA~Dq)V*xmZnVQ!79qtA`AN6`cp3*7qGlmLfpcmwy1B3>>pc_P1z`XdR&C?G> zpL8GAlSe9_MSwyPpztsO3dR0b>~F>X_VfVYih!gdAnB3X@H}Z7xJRfw!GWT{B$PJ@ z)r5nGV#md1g#$cP!E}Hu2OOgv4v-@wEpPr~6p9k3bBsKZzAi&j2uNBjd&L{32!PTf z)!;LDW@bCY>gB-zk!fAGUR@ku#Z+71|4y+(f|w|NN-9?#7zjQ_`W8=(pr3|-i9$Jk zuYV~rE&vw#iYBI?gKCFbhO`$ePmajIQ_lt!HV$Bul4J7&QJxiIk(nGLL*Op9RFY!% zuw1LboFm^>TNxDKs=$QA&iIC9fa=^++mVwg1~hWg5vrH3Ou z)gF~DgPfKfV~xaf<@T5~84POD`LXHINYBhCGGp<*+4L{i6W< zusPPC7z|CaQkUWRQ)Znz0q=hxx6A2xju?*SqTaMPZYnuEe$3nGTLe@)Cs#@^Z}IbN z73A;Tcg#u_0Fo+PGH|bR$w0LLHP{2+AC!DG-4fp)?sQ4C#`W>>9#;DtD3AHzWUmB( zKPF)d{O@KxG2!5UeE<@!Z&d&y1u`+%dB8vsEMI`c*hKsz%e^&0M%S+?Ci z1q$;>tE$FGFEBIX1k}37;LECD7;-<+Z$aMVpSvGHhB4b~##=bf9x@>05t=WH>mtYe z`?R$`F*#7V3n6@dWj+;e3wRQmGkOQc$#QpQbgV@o*IHCIt3&fdt5~a3Ff8QSXFKJw z?wF3=D-i&BMW-Ygz$@HN(O10M>oYwtC*e7t@g-9Ws2Grcv9t;1^Wj#zWIREPZ>5p0 zcn-jdm=COwEBOqh?*>RB<`&n6p;v9;izN((dav4ma$IFW2q_4Y^LtLtHreTROZSv2SKXU^Hr}RIZ`d&Tk6SB|c8zA3cM5@;k<85^Gr3{U`Fr?e) zOowc{2!KiX-icRG-X$gxaZ&`VS`O1l0N9&@@`nsZ-&P(sYlVyNy(QP9Cebf>iZ4h1 z{K$QiZ{xlpN0Gs$#-sZQH;B|4iXPCsQkV}y!&%l1fDrGyd&GLw_d61yKv3UrnU!jG zmil*vNT9zg=4IJ_aX3Q6N^@P%AC`)lkx>a^gxMyE>E%cAvQFc@+W<+p{?x5|_ivpK z&Y6Y%<4yIsOF*QM8RLjZ+Shskv9z5`V_K1$t5Qy~&e@j-o*vFgwax3cRkXS1gBVFzc%JfG)_Kvr_(E{_* z(Adjf>pGYZot9WeifLy5O#KxwHN$afGiRbe2*X*Lid6WHK ze#9`p)}Ak)XhZiG?2nQhe*Rni*1aT2&jctTC%{Z4n;Ldk&{r8lRVvRKB#|%t=crFCa)U4~_|I+%)itEPxT0a0(;?!;-Q_?20kk7IK zOfuz(v1pfB(Fy6H4mqT*XB8X(eUTNUfBzr;TSN1e4=6_(`{5^go-Xe9@68dR2oNa( zM2Y~Brw1TX9Ph>P{xHXT5s*{_Boz&>!G`-uuZQ43Q2_G%ryDQ}QRsplDF0@;LQT)X z5EdPn?39HGoG0L! zBNwwNDJZz((~|^TSQPna~vAYH{OHF>`5fXC}f ze0Q&^(rY0@<|F^Q3xl9up_kzL2C-N#6liC?NX*kD!K@TYTwjB`RKKgu0!{5i0Jgce zq}RKP#R8WYhAPE;O%&ww{E#N|*i?IB0tQ5=Df{J-|48p_7nGwcTN>#cha%k@oatr} zv(L2T8yU2ZUZ_TRFfi-odW=KBqqSxNo;xqMFbcJHS?uI9qcHTD1H!}q{9GT^3ptpz z*eOE_5ds{okOcq|uK!VFT=LBNH9u*V2q>m_5UTBvUaChX0WeUB)N45?Qd9ktCHSAR zY_~+*BgJZ;Z08v2lRMEKS>%re%tIj)5&%d(@aPsm(nA3v-S)r8_ck`k8;ty|6JxRi zkl&>m6z~x+oMn1PJ7vI-6l?1=$M~IW56hLJ-qynmHx1=Js8f0=>f>E~Qfx#0d@2GD z*58SrYo*D6^l#<^hVf_a?Vwsb&=>3J8h-)|xiFN_dJ{5b{89hPeb*4s@dtvK9d`0H zdai^gbG~Qll{^6>I;A>boJ~sdn-p>?1RTv1CDB(s%+DGU&xPrbNojVreXb-?%lI-Z z(Jc9r1tyPNiPawOO^*&p_Do^k#jH0x4j_uVQqRoQ8Vqj(RN%UwhCCxTtHq2M4EFN% z3I;=o5K_qRV+Tko7=}a7*{cS?Di`I#3b795I<42c3mD4nF5|RsN%KW&N~FM)6n!ih zlk~(S)?));jzdfp!?LfV{b}AVft=%sOi$cjp~oZ!;Qn?#BRw*XaQc# z9cq>}Dnt9i{&x2)fJd2THyV+Qyx>^aFZPZ$sADApX0hfej5Ci%+u*&4vDO{|n#bl^ z-r(3rj)`?}+U7AHZ989r>y>7#C!#1PTc)QYeZNArh2t(X+@HY8OZ$*>O7dkA`xEz| z+JgQ`2KwFTpS280j|mX4Fz)V`LFB%Fr(hrp=LMfZ4fPz(3+KRyP>FUp;x19s^Us&zelcVS zxuJh9&Y^y<=?j7Yru*bJwFLF-Mkl9-qaEg|Ne-RUHmQY@*0*EsX0cKN*k_Kgoo>;9 z9FCtbBuhA-grVEW&`9h2N;Tb1q-g)}TDAx3vnS&U0w831+KB$`%HD6@8Uv+728{&8nYYLjnP_l0sW9_5?XwQiuCHyWoJ zqCQ%ey%?*XN7{a|x_%OX^8{e~$Lc8C zDgE;gt2V{;jRvGq@wkFvraNFS843GFivK9 zP5s*{_B;9YtWbu3aku=QuijffL^Izt-=0lel6y6opnhaM}s>0xaVh>Jq!2xoR z)x!J71Q>6ulE|}{zC9qxXH04i1+?g#ezp<@C9hrdU!X{topn;Acv+@AH8uqWm^`JW zs5K0Lxy2<9vyjQ{E*s8CLeFMSKLFTP`Li z23X{IH#eVNfv7|VC%JGh_a=j7Xvm!TjyuD}Gs zPp~wH;*lR=2O-btH`zX1KVuHEy-2?;_u<~@{gbAe(e;CB ztEe&nz_3N4LI!}Cfi^sH;{!b#`CQ2+d;L8qz{N5#DvExn_b3Xf_AB+4S*!wvqosKN zcjBxhMaSpj99!uc^9Q9QDK)RA3o@|!|0Ld-!y5K$l zNlB6w;41S0N(5BG^WpV!tF6_+Az)L$_%bQl#U{nN8y_6&V-tXIx>bhnrA<=If((HW zAu!@j2|yCBME)-7J$#)a1_OkULi%w9B*9}}?Q_ADA>ZQF4CUd6)HakSqqd3V8taW( z&Ad3~bq$~;>e&a@L<`b;bS0RH^hD%$mz;2MNC$a^PT)J$JP5rOG9e)pn=?93q1Ze<4)^`%5~vUUV40Ba z71)GOb$mSXx5st;5D%UinD2#rmRc>-O>e-!6mOY$sniD^-E5O3pnTg*2Rt7#kj?Pg zW;;5#A8lQyO$G+NNc(&{q{}khA{|r2&@ehW0OdW%VH&~vcaD>9n-0g}3A5G*UY}#z z_)_%G4>f|@a_pqn;X5SG4{E1bqsif5jimF; zMlmf>hW_Ejhs0j<0913Qq=uniY+%dTj2QNv;=JCA=fZPQ5s>t?fz`peQvR7;=h!b6 zLY@9a{lUGWh>7$gk!F~`^cJ=V=}Lz4NfP_d^oaO?C^5rLPmZ_f9FY=h@f=Qfa+fHq zS8maOeCK=-hHwiRlc>H3xV4|H){7t)^NHEfsMoRSZkaBq*Z$eYl}+nlUbJ6|zKs3J z*yzircpMHc@g|AJNigq%38hgr_A}YRdD?I6(Tmh%j2B{-BcN~1Jn60$v-5>CuAi2h z6t(AhwL{Z+>mwKIGP`BID~!)O^IuHgr}CcZ}$Y5T*HH6#SsE^(5CcZ!bh@KykCdaY~j^p);LFW5sxGxw`+H10X5ZAX@JRLYBo|h(3?~Q5edsT_yk|J?_Ay5QxWoukZX3yIt9jUFj*6$`<&Fs^gz_l4tKGhohG2<0l8I^o(ty( zSp-PluX#5F#(pXhLeyZsfWC0AOQAjiI6``}Sion+N&h-EHWn8uOd?r^c1ycef&lxU z%D2@4$Pg%Vzw%Z5&fi}TK2~qBYP1sp^md`0-jo{z=~pY%glHMYk7p)jM`X#NbSa;n zp!NN*u42%?@&HgCGQEX>^CCd!Ywwf46aCfwZl@wZqzDix0z{r3fJkw?7sva<9PdRy zQW22!L~NAq_r~i9{N8PVr2jU*b1zFM5alKPrb`DD01|KjnUfsukf+wbNb~GJCJT&4 zkYGBBQz(rv1Y1o=Hr~r>ScU6%k$5lN5Q+o;JseaQKn41JC=O<1J0|Mc0DxplbMY*I zN$GL9H&Ot+n1e1E6#h$r!3p{LmHv??z|3{`q9Db>VX+&K5&)6RB0yRwq{*D;(l5MBhY>08_s5-z&Vd{ru!}}o+sU~z9JIhn-+XItACZrl*5<9~szI&D( z=cpcYj2}>|bS)E7$kR^mH<;u*P$0bnEnG(tMh-<7NHlpOaJuHPd6Ae2k*`@klF{Hnctb_Vre zD#Zwg6eVM$y;3lU*nNG&WtrVALLri7*nM+dVhHu(4vY0cdYwDgCV*E6`1vY;(8InT z<|~w&)r8z2n+$LX+d;mUvysuhc_naPX_EQJjrLJp^(sT>J1Vh6jk8i`g`>YopIse%Kjj)vZBY-6SzJU_W}INK&&qc zhJ+9pdySvhq}WU8wW)Cc;~WAcEzpx9wck0Y<_TIyec(}|08Gjut>%hxxE|j3L$e`$ zuYjQk{oDajp%TdNUN;Ec=B5TFdLrH1dnwu&`R|`@cB(1%jR?_J^)kvoIl-%lfh-(X zvz&IhPL2-%j1d5EY_@%p07=7BuSN;bHD8oP`y;(yE)mnx*e{t|4C;y6@p89u^i|hG z#w9R@2saO)IoryYFbYw#pKnCJyw1>1k$!A}fa>oXI35`T5Gw!{*$KWE^?ijM6k8$B z>y${M9d@dDYKnz@9Uq$#Xs5;Qv>5FJSGkKgF{)kG=k#vZ2PC=I@jTY`;GE<>od$=m zv9Ag0i3Rl)u9JUITAw#KPlzkx2m^qY?Gvk!Ud-mCi7BDNOv#SS;#?qSM(&nh@A2HUKTli zyl%gkX^eh9D)VyP*0?^|i+gQR@BNZZN}EQ(z!GnC)2alp#12BluGQ0{BXEDWSg0nY zF;D8kyeU@c*|>fTz@#}2Ii73~^AygvaMf6Xe7vv0l*EY{?wHzzbO<2!+so9p=hNPP zk81g;z4oHre5NbN_eC||AZi&m59$?sW(wy^*Nu#i(RiL5C+5zXk+B&HUA|0K$cY)u zyY5?J8;3&?|4f|G2vx=dChl8+o=@BS>X$b(brBcrTtX%-_!B%c|n4gg4X8do(eLuj@-FH}AM8Lrz+svBZ{>YQkKsd0%h zU7gn1rnufc#dFPV?E6yvqdhE~ljK}61@-h6-{P)7zq_gepk_E89r;SR8)OA!g_;!|l|jgysK^npVy-*W8|eTz!q*$m!~1%#T!HsPCL|w- zWB@qgXOxuR9(Ys(IFiBlLLkybc~(i}&%e*WFr?1#ZTP>Ve7{=73;ELk6bUafCJ%rS z_>lTWVNlDD&kK}$k@9d23_N_DadV`|4;YlTGpJhdz1i8xslm9vLd=W}PLW5_8ch`a zABdDJ$M>$Qy?Ra>3K_9hPsaC_^2zp~1W|$`ID(CQi0yK-A`kwz*>U9OXDk3D{YqYE z9|~h~@*2BDl3kS_XoM&N?BoNaZG_|?59E2IFYD9nxPrmdNOvPA zPxSIU8607DjS9%^d_E&ar*mQ>l;Qxo=(Hw7#OL~)Tq(hL1O_K!KKe6&P*h(&nfVFQl7?*FCOl>E>HJOp`pVmRbZHNzo*+io!{ zJK9G5%Nd!GY4k5$ZjDHh0(o@yjV#Ka5V0P3er%?%)g=i=rF5@&Cp=fFXJ^JZ=x1!d zScCffRA1JIrBA(YK7tGlQ1>wJuxtFwK#$^kMT6&K(Jy4c{P2JL&n_9PeSj?F`x>E6 zAy;Z}C1Ko@+O6ugj1qvNwZ$!(uiNK3<*}Zcj@~N~GQ<`blI{c~W!l98K+?-GG8j&Y zb&tQ20-%DAi1l+|00LBn7<34bG~51ahNROBP*mjWU9nTIaxpKvK?teP;PlWHq3Zqu z8$w2uYc4{>NVJ2yN37=rpj>BYJvk=e;fea9&}OvG0FWdmTdb^uCCVrlE7Uv&c=9g2G~7N{_c@x*%xvM+2*~Fv#MZF$8RH) zcU0`9=B-dqv$GxS65OAaYwvV|EKjw`5X0E`SbM8o0`=#0O0`L1yzybNzH!vEs#H@` z7(Zr}n2qN`gZftij=t)C2uKP6f@j$lz8L*5G|XRPM>zFQ0Fqd>Ap=Y?WZQm>&j&XD zguo(87-4Y`W8V08(ui}ZUtTd5f z&-ulBQ0{N@V{8}7{WxZo3y^N)wO&;T^I|bGML^6dF<&{T4;T20e2>QbBQ{t!O`r3J zR`|W%;z!vIe78XPN@K&5wM8vbw0>M6a9gx^Fm24e$$zP!iNzy@`x4*l3{a`|;kpOVE;GeP zb7==a(zir0sUbw0hY)SG#ypvNIC(#wpF-2!GZ62QdAwOVS5}I`?*j{+oHiantzzd= z#zlS1RHe90cD6dblEc2mk6Tid!B(VEe|e|1=Nt9DR{}}zu@E4BiR}}07B(12k1y7= zv2t3Dl=^D2qZ30>FY7H&FE(G84>KrS%6L4uQQzt7t{b(7Aml5)$17I7wVk1Vw^lJU zCsSP-mmP-oHP4-vA5+5mQ*D=IPk2kJ0Nnqh{E4s^vvCN z832y%R=OAY>SDLzLqz~arJngGkzZqkLym(p`l#Au08p4saz37Gi4@5RIByY~>y5YZ zoMw(&iTqZ*LCh_X0sJuY6b!T0DOM){2B}c_C{jYY5+wRZ^9|Rv&M|4x!tMn|lJ(EZ z<7y)(N7!z*9Qn;^t(cXiohNgXRe0Wc#aeePo_C&In;47ZtJGpMH3>s9ufsdRk;>}T zT88f-pH4}fdHtjYMGdakQ9MP5ug+RNBBL;|Jr(2zKOh6 zA+YrC?1Fp+`3w52brR`Ou|sTTxQ|?F=H^jf#Ow?KFx#c;j`g4*Ahu#}G{6>fOp}A? z_vQt&3TXrqMM_9l0!I;ebY)5)5&=jbic=q)A$@QhiW!;=o%I^WasEy= zBRw{U_RJ4j*gvxW5U-*gXz?RWNt3W2mVG0zeXek3zLY3Q04v?UGNSeO1^k-PUKJRFLoPclI&9=`r3w9IunJ z(^ZAAzn_CVfv5u4InBSUj1(yuJTJGh#hgN#?bd7YTyOFtY#W~QJ?o4*i2TQhy(YaC?P85rt!?uHI-C;dg*ZYNky}NeFS~Qd(9PQe~j$CZ_>NR3atA zg?b9U-(G7@hQR8La!O)Ef*gEkLZQWaWNhV7r{mW8acxXUj&kRq|+Cg-wj7p>VCI*Ey~4iad%4} z<5KCV41q{c5T*iDUJ;Lvw36wrqb&3GBwQ4rb zBOqxm&ikwOW3FgV-!LD6NkOPYMoN(f*=E$ki^69)Nsci9Nl0TL>2HG;*RB7NVThJ@ zca0k{suelEoc3&RuPt zAB=-h`Fvhh4h+Ua3yyVO;Itv(c>`rlLkd(&R1Ml2bXv0$Y;sUecPFGVzn06@JRE=7 zItX+Y8!6Z+xgY083V4yj?7G#5+Y|t~*7u7X!a>M3f&PVuz~gJ|upp(Cqh_OCj^i`E z5%v(2bH75%)Dsn0Ul&{F+N2O-HvMFRz@$;h$L?y8gJVDWaK$6&XNUQ1bFCfBLlV6+ zosh0HjynS9AF)>G8Ci@wdJUgdECWhNgZ>lg8MBGIn(PO=)GDh{StsiMg70e3|B(Zl z(kAvjzE$so?-P6niF(7JY=S)XlY5bm!1X{`lhX#ZI<`b${FF=O^aR%PY`QxZ?RQ3M zOmYCyc?qX5!Y75Z?U-TV|3>KpIR9hzE1oyy^`QDvdbR%LPWe6TN7<+55+g-utzSX8 zMIh&4zKbpAq#!;yZKnWo`rPjAVqW8A6CKbFd!^eJpKt&kWgcmEe-5GBYSVT1V7~KM z=lkz!cHs-5+%7+Qck>URFjRajm&Why?G~wrYN4Qn5RDHaf2-040I3uLNNw%{NQM5X zWiIXAiCI^?I8fkQ0@_!bXxAvv?0_J^ODoh-j=9ZdqNiT0BoFb ze5}(X`Xz?%q=Ee5yiZw?Q@?fD`bfTQ#r^!9vR;S*g&0t{nSerE-{Sff*S9+dfQx~o z7)ZKP3<2?bGAtahvw@Tz{;WS11SI`N{7j$YFw83$=8-NGjyE)k&>8s_x$nXtQ0;bb z??HZz&gSkf5t!6F{QwLAf2D-Fvg+#*b|e(^8jA- zd^r~R7e$?z=0Fk2oaD4a>Jz3c&!UiQe_ILZN&qR!M~X;62seiJw!-(m$Pci&DHzcC za$SM@&C1$N7mq>@cFI3dgu^n?JJ%tB=SvJLQ78kCRr-UI z0?6+@8gTu!gmF%A- zpme5RQ3Q~rJwB&Epzakwk}ii-(V>#TS+hki)D+50vQ-iadis#6L!N*nQVzLUhR+** z9~K(gv9n*11L7@qgzrH5GM9QSM?a;Y4VWR2G78}qf=O2cWv=({5kPc8hCo!%KbL5H zgi>7^^B`SS8j9~+T^g9`hUcv;_AGTsVw~pahw+a^a9t>U=(+g+^#YP2C8Z!#A_I`b4)Bed zltNB0iG1LAv8dg}3Q0FqA*l>HG&suOaIY7%K_O>0;ydhBt2nBGSs`YXg8G)J_Q#^W zoC827v&OxNEEu4%IjDBhnf^V&YEL-vqY$4 zzJk@F{Y}k|^@pZN8E{&n66qnmfh{#CZ+1Xz#rf~5(-wh9u|x9O9LAAj@kc5Iecr)J zY@Z+?7r|sD%3VzG$DqOw%(ct2%UE9nOlpaAMDmg3<9B0z0wom!l18N-E44sB*~fh} z`*1U3dL&!cJ^Vh_-zB@$H-n822B9@QtgGZoKBItsQ-|PY(0?Y7H<*tg4U`!fec#<| z4etLYR;Z-N8z{tCW#A0y4WAdpz?1ySewLx0;JXCh18D#vF?=U+L~TdJU9STW>HpM+g675O zKf`{bF>R9Tfq!(Ii2Bk0Wq&YlqTJrpFY*2O4pLzwo`T)SnNl2;!o0@mS?u5g94vHm z+U2k=Pd}Yt_%2T+9y^;xyS=~SJD2|n`9}uc>wd2Vz$E{nyY3%|5NOLnFsZ%MBKOec zTMs5>A`pqdqYsREBG=rz2mQ^%nS1W~*E|5K!ehgh+ z(#BRNF%I8vOtycK>}@-&C2EdM%9XygM*|#F0LSpZpUAW7FwT$X0oOJUxc2Xj^$3+a z3)dw-Fvnz0(fGcD6PUDFFO;=K+8{MHPxH9N)~p}|-*d3MZx*oU@=N>_&igO*JM#nN zBfr8I`u(`SXH9P%5d$JIAQA&2cMc#DxA(Zc-^}(N14%KE6i*zR;KcE34JBp6awHl3 zf&PV7oD_5NoE&@D*XmKIufFM4&iBufVYx&09v=oM*~7bUAUVo z73W1j(n{IWr5N$!(;5G}b#OrWk0k!NfE}CpE`?UO&$#4>VjnDsW+kiLQ5h%$u_a<^ z4vG|fhgmG(Xke!TM{C|X%XT0i0Xz{f6ahrnD~+xjfKL*JS1hD=7yvoy2wSJ%@Zj6c zBIG@`T-2oD5Gzbi28KL)Mq*5!LKVz$t8CiQwZ_cEdmdx^)oKd{WO-7NL;Dp8pi0uh z{(P{rp3>d;Jy1x(@j1!rBssj7S~cEqT;~uB|CJe1z}OQQ4nHt2iq*JIl)f)d@P)`f zFE7ZpGx+$T~*TB57G-VPK>vI7zwTsU~sJrZqg z7*zeC4jHo6s0x1&j&ISEvmF21C94yph_uU^=8nX9Hw!Sj+I_ABkRm0dy=rEu0?!$N zNcBqC6Oj)>`ncqH{jzdKf2nU+j0{4H-D}gvW#s~gLa1!k z3p5nztetFy6)F~NMxMZ({dmq`hrDSDj=|87`XlREMc~0DXe92npx9^Ca~hY<%Wax= z>OO0E*1QY>UCY%Bluw|P-P-kZkWH z#&aX`1fU#It5|LJ3qX?Cz~_~aH`k_&bmjkEu(qltij+C`>Gi00Z;NAUC-Q+3g{1Zt z14&=$C|B3l5z_!9spqUi0{wv6Yqp^L4{}e@{CtI+?T{mVR$)qR6u$p?{S4o3VW+qG z*m_%$;$sNfeC_(_&H;@BprB#AD+5R$DTLA%#{7(vYmvsA&_T6PELXK?XUoN$>?D-y zGCsqdm?p*1P!S0sT}&OrI#ZvNdkxkb@;OG|=O;357uV7*B1a;|^8i5kAqzvdy=D%} zoeKRPTf)f!JUcNaGaTP#yw@|;Erk$Jg(tlym!Y35wJNmsFi&xx$hJ%ZM9Mv~>><~f zPT5D@2QhD%km#51Qo?%4n&yr20d|^2Y%0#f{3GZ$BcL--h{OM$6XCq$oVA@TW28KG zfNjM0y(oQ^lV6yBT<7+F?GD-N+wa_V&%w$763ve+3ZZvOkz(9C=7f@}5mbML?a`hg zJHb}96u%!=YlDqF+xR?hVgci=SCJ+VX_gx*=B{M`d>v98+|SqGe-xsPl+pf=eJI{U z`kDAdmVwR)NQ&1z>~A`zgL3*zh9GQF|5%^pn73O9361}4S8LUr9PDtVG1-9$C_LMP zO5O22Mz}pZ3gy<Sam3`0B{lUcyhD)p=kU8;3#PvzhI8b-3;q3zEiKaXua#W6$yMl zyHB=ziq<>xRc!|2LV0|OlzF1@KL(O+?syb^zi7TpfH*1Ky$)V|Jz{NmP3?wzF2~%uHzUo9cFo66;eIhPeq*N1zp!u=1>K(yl=4jWSS#?RWK<6lFI2?-7EKi3&XYQ z;oO(Tg0<8low^IL<7>Zj`Tv9TN;jv?g*2`^EHkj!)h7e@LNVFH0!SWJ>oq_mb(+;- z;S(q!;rXu@aP)Q8i9ntK|}gTMHrGGz=+LsHpU+6@p07{ja>=eru<-*ur%^$KzRYU{3XhW=M%? z8LLRbuqbw0GaV=e$#aGPCxk$g>lt<|awRW zN8ox}#2jxFp5u(QKKNcg6UX&JVa!M7C9&3m#IMRrPknO$DFT%KN)f62o&{B}=iz-$ zsMWkG2g7M*RH7T6XGF0}p*8B0Q|yD98z>^VJ^e;Sr0viP8iD_jBGSn0?E@fP2`E7c zsWjT5kZiR!?d0FjW)~|HC5(_nvFmCxt$kJd$ndagb-7diFgXZQ}}7qVHYDzu9Ug?`x{jxmF?4<{c%`j;o52fU=oAl&EUNvFiH4o zH}bEG{d^O{j(@pT5O{l9td?_7t_b0#s_}ik1SX-Juesk;e~x{k>i_^i07*naR67LR zl|T|guqkrbujLb+VR(*NnW279q|=LoQ{C}>XJv<_d*b&kraC#wBgfwoO(7|6b;!Bv zT|NPrh4(%vT{RK!JKyk9-vog4RBQin9JdQCE1tLjz^~YPAoDT*Nw@W%D$;qK5(LOb z?PiySPGqfDv&W~-!m(gwBEGy+Mr*~!@QfPPZ@ ze5-(BtoTsAh4cPmKC#|W-=6X42F$NQkf1z&BLxpyC;r(&`5^tNeoGUGbWH74t2Nex za-p1-#e6$4COsrc3cJ%vRVl1@bf}0Fls|(a3x^_-41id982|r!ziWK{H*0s1V-Yxm z*o<-}Ww7}g>$Ge|o;I|MD0R(r^02;6w0GJj0Dcx))wOht>5_f4{^0@?SG-3m9?TM` z)YT(p)R~2mg?@STqiSx79Fh$Rjrz+#XP}gX-=7tm^nBd!B?W~>Lkc?eia@lB2II1f zzx&Oq$B_~eKy*g!?rqF)$k80l2Njcw>;*6It$Z<#pO9-A&5xv<9{|(K3_`Mbn7?{M zOEe#uotd1mQy4!r&`yKU-I|aB*c)`{i2hvtQCz}xqL7X^pkKPJ)&bY?{p2Nv@y7b2 zyr_+V@~U{#g8fDp`O601N1xyX)Gn98pJZd6m>pN3jY6Z6S+@i7W9{C#PDm@$eSHG7 zyA|4G9~)>)df@kJ|0RR;gJ$k`S{U=JVMwpkPU%;o2s{G~+dfWV;{7Tlx>)buaGoNao(VzMD1XKJPmpq?DO~+o`uK;1hhmOTq4l;oC?PsV2fUbN8?DZY}XX*Zx}yF+5WuRC+aK;@d%|Pe5Yu> z)^NSse16$vzc&l#7g31SS5&>B^~)g(mOcY8S|AVCAf=?9$@?k- zAjxlj_A7v-D*&W*s<+=93(`PY3D;e~yZHCuI@5~nbKk@9AzsVN|5`-M_~N6r-y4Vp ztlcNw9t)o7xhal~bi3MU=Hd592`LJZ)&TBUFR~n-KLUELR~lXaN=2j-s-CSyIqhH@ zVdTZaj4w2f3&X7og`Erl80<-<5Ibww5;M)C&|2HAMFL7h(pQ^#<9objol{c6KzNns z-y^rlg%--o8}AKC!y#u)b_e0U2laARk)xeSP)KqBB#CokHSY5#_Nv^#XvYe`Bt=R` zXADVN2j}6rj__5Cc0R7))mZ{^)=I<-M|xcBG^C{QnmBD8$Nzq;UbW66f04ZiS1*(V z!1^e8mTRO}z@n1lf<-80eF#ZJ2P&{7W^haysX z5RNw}BC%;DQbgLRra2?+TbveX2YL8BlGQk)N&wu{^wJnS7bzi)Lw>)SV^=w-M`BjC z0_RJsHZ#sg-kP1M%;I-zZhkzD2VjzO?T+in;eA4e%1H;g$Px&#iy^d74(*nWNexI+ z=$u}u4!F;JHO(d^tOM3|wuIBp_m}xW)QkU7e+Ue!pIf1l%yl%}#{D__%Kkhqmzz^A z!MORUEQ(i9&ws_=Q1-LCq&uQr5Mb1*8TxIPCEFptz;sS@ zb-y}fTl-QYkTliqk?QOdxK!Z{anRpdbNvZOuLP1Jg@P-=Bsc{5d>-t0XG`#Wud;od zK;BF88MfCVu=F{rUZQ_zA;{BY46Nn%`JoI$xV_Dfv0ZrISNR^XUSa%I8{`7Kcc7G1 zL_evPXabXt%d(=J`rBa9KMLeD^sBFHmF<_q z{6fq~jZFhcl4T&N+%Ny5&vCo_9{{bMlAv*G0h^5Puu@gHgYy`_^W8E87L9e=`Rp#V zi$bfjtus*g$Uk{^n+s@9NmfhkX=bino*Y)L?3j4k#c{uFw!KXuh+4U=aQ=*RKbOjL zgM@M;^83URMqpO}B;oo|sG)}TW3EvtsSE_3HFbOu>RH~(sWk@kEpb?FV*rxm8Fs)b zJIJC`#169?)$c?Ot_C290Z3wvfJ~&2G&AcYY5w=3ILWu+yZl*xWZj`aQZTMzo))Bk zkpQwJDV~HONq?h%#$V7_2k@8mL4*F%?A2?KUn3SOaxg9tGqV$lNcD7g0@~Lu`8A42 z3gZo~8+;!tuK(A&{zneoV0_1SdQ+URc5~Ekw#RHnx$m)7a2NG`m8vO(iU$*mV?BUM z_LvecVZ(vT^MeWiP;!HleUMfr`X_rNLLi_U{7Dg2%k2qBB(fkG1g z-;f%Fa4Uu(+?FypEY+9$!-51LV|_7{sLz zr9gI#tp-XxXyh`Yg`76HO~?FX+HlyQpmf*6brd3()jm?!94RRr zrIAL8N^Ogen9H&fb4lGdxd=)C0+8AKHs7iTa;+*(pgOSQXnZNTGI-H8oj@dO0-FBmZ;~b~-a7H7SL9 z%(rXWDEWpsYEekzpRyOMBlusWloWr*TQeR;-!qy&6JWNF6IcvoO9?w8hc+I*(;`vr zR;4L~TWyv$df;oSdHBxHo8x*5e*Y!^AwQ$Y4*gs4I`Xk%QquyHVn87V6xx!Z+ZR{%+02+@|jFOQHUZrj{< zVE`Fee5~0&rLjXZm&rGWp<+O~yO+TNr#9&%DI{5)T4&~D39vY*)?k4XDHL4|;Q2>^ zr0Dw5{Q?jQ3#&*GX`9+$=Ha<&N|Q@=5{|Ia#L{r2wf5A+h%}YM3Nt+eLm#VGYw_IC z|6W!vuwCLCfK%2vCM}#-PNm!;T^FH$ys=(?9|pqA#603;bG zB;ophvR<_UAjx{gBBi8{^-FTCgo2HH-mEk*1jyaiEL>+Ro0A)ng(HyHWJjm*++u+s zu<0PH;~Q|^>-@Cz@xSNIA-SKCGL|UL!hPJ#JcLX9uq1mF4Z2Q=(A}MVFyDAch zaG1^KlU#c485wd=ueT<-!}0qTJuNjdhvQH(8tVg$5F#@%OFLZ=8pykLFsZ>|&B}^N z431+5?Oi#g5ed}u#L#4qA{@T%Xs>^s9K(}yHty#Om@EV-t`*HIrZEJ{=OzY|E}`xv)HZAF zH9&DjY}Bp}9Zn08zRbgr92ezDwj0mg5JHMIF(65mcX-O@SUtWAIp#>2<}G$a?LdkU zZeqDWxtY~!b^-mBTB>VMjtxK(fk~9V!C=yUYhGqTmc}XW_jUnzdR>dOu$@sD?DxR& zm7=mZBm*#&A#|os{c5>CZ(=}F5L(nBrIm1;*}|vhMtYdv6owaiCjcO&x)$2w_W^c` z!lM_Uoa8^6e>8`XL(Zd}A4mHNl#@_S^DW{yr;sDZ9%9oe2;p*o-Gjo@zv}SZMc|KoSGVidU0MpqqpJr%Mu~m zSQv8X4pT@9$2aw#;$0PnULr6nP|h_3)}80%nA*nHS#xs$CS`59676(qYD{Jb(kP_I zF}9hl5Tp=x&}>uKIDk>|fE755wqCJ<+zo@cX?SJl-n5A zrB=>tl<5E1Hn9fjQ2|H40hpqfW95N)eR8Zf4BvZLsk`$O+Q|Z0RTzrnd(C1+q0^69 ztMtrlxgT}P{b;E%J!1eyE82)t#}+e$Bxig1IvptWuwAk-gjif3uCYEu^EXPZMiA*8 zaf0nqSm*P4wi)FeC?Oe|uWn;YWn)NR0+HqvNNIVgs?O8Kotnhx494B`Ah&x0^U&O= ze1D_>k=Se>^~QQu?_vnO&i|dC=WsNuP+^-wI$px@cztu7);CrNhJFquRw~yL`!#G| z#{7o=R6noL?&Kc5N?;wHo0Q`o0otRS{z=S-{DFQqS49)^|Nvci;QQJe^L>+>`w03hQoT9(ey>FaJ{> zV3K=p?z$h_&A$MY7#` zrJ@Z_%k|8}B(%#Kx5^)$rwt_wI z5aarT7;(Fb+g04IjERAy7)WYTpiOKT`DPQ=2o#7y6ntp?9J}XeC&X5^zyN^px!og4 z08x+RV<|Eiv`c=+g9Da#E#8B4g9MON03dNCkW>bf*0J8{=67Kyh3HziHw^=4qC=q> z3=tL1Q|bE>P)15Tm4B!i3@Mr6b~jw#P1Sm1N&qdawQ^<=h8KN6u2!VAIBt;<5D>4kF_KbCyQK&J=x0v}Fq3iT~G06b{<5iXhd*pDQ?vBYIgq2z$ zYVrj1NJ)mj7v*WS)nMUml|dvGDmg{K)7L#`bl;cR^J*uqv%_q%=DD;}b)?rP1xIFX zyh{@L$F0?Bd=bhQ>VTf>m%$y}ucThJ)+;CzsSrp4=wq#82${z7Vx48o`|<=|#9^3} z8^sh{ZOcI`>{eUq8ukz;kSHQMfPcuf`dFmVA}Z7&;lHKIfQb^qWs;#*&aB)jjaj5I11@;LIQ+SztVUt z6DhHwUk)8#w|GGvj}PB$e7J+lDXOPI`oHo6iwtT}Xw&o3*V~X^Y0WE4MmwBb8kFyq z16Z4W)O{4=-I&x916$$v^nAuA&}f$1uF%m&|75o>c0wxr4kdCBEYO|2u1F(rX-wkr z%PsN0Nu{o-jvhdZ)Tjgjf1A~;RArWweL@FPL&%h`2a*CMglElWzCb~-h3#f*&<@|R zPB4k*ZcuC~8m_Nj#ZhS^B+YlE7r!dF*V96am~_y^c8w@dmKZCcu48s;Y?c zlpdRn>jT{5B3X8zyHJ2MUk&*E&EpCDPa|X^{{NiVtQTm^`_xXhLSkN|4>D53M5siy zj|E_cMG7%Nd$VFd<9hcyKe0kb&QGo9c{#QH#mAo=^6_Qqq}kZ1HRivW~5 zwHW!ud{$-x>ia@nQ>@Bh{FAeilYRUyR-c_Lk;2c_ z-s?{Ny}>~&pJfMSd0asnC?T=35)#KoCcU3+5JAX1MPTd;)>gFyzenF8P}(d&G0QAs zG%r~poj{3tmOnN<0LP~!M->QgSt{lP%DaK`g#`s|9V%b^7yF%f1J{iek#5*J>P!7} z1j_!m`n~x9zT-PQuL&^RFQH7Vf^|rsWIQD~!s(0eR%?&W(YnD+Rb&U1V0SBy%Jj1d zT*CY^-53h3PcBqY>S{mPnSk&1{^RL%4xmxtv1ZNdpo~;_v{`dpFOz+wzImcCZJU3z zK8<|)%;U{yqhg0#i~K`4zmwZC^DsJ?_PNK-rjc)xf2jUGk3vDVDm>B|U`nC0(+0m! zNDoMNb+Hagjmr)!;du)q3VrjiZ)N(Yx@NJS!iJ~b8LXR<yr zIn^2GV_v9c5h;J^A{IdzpvzxR( zEe0oIa3TgLVjwB*2jYI`*K; zrWJaZT4iAYHtj{00jONoN5_L?BW*MB5tOEA;>tCNtcp z?C;$TC7WEU#J^CQe!BSR2XH8PLsDJx*ul;gT9Yzx5L$=WT29IiKHH>eXWw&byCFk2 zz#OEnsv8rU?Mg7{6)U`7UOcCE2wHg6$@#ed9D90VG@iG*G^s>}lBvlF&QK3h(rlTi zP9qeEJj@9EIWNz!ZTMdR7U6%v^`lgl^M4}^l$5OS{ptQ&&3cQZ@y9tlnN0vla;v<) z1qzYoX;RL4PaM($`47d5W)1#VVgQo(Ux!K~;D;2GqR?(X=e}8t>pw3yYYJtuTuvzt z!S!m=qul-}yk~w)aaa-egB!xO@tsVyGaUItY&oNyPw!#}roj9E&Vuq1t^*||LrP5l z$zGQ0Q~)M@qcj4MB1NPR#d)}ljrlimLNCH~pBI~igZnO!6^Wh>6cFt0`PT2lu;usi z+W9cJ*@Nt^IRa(I`2&-;uOdw6p{@}NKOUb2LbNv@g)FW3Q9;wkFijZC$4+N^e~2 zmyIz$*YE06$ZzAT^lTRjf2q!P+dRP9QkzWc6#Ava}>`PB&TH!mpi4mE;2?C!(V5wfXYEt1kD&DE<16uvPxN0^<=4<#S=&>qtd)jxuC zT&6>!E&f-NAL3?__jFB)=5HsgwQN=q^*~%FAjz!Pb8&qF0OxBm#BXQIWZ)Q9_GXnq4bueL*=^>)i5w`AV=HL?DCZZ{Zm~(i0WVjx1-uL-6##s?(^KP;aCGW3 zoWTFjOb8-H8#S8HJSB8+N8{QR>8F-9G`{_tzNnvJ081=rNuivUs(HCdKGr?Xl+0+9 z*G#{vIKsm^Pm3IFyf|%kXxiZLx;!Fx;eVu%K#uYs%g|AL&HeXnRsaTN0RC|kv9@x9iI8OgC|$B}~0 z7<)jLfDl(s4-|LnIf5_Z|3ByNa+>%4pZw5z%eo^KD6H{FKxXzh?@ewXlwFn>MC*x?Qm)j(0}j+lRBpJe7O=Y}yB?lzFt-1383h^B+s6 zalH<1ixv+8FzTLf^Zw&FuYa*a>B+k=pY=PttPbriYn5a(xxyZw>hA(kkzd!6NyZ?FKm@>AA+y!Y3&kNEhl z1!|)4y=1V7cd@Z$=53alFnI2WjS;k()c^x z+VA*vZa{ffT^lAwr`YmVO$(yc_X>P4xu|9vb-#+TZ=_aHyiZtFdegu%hJoo)^mFia%J zr?A6T?XVU}au|jHPy>J@&nb!HR{}#fDjz8qML^VHxku4X_tk2NnTF?_oUC*P|YN>0&rulC&0d3knL?Z9=;u~Vu}lQPa4 ztJa3YIx{5M4fmgyugdi)0o1XenNz@mULWTRalenmc|#x%l#wKXM-k`~DHKIOQlLPD z^F9z^h__4pAe%?;p_j06xX)rau`mGFpOi*ut~7SArAPU_eHe(ONRPyMFR87j+BN1^ z`m|W8NI4`_V2VJbD2?v>b!l|orz$T=fhq#3erAqqdY?0Ly_l3G!*>lt3AX1tPA7fG^Ex#FO56jaIEPS6LQfrz!(!O;e+8O{PtEMy>&(olU#AZ8{ zPGd;6BMc7ML>WXv8aZ$q03Zu{%QB?EHL1k$`vN|)(ATH;o$8HD!XQ}&k&g0($|*Je zKf2EKO5s@NQ*iyjag66!CC3+r7SJzbdKEjmsFw~x7b3q+dU9?GAp@*)d=G;GLjOTr zu%JA^J~fw+kNfApvwyy_zmD@acD@ohY}J370_y8W{Fge<(a-X?xsQ6hSuf|c4h-m- zj#+k=fCyIGx)~|6w92+ZIvSuv8>AIpTZat%73sFcwiy5t`L+d0D+{bXgLHi1$z}Ba z(YY2CE$cBpCLhW_Qb*@^Otkd~JRIisMmyTTrsv3UEk7_4Pym4(!-E# zCoP0*a|30h8>5gULuI+Bza+q>65r9|=qHO9Uo(BY&M7!Z1x3yM9~-1HR7iA0NLq zhfD*IB%fDDzEIxJ>0O!}nsBcx0wY$!eL{fyA~7d5A%*$6IjeIF^Aq#OAcS=jn4d%r zo*?~9d?HEl>Cf^b>ur?7M+)Pa0BE4z<)@KpPq|}FCZD>cwBtqvHDC=0qEU5sJs4!GZRBxjl^-(@fudP1c=yHpcMIr^OAQeGK zS6PqrESGwN#QMoBV{=gtL}5Z|q>uSavcK0I?Pjr=X!8O#?3e|Ll#-6Hm8>=s0!Z^p zf8CEpp=3!(ZXqkrOAOUNfJxezH_cJD1IG!t*(>oJ)){sHY0zI%D$iPnMR}fLzUA|k zFFt>HJP77vR^z+{p*{mZi-6WW3Zd@AF|`xv8@gWAF^n%P41sr^?NlqRVBBF#a6A}? zbO4Cyc}3dj<*7LiHm>j`syc=Fq^M1f%VU078j_^wS>fK5DTw z4dP4>lUUKR2uRCL6^%CwS+!H?Q)v3yJSpgJ zGoG5~k|O_6y;(q^pN9&ZpYl+Vljfz=pP_#Z`?=V@bz|*Y|6uvX;7AOP#NbE_j>P>y z+z;G{ejo;tVj$_Zo&eoKLqJn6mv8}429o|;gt4CAl#1^&6jEvOs@&WZ11q0yj_R1V$d@!nqZ1i*x3r(Clvlp^wNmi-IPACY(}-Q32`b+<>R z4f2cSY=2w^hHYIA$;M8q%^HTun+zaD_lrQF*W`;ThlSA*wl^^Ftx-$OG#~G8*Ca;a z{VPf%OMQy~skG}(#QPs(`_(Fi9oXy{wFS=~DI!JJi>`mQG&=t^7T*6Q`K;P5U|8fQ ztW6vSB)#04hWn1l4akuL(@j+QeUbpU^mbE|Gv=546ikiSIVZ{rMXDiGoBSq9MMeEA zU(R3<7JGrp5FoaQk%B{Yc38Gk2|J{dql(>pI7ZcKK0Zl?;!u(4_a+Rf7AYHD2|!&9 zL@HU~bAHTU5^E)P(6BRN8J^>1wIc|9w_Hz3_Q{99OU8j=ER%H!jH_|`6`oGOu_VT( z1|Z$Wr)2FcfGIZB8Bw@(0Mbr1%^?6P3eA?2p%T(wInxqOVPUTO4PCnQ1$;XZYuIyDNM0bxz7j~LAcx^LJ;`qRH zJHHLUqCtrcUM7tl!)~V}fk;EV&R$!b*FWDT0FZjQ4;3G(HKv!>ygrSzcly4|54gB) zvTgCn68hibkVH=p{XefsQAkkVTC2VYBz+w?K|m5Y1Owp0DThk2VA$t}Se?R7W9uZ_ zgM6fn(A0pW2(%)H=0UvYTk443AyE#Z&MY->)bW*SW&!2NmU04XuXo6{NKx*DEQ2*F z4Ar*P;5#NUe^6ty1Jjrv6?(g!QuyBaE(IFjR+=h%NS4Nhh1|h&MF8ma>c78r*P(GO zEC)Rmvc)}{u`PU34D2guQdQ9#S&J7cH!j4=7yxP-f<=t$Z_rId8uhQ zUeDL5B?3xP{Giyz2#oOMUXFDD17L^$0~nEq@%x=p&zjnM1`b9UI)o1+rSEwNDShWX z2H+4wXdUF&%Gv2D8LY>$16=|KX1b&D16?SdSd&Y34)y{GfEM{^-Vx11qW(0>N57MT z4}nQ9SlifAq(OhF0Z!|~YP*GbiU7!IP+zegu9xM06L~8CBcfd2%K2|i{fnNLQh-Ro zbC-c6v?q(k2ZZ=!`;fkk6``~MAQ{ZtIIWBKXwT4eon=#7Vc+eO;O^2A+-Y&ANN{&3 zv=nzMPH}gaP~5#Z6xZVJPO)Oey=dU%zUMqI&Y5{;GCN;j@9X-@TI(llfua|;Ih7%# z0#HDtk_J3lBkXnKgI{{*TrRTVvjb(XkM&&9p61Ris(DXaW+d(Q_zL_3-*4lMe84$} zsYf=F#=6zXprOrr=tlgLZ|{p_N6^jdVG z=9ZVJ?x9@imm<`sTWQo*UG;#@B7tfSCS@}6$98@E=ljyuaRg?!gS@vrPWoU@#JLQ5tv zF}FECwD&dcpF=*3c60u5z2u)LR$dgEcuJ#>iVaIwss2&&Y22gQAr9L=X50(D>VCza z+a`sd8S-O_3=(7$2I0{RwiHCbpwt^?`5i=ynP0-xjCiBU2=8~f2?!tZ2Fn$2WJPp) z_wNZbc?`D4FqoXLqMwUEy5;`wtPCEDANZq(QrFykV#Py9rCRW)B>vmPELD)Y{?~O{ z&o)5N^I@jvioWmmH3Mg2jhHxM-~QAz&~a60c&WhPz0pns44*@n=yPe;8YXh6*1?U4 zrE%@Y&N-Z2Ir(y(tCz8#fJ5WWW=sXX7fqFh$z>-UJC~)qBV$LoyX!R*ajw4ftRh^^ zwE<*7lBEw*c}#Rhe?Lw&WXqBDfRFb>ETYdynDIM@RVu17B>e0Nf6kePeHduG{M~q_ z^$l^>)7?G@%FggPnluzp@R|rWbUHwH1iiXY zUANJjkK6mVAHgSwm%boG10@_t7nmP$w2N$p3t?Df3Lic+LRxa-9VqzLdA?LH%! zOg}ICY1gqrzK{aYnihQSq!6ATrgDAjMKRf4FXB7rvy01slz^16&n?)r3YDZU*pQAQ z!Q&wL`2p-;6IZTxD~hLksreA(7BZ@rorr>To2hrhf^n)!JFiO&8?oFc)`B2+8`{-9dqo6k(h+Z!#;Kd-oZLwzWEvy`W<3C3S6mMwNdrQ zOZXQOS7d-DN-c>Q@;0UvRhx$LM5=bKofnu&Y3*qB801DQa+iayX@}JNs!@&<-N?)d6eK>*(xhL zW3CcOcvT#F{`_DYo1xwBQ!I>wrqNvIAKQ~|S*2{##UO1I;+$-Tvs{G+^$uQYV9g4c z+_6cOfF(07P&})^{sN=<215cYCH+Txy*w3pQRtwjOhLGBkC37 zdplHo(gQVHn+p+J#hnJpM05ueXAk1dHy`QSLmrJM9LxO>sn@}vDB^~4f%AmVze-4Y zp%D5}&CfO88xH+Y!OBCgsKV$PL?ur*CcIcf#b1mBBO&P{`PYwAquNU^gj$Th?tyqA z)#*Xp{bD^DhEWv4E6P8ArbmbS6-zJRd|dzsd&zM@2cpZYN5__6nLbo1bV2grVK{}qT* zk(NUih%}HOG1xv;N;;E$`eb8l#UbKyxA3d>S3A*pCs`Qw-Qn)t<&$oy{$mauCbs*U zmP;1@JAOPx4UlXTD#<%&@)5_i$0xjzwue!8whTnw>Syvv0!^(&r~zFGU7p-7R-^ZB zo$2y_@(KPv@RO}RIBEP5{)n7thN_Vm%nyor+2HZYS*p4YG`{jAW|1LBT&@3IkZpQh zbt!$~*nndB!Fzdoq9ny?h>YfyDY03TU_`NWZPAXTq#zmk96_5A6uqQzkqFG4|LdHL>@uOn}S&YDT?Tx;(B6v7l0FH-yFV9 z@z7`@o_BK@hfVI+eegO77bL#)isF$}O<&%zMPp$#N9R-f#nrfTJP(A78u$}aes;*; z@T2piCgk5I+1Gda4BAR@h}x0ESgd$X2q;wQVvD1KMRridZQoB-@^6C!v|8yVfCArl zo%F+>`C30uh#?i{?#>F0_GQhUKbV+>baR!g4WkVc1mmJ;n-(^M`8Bu+xDj7zDh#tLC5M zK!}le#|vhZhL(Qmtsq#U1VlX!5ilTHAGIQ@b90gYLMK5cSY_3->He5L-xCl5$Tj@MgA|%laIqouv z*5IsXCLT$)f=!F+rDs!JcUwJ>SufWNka;-vH(<@~dTF%jJ9u zIt82G9k>46L4Z=e82j|~;=fcoq7Pt7q4|#N74ZXW!><{yP_ZeX$!O}0sQC2^`Jx6m zcgjXHMgAv-rG^*c>cEYL`FC%?BOMQ`I>nPGYF2`zHNvF7Vpf8;V>T0=9>RTob&cfl z$ED2s7ekmx;Xgtq<4=f#CnQC+x-}95@0W7Y=+rVkh$xT~0PMNdUL-qLStRLGyyCVL zJwsga)J~knu8FfqCRDpnS?8i5u1C!iuwPLi;@&te>Kfsrw=_(o3zLsJWmqTeK%gxF)$i5tXu8J47HBNhw312To3YnpWP)x0tF8+wiH z9yTuhgZiT=kIH_r!t=iCy6UJmjpxKQ9XRmy4bx6*UxxvjhN$fD7ERS!9nG)Hb?5wy zr1uDN!;~c3K8GQ?h1TTGy;Ku@UB*@OjdD092KvF*N6T4+D`MZRLWT!k-{HfOR2gFq z)2!3|${IM=XVY&8tnE7FZic_9%yf9jL;+elgp8W%96R!zG70;!)!)YRU)8qwj#0m5 z^c$7HeJ=2jIqSRrnyOeO80uWcR}`p$-*tB()dYb}V7F>bG|q_qaO@-woV>hyIl8=e zXHWh6L4(RjL#fvX=mH!UYaJq{#<2~T-5I&DOPQK^kv8`FnicLBd=4EG*w5qwTZ(FR zPb=^Q)etH?;71Q-t__Hi1fz0BIMPBwS_}qmS*mq7|H3`a@C}Rd{U4sJ`;AX~YJ86V zgQA=ymoNTWuf_(vfe6}9!w!6kc;@hY2Mv+uMR|c)bbT;7CwKEaTy_k^h|%(XYS%SV zQTWLU7x$e+$h+NAxEWo@VUN11BpBN!W@*t4O{ur$^lg<))>eVS1l)4=9AT)#58mQA zwjyF}lt73eoc1G`1SmYk9F_B+T*}`2Xp}F!y5r8io9f6fPQB{$v1XBli&R2ho(Ci+ zUdCI&`Fba+QxtR4CS2pLND5xyl=(pW%^9HP5m#)Y;s@5?qH}ja7&-ZU0cQS0eqh!T z3k`eG{YVi7$aBb$0jLvtoh}^-)`6FN70*o@=G3mX-+3aPHA^U|+=vTSnl7{gMF|V~ zEhLdEa^d+Pfj!tHE|Zl_5_`pN_x`TyVFyfNl+_L&9l2c3!Vjas(PIxS_(z(4P(|dq zD6J{b*p6?sFD$O5<|0f`g!^Z*gO7#WBQZ#>vNELKCQIGJKttl~4oFIaTX81=nR*4^ z3|B^uFB}S%z%2(tlJaS9$vy;)Tt*#BQ)vblXgqlIxoMNG!b#hALfMo+^>89+R+L)A zOp52DXkopGCSn4s_(OvD^H0Gdw2=F9zf6LJOUp3wY&rQz_^c8nIhM`4;WI`~nu-PH zD(il=g^3$L-ZK097DPW2sZ)qKfkzeg-Nw>hO}cpd-DF-Vyc0-UI%A z1x*jy3v1!#XFmq!6AU?g3qDv9Gi+%f4s(+Kz)DLW6fKOIa{G4kot3b!N>wu|L;xsU z(WZs$_xl)!PJadGoW$jtpnjQpRF?R$xK^@ddF(X8RmQk>vopdkDRu(8=lp}4{nsyV zuQAc6n8Oc}&CT+2+Wadyr&J<6Dz9z@jfBgt~6AQ zp6QNBYJ}U1{O34_$|1+R@h-=!_Z%`xI~sXE`)AauK8fP^iPf}deCmkGdIaR#+C!$~ zbqZ|gJ95)RQ?nX_D&o9n5+gqC#2}N9M(D(FL5?G{bZ_%~emL|yztwLE z6v*yhoY|?pRH6hp-OS(_LL=3%_-rox%Km`E8_Sr=6QC>n>T*@KVJ4SvQkcPxHm#Re zVxAWO%}62-zB33(EEz3Luyb*lyV~Ul;tHjrFXGr8)B{uN@Gwt=VsFbmY#l#suI)Sx zO?~t2?n{;UtNYUc18z$y`Ue!EDn`&*fEwWp$H`$1iwDy4vWNgY6XCgzW_@3KEIm_@ zDud@)c;T;K#t>?n^7Q+hfyYz{A4S8JV(( z{U&S>Do3kUPL-cvWt>Ah#gTC!wWU$?Oc)Y`Z|;cNEvq1-E;oV76a^{W^7+CJYDEZT z*rgpPWSak+w;QrkbV8TdRUThPF1I;Nt#-?@*h%I}8z8ks6j%WmTEP$f_f8_T6B!UW z8aWyp-eafbHx=RLgB^#GhdTPL83_3ks-RtXZFL?RHEvXtNTbmx#=^;j0!W;=VEl7$ z!bh(kc>V6wuhs5tK*YM>off`zn`RsN6?X^c$gfX6VqMXiVh^;p2)d3O-R8!qXJv+M zp|B#i$bn-<=xgd=^i-uPo&9|zG}(_{BJ|Hv70LZqX~3O(qm*gq_{F=cDk#JgFU z$Xfr%q0Hm8_|3mgb;cXT@WGV&Ia@le+zP8s-2)gVXZrSl%McDik5mM1Q?;}`xF`9#+d8|1+ArGN~=-!?;zwsZl>-+s%7 zzJY*tj)&xhk|!q*l}cyQ7mO+@YHMrLf!-`etuQtekO3lP(~xJVu8+0MiX&qpgz=mv zMW2L|M(=gQsi%`jp;p;Vl3|aZPJ=MdEzkF0e>)fa*F{9Xymr##lvn*7YVfM~($^DV z{{3j>uOS_(%4}O+@gH+pk6MR_#XtQtE1EjTpTGb!r{8u#&u_Zz;v`_9nFq?KYv(s-Pw(6`*q~O7#afa`$X1KExXD8jA4bkYuPit< zaU|Q-qMF+P^JkAtF<%Jt?}BW?i=d8USUK!$!+T8rR*iHJ5>5{F{sT6?DK(o0K|4E| zV`JgH+&hXM*kDP{dyO*y(5onwMiK7ur z2NUK|0w}85UprJWWz?e@RRQ5Q_Mk8@;L!biZer;hS77a5*p-EebekzhqBQ+B_#$8M|Ks_t7uezWOEzFt1wsHwm0+TXE^|3pTK@2}2bg5BCA^Nly7|sH+F|0Mi`d(P0yK-xj>?mIs%&JOz97fxtuP#2b5b2z zJnfaqydvwCUb>m&%e0U233ei)cshLv)Ce12NamtV(p60>@nK!{%#6^81{13v@uA2$ z$88?_8UFL1DB1-NmVVkbDw+R)IPBYZwnV1Ro@&G7in!(R?E_-h$(?tqbWgt`IPuYH zQ`x!e>jd81p@2gR4y5~YStbWtTzRKS@y~yy^>lFshF+LdBURBqdYCwB)U{!goK51DW1=@>IViC`>}M8aB_l zq*O76)z~Nm*CWPcmNUD}QD8ACF`GT&%?=3-f?6VXa_1Yg0oX9Z!3X!^OHNT$4uSX7 zs`c38mD+hpg8~*&?1{_q*Y*YEui?y77q4W_xf{bjAZpr3EaD)6qUIfeV!yRGt{cwH zK<8mIM6@luO=)vv3)RtFwHu;~-OMk`-xwD01r)Tp9O#;9zQkVAo zaN!!h!vVe@=OE;LTKG@7=NE6*qWRDs3n#&B@$-opBuNLsY`w!-NooiOV6zORm382W zXH9hT1cd~|3n@bmK3^<|20Kd{Lsi`|>7JEUC)EPRZ0ghs49zmBsm_Y*UhUX#G+&>6 zDgD`v?Kl7MZ@yX}1)4`PqQ`ID`^;>`vj)8R93Y9c1k->)a&~pNbX|oac3_yRd)4Qv zc8Er>@Tgt?3#;x+M&Lf(&8GLCB!SAv^y4CRTmX%IP zVh3E&5(ASIgpY=@X=)A%DD@NxSPGMBaZprCDF-|}S}xeh5ta1pGBuK&egkK~1UuTW z_{-_JO|j}tcpth%L4832`<6~=yvB(g<=lRR`}5_Cg@wzwY$Y={-eVpcY2vX?(8fp{ z8nTzbSI%7R1THAGIaBphWUCeS&a>F{=CBSSXQga9xEdAg7%=YfBK~3h@PQGTrXLdW z0VowQq%BYxS$&HdX(VUbox9WMM-tnY=Sv_X4jJ6R>bdT` zynl0nMzIq_v@T{_>*jQ$=W90Tf&|5mk}GTjzJ9&f8G;F=11yT=W5iLB4;!CIrLKM7 z;cRy$Uv;9J4d>*X8v1dmBF|?S0Y=Gq04DT+L=Sy)fyr)o)S_@HMgUJSSAm^;uEt@Anje7dCfMC5%hP*>;eSbA+Op3|CuE9kTnR~=6 zvbVU7aR65YZYex5*1X|STASv);e9bDwb!+GSgYC4@k?R2{Zl-@eLs@@(l-luvS^mt zxAJ{@vpY$Q%MuZ6eNwrC-a4}{t@t*q?N6=LIUQJH@g3F}L612aW556-xyKSbaXC2^4^dQUl_(3@KLD6n$w}*itkd-MM+X}glJ)V>^OZ?Ixd6L7RKC$moyYbzZ<}Ax& zNtEAs?IFCDXv=QNN^bmRVv+$CNOuQ#4eJzvP!sc;QY)occ~gD$w}isMT)?EWJ2b}+ z1@nw~uVfOi7R}K=AsQsO<=1}v_s^L~7d|tSV)@_SeWH`C3^R1jfB6I>mLl@FjY%=$a2oSE7-| zi4O?a1#~ZU)p(b5orIKVu{)#%+cb!yzu^t%H~$6Ed7Dh0(Q`L=m8C)6$)t*2To>1L z9yJHPt}Y+OAI(Kjd;H_qbV?&Pi_lr~i z@(u%jGxJ|OpvURg$q}fziT+$e%nkU4)#~K2DQFQzS@LDkW!bgk9N4t_zTXW|>hoCM zt6M)@mTc@-Rsc;^+2Dp%iLFx;FLisb4a8!kww+5iW!i7``^*~?n}XRs#vVq#fm0@s z>2p*;2?=j=&h&r~mBoEz)90$0iO^Mi&LOt_SSA$bbZfS6z)CU2b0Ns2dSeoS+DI`M zEwUU)OF%|wsK^yq!R&0+MOOf|LL~eg{D^O4&AMxAg2U+h+y*c$ic5=Glq64bvK!|xsnOFgGU;rI)RrB8`;c}t-FB{sMrgp{u zE?+z-X**S`4|?xzDo#O%i{2=wTr)BM)(VNyO^DIbUmSC#ZR%A6Zr|+9ys5{*r8TN~ z57#hf?5aU^K8tZTV#)|?Os=VQYnB*&EHKEN@L7r4*$FaewVab9%DPwCUn8;&C+tpt zb_X3pM`7uh)wx=4)QVp0mKuyBsQ`5$B$bFJF!ni+cTZ>uL%I}me%&#h<1$g69?qqjMM($)I(r~wVhnh zm?6a|+;2ADwkE=_ji0lm&zlSxQH}Th)CdUXks3S`#%|^y1{Dk&d{WtwL?n~H84ig& zJi!lgl{3+VNcX4pH`#%|ltM8DwILdn-R(O5o8|vppQ^v{0_5?J_55N^Lw*l^%s@(T zG57t!hX%tJPWM}G{?`uc-hb@|#x*>ev5vAgblMe`+)m)h>`WK?x!iSX-o~AKhYzLx zSS7F$iF3LL6Y3$N>rHyI63lFgB*N*zK0?HJow(IfkeBUTF00kf>!!FpSW?34Qk$?2MQ@2?1AMZ5f|As#5sZ zk|GD;-+_A0Sk#))X>`sjp48Gu+B)jbLpsC6P@E`zyYjfSM80jIq1xTECH>jrq_rRX z9H28E!p`SuE=-}W11u?DzRPqQfl-osuMb3foAqIY)*&Q!OGbmW61kI?4P)3RCy|R+<`OIKl^)$b9T%4OT`pavppvitd1?6&t zb-7(!G!j!TiR~$r4lHHj<>ZLh(FmiUW*Bo)BzDJ>k54kJ0-L*> zj!QcLH^)UbP_9)Kl*p%(p3rnu@&zlWTeA^5qz!D7QrlUMgtfX9@lSxUQCcovg@__0Y-Ztbzu)5@uRoEZbkCiqyWm5w%!Xwi zC?j?|$|{hNpy!`DnN5urid$Yqy`K#b*o$O*%TLDeN~|_pmPi!dR@zhKF^o20!w z#p2q90sGpiNlHMWhWoH56J=9053o(>_UDm-(X2QHkmpxIIQ(mVD`~;Rs}P>8L7Lw0 zW1u|4S8^3|XM`R{_DPc>;L)zRD*f^kXd2L?^~)>xRta!)yC0b2oCT2g3tO~CN|x`8bo$b$X)Ho4y9faRSV#CR~3!?CGNDUu`POgqyxeWjN2VtK`UqhwCxeNb(3r>3G&r-b~RQLQt;(OcV^B^%>B~)R5##N zf(VeX;~68m>D;hhaw+;wWMj+_{xM?R4^RD?K43{sC5=`(MtlsC3vnHNdTUAvNK&U|VVXE&Rk zLVtWS3yhq!9U#$zt}v+d6u8*Y8kV&IRI!&&&yE4I`CUsh*OqU8sP><@&Q}xG&muw4 zfwD}7Pku|F#4jt^&3f#+@Efi4^XyNYY}%oe@Vs@KcQAC-l-gVs92HSRD!_7)FlT{% z?e#t8vwxUFQ-#_q$-`H9Ks~obw0`W>XKu}DFK4Nj$g4tT4%*`GZU4fcC-ax$oi3gL zg%@9Q5FM8MMe=5!Zz<^Ce0PM`*lE)KQf_(@b>42bbrIe7{1?pIPnb$aD^HN2t;gKQ zyMM~a?dmClhu{8`{>cIcC$*Zz@^YNfMZ}f=NTPO{VqC-eM$6z^*(lj5bzle4nQ%{rBFPos;F}0h(OA zGQR{n0ZQnakahyj8g#VN>m7ZCDb8lxG~GnbNcq|80~}=hyQrF+Ko=Bs6)WJ#TNV_a zDha?KGsR)Jb?bJhXaa#tt6dEu$nzO3P!6Ap_}CEID9mC-@hX%;bn=q_?gpFpQmo+vHx)h4BS4A{Dw}<>l%PYdf<`CYz$_2De;6Znf z%C&MOMuclKKpy)-^7gZXao)V_{oCPUlbkA?N}>^9O6imj_(y0J5ztAS5EV2yy3jA+RLxh5?UeSxuK^z9Y zRtxRA8~l1k2o3XKc`jstAGZlovxSz-3HW+xoy&4T1R9}y!?7EGxxfP*D`e3JXY*C9s1ZDxxVYBc z8LYj-_cQp9A*t; ze^3XRIcqz|d!R*$Ng<{?n4K2d#(vM3Es0q!jwyHq z4h9tSQ1=<2CKzd>@b2QcLP4iFJcxxase9C&(xy4YdUoxRq!0T{0{;di)+7EM{exy` z!~E5#7vA2iiE`?Br!hj)DCQB(@$#lgWy(^U0dARMj#1S%XK1+J_!0KxedV3}ZPS=g zsJ~1EUO*){SOXlUt9Sn%!6hH$?3^qj9MU~-KMbC1l<~E%6DWz4%rGep<;NrGwfHwd zuHGjB%9c$~ z7kpVvwf;S6mfXpS6k`g+M*o|VZ6cT(eGEnz%>-eK5^xbSIpY>&&l|k?@c8Gv(i@yL ziKmP$3uM&3i{1bpfP#thaDUl2Ncr@egdNvuRKP*_ z3ZJ}^0Gw!}e7nK)of`m_HXXo7FkyeHeKo>oUW+nh_v=HMt{Zl_ORaqwzqmq>wnaJU zzFlpuqax4rXnID>Y5&~xX?2rikFze3mSePoaWayrb{Bv2wN`{I!G&b;NyI*vXu@IP z;f(SzKIz{&8}Hxl6ePn<_7fyD2KvitLDpU^hyB{7e?xp3HGaJbkFm6S<*ez2 z0xuY36Q%4Ungsz@A3Hxz47`$?@t ze?M>S2jV95qy8o5)F-byp5O}gJ77J0e1D_3H!>~>1jviM9Q6BpVglc`&QNfEY`Zo{ zd|GCJPhq<_cH(7$ptGm0%D4-AQp%c79Qf#!B(CBFMwbx=BbF>CN}$3Fln=ER&V5O! zR+uuyPvQ>qd*M2dyT7uaVdRKArNQj`a~LfuQq1ccTqOM}XeF8tk}l|XZpRPt3*jfq zzwan3Gc&a`WtN)$-U4^VJ zQ*q|sCrpLxyB(5c=ijfih4vKq%)iIqqXiIxeWAVf+16|tMf)}%L_}&qkocV9a7!AC zs5W8nFS~MboI^&L{Yaqom%WF6g!}FhGF`8F#1eX5t_8-xyYB>1k|035M<>7V5)4pO z0Z{h%%7`1OT&1SaRAtk~kL(+}KyqgE4nNk;I*Ve3oH?vVXRJBCm>!G+Hm0k8VIdr!}$e>(n}px)Q@weU)c z|NeTX)Gm!3c;xZQEgRBW&xiQ($6Mfi^GY!je~Ha#aME;q8`}q(K*B_eK!zcGqe4PW zL^+#4zqZ90H~SUAjx7iQVL7GDa|4r`JW9^D$p1`Sg$0NgzJhUp^8YAYF}1MrQW0r5 z=>wQMsIEY9(p^D`zpfK>^CFo`;a3ylc#-EMFzL&WrUlFrEir`&8O$I}7MP~0`Ebu_ z^Mw>K1c6tO^L?Nj@~boGbG!FTJ8^>R;8zXLm|y@~-N4`1M!S;qFh84#IA&}X0B%VM zs6YZzo2e9vnx-IW!<^xSq;G| z_#Y-YWdi$HXACJhwyAlWQtvP7(kB80=buYO$c5b_i8E}KFa++aAS8nKui3uYzr<%6 zUm|WAI`$rRSzs^UZc$_cj^l5`uavQdA|t_!4nGQ3jL|&QrlS#$%6<3p{kS#U4iiZY zjibn*nPUVBP#Q~WTP2nLmh~cl0Mm|$*6sxYZh!S2boNi)YS2@_ri6WSz9>#04fe%; zfZn%?+&>2!S%r5w)-^{R-s!SCXWH$#%*xDFsmFYgP8cmSh%sx-<=Z1K39TpGDdE?o zO9P3;e$ppoZkka6@@vXuR7!wfejTGX)miY5c|d-%a{Ah7 zLpVfO9gui&#%|&G`YXNWpj&=wL^Q#t3^UyEC@=sNDns9Od-=)~AinC)bO*>;Qv;vk zuz(yVJ~|r$%X-jwvY|G|G^KMxLSbK7llTp;z`V`Y@tlCNS9 z=X+%1tKAWsD@%lQ-eOtouNopRc<IT_54e{ zde3x)MYF+}Jf#$~O1$GZW5x|)8ek5db@ctYg)5-RMy?XW2aK+$I@u^WBb#(4ea+VdqbIM={^Y9|$0HWkREta^}zbpW}vv2L@C=d;=AN=@tYn5+1W)jwxZxpcTH0nKf z)N(~er<6lZlt%UeazDH^pIw_J|9#zbpv+~Bcw^R_HiDMMqZ5mUT!i}fE+ls(uUp!* zngPQoTfl^mLrQBj0&l-&U-IEQIuN*V<$<|f zwYv9?y1~Fx7Y`!(ft6cGKF0T25U3H!TvLu2eiI8y>R-U-FtJN7le5+egQX;co z0bxi2@GUT^v6CY}kIMYN){|Ew(Gl$tcjChx8n(UX)&vgR6Y`Zh*G8iwc(}gx{2dZK zJ4{5_f+2d2&ob#l)krV;dJHK1oGu~bZ!-c8qS(cKB`mn0if|L#Bmi6aN77(7=5qgq7odDu%K%iaxd&UrG~*5 zdLnbc$2ienRurN&&12ZgkB#~Sw4*fZxJvyVxlrfE zr?ba`d1}Z{H$ad%*tg}2MaCH7e4NID5Y<%U)n}Nu;vV8n_kh>o=R@uI&47+3gX)t- zTWpV?hSHGbYztuSXS%#?B|fw}Lu#^Q=wsW2Ou2L>K_M4HQd%=tp=PkNRn71F-3!1$ z`J$0Rtnu>MwPw;X`O(tw1WjC!*EKsmP(8x8Z(;;X{pB+&&Pb`xSb9gBcU=xE^-xU!-C? ztHTK=q)(nV3#sV$Ku9A3{koVCRQ}zkPN;N#HtOt2WPuwSZLo5yjKg{5)Z-rpix*2C z5&&}jsB+BfV3(xaA5*hl>1k5TTXY<216=Z6`yI;`Rj^i%HEu@HM_@&7ICmRV zO^(Z*Q}cB^hvy+O!=XHpbYjW5S=F) zAZgauC4Q&VN6bV{sLcJS*khC15nM&Ijw+{NDJZC9*mNKOY{D*I7m7cqtRJ(}Oe|X} zwM6CMo}k3zLbo^LBK?k}-6X`cpGQIIG;!5(7B6hV)<%&~)*kl(g3rmx%D?!sk&~== z`D_?L>z*TFMxa+Stlkx*jP-~@I3iedW%V{OYh`2aiFEPFz*bfCaXuF9hBt#@tZvWL4ya`lnP+J=H9yL$4Y~L6CuHr*g7-*Z8qlDqc$l*ZRn@7<0z9a^`v-eS;IAu@G*niJ?yw%RK z*@E!s73bhAMUaflnXJBh{-0r}mNxuIWgn6B!3Z{uBVTGaTcEZy9r_)6l&B(08clPk z_(-}I`0oSVhjIL$2Q2%?VVD891;rpp^*4tnpe9JM?=vT-sju%`Q{!dOfHbb*QpoF$?Dcwn{ikcmSKn3fv;{K+JaD zH0tO?KL#rI;hVHdg)d7ZWr)6OpId!9eMNjg`E16Pc6r&9Fx#;BjpN9HutJBq% zJOGLx=t_hO^DzQv8ahG&1*U9*L(Qwa0^Qk-h?-nRl`NQ(w|%fMqO+$_U&>&#k*AM2 zX$cuHl<0V^GST?mT)C}>2b5muQRBnYqvh=4KV={O%WPp#Nl<>PLD?o=lO*o7;mUJQ z7KgS4IHwzv-M{CZMY8jcK>2MiVwkTC0_kK=kp&>2zlGEg z45jkEEL?F&eaY2lvMjiAUP#J`d5u4g4LZq#znB{oIA`rIAzF+pUt=(aP@mwbCf|&F zzCclUSNaS&+wb4vaWPynkU3!2@(+q+5|dN%e1 zH7PSi&t4O8FlsX((nLOJOqmmIxoA<#7xlXg*zN<)p1fh)h3f8@j?mfIf518zCo@L~D4`W{9K=1VrtcveLPZR8{7RzhTCrrP7k_=! zV!#f}!Vf2vwon^w8d+|^9KXAyP^Few$=rwgdqVatngXazBxTFz4a_WCdfng?hpMH6 zn2%AbD6@YAy|_yc#__5moyvxkJ{eLRB^#Hr$;OQZTa=TAd!^iRwg(W<<-`4X+~! zw9PyT7|l{jsV8l3`Fek3tBbhj*K>2BKsFO(B~|;mi1C<8Ss8%db>*?|Z| zkV}u|L13|5OT@tkgp~^Py8a-r8aI~U>_{LF1)NVL8oode$TGuFmc)z8(?g`ouC2iG z^*27^Ba&fq&OlK-iP#8pCLLj_=s{h)2I8|_UD;zGzyZr)tELfwrEgw$6Y_%^a+?}ne zfC}CmwM1+zW}#vxLP!!?yCy!^Os>p+c-!Mt_a=b`pgR7wlVWEJ?n1Sf@httqV4-(| z;bDnP0!Yx_X%PJR#IRo>FK8n3h3Re3v=f+%p1e~%FBj%YWmFpcS*E9G&W4;3zz;ug ze{Auyroq|8O6w)t5fGTD@o?!5m#AN-yA$?A^Eh=Q(P?um`*s5+r^h@a+Hkr~!!6;> zG4UH<(8jOf<@kR^gxK`hpVrTRhrPrvzI$(?`^XQoeW;f}SAm(jd<0O@H<3jxf4w}8 zf_mB8IJtU4k~CB?N5wL!0`Suk)uv*7n&`F$)SEuC?f~Y3+&b@?og_PspD#H* zxU=K6Lo4d{?MC*XWq0OUpJl+*qEL5oOZR634`(S4k&RCx3P%lBJqJhhIc+k=<5v5{ z?J_>_mbgO5U+TvgUaR)Rg4?};duAy0)T~S z#FJ7z77A-BDa9%6_#iP9flqbTq{+HmQdj>Lh>oMCc@P26PLBW}{T*v@@o^iM zfnB5bIoxay9d}B=K=YOJ+inNZfVuK>!tOhwdVgW4?|h%%gy?rF8G>}rmS=&{WS^Wa zFMoD*Q{J;GNp{HjrQma>fQ2CrcU6cF<{?AL9nBLvt9qD;6Ujnt$tPF~ zNT=5)L79a9%f`onKXWC-|6In1jrDe~B2BnI9XK?O82b%14fBvt>GaYZKN{9U!n~{C zAZ<~X=F96E3UwR2c$Kby0Q{ka1APEzn8!Hh#CX){u$4{N)orKd?%u6%mEuD=0s|bi zw)}a15x3MWAsP^-){I03qh?>(T$(r|-ww2{cG6Tlmpwx}a`1``1&@u# zDfhQ5_Q%+-UTaLA`@x6b1pAH&5n_$0)yh%qm2i5Y`6Mw{KlQ~{gL3Xi=GhMLaj+n9 z00>n$&U>i`wXGG1IHovb0<{V>xXzcTybIrqhwi(eP~LR8F4n5031{{bJ& zv%w!rzpWjAlcj<;qp*9EOhN1RDpQC)vH+t93e9gi-w@EI}7Ta#^!Yx>K6<7QtGdLO(8Ic*8*z z%2Y6*^ua(q3};~LAJ}f3^XBVCvo5_ky2?RWgLfr^bV`MJ3;j-{n8O!61&Jt+ydrYb z45K>JsIz0t2%uBaR}>Fvcw^eRNU+h4{iry5H&~$WROIJh9Z*!V$^DvZBjS!G2 zjQ`BTGu3rwN*dL+5eh~@=(gpA!)`F|0rDA>X+(Ev>n3!}^HRmhhd@Av%l%2&dXgRG z$Dx%ug{#MK^Ke^Y!1p~LZ`xspI@IFEiArw7C;PGaH$jY?RH5Jc!2LZeoWi2K2-M-p zBZul+i{ojeX8hHPbFn^Yu>3PGg$*wgid4+Qj8Ri_csp9zwM2*KgWLS(!GLn@>Kp9) zQiP+=Em=g9nIUCg5EsiQB8RbW0H)Bk1T{#Ok^k3l*O#9Uo&5fnOh}3li8VIrl40;U z4naZVedIj^RkHP+K4BaEyf`{D5Mv%&5pF#Rnk+Q@-b!^)x6I8L3UpvZsgpzkQWQ#z zeIV&_4Q617Z<^!mjQ{(rkq|a5@REM??HNxnxeFJ2N06s-ZD)WG_ys#~|d~Y0N)#GDKF2zCtOWk&fJ@mdVe$r0R3~z{4D{i@>pxg0`LG@lctj{`Z!) zn)3JgGki(0Q6t|%%0)!qnw$VupJL1}<|5To9!~u9kkuZIAk?B^Yv{D0D1goprZ#4` z!6gM`m)G!#gND4{S1oucUU$#8_aWPz+j$HWd;{yf+Aysm1W+V|y_a~jghOc&J}fqT zmm~$XOAHIy8J~iS&|!_%J%0n^4n!FWlGL+pgt1mjtPQ zMyD?T1^(6&E)lHfzT5Le_q8fga63&strU=9vMT9&dsbWUP2Ko8rJS6wXKc6XM7JrX z2WbotBulWlt{VkI6A521(j7%*NU%ybNz5xuI`=uWt3}xDGD2wVlf1l2+?S4gE@`9ru0%x^FIf7kc zhQpUi!^ICvVI;b*9v#Y0=@V8$t=DZLIj(h^B@;(prdobBW*C2krPqxtt|HJ01m$y>rPa=daS0Xrn$M4B#)x>XOw6;)R5ch1Phos4L_i7#RP zDbC0h3&7H107YV$WWAB+!&`amWdvia{>v^>l`a#ZSQ8Fj-2wOxe$a7U_z=l>ek1m8 zc)uT{!_sxrYjH5?@)s29V<`RGZPrNpV)J~}Hr}pXgo3Lj`3(*X4I@}PmsRbx4glGT z!Jtjrw*D|eZLC6khc6!$`0P!asiP*t4fOKt6eo#&Ev}OHa9N_1hh?$Ah+cLK>vgYyNyismfKV2r9sEXKD zGesJC$OZO{cJAPKhv%eGk{D24TlDDrXXC4iS}t=7&GUEHls! z_@FG?g<6j*kH-X3l-$SlM$`wz!*88cr)gQF@3S4yVtVsjWcD1J=boz&=$0(kuP|<+ z1fm|TU1n{ey2aYRPdgmWEKw&>F6CXb4a{0cKKYd;{#kHrm(9O2k=4s_OPxdZ)S{fv zpIB2JxKbjD4nK?xzPsDq5^Gn4ePygmk`9xKIFzT66TS=kGr+r#n{0}jTpu76AtvJ5 z+l$Lx!`*wD@!R`gTg^uf)p0OdmZ0b49S@rz;x@hPC>Iw5HeI;2`0kjUmLYe{wlOv0 z@{gxgaLPncVRtq48z*C$mAvliAD6c^QiXUEuxuAnNw&EZcyzWdDK&0^8bu z*%MkK1xP3n1HqI3{hAcVCrvJqs_qB6JNt8y*}S#gA(XSH`F}kv11z7#;!v!pl!dnQ zUiwhfa5i6c&kqwFUI|P;s_!s^*`q5lS^V*2%D>b#H=L%71RP1dZunK#S9Szg<$BGJ zG?f-@9*UGbO90d?pop)7_|AtY|8|jAt^D4F1jh6;s$G$m=K-kGlY4zBfd&M_y&->6 zO9%J?u*r9@dxua7Th?(}*qJ?Pl||*VQWuk1k%MlSEQ%~BW_nu0woR+l!bpfau|J>b zvs2dvZK4C*3_mQA~Xr(7s(j?JOS9xbVPbBMt`JvN+iGx*6sw;_on%mD|vR2GrB)mIZ zax^cp1aDtNilad@$o(t0NbKhe+9Lg2!qFgf=hVzon(WZAM*iKvr2&CO-JqcV{8AatM)@EJ@qOQrE%Lk4Lo76ES!~A98lL>+U zolHy%cZfYq3visK8_{d4^r-leVw}I$Qw{Ug0A6F?&VUL`R~WyDvwd+U1(LL1HUG&L z5>V2VcXC|g5R;K&9yyu6H!9_BPl`XhmxE|j$4@u3_%pX_8l}se&c#&8WA;d!Q5d|{ zIrED}fJrVebI|2b*w?>chg@+94)ATZsz1f((;8B9>nzbEB$WzS8Imy{C2nR8*Ee^ycB6@Xgm(!Hr3Ao`u=XPA`vy3+IfCUo?On&}Vf@mEYdU z(IjyUW}drLBZm6B@j`#qO&LiNe?HZ{M0ykLy6E&e^FTMLSeE&o zll2ILxv#iZ?3Ujj(54PI2-u(`Wt9uX1kh?KjK)&(V>X>cI3-bv7%iZN0lHwk&f3Hs z-M7|q!te^M9UTuLwv&1H@T`>%DB~{7b=_gly|LHUUCgeZzYFGC>k@;q2oKE}J)7)Y zFnBXw0(vOPVL8d8+mD-%q*R!rqMCqgh9$vQQ}oB1(QN88gvlZyni;;pXJmx4s!!|d zyiq}40|*t#{vnd0nPLM5>B&J;=*m2zfXOb zHvnBxO-W{B?SQEzxMT2rECvEw`_YERJOZs_ZutG)J@-Kx>CUY(-sO3(kbu~VoqQ~m zeB~ZrBI;q&JkQD^8E2MF3Xsodmfg6~EdR|V59YW~IexCgg-1)o$*S5$!`U9|o`t8+ z3mKK^7+K%HyLm)?SLWUHy9?wc09lB77yX*xO0HlxRVAH~usO$LsHtMbDqy*Qa`JDD)nW22V6y zieDA|=+>vJU-#EX7T(H3l?b4YMT@;V% z8SgpEOyn`-@#o2$$$2|&gGJHW+w2m_u0vF)tG+{$4QW4?%=A0(t@6>7w)u%*)A~#i z7)_z%09{9{3}9O*YbRPMFq8x6#obRaHiGy)Q-d_~IHO3Tq@jBwzae~9VcQI7%6s^g z{N%M(=)L8OWFaaZ7t^`HP?84m#?457Hlg66!+1Aklja|NP7Y>dhCa`Y{wpzfFc1h4 z?%`Z$5RW-=_6Z4L4}YV)?%Y|Ml`#fEoNWO$hW@`Dg@u502!hroPSw@TS!e6m z{HCz-evfxUfrfg~m9)zxG(YJ(qAdEAz3o)DcTUpRu#ohDv=6;|GrC}PcQzD5tTcE; zobt2=Hkvr^YdKzK=1!?rS+m`IqWp9Tq-)uI5-0wwPphVsnKVKoWqT@KOR6$6;t>FL zzr1Rmy)1ssH_qCUpqGT2dm%|8b;(94UCYPhEWk6~YtpdApuew*B*Hz;OoyJQ=J^QJ zZ|QZ+e#k`KTdfVE(|q}AVupFrBr(CX@UO)yxm@K(1Okludn;{ujBY1s{RpI3eJ z2XP;8bPD96b_3lhx7^GqpS)K(hO5s-?fRzM$)%GeD0u~kqRsh2>Em`n3v9LRHK3?s ze~TD4q9*~n-S9%ss39b1KCU6&FnR%(cG2!%5BAh!@1JzRi@qJI5)*Z-$pVh;yCea$ z=J`~~Ay#iqL1NErLrmL$M$FR+LWbjoj7QNBlkqs%e?aL5SLQ|*Kykk{?6%opc#}(g z`VfAW4u593v1u*JbWh~tKW~e+WC&GokPHc5qSfnHd8v63XfoRxtM-BtS1g;l?~{%}yGQNqP6QwvlWhs5M6&y(zrwb@&w<7e$sP_*tnw z-g&P_uTjMMSuGEH7hBwMP6cPx-@pFQN+*G#LT98%<3CV+W5e7cA<1 z#)CM4a#i*Y<*GP<wkxq%N4#|13Sn}+Eic>iQ<{h8O zjj0$53z~@3aQ?X`=PLDW(!Pjz&bxWkJ^uyADYYI_00uZ2Gw=a%#(&fgvc3l0Y|bEn zuErAxF7wWW72ih;;*6SPO0m?6lX6@X4j|UATPn^YO5i*GV6^@q;YeAq2POlk^fH)A zpnMTo7(6*Wx8z9K9eEFZ)>*q$;yDjU(*uX1807E z+nuw|Qh->wTc4kst?)&Cn1($%gSivYXxCFd^M=Q3zn__bbcg5{s#=??bh5RKe z9QVsK4$sosK1yvuT%F$o-dm+3h9*>ouT-u#&`b#H5{u{R7D3f!qsuHH0DA6v` zj^MLRJ1a@TEXolUl3-!PQL+Jd5Nxr=*Cgt?Ipd!z{7lY?%RG<3SA_E42zcvS5Rb@s z7b5l)TcDz8cCdd2I1f>l2B9z7jPTs+)9FH)Dzcc&{BEcxSS*kZT<9HnRTIM~hA+j1 zOARR@M>+C7fzr)JgFnB8qF)P@-(GBkPJu~pfo0m4GX#0g9QE{%pEFSh&z6oBG&aNt z+ZMU7gMp%@3;)`Qmq;tA9SEV@<15{K%*)v$_zFpsCliP5Z!HJR9Mj^uFG+Ol89)6u z{&9c`mBdTHrbaZ3(~jD7lWX18Si~sLa4QIVq!(q|B_G~jH7a@CtzGVQMzh^|5?Ko* z3QImT@NSolO%!;&$Ap(8-%T5~4~&7LD}`U-n?63!^Cz)<)tD9cc+E{0_}ycqlzE9i zIR>B52!jEA_Ry7L^8A`_ho1pOkTd89_N@@G&)n2HoEy8{8+-e!xorvnqHiP_3x=(X zX$zxl?jziMfFMsszsFo4ae(7B1Jcv|hroyl9amkqu{zDB%|s|&q(<@$%0IeHXC=xv zhlDgM$4)D$KWTLWzGAMASqsvB)j24fRcl^np3m7un%YD{ieS6lxMBwsK0G5$+ zt}Su3%Ib$sjdtB`iG2|8vs=x!fmHw)x13ltrR1HN8Fu>}mUuF~i}E@D)Rlv@Fgv|y zAOYFba6{pGLKI0rSdjnOHfpCQcBvC-G%%NwhavKT1Hh|}M;&@)<~FxG;+kc%o2E_% zr6U5yeL)Arxg*LxEpt@3gBaEFURU%L2o=aA8B^NbM7i#t@7_M zs@du}EH_{6fpmXG0GT9c9tsuzKB#s%3(2kCz?0WOo_gknzl}b_Lg`Vs4=9E+_d}X> z*1MdcKbVb7Q8gwJHIi8i?;5O(9j`ycUjpneh!p;{wY`f05x}qcQH0zqPK3JuR*MI! zAWL7&ML8H%vWT}K;+uAy@dcq~Hji7BV{5^u6k@^nK!)_Zt(ZufHhBC~?Qu-{`BOGi zrJt(92UbK9^=)ybsEoLe!%cOW#YvmrT4ko)$eViXnh^S%Oq5zJX$vuT7lo=COR$kT z-p!|&@jDcaAGTP!nY}st;;m^js<0Z<nq49B7lkC_PAxZ7g}5D*MOg$;)ffhLgDp_+_<2ZB zTGWO|6S$607(kLIUygIfa((eHF%R6L91_cTmdIgS{eNSKfGftb>=b5#roBwHBd$IZ zN?igTd7DE5P80-vIu|j^VUL-3j%UttKNoZ>S!q6}y{hcI{AlQ?HMs1&5m{q*GuVH5 zcSPAOK?DMiB}6l1p5+uBnV^B_1oo5T3m-L9^ z;mU8`d7Hc6z&MG4FJ{N>^j-b*X=5Wox8|-_ITu3mx@`il+?3ktlEL?m+f1 zQc8wyhCey5itgT zelfjwFF12n6V8{J@ow4^>#>gm*f(j;)dR;wO`7m|w?E|nQy$Y4Uz@+TZB{<=?VNj= z0DYuHOXM{e5Cq>$`|;pW@9*AFd;<@JA0@vH)Yc!@oWbW<^f2l0*D9`BP#yj-0KN(k z>EUDM%9nvCVtiW%;og(XwZd4*e{ zk*Q3@`}{A0Uj1yG^FbxkSGzc}5Ajg|$XkvuTD2A1xiMyvQbOJGnCms@FfEWK(`g~! za;Cv5OiPcE#ynrqTF%&=6nQ1hRN6_5uCF`f$01)Ca&&S&7}tu}W-L-!WjH;>9N#oK z4(noMC;6E9)GINN9}O03Jr*%x+~ZJ0XxToh+7K!(;?&}mdnL5>rc*B7s&)N`;%C`$BiiP|VL(E^WcK&+$ zSBR4bQ&BVtp)Qe>s?c!tcUqu!DNZ=aR(j_V^TVTlS+I>L3bX?hV`>HWB*c+m-jPr_ zeC1G;Enm?}z_)~B#`V}~sT98sh;a#eoByZ`RyeUSBCDW~2-vPj$#1{uVy`;N3KhSe(>WI1h)xvwktyBpyrP&s&3T%u!#$Qf#%Oz{ot% zU%+asH{ZfSL`twjct)4A(wfG;tu<723oUnG1NTnl$!>QS`Th#PC*3KRZ?1W&QV=ks zcspd3mHpo`U)nz82!UTqYWDq$;VHEN>D&=$o^NAq z;EdqE$#gp{dfoyKfq&?B55IUTm(9JS1SN79D32S$pZ943kny`R9LtwXn}cZ+^~EC8 zDvm*(=N_d`QZY_~+vglripGg5}=KIhNz179P?+MX{{`Yo7X+Hdc6n;g^MVMosy4)B`N zZk*`raD-1O+qp`ce?ngmO!-m>2;t@75n!W;d|cvR=SJ(Dt+{)II6_NW=LG8o z&c7`Q4yRwPzq%ccWUf^Tclc&JSAwb0MrHS2!)cZ+GPsZ=m}?hCc-M3pkpIqK5ni2s z6wu^LVxs;=S_JLIZ4SRI?h@oaTIWIsw^-5y6*M8;NbsiKy8UgBX-N?`D3S2Qpo2oZ z-!lUKyopWHLMguX?CgIrkcPdOEMh$%yW$64yA;S%{=!qSqJk%~>$IZf%Lh2IlZKd$ ztUsqnL-7vuPPf%2Pzc=xXT8QzvIY3q1nGXd1X_>B>HncyZjroCUVOj&zCyk}=Na-< z(%;N)t1E#$_lfT%$0uA7Y4 zgi=(wEuCve-aV5?I}N>lX(#?DyI!lhH7jTPwrE$pC5`0xx(v24p0u=s3E)E?75}AX zA_+)Oa!4L=uU|ow;DW6@}Vz|RKLNzpT*~YiA*6*kT^_+7HBd}0W zXbHy`SU$eeyGpYn0e*$$d#xt{#A#4U5QGGR3h0faQWK=GT^tP0+_8fwkIf!(DR>MR zix>v#sTl|JYV3wPI zN$s#vCY7B2E%xxS|B(oqf8qk}4?1+u+!db0g%AHeoBzfcWgkWIA5=LH;xEqL?Um-7 zP?L*X9^Swtbu3Dd`S-XyKzu0eE&7(HWdX^%nOO|K(iyoezBF*6+nN1ru=@6waB<>E zn8FiKFvm?EB=^S-!OIlzb5r8jtT^lAI2!Eymk6xKW6?JDH~{)(Bn2}&`g>Xmy!b_} z*YbPW!&HH_^Qf1XB=>8%#SD7hB-QoL7f9IMSR&=b1(?RKtYl?=7&WE^K>>YpB-WQM zsC%ViqM~zvc>CjmFLuoL)GCcSZm^kgo9@pS6l%!K11q96lN>!hX`_TW1wwGcSny%_ zukVWDgs2>Xz)8B?y<7EO%R0Db0gIIXds&bT3RCOS>0$h?Owc!DhP08qQ@fOc1V%5Q zDtZd?BKAB%XI(Z>>Y4v!g65w1M(3I(^U?pIW!C+~z6~NB+{8 zMgq;dsa`AP)L%sFB;O`Up8e2&yqd*$dhCkok9DA~c6}Bf0SLq1lPDo~)0(~wo^u8J zg(DOr-lqz~(8ljlF@D~aPque82F z$Lj759mJ_9m+4l!cEtm>A|iq;Ms}|kK0~K3@eR-D24gh8x9D@`tAgc~yecIDxvG92aUDZMbW1L?gugyk;_^FA za`q-JQKVR!?8;_14i8rlx$49uE-Le||g9 zU9CW6@*J!r;IzOmt$SywCJ` zH(Cp^+B@m*3;yPD<*DfAH|a|Ui>|VG&*4q^puhlE-dUf`Q}1ExumvA(VO9<9C68l6E`2x)$S8zAl8Ots5hw#)C6 zMSYNp$dS3?O}{M+RU7N-Z3-ts7V~XTW&izZ|Li?$tQWcKcCu+oIOsCSM*P9?iCU*L zZCI-c^ z67bn6$G+D^<}0EK`t4gx=DceM`u$a9h>@rAl7I=yC+VX9n|6BN~1b%CPiV%7Zan* z1&l53cfGg!$KISTqJ22~b3rsnv|>>Rd$=ZXYI-mVl#P~^>A8sl#}(SfS}Dxga_`ED z0k5%QZaQhA&|x22d&7WYy%jnj8+KWU>ONSoA1#Ea(6PrQp^ z8oSx+wX;81!}ygm>c10g<&>|b|Fym^&*37wT^a{UUclqukBjd(OPr8!A?sRlHSA%u zjYXX@#MI0nhT}J#Dam46vDU-0*?udMc1|k8%bX>?+l*6HhqL&rgwTWJF4`!g^ym9m zi&MoOcr#Z0)Wd$(^`Xeiw^M@a)s)kyflSf`_ov7Pt+45+H}dqMKH%EV<=srB&oC;>Cr4>}07mwBNDU646&_ACq|r{W|u@Y(5<--$SMgk~Su~Km2ZL zW+C10^siUIpN1q{=?8z=rh`W_gBCRW?T^AS(~oq0cY0D2z&q5Cx6G#SCqLHOMFMfi)&92 z+MvRWbP!GzGh(~PE?S?>F|Mn>kQ>b{mWxVLPG^xvn^qOBJ2&|chcn?}&6!CN*||cr z7{m@M>rc#sQ;VO451_JM8pR8)`}@Cp9_m8*w)TH)(EvA`7!dbFV(Px+Q!%Znf?!fO z@6}jHjHStbJ~pN?2xH&60IW#n-wPF$U5A_qx@DYN%J9hJ!VZ}X`U_3cJ1rZvjN{M% z5E2~t^4R|`b&O(^bGTTjI8@PCq$Kqd(SubKSyoO0{)nVrI>`rK2!Fon+KBfm^aXPV zaukm6I*!6X@r9M26HBO!6_da4eRZ0F`s2O%7c|o{IY7`bpA~gKFfL5URQjWF!q))T zp^`UBK;(f96@%m$@BuKy(k*4XmH=KhccbHif172dtUCpO85|89amx(bymb1I)*51? zgE;E<%y)?JCN~IT5JAAmtqt#65QxH4&DIiK!QC9Yh+ym38<>?^l8^cBCxG5q;diLR zRK%`IspxVRV#yzc;-Uq|2siRf5M0xG;D91Op}YOSz0*s1`x%>L z_Pnz!ziHJAK@7iB6kup|R5qt8jOCf%$x+Xb`%n}8`mAIBO2*mvtn=?xOi5`qv5mM( znQ!%9Latpasu>FIe*3H)b~86;=EVtw)=cNZ-~*y8nM%8;k0#{}t^+T@S-Z&tR6pGH zA<|O@OfcC+ggl8F^WEjf#jozK*NgfqFaO?UC|b%#uu2m(cCriRi%?4f-`BfuwFKx} zN!B|&1+hpryF<*OH7!boHSx82+x$R;YV6Gys#4sLjd=?`Q5p~D0}npz!ISJj)`=Ag zYvKM8-@4^`mi)$gEP7DX$l}@P<|H|*nVxTUGyTiHU^A?DaZpTUYmpf9P2EWKW&l^nVJVU3;vw8{dfe_O27% zxgB2B#q$k|KQUFWHNZS)l~e`ci4W8e!hL`F83a7|Ym83s1fX*z@wk0koL+wvM|m%r;h2dmiKzh9aQZj(ty6JnyW0H7uIK_VHel8fj4kOpi%)&ai2)Ni0{PZ&JHQ*1#(UB%(v40w<^ z&pZp*G07=_ZYZ!lGAGkJDH|~Itzz`k>?5vD zG1(NfZR{Oo{>HSyn;66mjAgH2tDVism$KRXUKOh6oM58;e234>dY$YR$CGzGDTI|x zh6P7SCx|q_K{&WupQ&%)`6ykX3_rsMV`|CtaS7|L0kJrY#p%18 z_<0~Lvaf;B@A#IA@XsA6hxVjYel|Q-%Wf;Xd9}#lE>#%5Sm9@?KU;e?I$q8PE zFXC$10Y?jOmooQ*r>o24B?yGoN!&^qM4H7$V*zaDHB~X4mQ2Qf(9*Zq#Iw-yGhr?t z&xKbt`mr(%RLJi>K}HQ%?$A}I7Mj<93jcz?0u-j%kh0_TFl+@3`|dB)9ywdPY>p`! zW(peAgM|SdojtBxEPCJDKX!O>LZCGBC4LirC%eBs?>=jmiLO5E03ZXB$smi8@lx%* zl+b&WdgZqdxB3-o0+;84+1&Ytk2>>F$J?`N!OXTv?t{7k(TC7ua5q;#}u zizpkS^ZQUdNW+j)5PlPzphrW$$5p2MOtfZM2iPzKn!duRq+gxTjt9l0;QCrgI8C0$ zD6IbZ1TPPPVulB}kr_8~bVqY!_bW0of4w1z_R)*)XtSlAYwg_?^VQWhV!eKaYm3!d z-ftf{z=oOO;Ed5h<1S%xt;(9i0*OJKk6`o+u$Z*kt?XZQUzV7IZP9n;HIN~GWt-22 zlBIH(v+b`l)@;hMKJKp82+x$zZ6mZht1w!8A2t5!G_Wqs>x+ff??Q-myq7&RaPwb{9XBw@S?MXhGP0UyZPpj<_m9XE$jGXz5m=`D6z=Xc7s z=qMlTIcG2}{}_bzOUo$Du}gl;HG<-w&6%I_A%Zv27FmlV&%e&lnkiqZdJL}5k3Onv z+2++bUms4cot(&`Xm9E>9Dt*fvQzzN+2{9w+)JQT7PBTmHp*zUc%9WK#9EX_zSQezKg7MMyerZ8(JC|Uul<-Jl~s2|08-HVl5G7XK-=%3)WYE zOI5b5*|yjv%q`D1NrQyI)l zG+)pL#q^IoTr1XgK~D|`9I$WFM;1DCSJ~3TboC=#Q{@bKs|Uj-(}7c>Ws{;3QdX7*5mY4{j@p-+6)qGTg{?wND#04}=e2uCz6KM&e++{lUhIEf_UTKa~Q9!c0(M@pEkAT=2oqM-AEu;5oI z2V>}aZ?v`Bu*JRwC&VBP{TU%trAi5!L_!<&3}_QJ1BtJeD)m&NAc={4a#&A6wx?-l*>S8HW$FVe?8K8;N?Y4#ajazB`(clIDd)_W;aeJ3dc7l`22_up2) zfFhGuk==O*vDdrX{F4b>6@VCR6-bsP5cp5XJRcDA7$2B$t-m!Tg2va1F0f98u8 z_O5ui4DVb35@viCt5tVpUoqX#e3P~{ zt-G1O>+*bUA6xbcYw|l@pONJxlaN!P@?;gRpIz_a{};bG=fUx2sXX<^d7box5!Uub zOY0DR;8iY+ZH=wxTfJVxvh6Qy)TZiI(2b96RBFU+<4{XGTrADBbFQtsUZTUj-|dQ2 zI1T^e%ncuMEm{nJQP&LU9q*#tUd6;bZLU)M@sjkpm6MaKOZhz(bnqQgdpPnl@=Q{`!VYS)b;lxDZZC29 zd9IgKNfEzafdr6{@02=HnwSvLm(&+izd#`|?A35P$8eyA72Q3Lxym$=A)!|)>+Aq0 zr7C)pN0<`tL=C~E+=W|Dpca1JTL= zAjY~h(6}nr2*_Q>raV88pI_!u0hqW37`KFyM26{=GdjqLP}=hv@9~ z7O9VII$8MlVRVk$#a8tAl zXNk3#uOQzC?b=J-a4W|fYDXMSf7L7|2S*mz`SK?}ghS=6WXol+*NMsFXr8%bB1Ukl zzZH~Dd`^rh9p|-~)>*j%>xHkQamWCF`B;B*G=4%gD6#l=FMgmXly!Bh7U?1h%KmX! z#Wjk748>omYKoaPVrkD6C?3T28v9{}g6Q@62ji;pNQZTN-|Nb=?FUm;00+wc!@hO} z%7SOR^l3Eca)H))K!hA5e^5v3^O1?0AI^*TH#Z=RG~F47hpjc=_q0|J$BpBJ`N434ZDZ4tJ&!As#U@l;R_x zzm>Q}mCaHNU&zjCT$b`?I1%jUTS-ix4_yrdC}6{H?M<>>E>c~3m@)PJ+#~1AA7KZH zk6Zh&LE}Sls*W5tMA%a#I(V6hk4~D-OWa=VePNB{jica*71_e$+?$n_Q|Ht0{@qAU z5sK{9rNoKzW2g5IE>+rQ+N9WI#S9{(o>sbQ2@i(p-=l?-n;9|s^A~SLpY`z~AT3@U zf}Pl1UcM^17NAW!!A=ft2`IxL{(Q~v=HD@(p1rKX}S_{Fazn zs=1O~NS{+l18?Lps%4Ie8Z;3V;8Md_%Dw-4HxJvUw~;{GR55GP8Z(Jd1`S-212#nO z*pD&bzjFws<;ZtSQS|l)NT?atiqZr}iaF^jz*MNRDu-{RJb)5$q=USLi|^p8n~n_j zA40XqOQS%|KTd(cMQIh;%?AgG(-10v)V9# zki$VnA%t2gRfuJG1eZe+Kx53JJvsrx+?O|%`-l;v0i^L^qaNbq@L|eoz&KyKy?QIC z8E;}ultzL;5L|MR1uY-Cy`h5I%HFa*Q~v~ng5wVL3pE%`!Vxg)-}c-lSt8utmn@6) zgydTb=bEnN7kbj3`6Z-Al6-e%0>nCIki>?3V+GNCCK0|e`&9~(%!RhWwIw4MvQEIu zjNGqYoFDz^F#d`b*0^xDHBdyUwuE;?wWd#rp6WANxK^U(aeSq zyqsOJ%%aOF$JZd($Dvma+kn7CsjhRpgQ6Dh#y-h}gFe4POb@ww@I@J;(7xWAz)28H zZWgNBZNSdz$<(aA`yu~k*WKc-qw8@8qzv+m?HMs>N2zVa(Ir_!#C+O2JPRI5+pbuy zYmvMC0%5+sgD_*tqkwf1Qo#z3SOg`!6qE4qm4~`cI%ZLVcys( z-uHjUv2?hPHyLybW_44UQr#e%fqvp)(0sV#-J0ma&>Zw}t1YC65}DXx9qf*<)6cG0 zd!Ln!21@TX8Wk5!h1p>~F%IAxMcr(K4ZBbsPs0#6waxR74BMR?*aY zgUbCZW_}f4lS7i%eRn<8Y{_rTT#ULbK^#5XOSAM>FmhCkGU|J69-(U%AZ6QTChGZ^ z^X%VS_)k5vG!zX7E5b2-2jPS3+%;z`z*psD_fTv%2SW>O(UlyWa>$Db8L9s20O|@U z%?HI2`%ej_v6n6fI`*BTA5k4y7pFDbKdat#gcld|%p?jd*ka0iTzDMr*Gf-y$|TWw z@);H8pJsj&Ei9^=_im!tL3b9XvSc2NS-ElxH0(6gKPkXWT8+CDY+L)rRvNj{{xW-H zEeeg_AGv_`2aVZxYWh2rez;N$Sh5_hDMcj`3q_(IOt&SC6CZr4-ZdJ(CEU07Zt1z5 zuRaR&?>1sGQEqIG(6Knu{fKsqdExZ65OU+v^`#YjLZ*66ZTd3-HgjNu&0M-&2-VT1 zvqN+IwQ?wX)kVcbPkH_O>v1_mTVuu_gdv36{*LE`kY(pB(EajCuKU*9{+R=iKR10^ zZ9u%z?fBbHdSA@%>Dpi#0W4$;Ch5_&vjv4#sav z=;i(~q~DU?4u{J$ z0T;#j$WCd5wcY}GY|=h4=)S4k_y^0rIQtwzhe_oeCc_Ya-ji|uvrVQxqKNIJ)v2z4SivW&((_X{JvOK)jrac({o5_W4H}i+Zn+Gz`pTrn^ z56ZqCB4N2j>p-F;M=i>6bwNq^9AutK zyO}B_T`9zk`GL)k+4LQImsG87>c5C`h`ggdMuI#U>2*pldH&Dk zNR#Vh@#!9-Shi+z-Di&i8$e~xIIcU2#S5j&?fL7%F`e;y8>=Y37h2LxxN~yuGQx=Y zxkmGmfspNGhx_@nJ;jZ4dNu?m66@uW-j9vl5O()UulAnEGXBE-Ijs!J2KwSrz!a^_ zF*Hp4{G$xqZ=WGcx=O1npge6q*G(q66CocnlYiiOE$zUG>fJ934S)MYK z$k@CPJn~9fS}rsN7nHoPpTseO)G)1@cdYrZByvn>L-(9*e+#5txUlu56YW5Vu^UmN zwjqM|f53KRnNMGiH&%4@0VO;&21i#E=Hw$s_}JW<1b(JzDdMM8js9YJwmDbw8-l)m&Clrnky2#1n(iR8UG$|P$)4^G=_!+59 zn;yjMDUvUfN~j7~v5_Lvz34Y%cNZ{qnn|rQ4IZtNBXtdrB0I(;d%# z=Bpt=oABHLcDDxenutL4ldT-lK^B?bVd-PHsLP}e6~jGfVTX0Y$jBt*Z!vi`WeS9z zX$y5GzuePEBPURQp2YE?z|8KI)VLrJT~-vriza$-;nifMHilNYiUtCjC(qF< zGHg{CS#u_;E+uLgB->3+-JiY$>qtyL_jkxa(@Fhv%*UdCISB&*xUAmRm9h0qg(d%pqX+Dl=ypb8N+lj5{CU%YKt3Xtvs3o)0?MjU6 zV1Sb?Mw>W}sJ7L#!wB<6KC1S`V%7H#**OMkaO20%D4$~w$S$8GZF%;Fd>Q2@CM;ni zAtTB%qD?#0CO~Bgl8kfZE5jS6Pa>_miMCeR9m05^$f9|PW>GdUM&-FB6{gwiO5Fatn+p|z=9>^T zvY`V~#?J~+AzVjPKbmT;h3?_M8*R};dH!Mq6Q!}c*x{DO?(QzN5IDwpX1a^^*Y~+k zt~GoLoH*P$LX3v~*WFP6_Y0W}_4BJICeJx&SHl$5D|q`d>u*l1`jr~i61OwVR{?t1 z_tGN2_}D=qRIYJ}ihiWePAyht4Ts~5@1V!tU$@R4tU8>N3z~WV-2PhL)xYYrbe7r& zm@E4NB?f=vda#)$o_i(L@#8WWdIF`tDaw(bq|=J6%~zJEGu7awNzx^sECV^rMThJI z9nFFp^Y&EU9W-P^R7=Af-^s)!?XFn;n~;m$-wz`9x00|mpF@MBS^TGc9l_IS z)hp^W)9tx_(Hh?7ed2*oKH_T5peEzeIt> zkGjZGrn5)vJBF-$_obc@+0qmCfDyHQ<&+O;O>OyG zx71&`<9jMi2l{Gu+b0wrUERZu*hJDo1aayuO(0TEbrqeARyxQz{R+Hz1x8bf0hHqa zw#7guTK?C6D4w)HIFIiFo%j0}>gI3y0>vn=3$oD#wQyj2@atg6 z=|RR3ZM%&6#rYp8cQhT6V$UC;%dcNX&D>5323EWDKhZ6{|HPHQrSn5<@LPhO(;jO4 zFOx0``pOH5PFMbw<8lF42bGV6%Pc9>7^?mKZwt5~`jscoo$LXXY&!6wHQe#2z&h%k z16s?`v`LkD0}!njkmRfG$A{cMOLD8OBkaXPl|EH92#KpEM6k-~wSwp|cE<3dqEWi7 z*ISv0P5@;*j_6TGpBH7U$RV#)25@kYy!VL&%LKUjHd)_UV2cj^hNroXSzFk-lVEQh zX8z$Fp1G>^*QK7d5={b_t1XVK+k?HZ z*w239=$2{&_XikgAa-pKRQ}iwP-qDIg@2K@f`ly5E{<}OrIA=Mq*PnyHCVmnWB{{e zFD)@b*o=;`qJGdNxa@<5dp(_N2N37N`>K3z&%b*!j7B2M%TcG62Z;QKo>YX=6dyhd zczmu5Nv2Mb+9ceCrWpm#wTmbaXz*pPcM0dtP=~>h6?eucF?r>Y*Y5zaj$X4NxhLw9 zE^bt!@VZKk9*x=S5$*6vcpKU04AT(Hy2EnY?3ItZPU5mbP@d^)O3}u7ljSeZ5~ZuC z?R-`jIz%3>|->n2&V%Tlkn0^iXW7WH=Kc z`ME_OwI)q1iL8zxKLa5pg96KzV``~AzIGq4%;x$^RRUk+exoAGoTboV8J)r)=;j3B z9AKhsx9JfCT&YOW!K7e9{T()Y%6rESQUyarA>5f;6i1Gip2f$;Hz-$olxA%Si`FmZ z>PXyJA+sETLm~exM_w|(_?5B;iKlfHColqsq?cI(ai5svAhV2uv81W1YSM4skQ}F| zLlZcOrX8JCn6Z8J^p6UVo*+R+bxa1<(#VYA`~p4d@E0hrTj>wGN(-|0jvuG#h<|-XqbFmuWeGQYTpyV*9 zniuU)zaVFx;gfvZ>%J&(|E);{~l>B9~xn(B|f+ zwLE1Y59e_R=|Isx$qFEw%9+X*0{w)o^JeDZs1c>bWRlWzpe>mV-QPLgZA>mN{(@c= zTt}uXgvngMhBIoKyI;t>nNqp^FizQ|nMy;8(b8J!mHlYfl{vz;Q?xi{dl827Z))=v zk3RyE*jIP6;luxZDY{Rytaq+F!EZXAimmuAz-#Z+u(UH|xYrwZkT@*Q1jH=1+u!N^ zH8auu*B`aZDnTow_qL-_zv~wVoJ^_uZd)`>ZJ?4)8K`FJ!Sf^0&lE$d>S2cA7o1{Y zq`(tLGAY_zuqiSC_4+2{z%1aodNyBV)u+vCJje&y!MzVwkkI{dGsPv3dr#%YD2%>k zZ8D>(%Xx*tYbR~OWBQq9aGn-j{XMrg`uf}^MdT*S%;dVOp(x*LcXKHwVeB}j_&oH{ z_5lZVxa&J1YhkvKYn`w2RJ!CL=cv#4ox}2q+QwuZLXMW8@v+nWmvsG^)@C{$weipV ztN_o?jV^8{?rBu2sU%@rqRXZ4F{$RR1H;E1K!rr6^C%Q&m=i9|dO)EaLFIfpO7wev z&hse&t{`KD(mmth{;Ligkg{geQ?9U(Uzhstkpglt-2}L-aXy`vO8I&lugnQ-%XoD) zpu#O6R7Wk27p}sX^ilZS-z+4Nt~VV$ZS@;{kP-^>YXQSVhJ8|kUFHtBZ4pbUqwiPO znRx76E0XI<&^yr|0&*lWXT(tUD-CZsKa+3WaQ3c`(cd+$HA!rtd*u#?0P}wIS`r>; z92%vE6RO0dO+b;{(F9SFM63D39XeM{vwn>A-kxnK&)MbM?E(FKGrc-t^VZqz)#3Nr*91cy zD?GdBBhym>_E?#>jnERv28+U_XLu%0{aT|}V1DmCXUoA(M=v-`K&&uSX)y6VcUo+VY6%+;QX&b8aj441TNxS`PSr_EainA#+8SeYHTNem!f{e=pSQCLa z&tX_ScG?Ig?{Ef1@6eskTnFKL(f%}}fYJVUJXk4V^>LD+OR)J4)C_&vSA{V=pPt?_ zQ^lcSg7YBKuZ(}Is54MPRr76o0bgXePQ9gH=KYc8W9yCmk0IlPAg>4*(V=$X9-^uj zEJcyO{UHz&qI~minDD55i2=-;MVHMKaWz+MQ-={ohHiv>dci~dotibfCFR~xEN%IF zIpZj*hdts_ia;Ctg4Lkby8YLD<=L8rCQ*>!qQ~qZ^7^U z#hHM;Bs+xBisES8IAlB39w>~_-|0zGnVfG_8n+9e098y9@&(xsR(6eEGWx>?u3H{) z_Ip&1Tt%kLaEb-R?SAAsdXPd|*s!9uYYPaKoYYX0{zFiuc6|?ITSEowM6iLTdAu|wzwGHiyt!+;C-a+r zJTtz*mx%XAuN|C-lnz6#Nusm zGx{QIouR3cN+z^FC^krbL$7^%aR6Lu>h-T6mJ zv4jjEwea>pBeu+vwgTULByL`!xKfp-Xutjl9N3-25YvCK+gSK?WLx5P=^BryBcrx2 zH8pt7Bh32cxzpMO%4+AmbJYd&Tl`DzY)4aZcQrc4KBCX=FX=55%A{XXQ(${x5EJg? z6qku&(B#k&(!Msl=YjU>j^G$q)aG+OZ!;NKYS>U&Tr9+>PWBEBm-1`At)}O|TLqR< z>9Ly6!8mOMU>)?#&u=%xd|i@8@u$pP4VGBbkVzw7`D<}WK`26&0G8^u5Gfnp+s zn>K4D=nC$H{f;~`b0?sWem!eQn6ym|bn7W@OQJ@+>QqsWBV~eC`2LFX*1So86`=Fg zOn1wJOZ+^HzLhH;OY^9+)h|{@H$Xs@C~78CQ}*&WNZ?9=PE$NL<5>~%&rplJvX`=v z|0M~bd#Oc$vgT;X_SY*T20zqkV*^ejsTRNJV3%FdU@mq`^YnLy*Bp)dC)`ZSgD

      Y@RAzJbw)YtwuB$hJL?W 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 z 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

      yDFdQjB(N_$}a<_`WqcsW@2N%q? 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

      #YUq~it4>Lb%sY%Ul;O3zP;x{XnuGf6 z>jp7QQ69U4tLc(!@^>`c2iaMAMPa1SuNk!Ff+n0lm@$TtDt$qp@-K_|d_OJwmBsD# z-KzZNY4vo3n3CPQ$|mh+RKyvFv7#2gT;)>*ETbPnI{;&-Bo-ZhHvo$F2zwche?R6X zuqYnw!ZhaI7)lkcbynZ*3a+HEJ;s1b_u~zUnR~RU8x1+aSVni|xSVX6=Wg#3&@VCg zDh3=CJOdK_3c?Z%Am18%etMJ`{CDEvc;`<_1~;M@i?OS5DbLk#abAHd#q}LG2FP%2 z+J&|5R-7OuSalJ%_CgDPMSbw`oW)SiAbu^^$Ly0KDZd6puq0joIL}*ec&sADYq|V}WAjJ;DkVb@xVEPlzqMu9GSRnr!`@jL^)sOqN4>%ttj|))e(Cl2@ zRwqq(vEy`5OeBU>5VjtC_;w}(tbP)71JaO4^aZ3J8$ds_ak@@w&g;dP`v zuwUojGT_u{9gx0x3(#>PK9ISy#=`_pr^ zbv-pIccNjpG@ymwz;cN6>h9p1Yo`SleMukQ=1-jbab9XkA_f|Fk?HZ#$gC)7g=!c( z6pL`GX^;M^;582;$6dG(>cMn<;k3rPqZ}WKz1bn;Vza7G?myg)eX@uni@vBdQ@MtbLmNFes2rJ_AF{&&|8|H?w{ zF!}9!-W^G8+hnQP^(JXY7XVw>#E&Uy7B6 z$qn~CCp5+X{Gs79&&hN=(i!~UToNJR1fqv`8du%g(U!S+0X?z<9;^KFkwj-ID6k4P zA?ZtVt^n)tMHkfNz@|!%arwUpdaTI~6y?J{p}_P7@{C}nUHIk4b2QOhiO}8|Q&z>w zl=h8ZPs+IX*GcE|~d9$J04Gbzc^L=vH#c%_wyl?S@ zJ1)CAF-qQ(t!S^Yk!tQ%&&_*vJk?aZo_kVm%1(8b@;cwiur427GQU^NgqK{`f?*@} zV2IYl0DTtJ_$lSCr&W1}`}C}=Ee?cXlH7hL{yw>$$UV=0c#CcJ*IQY{o8*;YYPy{H zX~UP(LR{>=3yqa*y9a(Y+Kd zG{ZA5#SD(~*MmXi3UGBh!2Fj2mXE8AwG*8o9bmyL0k);s6#a|>dgJMYaP(73tfY$L zyj0dRQl@J$&JKX{TfgYYhC_sBFS==)7hF65xo};w`kC$O6RgLE}ly9hWIL!cb%Y49F9%p0d0h$ znWAr<2ra|0k$!9j&IU6~APgQNwp~twTS{zY>htXQDpJwo>x~3K!S#I_=?y7E^?>%@ z_H(Wdm)pM;HUAsB)2IZjS8S2^IX(sqs-=6ABnbx57Jdg@Sb1RzPgV*F?*t~?#?{x= zvRw2=lo#HS$=)QzNmxd_mI<91SWPj3QN`GPbnJM(;%n5R7c+yVQ_tM-&IM?k8KhAH zgHZ*~zw#zf)C5t_cLu4=)|=K?YT0Bmkj)xsw5_vkpV!f)0i~Ko5SD9@*D^XHEy4X09u->vt(*nn;L%^1W z2I%{oSH9M6wcG|P@)19j{V_i z?TmXKtR2ggrQCm=u_g0fMTqZ{!^hD=WGH*5dc`ue)4GYq_T>mkF04A8+Zv1!f(k$) zVhrTt&s_(R<5-%1<|4&Hr;*nX9J!7}Zi&eTn=~b&Daq}|5Y>_VDny3GKR4^+@0@1= zgxS%M%{U#=wV(4ab*^{1KQzzywu2;~ra2I#oCeDQ_q>%U1YVe2{hW|E-muQFm6mM` zD+`%SP0@=P{mu@|fPQMvgzrm(n|ttURkI1E^$>tXGj}s00%Tq=$7M`xs2o32*``0u z@Xr$ng3x>G*dxaSenh<2SC>~4|D_fbXWXlD95%2s?ezWGOZid;;OP_6$441Fc|V%a z5fPn2usb&la}Mi&wX^9%$nMNa1f-EzN2h^or8&i%8=9J>TPJNJ-FcrIoO? z!3t55y<8;+Sn!|y;RL1by#6&gapT-Mx{{?MXiWe-uLeDSs+5%nH}7Gk>1c) z-*ClNbtvxe8tH?UQnEO?KeT>mMJFk{ESd@Q0W5J>`g{zjs_tmHQ?qq*-uLYdk8u1k zvkOsUD9QdR>BebhMNUyNQ3qByzs4kHk{}qudXiH_H}KN$^n2zXw5zh4uUC-af&=PZ z)Ly3G%oS0M^Vft_?Hl#?s72z_ydbyiJ0}8eI6o{=2%|&B@qHo_pf7vp_0p7}m2!(8 zNi}{3(I9$RF!~2U2x!g^{p&M%?lf+6V_m5@wctw*jF5|*nphwL#e;HG)so- zahH-;k8-Rf)Lu({61`-cJAJS!$&-02K;lUGl03=1c2WL%`}f^|#UXXs!;{XZ8z~Us zk~ni%zRCSh<<*PCDM^C(!$6D#j&qr}Jcfe5roSHkI$opprEh+}6xBtKQ2C*9ei-JS zFIBkC|6>8HmuHK#Eyp*IBlW5{{t`BcannlHdnqLlH^K~!=&eFdWJ5`vdE~055HowX zH_t>lXDuDqz&Ek2v-Rg;Y}uK_oJFF$kfi)pmutKGHCsh=&BLJ_AX;^E73z6U(kgOx zgp}NhK$2a2FAs)TmqQr(%v(>yx_>ANvYoifI?^+#xXdMQl)dd>G_q}L-X~E zBh`*EVd5E{_QppWVVx(PqB|KDcivTa8!1;jlM(v-QDJ)j8bveB&fA%HYclm3Uu0UU zm4IpAePC4Klttcz$dA7|o_qBE@7A4%anH=>i`?{9lpCimtX^buqA2s{U@|-<{_jgU z>HH2LaVb12B4tM|XHiX=1;ERi)8! zBPK9oXY&%tYX#v2l}4l$ln-) z4~82Ng(-fQ>?1;dc>jR8jM_PYJ{j>PS0 zwG9Ac({7?hV^hrTEoKAIkM7tY@Z(nliB4cL@Uf3r_u*Azc4cP{oV9Jo=ZO$>Rg$WU zGzvwCd&!IkbFNQ&PixTvk$#~*nWgus4Z1t>6$a-LXO(Zy*<9CQSQ@{JZE@rEjqcjBYda{g&JpmVW9q$*O91Q=(kzD5^ z>sV`_&W7x90b!3Gfyu2oVz@0R`A!K{#fYeOoooVpM$9=+_z2h@KvCz+|LPhjgL4Jg z;l-CBXj;;;?vAAuY6O}c>_wOJeT(0Z4^bye;e-nQ-0JvvL(2hGbp}%4+-6L*t%6bPCK0=4^oSm^uDF>R8-b1z{f`#gepR_p56$;4aN_p)AX71|$d*3xLQb0vg zvK(7U^2+UVyV0)U?3#R8Gt7l$a{Y8H{l8|i!cqA%z7U4YDX9*d8atEvWD6M*;e_}j zhS~A}ij8y-)Nb`~;$f1_6{FvPc+x)PrO>)K5zdIsWxsC+It($|K~!}Agn%|ZN?zOP z9`bmPs!2$r^X9V~_=LO*GR2$5zOVTdiWaS5;6j1AGERBf)eOo`v)Doc%V41T^vB(E z5bVjKgL(IdD`_nw?nof{6&Qg7RmX1u)kj-}RbaFkCc$5hU92r`z)<8oM<;^Fbr_W% z!Vx}0(V=wO*0kXyE_$UhHw#b@xTf6&iyLiwLYCtYr-)F4Jo5#&YZ*xvxVhE5#{dL9eqVQ0JhIquyJ~PWDf)@dBD*BZ1#2_l4 zE+HU=ndHfWm|2`Y%i-3qI?5USVJ6#N7)qz?H`RZoeJWZ$EYxX?h=)cm1T}nTG>B6= z{$zM)>|$b!s`8{mIx?hmF~6A@qS87dImmf>qI#Z`O-N5>SdwSD9MYAQ62J;;xF2_s zwdYb}gjT7kJ5{Z24mF=)62=fm9W}-J>nL3Fe^bsRNG|R(M0n(C>9W)x>G|&KWC45ubF#kK0H{NC3B?-gyP!!KeeKbJ`CD%gM{EVY8ocr@|BuyI?+w( zV%{NhE5H{5;;j3idZz}Qy%x2_ls8Z&dScD>F~x#;6{n|f=E3OPXqSYtjE1@PVQb&F zqFlj4=3f%ug@4I_7aE#@SqrxaBjKjU8YAYvUd7)D!A=YX4Igfe1la~?2j~m$p7k<9 z9&mHv*e9*+d1zYS;TpFq7TnlKzI}gzKl*1e%j+Azq5KsVoSD&{wH>a1%%f*6DAq_7 zqOvnOZIaI2RW#XRn3VYoeMtj^Ng0V4V(O=ofVUd~aQ(1beA?AJXo}73{CDp=?ha_Ga4&uN+?>DZ{ABE164SN2Dl!H5HQWXnW8u-NB9IdwcN{M6=P@~uqiGk zzepVU;rRWV`LM>$>3ma#`Isav#_XtrG36vaRAuL>*kZ0S*#et9%x}!Vfs!N6L>mHE zl1U`}eCoM77Rnt!oRWSk7^u*BMtNxjkG;M1T;A)I{xt?Gz5Cg**6WxKk-?|@a_70l zthv;a%*})Gx<8fQQg5Ib?CIzDrq5&E{JOs@%vOv($k+0=*-#YAj|Cg<+B5{fc`$S9 zA!xgVEeW`4j)KlJh8!9e8kO>UQlfZBau~mDD|Wsyq4Ji$6nrs=rfR0xw+uo$K;JUC=# z;r}KZJTOcblE;kw*x%qF-~aqAdG7ZJA?nSid`do#tnm4V|Fw!L!N>GWQlt*(sxzg6 zk|!HBYkSGT(?RluEb~73=LHx_!`N|>m<)j$Wpk=Mlz;C0pkSJhAw@C7C_C}eXaLhK z)}d{m+a?zp_uq)Pq_@G7IH}WHk(zRbO*nSXC2Ri>-vpE%0VvCAGNj;K(I=@SbBD%; zBt#;Mj!^8`NU|Y$(p7?cSFxv<{m-{_P?_WtF&6N@dvD&EJS$Z(fEP1}1YeZtaw|{_ z6K}FzdZ~75u%qGbk7E>buhwbD;r`UW65g4A_@BESSX>zi&@vYKFtK~(hATU{=fk;CrC^>NyxEW37}38{wxx-z#vBBu~f@R;Hlt* z_rS=xTmeN0x5!Zs-);zg%~(cBJTdEKzi`UQ)uz&XwZYYBY8-zOoD!<6`~1J2IiO12 z0f$)qKJd*(nNg*r6EfqA4}WdsTzC&eSZADhkM zD!ly(qixoSmH`Ks<4emDH0WD?>FteLOl~Fv$yKf;+a*J&+Cq_gU89jX@L5 ze@;5_Ni{~8y2PH}Re@bI<|1ieM}Za$aE3;8px+b0$%b9Bx@o@g&=~-{iuvbYuqjj( z{BH+l9e1ExGP55qQ^dV|`s_;<*pbSY1Pcq^GVJJpGrrvvA>x0k?QCF-`S6v^xtGR)-|%ea4POH#fT9FYN&RoM@;i+e?|=0=u`h}N!7FjAg; z?$jrRC&7Z@drpjH!+wEME-$p6iiP{iq4sf?Qre4fou@NzGKMp<=3N@Lm?|i3?Ka zs1*VJYV}6n;qUS6AVxi37K+OJqs_SEfcp{^BDiEhnvu@0@yMU2WjRb&=gDb7ES@M< zN7C%TeFO!^btQ4;bdLBZhV;B$+gqR>hEN33UL@~J2T2y+ua{-?-#@o*xxq&;f6g}w zcPsh#hWKPsWB01`&lKpE7iYoIcEs?Qe!tCqBb#8N7%ck>?Ds%!Ja?^ku1c+6jv6$% zS4kN5{4s5NA(u|2)Z6ECRMl{VN@Q@Mh<%ZGQ^4|3`Q5AQ?*AYsYq}9M;;fFNlki^v zbew34jWTlxKt*w*upf=zt40nwoq0UO5Ou&6n+7iF`jwRmux}=b^|{=?1SaaU-sfj} zqu`MLb1})%j7!bFyVJ2$K{7 z%@IOMyeD>A+eUb-Jkz~Oj$eHI9|Fp}M(kB7`3}+ZzH?PS; zG<(7(sg|IJmtIaivKD6X5}WmH3TN|S->HBg=0K}a|EauSj=fw9=yciR+BerKHa7*` zRCk*@{`F=z{<(;&hx=K+R3Z1%s6~)U=%sQWuB@-O(!Qah3(rf zVn*6wDMF6j?a%x{{_Kzn6$aLHZa?-}&VI5$(cKG9$)+>0cB1*&RI9g5 z!T;1eSEiasd==|guJzLt$T3uFDP8%dEow#)XNC;b+RUo7&SEt@JxpcBpqiXIK_%4@ z`?d*z+D>d91;J=VT2K_TA)g!4*d)%CY^LEe^ zuQR3K50~w7fhA~8EY)w|{Kj7h8epsk&cLhR{Wkk#hBdt=)Ja3Ur7NB%To5oW-ld}b zm!E6~H=Coz5p39%JIXVv0(lWZ-)>49#sZo_(n$QPvS$U92c{YoU!NUg5?7lfA1gLk z1a>PmsKR{QJix<*+RMc(hKb^?hOFYd+!9V;eRwz~Q~BTOGRD!+=_37k&Z1_*pY;DSZCw7VJX<`bts`!sS}E&kH;y zIU9_zJ+jH?DtRQpYVkM>^n$QTps?UptH&azPpBAUJ3ypLqBx7HnH~*9Re(OXq$9J> zc1wpirjGLL6>Vyz_8|u)l38o3J`{QHaX$oQ0(Q3%@aG1C6!;}-F;TxrU*3d~xq|gx zvA-bt>0SsnzrFh90XEWdSsP#$=!m_bdtXcd|AHslrZCGhdeKd6OIcOYb)wuP%?Gm9 znTus!Qiw5r5uBr+G{A;uZ-9#HPz~R=^(WuaPke}n-BW>|`-W4l2%V~MvWBfNc@)3# z8%8p$j5x5zi{NC)I28!> zoZLB)#irljZs!2uuVkXTE?u-K#}Fl)P_+EbgHU+0#?K3$3R}zPWPMQw3UZ2bCt~pY zI~MTM0P|OsM5>se1C{btyFe;p)mD1LI{hrP3aZw|XWQ)v3 zW&9V769bS%{}u=sb%b-8zhsp**h$N#)Tzwr7_+P~cwZwM0#cnE`~_-0;UzizqWB&g zu&nr{%_o@RAo=}W0QkJHB%IR4o)GSHXl`AeOZoZ%ANA!)R06{`9!NLai3*YfW6BQf z)@X(4gE!sYNK~M3?tVIjVtpj&Vv7-3!Us2ug%#e_;Os*vqB-VHJFI5k;w(G;FP_=! zIaAP4H@kEuhxV_5!Jnx)#^HXA$bAja_PsxpHKF(MP>hmzzt1uqwAA*vhe$K|*e9Qm zai^46m`}1t%;rB2A2b@SP`|c)@x4}$ZsAs|iL2*{4;f54&Q~g8jjR0(M zYnuJ!UXk6QL~&aHCy^nNWrfqmtMd^4JFo3tPq)q|;==xjYfQ9}%j>AD%toCi>c zs7KN!>Et{ajkXwA)RS;*@zGrH*pBo!lsyG0fqdIN$qp=}sy#>d{v{zzML(_K((z@b zV%tDSV;xDd(yxQ?{_S+!V()syWH12P#P}K@`!ah%asd$6mwf!T zRwhQsqf?x%u>G?j0yO%7=e3BnBHytiy2gB$h}}FlB$z|v@Sppe4(OqsB)_Vi(M`9f zB!#J}e(lT;>b7U^F2M+75`{ihxc!$luKBIyMwUuV!h>#e7oV2oZEg{OO27Y*_F>dt zF;knnwESi@%FVv?ET_^O@rO77IfBCOVn+{xcIXv|-OoMFLUo@Fbsq`4C=-MuE3?i+ z(0L5)cO6F@Zd2|EH96OL-@V$4@iZ}~5YfyEg*FA9_Xa`4q^gpUx1W~`2V|Bt;!B5Q zw3>0u&$JKO!Mg?{xi~paCT>W?i5x;3eDZr%B-ALi9;#xVs?*G?38DVFAutG**F)H# zS%Z%_6o!s7%-3Z|X-!BBx6){A% z!+2W2lUZ;v8BB+$Y<*3;mLc8`cxDsVW}wjCCWwd?=P;cZ+Kc{jBN7}b8+TLphwfGn zcZ>6kBhZLxc+(a0jv$Zi?Bo<{J1sp)5(+5p)}9h=_msgf;;_9+v(4mwAJdSW!sSxWLih>n0vcsMR+6<>(NFxX)NWZ| z8Nr-kq5=o_z_3gfYI%B9;v*h+^ivyu-V_h4D=dJ?#d6_gy$%7R)hF$uL4~_|7yZmJ zNZ$8khZhU&9+-O}%=N3siyvBToImYmvjC-nd&Te9d|n4OYQ*EyeV zF1p(IUydcKClqhUi2W<*3?j8qc_TepqG6I|7>0T9DAfHt$^gs=cP|a#RxVc_{pDvK>q7)d+*y)eeJ5Jy94e%MiyUv%$~?LQ9PA!f1Rs>a1P8DW>(D{2EF^%nZJ_VkW10{h zt4mS$&%D?iZvnl0w?3h|!qSEvv-SgNY{a+$b8GnRrv7p8zmWsrQJ{2ZX4H8t*V0Yr zh3wFq%QkPC_T=;HDcOd$3(mUJp1Jl57V|svx{v2;!B@9;r{`A?%tuMb&E@2N@br?c zpMb@`)2f?M-N4^n@hF#@ChNH%filk&^MJc6Ew>PpNHBXk?ORJNf7`$v(ffO0M5PAr z;t0EFJ>O*#s)uOw3%WAxa)aTCAASITO!Z-tR*k_W0FW%bGBVt;XY!SiO=n?m|V%HCaTMN-;%|C1tLnf1%DT%=LxvXk4 zLWhzT^%`VHC7Q_n*EIjJ5;PF>u(bf>`Y4za&nw=v#{w>$X8GNbm~ zmP=Bvwzq!eYcfyW`&Q+Q$F9A!?{Ro4B~ki!Wp}tObt#WGx@rP!1%BpTPuIhMnMw#h z{#NrFFc$$PJt=0o6QQbmIr@?t!JVFeVg_{*mhv35^w|Jf@sBxG@WlD)`N?+BJ%Lg}{Rr7bxZPZ3iPe^3vk)x3^${e{-=1v-jhW*5u*=h@umj^ap7* z0)$gESjlYIs9{a3B@}k3SG`Zt?`XkjG|#oNCu{eDt%G(&E|_nJp@?65+0%^tO&RNQ zbUR%A0cK!VrHrpm2Ml3uaJwvG#y(WyCyrz+6gY#y@+oWpom%LXNFR=x0Z(=L<}rza z*?T0vXDlpb#o&&OhtNrH_Gy)#3O zU9NSpF31`I^ChO8&mb7@yDQLQ67LmVx6qww!O{4_FfC*kNYCRTZYXTmC)9Sb(M$qa zD|8RY7NRa`DM>QUhQWs*^6mo)s|v^*Xic~faH52$K2iZGzWKTQF&?81X$>~?DRpl< zkK)0UUjFa@;$VY^uB!dZZA_$c1Q1nRY0YFVNt}RNRh8^)W{Qksjr+ODlde{jLNRt& zDRpzuVS7(5|6wp}pMS$jlZ4cQre=b;{^Vg^AO+YY4OxRCY4yZ8Ma#sOlif$X994bbd|uz0|3ni+&^8aP4QQ8IYHrvON$`P}?t)F{r;^Gna!v&);5S2#rfxz*VlL zb20Juc*hrv6i!I2FW?56OFA7qbP1FJ;RAHy?+<)N#^DdVkxEZ*!R5lyUk+x zDP|#E!BFq@()3uIDzRcJcOMN}WGxv{)pB>0<`XbfI*Xt{0-4H6)4bbT>+9Pe)PH5C`Mjm5RczB(v#dus24123`fckA&wS`t4LaZNrbn1F zG@j?1>zry5tMdIxkGQ1}qj4+)n=_+|d0H%BFES1}<2747La-n0Nj*l=@6g_{(+f)| z&Az%^eZR0@Gj)4oUG`X#NJOT@!HAx6ChA6mqh>uQsSmb~TR9e+;x!A~7y#d3ZDjMo z>ajL7^>Y&FreP(ut=%rWx{N!11X>zIlJn@mV*)mu^~iSskr%)vI(OD;L#gj3G#bFj zsbb0qa`Z^t#F*AHE(H&hfFI9RY5mkek2aP=(1nXrSkzgmpR3TP z$tG7s9Oo?2@J1=42XJ>HjH5`t*xf(@e6pbZ4b!Z7{O!4scI`v3o1wR>(qv&e z&(UatlcK26@(dfE--eF>nMGC&1QV-wLyOHl`mUS4xj$LE<_Y;7!`m@>Su*52m#S5w+kvTAGX zfR6~2Q<2wk^bGO238GUriDfx-*d~8ij2rw)l(*}7D~p_>B7KG1RqB!} z8^iBzI$&b(WNPAfpfDD^^(EuZGw^3+s<+v;vXN#ea;?ESJ;7C@>IJCv1r>>;I}g2$ zq!PUv>waz8ULQ6UF-zyn2HiUD)F^H=CO)0yuwt6U6O#}2reKg#D+344Wgc(DpGpR` z3NVsm#dlTo8=c-YxJ-ywBo|8co31N-{3E0k$j8%G)up(8-v|D0wjZaw7zCE24`Qd$ zMmQA)Juj7N6L}SgXJR**SH+dqRtRNW9izyfvP{n{(<1@b21lPHZ9tWiG`6!l2ed?h zm(WvLwUOZJtKv~8E22z^{Ut1fe0K!bhkJCbe9t+(G2fg-T}>C4-^x?W5~00Xys$$0 zIZY`|)DemT7!xPW#KNW@iTZZ3k+SNN^{a!Zrvxl!&=_jK1EjN!yk${-mT_63`=soc7XMJ!zx=tH zFl21{S}F;3wp9gbsLDsl+=4mKg4DNgO0rezhiq}_DI(qGv!q2R~D)(&BedrY} zpfc}kZ}OZkPZ}gY2}9tKi(Y&w=kg=G3uHTCVMN=*l7D?Esdt|9l@5oRT|h^%nV+Gt zsYh_dAxN`k#v3I?-EU>N*!|fr1Mo9LSkiC;NB2w=F=@S~TP-1b^?MDYeaTXq(s>lN z=Ru60>y3K+broZDhz}f3p6{T;5=D2y^bRaLRd&ex#KYm9&_KgwL(LicL%8f%&42EqBb` zXY}+mwVT}3kpvDx$rT&Pz?+Dtehn%R{jP{3uKLo${r| zUxJ;YJ0cCm8}9a?%l3S;&hqNbPEK1>@0_M(5(t}TH5uhb!uB`kli!hn<4bn#kj*cf zN9C(HH@3T#f|OG7{=R1h@jrl|bzyTJGRU<@H6L5ahiB*Ahi=<%d|%xW1S*R5(O}-Q z(A7*u~xaHs5AIx;ih<3qwJF zeZjBmdpN-YgnNzaT~PPQx#9K~9D^8x^t+88?HM$epy%l~ z>YlwFg;M4iU$G<}*YCeOT^*?w;Z-XmgEOzIF3Go8Ta1i9ZiTDvA<2F?If_#-{nc*< zOqYKv-t1%N)e-DptUu`8BXC`)xWW~E)lxWUQ8N5J+PY$~h=~5D!$>(ue!#D`wI0rq zXXfg?tD_`VeRR>&$`Gx0f9l0l55C(Zrmuq?e?o4%eo>QUs)>wrha{IV5kry#Bq&_v zdf$kV8%XinF6V4ZvYs*LLR2wnZNo(C7rTvTPIWB&$4yTew)ej3P)#w(^EuVJm>=VC zi6i${yieByi5Pomt7Q*A+yv>R7ecJW~qp|2{oP z&w!kb3?P_MX7J!X9ksw{`783ddK0gH{k~7Lm~`~i&8y<0L+~|GZ^_Zrs+3>;+G_Ekm+R?E^i#bqbI9s?9itmCjaZ3Ha9v=jQ;V_zrZrj4J&Tfv5{6ejtHiG3QEwF!Y3aR%z7i~o&uNZ`vFRnuOq%pNDU zT(n+TGmcfKksz84eI#w2baX{0RsB;UTfQb+u&^a2NP~I;<3u}zU#P|xmP1i~xgafO z);60Lu$eb*bCo}zx$$ZfayrM%AWD2bhP$a+C=_>zEJ4?(Om{rcG_u;xrA74*gMHp; zJwJ00mbI7qH^u{dC;h*{?x<(RVrQGes3Jn=LGnc&6&5w&0FY*uW}IzD)=q*JDVYs3 z-dC$nT!Oeon-ng4L#`j$TS+BvXhb6@p{VT(9IR9wfE*~0pl^SQClyxS@B3AQ;nV4D z(Y2qjmNo6$A@Ngx#YhpnF-M5H%JlXv5S^Oh|G3umO;B z3shG!tqO(2=?z{o(KQPLYKG>TMXu@2@3^#bX?NhX)@o&RyR|_X#TbPf*EyUUlVK=n z9L0^vGN5QdJBru+L4Bwh(g7EhXn+0^C8gTizzJ36T;^z%ndGFC;_C4$Dj~60&;gxl z6rQPEpqR4Hs@&XcQ(eyJ1|dl|!|Qp}2F=rp3&KNiDYerLs&Xe>3lK1JCb;4$_7|T@ z+EFyUewM<ZM;w~4_j>CkSZYqj z5_Ap)eoL^7uA)Shli?aH9eSViGzhb{1WkyLS=-u_tW9E}TXrCS+%>0Nttq=Ma`g=r zBkCT|cOF{ERx!y-mO7|M1$wj{{nVuGr}|;=Yu%flXT}6llRt9ZtbOOvBu7d^)u8f61Oiw9`Cyb zJ^;NLY5&xob{(9j`4zz}>7?G~;Z3lu29So-_54`E@{6qNp;f_`l5f4=@_N76FO+_Y z)mC)3gyJRn+xvM!`NuZVM>MC%V6xq0Z5eXjf@4H76*3wGRdYxbV6$nr3fQR}x022u zr$$GXn!_G9lAbAZZkk#%^zp4e(IXs1cX-FI0;zytQAiOj8V67}$%Gnm{lSXCRw zq`j$S*uQ-kb@1Zc0L3u_oHe#^#E@RwtFN`>N&%nM$g4<+DDD%zxFWEwwmLuav)#ACn4H% zC-3Nf9Ac%veSqN=6|CWYMjR0*wv@G8lNrUpi# z=yk_>g#x0J*t5bE65b*qGLW9#G#h))@T?%P6?k7s27_-#q(6HSnoA*;PRk&cc~1|6 zzTjCZjBkW6Ph%3U|5jNkYa|ZwcFA17t8dASR*?9M|O0yC|N8 zdsVj4kLGw3(qW-&g0@^2ZaIF0z=5Yo(8Dq%&VG5pz7UO_(w*nMFtt$&&5Dnx7^Uij zr4Akfu>%I^wc)4wCC{<;-@Pi1aFv*NvdMHEy0nr*MzRtP6#a569kHQJk{hV~VWC#C zLzXbdnj@Ult5p^&d(44+QEGj8nT=XX67eD_G>e|$NGFm1`9xV9!&*W}@M)YkN2Fh1 zNaQHp6;F+3$SOm#xPd@0m;=V3Ml_Rm*??aX;f9_|&{h5#6%;Y{!-6=DXs;7FCZ^)^ zTg5?$xm4vO`QFtDdhM^^N9qkxJ*9A{BA$owWegCvf3y(@&=kCAVs!zI!HaP7(0pGtLQ<7u1z%lk zV1nQ@*N<}kVQL2yx2iq2g@scj%O1s`TqS>3dQlrnBZx>w(|=7oWw_Y&3B$S<8<5kK zxOQ0>I&|N)4h)Ybg?qII#_m1L*-LG_obm|aSY=HL;;WCdZX&=5i83rEZ~CGzL-8WY zmpny?gjnwDAj*8G4NMa~p;;c;o!=OpX93cv-P$u@hn9&oYQHZZo;g?E{tWX6;-jW0 zcrzsn?1R$`no<;6X)1!gEDO!vy|G%khL)nZ2ZyLeq^yg+b{u{${<#NX3v8Y=A?Q$b z5ecZjei98%IfSty{Xygj z0~XTl-L2)~8$h{#^@q4QAf@y0;UI?pgUPiw;koObV8K0gV?WD$aT=z1@ED6fo0_J> zo0T@NL{xi11|2lIt}wcbxTSeVtkc^lyt1)>((r0g&ZaqWWFkDCP+(|!R+;`}0sYC@ zPzDbXyF^-~<+FaB{vyfEUqOs=Dtfs6cJHl}-i($y)Asg1{S`6nz*j3=Squ_?pLg0g zNB^kMZWDft^v$@KjMl2e3f17I1NbO@@RGbtXxq`|9aZwZJkHF;`b@P*GxvD;S|U2j zR8VF)u6{REY~k)1tz(|q1n+K50zwgqyKoZ%ylZ-htH+G-wdbz-5~2t(l8 zZHDlRTx4aF2S0q+C+_ zjEnmebvG0*)2tAOl7K&F9;8SuY$BQYtFo2UBQ0^ya9F(au#^(HDCD<(c!C3~Q z5$_lHBo=iE8l_W$)hZ{HPThZ0ZpKHsX02*x55|{JABV1u2IKycCu)bC4Y}YQMV%Uz zEOK;9Sq{2}%Xiju)@a$S_`TEoU?nm@$f!emz(*e!B*hp@13?X*w6UPJKrG9L`#Ng) z$bxIcSSXqx;VN!5+U{7sVFzFXdv(l=eFLB!Hwy*C=&kwSArFjnE7;U!eai8s^depCYvhGnr1GZd!NpNG{xntc*20KH1GynU69 zRT^|c%Zjl`%jWPx;7l$i{RNfu(xP1a)qSU7k$$K<+G7OEqz1{X zwH+XsnwA}L%l^Dg6{RQz`aAT|!EVpQIl)hbz94v%e|Bc5Pe4_}T}}Q@*GnxEtXjYZ zRdk}Uwub|Ni#&I13y_Nqx8`1OdD6mJ8Ynk++58DBAO z^#TWxM{d$n8K5pZgUNLY+6)-&mPMSfkj9cwY}ww+I1L0;xRQd)Z*X6Z*8wc2vKyE; z**cbmGN*Z$w0a2=Fs17x;X(q4^?>Ckg{`lBmCuP8Z|0v@x)Lw@zJsRzrY?Fk^s{zG zuhJ_{yM3fm|GaRKs$_OCdGB9>8Owgp8NVY=MjgY{6LGeEg{vj;jf%$@6?|wK_<0EN zA=3z+kLE-}QpPDu_bN&emumLOYvIV#W>B83O~7a?+7Eu1!Rn6+r2v*0SYoeS41i|- zy;b%$-cU&ZP%&0K?qJ~%AJ_3S!O74An+Bhz-Vw5)>tQ~T8z(@b@QQNu-JRiT@lmU;*Id|?a zagl!C5u+bx5NOp9IKhk;wQTQnlx{z#Em#)>uc7%fLJ@|#Uq;HY^CtzL6aNPT-uc9s zT~0z;Mkaf>=$C}hQOBMxY^`coj-Hg1Cyh%)z!TO&RYM#4f--H(X?vbLVC=(6$5V6@ z011*36dEc6xE>N<0>*!tY*Scyj5gJB`vL|-0poQRLD;>d{DR8<5OPlJf3G2NIl{pJ zc&iC+obnc;E`+>1Z2<$bYyzJ*KZK$o49I>D`F;X8E5P*u`*vPy4tu-fSy8r!6l34f ziDc8r#t;qCPSj-);!xB9&(x&O7}q$l0t|{}jv!#Ubyi@>L5*g~gKpt~;8Yc0i-c~W zUz_Cb9dsg>Q-ttAc|(x^qs}S}ijr^B)n)_IAHe&ekEKN!ImyI?1&F%+Ef6|TL^94{ zjIH1RL^YE>Wj$05E0jft<5@k~XPbWT%E?=_%MMVx0^H;WUZxR2a<;G=%Pgn9y``Oo zeAC&q_=n)W1E98p@ctSQ^gXl|}<8CBmCsyJ>MPx3rrj zM7;Y?t7wAeN-@A^w4i&DHo!$7&^j8tJbBLYOY`7zO&s}0r+`qF9fT&%nP%TM$=Nh6 zkM2z6Mk|S!WugXy%j?o<5~W+S-|u(#?_Xd3DHPhQXE>4N!H!GZyUDnt%1`1`zNISE z;47{(8e-^hO?mYb5|AfmFLKBVns?-6OGjWGYXKRBB;h@t7{*11oMqcJNw(~DPDL&C zw_gQMr~0!uf93C+uxP&2jrP({&b#9!UM3&iy43$ffFYRbQyIyLbZY)?zVb2UJS#~r zB&ikeC$3e;$W~vne0liEBMx`1Z@E4ngO$QxrBv;H(!!O>o=CEX3EW9kh0Q&{9p*O? zRA(yhkB*O4SeV{cL9)qFsXjq)suQct<7Mb2kUCYI031KPe;PRcBst5;HsMVY#eqZA zdk0_u(|U8o>hNv0LWO|yk#=Ye^~nqkkBfdVeu~`uMD46%rhLO$A#KuAZkpkt<%X3F zfRf;3et4+?M4S&WaVP1@0#BZw2T7kP@9^3 zi-~1svX1e>mTA;Q-d}3poklIkXXz^b1V%lWA-iH1Lu} z`{1xJy#HJ-V3{Jh+~3#1C8MMsZ}PInOHMY{cX6$XhHm>V4gTLokNqSR-OC5|-KfvJ3IYvT@fOt}4)w z`7`2MB`ie5SZD5p0K*vtgSIQf_R2~C&Iy>d7lHo$BM4x}HYH~$j4o?f-#nN%{{pqT z@h$~@*FVFX>7a2x`em%RG28}fmY32%a=}VIbP9IhwWIZq@PX7J9qRZhfYFwFQnoMg?KRBgyXJ9{WRNFv|hsBky&0f8clhL67jPl#Jjg{0aqCBk#Yp816@ zL&~r5*Z4>GuQ?UMymk}iS$D}0dN_1LOlAFOqOB1SU8>lx=Z2Kv%9o7@sp$Adj(o~! zPvadWdy2P}Oeo)Q1bS1EY7kZ05ID{O-9<)2Fy4@8kp`&6S$uWMFwU+h#`5zEjLJUDv_OnX^EbR|LQllS+fh_ce8mI?Q3Yza&i~?Nb3B$sIKvztR~e|d zSf$MWWEh6}jXn2U)LU*ln5^9cSdsS06w-D} zm9~`((SSe;{JjDBug?hB$dE!Y7is`S5yi63hq&u9yWt>E29n}!H z5A_H!XR($;HHP_l{uV-+(F~HL~UjZE6^)Bd0YS ze-QZ(;+4kmzp6(1jMrFN{r48$J*-Ithi;50pBafYMn|($>eS#KIwA^z&m2YAjQPQv z3F*Yl*>AsS@0omOk0EQVFnK#vaOZ#gycz%U;?I=TED|1#u8hOz{S{|9!W(%5#bahv zjV4b)C*dZ~@;iNdf_mSul=8xKJD_?6NQz&1XpIcV^M4|Busgt@c)BJMEc+}b>zSl24K1K8sk>DN4H_afu z7qn*cU9fBB=%A?L3YiW?rWpx})A#wD*9M>B{yz(#W2cWNHiTx=Mo5_|rHeLAP*`AA z&KBHJyi${fypjFm7Yg7bEEfOv*;y-GzIx>7;!T9zUMo{$-eR+QTH7n~PcH~}lOZVF zZju@B91E`C9_^-*vQRP7?PUlOcq`Eol)t-uyak1`I&;zq@g_AdgjmwqWal-!2VcAq z)U!_VFw#{G4P9JjB`6FX+5zFzZ4Nl(phMbut8}nNxTNi1sPEVCh=V#q0_1L_0!sMn zeI1b!bXy9;>?gidGAPeZw9P9G#TlUut@K_XOmM94h%UXD2>vBV0YW;lC&^}omCpv6 z^;Qxh&OVNlaZ*Is5$;+OPP}tdRs(rjZhnk9{bZaGT8^lL1P}VDo@88r*%n}z4^;;D zsIF65R0fNV8dVAfcnv|d+KEm^W~C#8$0znu&ZT{SX}icSi|5x-`Iu|jhr-s3$0**BsncY`JRI`ewB;0U?$2t!qQuxPb0vgH%?`gm%^sG}UG?5XmqiBf zaInAS`j_2ltF}MdzZZt_B*&}_YZk|mWsCF|zKIwraV>4>IS4j*WT$@^3B6T#S~*Pk z6Okw+%zY`JDQezFnQs zJ8dGu zqoLrX&Gh)K@@WgNE=~faKTI+l!oAVZ3y?+;cZ=rdL;%k}!czZ2N>A}3xK-bbyW5;F3lb^n{wcSSoQ{I$fFzz+e`iY{zU?#7 zaYSYao|`g;e81}ly_-k=^#svB1xKH)LoR^X(m^Ev2Z&loZm|6om&*5d`$g4DsWN_R z)?@CFcE{cSZtrE!-oSC$S^hpa!cHoA-^?`Pelx~C+hLC@J{2J3LUeLdST)2fnyQS~ z7&@1((P7bl_8l!*dRIG4ncvI|q(LJ3<)wj_KUj&AUSe3Y!FRY1iN=vhDQ3!Fje&&+ zi{+Iu(10ED{q+{;^5#dY^Q`+oz+b-j!3MkzBW;L9KlgRBGc z%Q!sd7bo=0j(0Jt!{A9D`4li%} z2o>nw2o)nhu<$9qa3U=yQezyglvQ_E?l=E;R+)>1WL^k8cc;7^s9XS3?n))r&kM|L zUAG=r4wdKfT{@i${+7+X^ZL69sAJqSRh+H@etQRY_B%hMreA*W;*_Q`xmnFD!PD@4 zbGhA-dH!wZ+fhqe*r%=4E3JR*Jh$w@xADP|w+z*!lxtF>5`AV-d{dMJs?30##T+R69y{vU^~+-r$G7!}7xLbF3lA7Qs^3 zu~(xud&nk7Fo#**stmao(I*;eh&RE#5JWpI1l7d>)^AuyU9h6B_Q_~b!?y?_5Wni5 z&BGgl-iBEJKbp=voUQ+T<0lDXuTq;JMRb@|)QC|MdsP)h=|JsO)QG)`2ujr!HHr>e zYOB_&8nIfcv^KRVLinD~@49|}WN7ygZ?-Mn#T*Ym-O7f;3d zo~m1;5CtJVOm^A|{`5p&T{uJ3FeQ+Ucs*u2g2c3c4y_)_;k z!76o25Ws7v&jf}m%xfSzh|$w{#`tMk^{ls=YHL(3=KGXzTHXTU>{xOQ%}&Tw5&6s2E%=|BNFVFbzDUHvmynmNfAh z&mTCLDS-5`Lhac!sx6S5@k1VDfRz!gg};FucyY>y>tfVsA=t6i@-_Me%b2<6AG8Q; z(f6Ei!{)B^+GaKeEC!C1fQ9U~tv^_GsP?h2%K+>gwonPbST2~~HV4t4HZv$b0Y^H$ z7$5UUy!#>V@_%hr-Nc8~gnV9Yu%&5aiAn57L@hz(qm$WlIi@WMzQPP9%)6)|cLTZh z|MI=pB{L-<4f8Yz!igW+3{^8VqZ~(MTtdrDagW6WIYfOYdn+Khl$%tQ}HC-K;^$2pkQa-@69>i^0;ZrEB1b zk0YSwYYpZ@5k&v=g*Bry4?(H-~ik75ocLh;?Ll%x00%efj+^+jqC zpp@Fi*CWT!iDkyaVgnTZ12A$Z2GCHITTEhGsq&y>J0L{LZ0KwoW(R?}H^NeNHgz4}Q3VQLsX`DW z*JRa06F=K(dHNyy7G9Zv&j6LTuAp1}R)NkUTNr%x;mtM7408yk;+w^|kxG?kw~A|3 zXXuovr{t~j?` zS=lSF=$`eQk1$e3i;FTj%R*!q?%t`A1PejbIDP=xLq^YF-C|SlX9Jl1kZqWowvCtV zr)H;dY|ACMP*17OZ;X&abm{riavi>=R$tQnwdP;5g!GOZ6r@F_{ep3YC^?prct!M# z;BTZJ8^Bd%nWqqDgH-pM_O3{rNe-Imi8~HZfqr+2IsTwsc}-zKvS)tjh6Xvz@OGurZyVk+47HX~=(Zfh(v z7qdBS6>M>%$baUju~o(}d0G{W-A~_|uNf=aEsJyw4p?)BHF8+}aJ?{OX#c++Jr*li4-$*>L&+P0bdd zLkMMq>VnqF-gYLYl&fij?De*Q2&^D(qX$5<+aot}%DGnbf6A9rrn>GAz&}|R&b#?@ zSa%8~j0BYpSzQ!@x&_rKd?=)9?=RtetAqt)Hg;l_)-g+qmMweXM~H7|3_Fk+dzfp_P zZ_BHtpHsNR7qT*QHm=CT_f!xu8dVyew>uMpc2nDsQy!pR^8V?2 zOU;^g)-|ee((ce6_*A~OUV4^ma9+a3=_0r^SLXA+bF(ilmj2IS;T1t&{i{FYtjp|D z*XBMP$Noy(-&k9{YG=NkD{v@X^r!LAn z)JDHvJ&EAXulG8yT=-k{K2_0F^nXK?uccx~mS~%y`UUMm6r$Hzwx?sMS@4{zVt8k> zPJ3+qw8(h8iP8hh7pF8qS4p=uO5KE~M&(ZKRtd$pUDQ(lHi@m~pq#_|Z56Q~Gtq

      ZpP4CloGvVtC;qf!Dy`bP<)J+K5Bd}C*+rlbf{`gs%4)zVugD=3A8t) zsi3hDpL#2PJ&%=r)2sCG3Bp{VU1Ed|WuyA6;I_I=PWy%HOty|jdIq(Ml7_2=L>2pP zK_>rL$YIwW!A>%?f^Q+7}K*y0;Z-=gFPk1s-5A3f?1k1ZX z=n3yTcUc7L^5;p7{ui2!rEAt`UWTY9N~qm9zXaAR;?DIBbyUC)QM}e6%j~I;VCkBRz)tm)LWDDpy^Q700EMkp)~x4x6E-QZQ-9@cb?M!ehGJ32J6yIJZZoc7jrAitOL!x=O1ex z)V$&;ygc=vxud#my@9)rjc!VY9uva*2jbG@xt_Z zDfjuQ^*tM)5t;V2tAF9G;(5`t=Nmr<^9{qU!^tXPp+Zx}ZjDJ18om8A52ikwJAfvm zw(N`-Eio|8B4)DkXCk?TgJRNnBNi&1X!^wL*TjR$LCsof5b}XBRM^3C0@}16$K8$) zri}aD3?IjfkB+J>gi&n^GjIFVwNz>PB}!3aI>O#6cP8ADOc3b zPR|Kpiv616cO!!RDEC$=LyBmEDkM;z2ke^xKf!tcH3eC;ycs19uF?!aBYN|iXMSKLx`(-+G4(=hBhdj&8kt1>I672xA;%oK)>}U}ft_*J+ zF+#o&)2Z`#d4*)RtiVMPhw37q>LS?r&PHfcZhiLuH=k0n+@Riga-4%3djLVhHFNSc zP7RB62{MDPA{}oCgv?%ZBoO~-6@+R^bi@(Pt(xBDB3C@Va5qi>2Tp7(C+pm)XyQ7J zg)(8z1>j~ol)K{m87H#h#T;>C%ra<3LDle^PZ(cUb-uwDEwTb9-}s_%*i^~NqpOo6 zCocTZSFWFZLg4}|u&ge~vw%OH7=hdzdhMz>S_jl$Pkt^DL+0~0plU8JMLz&`@osr_}maaCDN-^UTKF?(=+`CiQG(su&3Cmkql(p1h#H z*pd5XaGp|*8s>_v^TD?eYqgRIvBY z`t^1L3t>~Y#;2i;AjDWs4-ic3mm3+qklWsWUdHV79Mj$GKK7VR*_K?rV;;OGR`=-E zz%nOq4V($h-bdGNl^o>BInHvq>*(c>(=PC-%Kuj1?l{1j)3jY>!9&c< zXogwZy5C=$?XP@N(VU!ICPku!&@hCHXx4#qZ}4dM$@x&`S>3P61L8yQ0i)ehW1PxC zmd;W>G}|xS``h0(Zn};x&A0c*+Id`_H*RfLwE$7`H==62PJOGtoGGrg6`$?v*YxLS zf;Hh%j|!6ZzdmVJQP@nCW&uERY-pZP+=tirC6*)HL`W`Ij!?u6`L^7P+4iS@+Cq*R zSd6}1jB+yn@rjV-MY&ArqzOOzSW zIrkH>&50x*HoZ$?pPwZi!X__qTf^UoIYy5OMD0Z=t_o@&d(`Bm@&;Z}zIDXCxO;a# z|EMx~$!$LDk3YQVl!jF^?H~f|5Wb@oZvXES4>l5t5uvz{-~>UHqv7_;u%fBPy&fA| z*(3G6(~fr4YtK)V@D26Dn?iAWL#lOWA+u3KFI1G?*l}@W*v~5;I??CL1(!A%cTpmb zUCcQU_&4s(oQo?E6^aJ!dns=fWgPKIYx*!v)gu}Ea>6bTBz9&pm-cf zG&n(@*_Xf?z_4@T|NS`&0;?!pM-j#$!wMQNs4(NBS(6_LLZbiFA5?wN!4dOVe&eIP z15`MIpZ#urYvP8ALpp^HI^w)vB>PYMslMbVyaTXtb(HOD?lwKtQoxVEjY-a2T6cV^ z>oLu?9pTlH<5OKDjW4_kvWM0s$ZojbC(O0A?ij5h1v>>15GV}gCj`1xfiSj{T@QmQ zjYb5s zJk7YA_f4jEqwdk$FqC+yK{wHxWEVQG`vv4EiUa9TL_$ry^{99mvT>%s+M7c1jfwz6 zn1m{Y7@Tf^P+;N_F*g-Fs63Y(q(!QV|EH$)#+VbR9C~^|>3~?-BgP?}zPhTC*n1VGfHOn(-4>owJ?Dy*hPkcrN zBlwZ{!4`MIO(&stl>u1*m838U5WK=!@fJ_Xb1PxC;^s8ZXbr$dM6m0YI^Bw5FdesD zFd2lce)sS9M<3oynf02yTW<$N2`Aj>W5j2;YXysi(^wU4 z!sI48`u(MS1x}`#SQ?)5oqhRrII*CwLV>F*i3X8j5bR^__ zKxjQ+-P23EE_;<)f?@-zp;TygAlrzK?LsaXlnPHQB&dVQGBJ>h2 zIhfJ>7gV@R2Vep8C@1K8`U;DtHP8&R1lPkDJ$Slw8%KFY!`*X%+QRE9z)G((YeM_0 z0OfpaJ8_8_dH2rsK%80E$Fze z_zYUjI+?sHco5ysNJTbfN3+)?Z3;J5e^Mzah~q%$4`%znau* z_S6^glMYSN>BqV>D{rT@hJ+M8)l1{2uLdPV=xi;FB4d)^(g#-C>H$$7es?lJG|z!H zN+yVeqr2}Lt1O8!3lP9q<)`Xgz# zL-Ui2R{}(*LVj#ynAwQ;$=eihYV|sPhO4?u5&TtVU z4)|kTg_qzvcbk0eCg?$k{$cZmANppM;~EU6TYqt z#tu{zfsuQE$UK4i&G9>fG{0ExXtW9*NpHt8BU}LCpKk`{Kl|U=gAn;+q(LQXG21ouV!UeHL>bwD>8TYuFS6$!;{+@5dVGmTt*1glR@VpeEe-#tO?iM}$u za_P@$yimMnT%t0ru)FtO(HsAGO(8Sd_wSdlUBnYN1FnIYQg_c>pv|Y{`#$(v*f1hX zZ^mRn4eaZXo-Nn)-D^yjyZv9#A>A2pqEPa)enCju2PzypEGvM{Ce{Z|8S-1ZtfGEM zS+(TfG+ki5g*z#~?EOUgEVzj{Br2Ha4s9Iyv1Ry4krm@Ce|(C_gK3xh-65RsG84P1-9vh zIh&C}`m#=j%JzOr@iXTqDRgN#kC_Tj{giY3_>{@fM_W^!5v^C@JN`8Kt*{h%K!j1d zv8S7;$2NG&nR+q^_fD>u>vy?XLYO^d$m9Zm_Obr!%8aIt(A`j^e^YF243h@#je_f) zNK9*qVX`W;Sh`z)UgrFbaH_@8Z8ZsthqFPiZSiZv`77Eu(mn8Gs4W;sJfsNt>O6vF zo{LA)=*`JVCqS_CRrgfkAf8X3(Yen8n)$bm)eC~l@VUoZ7Ge$3BQjb&5m=t}Y`?3b zlu^)<1cHRRef3E8{Mny@3op|n^+?X$NE!*5Z}gI?Qiv6v4q_FWz#Hvl9y#Rx+<}w? zCG53h6Am=`8C(G|Lr!hS{jjMB5EN!WkmFC!HUB5PpoGI*%CKQ=tbSA}{F7GulP~#z z1_R>KxzV3-#R-0rfO+tfO7$)o)W}_|+Jh`@2tTD2z|IeSrbcA)mB-E)Tjt#*%`VsPoN7B zF&;H5ZLq~vKjXoyS*4vdWje*aRX5g$lO*T@mBvP;lSDyt^gY9x?jWq>yKU8>#O#=; zAylk~)BXc~g5BS+_5QGo5@rthxW=Hc4 zm?#)^ML!ocQ^tQT1+VkHqZN*LqVP9>=*I~W6rQ)PrShM#=oxl-3RVj0>|>I_C@qHH z9shLG;WK~A%hmXd+o|sd$InKTksT`-fk9K$3oXJD=%o=ZD-DPPL={Da4F@m+if0F+ zYVq1BDpVqATE=k^Oe2P$X6_w%Xt zq5Gi9Uhq!T%n@0~xBtR5Zr}YHzKa|TE&;R9R|e@^MAlmt>h!av&@UBu_S62M!KB}y z=~~#P`|}zY4ja$}y$~l#iWYLcTO~3t z#qbdMod0fQ5Y_G~U!cCJcJP(^ilV5jg%K5g5P-Ixo;`TAWXct-uBy{yQTnIzUErj0 z^hvE{-bWT8O46$kD2!sL-W>)BacSPPRyU8<}!o$zoo-kk?+ zMz8HyG|7$UP!wmw*9lPWnfq8y{yL|~|D`KZ;rZ;h>^(Us_EH^R#O)?Q$580LX3O0c z9aQFS*m6CMnwJ^<9yct@>WQF(srqO3cH>xQ;+rBKkDbCkfuQ@QtD65(&OKGC$A zl5y>#^g%kzqL=Pm=I;{~N4?IcWa?M2C-qF%ZhBn;n*uJQ{^SI$qTI^O%jHH@d-}}X1+@TnC zmkh_&d0R6Vht8=Dj$Z6sWuTEOTJ`4YGo#7g`4=0n7G1b-&Eyhnf*w8%hS)w=1 z`W2o;Z_UnF8vcqDpF@X-6U$#3g-9OoJ)CWMwLR6toFez_OvRKu<@O|D92X_Bwi&|9 zNpq_`p=V?U-5E)^n7aH=SM#Z+srx32(nUbRolC1PvFo1Ci;u&%Q}z_ROWyH!*N*+1 zy~IcLX4_foSe96?JrUk%4*~X_Lyyh4c<)?m-~iIfTw`gDRK}fZKW^|r%M|us`yWa{ zBw{8c^lw2-=wDl&_l$Nj3)`q?IAz2c1>QIgsS39{d*^A_%KUAqE$=ap!;n_%@dez4 zS6_n`E>vZe_1N$4lfrY8h917^%L*7c8W=3t1<=D$_qBZ4G~L&u7PNeaJ?;$n99+QN zTq9eSOBJ0q!Y{@y3TI4{n}1%Ea>`%pyqI}Z-4ovYF0_NqIjH6x0x0!41Gzzvg>2`m(Xm3fpC=r+Q*NPEha&|e@>ClZGRs5 z2ps6wrTgSGghLCFgJ;LLeJMeMlqZ0#ea)%I?>6W%&m^z?{t$fOgLPmHYRpzWQrQz1m-c@IU2e-E^wk&-ic{S^1s0&r<{z#c9%ZvtZ!YK&B&(ciUA7ER=DX7XGzM zAMd)C{f7C>|Fs~xo8RJsVR(Q2u4z$c#&bwLjq{@L&j+x0ej=x(|FFCY5NN#Z-{IZ+ zg|X_(8~vS>uR)(I5jbT{-!>0BQP_^%(aO;S<-LMNAl)lO*4~}NDR(5;Lc)9dl$1(WI&}Ut+B+L2K`c0r zWZJwYaGi({6M12STo)gVA;Q6S-VrxTEI`es;ae|PETlm^|wt;~dDlc+z3_A=I`CF6>HxRQ!h zc`eYIjf5-{mu^%FQtZ;Ve!g{bq+Za694g*Op;|TPW=?UVgq$><3Fah!; zZhGcJ95meMYN+CP`4oBb7x{be-CXfJLxt98%Rw&ygN*dCc4z$KC4m-;-`(Zds5T zq%5~}3qsO+?z(77(=C{LTPR<_JYY*XdyYd^JyOoL;J(2t{L?IP>Cm9(gU|z5D2+w- z?Ij+x3yn!m5VK0bQajj%8W{mLTq?&1p|AaCDcS`iY&K}xYkNXmQZ^5_w3dx#<14(ovX2P|8mph?O#;nf;^O2W0v0W=wK%_I3%lH#LIhq z1A|1imx~&!NqhU#Ls#FAiFhsMOvV0tPPSV%e9yG7x!=0N9w@7m4y2l#hHd)S!xlE< zYMR!wSw;@n)w1PZ3am*Cy}=U7`R?wVzd?*{i{>&$=4FFmq+Eucf=>4y0Z?`+NNe z%nuwgw=Cd?x_!PF6iqi7JNMDJ@@}(NNj> z#1#xvHvhxhu|ong4AUW2d&i(_Jb!=!O~wcA}^e?n-z7tl5<5Q@)W7W2Ot)>EIREqowTi?-=Gm9SV1knWQF%%ICN4-c+IUwu@q;(` z)L_&7H)*NfR$P$&?%(|S)crgfp?J(vZRH!p+Ml8FRjV{k%7M%akC&AKw!N+!z_h8Ds^q+P1Ob+}eiy8t~VWuSE zw!y-&o-+CSjtNx#rP6EWvKg`T)7qrQbnSXZ{THW7Ba4fN}y2j!_vHmjmz=c`u zO_F%OEa${qRMLWK9mLz3n0&~*RL7%1VP2@i3?Qm&F7d}I>@uO>E=S#Y|E7(lJ7Fyn zElq#Bo_bF3>Bhj1Ej}Fk_ML72<*Z!i@nUtK%G<|ffacQ>|Mj-RlQ3X_O=tx{~(jTl;Y!{Dix28io ziMLgVb5RzT7_>gBs%^c6Qr3G|n5xm?^U}5alt5+L&^OynoD`F=xlGP%p$Np+PC(<( zU-d)^kl=aLm}LR!|ItXEx)IJ`f(jq2XK<&7)bBJ=w-pchTzq}W8Bp9q95hio>mr6v z)LH8K;ZJ?~C_DW9kLR*pwZ35KF2R4W&SQ~A&DW$1W`*9tk*R>o?I9|xw8C?m;W-m6 zw6nuqr(*-fZ5@HXZ}y2Oid2W@PPIC47mm!`f6EVCoBzH?dI%)`rLL}>0h}$=H)Rfl zAPCCQPiy8vQizk$)wq3!Mu+3vw%Of?EiN}MTZtPuM5?Lz)_S zt;;0j8^K8e_T(xVvmjBBg=nyASy zhjTg~6L%{M*hP31B$9PX*mp(nOO_M|>+Dmz@Npxu!i>UGSCY)=`eoM@iGI zS6&iwD?V+k5^I6(E05NOP*FZqJUr|Ss@uN67l%*5(ti7)%cl(nzDZO$ndsZJ#)~1> zB=5agX|rc27Pa;y7yYEgOkVz@`t3$cXv3A9b((EN*CX?L5nUip`tDt@Ed>HjN8lsC zD`aH=%ZYhXG-;CWgMqSYI83~%0Z*XozpdAKnF|T$aTr_BOAW=4CKo^u*XPHWtIM0R zGpI4ehMB`F;2^XIN=Add{*qw@%S#Kv<&w7e)jN$+SFF16tzGtSQnxY20CJ2+&CB9- z>g#T4b!c+)sTh=Sug#9$M9)~RaOL*Zb8e0)*ynw@=};g+33NR)gN;Qi!qYDoGUUOI zt@9+qj-bwL-nZwL_=aj_Q@P3?t`RLwzBMgi{Yat5-ukYCbwSk_J zINP%LpVLpFixF7OSD>TtmBEo^1^oib1nc=W#W8QWHIHD#W}p|L<2oDv*;LN`7jGU|V|H(Yp=qWCp0FD~Qv|@&TKqp9sneg}gtM{fDXb9G&PKQbC;RR`p z<`$#I5FJMOoD?5X2XMQlgCY;E7Ruj2U>P;v8BVbMXT^8%mdB6s6JI=!BHhaw4r9zl zjw`}H0W05lWBBo1%lFU(QL+XCsb0{DUQh!S>Kwrr*lBqxj(fmN8zAg0gx$F3Ul zyfXv~fF$zb+8$@a%&ddxRm_&3&;ZDn0eG=7$tu9P#0MwR z!Bat<|3<^KJOc2sU0Wdc`Ud0Z7HGFtEkmjrjsQf<(GphoYUeEaF`6xjMG-?iP#dLk z|D*`^iQM?em178&Hi_whuBuffF+(WQlybiAE902LALl(A8st8W11a8>>O*r@^8i~s zp#pf`yu&e+0k)!(51x27WN&LtL@R>{C$cdV8T8o}$**V+_FvD+=^_sW}4duoN+K%YyfV7MA&? z1*uw(e_na|;^sNe3cr@{T&nMpYpUkv%({#ct2g4M8I0J4CCGUew<+^?_W8*Lt`Z8C zo}eO0t-=dK#B6+AlKJ(p#iakBc7AG=TJNEA9}nt39M*Oo-fTddXQ4nh67LF2R}{G+ zzYv*{yiqpf!MVg>;a~%r3YY_ir4_sM?LaPptI8DY z)G@%AP)ZJEp<_aa#9sK1v?`UGUr%4hRJ!p8b195Y1n)@W3n-QCI8vgGWQXxgo__#m6 z@^$R=9es;TuE}Q^9eIR?Xo&;^4@a+b30H<{gG3IV@dv@_T1oEDF28Wede#5B@saX_ zmvAAtGb1cYZEGm5y^!To91TaD((+LIXJ96RTV73^CUmHXB}l>{&>6R@;@Rve&2!Hu z{a(}R+)BsU^xU_ep8j}yweYl@4d>e>CB~PfguMCaSHfdlnT&Y1?;beZoiQ&D82S;{ z@I}?+ds4%V>$86~&a@`O9U%=Dx$y=OR~qGj23mmOe_)N4C@2#8duh94eX0Q4)a z(etJxwUY*C5f+)jEn9MXulidyPTXj7f~&X8>t6S?ES~ILlD}zp*t=eSA`XOoKNI&7 z`4gy4k&$m&5;pgx`?CG!3 z9EHa^5su7{b)}@F&QuPQPFMih;iF~vE|77$n|it_bV8eRl(s)Z(UI&r+g3k~J6jt( zrCFuKC56Xkc!b|R>^Mu0lp7qJR&U#lk^?Gde_H%&bF$|TUCFZBBU?5qvf$ajZi#x$ zbN_Sd%N;dZ0=$ABtAw3~Up-3*=i4`!4(Qfg{ctoha6M>w$MZ=phgprG4q4qWY}%J= z`%Fdd_)w61wtlj?D8vDX?E?mpr)Awh`p{;$;h7;h9Uy-8W!brI82>$HW(N9H)JHCdHuS1ga;8{?xis@W)@R!Rq5)l5U{- zB|%Kfe@)G*8LzSvbNg0{x~n&CD?`5+VIx*}&;J^%uuDC&QhT-kvzzp(G{la508mDL$#MYQJA4(a6GPQ8A3B8tyQMI)74STV&r5oEf( zTkY(b4(xfEG~Z}3tGd@A$h-VtXkZ*dXs-3R-uE%zfSx5_&pZe7W0C1&oQz%WyKkEl zyrH%Qw1OI$=L*c8B@MDcvA&1719@B4g|~LfniZZtxf(vO7EOA4D1bmK#wpT$zG!0%4LZ5Am6m@~=96DUWuLi+swjHY&=8EQ z0G&PT+q2C_AC%?+x8WIiI^^{B>ld90?MQnlmIg;`rb;iTBG^jg;p;eWqNW|c>89vC zPRc-!=%Cq`*!E{$vKzcBnX@Vd(v5CQNRjRew)yFa;N+i@9jDL7N1ql`j3SWKVi(48 z`gixAb`V48#7oU^>^RX#SD9=MqiCu$ZT|BRY=`zKv0f=#JB}z^-GidrrrSGbgxxs! zE<;zrOg&UKnu2aa!5s)G2Liu5p$2-ZyEN&|rnNKe`=+Rx^rxPSx}imMh=hsZR$zUa z7GuWjcHy<$6m_}+gy0CEnjK%Ly z8IWGBn8~4M#X_)p*MRg4Uy|i}zO}MBQp%|HT45beHWEkNikwzT9?T+s(x@oG4Hgl7 z3DA`Mo0l)n-1P*IC~0hk|CPV(Ywz95h+Da1V9%zZdZgasc{Eb-QZ<7lr;^zFyC>f( z$}@b;*re;8ce1S|ADv#E%kH#%^qU&M(n|zeUPa=Od3Z;J%d0stauyXKa_+Zj z^XU`~;b*ij;os8~EOyqpwgLRR4CwJiVwuhAexI}!VhyW_u5+7Dzwr~s6@`Q7q_JO0 zfeQk&gxDFFoqc=Ypz8Mjvj8>^sFHFXTpKPeZ&msk0bcN}W4Z&woT2b0Jw$~I?Lmd+ zh;zTD_e|wo?C&fH&~F(`{z5sLHlwE3+Bf`X zZ`i^EB8ci{h?SDjrY>qYf&lxb)rnF6_lu5O{3;E>qEBHVW3P(&zZ~I$$dI!ftIOy` zh}a5SVBM8?Drr!ZpUX)5GQe1Lakw0BG6?QdMr@7ljF?0XB){(8r^pE6>nAUFsk&P8vk(N*f;$vT z&u?Z8MOdc?8@``0(0|Gmg`roGEPVmNy3irMVGvk|p3T^TCl4m)tpB6nY{xqiRXnks z$i<9A0d(l$Zx&SN-Sr`e>CZ<}0FpuZT&YKi+=$^hw3+cdG4puQE^HLtXBJX(XJ<>v zwaxvuV!@`!@RUpc#az0=iR7;xGRyJdeX}sq?qXpFAMBGb3jSsNi84~={*=Z~z!Yr; zezRPAPq{xF6{_rBh5d1!|3!6Ya^^Wn{}(}3Rm|%XM2~dTPb1)7<%`702^%w^>T(}h z@`ngyO`G7F32G#t6O-6MZ1yuC;MhBOA{8o64T=Wm)aM4ylUp7v^Y9tz`wl1bN9t3# zQ30iBv5HG&zUMlKupwcj$9EQ0wt%sT%Uc?4e&}LR65b&5-@VXk851M;g+0C=|BQ*n zLY+7pn|NG;@?Kd9HjgEyME`OZ8^TO*pI#faytYtUwDY6qQm+U0JPcgW!#ZGf*}f2&tIW<5?NPlF!u zoAZNaY_TEeSeF( zX&$)#lIr>CRcMx75X&rkZlqo8#^6mws6>&PMlOj#N*!uN7|F}>&fTx@i>O#yrC(XG zcg!V+kY~apC`$P19*QGxqt$bAOj9vDj`i&NVy~r9n|$<+=EC0B1(W)n3ZT5Muj1Cb zY&f&YYryMn;_Iw%Mw8x|^oQz{-nH9I-5(DM?7y8-9e0g-gn#6Y&PecLz zv%Qfs@{Cl6DeAB{oH8tKLh0V5Y@J1kl4j1nv{8WLs*m?KPk8>#EsUm?h10%q*%Y$N zKixg!TH~(7v=D#$2a!~4BK(DPD|=oB<1U@P89$|B*=uIo42*}LdPz1$PwW>x9xT|~ zQUwl&G9b7BwTG>Ihzra2213MB2h)3{f`7%Fp1zP0YV({6PVtNvQUo%ewRK&40O+NL zXNBR&XZKHEFRCkuE)nhT=AOy#9_Jg|;tb{5*6&hofnh##;l(k}q|wM*A&SUvJI(9a zstveZq;vN41a89rZNSQV*IYQJ=wBDhLeMtr5}ii93r>Fxg0*4+$C5XxQ1qu(I_V0= zx8tj$-+qS#uyDEh<#wZ-D&DoyVysoNCwE!0#mfsqRilDx{YPH289)_pf$?~fYnfe3 z9aK!9eeGDEAD-7jD^|hb0p4)X@2+_*`s%7;gM9rHgz17O)hf_0hhc>)`oXKLO> zB?abva=M=^v9!eCNtEMUEE2Y5@uiUON|@IRgho!7^6ki$xBbZrxbFS)mcRaWg=Bal zX7qd3r>K!noKA>t_@Ea?vI@Y|M-JnRr0PGt>SFzR)8LEZCndTC$uYjc^e}#P^AG!z zfzk;X?y9K%Tj;(IN@{Ov>r!s343P$1*Cm#MCt2-xVy8=n7|8eltIjAYr=hE>+aF!` zJ|@%DEXA$}?umep+cjEvjjE-M|AgPBB@WKpe zx(K2QN8uip4^23D;Pnm|>Wa_h7l2}!XR_F`k!Cf*=W`PMzGqfyB>}{{p8h8-R0KVx z%b7kVdWvG4*Dr)hfqW>5^-&Gf@9e!WS(+Ysj@giiE;PGcxUzWO=QSy_#^3&6gMx$< z9WoP0x6rFMBO6J32pvGayWc!l@$=VRx5Bp3dQPvp=N_CGGaRWl604k>X`p!NLdJyd zvzbe_SED7RdsFxct@UWLLufmZI^+sRlwPl5Ew9xi2be;-$*lL{3-{S`^S0Zi=1rN< zbOkB``v6uZd#?&XSUsBoA(OexQ-Tm%5yj}Wf$T(1E287g0*jlkC&h1$eGQWtvVaShZ#|86BD}};eL&*pRZ5&l4*;`w|D);K-Bs+4>K7YSXkzt)_2x|sv59NCQ0^7b5~ev%I^Y*kOi_g2JUH!oa)=uxg3Yd zenYS1=?R|B&FT*(i3G#|+h0b-lldBd?zY}wKt_)@J>ke9ReOU@^x54Ht(&bPr!H@b zjd^P9Dx(EVzR`0#!;~6! zbU2(F7xhm~%uq+X&9>9FC?gp#jn$$TfO zC7%=;zY3#L(WcicUQKXgw4{*vm}z#!l43h8aHZJ_`6ecAjbL$5jXh$3rqiLxPYB>x*Swt=ehF3j5 zKp$&SB!a^EkQVjCwRkxuO;N+Ov4h;^$)cGcpOJ_9H9$~NwA5OmG*Gqa;W*OrMfS;{ zkRm)ATTbyG0T)59ws`41$Fo+c3PA_PM?!ly&5)CUzgR^{$^3Q%|6iQ@S$$EW8b#YW zfoL3RSc5x#=NV>|ypw9a$RNt9d;>}URC&oyRD8MiFoWo6y_&u=35wGsoc&F3{pgGy z)bJSyMU4Za0!EJlL^ANO;I%FTaacMposZC9J12Miv8ms*Pir+qrJ{FJjU28dJRc4 z28qHF7hgO4N=b+b75yWLN`emxB}(aFhsp>gYVsWvL6f*wR#H7WcXtmg1UK?VH(24A zY=v@!GUtSHS^UG~$FY=S{W0&5@o{%Qku$jFvzjxmaOPdQgFSkP7-Wtbo$&2p-xlb{ z8E5pQ@5LZ>-1P=SeOeHG1FN?CYRj;AaQ5i4!6LUe9P3YhSP)PbM}_mVl4B{MkqWP@ zQ-hF7p6w=m>M61WL`rQQiJ|3 zVy`oE89{-uDC@MK&{$xwzC7_gi?DVCrG@9X>3!D)NJ`C1t(->=wD%eFPR z)K(Pq=FIw&xEhX$cyeHnaRn!_KR}#Ge)M_N_;5yP6Q63xt)?^EL8TmuquPL8Kw|k_ zu8=Z^Y%i`53dea{W9DeQp^BgLkHd@9C26r6jx}LTuAZWdG6XYE05rG1DgQ2Nqod=p z{HOh5XNW~*%k9JV9Wk=_(;0*JjI_H9Z+EnpcrDEVho{+IthL9G!-n9)U4X^CZ2Xj2 z+xFGYA&M;dOAU~Ox1#h zPQPEb%L5AGR5ld*#e1DM#1zgdJ}HWxADpZF@YZY*YRNyP=xBE83@9=kl`B z!->>2c@^Jp=FB}K_ZdJJu?VnJnYJ0iFp(iQSwXRfkCf+YtzoFRdIGn z>8W8wG4iqCaiX)?F^uLbSc!cfr@5e!V@qCW+0XP9yKo6sV4&?R+h<+t~Ehg>h` z{phrR{`h75Ecep|E04b?RWU0!Opg@*m@PJa*?97`gMH-m&Qj*wnIE+|1}f#}wCR_2 zLW*PbP8a_jNwg0Y)Gmn@0&BiY8(}TKPt}j%{I8qiqYIlk3D@T!;lG=rA?vvlk6l<} zDGcYa61hDG!5;oGYe6I8;Y|jO%ZY=f$7T@$JT6_WRolh{-*1fCV%+IA%eVK3hf15I z^V){bQYZBs=636BbbjH5zvYzsL5-_LNW@&mPkV45<^7!ZCuzBymY7<-4jK!5O|9B4 z78AG?ew!OEgyU+}O&I5GpHzGmsy9Eld!MmZR-`HV;qK_U_4EIBV*d9&FSEY3tt1m^ zY9dxLlX+$(QEA^Du4eXbc1d^{^zge3;{%lBH1w8#eu z=O;~+LttU<(-#EV)1wVF>a8;SrP~Z1Ft+X`DciTx1u4)9+avq9SF_dDz&)RH>Or6V zXcgW!&|z&Ka`HE4*O_-=Qot$B%5HtzM_`$~{~au0B`~X_CFl67khmXrq>jVGAR*bQ zGu5}Q^j%$W$zLYFK#Rtln*QuBmT9tif{`cs`f*m_NwVQ z@P2ONhp)Z`<=-LaG>Or^cNdoYQ$CTsW!Wk;ZgLd=bMhS)+47%>07#u6$_%8F8Ph3U zNan>rtTw%Ldf-Io5eeK|ts~7I+h!{Bqews+c2%1?VR^IF)g9cN4h!FuY$iM}lvBiw z`cChCJo)(6Lqx4c$Tv%#u@rPEvH>r??4~xqj?CgL+k;nl5L*0vCP(&vEdq24uLo6sSv>fBX!)^0ys%m?nHg*dBQI zsDJ_ROQ5U$f$T3^6b>$$2^K!m5b5>i`{oYgNGjMgjB|T3qDUFZ?J`n~qla`o7(ePQ zHaPX&IVcgUC9O6Ieo{e5pE?v{2t%kn`Fm^xXZBYH%ifpsoB`7O8_&RVyF!%x-wFG z|3Y*eok;*99S@`@{N-f?eZXV9+Td_xi(9J8F=xKcd=?ac+K$IAOY~r0-5K%0$1mwC znFbL|shn|FYMJozP?Cw3YaGV>SUve1|fChLvS2#k->GroHIXDG<#y!%FpP#|qY{fBrYk<#3H*DdpaA7%;zO z=r^tRE4`Rv*0M2=>V%i>kv9aheR0y!?ai&$m^iXzBB#s)NM-XEy^|Z>adaPkbe2pctJMqtTMvx$JlH z;!oZ~#w!!gB*aIQMvZSkG#rk%@96A257AXB^NW{S*%ua_@&MrXx$1G++xPg<6KMyz zEEr9h13jTwN{}HXa)FNa*QDv&c>ORI1a%SDhBGkNe9LbGAp8 zpC7!7hGLGmS>aT!<5z1yU)aI|&_|!1AS}`FbSd7A9_WUXQpw(Oc7(yo0OM?h+dA}o z7+dO$r7TKj)bfjIY35~-1^>j*bZ@B#!ae+Oo}C1CcLZ;54r4lA+|wI)ozdhCak0{$ z&qZ_~vidAu>--K354v#pF-j^I?^{d2&_$PD%`vU+!mN72B1bHZ`E$v}eQ!k8`2SG& zP-LL+b1<0vCbToDGJ1_!gx&D|6LZ`D!X_===w#58?$*aZ%{w=F?JL7!Y7_swM1^ks z6Y3Ygvv#)(ked(I?ns%5tm^eY!g=3+?cpB&;zIsSVwmZ5sD=6T)fdJ2GiCnA_=22! zcFjrQZLd>~g74LpiVfxN!xF4FqWYVjoBQp|IF4-1#3hzvi#AyJ{wBL*_l$Q zJ9f{;(li2+4G3y`sr}r$dA;mpf>n=g`Puv2Q@=fwk0Oez_*7`M)y#Su^?l|NK@MH| zdS6EMn?W-peBh>A+tFo)we^r2rU%@|guO%65uLe<4+MAFg}1Xrb0_Hrevu|JMOwsQ~)2nTQLx7 z;X^+X==h1In`cF>d3U)%$4>AM(a5yxm3IE^nnbCdO)lV4^sqtv3Gx1?w}id@>BgWF z?jKUediia1WxG1zXAU3HR@~HE_Zjz7nOVo@=Zxdqeft0X*YWBF2QRW5@4!6hB$DG9=T8#CIqQ;4R@+#l#UKQWlFmRb2p=kuU zcn%mf)J8g`JxrzUm? z4$(#l$J&pChri^e&Ha*)>!5T!&Y-)Zu($s*q|dweU&*1?3&*Z_;}EsnowEDg;^y-~ zW0!TI*l|`rOCy8DBEBmA($Hp~OY7cX^7Zoe_BP4KRlMgP>yOB@yXRl13@~2yyWFW= zvr_(=ZS0aeWsHlq^>9i`u5o9<;W7K50P@?@p#q{+AVD%IP$`k7uCKvacJ;^2@xUid zzs*^QVb)bjE22itW@!6M?Vcn0RgHHwTmQ5SJ=kJCdhXA*Xg)n=%wAmK&eB+*rR{ZH zIh=d@-|sG6tZ%N=9q~S2K|5$Ruk~72D2&9w#f$zCjf_%I6XMY3v6eTPRUnpt)SU{O ziQJFJi1fg?H6o+2Tukr#GkJd?!7IES=@37YLN-gIRdOH?_(AICyS2~Ci^N06872$G7KcsSulHfgrMCic7y`WRu2e;M^M z=AyHEiw*6CnUbk|;o_M9T$71`;5{9;PT}j@3qbf7e2$Tbeo2X9lw%^n8^tIRp}Zu_)Lq2RY&Q zer`8ooW0m#?3aq4UIy{*Ky`msUCzRHySbsdSouE{*3r=F50WZaGwIZM71dh7(r zQir8uK{q{N^Ox%W=Fp^(2mABS_AXT^?8Xr&x(1E?llf!XUe^vR?>|HF>_t463z~cg zYS$>=nM~F`Y;vO=N|&xxxjDq4&2+4{Q!cqYh2wO3PTvIOZQr$Tyq=i65Cow6ej-o_ zyU0YT`J{xbZi)bH zG_cDti{=SBA?Wa{j0k!jL9UQVH=5#-Oh$IsJD0xBuchHwn zw;Pr#(~C!cwbN2!yClB(j`h`2N*(0vblDGoW+sy}r&vb{XDb0B_igUvfcH zE`z`CJI9%-eH&juYQpt8wRg;Jri=QQT=I z>S+hyZdmrPig`$XRNpQ!I_h1@)yGlmPjuE^8bGpy&db*t$HbWhJ(de0_K&)Vyr~k6 z>&&5Wtgrs;B-=r)pLc43W7PV1Tog=>`yadrAD>G=tGR9aT~k}yU~{;m6;u8lclE*B zg^$JGaqzQf6L9S%>T$_IMW9Npk3i>PqA)!fwbysLgkDj3D&^1+Xtzy#NvW|Lwe2&}2 z^xHjFtd*G>GWu0nHPzQ%twg3RDuoB|n! zl@0QdJ%=tlrV=vw@Mvt#r2Nx)dc(u@CDyL{H}Zx6I3Iz-5|L8TUhJY<4L@w zOI1YEZQ?Tjjr|E(%{E|4jcvY(QTAmvfO@R_v+-G^OJM(oVGLCCSV&ARykw^60j;v!vKLEiUwQMc*Iv7-nsCq*};LZP{PLaPCpGM??V$P4td|G8?D$@GCQL9 zlQ}RY0(QP8JiC|iMN7?_A}6aiYQ6i8N9k9t)^kBjr>vmP5&n@_{t608GEUE2ucBWd z!`PacpJ?A0(e#Rhdinm7+OyJ@M(W)fD|e1ah`LejB%i2$ ze(c7xMG^!{UDz z>-MW?ifzWmLy52?)dvg8L+S(-v<6Xw0i^3#NcG>?im*N@V~2n2i1!1owq)dv2v6{5E(VIM8aF$> ztL|QC%NKslkeo%}S#wiDhKvfC96RF5aduq`73DU=%pPor4x}f#>&PVDh6Hgjd8TT$ z#+|Op2I57@$s^w7LqtnVxf8QYSg3f1)vt!vP#LWgi%j53-mnEoqel1nf*3?Nv60~% zi|<7F(5W+yzm9^Bz5FrQF?CTBR`HhTYD;r0?NdgA$tB$j7fL}_Y)ZRyDT~WXK<4I* zpn0E}d#U6yVv(YXM>Qjo$SIBUxvB|ajqHf`a!Sb6YLL)@efEE3V(AVFWqZid&3ojR zMlyh)mqglvgTB0WkaI)=gm%~7T4q6s>IyL&DAJ-gV8O=pPYd}w1;i@{jJ2^b=% zPEYz1QCH8_R*0LvpZcwh@>^eXmfj;6^3;iNXJ5N6LNt{7|KJ}h7&;k(Py~-kTm$mh zmW9aq;J<^LAp0S}`Xv@H2a(neM1)#y125c@J=X+|>7`q6g?~(Pg-8}hBEw5uD1g6sT&*xKM96EcYjXip%6N>=-egP+bxk< zg#PT}i=r4^W zGc`L^2GSTLk%>)@Qwam0St8}1$}*6)fD9(FMT(b#Q2ga>9&~uik4O`)^9*FZbV`Hi z8}~M&pXq_;Qv#vAwxH`cd(ut|fpUx&RDJad2JQ6N? z)>zFH*z{=IGS>Qs=07I$red&GRFktwa*nl}+^}CBI*koduu4n|xz9VcsVj!^%K74E z^%vM}7}8D%KRkGg+PoJNCl_1{pQd}qFUrAH z;>0E=vHLlChO3=!)D^xOI;iK^oWS^T_&|;!J%uC3h1o`K2$G0wt*pOL8Wr7qmA~dg z18H6@7P9{jRTq&0&Bm$%WT< zP6X9l9Jz0FELHIuD#ne%74i74)J=cnvc$3~tkdTv*vDdejWy-wgRaaC`-9$GVtZB) z({HB}MttMnY2*zqG>-a>FG)51?kD^cAZ3n>&+iCtAex`wvjec-%46}g68XxRY-+(} z9nJH~x2FJH=MWMD<^g^84i8G&{_kTbESYS>lb^A|<>qC&Tsh4Tr)rE}beP4NkvXr&g|zABUMZI1{Iu`dk}{^*$moJWDp5zh z7AO~uGIP_LyApdRc zv^VIdZe|PRR1W@L`P#FJ{cKFQBR*yZcnlTLpRV`J0&bvCQDmcGlDK(!N+rD42=*cH9e4Y1iA3NNey*HC+3(<2)#&12op1K3>Zh7LWc z+r`??B{+?HU0~lS7HvugxUqkmz2|lzHDJ^#UpDY(WoM`|lk9*7eJ3-c3}>xW{@cJ5 zI{5k2&5^(LHazXc8h^CGIq72h2XfTnDPJt6cB$0T_|@yLwQspYcecz1@9plG-B*B< zum`4zHRIy0)0&+7ClHr{XmnLw{Y+{0Rv%IhCx2BJ>|g)tzqpn%Q*M4%D_tSL(&*@> zCX3qgpMz3PkMpm%nMR&=(w?(NtPfTP_ej0HZ`;`5X1|;p;k;oOu~-!NMSJ5}QZ4;5 zU9tQdMM246#Wfk{ME{MrkaHQ}Yl99MH0zYIfM>G`nrC#ghW-Uj6q#yR;JaEcVeRmSYlSk@b;U)z3$U!sb z@(}I$-XOsen!)En0T88?k>!;=61jXe!7dKqf!dDMlJPDBk7#nB!}Bf@yOMb<24gB6 zhqaGklb7x&!PN(1n?QFciaV5a@~wkna23897LR$rT{Yet#2h1lXg33yATGly0EkHY z^qmOHkJ+)EdjTc!72(-r&KE`b=Y5Zj9|q~TpaB`ZoFT=B7wb;B6zv0Y9kr!j_?!PP zpi^LP=uQ7}v(hOd7SVE|>_S16yjT<0N^j`<&NM6T+K!I9R0-~u^2A99g$L>Um>|#X z%WdwknEUe{huk_8V;ro|Kc0bL!b=h%2%EA<8<1?dA%yNLWJ=TT-1l5IK}FqBTD1~I z8}(_FQ8^6yGTQ+9YxFOtG@`8H3Q^g1;`Dx;?KqZBsYL&Dl)g9ftgZX z%IUYzT*##MlIrsiiU70zW#2wGwU z_Z2FgM=bXo=}f3$(&%n{@O1+M0wQ@FeqflqX{W*&5SgEze4%^Xn=Tdik{Ya{0OvJC zK*Z>UmXq}9D}EogFHpM|{z3e%xIK}Sm<9jhhs<-%#-lUt`2I|lv#DwWQjQ&cEgx%L{74$^8V zW%KE`UVLs_Kk;f=+!f7rWkhJ7xD=>un*W6H>Cl}wON3Lw^e|>FWUvXyV|g2Ud~(dj zw=LIO@`Vf^OjUx$CG<<#3LmOu2?eDZ4@dU5KA9*s#uYP}NTw%@AN$_9!_pY}xluR% zr{U0{uhA*XQGjvR(Sbi1w{=sDdWkzGFGfdq1Kyn;^+`Lkm(H-Inc@7@;OK>1C(RS? zsBgM)fAePCSxhNK;|58=?)lO0xfeT;$PcLu1Z75nVoP%0I(fESH1H2FonZN5rEXRs zFJWb+u8klJF&wz3ho{_&=lMnLW*;$pRaHIK8GnnJuX`>d!@tUU=5E86t3N_5+Fn%i z&{R{$zO#IIF0vc-a=Iy5So(RS-la8hsO)h#SvzHW?3~2j#4@bih`>OT^0RR_&RR%= z=HfE8)6o9vi3=IXLA;l09O_89HNaYa?ARFwhz|Y%p3ZSiFef79d{99BEZsnlZUA&!evYM;>== znK5$I%6|+?N(ggJM92nQb_KJXvgZcl{KLWNHI=x&do`7C#^&AVSsrtvcL2F!7_*ui z(~z>Q%y0XGqYm0Cqw8F}BAa(t9VZp=a`mFaohmU%(PjysvnWGeh7ve*=dU{FyD#M~ zsy#axizZ;61mVXTg)_EEK>i@HUJUiR?44@6n0)N>;Kpmf<@K)?_ah)D4dqXF^iE}a zzNm#q?3=Ww`I$erA+fhhhYY$^Dnk%ibb&*hUPpNeC#Csxk$!<#gVY|(Y{DV??V}St2k}^ndF2(W0SrB% zYhg$L)O(9n);9b(q))sgZwU1cN;=wp@*tdXS)hMI`_7>QA=02{# zsk8<7N@$VTc*pe+Et|T0lgj!szL~V&_3wH_1{V6YoK3TAYLU+-Pp24lV0Dh;vAG}-i#Vqu~DCT%r0%b4VG`Z;^; zw5`=8EzyOLFPDpk>%U7ajwW@t-fTNkqXZip{9cZ|_Ul#4l_&?=SGEt!JBI6i2P{Q_ z7@bw_pYMJZ3{Tz%9!-7Kwt1bBP@ZZ@cDImo-ni#Cv0<*yct zDMAi3Df#9;pY+p|!@{)SkN8lpQ(1}}L&nqd*V{I=J`P-)(KJX3pa0y*bcw|;n`}Z{Gv)E3|*SCDR9AZhl)}7iW@*0(ic%KS)Y-6u1lhz=W7>47l9u82=5Z>Y7^WtEjxm=EJ5~x8bV<%KnQ-x}uFUHo)*5 zFXvC3#mCK<-V*oJ!bUd`js*U)3k@B4!oNL~5hb-$-7z?vwOj+)9%N&ZY(5F=3F>IH zWWArmq$28Po^_*0iL}&uFh**vf>R^SLVP_rR`Qp-vZl#gh2{l@M8W%io-X&+nOIDpmS@$P336&BB@njl zd#Q1;2oJWTn(-Tp4-D^THC@blrq0#CR;;h)@}_7yj9`N0)O+MwdKpp=O(9hR2+cI% z3lq||Z_3?B89z4S6L`!!|DI__bj6h&n$sOU1J$kdk*S#^7%A8F#o1l?(Fvh19jpJL zqHxTT^p}8PZ4}85y#)?$7IgCQ#@dJnxOlNP=5DHg0USAWMzHP4|H`_rbkUG{aq>2U_nG7cPR*MW53UeqvMOkcx2%0uP! zm+Uuy;HNLWC&CyFyg?P*`1p+%bdpY;k%eeDk|7nV1(#5J29U`%q~ymoZ*HEvD7*LA z5J9;m+@YQO^t>=%sfP`9qJp6hg18+;(DyTP)zOCEHU@Oi-PxB;2aG*f2*eY^XoMZ* zp__v=80>0E@mXLiNb`x{-KIcz5{hYVk&{IrF|J z*NY=w8qwf~8|d-ABzJhFmcj2i%M54DQ-#C9Ko@zUe|1EMTEo$~7I&UO_&3!8hpKxT zzgh9#v^xoum{WYQTIiZCwW8X-v+wy5O_y3iROOxu6o4YAE8>B^2|=H z;sLtz)d`zzXoI>Q?+@Gi#x-^obeGzy=s(k@S!+QM$gB4R<_K!gPhc4}H+4%p!yYZd z2!lipqlFZzpoXP)b|8Y(4#WyUP0i~AzofQ{7M~lx+8$RMerrurjhMV_ms54XN7z|h zIC`L*vQ2w(q*XjSWtCd0^!w-Wlr1O7gb}$hOF6l-)y22J-j$J)O($*ffbiOqJ6qBE(@JMXCP|oKzWe6U4?+UE4h} z?PIMSy~P_R<j*hJUdj1qUWdAr*TMObLrb)D$? zn0qa!m?sINXCBRQ?NpBoi+o@=(~cEs@QauDr6%NO{1A?dPur>+@KEIvINW&%Xq=gH z&e<(zlk0oD3-_7gGS^Ou4h+^L2bKwbnlLo!yyl!3!}I>FEAu9KF*TTd)T+d^Yk%_)OU^gz+eAw|7SJ$}6RUX?8HVZ5qG4yP&2ZNjrC=6r*I zHNV}RTYKZix2sllw^E;rf1jpLWjEYC^MZ%AvcvH%%R^D*HdjdKL&sQq zKs1Fp7&ZC+j$Q9xQ6U0H3U6cPy4kL5DA^e{2Q{Tco$|z*9sy4S&DCf}Dg53s6F=9x zn-{$?h|HJEa|6yhcg@sR0{?IyhFF6oRt^Q~$KwwHxN#l+`I4`Nm!z%nv0*C! zKGvU_HGwsEDZ`n@P!20U=r^8MFP9%``;rEBJ2KysRM3X|d~0e=_^g+yaDLHZ*Yg49 zKi)doB<^5E?Dp}GogeKE8d8T-oeQzmk87>ym(~mPuJ_Y8Zj`gA;G7G8V^^(y9<62lp%-^aA^e9cIv?q77ytctKVKq(i8zq(8S{j^wA zaU5vT@5b-2)yCbG&adr|ljJUNnoiyd`kr_KYu=mtOY9dr7qf7q82CK%p8#^~=rUwe zW};HVBf{@rq|@Hg^M&I3*_sOxITmx>Pk*OhwomO0j7h5b!*;jGS_WezGuuC3vpt$2=jztVpe!(4{#0kLC1Jb{5DX~S}c=g4` zW53m%v7D=yKnl^*T)zY#z9zah&DJk;C9)^cOM{SZIQ=X;i8W(}&N{HiNM4=(48~oG z9zJws>)e>EY6|X6eH0t)X5QB@@?DKCfnr?_Vl(x}TT8bn=!eemu$C$DQuzm>9WQJu zLKoVfiX{s8tw`+ zf`81a^sP~Td+V~xa0IhO9QNbkt-O1uHChD*vAaxaV{1AcZ=hRZQSPJ6IQEk9YychM|(aSezsbE3E7D;OMD(v4KOlVi_>92@ihS7I=18j!{g?_ z1-Wx?FfnLqqOx+tmj{iT%Lu^otliXQ?Z=ez^_CxYqpm>V6Cl8Y!t!Bz}|d6opei5hu2{KRmR-3FyZ#@onC} zW6PpG@>r8<_&h(QnT_n54c?I?;aId2HHZ&|bGMAUTp<9alm^|3s&@c#v#l@KG}l9M_Mkh=lKBW(0uq4<3gq!BQE^B&DlLE24sX^(CDaBv6W z{(n4{md{rBh1dP^AH^b8$rO>yH&yjr{~H#00_4cZ!t=!ftU!*^X|_$XR(!|2sfU%) zqqRP=-$#G@G}_1mR}}O5V~8{qBLG|wbw~)0hr}pWU)eE8*j|p~7#)*`NS9qNvl*87 z+(<1u{9-IKfw`TmA@yN{oxPoBtQ=J;Xg+c7wxcrP=Oq+R%qf>SZsKzQ0TUR2tweu+ zxTSKrRw7zMn!L}Mdhs8a!EG`pA8d^)8kTVx&L&W#|A_?l;fTF!#a@*8f zVWMU@i$Z!Q=^evan_YT;AGz#DflOn2=NWoZs~ddP7-aW4!w^xFHt#LN71N%{j<86H zzyHPbwz$kgsGF94kj>tcW|@u>N)ITaBL;D=muF#7NCpxg0gpA)f@A(9ao($SiCj#e zGzgjq86J22A-=}igg|==55;q(>`#r|=uIX-V$L~w(1^uj0YI@ZO#$dmO>l6h$pR*z zg_47q`aoOs@hh{)6hXO=-%GVcpkO?}-t;%!Hgp0c94qH1zAd0cGcY2EM^tW6##kw$ z#(Ilyibtqk-hN63SFPROnv7i_`@x2w)F9*h(xXPreXv`G@w>V&uz6_H@b`m>w9BO0%i}vhtYlKlGKIOZA2&Ji+?1m1}o_CZ;2O z9)y}1`qB1n&?Hh5gWS_cB59;`Z1-J)486K^&;f66&!&RkO7k$dHJJ8e+n&X`#zZ%Y zXd%4EAsCREA2^8`-Wo$87V~xtb^wz;GcKg8Atzy4t77(rQUJQi z+az3p(Epjwhn5?&wB5N*HXmKOy!?#)IN+pJWofQSA$BUQ6FJq?9slazm-N%WF`vX< z9~w=eKIN-Fsa$^^J*E2c?R?Sx(@w}omDKnjwe7|4GEOeNdWF&R|y0 ze7cFXr;2E>#XfwZP&IstjzO$iXxb-=0bmv}@lv*8LqPsXSfkRDIQRIIOc>9W1*|cA7Fk=!xi?UwO6XVi-p#i zd+;UiEA5UM&jZ$BzucK^*IjM5b8y;c=0ouj$`^<>RQcJ!Y4Bo(H&((PdENVLRhQ)8 zp>p@7f_!@k7Y%vKTpP}9UHQ5QmSe3C$d*0@jwmP!04F6L#~b5PosFExB~CA7_*J+7Yq6LIu~B%qfJpeTz4(42hnW$rW-_d><2KK+tN~gF%MVo%t?bJU40ZS+J~eu z=QRZG*vQ))bi;?AXHTg8O+8Q$FCDTxq-ZfWykIq_#1u@hJ zzawrPYC(y9S36sWZW0S)%sszXKoCZiUu5J&*O`>q1%QjidIqykuN7Q;?`pf)MJ;$I zLu3S~kmW}Keb2kD>n&}3RdG1qv)Ub$FpexfTm7kj<;S6H?bkI>QQa`p6M6Nr#=I@*dNFOE}#8(*jb3dB^ArIk#lH%t?MQ(!(>+Y z$KIpcU;zTMm_Z5;=0dwR3B9hkedD+a-r5bPe535(C3psclyX9|J)|;tTS}~ zb5|g}t+8iD@Q*=K<6hmAop|AI5N^0_z5T5G1>4@nJLu(a z`x{?Ec|08GB#|i4t!FUh1`I(ztn8_Bo?cL|b}Ju>afId8Brt<6jneD**9l#uh)&%& zT1P1kYwgK2>kc_1sw_F3?M8xST+kYR;z_53(L@euF^^*wL5@J_Jyl;bA5r>mBP8hm ztXU{L9-RmMo8*PzH~2X7s&<4z0QTZ%^s_F>(eU^?BZWbBBAHL4KETrJPP`R<3k>`3 zv5Abb3wRlxU6|DCHS=PVyXJ>CYSt`u1PykMXM{M22dRPvRN3v`Gq5BwT@tx>Lsc%# zx2lQN@>d*h^W29EsMisq-`;byB+=S0r0+P5>u@S;UdY1yBsu94NC=|ag$MTvi9!k&wFO=V-D!^K?vBv8(A|#W0UcWq;{9lPf{HYOk{6~? zs0K{InK>t;oZsHP@sKC5i5w?cI&qtEaY-+;eYmTg*@Q(0z~`_NjOIlb0yyTUI0<*G4kcPU#+{u;P0Jp_aZLrFH0Ro<133Ls)=Ffh%@)EQYbz5k$zlP!C|gYzGAL!rNc zs*F;9%6_rIO_NQvHZ&_Il-tIFEK7#-((dmi${fWEN%1$9$+rBb3_@t6tF+_Jg#Im% zZ2WRLx_~B|tLkH>glu~bJo0-iT4ZemftU6eL--cIZG5^7Fszi52|P#Kx1OTj15cH# z*#3Qv%;jzWs)7Ev1pN=<^5Jh|nnB>Zv>W@86er_@@ic<~S=E)FrdrU;=fpMa8bFC3 zyG#`C>(lkmru4s$nv(s^AZGVsz8JTKF^fp^?=C>rzFs1b9&9d2nU>x8*rEbo zZA_CwJ)#MB`6JXAo-UbD?j5}$Py&Be^U-1D3r;^gVQY&3U8<~=LClQm=H}F9)0790 zmUxNiPc$8P7BmBYAkGf{t^4N-zV?z`Rq?FZo-nJT)i>8*GNrfs-aHv#ZJf%&d*7f- zdZj!gkha19VHeE19&;>y5M@Wj`0&5HTARxF=$)Lc@F{gPMOf!w@7E3h0Gls^LsOf0 zj_%VG;ZJsS7z?4kRQ<-GZ`Z9bjMD#)sq>Cz^Z&zs5;0-~L5&(g>{>-_jh&bgREL^v zjn*uR8nIUqLG2y0bSf>iiQC+Eny@Av0@UDxZX zs8G%Bh_af`mcny!-}Wp>pzXlKT-${*-#ZPcqhGhGo?y@Zm|>&#?OA@>%B6IJW+xC< zMI4MuEXeqSESe>y_|t#&u(tu5dhR*gs)TS2%m0*rc30b6yQ^y-DiK`U#Sp?$2+jQR z$2GJ(igpg~?2Uz()YwLt8jY#A+bX5jaKcTgf9C;I0Ben)Mg$PrJ5;^GM_7Z zIfW<FSU?(m7bN;Q%fiOM-=x6gpR+4E$+5fi zH(Or5dR?%xY+%$LUyO(-yY7?kf1xL>dWxOE9%blxUsbzW<=cPuFpzu&$pA4Ct!|Dh%dFZzv8#0%q^d*0m~5G$N%a#o(l;Y}{Y=K#(SdJut%xCggEZ!zdCk zQvwe5N)+r%^(kBXZTO40M;H~u?aAJ3sOnEaZn&*WGpRe*?;a6S0=U|k%}js4Xcx{D zA~^^x+pG%~Ur#ty+9>NxlREo=E4~jgxlJW0xW5$fo4)Gf#S^9{nMQBm|7Pl;7h6X4RPsBw%weL#+spNFGbKX`6ZAwqmeu@}nX>njPpLy4jNf`L4jv)& z=*uUh1~7dR*wAn%`gfK=Aw>Y9qo;0`ao)pSzP(-@c{$p3CBNl?-S zA(raNXoN=Ra_3WCQsgofiq#>}vH|S6_VJyh|1CUB+&_~8jKLy5M@CT)Ya-bhqxS^~ z<*Q8Xs2eYiJtoe8c#~D%TPGH*%4KSoPJccUuGOQrVl>g2;K05QqY4lM3LgJQ)=&Ys9?i-lY@QBc)Y zB>Bde=T3cqB-ILtBMO)uNM^>BsPg;x_c@w0TMC7eC0*?vd4<0oF`fMxeqhYh_#AKr z$;1PYkm&#G3etQLpxyXirkaN2WQc+xL-T{x*@66uzY1zDsjHWt7ciaT@Rvny;rVVn z&j)nIF+r@FaCh}&BL2v0-(aJJC#uqI59_mImLIdJspVQSCOT@wMn@H!|1^`l^$D3WqRo}sg zfLS_O(q}&LYFW3}JB=Gq?-5~Awqx)*`TeL(Zqa_&$5}SKOJ!?TAh6xz@8DqGKvnqV zcINP{*N=Gj*_Q4Wd^;J>@4tC~5?Pz6ZY=&eNZa(7DzYdgDB%N*Zf4Gj0W=^2|9 zYhoBQs|RYC!})2CPVqE-=N`4~EF1^&yz zESNF!HUzGF$b}r>qY(ex%N`t_Z1o+;!CC8!Y=kYi9UfNdIKp zs=iP@n_zM5IHz`C)BWF;x5h>C&3ebq&eli~hi9>UtwOwy z-NzKe)jr9^Tuz8eef)b z{3&kxDp*H@YcDqPLRI-;o+$Xt@_M1DfUwlG-gXirJaL?cDetPT&pQnwxK*{gburhyHCM6f5Hc%BzE!vH? zgoI4g+p4Ko`~2ERjc3JMpC}5r`wPjPUpq!Pz}&MFO?uiypb%jhGgS%U~=qaq#%?^+)ZgPXuEGq-_S)Bz|R8vo|I zZCffF4Kh491xrSdzO&MT5CsD(|I#-}O@siGf@`TgQ-54el~X5vRROWfa|tpeMj|DAEbc?niBm{neD7#0dQ~(jv&jCohq^A z$2T7on|Dy`ng!&u=_U@VFgMIxL?UlrPxY-$@tQ?TgeW4d#&S##dITsjh6=bVi zPy@}5W)D(xE(Z)I#hH*73)_+`64!pmfzm(^tTPNxx_z9HSfEL!g4bSPk(e=@S09?> zYSX!m$?P34r@ur(T3n`{3~-LT4Ozj{FH1%~bDBB7z4?qrL@stbX0{+@{BH7^G*4>Y zES`E|JG5t)Fz&pmtUc7H`XSt>;CW}Drg>_hH8A3&F;KT#Mfom%&_lnXIbqMD!qgh5 zgZUkKTL-0vizLoeTD^TQmma~)womJ>CN7P4x!Sb~bnmOC`k1QhYR3FJzU`(PG_9u! zu35YEJnq`04pS!Fe?{QgCC=G3r_t6L9J$1AR##nZr_T4lSj6dxF-y%rq)?2@DbYmw z5L&c;Z5d+urqDss;>$zInw<(^pEb}Ot=dr`$~GfLtV%dv&`O2krNIOdHn?dj$SAM! z$&*yth)wRchu}5^rT*fmUUDqE57(CI2FY#WFaNw9?05&1iT~l78HD|f>)xRNVTKN zUCo!PMqFj_?@Bai(w~R}ET6Pki`M7B4P=q2>?$8AmNgvL$0~8-IqxEd%<}i{*5F)Pr6R zUn7EVl$gc1=l}9}bFe82H?FZu0-!2ko4xBV(+-Y6X*&oE#C0_8z)x?Y`oI^+$A3?C zlB>>|=dpRPW_s@X6NrK*fdG-6Jt;u)sRQMZ3DY#d?wJEr06n$DzbYfWg%P6%qrP)X z*!D_%{^-x=V8MA1s$h*I;Xc59PTKn(&F$xy)PRu^jbPxmpFw&B%>*DY5-e{0DaJF@ z#63U%#CLckrD<_+^3`hUw1pdAFPX7*@QEagTXPM8{53zrXv~X7=Jb^+N~9pOVJ+KA z#gV_;{}N!#hSo7~X-Wa$9!$BfaQ4ShFX_KpMsXDvY+b&sTp*C2K3FJ5wTHq)J?Mob z49fvVU?01u(OdD%iDVT z(dw3=v{*RxycEmo!`{!kf7yXlf=6woE``ntgylb&3?KY(y`Aa%?8aj0%dBn7A6AQW|A`_x`Ivp2Rl+CM?bvD2Q)B3d$f7L-NH zp`@l@98}+^v@rT7yGY_tUa&6nEx%h=1RI<4PO}RqTNFm73VzN_|9F1;+OOPV(g0j) zyB3%CQ}SBh4`kkRiHaIa1Jd(k_l9(&WdXa`dQRTf)-3NI#D}ayeCfaJ^1a^10XAA% zTBOXMj>Bb-p5!(8(_%wrnx=i-Fsb@pRmr#7=99g(0WfApk{B6IX4)s$GX($C^4Qqk zF8;D+%#S`&TK!O4)|R&;lEhnV^2}aKbmZ>~RBGiP^!InU8YQzGuY9C`FopIv3l`~V zsmkqt|L!$^ZAWouX4_K=dK@y+T(+miYr9k2Gd;>pwWf3XOW8y7jS=~9dK(qF{gV9r z9Py(3bVl-3uAp1WAs~ZSjr(s9et)D>DFPrc-I&f-vI|jJ**`W#oXMFh0=91!FM^NbEwh!by<=5!Ft1p+@N+7l9>1 z#|Y#!kQ}1jf?W^cW}yYNNNT%Yp+%++`2lr@P@r<~Hu@-aM?3<<$q2$gG!oa!DnV(N z;NnNzXv(LqR%0$;Q=FDa1loI!e|}Q_`UaaXwmPf9tA`o%+!H3Cg15ijojv|+4=UJC zU6X!iCV<`WwQ91PH?E}FYqs|^9hJgCNZu`#vtj-jUuF;kBr{9+NY!9W?2k277o|veo@3YF+LPlQp6*>0u(7& zo{zAfe5I&nG}tRdguM!fGU{b6<)I}Z$ZK3TtZs2u`kSvuwntsy4TrGO;cjjEZp4|@ zCd)1__J`UDtfx<~wje;y?pv%5Nh!LP8rs~rc& zX^Gu$8|}7N>(o_rb)ulsBg%g@J{qL1te7BSVoF9k`SZU%-Y%M#XJDG)888h*$durq zR9m0ka8x@}n~JN=vP(@M6ZD@*JO$rck%F%pvQi|J#12_$gOuq~P~VXQh$(=>#SBUu^% zBq`j^zbTn-)J%PD1AW!J{JS03FVp1#Y(R0=!n|mN5odbuzbhg*rb&)s{1swCpYAeQ z_9Ah?jCuM>kpn&{WjW5<%)P@uN2lTKtlCv6VssFKFl?I%#&&_@M}_WM@D)=~J1~=A z4NIUPtNl_to}ac{q0|;AxdT=F3_+99yG!Wi;e09eRL4v2$@<|q8s7J``_kX-NlpInW>&ke?6s^Oc?>P>u0?EbsBKPC5^YGn(x5+Og<;jk%;P)LcRtsGLZ5Pdni=20ZBxjG1 zRHx-v>B`lqSlmJ%UC5+zz(xo3*US&HU?QC?mgrE0~igpU)ZI|tko z9AHwkC20t-?ayX)v%jI^LG9eHP>Y7StpS!rChm7wm?CDtLarA+V$>G|^iQ2K1U|Km#+3 zcU4h7E@Tsy)pvy#^@7LqxNA0`Yn;C`P`v3oE05J^)8DaCPUz7nCW5gH5_SYdv1a>e z-7Nh7n3dL_Ap+&<9;`msKjEu>nqct2tMbR1 zMSQVY%hy}#G^Nv?hsqyU4g9ly9!{N8Uwo^#oiHP-wsS>l&p1zW#(s55bQJ|b?~ zd6?>RQoGARP++mh{^x~-QCaRCZO#+t0%LxiBc|2T5a{Zyox4X|eO~=G3v5HpJ4!ir z-)D@ciDnfnI%cgBMI^A?=f;JRA@E2BtV)np)b|Yd0g3uK<~iwtJJ(!%KH)+OH;#q- zZ@JM>zJ1c1_MUyh-dtH^UE+;bOZpcVxMyl)X5?ZqU`5qFLW}z>OrUe8ISSRP-zprA zQ=H%q#p_A5Z9Vs)aSsjd6(+7YuJff63gU!uN<)_LRgd!wz%MyhPj-APuOgLJv6Taz zl5-J(6`TH+E;<%$j|1y!NcXiVMIL|We|t41xCE~?K~=ot`qT9)2KL2?fagIYC<1UA z5G4-%(N$}At@48w0rgF*CY5MD&$lpdMmv82E)PWwZws}rJm~?WXw`O7f_lD|^5PI^ z3%bi-6QMYfxp#mf?Y76JCgWI+J9kts99Sl@`)kl^m)L?VQvSJKjj8C`0N+{d3Sk-Q zRJ@(-jOU7!J}@o%7XEV&x#svYS{QE?&hmKtYEoF39I00j3n=H#BYf#PEN(1E-+wZX zY~?Kbgy^`CS>dR;z99Y+%`QPK0pkW2UBvn7HO+z;oZ{!nef5Wj^ zPmt$`9;_KQYfJ*2fUYveFd!3B9)t8~mY0hW(f`=dl-paSk6BJ{KN@`3JZxVSetjlU zU`IjcEq1b?X_TF)$9&a ztCPtAFa7+G(Zpz$T7-GA!E!p+wtQ}jg*GEP3b9&qd7-j_@kQ>JQo6J^?w}NS_17*b zi=WRQ$lP)po+|A^0 zyh?5B*-n%87#B|y&tek8q7|$z~tvgdSruEa|_&ORnjJ%BRDxrMCJS5i{3*BegL7Y9ot}fKyACKSh9{jrt!TbT9m%P zz)Z`CJA+CoVN>Y>m4}||Yu-L|c_8RJ?$k|inm9<{uN9-=AAZ+torLD9K(M!4eu?|l zs(QfHr=4GQ8MoTFB1=Eo&h7R-<-`S!1PGr!D$$;ARf&pE`7lB_EY`7^I|b;}7V0J6 zkt@8B8HG)#az+$g%@yc|EoraD`WDwXaGa>yqwzAu48UrQ7Akbtnsq|1)R9hCMKsOw zqAJ&L5H`iYuQ0Z6w`(ZjgO=*k;Uny_jZ#XPioHT6Z_4)|Rj7yq?(2~4^2Vk8&Rya{Q36 z89RLUdZS+y+L)!EB`{XU2mw-YyaBe4hD`h>UV#gPNVC4f2bsI z=6%ynw)aBia=~ROu|Qy|a@23!uadQ|jytW(;BxsFYd)B^O>Pio#}< zr+cdRJpK`_hFd0gP-1GnZO9W7tf+y)p=!SM9jqVCQ1n^!2t|Y%jpzyb3{Y$RA7beN zxHG4vw^`{i#6d`3ZNw3)d&0nraZ22A+04k0y^{wbMUyNM&)e98JsxY|e92{dmepb3 z?+-(ez&~UOnm!f(5Z_w=@Y7^$kW#&_LDCm(lVe8>Mz3zomKzN*fwf8yy#($kb_#UXEaY&9rDy z@Wz=0%7|X`Hp^usplEnHB(NJ$?+ka-DwWL>MioIoEJf;Tms5M+0rR@;a<(VL>^jV8 zTvuUUI#+uMLWSxR$R~EQ`5)U+&T83ydWOf`RM<;;7aLC6-z6B*fq`~$Xv5VlG!T>h zM2*a#M)$1&Ol*u$Wx4Z}b}kTxowOX0THnKQv}If|DXl#=xrt3Dt87jr$2Ahm_SFkD2cWJ9=t-BmLpqYmW8f z&dx9LR`=F6Ih^eUj4IdXpXFb6O}C%CeTFQs6H|J}KH*$ezP1N(=pQl&eH+0UP@X5Y zCNLlKdi1jPoqwLy$*OW2y8*#@Lq(gvw;P}SqM4Z<^G{?heb} z=cI%NH_qhfh^wAvnA-=~{TcjA%NxuRaE+4IT2pigi*Mevy9`@tx_fv_(f$$1CS9!L zaADn-xo^hkC#LW+SdJUVyt_JOMK>B`*qWoZp?jKlMRnuD`jqbgddAYUF?F=H?y%(F z>8Qsz5hPc>`OW}=PV=?7Dy87hlt*P694q-t9-sPL*^m6!uQI?+*|?nY29)j##(HBE z%uCu1!L@}iy{DBUi5|a_!YfL%+uBkW-w?fpjS{QymIji>oH z(aY_qW_>%&9&q`v1kR0fXC6Ch{FZV2So`$mzk=^|^%-NiRap~Pcn!~F?%uk=yIN3P z*YzyzXY~W=Tbe|$9LyVLX2R%@C`qWWKK*-A=4tjkKOd4e@m0@VF3@+)(H}83(wPV%?>w8h(;HS$@+oyLP~l}f zS_qO{nmcEUJB*6b}EeV ze9eQm=2^os8CiGnW=w=e9~+hNT2fY*wtGsrCX~$;v5Yu`U~lvYv(Edwv7&4#Xy`AT zRs;wAMjTy)DEj~!N+8bTpY&*!7(v%q|FCzRS)6>Q7Dp%7%6_nLran9DUPv+_Mp>e=0pP+mE8OFQac@3Au^&~+? z@U`f6Ji8TwfH%;pGX@{iy(AX&uGkQ?^Lj6C(2HSgFgQT(9(C$wPP@>zTOD>3SKkVp zKGS~`U!oe)TXs7-n+=gN3}<(G#e3w}YU76%v6m7xl2<+{hO8}`B%Qd*cD7T7Si~H|| zcqPsgVp7VSSpi(PWolF^$iW;qV?bAuA0FFzT^Jh-9%(PPO))Zn)0VrodRqy#W2D=; zfg^)O_luPll~z^V_p5KzMPXthC8`A^=*ztf2a1v}uJg>!-@Lh5e)HK8U>lHx$w_qU zHp4&?S@d!enO*X$ZXKv+hFk4nwg*%j<7UB^Zi^F9Yx?cveqNlUl>)fpfdi#{!6%${ zNfklgu-LHNIw@n3!>*qp!6x3P^kva$g2;j!wM0=2w*4}PZscNbO@OXEJc&VIp@Fp z%2s5;bpBnM)~*hRw^KNoP(MzdL<0=HJVOSY|BFWM@s`Q}D+GEZ`~e#OQ68%ztSL`i zFn^?{)>n|JgT#_Q%frSWE#+sF7zUmUX~Wtnis;Yzn^k__XR7PWLsEc(^sTz&hkz{& z4TA0K7@{CVqqGzPMyLRotjw@FyQ-qFWmL&RF*(-~jZhU~&91k1h>DOQOZRX!5Ezg{Ws{z_4dZGS}&ZyI#yV}9CDA#a-5Y%FkEjG~wp zp~(+|I~jI93rgJj)G#lxS2pAOSrDrtWPwqEWYC$YJx9)5e#;gH>dg0(H=i)AQ-=|I zK2-1<9zP8c)W5KwwV}`## AQAV%HqPDP+wn8h_LbyI$U?#PxtQEp7`}*fgyW9{n z^Gf3voP5NF%8|j146UbYlvRCUO1Px7c_pWSxSilzopasK0>&+?dkk5HCt`>R>G!*x zgXL{TmG-C8{m+d46rbFu+FAK^egQNhW^ZYHep{`@@AtYu+d}0Chd@?x%MRD1vDJge zOb!%!8*IpFBPctcV}Jq!nM}CX{Za;AHTiU7DwP>u_}uUNgPfchGL@}uWb&Y_tF7vH zEG5uPy==&n=AVAKd1X@L81GaBBfw7mZan@_hX`Z2e$w(3d;Gez|Gw@q+3(};c8z?q zLOJ!4*dNXms&$5d7h`vavL40y(d|EXU9Rnt(4ey#G&W=h-ChbhqN6C+GhB+El3py; zNx23M@$V00**Kik9BTaXY)xXc&CAZl{QdQrGp1&nUY|72Y8PUd&1Gu{f&Y3VAHtPw^2xQCwAyl}it9 z>hge~8R~U06bFf8Gzvd%Fg#6v!x|wwV?=e`x5QgZP1jAFDgz_WFS*qnSRDqU2Lf1X zP$G>gfqji&cJdjGsxd_4FPxg$69ue+qvI(9ZDmy#n<{r2o8?OO-b!n@0d@9h9{@g# z(g=@U=B!yQ4!gIaoSP-5*;$ZH4~=bArfdHcVQCQo*DpQeq(LzaYzCsxWjg*pBT#Um zMPCfPZhiO9Ls?h4;VX3A+b0%qL$Yg_T^#wFMhd2mS1)+4qcZDdN;smwR0~bsqm9aX zB@?Fcmt}lSLM{P}tzLy=4K91@tZRp}BQnmy=zzHU&8JBceP!Q|7CgBEtJWFVV1Z`$?8Ga?>&KB|F?^QFbKRs>w z%kbun4PR-Bg@|`Ge12NE5h$Uu6&sRyANuYmL2|NxO{1RbrPVl-2oAOgy$lc!2_mCx zvv?Vi;siTCk~14s-X((R-^Xu9CNDSfOjZ&Vo>dDxx}U$cvD1)(pcC7q*R zC5%vIWRAS63aj8*pz#n4_6AY4-W@c?sQv{I`75M<=o%-6G|0=Cwf3<~>h zH=}qn>h#B)hmpL$a`$~Xa|Mtn_)^eC%P}op>8a!|!*LP^$}jFg%(ytIGBFZ+d=p;b zAGEr8b4wG44EsQK^;hk(gjf<(CEnvyM67!i*k%7b>yPyHonjfd_&erIZbBH!3g-FU z-N4kH6e1EQBcSsb4wvgzVX&Z)DVYWUuEX?98wwc&YOv%NP}*#5C$CjBX`Xeh(OaaF z*H^EU^N?LK37sMNMAix-&vn%huBY|pGAbteq>iqR@BM0){HF;8vtC}pLS zT#FbmiE6yCO5qZV-ZIQhkfCY>Dq8f`HrKL<&eOE?n{=yxPk5RtZLZ#5>4-uUH z-QL$$*dareipgA}U$$#Mg3wno+oX%;0w?-S!BlSA(TlLa7E5+~=kAE+r+qvEG*h8j zy5);hL~lFK4Lb#+4~u(E#^a4B+`(@cz!JkXb-pM_r(N!d)D7GG#FUWa*1`gsEl8h*}qoHA|*^& z?4sh@qr5Rivw;UUeOnr)x@RmU=4vB18*jcf@K|Fwe)GA^EH7oogKp}>c>9*()`!VO zYBa@>oTE$Xjv%85!Yab7-g-!iAV*u#e*dN*lN)p5p62@NFieC|)|9TVXTe-P5J{;V z1F9uI5D-1)K*LjdG=F=T3spKD?(*V88C9{ICDlho4E}@MjF`Sks3>>f8H+z&66n07 zy5nSK3~Wj!%)uxadKJc-e&E0ljrXG}64>Yn0nnyVSToeeyr0judJdl7#BmIY;9DkS z#B{0S*{#8%i;%R^BMUh!5N3C88=ViB{kvdAg+^ooWsj#pPXGNrrbctxarL#@;!EJP zo)%yDD{3VdOaiu77lI8E17#)bSyC4MjEG1F3K;P4vF0JC7=ovEQz z!K)_C8cdqch3!{(BT$e~I+om$HPfj4jGx9o|GajW6d#19RSAGmEn72+%}Nks-zxup z4aX7hnnE>y#0H$S!0)qB){pOtts3u^Q|&D5x`5f;%6p9sK)k0n zj~`0FPwj?z+?WXD8Fm}2^pF7OdD;kTKTcO!7I)$(_+@G;S>?Q%W&_^8de za*>jCz8AwhvN|4i=>D(!DwxZE?rp4yDc87|muDdL;;UibjkosYBV%ROd|q6udws); z6M5eUn_g!Yu;YtAKQXtO1FNgb4M#opb*Sn1%ci@&KSt00fmylPU($||++dvl~-fCj~uMM%7Up3O7p(%cFi9zng#V*>E3}Q{Qzhj)90(liV^meiCH+ zlS*^lPwY@vR;7|e%SQm&6@`2%mc2Om+3-@ZcaUI^Z7J=WtVK`q7MBf4lU{SSRi?;y zrQ?w4NHL|05TG!2zdZ=soT;X}mQ5dFywyi15_cNn@beqprC{?uP}Zed+QaAf#7DG6 zz?afu;l_arX2_vNnwf8dMxYSNVe&)K2>rwTH?GV>pOi+6^9dr+cOIS)MejP`e|xly z8yF*-*3o5FUj_bsG1G9~^ zAN$4%(TY>H>VGOf-T+;9T1`WK%=5PDtNen6Z9I%6oYa7@!scABH?|mvz)s~2teay$ zGF`yrcq)RN#(XT}Y`Z|#J3eviZ;JNkjeT&D_YV`p^4;GlGs5%#XhDysdS|ejphu=3 z=q4)Xf*1Ie6>BHcd$d}(H<Z(WorwV@3OF(J7jCW@@ zL2SSt)aahDSONKfBP$PVEZpRKp|{h7w8zEgO2iB9;E)|+ifbiQj(%UQ4wTXN>_b?+ zK-$l{9Y?Uq9}?~2ZvB7Ue~+7$XoP10%z^ic6Rll3Rn5J7kBI8JH|YH1f;_WW*9M@) zcSII=$d9t~V(-%w_lSzH*&;xeG8_XYJOoilq0+xM4-#aG6_A8i@c9WfLbsc%idXrOMtkc41CVJv{4n@t0n|&bfD9K;Rk`GkjUeacHyaU zc@WHKK!PJ32j`b>r#p01<#3>iNpXL=9@jtYIgbmyp}O?g*=^ce^}wa;PJzzh!}n@d zVy*v=1zS;VW-2qgn@ouo{KqZUYr^{=8X>zZT(Q*TsUl{4I=ic>N_nSDD~k(Bvw1z0x3ada#JhzEJl|C;w6RD zim6PncF?L^7WB`>fV>YgdR8J}ioDJwek<7-PQF#gF()z(&@M00B9Y=#x3 zsPU3W;$pNSIbl~HR-#q}W5QklG9ml^b+tUnETwBjQO3J8;`$Nf1^pI=NtcqT(!^~% z2Ixx1S2!cq6o7+%RnZvGF@A67Ll~iNnI5(1`@d;~mgvXeK+$^Q^1M%{wfr)nLWei~ z9O)SrAr>Ha)}6r7>}tL1)n}nIc$~!C+#!Oz z`3AUyV(G2dGg{duw+`P2Yswhs0ZKFAq^;~-dFc{~h2Z+ie^Di=O3{*zGeIV6S+ay%!=o9YYJwGTpKA@R{|d0$>tWkl)fva-OAVq#tM9%=&8(?Fvw z2>&f4XFQJNOqnIxVCUw3FmHtMn+UQaPcz-fn!MFOb=ko%;dV$uaK)oWHvfmE;%?;{L>9+gX{OsYO zpGj?Y(Z|LqT8+>Cc1sunaUSWgx&>2g5hN|~JaoHJ+aT$Oqm-P~%S2un)6R|V{djm)ie`3i=RN1e3ngtfEg}MG zyOi~wXH0`#L91UqUWnOsCjWh{-1>8yzUQ|5&5F-T;PySWgGM#GqkiRlzovUu!>uLd zBiq9~9zO!rrsX~af1qdnHJ)-MfWi>BH0)pCvvR?IKJXOE|F;ssc3+KE5b9|A7f+*g9_KI6Z`+!Xv<_?ygw#&Ipr4eM=! z;YJ!9E$iy-}a;3IQH1sG?CWw8*6T`XaETJLyR_1eWNkz2by(^(V9_v^5KQwR7 zRdXAn+Fv(HjoX#>7xw2_eMD-^u!Hr^MDHT1z0_P57zv->Zx9tI#lgLr^GdJP&)KpkS@qi#tf3_2%zkbYi)H8(Fyy9b*vzL{s^PPeXSNy zGT60KMT=|hlu;*5bf}8?l#QTw%3ce4#`Q-}vh22=E>7aK0lV9kpMjIT7(Z&bxO#H0 z0zn+D{Gw@fQ^rsj0Fu1aC4my0v{xFq0Snb)(!r`%F3nQo?8eUVOgKr+UowfTWwbrg>gP*X@B^W+M9iT0P_%<7H#>T^aFY#g9Rn? zn?Axg2~K^G00FyS9TzYOK(8M1pK0+OR{rOgecju!AIr~pe{~P$oZ2cFBk&h%dLIV@ zwk!!c1+y9|Re;%TqYDQZZguFCIX0MYZd5C!mOxbc%Gh5g^Jc)~i5}SK2VDn;04}-N z^m!xr!Vm40E08B^BuikJNtY|cy=TMI34!mF4i!QbmkTP*AJ}R=fz==R?J(YKNerfd1 z&XBy(^wTHKw(1)mmsQnaV&e4EMsOV8+S3KejK(Blz}dZ+2%}E7&!!)3oWeSB4~G>W zIne74v3^?kwN>@D`oY~uoh?P?7f+V2Nsr~%z5>fheD!7eX1e~TXCYDk1HsG#^Bk>? zr=L!@%w)P8qn8+Iq`>>MG{sm*I^U?YWa6^!3)K~Y)!eyDeH|zol;gjVcJe0jcENvo zI~4{|GVw`Xj9%0lJ{O}IW7HYQl^x9q#FG(b5#Snsl2=cR>7|= z?%>G<$0fe*TURhpHP}~Z2HhtlE(9(*LDKcj#80M)3wOH0Ag!@ z!nFhYSUlu2!rm(a1{QGop!6zDun{?-S3{trmYw>DdzST?EG2WYhv8tQERZ|9~Pb2l4PAi5g2Kt#gee&K3>cX(za&E!-QU^S{N+P*&=Q!vj=);xn0UJoN zHy>NEh1pADoCEv59vy}T74)v~$NCtLrY;Pl6UHS(QojT^HkUXBzdSvB2!gH3*@KcG zbW!Oye>1B%MEmm>Zh_i9Szz*)A+`v?pV5iO7Rc(LQY|wi?#+!C8MkmgVd-zU+q?d# zwHFL?#Ydm!R9K|~r#>Cv-H$|71gss}xV-ncPVYrxsVv>DrR)Zeco#JMcDXKg?KDue zXT<6GDtY%o+y}>6gN_*+w`aNn`M8xU^qIpheBYE7?5RI#52!&f!MBBdX5 zwr3Ez1j@n_seICPx<(YmfF)5HO2TIq=t?Xs|u@dO{&OD;)yBk zho)D6jX+P~rJ9)vA`Y82|3kNDtFZHm!*-i&)bRuh#FJxCSc ziyas}^(9_VtD6FL$n$~53Qt0-l&MVmma|bHvd-A&`C>&IxdbZgIN9z|WAc9f|22oO zQ` zCgf&v&=fee;3P;0R=zW&ie=Vm9;OxasCpDZg*A~E*oBK~R_g+rgTC^=yngD>%OECz zb4=CZDqgD#n{a-X&s<5qFqKMFz#G2?xsY8Jfsgl}q^(1}Vp%*tysELU19-XwhFQ?B zo2NWPwThp(j}A*v?DmShcyks9c`==*of0l>%{hC!0VX#=q`iB#%qd3&JT1zBPDF7| z2gUJ!;>3>yDN9V4%X9IHvCQf3>4!9J&J}i+XNmRj-C*$_C3Sp7`e0O@)I6F3qD>Pm z5+vMtt9t)c0gG)g0w`&wuKG_`3L_~XHoQu5VW_(8KWF;x`oEtrE)q!IdWnG7^cBeI z5`k-%+36A><}8nO24$Mbg0SJ{1o9ATLKJ2zP(v@TqabZ>eN%oakR7PG9P*m|KWv?M zG+Phc#&3e!u}AF@vu0^)6tOBXBWBgA(V}*ZQX`7mM9iu!W{nOlib_=}TAQ}^tX0%( z#d`1WJ?H)JJpIM3`m-SH1bER764N0 zWkEgy|9JGiz{nTrYVMP})Z@6ILIC;Ndvk`}Ugy4&u&Kt*Mw2Hr`%*3U5$gBqoxO3^ z@z(l$Gq6iN|GV%gSqqDQP7B$}<8h$M9b>6hAHd}F&EEg+@QxBrk!rQf+Ek4!`doXL z-=H-;HRqIUeU30H(jggQI!X3&?e4C&`$HAGgO_V1<|!2vkiCs&SFKQ|aWzgOdHZ*x$!tT!U|F(_%0Ost}`z}Jc7In2-De6u`<{UT$r zBZh2rY4wG{xs{S^O3rnuTU0F~v$SPN7hD4d-3Ii720(7I2>sxNI!|tL4!8a;@%#bl z#l>+F7ouYLdsF)Xr@-jo+?aj1YC%1hT}Aje!^)gAi-=QEKJ52oi2;n8t=&TAlIElE zuqtT;{lkC%xid=kV#zpXu70tf`!K$drDvfrY-}?2=>GE3gg1YW(MI}T z(OqKyh7lj4Jz@|S*x33j-+(V_Hb6#FkN2i^5Q)uZCpg236*@Bex_(kD{e!HX)nmh2 z+L%;TkDAx4@`=5u3?mIHJIzBOsI?_3ULFK6^s-$ShwpBgf&e9`VH zIlKJ(KIe!Rqu{JK{h#;^YGA!J`fs?$AnS^jgyNkdk_dpmB?QxZXjIv;49cu&F}I@N z>9UzQaRMV$034iVhYoVck%?-j2SO90X|euts2FeBD0rsB#FNlxq?73Aa}kOYilGgm zy1@gid#)1yXfPbgGG{hF9T&9YW|dNAUHRL;>DebwJ6Xd5Bmbi4UnT| zq&|dAs*Z`$(g5!C_0Fbp)dm}AbLwM>Z7gA+9;|;)frh=FTB*2NMI%7HG)d{8?(a5v zk_@)DlP_XT1{#59{#dQYu14O((`}2lE@bsnQYj(5wCoAzo{c-JTUGoU3|kM~fB2;O z#TBzfq1SGV?j}U(O;hVDX(uoSjb=_#_lR!;7UIRMD)N`_ERsuZb^R@T(e`X|!8^5~ zGe~QkNo!mF90qlgHrm8?M!CObR+6jh3>6ToaIXWW%5x`S@?9NB4!+0#5 zG#C(+GU~))Ie8+M2!-)67H3k6f)X^dV>FOaiWniec>Tm&DJU$- zc-uF^0O0|*_ZB&}N7{t9q!E9fCiB-{4m8_zhcBsulijvSKXQpL9P)~Ix`Y$-R!bCXNdqYS>L zQyUx0b8IG(>1cgcVdbLu6;oyr+ z@Cuw{SC!gkjRF#GXc(4ONNAq@P2#Z_^0$+AJ};HEB;4k0Vs;>bR7p`Lb0S z4_*JAx$utMSpwi+&9?d2I?|^1FNISHVd4JzD!-S4nR(J-&OFQU0pgbl481^Vvoo{V z!Q;W@l1cw4q|ik_6#nf^^oZ9|+lRT2H?{tTys3&9a4wl4Zzh+MxPr^<*ObVU<;kMb z!BisP{?M7UrB2o!uRQQ|mb+t_m9LZ(`da3JD~*SSlB`JP!(aXKpupfu+USa~%NTSk z$c=kZtuR^Zh^N}J6u-tvEYO*EHpdQJHc!N& zOvTFc2T=PI@bX8<8!2&*`pth^QGvP${ALQga`OHqQ8kcenW-w|>LH4Q@9hSIv}VCv z9RzdV=Qw#2s3=o>*JK&LM@RbsEjd15X6icikOdZ1U+?p2?k(fNaO-rPIETQ{8()FG z05~%d?ZXORbeB){4IAV_hE51hfd;JV5msfBp)5|IPW4 zy;qRRx8}m|1xGwx9Q?GPboCB53p(To=TX`=kMkt@q;I!1hC| zel0LWrt=6?=@nosg=GO9 z8l8cT3o3u4>dC;bt=N!@#z<2=f_OZuif{s>R|`+NPDE5HlA-PSHuZEB6}@)jiZ3$M zq1}}c4ab%Z9V2NFW%=$IIV`wka)A-lG~!O0_wCWK=9S>*Uvdn~?hKSpdc9Fa&5!Ud z!TaXK1bQnuhAVD?3+0&rVLQz$VhHHlkw5Of=u&UwC8A7ORzHc)Np~)gl~!`(Ja`=8+|4T`!98O(z?@*Qn~WbEEeON#}LH&znEm z(;E0`i3LbPu-0~_U)VRZJ#`9)J@@vjWI4ap%W3z0jg()kfiD)bYIZPx_Aanj{pnVE zv}IEq<-zu~tchOiW9==J<~MH1Ix&om!(4#3ikNh*!qiwOtG`Q2-QVJTo*d(K>jog( zSQ{eM(rze&J+!7EyL?N4I|K_IZ!-l!j=ur$)fdM0yg(tC=}jb3Li0CppGq&J&d!wNjI$mpi2~r%d%}LI6ez z@4aG-;xQ!c&VM=(A=?^dpp;cs$m$N4j}74pn|Ht+haUE}{C+pLwAf}iBWGL{rM>1r7bG}Sw)610>MrrqrmqD7oMb-9)r(QhOo%Ui)b)rPjS0x1VMJ+tc&BX_y-62^ zT23A-Z<=E5FMy!VzHlJ$?Pm50iH+cbT(jIzpnAA_?lQQN{?}+ifs66`ZM28;0)jWt z#`8mF%5VsI&0jJ{NhkDZR)1#@10j-^FX5Cs!429-rheuQ8KoTCDjbP=1`x`4BO~G z7`~8MD9%ib!79A#URsN^(uw++T7TZx?!hTmzpc6{?cIrFG)h-mqB zhMse}75*tlfL`dbd^J zCE%lEax{;zW!69`xp+xCkfnu4;K|Mhx!~q%zP7hZ79y~5p?xnpH4{|JaKc7ki=c_* z){K(*p5lruQAXqfrfXs}fnBWosAHO6+Des-Zd#7tekJ3)vV6!LX=0xWBVx5aQ&VP& zgU&mh_$SmzT3hKYh;SOaw+nus5G%43nLL@2^0KUxDPY;Fx;IaiR?Cp#DjXWC z6Dk~KsG+UaTGB|fuUE1p83{UT?F9v-%wwvA0S~U?m_0dqbXm#9pstjPWhg;pU}xkq{=14lLd%qEu<*rvo$~OCkvLHj`rY3n_>rK`rq$GbIq_UxbEJ5P!D zQm?Q+k-3Ku`=0svCRTDjZ5)}&uj50!;bDy=nwPMGwLj!bac_geTrY8VAj!jr25KU zPPTDYayXUeBlwV?E?%VdZkXf*-Xqr!PJ~w8g8FXytk*^-;@B(CWa>mH#B4hB#C)T% zS<$cv4l*4TCzq_mkCftwxNKZ;XYdqGTx3PZd<&wr1a4l4Enkl%%3e zUm}59wxC%8l1GV)&R1UY-sJf|I3NV`}!$?{(gf(_T@3FS=XK%8tJhiwznN1Dj*ITLZM%Ogv)w8pN8+Pb6CaceP76w; zfiuznAFTyx}EUR#@#39x&dobJcrYZ0I5x?Zt!6gTQ-%OgiB5gmea$o~GrN zhhI@mq}m32eS*XKdysQ}1g=4P;Fi#fWwJKx_fz;6Mmg_{^q9tMyI z;Xfv&mo5#@uK1V`Mjxmw&F;Y=N(L~Ezw$uA!s^QiwSj2j_H7SvU zEhm%0(UjVriuD?sQFb!~XMU=I*lpmvF^0)dyd8t~7%5_-XFZ!6inKduExnMfav=W` zhb#1AKUict^Oz2y}x7d!E8^k`&IjL7XEKB)w<=A2xQU)6=`Wv zLy}a9#v*lnJ@c5ZdS@LtuhTD+xd`c1>T)EW>)24PmeYO~)*V`v$xdd4U_;M8E+#si zqQ%d8AAScdI zkI=6N6uf=?W*Ydi+%R!P3hNZ%70lM%>KB&sO6xQ2(}5Iwo+S^n-ISMc93PH?9KsD{ z$AbTHhe0WW45-%xBh%i#Wz`^_o>?Y6;jggI0efp1LJ!d%l%#dDwDPr&3n7OtHKU)& zZXO3DesF8|IQmIh^4;*0di<6{(|`o!wVOkSvOnzjw8)xs#e5@iWk*bV${7t41rMHo z)M{vX%I8)@Nvui(&F*IbDlc_l`sQg612+wAeu$gadGH+wUyGp{*t9UtKY5cBSTb28RL!T2C@9{IV@)T4e?mr0+I zYn-bQ58_Il@=usNQV}x#k8GBTKd_HYZEoYJ%=3)6!!tL%EX%Bl^Ku!Qj64)yKOiGb zl|8T|+XxJ03cQwps5Nd6tm2zW+VE}|uhDCr@qXYw12>;jH;+4z34ZJ@J-Ib<=P4DA z9=tQ`d-qytMQ?oZSgV|>nH9Cu_%8c1?`b>cUG})s447K+x=bXDWp?XD2UxNJEXq>l zfQ-bndo_9`)$mWWVY-6Z+R(CCpJhqMWth>giiL6JJ=81XptWyhFL+O9-rlHr5x2gx zbLsIRTIZEUUc0899hbQB&2+Lp$uZ|df9Nwyp&}wV&26##Y;kilqbG5m{w-W@+{n#y zf8k2!)uW>Ip6NS6ql^;^bd`&{@-Y#7STJ}=4Zg`yK)pHty`qvtFmAhLAigw6)>eWx z9U?|1i#v{5oT?!E(b^5DbDtT&3W!T{(-Py#IVmA}2J#x4TPiKTS*k3pY_9XIVc0gt z=%qiOjgb;U-ET7=f*wC*;WIfPO;YXyeFl97>s1eD_c9dLu!<~&EUQB+^tIpXjhv|N zA=z^6v&-G%Kdrew?ZSPwWawh^h?;scCaX|0_!@?nUt~*?iT@VPim_$54nd z9xFr>s|)@OyX0QF)vA9)2t$*frt>!#pd$s{bd0YS38aLwamqf-E>YaD;?a$C4ovW0 z9vm7_c{~025ot3skzSDj{hJ}B;Wd<|k{g;WzRVkC)ToiwcyY5xE6~Ex{%V0|->W&r z)IAp+3H~JlE~LaMY$YvypiGf}B|=X2r{ZrDr8Qq%g4V3Xp-El8TYM8EnhPD56YLyL zi$)P#19O3*m-b_Kt0U{Qh)e}0<6Nx9uH)8~hVmx2*;WGV>xsK%``#3j2}53Y-QL*> z3VuE|LS!%GXM=X$D-uDgbuV8L>ER=Etib=+6MoRO)d;VF+UkBOt;6m!8LRfvf zXgcC7o?=|KH7?^obroMyIj?l$3c=S31WeC_)!2>%P%QnL#~35ruTzTrzTl-f?mjH0 zXQZ~ifP}*k7#Xp0E#6Ep(YKr&=Oi0{rZyz z3*dq5U))G2Hj}ew|6!ae-^!>s`k-+gB&&24;MH&R5UPanKza;~o-l;`xV4c!feySN z>y<{B>pq^9;r`Lc*V8e7dVC3A3m{8ZLqMS@*@H^lPtHB>A@hdD+vpJ%D2iOD8g!px$f+Sl51a_c0c9Xao$!iVZKe!3>HrMb6Ef7i_J~qij zX@9z_rmeOttR}Dlaz}#wWA61|65`c6X)Booy|dox0^o{tg?5;oB7+mR4Actf!7*5* z*flKMh;$KAsDFOFYTqy5l3hhO1$WUr>*LN+l2#&l@O&q_@C^=_>1+yAYUN;aPSXK6VnpTr!zK41ZiBL&Y2 z59|okh9uCzP_7}>*@oBG_<~lFLq%d0-!{bZNs|f>6dEhh0lrQ&Y^g?`5iixK8KyZp zEcYs6&K_@zB}GV{?Ldai4+6igQkGkMzQU-#JwU5bc^tAb*G7=(zS&>YR;!-IZ|HFH zZ~PSoum!U|_<;AG2lQJaSW{MgZ|c-ap`75h>*>Y~VYO>MTAN?Ff`1C}+^C+YYupv` zZX32vjbJW&a3az8)zbCMnWkX$>cpv1>e8I34__6(KwP31nbD9M=6NIRn6jz*2D0dfIgqqr2H&xMB01WlVIhaFMc0E??D}0f4Yrc#l%t>CTa6x=HAS>qbFVanXmR%it*}3}m4BJhm| z5rjrpc{zz3jG7vdBa=&kMMbj@WC3#T<4F`zsJ3%3Cy$R>;R+6wAxmQ;M+t(;b|aX1fo2CYD1fXjY3< z*Z}(c$c?APy<4B28LM{=>%~a*Uw)FJ3I{tEKyN2b$5?OKw^8>B6cPyR~8HLn~xzqma4x5RCp8o)GE(58v)6Zw$XVk9$g*yns24GZUS;i6g4I0UKo6Pic*|> zn(o>=13L59cU*quW=>wWO$rpv&-hgf_xV?^o*@>7o)<_?U zW_Tuhz}|j z0~><8P<<$pS%3wgq*(_u67M=SMUJ$w0J%~wnn{w@QTuljKmjOrwcS=s*xMB60Noj0 zkHlpzDWaMqAywwP;031KRHo;>wO#kb5#WVVMR+BE>ictByOHM}t7IH=3 zsD>*X^XUvpypyzY)PnQkE_`I6zD1m%$#RVe!MrXvc>>^vG$7Y4Tp?J&eB4zqzK}%4 zDJ1d|h1CZck&4< zY;)t80RG$lZYvT%nbL3W2O<#|*RYK+M+Eb)bgg$5C6T{yF}t3-+}*t;b+K3iHBdC6 za-SkKGOh!4M-34??36(eE1#)EB)i8`{Ud|i`Hv(TtloW%8eT4=(&!M< zPi@B>{`<`LS8HSX!N>&Zf(P}+=Q%=#G z2@wSW5ktxnMb7vKoR3W-Z^hq8-vP|^OKmq5j`~`n2;3?}xQKOJ!J2FUk{N+fKRh{5 z`*E?^s~!h2ZUKj=+)Ob31s)e}ti2opBjeDMRu8bJFG5}bCEophXo57pEThkhzD^AdKf-UTFH>M%?4{tYfZ#RpD%f}_2Pp1`_LtoJ7+St>As zz0q@%eoA$RPeIYMs4>tJMzVn5OH)z9jr3v!K`e5}@-&>zLhpPTM9+}~8)8XJ0(h|e zFH-h{oPc{_R0*S7-h+~@ud5HxC%0+a@Ao0TmPoBu!Of>s@Pwa;Ma0i$hjfx=CI9y{Auz=SepGx6i2~sB^ZKQ30`0h zy4<`ki)O&f4tYzRAr=7-yJ$$D7_a1=8HGYZ8KoMP??$Cc_{a03Oe7yq&^ zK@RD_)(g|#NOnMv4h?z_n$hVghgG8v(Zyg$( zi-~J}$|5FIHG>~r2rftT?gf;B(L9VVZ=ni)CXT!>3DMP^>;7lOaYk6%DZXg?cj)AA z`2-YB?HAo?)-9#(s(xP#R*yx3NDA9d*>vTNL;a}7G!HruT@3useUz{?`p0408 zZWN^2Ic$7zsvPYv-}AfNQ#si%=J09P?kE4ljw6E@yh2Uu+^Me0jM9hqkDn!RP*guX z=j8kCliCn&s}RMJU2SysHf>kyT1&`lz9}(mwR|eaw(q6eNu;>n#w|ZPIm8A&xHz!_ z84u-J*m~YrsporqjwrmAHnsHwbSAV~+yoRKdxhd2f0G*{qv89ZziL79&*8}t2UifO z!szY#pACHDyH61BYxorYXaNHT0qS$X^~z$!J04Aqd=fx*XvuQ(*n?qG$BQCO(toTN zx)E}jLrrSitA@~=*$HZK68nd6^`uh<%AL(s+__x%oLbyL6D8%rLzFn8eE&<_`&9}4 zP#Fre#8GO5F+En~lDHZTPv#f-UW6Jnoz8U|JT{}wspV9Xj!Z=a)}{KWPnF~Rv%8f* zeOh?hv>L5@asTbK;E#x*zx6tZ?+oe%Wv~wqT#ruvLXaRM4(Xx0cAYvgD_HZAk|NdH z;-XuuRtHH{acIwI4%71`6Jg0c=gR}Ab3;Z6a=g>d@v2wtn~#t=Vo=B7T45xYBw{>x z`T>cFMV5GwG^@$M@Vebu1`>Nf!A6#h$ zG>{v1{(6aErWOLfd>I%4FHnKkDbrbDAVN(L8-sHmC4#I8%}se2M4Z~S7*8!HCLD0* z-j{cb=6w{RD6i^k9)Kv5o9+Pefx#{@CK|Pj(@8~xas|;;V(;E6xmeh&YNxnPlqk2tKJEIc&*@zsqwq-p-3>J5{0qMB?Jj^wcsTu?{Nl6q2! zY24)n#SDWMG9#)-e}-&Ei4`||`Jui~@}H2)y^c~788`#DokMX7GmX6{w4=P&* zEObu{U~>GLEL1T& z+JdSS*}ACIo~^6NIU}y2x44cC! z_zAG4n$Ug0Z^reOB>d`FoXzxJG`3Y>?TMX04Ul~4oCH^|rgHH5sCd7Th~-MUJLBTP z_UnOy)}+OP(m+Ml4_T&~aarF&YD-y9;zDj;e;QJ{ zU;gmD%pr~)z|_dJ1ZYI?!yojoDK+FQeRBO|_TKxdz2%WAfpSq|Ll1k)lo&se;=AaC zj3kBlX#Co_9_#z* zl#Qp;2sHj{fFOCm0KCD0Ty@2wPW)_r)Ej@v>H++#G)yc4v)H*QQskxrl zuid)duA(;AvQZcmeC6OYE?Ubp%eb}mw-gK%5ks9o$B-Ag12p+Efi`Mp*h|xbV1eG7 zznboz%b;w>S^l|ZGSz%rD48l1occ3XN`Eqlg(u%&F)Tg52k6rx@WWTx0p#ufv?uqt zl&!R)&i_!Bu_^*9Fa9>dP*8G7^L^mIc#s4Gf)%QNi~!S95>TbvkIuJ#KVx=TM1&d==BTAx2hE^Hiv8hOv{PdS+$58yy(($s**A5_g&z;rU z24G@G#9WVre7UW}0LF?yqT6}He{LXfkn(R9W{$wl4U*%D zZ!YaM@A*oVv4RoL|9Fa8;ZQs$=<~SXGmdEr)5Gt&B*T_b0S_f1Q66637f zs*@y9nFkok+ihcGcK$EM$9iASyt@_@+&Zc7%r%Je(~Z^vx>pL%>VB&z=*-)(u@@p} zA7MMYsW^$Z*{-MPe5Awm5s`}VVqgFMHCOxWv>P6>=Js=o<8&!$?%}wZ*yg{sIewm8 z6^BWwFgl$3#)<~hIWJIA^kI)>VP}DOAnQ=q-vYx`|9WfJqC7h4W7YBM!SM@VU}Lt% z{uLL@a3{`ECX&vAGFoQ3$#9c0mJ1LN#x#lQ3yeT|BEoFc z@g7cS%0$-L=Fg2X4l+7(uTL|(Pn$HS&M~_`4r3MvL@&Y51b~cU zd;XLgyadmrb+NK0waM8c!@1!T`Rz*bdB?Wqh^rBL{5W^zH(77r3>D_bpf7GO*a`SV z)Vvc+T*&MSnEcM4n#!eJMQIJs2Tk&~{CGRVs`EFClQ@l0;_Xi z1ETkN;khYjdCBZK+_&eq7Mgd9?-u_2j|b8DZ}h(OyZrSxi5)W}CSi-`--Q<+dHq9Z zxG(;D>O8y4dOql}YCircj=hdQUSiF@T!qkte2on6JG?`oi=AEhJjrwJrdFnp_ zo~M075gp_3Y<3zqym(Gi)VZ5?=)H#54E0*IpcnU0&v&et1A6( zpvTPG{G`xd<0gG_k!0fKei*!55s4__p6wLAk>P9GN11z2CG>VSI@LVci+EF8S2>B_ zXK+p~d9Qiz2pRsCZ=e37C`@UW)ol6ClNDUX$YhaLx|T=X?`ZZ+kL2 zLDP#2xzMu~59Up2(m9sayg!(=NrW)gmH*TH*&Zl7RPBG4cOv>hpk4?c1U7CNQb<7X zXU=7a3hS@@NUbeo-4d~p>Ape;aXjr*`AUl&QQ?-)zc+D4?veeg;ggaDV8iK4?ihnv zuwcm1k8QL!D^Jj>WuUYKy<~PvRNPg5znync}o>jz1%l7>`#~J9R5W)^Bae}vT9v-#Jys?T-v3r zM;i5aBLM}9AG3G$syPK4_EjX zK7U)PJHDb^zn1xbEC3^ofk9gHxKvMGVc!Ixd|b)9N<%p>w#Ul1O&&n)Hfd0%BPFsH zxVRHDu>pmnyX`VjOX|SEzYtU5EK81a<$7+XYC8~!_gVZg`d=_`MfYdLW`dKD>y)r< zaJyX}d+lHQhWfHcbc6h%&)Zp+4j;vht62{yZ)Hwy1H}-k(S(Rhd`fcwK@pQOO2yZCD!|x#^>J!QMc5T z1yKq_Cd#y{>r!!W(DkB|kCWqjsAH3i*JdVVXph)m@dc;L?Dx_I7@8ZBl*MD3TUmV4 z1y?CW8kh99j+~Tp9$ggA>24-ZrE94kCr?C?XeZp8cy}p|8z+qAGXcT+Rb@F=K;JKp zun(zXg`zG2Vqc^C+}j>LWl;KNDx0Fs{OjXK&`9r5c22{ClbbEIP_KSl${(x~I;a2s z8|RIBIwWRjfEM${Pb3a5<-^k?!^q!yQjMH6i4=-vo`*Z`|AsV6dXD(j{3JC0FNNPzl8j76?%vLwRtv1doJymV3b>b^DbNWazgKqJB2 z%fcEaQSPYdA`%v%CT=TX%6E7WbYta!?-1ed0 z>!I~YY-ZZ(I~7&WWCH}#uYS$aGMg(AdrLW1qS+P8ja}WE7sB32Z^(KEnc6?kM)@I| z%+x@OK`N~E+d$A5i(@12q3z}P%$+6!O1K|-{pCdMHs?_!4(W&)6LeSYW4N3W^tmiI zm3;T6{tm;HfVNdL(1|x-0Zo_m{eT-`I2n<6(ZuCSirW9!+$SE1^&eTbrH_L1rs}PA zunJU9had45zj4%K|Lu10y2s+^=9faspZmb6=8?{$S7M!d-64nK-qT=RW+e+0pV|jd z;5t(l(Y%djOs%WCZZuc{v%Yr#lE$ow2~1m=%1Q9zx-jqW@)5)^3i`z()L(_cA}!R{ zG%Nw$*FuI-5&093d0WuAr=2C!DrVQ^r>hFZZ`WAm!{5d+Gj@%|SCzdGGwd2700^z| z8Tdx;dg-0REFulaS7R6e)3dK2Ae3KNf8mx24Kbn5JwM~>SaVHb<4g4;ixa|=txel( zchxZQLK9w=HC>CyMEfcjXXV#$>w(Lg&BNY9(Vc=h_G7Z1h#Sp%U}^$bxKIvBIJ1wdcxnwnzNHv=qTt$!2!@?;V(!AT(Kg;76LO(8q*? z{N$=|nP0kF4_}@(lD-w+Oc@EI{@UA)JHc#UU6b{9=xwJyo0{HPj^IfMQB#(Lj0uWW z%emzuci-Vy^3PKmob4S zKgOxc*OR#>j4@eRnnJ!o?7o-{%!H}uV>w$>4hPlhlT1IL&+;_%ScBypeDgkAD}TkK zWWO?F|4Nht;D8wR-~7E=)PZ>&Hc6RdZx8WZCvscP76}A896ld!AcSGpEyCQa4+m7G zecII3?8IwB|4amjQ&u$joqDo<4-7ji+-cL{m(mw&YNl9gI@3((R-X?vZ@%*~;&5a@ zZ%Q`T#<{cqA)KtVbH?TSm(t*R*FG!F?Zi$JZctP(_;BSt z;nd&1Un54TqZ zbF_$Fki({4bsz_1Ln&}B=nh6C)LIc6K_}(3biB*3JvV#_L#|Ij`je_EUNU#4$~U^M zs z2$x=bG&WDBSHzK;7Y*%eNfn-e2&8Z?fj@fI>B9~SiQ*EMRU~M36|uaG$yL1~4+?+C z!AUxus{@j`JBhE7)3Cy)^(Aue(GNj zWV>+4Lr~T*vaI4UlZo|MaK!H-Kaj)Sx>chn6$jCRVxJL@t7ayJy&orUMwu6x5NXX0 z92zS&dJ^S))a`R8zhS!YccljNpTDl7+j6&Gk^DvNTQeP%_pQQnP~0oW?JJQW-@#vA zuj(k6HPt2bcG5?$za+wN>s|(y5Pg+(vtQAto)6J_mF28i5@_G^n;{4Ev6rJT<$qrm zUVkUs{Zs5@v(;+%dl9h#5A)>5-VxawdCNQ1#JPz&DRbMSHV1rNO86T&_Y2E7bJPWz zJ|vz3KcN%qO_ShjBSL5%7=45Rn1m#a5eYjxzlQ;7)q;ZWT#%vk*ye2gn+ zZ$09R(vg;A-OnwvtZV+Jqm23BrBIAKe)lal^cpj7urz7goavp9LXZ z{5rr%nwYrZ(%WStSPFzra48(N@@Lv?%5}_qavgauTYS?s$6SUTCTyJbJT^_P9-hR! z*qC_ewBnvgGC)Q0Q~;GUm5ihRI*4r;S5XLy6vd3}{Y+ww7M5GFsB;uus71Fg^;-*E zZ&nA6@fVM%B=)Xfnkw61$`3&sBUqFdUUKfkvH+=ChN#=i`JY&)(lDKMEo;$y6u=Ft zQ*nf9J>Ag9W*((H6Kc1TqZbzdjljKeIIG0uUUj67L^+4S%n?Cl;jftQz5BR4uhbyV z3@hi09dNq7%l8J;<>$M4*`4YX$iE$ZW`LOH`W=Uk-YX!NIb+^`ZsHgA6l;EoF_Fx) zL>=lDNMAfChbcdk95NA-r+fwQ3?B*piOkk8(Eq0fYRxg<$sjUQ>U#9w1G();La|E$(xv3iDg+CaQdX#-mQyF z-sHhJdbh=G)-^x$SNJuzJsvO=XnXB>77dS;SbH>$npOVc`*BOkL2BZhszoTD(k71| z1Rk85{Drs1*Ohjzs*nf@U4PP>*lqU$L52 zzt7)2SY=%Fj^T_7NyB#5P?gupaYm&xne?c)=4jEZjzK8U?O_&HM6$#4=n=2t2RZ?X z0)4em%84cXco`ESSR%0dK~ES;bs1sClr^x%D>}QMTiFg9whA@=AYM2zRh@61_X4yQ zmu29CxHROUh~+~6NeXe|hwHK_P$j3sXPF52*9SkqY1ukyi1;6n;FEvTgyGp&LXIih zR|90I(SWTh0-tzJE}9NC^w4Sj`wfx)zK&^yT>KjbnuU&F_hI6a=2u#rH?<8plZy3u zEIe^?8$cz-_>DQ&3oWTp&8A{_Djv~dnsh%Bo_6I>i8A40HoY|54_QEeEc|Y`xCOV_ zVf>x6T`HZLp2K{JiMS}FTa$|gL~f;wzY%uw>br97_+4B5pO$g|Jw-PptqdGETPBl= z0w-p*RZB+e!ec^NRIa9R71(UaZ7fM%TItkmy0nxp5A&cC#{=x^{}${4PU$KbR#ZxZ zJYC6=6}(aT4EfVI?=Q6f^Ne$!mPlw!JdOcy^a50yMe-5M2&ySDX{F4Ho8(#lZf3u4 z19Udt{Z+P5{P5P{MbJz2y@)2!g`QTiVz(a92;_&0@8J=D{a0mtt;iP98hvy(QE7H= z@`c6i1MR`wK3?xEx}h%{LqR1GseN19GGqKrQw3tC(A*#u&i_h+IhK^-uQ^<4SEM;@ z#ZRh%@vX^m{bZB(WJ~;JQ~A7{4gKDMlCSveU|6^a`awOP89L2>!^&N@cHvPC14xJm za6=bWOIJQ;F=uOgklvepsny$JuN*-{Vwh?gtFqh%594Qk|3;{pjq#fT%q8j>|3lMx zhg13gfBZh@*yG?>WsgISvWjeu5$7P|*dw!nlD);TGAiRZ#>a>_W+@4&$VnuWajdfU z44GyB?!MRc`_pxu%i+52`~7~6=kxJIRMd&~(q>W0?hQn+VgvK|43zbSC@DybyEyt6 z43_RV361%yDr5Z{tfwEm%0nOvXq-wP=F5JO9}S-}khT3=Ko-_WygJ1DlGi2bomrM( ze|XK$FhEJB*?YVN0Q0Q$L|8ov`(*Vt$7-h@IsN)G`)j}V{+XUkxWMh+*jJ08Y19PA zIvw0<(?sTWG)Wo-5Lnq0b+_n14D|(dPaSSXWIJenAng-uCBXYbt>yV}_(S{r{I8>uG9wbk1E><4|~OYDL*oz3$XOL;_nmTV4w)(WnWx8bQCn0Dzp;N`^|KfowF;J-0p_iR#SyO=@CHAUPw*T;+MimxaQ)Sv z|3>SW)9DJ|D)`+C(QPN+@EJC^!*(Cw2PCbP9~0y1YT z(?WX1eXy4qBlqDNiT5ru3cfIcIBZ|7dTw7<{;2$_Nxw{Yw*XS!@7#~4m-??t{v~G+ z>#O^6JNZ+Wb-ZIO_9{47u1etwtX*cadn?5Y1V}9O>)PLu0#x-Uda#r^((_glm(1-t z={Mio8HN5dVq_u}*5lrB`?gGYZE*hkXoya9%=h zX-i=)f5>YN79TuWyyKzU?9L_>V)*_=KEd}Rz4fmFh8{)h;NGHwXAXhkMN>^@(Rx7N z+YP6I!=kB=XU~RNPX3+-R!<4zS469)ZUGspMOuO>jW9hb2OjFL$Y&9UqRleY{LLF| ziQCPsscOt8C2%92!`C?hhYyRAfII>1{z5YHx_C3nXWjCovEvEq5N3f0YdU}O>F@RQ zSyo-1W|SNn)n}sbT^43`wjvL%sQ&z1_IlmB6$o^n1@NH>)CGy(>FZilzwR1!r>y2q_bD&Sb(rb+Lo^rTm-$Jc3F$-Z|Y$ zCe00Z(HhS8Zck6{@GToz_XO(2++`pCzGE;Im(Jx9DrHwd1{1LM~SkimwGC4E*iZi5pY5lHh*DXKO%211^1XITy zo1W}|!3_3{rHl5)WgPzLexALDCR(9Y?;4XA-0IZ)f+U-AZ12VdIegxSD7B--zrC@$ z#Bcv-!A}-t;V9sqllur}_?mdrh2b*1FHuYK4O-^{|3*ay7J}rY3y89k*D_X`|MrIA zk5@0w+Izdh-izjNO~&lPqbkOlsi0dF^0P$pd76;+2GLUOi{t~o`@PQLz6r%fUHOlI z{kR@uxuV3_YYsX!i7>rKmP!KEb{nx;2Y;ZZ%YlM?c1i0uw1n8Y&fCQK{TvthnBe!4 zvo-7Z&nd9Shp{U<$&b_ur_p|(2E%Oa-6`U0fGNjRw;%94oyxf7CtNV{>EK)Mrpoyd zTE0}K{I(`#pPxu8V@hDn^;eNKL#-zX&weaie#)}@AgDg(C`zuf&bjGgqrF(UpuxMK zw$J{4tN9bur55+}nedp(Hx0SD{e1_CFzl*rHeSrnM&;6>!8$5Z+LPs7RniuxW;|ah zK~;C>(R1}>0qqYg77~jc=HJtUiXS+HeqaHI+bdt%Lk6EV*e`?rbe2XFR!w0t2X)52 z+q-cyP+I>Wv6J4Ta4}YIcU+&`Pp|-8?58Ve61-Q&Q7YgdfHPzsjEp$pQ-GqAIM$^} zF@v7NsJG1PI_M--317>YFl8X+MTYeEwQ*NYAsp{;HkxELFv4{g1Xv*rI)`II{VtGP zI)n9G;g}q6hda?2c}-}Bh=Gu~=yw$T|T3dnEOyFCE6< zuU*2r$<`G!&?>AEjjcbI4Z$YTV~YP6KC?^6=lSKmh$ph_sqESDDL(rWU2^Tqou=5Z zCy)ME9YS7-({n<^Js!~#v{_N?K6R!C>;RU^_!dK0HgbXox&?QLuKhO3j4(`x2AEj0)mx!`U&t_!vRe=ZFqOC8BGwlx24AeB)wgLH>l_)Ypwo0C1+ofx{r7sI z8Na#mzqm}ZHFRhjpb@3TZbFDr8B)RR5}e$%&1V3^d5^*Sb#z9#)FMx)wif=CI9=MrtDh$z(DLV;P&i-H*Eu0Z zE^aJ7C8dNN)CN(u_K4KiZwwoE_t6!}Gh(0>;6aMD1|w@$;Y2iT88|E{aFcg52u^Wp z`arP+vyJ};GP-dQAkcwwl$2I*<;Ry{9GV#4J&EO+YMMtlUo$qEV30qTfJcsM2-0&e zNOQ`(1dxHN8fkUbt+8(j@}p)?2UC~7pDS0X|NM-l>3P)0+U@Gzv~9!i>iGp0$cy7U zE(O22i1`t}wR4rl%&O!71!Z?dM!s2~{|(Mh{*W1(mh%~RQ-kVu|M63UgP;h5TgJxT zP+gV69RmKO)?EzW*%p>2N~EI(GItIfN;!g+$DsOUE&Jx33w5p0E9(mv{aM*-h(`e2 zsKs$hzdI6~RBk%`{7vEZailoPgdQaLI36D4jX7b-zMX6f*1qG-d8|=~qZ)wGW>a;O zV*-a?)bGF}W+lby)2;9>dmm4`J1G)mWEP#EYs{eMB>H3i6ictFLv$C z9dhX=N90#r_Jcde?Q80nQAyxBo)R7X*mE)Uu1{LjNUpZ4SXQ|=!wQBYv!G4 zGQ#84H`nIu!_>*&N=0q>(gYu?)(~*tY=BQK%v~SQo`NI+$Xss~vFSuKNZg3Ffa>&39nlsC*(00tbKUmD5&d-Ca^*XKGy^X+1$ppRt0GZ z8?qX*Mp;U@^xrB zUDGU?+v!Y(5wpq~;p36w2PESw>~Px6V$?gzL-;(aP{uMY`9^Z7*mIqmpFFjlna zDFj<_2aTA0j3!u!-T!i|Et`~|QF9DN1^HeOg9}ij&2${DKrma||M*ILM&I#td`b)u z5@6~IHxSr>DK!dZ+s3!(YCd-mr!8TaBmH9~R-5{!Jw+7^A`aK{v&K$~hiSu+3^Q*1t!_daxco{)B`N-n8(u38N+V zSkqyOEdq$z)y`C!Un`_@FOg5bkv^0qvr{Yed}XVg9_eF3BV<4*13ZMfa)65}L!zFC z%m)`zzgRFwlqX=STLTmGADt`GO~C^3Ur{K*1>vH$Pohsj{B0_5$+yPcINZ-bTb(vX zTNWj;wBA{n1XNywVLyf5*a4OlUp^0r|z7H^7q4)}dp(u&l7BoUw)#n0Vwp-*` zlVHY-5G)_k4w(qn2Jrqv$ygrqRd10vZ$9DLpijdk!8!7 zpH}i!NPrpe3%KeJ+^%HMNAho4DA9!a)~M2#9z6X3VEZUmu^0h zqiVGy`!e`lx)kHkbp%>$hB$J2CUiKiY*|?mNVyC;vmBHc8r&k6=#Bg!$7$?{{iPUZ z3Ya#zh{rGj7?5xJ4u<(Fz_jia z;2PAqWwAGS(l}I*D+P|#+0@`K!P*LSnk;4-Aq{nbWFdZ`d_13kf!a9!U<89&6*4RwVFGo^3>B}b$ zDy4ri{ypwoHeaEPG6MkdRs3^3<{b-i)%H z`JitBjy+FQMx9^whWz#IH+esQ`3|`3E|=4YHYn$aQiBrihXZ*P`Dmn!Y5&Mvjy@ge zCL7SVO%{Ia&QRU@A;ZIsOhP9f(`*~0I^ zzp3}3F17Dwh!gEQ3;wCe-UB$#q81)zJz?aTts2+lghSn{?5+w= z!^|e<4acaIE;eU{y}QgU$Tw-X)zzDo4RsFFw{Sd|@`?DkvgAl%8e*L)a*mqRmxCRaIXGyQCl!Y7QBWfvB(L)H4GNp5Zy8>lNgR(0$_+BQ zuk}Ir!`S5W+4h$|N&<@WBcmTs9Y!n7_l2H5lYfCUGeJq4XzSy+e`N^tn9meH=mN;| zH@;lFmEY@wTVs2GPXajRW)#OAd8a9#?}jMA%S#hRCNy@Bj5qb|3hDXz&5kZj`6dAu z{BXs8!{XkcchZ53pN}Ap zw?gBwG7^kJP!*si_iO*NO&*%{3G^6HgtB;5#IE;(BVDz4IF>oGO36S@(b-LNFNIDW z1z_W?_mIR>8UD{Z~#tm*N@NA>n9USO|O7=X0dA8{+JV$uqDjME}GvzAMW;D7{_?{?> zf(CJT8j{u-Cw|SqEQ?3l$HJ2t*Yuqc>2e}bY7gDHAd8CLL&_$hz%60R;^4;X>I(0y zpe6522(q-Qqrt|M-WZ$6Yi_xCyX~1dA{zUng-ChAmjNEW-%#{>#P?pJUrg4BabX)s z!Z3=yJGI=0k)J?^dC#pRxMF%Yp$Yqdff*39o7D3X543M)GIeJtVpT3e|7)1(At7xL zk}17KW8(feR?Nqy3TCQ1%?e9<_?nNpa)#AkzwB|>*wz6R9=AT1e7twAeE2bnHsfm& z{SF)=1{b1U;B%hsf|Tc`Z_Ck-x%`>iKGx3OFfXzxG@S$G;HI-Y!A6%2cSc+_lC;lobR;cYFgc*wbBOcf_!A;l{-kjUMgg@;oqeL6+W2&4MS6?=!kuzhC$}geBE%B z_0PQW-)H9TH7jQ)zHYB-yZ58l#q;lE>s}WwTHvh|K9ZefG5@@8#!|!vrh4wcu-_^Z zW3`>Kq`5E*1Qw_tWAGcYqS)w>Ww3KfLlA??nGtvy?RTg_a=tTuyz7lv{O+H39 zXgacO1&<`Mrw!i!KKGc4werSeJjl7YeRIstPRZOAqSXW3CX!*6T<`(dHD{U`+0XTlVaWIsl?z=~*j% zCH;;|3P$=%35QpOQ`cmDls~2!XuT0)>{u)%kG7z!?BI8N{C)W!mmnxLKYx$ zVgXt5tx$MIPQUBWq2@zo{Rc?P^TVc{a=Z*pO4Hq z1t;Toddvn>L%4stuSTJ7AksMSSYqx&w1A(0Fes0$O?RWb81%A%L$DoKh-3j;J^C7x z#q6qMkg@3r*m#>WtkYo-&~`tRhKD}Ky0IrfUw6?Hu>kfdm?GBv^qWrS@o`EoUpy_p z&xjTQD@JAH3Mhz|1KS-m?k#ri2rSsHf=6-6CG58gaO4du8uJ1gGX31+ch;X^%@nUb z#?t$96(b_E*StN;&Et4KD)dx!z10*H&9nLhg7{{)wPxUOYl02zzf4Q z)K~Uz0GO`->2+qg2fI&$egE zD0$r5*H$~l{l2_Bd+OT_slno@v)nhvKVm{;mr~=`uPj_V_55iy<6Tzn6#C#G%CK_Q z@#GO_)azeST2+mmO;IO^lrhCej{iAqweQyDoY|QR3r7%=m(kYvS)$exE_$X(qeo<6v zq_7N22K%)qbtnD9R2nypHzJ5W5%|hwHVx#5dcDeMmc{+2;g@@Op->5hVV4pq%ad~~ zzg8pfrW$7rS4}+jJsNbgq75KpyN-(P3}p;McEhLCz4(b+t-~wns!~np2Kim!D+z8B zFme3w!LUZzoKBLzqj7TM%TexoDlOh$x!3QvYqrqedoShm$=ib7w5jT85U42<_(Yo% z#taxWkJM|l37Wt_x~}u#*Y%8N1EO|?+Nc>l2S2q#$4%z9f^!pV&6UhW$A31aC^UQk zI{s~w*5H}*Zq}#W87Y@O?TE87<-{OO_eK;#R;O~tre!5hTl3KD+wRQuk|{C#a+w@{ zi$1`0&b0}`FNY^V=vCmdsD-Dus;fX zA(h2{&Nt!*y?!{7#@f%99wy7(6C?%9O{c#QqRHVHkx0`OvUr!gpwq2aWc9`-YxAOE z=fj*zwT#>+`@B<8<1?Q9V9}s2*B~0L)6Oqfu5EuE|37^~OuYP3$?8k?XIt%ll&)FiRA*J9whRDy5^?EHl3NFpor@P*` zeJFIz0p!@Ep`J2;LacWA09>;21>Xy$N;wvshU*Q^mx!3VKBtJBH>2C13WjK(W*ECF z0|i!RN&w+%yF9F-j-#W5Rd==ra~=&|(dwwQwojx+=^-st#v4k$uhQ>28!=giX-~x%LjKzB{3`_ z{U?L86x(Z=MPF<)A(&R%gi_amn7`f7^uK(hLGWnv9Rv&B zz5FTIl&F?wlZViIV|TUU9TO&>e>1~l!z=m8qzcEZaED|W7{=9ecRAd*$t<}6&LfkX z`{c0vk-0?h12jrBah|$z44Qy6=pRm5@X<%UTzUsXi~wkrC9qxd8TI(wBq1)8LubO4WKIJ`rZ{yQsxtC2%VY>VUmo4P|o%!(eGLY1{s=S=v=*H_ya z^z!6MK>o^hUu^&(uCy42d_q{^pd7fb4^zsyDG+dXHxyU=leWOUt4>D!))y z1}SZP4`kGgAMjV&1;ocT1Vf$C!fN0#URqD3~tOfQL8T1~93zG6!YSl`p^3}+Hrk(#+Nqp-|1 z;}1dcHanYtIQimbx6C=9Vvb6@3L-mU^u57B|iOWZGpuvN+dw5rNu~GzpTkR z+ZHO|>^R_9>!0TN`}zfw@1N8@?zgX3KDU5OYc=Sk7e5Pr)+p;Bu zcc~-H`^jNogwNPt_ku&X#t)>*uu1hUAPZ8Cxi2N`5OVrPw1SN|83{=&5-juKc^$u_ ztwzPTo<-%Es)~1O(AD}wSv+q)ve*Myl5c;o$RIh)hF?F7pYZjK@?_a1g-8q~?))}d zb+4k{S;;2gXb%hPdoZ*XVOwJt`2!%*9uKyKqa7Vsz9u|-uXvMRVN2^8e?y8bq>)5L zCOlb#@{RR4=YQC?TzVY4marFXKqfqMFb`An8-KUR+PGW&a4q@a-?2Ht$_IU$94Qqr z_dgT;ysJXH;eWi{V^#2_Tf8dD2Wjx)iRON`)Jz>(qqcZaCXV7TXw28pBy`afFKB@0 zb;iwHPeqq)rcP1L=TQAljK=mw?%n|q^*ZVh^Fc?QZ(y7h-?IoU{=)T|-4*%#hZcgE z;!s)erDaXj1>15ST0-OJbma#lq=P#KKe?brd>BvJ$6B$``u@a*=b=+3L;Ig;1oIE) zXS|*{m7VxZD2ck9l?JR+H4I!|i!nSpd4J`FK#Zeo*r1hrYM^fAr@tM<=ItN|%V9{7 z4CM|Uxl#8S&2^q-mkOD#@&u|p{wp|-*>6=?D)=@r+Q3}HS!aQ%&&=1s5VP>G@yd{^ zm5>IqKAAJ|Ki3Bp4ncPgw=6u=O3y(qQGI1K)fF=>xHj0{E(sQLgHd5oaE8|w_Y;2}j@k%r@if9{<0$SOo`*Q@dyRN7(qP3N$q8$F%M(Yq>JNJU${OK=5l`uK+-MZ04ow6Io7067+Uf=L=D0Dnn}(a z+*Qgud5+9TXrsQY^j(&K82-=@uHjHZ#XA!k^o3~4K|~CYp)G`c&Yf&J)n!@zK_4vu zBiwXX%d}6cl?uQR?tb@jpYptknb31aEOJw4AZ#Wt$$|sKoSS46{oHGg`!;9FsPRTO z93Q3@T>rN=K5?*YJC^{#{^$V<1JTj=9_+Xlw$kXH(O+i@&0sUqAg+0xe#pR zI&CWOMXTky%3u{y@i|+mpJIj6V;VGjuwB>kztPAn>L+wz8bSMC;{a|M-=>AU748aK zeA_W9?cH|FUA?TozNX)hD))U%LvJq589__rdM?W8Hb0N!2Ch5k6eX!jgDiwPQ_r`J zu@vpsW(2z(dVq9uOE;S7f$6>K$ln~vzE)?KfL!q_5*saaMs^F}*g%2EmlB8eb^0=! z_^_xSif5yJLRsNq-uds+OUEmGW{>q3J~Yh^^4Lvk_uzbp#izckC;?3=Q;w9keGyz$ zOQ>ZDg()vUAEZ5D0m{^O0Q0SLx&K>OypTEgh*VC5Fet%AsO3yJ-`*6WhkLATZ#6Lh za;s^&BdL2_FEuGCt9we)_Hj2rO8d#5^Lq@@Z}q=ljgORjnWUddLoDR(mEc#33iL;> z$2r1$0)D{oNVsyV4s7bWqJ>}bA;YYAE?qDxEu*O%DwcGaOeqYL z%79U{7r=Hmz=3@%de-?kwxJ~-wt*nx>Sxs8=JitZk9EQ2Yl0AhT=Kxikxro9t-g06 zVILHLCZOM3G%oytdnKj)r!qaVDarvNZuX%Y%&tTM(YV}ZnfRsG#Ij!*MYvbZ*{)a0 z1i;?kNkldYT$tl{(FkHRmPCd8&vfSTTWj6sV7<+vp#KKZ>Z9z5gTh+WU>4L7TE>qx z35)@~DTq<=E*z$l%`IWOK)U)k_-QO=(IaoPFt)+%9hC?;)Vm1Fpu_k<;Qy81qY?L| zP8@vsOs&{Uz!gde0JLfF$Toi>TFg`588MV$PFT77Mj=%aO#C`~6NI~)72%~Fo?MuO zNYkCuCzIL%tPYiU=OZ9}mW%_$<5AkYJL359ty&J=c4u?Mzj zg1^o4deHL@TBEG~^EJqYA$`k{FSX0|gsQ(`8qtcbz%haIaKMqWQY;aW@MP!iyGLhA_8 z3sJnO(r&(0R`rQgQ%G#nDtpC~c2j<=?g1QTBx1S-)_;7uF;;XTEM)+O=fCH)Fw+%h z71mDjkrZv^)OHb{8iDhj1L=?BN?_rbtk&iQdR<9>(d0kox8SqX@{GDSqZ9RxqdEm> z|FfMa7 zHUjl)Stko@KLQLt-eY&)OZV*;(XZ-WO$))0Wg0Jo9F+r0Px@8Hp_sy^SYAW3@RIq= zmQ+C0R>;ExTxZj~bVVa*6SDGiyQSlaYJXuK&|F}cxex<|y>ST98 z5O5A#VqV|`Y@E)9@(Nzvk73W)vD#L6p&zMzJiC{*vQjVjIgg&jiZ^~}a!e_zVTCf6 z31oGZH>f$fK^i z_*pvhi86L~&~=T zBkuLdqCk!<%gq-B`Lq3K8WnnFMk*U!w5d4mN86WD32%%cx^X#&G;sF$ES7FL6Pr%11X#YPA@|BD6d9i!(Zf45E-oxOH zJ!OPO0Hw)E|E;HkchKBJ$*W1bBJt=7O2_FbDllLat*C}0=Ej&rI@V6qZ5PcErOZsN_x{gBdkVY zU?bybDfji$^Uv|Fs&NdaN%@&d6`(4!D{T~vRvZs2IXCxKWiPb-TwyF$N^b(gHoIt1 z@bPWYp+S5d0va+~uImrl(OKYvhR`7tYouj43 zNsD_xkl0nXr`NmgiOG6gSyZ@K%A3^-HoXt=;JN3!gnY@|!&IYdZ15t2iJ{0NBf)pU z;O?6%B^Do*4|dVGaa2<5H9mQedMQ-OE3>qI8Hxe8u6k-XUo${Gz3O`UXh^*$rR@v2 zKuHarH*Yx%H+^g_h{qZZvEEFM#+oo9*Hg-ay8nF<>DqHs$?EnKR^=ZY#|OIsf%-`f zeOvS3_z{Bkhvr|7!O|{AR@%S|a>Us(O4#uKv8v6&^+CIsP*OA|hr6`)`OAlqawYOp z3es86KciOJ0w4*M%47s>83@**Gf4hG%J6h{>;6JE#q%P;(K+UWE>?5YzAc2|XjtdIj338>xv>`$2rK)E8Yo z2(0<1km)ZiB@e!0T{aP-xG>|N$df8!UNMnD766U-Ge^$;9_GRG6dS%}h4$2y$j8wJ zy$rgub5wJY&PPHx4mFjy&}(x&L_y8UFCBAof}2I_sZrz`afn3HcbfENS}yA=5Ul4n zHZXFI2-j`>YsQ*HegQG_hNQYejcOsM7)ToO2u-2Z&-h~( zvZ4J=o<>}52{|Z3CoaW>nJofWG>9(?ha@x(5c%$_n~cYJ<(x&JakLF?%Q?uWR&=He zpGb6xgDFAJ%qieDjW!c1i^^?XkB4IU?is+u6Jx_n+Yf#{JK8Y+GCdjHH zAVno~tI7l>uAWW251!&?cpMkzFd2p&)~Mzg>A!!g&`uqa`RD!6wi>=)8^AS13JZY` z8rXdTCGo_!smqLk7;q833g_R9r&r_YENX0da377U>VN42`;B>wT4blq0B_P!Z$+D1 z;*(MBL>TrGC+~(Rol)_h0LExc)2VF~z9%J{+P>D=kn3KjBW>*nMxTS=#e6 z!8cYLjy1al4((n3N>G<02UE{seu7ies>n~u$^5~eW9QghX*hhZeW=5;4S`;mfX~c_ zGDS`5!B!0BA0b964;M_k6e(ldVoy-{sW~OMHo1SRbK-^TP9Nm{ZRy%y!>Bvaq$Qf;OI%E|>#lfHy0J>ptp8^LP;DLFsos&= z)Nu$oOZt6x<}CIl$9=}&B}rPM-;Vz#-Cum>j)~u?8AhwyPk=FssXZdzq)0!0iv8mi zYyS^^ktXB>+Qo{vL2u$^jX`(hK%UZPkq$4)YDNd`Ehcs@yu_R97Ny&fLXV4uX?8!Tr7Hch7F?6_ve&mccvq z?mQ|W!h3&-|EpG4V=z%M%!(ZC5jcC-smTiFyuvbh@TfM;_r+QODJTmk)fBG_avAUmiReSNyY244nX)u=?H~O3+ zqt=^vbfXE=ps>R_YuHtU8Ckp7W4n{{kOki5vr0AUq$p!hZW?9YBJxMF5nlCv;!)6i z6N$c2;8SR2FMf{lSD_r7jZ*#wX7UjsOzula9|pflYc{KdNhCO|G-;q5_p(Pka; z0|w0)wsHt&wRs(0boS4QTA@Mph+#7XW{?}Qn=-Olto8(6!KCYIY*hGUQh}x>zZ?Rp z;1By7xXYK zW{k;?0smgfH8cqjlX?c$E#oST!? zC2(b&ZVwuRY?xi;UUJXhtdkG|1^6zZgM|>Rk7@B-$wWo3Op1HXd#Q?YZcV0}t&c?f zE;E?FafzflcgqhmyAbZxeo04@M*JEvKjSG4#*;Ch@b4O&CW4#T+v{^)KVE*vRlmLd zkf&ahm|T6Wy7?{hjxE?Qtk0!j^{z)k7tZq&aG)ywMdH8Rw)+&g&~H`C9lXJwC)Xmb zS_T1gIsaXBMpeIz?zM&p=d=}MEcRaq0T5opu!3ZFKqB552j(gX(54vp7W96XD4olMm__W$t9tC zZh*pV+fxuMD<47>Ua(gnm(~A~?XmE1W#0H)B}lZP)(mG5E28fR1sQ*T{~H129-{Q? z+z=kQ8i@^`y01!9>9Q>ffHPf_$UU`o3up;>!lZExNrggG!KpTMzeB}tC~t84?HA~0E$+4x)33DeHpIA zgz2IZ+VTrbO2P0MG2n~a0ZjM}K??&$k*%%E;ArPNgkbS~G-2KE)6k``R|s(b&zB*+ zf?2;kqYO?seVM_ZY}H2{e=QlJNcRn;wCKUfjpH_?^ikPn4u|#ATCWsP)?s8YmpJ(F z0Fl^M&)@y5Q75s2Y6;2WYm{IPWCQ>h3Mx-oB;5^h7>_1|7 zP-v>Qs1e{p&l>Ap`m&cAYhd!ile_6cL;@Jyi-Z)p!i_v|Z`ZLxnPvVK&kG&m2>}?b7TpPR_*c3eT9@9YrrDwcwWarViC+Ft(^!Hwh zJ=x01hZC34qHqBz5+5eaDh2z9njnH_3)ZlEacT_38a#gw8(ETmZuz_|Fd?A4hAz{7 zyes@~bkR_;637$dtLDK z*;nCavx$^7A3aXq^>wAwxoNYqkV-TqvLjfJK?_N8cLUiU;0*iEf4h!PqOtHvZm@TK zlJ)Ec7g%V(o;Y&lcg9@#xg!)Vpw_a62B+@*XhK9!nG+TG{>%J0mxJs97hDNunj$w$ zQ_cbDq(@z5g9)Av7OBNg0kJYF9frZcI7;^Fvh`{8TZ zK)onj|AK7Kjh))Ox(8w%2tPD9aRCJfc%(3h zn)$-aPmp!QmFzL$k#mG=&Yy1G`KlIo%7)Zf*XsPmGGEyKH)$(oDgxOEU6 z=N;IzPwV5j{V{U-NhIFr&|s;W3otUjTR!8Lmgt>uQC3v*n%l3ILBP>|ry_}%Tg^CDop zHGy*`f4mwX_RDmY^SyuS)X-BjA!YJ5oXKHn*IT05U9&2pXtzqMN~t&4fpQZtVDWZ8 zS!NN!@(uzBh4G;TT@sF0vF=U9nafOtV%%ZkT)GB6XdbDHrttAM-`#bK05Bi7L-cH` z8hfV|^wDMxQA#SFrpl#$qG?@Cnx0H5K*E=F+><&Vj=~Dl$?5V4x4j$|vPd+Z)Vp~^ z?oZ_bO&VLKrY0v!__&~fJ0AH78fm*a4l|Xf8U169E$ih?CF^_ZM*T7fMB9!0`9q!$&0I;2|1#eY{ zB>)@Ej-XA;jnC~MdRBK<%OU9T*r4ytx{}ay-G>?&U}g3@^fVRl89n|wBGpL; z`kk(t2&X7txRnfkf<1?WWbp`w6~=>NS(kg@zPs->t|ndx2k@Y@k{eB97amqFHGXEd zhMR63fCy8^Tc=;bA!)>=i=_?EP1a@qLlniGn9HoQE?Gje`wH_jhsyyg)||MLPCRme zmcS6j2Vm(1F?Na&AsCvX()OX$&v&9Ml!HvMtGgiNA%$P@tTb|X6lwC}lhTKbQg(Sb zMC9&034FRjqo!>YqOXpoL)G7|7P|iR1(QQ-5JncuWY-NaS;Y9s(vuPX41UifQdJOU%CzyV zL{ETdA;}Vu5{u)|Z4GIfi0DE~EUe&arHHj&lVPE3Xv$8IZZb^A5Fk9I)1B?^rb62K z7_Sgb+nu#0e3ZzGdwR}r^V%Tv^$ zlTktcSLK!B2)(=dXaDG5>YNg*G7^ac?sSqKj4uO61_ zUj0g&s^tq;{|%*4WRfj|Y-Q#s#K`m713k|71y+!ySF}Q%HgP;!s_H9s%kC_)mGOt5 z*ZibV_u4M_2{CieBvGUYbSsc7Yp5QX2R7%1A%WC$$4!$40 zn^yuP(+#d9uf|QK#A0_O_jJOcgrMmV7nS||Xi_?06Gp|E%Ly&8DCwL`u^Gx824!ag4J-ZHTfvmg+J}EIK*ra~f>^9CvzFMg>C11S zk%Glii?QH!NakX1x z%rmt{a8qmIGYbyPs`$5NoH`Qm2fYAWL};8?v82 zrJ((LmYR?eH0XI-)t#FipSdt^Zd}2u_Ie$4WYgX$8TbAxM5*0~2OVo?7l!8oUS=P$ zc4o((ad{Kum=$Miujx03^zlf#5<0`a5dq8Sd zGP-gG%DfhO6qUDAS;Kq+TM{daQn@1F@6&ql`q$J#q_~8SZdmw%0i>vZyVw8Bl$_8w z9>sc!%IjcussBwgI~_4&Y}9>r`Od{s5IO8)XUC-^vlXPaXnbA9S}KqAxA0;;=f$cx z!6RT``!-;B;H|JQ1KF8Kdb{QbN!y)l8(DQc7#SFNj@bP1YUH{J_h9vl@Hfnr+*7s_ zBBy>~VX?3G$s_%dkKQ`opqCoHdV#Ts(-G^ZKK$HnN~6A%N6>F$2x<5_(#x^Lie9~_ z-s8g-K1}!Ls{t9_)KOYB>V=N^Sb>x6H})#`>MBAYWrFNu3Qf*~@2^91CbN4<%dtHN z#4KF@2F_C`u#LL$CX+2yT;%8Qsp7S@z@-?Yks*7^t$4ig=fCJu4&Nz$e&3^ecr1(e zhySDLyQA6s-}j$HjHtaw?ATSbTALUpF(XD*2c1M~s~SbDqKb$ZHEKoeO^w!SDb-r3 zRkWzRI;__IKJU-({QhxHa&n#{$&>qa-`9PO2$>vOie#NxmoWE17^trVZ zRtni{f7Voa(u%QKoZMKr_Tjadd-D3{NZ#Sxw>L@$i@45idbc(+Z+|ZC^cSMOJQ6>f zL!&;e98+{jB3kTqYqj>v6a$XJYE!VvuJ4)&kxFZXKFY#P)~z4v7qDPj+P~w4l0YdC z_f$y}&1Rk?+~xBh(DwwDf7}6%`2rzeqX3TQaDcpZ%!@JO1p$Ly`D7(UHOUk(H~9^- zk?hjf%8Lw=F|wnQ{cqxFFv`YA7ICkB1|+^gpUcqI_p#tLkjXJs^3l|3UqM!PcM>rh z112ik*o)p11UWVq7p|~K@q408Zta7fF{hWxY&jRwyHLny;2z=G{{II5SWS8M>c~CN z--%$9SuJFMl{J6+_4lD0|IA4sb4K!X~2~&bD z4~lCqeuTXSr!ge)KK#))#R3WmbO=5~e}F^ZPDg`%F+u zoUw<(e17S&6AsF#gm0y#O|KW;HKj+nG=(o2+E!x-d%e>h*C5 zn}n@<<*_7z8HJDS%% z3{UMrxK`hUJ!Sjd1xcb!0i>n}y$JYW3sWGnseqcH1<3Ow67@S|KvcD;pnJsu;UUKG zJ}kYXrf7{F5%aX>$X~8rQGRKbo&Kr+QKTr&NGUck2Qx4GU5)5lrPl5QBUs%Wo>+4< z?f{8<-Q-4)Qs@p=QBb0GV*W;V9M;2{P@v9&xgDh->2>40eA&kUaMW<~=swYkWR>+5 z@i9?z`9eP`HW&G&eEtNp;uB07Hx3g!iwj*q(*Rjhy&w@2CZvrysERVKHC#hx=a6QS>UX0d8nPTNX}SVYGUMP zdRs@G*dN2BVdo#*-0fw z!C;*H#sm3=D;Dw-P0wVO0i2XM*pxVcO$k^1e|keCt>|z$*=>})T82)*i!D}m@AN<2&GjGi z#wqFu@XKB}PRLu(1&aju_BIBD8M+&`@BP30y*P5c1{df3=?vyKH%FKq&b~$pnv}kLbsro~52| zUxNI+8)J2&GqTYXz)+kRlNAB#7&$w*6ccw7p`iE#6Uf4Xkzl8n1Ta%xBA-Eu0;oQ( z))6Bb=5qX421A+XN#`pw>1|iEi>GBi(S46rAJQr=v|lXN&DFOWe3Wnp$Au0g{3UrQ z!3nr#K^pS!P%!+x<#Z5A(>~RK@;i0@8_I+Dbdx@3{1K=*Zw2ELHHwDf>g%02++(VY z!;oDPTeOGODK`_*GO7URMt%I&$B>}0JSq_g@C5uLREUiV+Xz@b;qR#K~mC@4ORoCs;Tb@NIB_f3W~qj5JgJxngjcfJtlNM z-+zjzS#noO7>3*zf1t<#2A4yy=bbx{!eHB;nnSM9+N?Ek8Zlq5^}bG%o&rbLTAtYn zuQW!l1t}-;@aJ6jykoD@(9puBTK%iV@o>AbauDEYzA7rKEwiHu#U^p$22R0HVaa8O zpCjTbYm}WRR;8!`6D}WTNlM74fXMVBf`sHUCFMWcdgyiIkeU69ED1`~=dYGOc%t*8 zVIO-q`vtXzn^?o|Zqw-z9}*VWU<|d(OP`5`rek{X_bJX*tw!n=6K`s`H&W$(ny4#} z7cvJ~-{h7rob-Ko<=uws?cq1BCR#D}Qq@Aa>+ZCt5 zJAb~fpUfW0zj<{;XYo;sE5`~Z!;Z~c#mT5W(Vb9Y)-e_z*D2lp~8#5lkq0MTL^fZIo` zeIj~sZ@fhse6lTFRFs(-e!2Z6!JL|h?>yvIl#kxpA3Toho3Z-dzg%|G9X_LQct%Z; zHu2b99aS|bayb2rQOzd!ej^iIbs$+dyb!t}n z%by|CpeJI4SD&qC4v$3Mh2ar;i=M5D12%`2yU^>UjJWF z#?u872Bn-^F?p`9uL_>kS4PJz4RP@#91^}-&=UR+Ohcx zO`z4KyIG$bCj1G!KUH7ry{ThvyrK@M9^LrP=<=q)6kvcoD>qb+`swiKTKL&>YZAT_ z8at}A=vs+rO6B$Bx)3(qqmO#Bst_J!&pMF-6m0hBEf_HSxsK;hFTrX(uv!OhqV3yz zsp0E4!tp|ItgV~fdbKXJw|3>9lZcm4_dHU+vEu!%{+L7-rdC71^U;RqevFHgL|3sUe|TjQ5>35g(;{)Zn?1}SaLmsl7r5*exqGl zBCHzUtxXZ(0SRa6X}xAz-V}c9RN>pwA42uZ03fx4W4T@SzLSms|rta{!Ue6G2K{EGsi`KzUF-n zqThcZrfWMTpM$(Zcvo=34B6^M!<~SL?mH8e{x%=yC1^*sF8<>Q}kYe9$TR_EknX@Z_<_{ z8n#>dXECC&os@bD2pKdEd3#4mcIC{Za!%fFGG^Z(!Df?exf*w$(a;3EakECA z9t-TSZ!z!6MrMK$jSx)Mpc5&G>hgyZ{AS!Glw=JV$7Z~h$sD`A)g8tMNEAFe|Et4Ik zVX&k(Jv&pQNEdBJxHwjg$z=^QGNy51P{PFSpzWX-${rf!lmr%kH=_iTabLg~?U*b! zd7sK>#whW7#hz`|OA+U1@{D`E#R8Nu8lb3i*J0vG7dUA!c*!0lm|~o-6LmfFqnIom z5t+_a^br#~wg}03cLXbrI(Y`cI3HV^@UCThSw!BDBS0IKC)O6W*NcC3H- zWwZ(?cUn&4Antr(MzX7c`C@&6i+cMXjj_;--?t@yE?-`B;J>+pZP{o*r&L)MV4PNU z3$m7zv6q+5NV2VZU=z9LWmJi;PJxxK{aVL4m8heMnplHAJ#OCdFkcrr5&6?MwV{MS z4kr$PgCM$SN$!CoI2>ZV;c_X-G+#n5LX_Y|g{Q)+5{n`-U^*}L1zv&*%ea4u{fC0L1Bcku5GxI4rY~_4492_Pe|SrGXZ_-@SzBOlZXnaHDr^uA zN46$uifs7&Cd{l|%+%i~XdRz1hpM2qZrq8zI9*?V){*<8iq=f5mIF$zPfZJT+UgiBCM+18WgzyK%~ zI&Z!qF;8a&;a;|h3*G$iU4FjX1keocAWj~_x9?vq-dUjLD@YZr@vvzVlURQ-1p09F z)?XafRkyBaf2JZIc1tZ}8;VrF0APSbyF1!7J~rb0D5^k~2$N_xV{Uwr-fQ4JR-ZZy!%H)gzXuQWPU=&UTYwRiNXu5-1$h!R|l8R2_a z&jAO|YuF-Zkn+u;@hn)z04-2-AEA}sMA5-!Vv zCrjL3?~vODflE`eFgxk4w)=QT-eglKU6Q{JeldU-D?v!+82jewWBN#8An~aj0rLW6 zkOu~_IB{r7*VIOE&|nz8y_!?&w!nO49=*5{T2z`iIzj{Vt&N)g4tQfwA$YC!OimrX z2kB>V`yPEEEM4WJvMg8vgWU%YfCMw04=E_>K!Qdvyr15QL;WK6Xu|Hn53kRSAkT=Z z2O=1rI1?FlUWEg;jsXOr056m{0Sb1QM2DN=-n$%8#%P!vj*^W564KrK!1YJp_$s8`(@cEYt@Z1Sz&}F^?I6~!%l3MO> zEYbr>z@^qBYv78|17G&Qs&oSq6MxgEaqSkJ6`enf1I7>}E!grY6Da~GErMTtX`-{HynEnj=n^1hw3=K!x_U%|N5 z%3vlig3LvJ$x;L)U8}&AD_+u>a{qHdu>p8fm2-e0A9y2C_+q>;LGtM8tpa)5o?r8` z>Gwo)gc6^HUzRPR7*{HGQY;Z@xrMh#y}}%IA{V0G@4(+;O;?=A^|Miy;xNqSE*VXE z0eJF~;d!Wks{cpZeN61@+t)7) znz$Li-mlNd^t?X7j=w2H`u!&9pg^evLJmA(i`VQn^7heo4iM<%&0X7rmk zB_ezQfm^y@_IGlzBSiF(SplPdqu43o%ZkU_GYx{~-cLD9_FW6w=h|S;mD+&#rQE}C zsbB-{m(j}UWIJezjTY}V33NI=!J^4%agaQ^a=yT`q-gA*$#rH znq7pqK*4~)5_>ix^l3x^F45lVKxwUg{pMEU1mKm$KF>gf+Uq+28bc43(4JiT<4`pQ zs|;>YR&_YI>5o;RBN5vwuQMjTND>B1qm}f!7cZVU@4LQ?e$nugNIC4bx2H^8NTD?j z$2w)DQ!)S4PyI2|{I_25oecOQ(QV`T-J7q2hI8&*w+ggXll-Wni5xz{hd?LvLzRgO z*Y{k4uYA5@%em=jYf+Z1Bm9uB2od<(S-o}cCcWZb*8Mo)5%=Po52$B0(pqv(kDUQK zrQVJN#SJo-=I0}l8Z7vB-f)P;ULx?aRt!*OV(Yi%zk6FWHaoRfcGWS@aX?yWbw(l^ z#{#)>62$$>PWxLHgVFH4d_lVn^x=(#a2d>$BhY` zA)fHrSaNpW>_3~m(>z_ZODV@fpsny-=xL9HlSKYGA;$JPMJ{R%@}}Zy3B& zhSaCl7;r{s-5HYgyL;PN%5HV2YxiGZyunm((FXqV`$r1d>2f{tFRk_@xNf}K`jyft zyXtegQnTDwlW2ST&u8$;TSlkVH@1VrA)&YC=FjjxVOlP{oa4A-&my)^`to12ZIg%A z_LB8{;wd}uK}4%@KX&p-$nf7%kI+A@PfoZO7vEUwrVT1SPGizJV;nX5weW9F&zYi@ zL-{JZf)hW>s?yFl?LYe8yIJR}N54%((EBw_{Ti^)>InG~I69s9$4FaqqtjnxVWttz zci_3>fOeurHyN;|>u;W5<<`Vzeny9=1ZpF&;?9K-?p!NI)DM*~v~$V#o`U8&n<~h& zJw)H;RKfYXnZ9ZVdqQdw0kWbW(*}%}eC4u}{`2zOc7idr1q_(z5Z$KT zHaA*^TUWOICZbQ;rhh*ThVCm9?`Et1m2Jvd4h%OEWPSSXT!b*z_wM8GH(%1q%z6Ax z1xZPzLJ=BoO4FjTk^0wS|1dCJvrQD)0CX5szCHkAn$;oV-JsC}@|%GUp|Is8%!LLp zR{ew0Km4kWyytTAameiwzz--v&7fcnoLOQN?;b#Z?QND}7LVP%YOh)`u9!cOh}WZt z_Bo!Spcq>YLlZd&<}2u|m8}07&puK2N`P_J`Qia5Dpl_9|yF!EsAuk6A3;r+J2Cv>BJwpB)<6+Z`RM)|6`r%EdI zbrl3U#1?wQMy>;fE75%yCg`C_=kI$-vf=L${K^j!HcaH#LM10v3ud@wioEPZ%|$t) z*y3!f200kO0bombP^21zMsNQ2|pPVc^ZQ{aAY^j$dCFTa1aBY$DI(5&AnN3OzB&E!d0!?a~Q6Z{4 zFb46C%1S>+JI3gTaS%yABTxplP+wo+-2YEpuqRQdnvXBJCn-@kn(lcRGIai*yqd1y zbbMn2qSE=%_GaOVGb53*vAeFI=B{SkZ?tl`XmEo-x?|pGbD;g1MXd&;Lu?N`l^DF~ z7=EEMk|TY@4edm~2<6hx=*SJ0Qh9uCBKm+fWleI@%B9JDBrydgN*uu-m}P!Ly+c0llV6@yT)(7*lDgMHWj_|8xb6~ zT#R%r+VGRJl!chM6r?4|JE07k7{h0}9c)fGNGp+sNC9NRUpEzdWc8Zk z{zi_HE}yQ!Gkuk&IA6QKZG$#=xbZF*8Z2eQOv#oBrv2%I<&eT=C?=|dVzctvm=65O zojcZ|!TdX!^bqdby!89+1+_@grKF!*c}tzs=Pc#=1_9J$)Vzrt3ON={OWHV|8(=%e zC_pf@`ZfD?pFyD|#t+5=2N`OG(8;pLi^Vq;pLDDS^>C#u!sKF404XU_8_fzKfMQqBq5kiLu`E`Ch$IYY{q8Y7+FX-hXAV(RhB; z_$}__miF3dHN@$o$X;UZw>KIc6a)dG>5UT?jV0v&^^xeT0RUpKx>|w?1e46=L;_ML z^kjo%ACDMm%QUnvU9U}ikhCXrK0AA8ooh`2Mp(G{+C`WWUBO_c5g9mMA>(@u6i@)K z?yNDPaGvT&wvWx=zk3|trxIZbLkew6fOG3rhOb830hZ1ABA+1WEyq!_&q1J5&}?*z zH}$7ci1Wm4w;ta9__>ys-2Z+w|K2;(n6v+gaOSk~VQek5Z{RG|OOozfhy@|T(Jyz! zYFtE9yz(K}w%Br^7MU8#T(};M$RzE`stA2} zvA}iN!jff8#I7yxiLKmEdhzU`iM-e~tCJkEcIDeF?0}{Gc(T~qZMJ7$u3HdBO(#Mb zuQu{0n6^9o$z)7$9JLfVbYt}TYxwiepW0KQ4(dN%zZ8kC=?l7nKN963F0B(4--DR; z6mY|L!X5M*_Kdwj6xI$h<|JQI2J z_^5MQPd?|=sQ=9^-MuhGB!lR|{r4AxP>J<3k>8tn9K;9|IshXhZ7f-OYGn?Jc#_(D zBoMhz#u6piRtpk^)*teSQu#|BgUFWmIgPlGJI<5~?8KdlL~s&ogC)JP1u(*W5M=f^ zh?WWg81kvIej`8MV~{!o7cE(89SRTG9h>qK*=qM)-u(@mR0ip-uUmwUXx)DLJ5Bui zRA2pNBF6VkOFp;a!&_K$@Qa^PB}XI`Z~4(eY!P=b=inn7bJu}{5XvUWn- zTa-K8ON~6cKZe}W|2i=DNN0kBzBdF}GiFQ}a8-2p>$+o{%M!IBQSD-TX|l-nmhaJ( zZ#jC&hq1wTm16e-EG#g4XC@X$kP+33pzC%lez|_~GlO5$JCw1@b4i2k=zi z5ea(vgEN`~%Lj;q_zzdF#s8UQFmkfXge9yTIhy0``g*jei!iAqYg}3Form0O$;no9 z+u|sEAuBj1o#zchUnnVdE&y>NZq{5N$KFY4Z5P$Pj|-oLP=cEyK8j~ zy@_DDsKTV`;_GHE4Kn~8fdz~{$(*v=642?2VXCIXBCF?3*KWX(CI4APXNat}M!pgv z@u6=6v7H6_4xk6XrTeK%z!4XYj`ZC8#l2$QXxBTUAn0pHmqcBcA>J4Lh;4j6dcR<> z?4FwCijQeAj4VUW^fYT}ZVoJo-mi7d94#ysiS|z>;FzQ^MU)#qKWxY!oYilvvBrs| zbl|M$3(saHw$Y=&Yq~xbOfX&rTaXtYVJ<4g58~RPtwqi}GiEE_G(7&;QXpp)RtcmC zjxkNlI;VvRRasVOD_$>IRt_RbheJD_ND$=V+_@Y8597s8D4cRfF_9COcciX~JoifLzIP1`~I5T z<6DyTuA>wBw1Ga4cHceV?BLLpPck3@q@NZ2XAivQ=A{!(`SxVzh!lKNLg#N#Rx4fWKS68)jE;5{a$-rghbd{+;)Lq7S#cU$jxIuD3 zoHmfpGvkwn^yV4R39;&*zY>aT=Nb$EZyTHlKbldJxWMucv;CgGx(7e*HW3`?avGzt51Obk@! zH`E<`=6UX;41)Qmlu@(Q$k+B(868L{*@3xuIP<|MgmJ&sE>4wxS6pc|UuqOWT*%i2 zMJDIuv~OKFxFf_QN$gtdtxp9=LppG&i+RC%%M|eN$AKuAWWRu+$9kd+>@LoE+DG?n4##~3Ow)3zjBOI(auZq*J1( zP}M4tAOg*Y6>~AI8xPIc{vvse&=BXJ^Y!F%^=+!{WO#r5HJmqg&swGfndgb+=-|+Q zBh;VQ269WoThhu4AZul56U_>rE8T@mdKsonD5=@=s^2SSstbogjhuj?z z97Nb%7|Iy_mgA5u0<$0k>p?&k5HBM*dVLrV;i5%Hjs}nw8?1nZ9=EZSFGspB%ds@@ z%3Do_y;lWO$cek^7+@cOSR8s5dZzH`lxCCP-$YYcnLxIqD{2y=ax1LR@AkEe;JYnk z7EhDWv|#6rjF$e%yUx?WQ9*-Bv1gS%P&`e#KDa*oF6mb8PjSsi0`ajRRkTj%d-qbgtQv>WZG^|jl)X8Idd`|SK8Yu;(i zj|Yqir{RD4oVnHHW3is6>;&ow?Wa%Y-rvHnhCjOJSsr-%cTK2W2xl%euT-}Z=(W*4 z*=ZikJHa{U9Y@W);{|kmw!5eN|5UgOm2Cn;kOz*8_|gA%l-ITFdm@fo=@1b=-*P(e zfVz)g*I-=m?&F_=BJDZr#{2Znl~?U70F&mBk;CdGhlxa$FbvHrSTfY*J#!GSFOnUr zU#}N+;Xgnyxr4&i!PbHFRtsk=DzIck9~hlzPi<}OS1ruc9;!_L6};JKiK?Q%^7+oy zCoB%jpWQ)!uSe4lJAx0>zs-3VwkW(g_EY#drA#DGskgn=fGRVf#YMxjY#F-j)p^3i z%7h4FI{N8(Z$G)>Wa=?jVu)_)N59j=rd!M-z2Bq(ZXj?*0?2%3P^ZfTW{6^$@-H<* zL4@xZ%WZ8SU~Jb(n*+@u%CQCa6q9$Riw7YD~*rKjny@klafY zt~DXhq*Q0g7z(u6BO{AbntX zLiq9amK)y`>4u-+d{I{N{qb#a%V@=-gvUH)G!#f%J^1n8$L^OW3^9dE0{8wn z5M(gR$R{G4__1H&<_X3gCjFB2gn28m-^JLIa_YRZt3(%a{PQtZ4%DqtVwdh-Fq?$tG@5^I(wC4JGkf` zk-#_T+`Gzf{K1JM*u&sB+zBVZKCP>(0F}J_bkFpN0SxegQ`Zy8CdjT<+z~n^GxeiKZZIo<0QGJMa0HTf8r;=_FZG z=h!yA(;_5BSauU-Jv*?9*LrAV^k47#0|{KK&+m5d!{;?01IWCaOvrmx3xQb2`o@BQ zFClHq3IB|(ez~gsV7GtNt^G^bv)60E_w}caxQD;$4S0Uh+;VJU-G3*B>7*?!hr1?) ztnO{k1O+~XqUBDnEjIS@M;V|%l{SMFlp*}|^n59UtslIDNk273B=Ze*-}-yvaRiN} zy8cUZEBIOV-_{l^CQJuPv&nXFjqX|Y2*dJ?x8xPe9n<3@w&S9U-$ba~ZpG23a+i#D zK3y`ED5NR7^%`)tAvM?%4@=+a zNfgP$K88uzPJdj!GHEKTwL7(cG&Z$f$}<;+x3+g|Jvw(HZtStOM)#-V%H~A}TY`Fl z#{w8lT(wl?!1L45QFq(Da%N!JBcaV>&lw^WfAhj2xaC^=3y~UqE5g{ytuD)+t3m)< zfjN)Kyn+I$FmsV5V;b-42QFL#XmrnkGF1!!2Vzr7BY=FtffhgJ10Bv6vV3pmbc)3q zv<4%h+zom`AABT8KLb~{;2Lplym}y`@tt)kj8xk+IPVilKr$}Y@NR3RY4WJdc0xhG z89~B+mjcZ-m3zGkzfR@hR;0X59KyT|doKuzMh{~fq&k*SL&fC=&7LML#=1ukaWP#w zlJ6>;4S=5f_4=-Ax_>S(>cieqAkpu{LZip!8ix{N$DMuN!3%X#Lkfn8^VchuQk7#3 z8qJ|3rBFYk4A6O7Ntb)TlCru>l;GInH~X>Gq|;D$H%O++<5{WsTHuZWFru+>iWJ2t z5{*vE36#Kc%ji2C3Q}vKt%nSxI&h$3rX_AkOaAslVeL`cjZ<1@`O2^H$n< zFyUJ|-~h43&-BBW38@a6I0k@oCg$@9_r0!h5L~^gA=W)RtU_Rq zFsieXm=Mp3z1@R^CV!Bq#_yYdjwT38dSmm4oVnKG^)oM$IN6sTprgg9lWeOL1CA7H zfyr49fvN`aY62pGK}nSGEX&g6Wza04p6i&0N*7$v_|P+7L^yG|bDLxPa%;0I6Ef;r z8T_|O?X@zz$n6vYZX>;G08?(8*<*-S^)tIISwvATj}uCEcP|a;{+neN8eh5-H`wH^G<#36@d2hQNn&meL5~1beI=#a=QO3@f@mbM0=7sy8~2 zfAfwgCLI0t6jrRz8BCzYg$Dh2%Z9=Q`{v}XKh=NT8on({M97IM=HpruPnQoTU*-$HjOZSSRm;+qHHBu-uN7s-{HV_oiMZPB+oz-a zPbL1@{_nR}d%7zk~sA(J9V6%LnHx#>vA7?o}aJa00R6HJX+#EK+fgq9+o9rRj;WAfY1 zf7OfaM1n{BfpYpn)}<*fifyEO1j{|}P!YSxILcE-<*j#ej5Hw8GJ~NB!5B?RW`1cO z1#(qRy#qE8kt|g*p84QU606&2k<|?iX?8;7Rwwxx)@>vKLaBeJT=LZ*piepWOT-4T z3&kNH<>@2AhL;juwFMiClK?f5i+G*)6GyZjdtYa98B_3xBs3f?B-0>@U={ID;0#JgCs z812wg{-eW$?|x*L{hHXUJE6Bp*`rN91cz!lb>uCrIbvi;=n_cXlgNIm)aHrE(6j72 zknaDPE4;qsTjS@YuFeO($SKlGs^pl+f>Ci?QziEuTaM4XS3}y)1tq|eBEOrdBlEHh zD*CS;CpevHknRrX*i78t?7UA|z7g-2+>u!ja;+MEe5RFkck&f|{PRmbbd1@4yq=bAkf+utGH3UI((Pvn9itd?cWP=icOh>*g3LlJK*%v?7n|zuODfhH& zCjO=Tu#a(I8+n8y#tNz|@P413-DKHz^{rg?mBRH>7&5pIMP1*c4bGthWDq+nvvIWQ zh!;(BJ+6);=1;u*wcpMPG5pSze=@2$n|Hl+McC*~V}q$cn7&8Z`=82!`(MR2W!B== zod0}bV&xjKb}zDIWgBn_($*^WJRAR^;OHE$?$G<>Kx3ZLy_QW48_kl2tHmDKW2=gv zjgCS>MW|JRRRZ*R9+?K;t>`-vF5L#rM+sOD8SZ@;oxmh*pugo+k zL{v;=6222;{)P-PKFM2OF|lhxen~7wX5Jy9GFe!An+9q(w&uaAwtNjkpjboAX_rhPix|8qGQ1|wZmz&P%li$xz zx}5=pQp}FqqAHn}crNPUVIhoY=%NI@cT%#I6wXVJQFtFH8jYW><$j!;J)njMo&u7@RrvLG zPn4X2Is|jC9YX7AW3ewQNl)2I1h|5me|%bOQe=yzLP(_SOUZwX4r&-g)qep zNUyIw8Yk-lF}{^Ysni#Px_k88@+q9276(tFikOzR9gimG&F?L*=xp0q?yG_{(;NP$ zA1j~SRJD^+ye;DQZQB00&z!(K=kC^!NdLI=R%;%8-qiD35gq+j$Gf?f(Gf!{ny>Bw zW~Bjxh>qY*!HeTi=(9GjrQ>N7PcF6R*CNA)-sIZjJP`?zRaT>_Od2|fsVdalg-&*sQPYOp#N8^Cn`!}WMyg&FP(Gh{a$bn zLz}}2kXCdC70U;%_I%c6mC}FxsPxU+mE0R;?cd5SAKN`JHd2%7TrJ#_L%{*AhQH!B zte6YgY*woJXM%kiVh6*r=E~nNS4)nsl>hx5q2q#EyH2>kRm-fq!~gjf*4d!}S9E4BhMW42 z_*>jGqA3Rqh7R!uw0g*3OF!-ekj>4wd%`=^8-OqA2&*oRuI5NvfC2>q9U=6v-jcQ&VQ{4!$_`c2I4)Ku}-!xN*wDPAkB@h`4mJsuA}_3D4WEJ_ez#zP6NG768R zJ90CALI26VVyKWpB;GH(u+z98{GkBrc1wlT8+4W)Bi{agk!8eqGGWOafP>_C`~Q9c zvk%)Fbqr?VMa@|UH>lBmK!)p@v@fn#b%Rx1X>`P>Wg&>usSjx^Il{RbdA`~(Z<=TB zAKSlL7xpC@6rMdHQKsjwAT(dbchaKDVmwgFX5r59)ZD}R1?eI6a9!&)=k-#2mj0|& z-qAiC$^Ryk6gLeC+{@@8;aqM>D2@jkWTZhuVKzyve-{RtHcX7w-G9P9AmWF<&4w>Z zm=AvfDW6k|-4^$H$(C;8!|OzPGxz%bk3c)snVZiJHv9Z?e*QhIi>C|glqR=^fRhpu zG*{PCXRlxSeH|it*_fePJZSQljbwV{_T6U&Bsbcf>vN3i6S+D1AXefZ3qe5fL+9w? zkoKHK{7tvaA$rq;27hyeJz7+jRLf41*JlF;Yy+~txHQU!DLj9l%N>FHbHs;`gE30# zRW^TCZC0F4AdeLp_Edce6QHr<9pIg!AsCikQx6oD)GregDhrVse>q?rWOWl=qTLwb z=X723K@{v=>(b8DyV#Ghh$N#dYd^s)#gbsZGV|p>ABjM&>DRVu?miT|I`YxK72ZvT zY6(<{H9ZmLR6?`*X-u{#f{HVKXYKb!eK@2`&8^|uimI9rLxUx~8_S0?mYEgjMp6?n zbF$XguUzVo7_p2%znAJW7*Rd&R&k^wKi$=dThcCvnDvRx#1kla4?QNHABi=LyBnQc zZXD0BtCN1W1T0ec(g4bR&cQR^IPEwaXk11N7xA<)$gK!Y|9f#>Ofr)z6y?Kw+x45B|WGg=uJ?5%X^Vi^f0Onlr> z5^4Xb6hwOZF6#UVBPjm*{utfvH1}Cm8O+&=#h#{Z}OPGaidJ!x+Vb!gI~8ZtH?>E>IU{qBg@~pgMP8vMxq21uf2u)nyW# zt$>d&=xpAF2zM1B)Ft8F0ipnMrw1Tm7eqV-j+uKCZ4Y7kuWxA|9vN8<@{IqyzCbh_ zjK8#FIGA{8I(vu@ivvB75RGu`ZG|uiNl%LM*)Yz+^;};ea%IGRJL~@wgoGy#>oB88 zG$5IS{Bd<9SK%Tr#E71TEFaOb`Xz#VMVr%6>*iznZ|{r$8Yz(_fmP=Dd{Yawe_5~lGggJs}Kl^Q(51b^RziVI2_6D)m{79@7}{J^XE3> zuH}7J*PvXQF|Sry4VRp)7GEtFv1mz=`F-9a2|7gN^sRP!lK~7&ptZ_zFDNfds=BC0 zUm$PDA{_`}qneLwg9H)%H@gd1cNThMZ33!!ZWhafKg4-5;2F6e%b+x&#GygvsR5zO z!6qUXu`I??4vM=HD9L+jlwi>!ig0~2Ck}=L_qywIG2bFiKB||{?}EMd8 zI+uRu^#6VBq_P$pz#*rH93vTUrd6Uuz{ng+0~5j>_jdmF%4%IUX(YaUqgK;F!4yq~>^%hw0PPZ-!ZQ5+}* zZaZ5rfronSk>IVv9{gB>h|W%$^CeK^_aV!IT|m&6>XwUVlIO2#(>m|_urML z$Bp7upIghErd<1#ek=#7NPcBHAEW8Lhlc-t4k3qXpWZ|TZr_OvG-&mhZsB2S0z!XI z{~o-J81uOFT)>$IE~EERFP19uvN`Mu`;g}Ndk96h#Ycj2#sPsM9A>@7ecB7r+a6-UP6c^W^T?dXO4jY^93LzbFM7Nu;yX75fFf5zQ@Y*I0 z-nCNAbWdon`HQQ~*c~01)F}R+-Y<#zubXfuV*)zWmo3}^`WUJu>cj?j8VG#;iRChv z!vh8C!reN$O+FMm>dcrb9IdYb$`~}jsl21h$($a@8WmfrxMWk+{2v1(kBPAx#r}UZ zorPCa?;GuBhM{|Cq!~)2k&cm^p#=n`LnQ?1u0cRR1cm_wkr)J|BviUfP?VJJlFEN0(oDQ51u0XhXru2>nfM6& zO(u99iI)@+>>6}m_HsY4E7)u39B4RaoXI=+>`!H>DafDGp6^X0wGrG!f&3WumK(&6 zUo!6S^UFOGPZgDV5XNAx$gT0o2VNu6Aqqi!=l!Po@%hR{=HzWH|IKFKv${inUN_M0CJ13v>-Ai5F`-lPiO^UztT7j z&G$KmtWgAKN{P=E)s?QhXx}f-6F>R^3Wo8R0wx z){Mxhg7JVU#kY8sT6emx*he0XPqg|YhJBwk*TAE%4aS_}a;HbC?c+irJ-ypgo9aLv z!svZ_5#{vFm@beZrx0yJJZtg<%IO=~VojNSe9MnF3BQ)um+I!MD#kfwWkbw+i^&S6RtRhVfcTQDbbjM=M@W;%pKHSG&m{PI3GM=|+b7L2G;xTd5vkWI~RaLFN&XT2(i_>UBG zxMmv?6}@@%3YB(W<{p00T26oU8m^tGR8j4AkqJ22MJ7SXgB9+2D#}1YXoR7STC)F4 z|B0(f3cVIU$i&O%LdX6ULFdC`p60RhK;qv3ji0*d?BQy<>!u*&dM&OuQ1vfy^c49y zU*_`>_OI{>IG7LeA)^n-9RUvJQqLdKfFDgbJ6aqgX|5Ztg&IW42;gg$F+F;vfhy#N zL__@}2j(KF^LR@{}+2myu`L9Ejtp9{G0@zhjgf$@@u zDi3Oxf_QsQD5f?3=zkUxe@gQPDy3P{MO}Ofq%V~1Jtv4U(ncPc!8%6q!Qd9_8#%)2 zo46D=Vm?*rOKUAdr10^O`pDwchFC=ty zf!KYUnxRex^2W)@$ivs|Wt1i=ewQEI#t4oPL0+Tc!M3?nl3V-VFEQiAFI5{%6&H5D zY&=*It9|sKbqv*P^gV*|*YMf112n(F9_!cwe?Hlk;$Ufe%v`A^dKg7n^7db|0VH1U zAF`8pBa$gxO|c&6v7o?@#?S-i<=hKGyb)574^>u+DUpXSq*SWUe>eaRRn}_En8=eJ zi;-UmD}lIe!0R`o_cY0x2&p9tZ!T2R({&3{?S7ETmXdYms2qI~T6<@ih=ce%;s)(W zwe0;j!)w|b1nz&6z+|Bhvkj zlB){A+mEob={I|(H-)_pV0dn5fa3A5RBMxcyNxe8tMf)KkuHrjHc3k>NBUO_2i2>( z=T{QT)-#Xld2_7oObPXGlvt)-iu`Jxh-R?qzbKv34fJSgb{=(|>6uN~u3=#dey;C$ z3<~aI+oxCvJ*kn{W|b!15ANGjJ+H_N=-JaeH&qH9=U7;OLB7X?*8)v7prp|H3$Pk+ ze;Wey!si-nv;W}8rQd#I>)o?B8`vCtz15B8+$6jn5e^etKLeUV>k~`?-Af(V*fM9S zHZv+Pr=qdY)TKjnqLbIBPND(?X&T%P`IK&!wFAYHY$`R+fOj6?jo4Zd2i^+~eZBU3 zmxWEIv?rc`kkSP`{nBv1o?*NHGosPN>++vCOX6RP>wn@SZWOgIs@Xs!5Wd0I!BT1* zCmL>VI(j#vZG<3N#R*V+1IcqpVLF?KcfR@ja6qe}71q;IkL>XsRTH4l35*dH9-kKk z>zQP)`&{lB73!7fc9j~UKjXn~^H=)YKWOnpJ*^Z5H1V!}bGQLpv{mspI-8Vw4qqTTlC=?TUz&Mlf5r(vLz&)0QX9G7G z89TnaFu9Cfw7cL#}R)_8K1_3*>F_&BcGYD}BdNAaYinA^Qil34g8&Vu9~G*UEdT zp_j0tjI0z!o24rEiJu^T6~~(IFLH?{Yl_rgp=8)tI^tEM zh!Mo|)=;7&`;>X>y|IN$26`ySAAB)*(`seRU#>bzT|2>O&uJ2&@7f zaY+M-uMpVg<(IrMH;0WBy%Z>u(@Oo^mjez#SM+yqucjQTXi((w1~-^p!Z>_G9S8UGY-i9wp*L43@9Bmf17 zcI*iml~&pSGvgAK?`JalKJI_UR0_Se%?fO#%9yQQuK7Eaa+dt)d z>6^lihxD~ZQdmPpsUJ(aoV?zV8vcvYL~GP5sb|hZ?>P<0bfA99*aHA}3~ieLD%Y22 z_Af4H!Fcd>=<7mo!c_1|CsVPdK0gB9%YJzISqhItGvCAzttn*S%WH?>CrHZtA>hPc zCSc=4lHP>|7##b&NIFP3RZmf<3j$&Y?$PXZR7R?aZznhg%-6IP}JwUU4XF2h{f%PbmxD0 zPSRNm5_50pwnn#Y87NsgZnnc&*vO^|M_%G3XlPYT6>yeid!FXa2JBUNadcVt1`%fQ zI;Ks#xG{C%Edt1!>cK~orn}0Nef;+qzxj)0e|f>Ca0$J^db#gJ@U%uSkc|00OO0ko zd7ZmC7-81fKpr?Vn>OpZBw}#P{qkEBA=$0~cynT^bc*_Sv`WtjKPb6_dM}@(4cWSK z_B{90eK1ZkTm#5|I@ZuQ-e&v!gk#n%UoeLKq8XJ}JL%N^`+x>VjpkiUfl|fx5*x@Z zsUu)J1D9hl0dF^fT8VP7f~SZ%A4Yl8;*0*>heWk-j5l|XEZ={I1sYt7pRC`#uDF0m zwEUY>T5Q7U8Ee>ta%AX__nYW&LZLadhRE0G)Nh;N_t5Z)c`?P{b_sK@X`e_PLlZ*n zT#-@bR_*UMkFFZO@{oW4P3CTtiy&DSe`^~8rcxv@-w}ZE?9DLBcfR_;gFie>s$#-w$ffqqWa#~pc+Z`uD-LSJVQ|%Hm89`E&N9B~d zR`@Vdrxb)SrjoQQx-++-q3nF(a*w;rF}idyiVo$KrjJ%davH-9WsGmggTmIdg8Wtc`_)tN|h7 zB$?0D_~Y!aMyr_%)i?AK^2=k6uQPO9M_%ix)V-+bp< zdo( z0en^OHLJXa0CQyZaozsDe|v8;?7IIlRJl9v;$8Ta`M8cC$J)oO=gP+)*sXi!pLPxv z{SEY|UtMwWrgx%P?dCAdwB~N-A?6ip>(a_y=-*iR?cJxOeN-GEogWakGbVq!agPPN z+eDqMc0>M4iWnU-tHiMV4FrFdc==l8-551yBzu|%4f54+uGy@9#@oi-I9JB1jYh({ zVpxIl;b)Z$`B!7y;yaqD@))Z=FM-vcPH}E7gro&6FQ!0xd8(4S?iXWtm&{uJNuP2z0>@MY* z3rdOnLye~;hk&zQYsG`%CD9=cn(#5b0Rz*Ze^z)sxucE%Ixw!S8I^!E`!8$-*i?%F zx%AURV&CtVzb~^vSpF2|J;4an_FKT0VWD@#Df%{%56{3@ugws+;UMnKg~@PleDcv0gKmI~)r-%6Uk0qB>xop6#WONW0cdO1z-s(dUA4Av_(5^HD)5hj z)yy(F>sF{z!auP_gE)kGJe;Izo|!DjRKn8L&QXKWnQ!WH7$^}@I@kZ3jK?F;qYy1AS&UjRg#F#ei|bIUI>Pr!)QMS z82tDOL=o|j(7Pe{N48Xe4mb<_!QGzs_?gmp9Nl%YDi%ot0tV(?4UR!Oi-8XC&q%Gp zJQ?^0Zw))qXV@hLdj}o@>{6AtiJd4)h9@4Z^AYosed&xxr9Rfc%Y8lf1crR%<;oTg zj|}BrV_&RGQN4AZWt0Wc{Ta~tQDYoaQ>6-vwzJ=NOwM2mDu!_wnz4T#w(1BlqC$2Y z(C6MVB0nxa6dJ&jYdMsmhhj6c2tq2vMtNH)E?MwU{kGJbr%hA#lFKb}McI->MU38; zZ);qjyww397}f?GKEMPKeMQV+Pm=!h@jIf`zuftEx*I!~Ir13_;?`+JH;h1upYW3T zC7+PNpZI6DB>>mYRR$llmb~gu027u>60Si84KXxxwCE>{0T`I!$d!A?W;NDmxfNre z6bp=Uwawo#PCQJ$3uq5%SS>`d`{Q0c6VH1egFV#%RkdG`+Ose6E|9-e)*=NFQ|JUe z8o_HDiT7Q}AKB5#|LNo;GCY!isMprZnT-v7ojQl<=Bq4JOyV^_0UB^-vgeRY)k{w# z%qBZPZan+~CIcMd zXP!ra9nbN`p8@CNpvbDUsz9XqFYjK?*{6!-)=2yXTD2{={s%l5+R~_lqRcj)B6s8= z2_A}p-}^(tUYVB<;;zZ}N(tZ^pXY9Lw%>;B~FCA&hus)(2D*YPFn^mfc zeM9w<(G-nz))MRg3@T8QCmF4I@V=e;r-TCQ>MSoh|3lJdgaHr9q{(lU zfZ&i+;WevAKV#RiUc%aXDyo}kuOFS1{(EojOa9rqoJL)$G`UOZ$z9$9sdjr50-ntp z+|Q|u_6Tja*^rB0OJ;5!yYoMnhIu&DHWU6uKfG!2ouuNx22CnI=O!=AUtV9!kcDAXX}}uIKiGX-O9wjQ96`wD z^}Pm~C>QRYe70k5mD=||#sOO^?J-{E2GP`?E9CrrAbtZdgdLcN8XT&+6oV%)WPW%YLJ!y3pv|5}$^LwRt1ib_r2!bqMD{_|l_-+-kY zIXuMtoO~5OlhTQ>Z1$P{U2Wd}WTx-}Sv0_KQA1 zH!%uEykn2-$SuAi1jQ2hU*ymLZB{A?fNfLoT6eW@wa|dw%-4GJ&iCr3hO5AH{_@Vv zH(PZ652VzI;TK^^IRtM=z{u~1f37)b%~!Y9Z;e;2h5k_|h_EElUzxAh;9ry8C>}@j z-g2;{7+9S@8hKF~TxusqyVJ{@+et^7viIP&=g>`{jxuC-oc^r<5%?^sLa`-(`||wi zXiVaTaw}2pbj#V{j)Q^QqsK3V6{0VjTVA?5-ABCIu5mw6L^IX%M%(qWw=bX0GAprn z*iT9w`*Hed6kKMwS{ZD#oV^pQ^FzJTdVFRUH|X?azo}kCbKzy8EeGH+ z-L~8%0k+fJLLnfkwy94---9zU1AX2{2TPL-(U+15jh5{Fe(uipXKiVU3{B^&g|#s( zbduS6smamTkWGw>1hay9$(J60<*AamEUA##Hj)T6vMTojs^*IO}MgYvl7nSo|aHa(IK6@XjTqs37QUVE21#=IN zDxET*u`&awFJaJE#08$)L4|HlO=qJam7g%qtf8H{klG*AhM;G}|6u^cm#NWR%n_*c z!U<)=DSaMD3~#s%B{3W@D@@dD0X<1dcot2GWUpBV%|^+=H;~c$vzCK#7fgN?n)5ka zn)z;H!Nt#^m;c&@*2ZE87WT*F=bofc%3n_@t%DoYrw74<_U_4_EWeZPx4%7AIIJZr zAG5k*g|J9B0GhA2B_@I~O5DO05Bb&isfpR(Ou|7bvUa5=vEs*KAb7BriU^}S^95H!!LshD$EG9 zQUk5sKK5I@#2Tt|ksqG_BmxD>cCLp0NY>LfaGGPmGN!yLH~7-}86`@5gnDKC>!F(l zz@nAqddT0%SOwh3V_704e@BPs!EKBp_EvMeGrBEb?I{Cqpv`dK63CE@1!W^ZF79C_ z17tC-0k7rqlgA8TT~KP|(j_CFdK0CJhb5`#GZr+ZEL#YJ&BGqE>s1PL%-Ps;tCvX> z$cE3R>?ho(@o4(0Jd9_Yn|{?==tQh02qkl~f~i^o8(S)C;C`zL;-Q8G1PI~{HzaYi z<3S?_&n_>vFE)9kPBks1YZ$jC-&vYAGj2qaPj+*_C+dUN4SfoEx?vmG2vAPl)mIMp|Y;@xmn|Z0y0t{;ED_OWn?HBA zQyjuo%P&_c%P**ywZE}>gksIImaYJ`akVXFV6B`wP1>BYL)tiagPn5l+mNZ4RVw|H zQv!I-(yCf496+P`PqL&o@e3gt748b29w9Qol1Rj)K!j?Xyo&YY^>zzRHMUot#nHbP z&MI{g`DdbX&cO#~4LI6l!%>{&%C+Opqw7I76+A4-O>-7;?5VYzG=bFTDfA}_MZR3) zDo(`_?ouBmog}6xH;I~`<17?yjm%`klEguDrxQ?m@~@DXj~5YUP!`MmA+}|mhj^>P zhp3_Kw*2R=Y@h;bUk(8oyI88107*yj-&Hn*ODz2)!hKi$Wt+U%}`$5p)a&W-aZ7P0_1R6-J9-` z9}m6p6228nGTqr%%u=n}@dG%qpcoKr<4F-&y_6so@sSNi;3XhOl<0m3c*#hgb!B2M zYD|^1L!D1L;BOD4aMowf0B$2=!aalQl(SkQo61=XCj}uQJ3;o38*a45+eJ=&0G5f; zGmcoRE9{?vJAW~OP-|moOyr#bq`y*-K@T3`Mwi4>$|6FRtA(@#B*SRv8cthz{gMun zMzF0E)Eb*Uw)h3ZhGrqBjA1{W^)-LV*Mg?v{{~q#8|dI3z|A{&>EC#avj06wbo=aR zY!!7wNq3uk$ZX{fTxHh=lrXLI*IiAQ{_eH%w0%Wdfs zeLY77!gx)}#2%i3=}$ghUtT zAenl&o0Ek%sOv<)$ui7^08HR1NtK$32p&j5`35(Ayr!P6B%7=_HOFbT-=xf|^QK&~ z%}@H2DFhaQ9?G;D{ajVIyqm1YjU9^1{sz{q0q#PZ<5&K<=U023Lu!K7c?;p8+bO`< z3Al>wF3B{3>%&eMauX~gsZXH;K?adt_tU=8 zd(Xc{t*$~B%y=5!&37DII9med^70F32;T{T=)fF zRfHb*Cgnu)-DWE0-%mD`2q{;pkEU|(?M}NNaxWZR51wA?Y~b>V5CS9zQWxdQxV0l| z){p`AeZDpT^9KOo9PSeX%v3CM`6|G))#Ucnxd6hQ$PG%(Tt{|!K9p!IYjVqX3Y5V0 zJ_UmJ__F=|i!rpep6=f2#W%@BKOt>=jO2yMZpy0w^NJ^Yo^?6$6&aU8!AkXfZ#C{9 zu=A^~4V0B#Q>jnF19j_NcZVM|A!=)!D;Anu$rdX=4z00f+Ohzm?ql<-ENO|Nar*6I zvxtC7BOvsT@2*oq$dSjqITfVdmXCOaV$1=v5xkms5Z#`eu$}#7l(QQTsk%Upr{Ovb zb}|Ee)?P89W59UhoYz3H<7BlJWC)@g2x4Bn*xv5k;>5(Ld?Q|C-xe%$7?m-ePquuN zW8f?Ls=V8SL)4)<+W?XxS6Q*{Mt7>pe_>C@0UL&>84iksBawi|kmPc4uf86(<9I91 z=%@GQ9EM3@`T#(W2c7#A-^Tfre=)FT<0I%@S{79O>m%yVyLIHja2a(D!&UpbFUbJl zw&x|s4E+(iPJSY%v27j6ND0jGiTQXlr|v5)HpJ# zX41+pd=fVu&x2c&D1^4J{K{&;i`^_8aOtOG6j=u!N zQ~~)U;q~;$^U;Pn{Ukh^&B9c04&WT*?KA3Zf#{ee1Pr#22mw6NOb1@DArBaCq2Iw2 zOLxNCXPq<0xk2|kLM7M93JP*cAMi#D!_bXn>$JwiGoqD8gLhfuWS-u^Qwvsn*vcho zE(gC8fjpCX?#%L;ugoc$2ZAjDl8wDP#dAE{rj-ImZ*nGjY`mT`oj!_e>QwsTHC&T@ zf0^`_sP&Flsf38n^4Z+%=v>D|?4bbS&#YYHX);SPeQp>aWVLCN!4->2%Zr1dR8BP< z)OgyGRus!$#49DIL*I;Cj-cWHTZERKjXkxZ;4UorzE-*WUtrV#%)5BWCvSG(v9#RT zHpAxExs$=Zc+vN=*!oSV+ybVm1W&|d0U(jU?V{nU29;}fm88G+T=Cv%LkD&^df+B$ zLgQYq!6vO*zjv-tMxgX^P&pzi>%(uB#kNmYks|elpQT6#2xp9J?+mA9{qdE*$QyjJ z!%55eZT*s8cElSuV?y$xFxFFMh6>$b0|N_YIciQtc|yz@41^_-D}0+CA%?q}$8i^5 zAZXN>c0%WQa(6N)Wd~ShgWe3X<7pUW=6nuKzNqhzi0|>(RJjmI>6Gb6vIe%)+PVNGx+=`_O!V(3Kp}1ry!m?kvJX^T8OvYVoSmA zJ!3uaASrZqmlCy6M~wtXvcv#VlARz)*!&%8trPxThMQi6(9XhhlZy)FDBL@L2N5A* zQk!Hz!vPyT(_3v|EqbU1X7LdmI&Wq;A*P)wU1~bh``aL@42fy*E(+*{BVs}M6eEr6 z+2T_V*#r?vNv~lsYBuaU(FV?i+2W2N(7VLnebmQ$FryB>2KC?`c)rL5UzxA7TbAVX z$dX+87P;BC<4ejCK3e@XA{S;!5N|y-Qf(ZVI#j?c#6BRd++c&$5*Er2#n~gI+0XIi4wyZz6N%Kjy1i&2My-Zu@~EE6<1AtR;#ZQPj7TAa)ODH+;t%QCe%%k zId3!q#!0>oUjKBr*wkSVK&_8R6YFpR`POzx1a_`ys~?))1?+2is8Ar?8Kr_*@WuD0 zKLCH)p2I1D0|rL<)WfJALbyV|gvSgY2(iw?{+(>hu4yBN3(4Tk^kmN|7vqR!jaa$} zmBNwG7BX3o6(+3x@^&)lY@y-HWj{?*8g|0%SX)<-xcP_nL&_Lf4wpJI*s|rpL%7I1 z28l9`Gt3*M{5HEI=~BxotKW5?BQsab_|xBI_pM-ie>c;!ag=?HLgUo?Y}yjuwqf+8(Z#Ykq0HLC0_Y4Rv(~w%FClloNai_} zyElsEzT5$)7-u3;mRtxw#U?8WfCc+?tNoE4JV(KADwJAGxc7S?ZH0l?PdnUx;G5Uu zy8f`M-+$S;Rubzrth>M@E*FOV4;T5{-do48(q&Y(U3dN?wsi@;`B_+N{5{ks)arNG zlFqIln159%BuIiqwuW4}LP<$Z**YC-Xzp>fyun@EOwTJin}K2~>HXX2I};rr~Lm zf&7ls_inY@vfe5MdF58qiSu^tblkkl_ZA*+Fh}~2bKP88n|1DHD< z0na7ShPLB`A|^`#I9B9NI=pQmMq}A`XNP15rv-Zb@iJ`4p7+nASeu#hPG8*(2B$^G zVYcKc-FrmoX$5R=BXYz)xiCvB=e2B-Z4q7PH|M^M1%-8gN<9+KjO_+qeOkF4RzDRy ze&c;6AC>)ZPB)8JEtKv==b>K~c8&uGFJ2Z|o09=M9^NlrFnNLNrOTY5?uYYfEesIU zd>k6CFELbpE?rF>fhf6iSCP;vO<2&;Dca4PceCd?AmyM ziswPw_Y^2EnE}yON-kYtkofzyUz{U7J@)9Ba4v!Zu0eiiiiu7%2hF%D4nxT`2{u?} zH$})VK#emImtV8qbR28pU?-Yl@yKQQ2zl@--ok1&@r3;~5?*)hn82+5s{c z!D7Yu!^uFVke)9pNOo+yQ)G34ELg3`P9$}rbMGITGo`Fn# z-a3cv1%&v?DmFcS3d0`36n*rspW1^kK>bJR1lWm(D)#7$XR}4Qo}!ZAEctF+2s0W{ zApX$NKG>*abt#znOs|(PH(o0>6Ajz1rreA$O(o?p3^>F!>EaK<mt7x-A0D`DUS;!8Ers?(>Mn4Mf(Ja-!5m&`7G-ppk$4@S{# zoS%ywd^QYXAYE0d&_>jg_{NAb`oTgP$$Vgcfj2HDVutB~cbdw7d^MKRWfCQX( zXDV`P7kvB#HR@53brB!VlX7W*hRbkK+W=LD29PAPr$xT)j=4L)o-ITb5hGnh85-Mu zg8ZZk`iTgWbsrhdy*u(fWF@}d_{Pl4$XuwXxY%_fOm~DXaXi$e(c|5*UPolJ4> zK2^yx-Axc+5HDofu>S6jv1UoQWg@06?v4;-)U~AK3&e|u@5Gofb@s!$Rl8J=CcYjcLHZ;Au zn-MQ*4%Oex*XBHrN;c$P{YFrw!IIckps~WI31_B!C&Mik)71d{U@5ukIdQ-@+-dZi zKLwLz+@np;Qr9cn&!r`!weKF%T^?9TEcq5c>JKTJ+AtCL*J)kr<%%8(JSt`t4yh%t zXLZJ(IvX5y@)H~sQN2rh?X6$n%MW@tXblxs1Qt|gz;LCs|e9zSPM0mFyY1y>`gnP)`3<=nle6piBW5fgLVl>$&z5hNgTyX#u!sn3cea zD$mfH&qjN~hShVH^lEm9pZ{XQ;rG2|AdV~Yyk(y0|L> zpH(>_;QtDK4t;Q~S>G9m-NH$U}#kwLC&5RP9QfK+?6Vxd+W*k9tWm!YU`ZE#@2$}SD4NtzWfOQN z*x(P-Jm0Zx`*iR1yL~3KR#0uQ{F>j|+7Zn_*xJt>qU(43?lmRu3!)UImoM#A{*)fB ziwNA=F>-R&Z=73*_P%3aoJ8L(oS_P<4%1S0%Sm;DY<|_{9G@Gh=v{ey{LbA{uK;|P zczi{PlyrV6h5c~H2!e)Fp8pnzO`-1+pq;7m=-Z9LdKtDtMTv9Ah-5xeypeLYBUS!JFR(-tTk`@eqcgikKX)=4is3i;KiuvJ<9r_nR_Vb zYC%|Fq#VCYmF~k89!l*SRw+c>wsnv$#PM{L0HelFjCgZjZYp@`Fp6{fYS8iDteC;q zmjwndjBh#(C{|CCD{r11hlca8BO5|*5!f*0&-iLfmvImBso-3hG3bv(3QNb#_aTXO zH$ElocDwg8Z}(PodKQptTR9JIefksa9?Jki&8c-Rl-Jf)z!!eH%*ZQMHya#G;>yR! zuXzDIo+nKt{;?PBc`4QXVNGh)sHmyuR?f}sst1(P#Me?C@EmL~l{B%baHI~>>fSwN z5K~IcCmm(oYbWLm=$ei@E;gt0d-E{t+Y`UD^q44qMFHd9bc|<%kb37oA<8Ex(g8tx zi_MO@v)4CYXSQr-My-_s9JVh6m)C`cW)X@tGLRZ5oCb^wZCz!-LWNVt8VD3V$SL5mN<% z7Yr$Fy_R1GBfkpELvJp^+7mAfeH$$j0yAba)Q0YLABY;8&#n*`FW}vK`(gDwh{vTC zs7fc|O!szpa3>`>K;6rK*QvVWL5kb39x>10^OKQ2)%7rlEybe$86^0f427<+47C_h z*8*{bAlWC;!49-`vT?FL0-1jXH~|v3o=9N2^iVHG=pMk)YCP+j?4QL4tw9Acl2eLV zZ@z+gWQd2(#og7=hD*Hk#$c`_FKRdIm6*tDs1n^`C}(96(e(}<>Mkt@!z`hoGm$W0 z?*V$)*sn9&Lg+WN5RZxY4^Hf&1zXCugS*BfDiY`Qi*njNM=vzekRYm!jY9@`#(0;OhdH5|?P{+HJVb%m+^Xo|E@a)TT2Nk^DWtK6=`xR4SCO z|C^4l=A%NC`_yyrW1BHl6vWP@ppG(;uX zrbry`_XEc|oyr(+9?=R|R6PN;ok{CD;LRrfMHx?LN;&RAf;Fb{mK%(9XJJR$r4E); zRelW3KUz8BGk7sCR29dPG{~-POq>}M%pnlIMozG9%<18RfZ)Q!4g#UQ20gBZCS5Y6jR!GRvZSOKZ)|9x~A~W%YKxKhOh9U9mW$e z%HGWOAOYYpx}`Bzy^zk{(ni23PBcyyE`{$h+^}&|5noq3FpqOXAsh7?ZO+B8ce3K^9uHA{{{te3|}59R|Q%A)q+iXWT)0rPRb8ev?K!r zOMYiGGCWOau2_Bd+_a7h3wPm z;|DLI(P!mN5fak}*?kT0r_qQ3bGkFPOvExB z?rSmwd|-B(2r+8o_dSs$VGKSd8)b@jyKQr?=)oV#RN_^a>nP#%{`%rmDI^xH5A)2+ zqO7R;>q)#-*1ZNWZ?1ctNS#mZo$%*-%(N8oPO=_8MN@F8C={o!Q4tKEFoT&RHZCN? zSyeX(0REcpM5ra&9yUz*UF@eN2umNXF~KIw7PT;pmBd5-l95P~h|gi)u{0EJY#DsG zK}Xn@M2OM&<%!^0AlivVz@>>~eHB$V{HfDdI-FuQe-4^B16mCk*R!HM3@t=MdIsn- z!I~IBlHEhKGm{t%%nDVp?Be=}5O+CeF`^hbx2klo|HxeegrQ&!4Q51ZI-XRn;F>Ck zzwnpsZ4~DO(57tALx@3Ew}Ce@l>Qn9u&W*7uz$U6Zc|DoS?PD>^}orJ=T{$z_bt0$ zlzjS`CAX{Zs>6$0eOpGgz{+Q}HqLNlyb6xo5O?A@07GnaLa>>k@!bW)wfaVEYNJ;AUm$B-_-kVQ zxIwK32trbCT5#Mzsd0{ObJ`s_1;Vo3{gDr`FqA^)^LJ&?yi)tjncl_m5XyCMGb&lC zFn*N#-(LheF?M?%5YN+v63H0)8uWVW8LATUjG3Rg8{1L+EFVvh1!6ruLI^`HZ?#@? z^};W=4_L8Z(H|2Cb(Cp2P@O?x>oGu9b&G&%|0e-Ns(i2eWERva)mEW-|NqS#4ZD`G z#)GBfuXp5j9rKg(%Nu-P}TVUJ+lmQSoVo* ziEi*X0UBBHmI_HKg6V-lqXmc-?s1 z(gQk=ysUdk+_ALh4O^4(O3aEpcXQma!-ldXwD6;E9;>%9v1z0Q=j*_Z%e$w1UwR_l zAn0J_8$nr49POntHTGz&X1iCB;qCN?8`!dMpG0b+YXWj!A?B!>I%)Qj(bRC+F3X-&yZ(5>kXIqS>sivu% zF1It|bH+VSNmixGV2)4&B5kU{!S;1+pYUYra5dmPDJg~uH}5?AU>?UOu^Dn-bp{>1^x16#j5*>(2<)JX zT3T^YY9%1gNu87>r~5bn5hFmgy0)NvNZ%fU!4zn84RT)*Jt-#UIjXg&N z3g~Sw;#ig6@B9syHu{c^qMHLVpCTtaHG`pAi8e-53#Rm6?PwAtvUvLiF zcMm{^5;$WK2)xTDJZ$}*>)NRjKgL@GmLf(*kBIRL%`lg`{4PFxr}jV*!2#Qqhvc6&fMco{u3=F%%T#{3Fd(Sd`Hyrh zThR-Qsd5kpVNdfR9HTT)*lYFUhWXPu%C1F3EhPx8&xT!Z1_LlzT+QXt9OLf?=eiKX!!#mukyK3&)D;Q(N z5bsY5iYeypU)J*=N&jRf5koL40dJ)evhaLZL-e8F(hWa@ z_H*BbiqGa(8!b;PpwmU-aLSUK(q^filxK0dckkEfOXg{oeSoGvJ(ZJW7ZW}exKU}ITpN6K zt6pZ!16sh&?qwx`d65EpZ(pAY+ar`C0>#_&30!i-U!Q2Of?~mi@bw5Z3c9a`Ga!Ph zg8&pKv6f)e8#T`$TT_al;_Yy8n9)L-DL6iX%-MScEPa z?=yK`F&wQNp9c}pMFF2A5{N!Jc#x-~YdttUC^F<5>G(oDj3#E}^$pIz&(#-XQ~mS7 zZ8euJ1roaXZy^cvj1catA=- zzgo^{kIm=~5lnb&IjB8WIU049*2Nk3w@et-X~=MBO&={pxAAL(y53yl=D27kJ{U?r z2Z%zi2@ZvfIm z@u&s_)o4ZNNlbbDWH!!tn4Qv6Dol!3UNME9S{cXV_^EnHYyc~sqhm={QsdZo8|i`C zInv9^n$*G#J8fIjJ-&DX!9EwWzVrI!FOxpS(otSVtBcPXoF7d`;xVo-yo?Q%pGL#| zvii04Ugu$9a(ADVeAOf5DeNl~-JqPAn$fyeGIlZ&96n~7-h?qWzkFmi>Y1W1EA&#f zSL9)Vx=`m09XNj#l&4@ePQ;q*s9cctEBdUNXIj|_*#2ns_EKo|xZx>yGS3dn|KiU~ z*5VUbQi}*8yG-K`*V>FGg0~CAvZMkR5+^(SEaI9=&e_Pof@5KHNE7=d=hVAD3fl}F zgRYOS@g*6ks^+ZuoAwtRM0)E!RFu|bW88b6M+6AjOO zpT(vW`KR-FBR*YpJcUO)wbO|1h9qb5@W5stg!kseY)=gkUx;pYeJHIkL~5{TFo$BT ztn%6#s6*kyr6GmYjOX`>F&2>K7q=A!!C-vSaVU!c5~uw8e3iu$DMuG{cWsby*vNnmA13X=yJ!2hrt-46L@Z+HWQx+{26?|Rnrf>?GI%prG8TfduerV-T z_&RFmD$jY*rLt0&f=Xz~shR9DDAo611g>OLrc_G2=A+J>Ea#o!Poe^ubuULMI>|h# zGwt*Gar;{S*=a8bJMzLVCo;-yBV$FLAB^0T0K+(s?+8V<@>uv>S{C^}(wzjwuar)K z4wEmOKw1KHIBJ!u0w@}_d0$%nvYHC1W&LR24N`kNg^lzLm1pxr4(r#QH=$PBYDy3+ z5zCfW!!Y2gOg8f?{QV(EnS(aC(v@QT!JAYf^7S=x4q_tw-Mo91%MJp-jTee-qCM_Z zHNEE^;&{#UN{bR78OV6nu0??qlwo`JN`Z1&=`9)_egh^mQ$KIGM@TOOjAj9V=Ph>{ z#J>u%cw=k(i|{?>bQ+A%@kjY;TEQKU@T0Z9aGa|sAxxWp%qDnz-Za_Bx|SAeVJiHTIMYE`|3Oml;EJgx z2yQl!PaK#r_z9C~$w)YFY+VyX4pH*)LuTgOZjW2}X;x;n<%_wTg>x2B^4luQGCN6y zYk@Je8;x$uZn)0tUX@US#L!Te0MG{M(Vr>C&FhZFoI?#=^h5twZ;40|!ygXmqUlNa zk0H8klv7!rJlRI53g34i22ZZZxa(>^tujl${i}u`E^C#RKPFN2>?i+hU^SX(tdUPL zIxcW0AE76^oiegLw#urZj5Qjt9ns9~r6}dJkz|tLVAW7m@{g2^nvql4xVLKHNR}bW z-vy!uYkYUI$e~iOqbhzV_uhKNR$i8OgHtqOs~(E%g_>aicN{dC2xGgJO=JKA58_(r z{&2>u?DZTJ&nh`~au^a#{M(Tp)I-ZDVbmzp*G1-Y`OO_7g4OHvsMFObG=+!B7{SJe z;oNH@eIGwe^!HB7S{Lc+?eujt+BQ4;TgXvVb1(b9$I(_x9R2%lhY@bUBX1Y+MZA%u zQR{7@0Ci|pMcu510_&091w$xT)T#`vh17c2Y6dylk!_0ZwV^#GM)e!(!!zElk*llr zpR?cemlO{wYaCAB-yy{rs+TR)v3Krg5JAx!6cA<$tVX1H|3TO9{G(GTGzPkx=b>FYgpw-+Vtzb8&oy^5qO z7a&ZciPT*^(vkerR_#FH6Yh0C^TX&cx#iJF31u5j#P?$eD5j0RCHU(Uev)hRrOc3l z*WV*BoE@69pPw{AE=k-@@yeS;E_X_lxS}Ty`TY^BOK$8P14NOSqgrL%HyFlpco6$O z@mazX$;0e!U@P6g$}m;_0&+gP9PZ(hz03xL0B9C?rX=rui=aUj2-`4&Vx4|7Xsp}I zeS7QkX<8J;w2e?a`^cVw0Qn=NG5S0G?HqtQ62@xb@9G4hbR*f&aSKj=6`z z^wINqC`r7ciFq*J75<`hMo#ymw{Z21s@Q%-@<4XV=Hh_jnULwm_CV*E^N*)rSMTAx z@@UmXbQojPcX8By9RjKgA#ie+$gs}q16t!OcanoZl{9xs}7La05_WeGYbtt4-G@t5gQ077HpQ#>bpG z1FO<@I4yv9Bpeu4+x0lH0;xeeHeGFuwJb=oQ=R*0r3gQIb^bs*tKM?)Lo_-rFW8cC z^o8t2Syl2k?PYfFQSmRyR1Hh+;ps_K*7(!)?jEb-Z)ZYKN_nJ`tVvW)LzJLQWqs#g z-!8!I^xW%S#V}fp>m(qvg6vQ_$UZc#CvD^whO;P=ox3S>;qd86J}jkscqRS8K)A_gt=ll zdZPh7>E8?1k?*dd6190!0`Hyj{eS~V%ehc-eqZnyV@=BMARWfk%<8}n#;Q!dHzd46 z97nM@ghR(VuwL$a8>)a#+X0gNQ*Os0*r4zGAe6hG_W)BP@;i9392AW?>tOH4PgW>_ zt5XSYg{jq8kjNF)Le!|B-1&j5{s5b^SMqV};mqEcmQ?_EMfb&Z8$+nNKq$f)#{UMS zCYvoc?g*NYU`plxC&^B}MTHO7e1O9c_$LHj(l5Pi$s7qTNK^;&Gv^Y?!%s5FxNQN4 zpaP78USKnuj22;Rh^VUtlFqVt9~$8(HL*%k9^x@PQ;U|E6F+@(7JI*RQneF&*o>B1 zqGP__YCU7#Pdwgl;DOh1IJvuSmN*DM;J~aIH)`Q*_N3>h7Cvj2HC=`#3#EO5ZPym9 z@gc`Z0)j-vtXvS6oUhero)ZjG|FI+$=n!;UmZ`lvAJ=L>a{pc6i;FZ@rR~9+h~Ed` z=&iYv*oJP9^)3Hx_wT##h~2y7mE*e`@4jk^|6G|CA z9LQ(-!d69Q5B-TzYCWl&lH6O<-9c1x$#2a#^6Y0Dok`Hel`}Yw+I}$4`J(XgT{bW1zsPdJw;)ZExSjAeQJzll`M5(w!xZu##M}n?3;*NeKN@>4xgP5ah?#~C8E^v;_#ASGM*{h%+rNBgV|CLR~7759{Xqfoi-`n*$W)w--b(#7qUu%$7&f#5@b zV2~UtVsg77;h@%(KBo9U4oPZcYMGheUgj&m6fL1673Zyx46FKKpn zstk>2oUEQP6FYc5(Q8NePfGf}el!+2;?S@HNGXCONIdynSVpTrmHI@=_I6>0FPStz zpnhmFvXzW_-ke@(n|!Ccu$0Fn4KUWhFb`0Q&>nJF=MqI2g2dodgJS!oT#P(DD@dV< z(~`?WW5om7BK)tTEzT&-B6RhUaHpl-_eZE2m|lT9fYv^BD}B^@V-17O6UwvU?nUOR z=6^#cfVfc7Q20YOrFFhF;LZEcHGD6E`}?<7Z_ed0nex)q9G}(7h6HpwSBGBN`$(1B zsqu=ht)5}u`4t3_w!`-ic7uj?Raq|-?wHh<8zb9jEXagL9PpBPMYCCtgg9HtiX%V_ zk`&n#{IAY7mStMr{z=|nk&a_B8C_%w-Rs&5Z=Nb3TTs}#oO=dnKv0(dLfRSe{1{Bd z*nln1w<^V0GK9~Cv=j%h>_a|U%1bo|0o)Gj^<$%z^i&e=_6Gahghfe#w%jQ>_(H3; zqBtaiKYs@|S)nQll&fG`#~W?}gFU?HTp|a{;iE@nS-uE_$YHs7BNQ^hn>ZW!fibx2 zd&EM@dqg|SNVjtjrAOb|;7o~gwFYc_kR*VP?#G9w4nbIz%C)c>PQVZyKIZ6HH)&{! zfvy+)9jZvb4fuc?OuPog1V{bIZZF)tV9)D16(SgWVwk}zJbK{REhs)K96h=7ec&Ep z%cn^elj_6f0uDI&m)?@pPXnN%*1aDqqsP{S! z+2xbB*t}-ubGNnB@KI;UY>-d?}f22U}FhS~Kv4v@WfNZK161(5Z@t zuDKuWvY*#mh*qnXWp^voxoJrkEd?SEB2=e46z;e_Sv;2t*Z_vE$VE)jxHczqh}vHT zSe?r52=Vd<68PiQmOy1-67nAS8={TCu**DM8Z>MYoqa6-wz?mU^~A z5kGp(%vBP%RQ!t<$IUzGFCHsC)6H%T&q6p{zf~&aO`i~XrA7E=oZxGBZZAd!$HjtKyjA`;xNGwEH+AV8rTCRbB=tQJA%au)cCg zJ_M9^yn@Ov_h>C4)-T4&a-loN(#KrJ4|}_UUM3OVSkrDZPWcUaMKNvr6+M|0DL(zU z2iZQ<l!5e3 zCzzP#K%qfe%pNFLqN2!ehUGnMm*dT};wjBZvNXroX$zdpq{3mllKs=Y-j7vL7@F6) zX#5HqOz)n2%)SXBiAL)Lfw$aQJN#`MJKL7KAM#Dt+28_d&QhLUY2X(*aN9`PF2aIR z3~-Y7!Q9zBhX&A8J&>AxFn2nJ?T%7TP1*iQTr9Qj5dM?=5@&YSHm1Cch2EprO6(a`2b*JOn0!URc@W<^KFzZkqbUyg&K`@QvaWg3u<^ulP;A;*u9_nAK)#mUZG<%g($0uZoS;n-DE7#Ynd<0i9)J0&H{>zri97M{f4|awvE4 zL?83Aq59$hjvxnq($lb$;$u)+@sl?*N5PgMS8oqT-h3fC+qk8m`2hxX-MR3#C10>w zOJ+&%u4!MhcHha+=6|p@e3@xI0j^(*@*&Jl4d6+5(CPbfV^y;5#M-LqMjXrM9~4ws zbsR=Jw%=J7t1Ee6&7mjtg?1&tzTKeb@^tf!LhZX4hQg80s#gUMt-mi_mvj+?aTj>F z>0)9&On>GJX~R7I;bblQ9cxMHVf^D21zL1ZL%imnCaEf5FuQO1HWH4ZM}$7tZDj-@ zZWQtYYh%~(?xST{$--evr{RF3{G#>L%-|d zvBN!BLmUMcIJ=)ubR(T~oTbGR~gY}>P(Lq?^H_AL8 z=DqOe#tA{J3=qxpz*aj+{EDUUt~TxODwbq73o_+F!#^s^ZnO&)>Bv_+F0gjweD1~r zcv(R_b`tnYydkQG;K>O(f9c!Yyv}M5=etnCV48{5yN7=gBTBOtW18<_50D@Y@!-TG zCJEABF7kvNS_O(89`_$kZO1E#s}{6EAi?|d?xGuYO95#Md00yYbT+J<7=cnS zhSUtfd>*rw5}*{7pX8#+3Q=$#S0x5T8Ay^!KDFPQ$;j0)BM@ESvVX`iMU)M8#b`5{ z+Ib@YDx-6g8!^351!7Zc%qMlEz5;kmV#Cx5k~Mh?RtLJKT6ddA1DIw~i0#xm@ zf?)`Lb^Ilg2uc&kPhqi628cR^+_#J{$`Ez22Y5DgNNd0_|K3MdT$owOpRVd~juX0f zEMGXv9s^uPfn22*5+bZ5mqf<09KbmWL+RwxO+I4)KV#2Rl1pjLJ<{Z~;6`KEhI;$) zl9y_fw2XsF#dJ>$-GWM&eJSX=*eK3la-)=%#+t86lyK6OZnUNa80m-s^A25NjcW(_ebP`;dy|sU$CBo}wERc4#Eb*|flN1rJ z^GJl-$ zq+r)GiK`UoZ)DRVCet|Fm%w%qK@dlEP5>k;LqP@9D}IMwcqm|ee)Dbl(A5-@aK^5g zpoINQOj3v4D>wry6}SU$x53`SDdNP;3SAJ#*ulVq#2esYM-h!-$>p-#muF5gfTVH= z_k+_@X+b42d0lzBA5<(y0U^_;5cL;Wda0E~6U;6;^?h!z_sn{|*{^m_T- ztbN)-@hF3tL44Q&uV)*#9pQX4Z*KSLt@wIm0lm*{%Uz?0&=R&kI~hNzr96)B#7v~r zW1#l;Lh)q3s_RWD>-mz5r7GrVP2M+?kj>!>yjq%|jmy)=Yr`8<-`3zT&EF`Q1i&;# z-y}zRY^K&E3lZ$~RV1#e7WMi)mAad>59?X$2IOYl)-ZFCz8DfD>4+b+3Gck*~u#1&P6?4 z=aN;43L2)i8>YstxmDG!i6_dRv_BpHn-@H>Qo)f^f^nNs=x&K1RN4P1iE(ZD z$cm76kX%;2;N0Q{vJT;U(?eq(B1MW^y>M2fbsjG?j1Fq7UzU{#7IO>S8O6Li`osi) z+MV{(Rrbtunjb!mxvjq?M_~+V2E7p-mlZSYYMIEnvDQkzRcFcB_Vs<$Iky0QRW?$G zC}Lb-+CUMa@ll=h*-5k9-kwsBS?dy|D`s$&RGgrBB~G#&cZ$ab68R;QigN2QAP+Bc zD>La068k!U_8iRjl6vho0Qz48QYej_Q7^LUa_LaT7|${}BgrI)W<#D(D%q%4ggn zcnjtF=ik99oTD5_JERlxw@hfZu;&H+22TRRJgF#is787T$I`pMpGqxYuXW>zr;=2f zYg&m;(O$+c)K9kyt)t>sL8%;7KfOJA&kj$}Gat&X(7($q{khY_SIs=|*SYae8Jqxi zKaxY3V2?ctLv{}_07+pnhSl8z73BJ{^$!8>0#M544X3*n5T}s&D3{zcOzsMNBM(*E z(San#3F|QqT(ZyoDg+D#>o>?ZzJsNq=r>Ol+hEumawpagT7^Meu+v`~qD?<f_-z z0*-JQ@#;Ax3Ao5yjQ72jRPd(dxG@TTqPUh-ll78vc2O~Z&bb0diLf2xT)80q7s@_O zv*pM}c~F9M7LmVv9QC^M^7AGd+O|ozzo>;PM+u}JC;-?h;I@rG>8_!}WfjF8@q+W* zPyU8}2j@!r(Jp#Rpg5l@DuMtJkaGEblp14O4_=j<#LXru;=i@X?OgqxOhaqy|7}K2 zXthKS6==pp+l3u+X#M^{go`n8UIY(Jouj<)$WR%X_qHi)gIdT#Y`)(?^G5JT2DSZQ zV_psuF6&)Y=JNRvI%|!u;|Wq-X~O8 z>`*USd-$fQ_d9-`P7c9PV(=>>xnep6=o@)|UZv4jyNNf>*A+ug&hDJ|O)~EQBZ3sq zxvZt6I8VD8aL9vHwUIJqQXX0)TFGM%D}3jk&gbL?A4-la_(8O^bp2GZ-|Ww=w%VAl zi01g^Tb>a$k-Qo*GtS%TSbY9IpZVsymWy z47bXIbnnXJDg#*3Q=r5BhBBHPw9R?|>dF!uw}RCoI+5vKx?D7mGKh_5FW3R10ej zrezDorL4($4};h+t=mOEFE2-0v5`;X+}F~94p++n2>rLDR)<%dIo=Yx(Ha%dHA~>^eq9ylE6WZ?f;RzG(S}mkuwrpE#%rmp% zaT^EoZOvxHBFw1pE_jr~yJ%1PoS|9P5ie&ZsDQU~3ZfP~5 zAKuBk$elyOmr5F@Obk~}K!B2L?omUy+)T?4MTQH*mh!tI&)jwMu`=`?Nw=(I}670%t8Xr=~((EklfcrEg zbaY?gDJYVT$ruBr(R?ZE1mk!t@%SlOx|KMEC7C4GeSEl;ELbgedtDT)=7?PIMgY@z zcYY4l`x3d&p?0xzjgp6xf~PThgKJ2Am-mYts1kFby7SeRm1`2e z_xjPR(!A(NHvJ9S1^FAV+TiACV(tnG#LAhBpm0B#PUP`lq%Fn2<2*TCI&}cDRUmbO zUve*8F9pK3iMj`oM~GN<^#a-~g$?)u%hnA@ZQ1RcJO+m&A@O+L+bN%w4zrBq9~WfX z3Sv&WxHT)g_G`zy=HbE%{k5A%9jY>8Ip!#*n<@+aAU3pTSMv2$9k)*01{g;z%(29C zy#083FOAVApt3Y$J_H-0P^KHb{d7{mt2O38%dX2Ij8xo=ZtS0FXzmcjTH%g7sWDS% zJkz9kMrLja+H!6d$F7!{1Y|1V=nNz25(Qyc5NsS zX01^f!b=isW=cdfQk=B@< zW00I~`x{g5Z+c0lag48CtS^Y>c&pUvu7TrdwzCwyg<093NEFpO^W{(FM>MnNcb0`F zz|4l#{>XB^`p1IHN?W87@-}jMHK!ad4Ax>pXd5-p@{w7FjAnjOlz!F*|1Vc@^MDby zjMwZ)TEsX?>aNbA`rfH0dOu8UymViZyP5&9lTK@ivTq(%$zoj(tcu=wQRyx%u<2>5 z!THZdnLI|G>!3XZ15@fagq=7j2e&XtFw7%+r6KVK;~L~KAq7wP$@1(g2G$LrNyyv- z6f}@4P<}7@+oZy5;}TktA_Osy0VNF+BHcPT$Tu1xnuW6O2@VCf8_E;0?7#Yav;Mx} zUO$Gse+hEnkj^kLi;G>Unzo&|$rzVJE~0$3N^ZAln-6vyLBOkSAUPv-W5a;-;(99hqn)LE{6IfVDJBE3b=qeAf@z9z0@;Ctl zHLuo!b#fH(#94jAIW?tLQGyh}0tzDpG|R3?GpH89T*-ltd?G3I_$Q^>5Xtt11G;qbJGBh98XYi z{8eDvMtGfYGx{b5iv+2y*SEry_*E}G1yGnrsXT0D#OrAQaFOaaAo?KKy+e9%m)5;z zxN^fu29&n=T$wqFWHa(xIyh?1&3?p-0`st1FXEAW=jsLV58;noYchbul?{i@+z`1` z$J-Hnw2_)ym=WnL2kxdE(c6*`-TO?KSmRtN188z+h? z)=YPOwE=f$i)oI-bu&iXG4e*>DfoJ6_$iEF_x{v@xSQGdeZ|O@BsOxuXgB1n|3-IH zI^unz#(t0QulX+-f*nB`(>|(phXv`*$NWqIJ{bS;lE44*oro`~QbgO848{zH2=XVo zyHfqfc2!#E$%O_tMq8%m1>AEZT0!5TwrURV#5>a6}0e)0)l z8mhSN)XBLrWN$om94BzXcVTVmB#OEZte@f>Bl|##XdtVm|{AYGz6ai zci(ODIWMjKr7Tdt5v0FUT)t9r^<@KB`T?AA53)=CVFp7^5Ql9j77~=ZL z1eox`RqKBAu6`Ge8OJtK^t`)E0iVu^I`ya1{~VU#FQ$jzT~^YgxC zn3n1+`S#`YZ^l{S)NFLiKbfo)VvJ&-3xN8BVr9?wcNWk9sknZbwBXuq*Ki8_28?JF z$~K&ZXY?HyXs!58ymMFx^TI<)weLPs1&B!$Mcb&R(DI^G>6y7TyB3|DEg#uu5>nL`2UVbGBcWy#?__l?g z#hHG`E%2rd$a*dOu1*$&_5f{k537G;n@KY+*9P;fR{pG4K@NbTXL;{Ef+v?u#$k)2E_MJR!j`Pl_oLp8O77sN&mcL6{y8q0QSe|Z?^?ymH4JgSQbSHmz zAA*is78Pf7I70u5SS9Xsh?2tuP0ofMN$Zx(h98yB?NhQ967Fdgg5?l~^B+WMzDzXp z*ZTj~^o6p;7e`IX;4hL~WNg+}SM8tqu7T!uy!_21f_Su|SO>mP5pAf2(BP%W_)NTd z++c@pC26sE_iPw9#H&xUG1Q$|>svA11u5uzah?n$P3xJ!r}FPUc2yRhCbc4ci+kT4 z^nw$|zf23*x6bEJuZjg)mn8#fx~d>1&6uk1|I_#(Cjv6BAA5wiMjD+5X-n&v*53eE!d$HnN*$ zt;rs6z7mYEJB&Jve*k11p5d+{)n<%HMqZ23v~fgX%QN$V)9mD$)NM(w3i&cwA-)@y z(-CDcHl5(4oSw6L`asB&^Da_Rm&P@fgstL(!H8ciVc=cvlp|9q#*fEkIp|Si&GrnL ze34Kc!?fq5KJWv(nDXC=8)MOPMF#oOI|j8A6&;tvP1#O3albOP_gn>Z?neExqk@c& zKEdWAj~PAY^o^&D>dN0Z`%)e-J7*e49s$2Jbzku^b*?-|?vktgdp%E8>*5<72bMdl zO@cozdWn@#i6J(U8zUTGyJEW&CczuXgo2w|Ono-AF^ zwA5tKHcK}hxap~?2dw!olf8_SbzGWUXA4F>fa9;UhZZF;bD7B-$E&IW3yz-8^aNJ9 zvA+I;&)6Ck_5XXX5}#_esGnzXb8D?A7wLSO7|^{Sn*8xnC<3bXbKlVGFFsrHCL8r^ zd~Zt&J<+(y!c2`wB<(vNo#C_yN?s6#jwW?A_}-oMwX`7bo&GM-;Tu>K>pEo%9)2LlCrVHA{ppSIHPF6z3X<6W8_d9(n;R^1c;fx!F7fg*`^wzfT&Xp?yHXovHn!ANkEsVQ)j+hBf8a;m7{ViR%F0%?65<~N8LOLcOtf%3G{$$!0 zdYd0}?`wH+E3y9zNf$5Qc8lS$t}&9sugXhfJ6HD_7L6{5tRV3La{VpkCjgaujjx1t zU3SmZTi2a@0L7iL`5?w0-C||>ee1!o$6>)#g*As@4XmWK>p63PB?uuAwnw5ebmC?Y z5ZlrI>OPDcci3uN6lYX-dwE421S!;(+O1RWVYg5%$Y z0A1qD$IZ;@jlOE$Th(d{c4TzV0bTs6mAwRm_sf*hs7kUeQ*?qi;8F=ao>#ZjUBf`5 zzR>kJEwXQ^0a&$KhgI(`YU+PY?m!KZdS7@3F*$=2P0fyxFBTA%5ND=ozp4zHc z?29j!KeWyV?L6XuqRG59SVLDxpav<&{sdcHYZA z8Zbqk&b$*##9F|?&C_uxOJM%KX12n&z~!5#6NQN2+d$AWUE~Pc_yHl{ZND7pYs?%! zWI|JX)og!j4WN7T%g(r$mZC-PZ1#?x!KCj(p-{o=Y5Q4OGj?i2Gm9HQt3vQ-2r+EtX)nw1-V7t z=#eY$_Cuvey_npISmyEe6pc7vHE=trdDV--LX$6k(66oBTH2LODb(KwCo7Cb$uUC` zN?QYk`JAvB^6-*zt+i!82(LiK3ua*79AO~cQUju?;Im;|#}_+AgkbK;VSqL$UKZWI z7X`$;(!A+i?2CUBxV%;ySVA;r9ER)O73ym0e(=7b%u#$>6a(R`Pdu}}URt#M4t?r5Z2p3)rzb@CeIcMw8^|O!}+I^6Z+Fo5w?=jZr zD{u8F4oJwV^a&)%D}Z*SdoF4(yEJj)Gd1OF9_a_20?W5>pn4FxR1|{~S(Lt;TcC$6X&_>BQ$k#6idrD@ROcCjt0(j2@rj1B2o@m}rNKz*Qh6iJg^O_b}w^jZ=2Bdm!$%{?g~2Ka$3G zYOQ2L6z@~gz-viM)S$3bXU}b&mQH(57-~nOPF#}|#Zqlj6vRmGXXb9o@C0vChUyfI zC^(3*l3qW{|ASiCNq&Cb;89oJSZcWUZ=~s&6Hc-cQEY`HC023`^X%NAX>u3m$(};W z29CNyp|^3ncj#E&6xWvYzc`am;|JPf<&Pmhw1@ODhXL;$pRe;)8u4rl{KM*CQp%{j zX-;Z_#w9}*_vkBB3ULqoDhvchIdemco4Q8kG3&xp!M_NX0by^%z|H*!gwcYK)|L)92nAvHfM6UpiTALYvtO!tQ23Y|y@qaMEd%|zGK@6d>idVbd@S&PD+gTX zV?1#Xx&m26mJ?Ou`Qrz{MkH-KTERA;$q_nqDj{@GC z!Ugf1s0}z%n)*THyPcoxvtMg>IR8s$$4ud;?l0Xa;-kYi013e7PvYFtySSV2S5MkL zkW|^?yq=-Mf6@bHzz32az<6QGe!Z;of=x0hSnvKoZtep$Y6)BbWOZOrceilt$^PZw8d@na4G4d1)i92j@Rv z-zLWV)*@AFjl*>p^l&K#AaDsw^=mi?qrBnCAy<`xhyZs3j@|?@nu7jAt}hCF9;2W$ zs_5_-4M>Lj1HAQ@K01Z&9nX-CJj~~Y5y5P)ann5=wk zxr^)0vWJsQC>GCy3R>aipf#=j3g(Nd@}B~q{^WKkmAR^mf41bnt&Y(C?E_Ao)4z(% z3@Vh=3?36*Iola}#4WeSUP!VvSj_FgzL@%s51BeKHE5mtj^L4w>Hon^!gj~FGHB4sv|AEWX;?A%OMFswedJ?0`Gio$hNwn((SvkpULd+FeKeKH zbMT=UWHi&%9B|F`8ejs0;mcaE{is~!cob$T%TwkHmX#cE6!%Tn{=p~vulY;1!@)+- zdme%*lbeRZ!GQa$*^I*d?JdqglH<9-GJbmyJ553`tiLD04VwJ-N3o>l}L@Wln=Ylad)-eVxWrw4Rw=}KZN(4kP z3dqsa5wF7(bxCHYiurU2j&f-R?amZFVG38YC>#fUCGQ^67_5(H;yw`MjVPbXPI_gz z6{p9y|5O2m-^*o}l?*iUv@@d)O*clJ)_gpm4y66xdG#1)w@UJ#F(r5S87nJGg#r!d6`DIr<(Iz7TkNiDoz2FWy{P?ggMOS8WLlV9$mgVg3=t8rg zl=0ZZ)X`(PEj8*oU&y4DHuYHXJ738W<&)Witi~6D_!}0lBW_Tu*p18zhu2Y^WAeK0 zVjaF0H)VFEAwg|!^^2PiCP_=G*j@u&|5#VYVkO1fs=Lg%r7KY)`ORhwQu3|vAMG}I zk9nU~V-XW6VB=#O#sHin>^tR10cjpFo!jPj?vh!d#xSp#kmr;@qXSXpeydXH_krm> zL&P@y|1uCTg|Eu_^S?4^%3p1^L@U(O>tD8TQaf#uN37R%g*1WN6p8l6F2S1(h7ybj zV*(9pbZom2Uh*~CmcQp-omBOrIVg|=KYxlT=JzFx)bJ#`4W!#i2msQbNA#&qKZJz; zj9V>W#)sGN;Dpc0HdV<&3hD!3440&uytLwvb)v;42j>oe;;OdgGIa>$nI96W@;eqg zNj4Sf@v85;bbUhX{xee^R;G?K1hW|T7Li;$*)KNM_p3*-dg3{3syWY1NrM;IY=706 z8pA?ZrFsMLxtLs(xhx3|sATL@&C7%O>R9uofP$n%b>ti;(&4@(L}UShBBm*Pl>* zMd&J{-$CI}7j>Y1jJS0+o#skV>0x)8h7QMi7NOttSUEjC(tq{I$LAI8muE$;MzayC zHj-TWuqaISqJ^tEf76TP)|U*&pr>SiU3$;&4!6QLtvW+8v6XYIu}khUmc)PQrYXlomz*;`gFWpm&sJ(_Lc8VKV(R@~BG391DrOf8+W zvwkBQU6@#Lvm=|G;MM!Xq1sII?XSThGl~!D7IQBCshe+*$Fgv!j2z6H z&iuV~$-#q9pO7Y_))^2BDH4r87HS#f;@xJX9WHkAaMuE-L!0eSwo8zAwuKgkuGazz z{DCT+*nD9$Fk!j})PPteximjo!Jb;l2g>!s+Av(hYM}QSI@(aW2msDNXd9wDJpsxX zP1x}>N*MfhVfD8fAr|n}LOdZel!^a9C>I8r0!o zEgSM^GJ%?@aklyik+T`TRa_6VpIzyx-MC(oAUPbdA*rtW@ znt_wRv0YJ4)`S(xi&Qcc zIv*!EtwJ46@xLWADV1$ikPbbn^?L88*X_2Kvi)$=q2%n$E!7G652MoXir$6V-tbf0 zQ*nw7oT_pfhba}bHqOSLN7?D`h1gHiusy?JKTYl{&0V#pe4;`p+nSK8p)J~s*8z7i ze1-jC{5RHxq>r%}yvbF8fm~Vum5|z+cRm+CdU%5RW0UlfLa)ci3XF8m(;aZo!+9eY zNZXyNaHFn{q7QqFc6c1mlVSqE9n-TY|Y~w*Mg=r2(dJmtP(jNm6$?Pz`soviNAPq zl;X76N|G=QiH|T8CS~&hB*kDtd03qo{t%@^iV(ZqBm|-mYfE*`cJS0==J%6W4}?1i zwA}c4`!jW@0vQRp`w}AD&5BnK4;{c3GfM?gC)@LJ?)}Q9r`HOMbm&}w%CGort+PIh zunnU)e7SxtPA}3+kYJ{`gPj1&sml4Za|U)!5~3s!;V!uk#nSQ(q{XmDr$!E_Rqkq` zU1Ag|zn_Z_34x1aJtQ<_iEA?-yGL(xcAo}Y+V;Ym)Cz-4?r9`5Hm}wlGW8r+Qg5sZ zT-m)Sx-r_|ySI5czQiJ;pnQjHq&_`ax_t5OcngRJLtYO{oC=BGDLGC%okY>uDeieu zd?mRgU`tMFos;W(@>p>hq`q!Qyc~I56vGz0rI9BCM7~-I7REE#(W!NM1PF;&*5=yM zFIfk9ke6`*8b5-8r(o}>>~3@oOseCMGYamdKCW%z&M=qXE9!R_QcP2GpE=Tf&_i88 zW|5De5ls3Tg>%x<_4=~HcE`gPZv>&TjEf9&v=HgmXk2Ia*$ZDm;g|WQ7p#a0$nB!FEC?gk zR;0leLsRMi&QRD@%Kx?Wqk78+DRdqj0YMDhkevzT)e zA3Jj`^`mONt~K?p%jIQ$Q{efqU2vjY5sq#UR|Ej$pcS<&P?ptsu?eLTQytY-Ygpjo zNziKOmKKkqHU2axy|>c&Z1b3h?m>O0A3jTI+GMrpjq<|1Q-!O~@i9X5e-DxK9eTWF zVtmCm8d)FHhJw_erKk*q&R)!EZhB(BK4e3}3J3}3~w$xQYJRsdWbu+lT z4dC28$4>drZvbawYOv~yQ>D3w&g)%cK@3lWzZ$(gVQc2TITue{zkYmFSuB=dVG;k2 zS{$RpTf-#A)!k1(u*wl1Ow5*aHOCtDPTb_}E%(nvw=uHy$PM{j)8RDtTha_xtj4Y? z5>Ig)2xn{CHx1Jdv%AMLwuy-x0ltKuI77J`V`x4h^t`|X5< zSjY)weB2nQ*0&1Fnn^(f*Ae^GP)+ihttmbY;_c=Y`nb%Lqf%wimQx4jj{rNSSR^8k z5ELD5nAPq9;wBjY#oCy03ip%eNuUZJnrYL!YA`gh6X*TeXg$x6liS+Zu%N|LTMU-g z%%7LR-a5^aAKjT=>Bs-acnZ5V+>Dz&OG`4TdYe`y6EX$&*4ni_w264&>x2)U0o z5(t{kIHe8wcUuUWNyyd0Ih5wV&0i=SySaLm8kG5>jQsRvlyv3Nz&UGGC;FS z+Ry_Ur+geX`q~Mc0<$?{PUEHp(Lns(C7sE0lI5XHZ7ER{WoGwjv|i@RLoSjkfM|1o z+a*vXkl_=;%Hf&js<>uL^bH%M2I z!An7yVF&~}E>#BR6yJC_I_t_nRtYy;bIjxAPd{UVWCGcP3k{v9*;^|~6T*-I1T`i7 zlD2SOlKWbpKSPC>e|BPH%y>R%D2ShAm^)F(rP_2aQc;yohPJ*GYCkj{_tcHS?_PYG zvP$5h9eJ6|kfo)U8l`*pwsD52jq|$Mzku#kNlS%aj%~7+jWkS^SkN^igmJhRfHhIF z@%?8+!AmrlfN2nBr!b69=~^-D4H{HBe)#eLtQ@gf`CgPzlNN%=N;qobO}qtaQ3Wq7 zDRG#S%I|#(LNp@3Whd9O(jx{Y1MQ!N$Y5P;LuAJvZM_D;dIhrD57OJ=zsQj*dlb>s zA1t82u~a3 zRYGv(YIML!;cHz6D!#Sw6BZO^4*M#%^LQ`1?!jSJbPZuQHd4x4&d-W+ zWY31#tRalrLhzSA0nb;>(wucnPBr_ zW=-n6+wHAF5!_28B$4tQsYXMz>Dy#}Pv?#dDfH~qKFbi#XtBD~qi>8GtRVSK9kVZQ!Hiwh3D9Tv!$5dtYS0%;@FJ2%7= zJhaUX>SRThlZgMKM`866_6J);WJp7^mO<4KI#6x zkHz_ipUIYqVG+s5-qV>1*tzRstqjJw2)?+{EKhS|*|&f0h=0Oz{iacPVZ{9#OgC{u zK5%37&B506x4_Z^39kI0rSw!X4GuYiIg+dtI%F49Li(e&zJ~sWrR2&)8_b&k{Jugm z#nZZ?7p=EmEJjbW<$*LBs!)En7YC2SElA??500e5pE&b4DW&u1@S7wTaYb%wOUe)- zC^rcwGcSnCFNa&sLGSo6Q7yF{^_<-$ls|skq#g6{M0Hs8<>rIW2O_PMxq|-?fJU> zO%W-*$b#D@eh_@pWQ{rpRMd1$@+P@($H_dis-MC}rRZ>iwKSeB*ff*KY770!}qf$to>Qc&&~=V^iY)7z?j z!u?NQJXAw(^S%^*)+`wP7;~artJUMrn>k)!l-m)Q^M%%F%tBGrd7Kq8S>)7B zH|{ycKnqPQaZ-Xb?fh~w*d!y_uE?0;CpmpyYw#XqmRPCBW#3YoQa~`Q|zqhDm+>Rl#hN#YgI=ZCEys7aKBw_yeH>uKf?fzNZ)iWS=bW z+U!|wxCZMT@5}1(c0_Eb&_fzBlD( zkbXHQ;Z4)EYYE{y&KdVJ@=eJf+#e9Cwlr=j1z9QD%51Zyj!l2+@(0x7K^DhKS6(|u z_n&nr`q!m|$;-8{Y!F}lB1AR#?$J6u!7ojLSNbP0uFCE+SmcGxYP6?^y$CS<{W#yN zpf5UuaKb|;S{9zQb(xAy*?;$TX^-q=Gv@ z)*WM-?YQu(Z@M%^GT}bjMHl2^5H#Ne0~RrVzEuvq)ZEvYHG$RXh*Gqy8?&uFEQ=d> z@=KD0XYlEd=QT&lH!aDL@SqX?pUWouV1p?i=@OzCa*(C6MZBsWL0nY=)D4`4%qa?6 zlg4ZmfY^rFc#MKc`gW>ZVxQC3V{WF4Tt4yD8$#41TuaySO_bAKoT9;T#LiH2GCG2K z=%S6VdJWT+$i&T9MD(S|tG%I)h<};=D%skX)Dy!{Rh9F`$*!pHwz@ndu`x#yr=5ZY z?dnZ~$Db+sKSs4dgYTm6qD?prIqg(Vmv9lg$2(%*KZs|}sfn*^+C{L@20RNr9NCyr zbGaQFpinaVd~DtF`s~+T)5g&Y%tUSIZ#U$HTB(ulb|A8S=3vlHD)pgUSVP03e#QMr zqtwdV3j-k&@BiYpBFckq-=+@JX-dnD`Lpupj%(prVO>_Uq3eNr26Hz{HRW%GeYuik z5oLB}_B)ay{*PHR18$r=B4yrg{eHpA0t2=^6Z^cpctilSU&-IF=D+^ROuecPy9P<) zvx*1P+yJg6*kO0!rlj|kNq2i|5JgNihfV!;spzvQfBDn9c7yrZeI_J4A2*44Oy3-j z&Tlz|^FIU;FzUgBmi$>=Q2{l|x;IN^h{dg#S}m>FBhzv@UhmypC8g2n$coVA6G(NG z|MM}l!tzDT*ZHFPBC_4PL2DO7Q37Q~fa%&}Amtq_SY&zp#u|^^DRr5@u_|W2(2|x* zvg6$1aEm6VcqR=NVX?cB>RFh71wT39`w@blirCsHu$1)SMy_3jT8Ur87&x~&^={1T zb$_UlL?jzI+1fr%6}4PzJI|2yhV6ZnP4`!2eB|tRk1o*Yi+lGC0>a-UX9=u;M9&ra zQLp8ja`lXRO|=Ru`78^R9ij|Gj5i8zb)_=kdVj_f2{wPAM^Q+ji%-~+(NoklXG5Ns zalx>Q(7|xK&mI73o_SN`8YSnUM5@Y@nc2#OT#+vYXUST}Us|kFJH9PDE|A3ha=p(e z=Mq`#-t4`$9}DuE23l+wGmY}U#ReCqs!l(PA&&OC9R{Nep6^)lUHxG9<(;MOv9S>i z+9XtdAmo6Al$$SF#n$}RaMLq%ot>)A^r=ffXQs7IuB>IlI4WLH%sv)Xggfb({*9Hbemm zGnb?a;1Kx12&Qx-z9OqMW9-eRU5SLtX}@GRR+I7uqiM#((T=f#&RrF=W~X9!S5yAR zFR%I!{?{!A12hx~{vKGTAz-FflQ*Cq{FAi3UZ%QE4!xwftl>c{70~nbVCO}zx|F~} zZp}~1bgstQakuvS2?YRwJW`HIiGsj^x$f6o6*`s-X8pVP$F7D&HzZf>4gti=N0YRj zY0l?C-^1wQ4_L-RFG#!ENU^MC9ey)NI3|bkG4D3&X!y1WvVa0?B`*Av%tQB`#U*m! zsU~g@Y_X^7u_U4Tth->psgkf6d&IEt5QBSA`=GZNhy_?}c!;rnTt|Ag0(9g@a*+%y zjx9wk*^d%J*HhL%U&L9V{`>Vs6PO>$w-UgBK}#Z0<nd<> zyu*FFn3vmr;1#X3Ax7Kz&S4>tNwzJ3an+$d(%^yDRa2wXS1o+1C}8Rk`*tM$qJkDd z4B%)LrDsLnJ!yhq+sEG+dDze8EAYFIkO@isTTXJDlh2cTz0Yc7Z&J*SlK^mZy8Xnd zcX~VIj9aBmJX(5!R<;bL>=+#-?>*nEW51bFoYQwZ((roLK5^NWpVrD&yJ&JOt>B=) zFU8iNpG~SSqp!H{wI!l+58ig}3y+jn(~g|Fl((n{T*HjrzJlN-fwY%ZbbU5IZM7A>bcf!I_K6c9)P<8{JGMVdN5Bf7 z;(q54>=hSCb4wQ5at&X-^)I;2?rTWHa;(>P2=3Hm3o--~j-d0=ckDy!`>K^dYC_7s zlu+AWaicw5qg=M0q3|zh1!G1(91R>!#2l!N!HRwzTJxX<=vH1T#ce8WL-1!L1b&*c z>TE~O5f4=KHwV}5Z35omD`^^5kjGWCbO)+5AL{R8Zp!F$%jbKl5sj`>*@~iI;q(gr zcCS2b%lr^jqHAt_N4e%Hjks`(;?>l<8aTHEZ# z1ydu;z>7chb*4~tP3!P)Z)a5JK~IW&6kJ)3w&#K*FHImCHN2fuLWA1RlXltHyIA!k ztfrk3<4eMQu{vSi=A6TWDN3#e{1IICl+91S2-swL_=GDa659k#yf)jJChe;jHfCcT zvsi6VaBJkj$vjCGSsiDmBQIFXX#A;yzioM2(+Bz(bk@~K&R^Etb7GOEmAP;5@e%dj z$5A?l@1Uimq5?%O`PZQHbpFts`E+0hE2gpFsXkunl5fnde88}NKyGPjAlN(VQA)g!RTay4 z+V)MsY|Q2ByrA6o;h>@cPoh~6+8iDH^hFSVInn}yRva;m_X~d&H8gqtWh7JU9x)bw zilGz16mr#kAN8Pi4eCs#TJL(Q2=($4hzj~n64$QwQ-r0ALQH|x-z?0yiL@Wb^4~riQ=sW~; zYa;ORLSDwb5S*eoEo#DK>8)Wbc|mte1-5!j;%Lr=l{y>@*;8S7%xa#WDv*OAgH!_QDu`i@B4aHjh=@BE&_w@J@S=S9s|E!l^UFJvL&bD={LpEFqS5Dn7y{F`&1;T6T*pQq67k6vOxr3xI*MDgUWKAv zbO0QsAP86H-;6@(>o8$79|rz`7;A3W?vp0oAL*Zg3Knv|e6tnbR4a*LAojuo$+KZ+ z#J;eYO_qOcMhjt90M2&1UA-`9c zSL3B-g}Jdcn9Df~}>bX%?VTb&>mi)u+Zsx()fsi?L7wpSW~C(gZKSj_J1{IO2T zEJU_3So~sFj!RYLz*%Vc!+hjUjs&ZxBd=0kxpe=$#+g8+fEo=vSN%*kDuI^o^@Cb< zogDngN44mS=&9KKFS5l0>IV`hjp`A#poDmT?n$f9 z?@rR?cUeWW3Z=HHV@DGr;=l5j+(a~O79~I1EzlM95i{C$h0lk2x2|q_(sN}|Vt$rV zRgv3W#mFQh`~3gGP*1pmOaT$={DZV36|mPp{S7^q2)i23M58lh31+-T*qsB{pIb*Q zm<)d4$u(-?lVoxTr{qlaiNtU5tCH&T#q!s40Rm8S{;Q|SH*`u~&F3ecD=%IJ^~}u= zXR$czg;%n!A?bbI6YWv@syMDc(`h9hK#4BUhBKX}eBY1q%DX+~8>f0qTQH-7&va-} z9(sB_`e`OAPu_2SR#h|n%U?0lOESVBDd|uN*=WFQ6wXe<19|mv-tPLThG!_}dgdct zTd`AaldVzM;QU+LGgIJ`WJKV8Ta+`ms)`6Fi|t%9?Q#v>Q}6e8E85Se9{atIf4rZm z&wuyS__O`bjT*u(=00JFiNJee0@4m5q~&L~N#TyZW*d zip92?`T{DQ;Ok*)J1J%31&s5XuQy}D`HkZt=&j!g^55n(c;!R_O17VU2q74M82P98 zucnl}_U7?4>RqBX45h>(PS$?B`Nx8y0PxC41c_iwBtE=YFG)b!)|6rLNUa1w!JGD9 zi!%qxMnCcW5@Sp8o*B@xIu5JwQ=ub=&^uCeI@Nbo6r2#Uzwpq)BEBJ0W@d(=sJVbA zp$^7zCHcWqC!JT(1Tz&W5pZu7TkdX%=4QaQbG{(cuUPa2_~ma}kf{K*X+_~Na}a}( zLx<2awdQh_hG#Lo(%Pfw>wgLd8yuM@(y1Bmm=JacD=CDmg4Ha8 zHlCR&Vzn(Lo<%_%^QcR}N5-DAoSBuF}?tAzIvzBQ&A9ri#XH{$2F$ z)8n98(u?M|HfAA%t&|AfYtbH)#Hb0VAUP1l2z3a3SO6C}r6wRiE{VMfASjI#N%?f@ z;2(*2A@{4&&y06_ttD)jt3B}FM*TZA-L3yrK82(R79Q7VQWqi~R~@<@(;R6w0Oxm~ zt-5f`-I;Uk=smGB=NUMd-KAA}O*mwY)8w7%q#D`N_)>oUOu5tPcIPv#!fviL%H6E> zlCA+;rhljfl$lGNw{Bv1+^w_9KnsHR*cL?^`=Q1cCw+7t4hAoAX8J3XgMH*qt68K< zbbrLt_a?Z9U3+t@WT7#&($(^zwb8t|&VoMLvX-7{ocEGPJpPp7wCV=twD=h<&sWz- zfble{#pzbQ=b3_eQCBm#kQZGDi}% zIsR2YswGz&uB!Sd%>GjZqndc&v6|j^pjfDqxMgAOuGj*>px!2RelM^#XnaX(j~~^1 zTr|+(Ry;vC8wsv8mO!#Nkxb`bFH4VnRBvg5`g8GEMNjeR96$&QFzChw#WgT=y><<$Npm-_OqMRnv*Dn5%gsj|x7GX-37I)c-Xt zq7M#IaFEs8zZ@2n<)8jI^{CdEU6(glxYd>VphHu=JpkTYVwD>o{{E#E^*Z=Beu~yS zM$5%#{E7%xeK$eadi!hn`OA%1&wGip5Zy(BjHICtQQ-8qe3+ngU&y?_6VXNUPdmBQ z3ta8 zTJNV)BC?oB1dElrYNanO$_JW-eRS~e1}VN7iMUf4j2xN{ZDgrpBzZ;j!tSVZG-iPn zgXWgS;`Mv|{&s_t^JzH@_YUg>_ce4BP3j@1Z>>H7_`lPFwS$P4eU?|neVN)zL|eD{=R%td(GDFa zGje5%FzxFunwz1dc<>D!b*ZujMxS`-8}{R&sVas%vd+?g9UCRqw_3xO;xk3CsN;npqmles?dgzq85ScC$1~ zWwfHiOX1CY`(2~%`*u-@xT12bn`>hoO; zBrauO(dXlt_umR-!XUO3CFdz#v*5{Rbn;*B-&EvNmc}l^FjQnyX15b<`HXQ2uTy=m z9dR_|Ls-4-Vxb6$iq0>?7Uw>LTmK4xq=c$%Z36u;8IlJYlmIbpq}Uc7uoJx;g}0mX zSCuZ3rI(beyj`hJ1jLJi=`ot5jsmUL)}$A~Ya1OXv+i0rM%!V9ADT$x*rF)PWytM# zdRxJD54BGR;EQKecE8REs&X$;87uB5eHy2=S5ZDbfPKic-LA6>?IZmdz1daFXm5_6 zL9bHEVv7t@(UD1xVKYJC!SOZk0oNO(t zkA8^kUpXx|4ZWl4Laan`h|YQL&}K09ww9^<=<_C33x+JtduemlH)+yI}w0+RcJtojhv+#hIkYz>>i_f|V9}c^XFhSM( zzp#5UE>=A-O+dVeb(aHhS!Sk{KJxuux<1!%FZyI+l#1y*DvP)z%8XTs_8SZTX+lG; zm##??Yz)-du#9714>{E-Z>)d|fG{bmv-q2`d|N>JU=PLvE-l*ue3b_b_oMO&)k;(( znhM2U)zn*2{L3!7^6lOBlX=Bq*@XIm`$-#-3LMJsX(o7e5Zs!Mv$U}AJodk!idyN! z=&SAc8hmtt7dj^r#|3>(L@VW^#=jh@$wRkJY)|+72#jtpe%8JC%2sjXf=JXR!Qzwm z-`cQrPZ*BQCy6tKERHNEspGf&4@qT#?L^C&VG0sx+vb%u ztR@goxsKpyzsaf-QfUSsqSB|x!2x*A`j2!}#sUdPddoTO>YwPV)R(Rkz-9F4Bg4?_ z@U8iIG{c1e9d2{ac!periqD1_!WG6sIr1n9m24RKhW&=KoD|sW>|AV2LKh=Ts;OAr zNY0ZAoBQp__j80aolL(dc>gTq7RgUi#7C^Vbu*F%Nj@{@lKpR-ca40*W@w|R)PmDf znM*ll;i)tcB1WT5cJJf<4jh1nW^hTg#qw3&I9;}bpwxw%=DnY!#CSAi zmD%!=zL`~OQ;0|2BoY2>i1uso%3D1TcrVBC?Z&?l0p9clm692jQyVT>#K+D~=!*fd zQIWtat<_t>d9UbkrVEOH(&o}fUTosbOvPe}yZ&bR(XZ7bqAS%DVwTafiVZ(|eg`a) z8lqowHyUJ{^r$UYpXcaOo}8%H(_=N0h16DWU1+}q@MpXNrT>kp{=fn)C)o4Hzl_}< z2u=hwBc(naNMQSVjD>ax$Hm(`Glrzc$j;**^_=VA=TN3!B%Xjrbfy{gpheIZo5YB( zkoY|3S1`C4i>CV3mL6rVyemzdOr#71#jq}j-EV;jA*M-F3o4-7aYq2&1kb%wziIN* z%m*5b5TB*efQTkd8t)~`sJW_YPVygIr-K9NZ#I!Y-r21ID%ctS^pdj$p8mCaA5k1a za@AK6Df91^>RSk%^vt&m$O==Cir9Utz-CiV50V%X8VFf;lOVXH%Pi^^^dOdonxN3 z9_u3O@N0Lb3B**twNs-%F%O+(zQ?n%l8vFoD!P=;V(Qh>TlY8wVmDv=87NkISc<0j z+BV;t76S)kU6^^rTp@t1$Sm|S=d&-rWx?>)&_2Y=wxT1TC%&9(?TvXckNSPnpHPV! zTm4!JA{rZ?>yKW0bHn9FK9SkPDE{K!!TtIINwSs6{(cTx3x?ud-u{jbJ#AB^5Ey># z!OT%0F{oXAJ!$g|yW^-}=hu#5rdyrF1M8tL|B${dmYJb5_GexYa29&q-_g<79)mc& z`T7a8JorB;iI|dlKKOy7*Ptsjs(M1q zR2e`Ew|0FM0oCpd;w(JUofhSDE!8;U>#MpCvki1r3(ru!H9vqnv0t>kr6;aN#H+pn ziNSn1@h_{wu3_jWrXLapRniGRzJR`6bM*+1iz+x-iNhJ+VHdaRB)6ri2TwdGk3U4> zNOaNraqIF7-SW?y<}EkSZf$|VeKj3vBE*08wl$V&z#sK!QtTz<3O$%i zTULD=HKaq$6LaQ_#K}4ed2xe^J#z+KFZFl`K<5zfXBi*8@l8VL0D=!S)Oi=$dQgAB zANGR=oo`OJ<^D?i$OtfvrA+ReGLbK zgAO?}x}|%l=d_VSyVsGXW8kO+@G}*TdnxIhhc3sp%K*60ZI|q7T)rJ3M=`4nnF`#Q z)t*xkpNh@zJgWlNcrH95+;MpCdk-k=`)*sK2U{_p_6;#Zv;f!%g3@~Ui}no>-vxLU zYEs1bi7DRMC#LD+*J{1DKW@#b>-zQamZGS%vw*yWw*^271bDk!v0fSOICzjzE_>0; zaf-+FUpqc2q85Lb7~66$f%bjA$nDd~hk;TdHh~uMK1VwX3*V&YmY6ZRov%JL2T_cT z2S0qFzANKRO@1%#b57&p^U#etMa%oCT#O-qzbi?s`UyzRfBoF1-(8eUEAIH@fb&%O z;{Afy2gkzPE&1S&f6rKrASkH18IT;liYaa;l&^q~SfmIb@CwGj(Paz12(jJdXhPWc z9PBOx6=8jzNDrizSn8@UfH)=t2o-%*8-^F^mk=>b8U%90Pk>k&Ymp_rDrIPbZaC9k z1})=9KV!pL`t_!Zfq-&V;f*VdMMdU_2UO!>YshwzDWD0qOwMv-)1Y+N0^4P%gb%I- z9nf*6ur~NDPR6Rro42mvH7~fpU~BT$7gB32GW}i1``HHGpBF8(ZneRidNfdd#e-Kj zNoP8hPMR46Q)0ePSe5w0CC9Gy+=*2&Pbt5+r~W1;79GV*_h-(7y=Hr-#m}fQVIOyx zr&O#Oeonj-c|*uUQNXpg_=zrY*8XwW^_X2`gxSwGUZGbncTnga7iSeO;fvyR=S`7h zW^Io|{=4Gx4@x`4Xe4T=w+#|VTg-V|!)m=xez0t-*}k(=i4T_)Sbu30O6)e4ncK}X zQ#NkIXFyq4>i8=qJxd|x&~ofP6)*WVF^$9$xj6Pg6A{JlT4L0vdYBHC`2>{jWAJJw zL=WUu%d$%PiaQpL2S*dxwIt7oNf(-}KA#4wWJKkB)axZ2&Z+b#!1&vOMgg4!W7Xyj zDUo+k);fxHFJ_Et+v3Rc?!14p4!mTkfUoK_KN+wKxVhPH%iN8AjDdmed9PUXCxoyg zlK$x?SCOZMQ>Ph*l?kUpvV}(E;5=_CAI$;70rnOP4b*OA?kiv${QkRM_39-^>fweA zqdep{2qj}`@XYcx_p%072QF&t!0$hr2*_AC^-<%ozJky(l0;i6a`U89p0BcYd4M?) zi1s9B;`!xWmA5Qq#B@E#5ElzJ#&Hb`KbD6FtOU)43HP&_d|_G)qDl5nvJB;C=4cP6 zSz}hlPkCTm>7rno_%CS;-sh{(8}a;6N>52S3Fxn?{3(a{%k4tn_aXtzTcnk4U?t|J zM#+2LNyU=REKJZKF>X7SN!%}cBR#!v=6w#G2Z|xfkA2Go6t40}vwXpV($XqbDy!a7 zwc8j}>5gqROWX+Wt*k}5Uk(ZLpVQ?G9j4dS5t(ypR9Y zyCW`hS0az#ugzY2D+A)1IX3^1LEdijF|{QZ>2PJ*PP1Ie*gb5sn!gRxtC5KRuQ!Qrje*Jlm^=5AUi)ba|(WcAr3>J#r^QiEVp z)LXg~!Q8mXC6~KtDk3xf8wF_zKK}f# z#H*YLu=wrsLt5Ue!qD$*%r2qE*WAQIhHd!5B(o08&SUUmadeWZ7I9^essf2 z)#Ah0s-Im)&g)P2nARRp+co`L8h>Qc|88kPFVIsrghuxVIv(>zaj{F*XoGn{TRC=9 zVvOxT2@rnIdoRE6M1xWDMM@5qy>JmTLe(r>``{kcm+^PDFKjeltM}S`YnV*e{A=oH zMy}r&=f@W$J^UJfRB)%dLp?-Z2-H}5Wd+y;e%K{C7C|P;Mn8=7)La}>L>||^a;rA& zxRkh4($A5?Z7Gtm<|}<3SzyMd+(cnhPG|UmKVPyxXSr%-BV(B@mowK5x8l@vX5H=e7ZPm7?sxt%7yMRQKR%%AH7E+k z|Dy3yl6-KVtJz6kjBzL_eSLnaVr3+c?4y4LHU;wW5MGT#)oq>#uT?pRj9X}kFnw0=Ed<<<(TgD81+GTXxzy0&p zghF`tEz=xNis`ZTGvtsD1Vs^r5^om5K4_CJr|K8dXX4iP0l=&UGX@Xs-gYHoqre!> zHD0$K51a}9s`S0uqxC;C5`&dyvi5t&UGM+z0`NjQ@{U7w5CBT+iXEW26gyoR;P&GI zi5^5e7vm~%>2J+1<>YCo5CEuxrt%GT8+jjN{yjsJj6BuuWm!*BpY|3Sq~YC`mk(n! z(g{!A*oDBvf3aL?4w6@LQm&IJw};VCE_uGp6>cOlUTe!#QQ8(t;cn&qBFJe&cy`j+ zbG!k(6kXaA6B^$s6k@9GQ{!OSU|3|Ow|o1tPjbF3!Tfq|3++mZrGGD^Q!o?lVl0{}XtTsDL=(#ZweeT!Z9Tk|ZD+22{~W5Yi7ZbdOm8bW1foWlw+%73Zti;)jA5gE!(2?xXIy z)N9C+Ml2y=ohw^lW^i!F-q7R++AZ-LIsqd=vnLu8z95y-dZ>KK@lchNP9|U|*q@#I z@968=YDMObfHgKuMv2gff@YyWdH#6XjJu>Xdb?rS%t#f_(6QH=m#~vMg$l>pzu8RG zPb{2_Jv+brgWl?H6$gPO*SNpM1YZ(`$6lxKzHGqI?pWC?CCAvmoFO57p0+wpjFY+) zOO$|0u%@*Uh(jCD6}coA9lNYE-{pSs(z&*}K6K_0X)&afvL%xuA(O5un{2>mI;paP zRn;i?q#p~)@ik~1xpJpLe_L{4N@h`D-Xs(JXzZb1o9qJWLKy^p7-devN&~@<@HwYE zp^&psLiA>fZgwvLF9gMvDJvkBTw07hF9MujQSvE+v2=frcCQxFn#vN^zNZDcEIP@? zks3IFj(jDGAWm^j?~MEY5p$?h-|z-u51PvARc*u*uOKNc^rqBej22evY+XB#>-QFABts!VL=Da^#`F+E_;X(k=)GIU*+;Rhni5?->Sg z))gQTm!2lKR($9HVF%LQk}dgDw1!Z*_^9FgVb(hupNNxDUM_q<96^{}C@B`egOY8T z*pmVqR#Yz}HNao97c}XBfms}gJ)KzqOUIgdbqg1uQt=;*@_Rhqz@*mDk%&q|`OVqS zgs197D==utH&8rk>>j1q&tnVFb(@IOD*hh0HC2|t)fUDHpnDR2W$UCqLJsN19KRtM zurD!1c$Ej0=)Ra&G7)ZB;AAX3PS#OQIt&VaLOr>c`^j499fy2)`RR}H5(E26ozDom z2Ax*PjD~;D-(Ro3*SVMYM`E<7nWK?y+vs#> zC6-;ioKw)88WPI6#YB0Tvz6YiUhg{W=KNA!@@K`OFg)60!SpVa^v}|Ab@RYc!{gt! zBTl?ie};8~!>u4oZ9jFCRG+TKKv9av ztJ%|-_nSa7glEP{cMY6T1>v3|8r`%=1UHfbiSW^$?@2{@YY)uulOTHPb4~CTA!=+| zA2Zur?>TaNy(jvow8qO?<{`{x=nf*(MK zPpg%gbMqmUmh3gg9*5a&g37TeRyEBc8x^voxz)}k9DK~}pM!Q@Vrp(ZHhqo6r>jv0 z^MA8gJSuM{$xZ1?>a(KVH$B7+K-_Jg+WZCeX?(QyC%;$=snUi{4v)raJ&04*S`JOX6g`&lq^+ZD{0E z>a{}?7;5g44NK&{5CFk-E08apVDJEIFAT(}?xs+naJXHqoP2Ipy0u~=+=v0P#~;<} zL5yQRz?#8RYDPVWw|?HrIDH7s$!Z%)9}$w{Q+7R=D5|5)F!8+BU+W-*4|NS6<}Ih+ zYqvE-gU9!%Qvy6sHFTx;VjYwoD5pDRfHeJ{Cj{>Yywgx;MDu+iO!+L<98jb{lIGdj zNzoer3ZGLscW9vn`J9w_m;e~gIu<{TL@@Vm=0jJHqhp`==B8dUAQAHHCS>_la4*KM zQTB_?C|7Cb%AOtJ-Qkw`w#SHTCmTgG&u$>sj`&o+UR2VGcBG~R7^Fk2wW`}?I z>lN+hq+YA-x%>WEKVL-a>ITT-(F5B-(W;5w4A}ilV!Bd*?*a?lrII<1Q~PfKp$2p? z`C5_-mmpvnqd&VCby7qI6jJiAHF%OMeGC0Wz3)&s0G1x8p=7vu9C-$rwN|_T&(8cq zatzYUcyR+88>xY3geGNFAF3(1Ka~ToNg3%b@FDn<^tn~5Ln*$k_37$Clpp~OX1ih@ z+_q|2D{EiBDN#+cPAYY29}$X4h_r%afx${?WPEzHQdJ_yOpd4BsVYrGF{7bL*B#sY z3eRXgGjgg<1y!VK-i?W^>^RPp`Vo|9xjCa9THKkqZ)~!qs+^ml66uMNsi$=k{1<8S zVGlcZ)j$4x1mWqaNSlX<_M|*v(Zq32+%z`|;^{8~UX2|6b>-OX=;xD%F$aI56qNWi zK>F9CCL8|znE6E;wQ{FJ;jqg{zvhnGpR!>i{0{G*veDve$C#7>u`Z`$`;?e&26+$n zje}0~lUT6Oy@(dUyZKy6?dm$VW+x{SuO&{m3+J{gCT5KW^ae?TX&KiKz80;JBP<-x z?-TGPKR4-x(!oOF?5v-W7eJ0Dnq%NgYF!^83uOv!db)MeY*SJ3h{ zs)U43en9T+e^1u&3T16r+ORF0R1rbqC@IK!>Eef|5YKS@L(FvKOOl)@M+_Z-&qp2< zo*cOPND-S>p4&y$a8;QT}qkB&) z1cP4jvONU<4S?fZP_o&!?rIZpy+*k* zHTw4<6Xn^Ic^yMAI9LU^FGhO|o4VD*uma;E0Mgztt*_)EPX`(v4{*~oB%?U{N_`XaYXHZx@gTNMMwJo+o(pEx z;-n2L46|UZ$w;=W&2kInI5wEBH_3 zSg&u~Yyrs&=^k(GBHfh7FiFAIt(rVTancBbf=j%}_i8>)*><)wlA-dyIS0(WW>YzV zFwwUB_&?mwNAPMG^LkM>*uY^)-4CWIQt$=t!+6AzgT1cCF~$*nhl{5#ICmgAxOM|9 zVoex$K>f>5X$^w**S+v5eoETrsCeI7r!1{@6f=mkux3umv{@}moTjNiCqzv#`LJ;nQR%yRp ztAGCR^Obfr@d3Gv+w)tG*!3xv1Rt&c)OOK$)5lnN@TvjL%ds(3>lj9{aPOUAyZeiq z7PY2{eg+jjF@&>U!7+C`)J_ug1!zg}nlUCG^UeL0QhiQS8M<1hIV7^ZH`T$`yst`o z)V-}dd0bjyYtQ^B!07tDhr2&4rD)C}-xY!w^w;Sps;OOn=rxGK#pEM88w~r@_hSWN z(B-th{@$zyJqjZ6n^OxP*kH`d9L|668w-^gpUAwvIF+{B(twg1*B>)zGApLWK#Nx2 zv0&)g8bpus^aYrRvziSnh>zNXpWf~M7LV46Sbs5{8v`}xYZil=`(SCJbU&?>X&UN; zM4~?jFAvtxqk%LAbuK#ebO&3{u0}nGo9d^QpP+OJ?n4f}lXa=@ zRmJcOQ9^Ohs_qGAvicMb)DVEU%at_~7ZeYK`KVAa0)G7eoJm9tvYLw;5>{Br69N`) zF^;$C5FVt~_jX5{iJB`+Viv*RV1oKP~ZFR8^s!bWh`SN7yS!y@yaQ=b|uy9DeU z1P0u3o4&5Ya za|4ovY$$yGg1FXFuC?nGRt7_*MP18!sv9+p`67e9za}taxH2 zd3MeFRoijKLS2J>Hr*Omi&WmHEK1HPzQ@h>JTPz{(|a9>8!SzvQPGdKSY23?EEh57 z2y3vX(c?ew*gDIB6Fd9||L~6i+G6~+PL)|UOvsoTSwQlb{%P@L7Jhy73sCvFyR?(jsB%^ecw$Bj4@ z9wEimVNl=Ch*GVTc}bt(d~#m>3N+!8mqFjxsM}n_)^Nx2PubmmhBnIPp8Q$}?n57( z@lFAJxi=xK5KhI|y{xxX2*tB$P}vBr>e;m1C(uJCDb*X6d_hG6F^(qRqc?-b^o4#0 zb1O#ngRc0=w1fFIn)6C&9`bdlE(oi)A7aDE1!>gB1L;-yKh)yYBXcjH5{q*9e(gdP z(4SiQ88o7Nmmmzv?cvM0C`UU9f@+KX?+WZFM&F#AvSjPhJa@kK*GPq@hjy;cGZr7F z$VY4sXJIj%3zPn!0f*sUJ}wr@1W2j|+`+SrLqaU5!Nb45 z2I;b*{cL$$Yde)ZLRQWY$@iTpkfvY>MftH!`?&$~2Kb?P7)axQ#DP8#As~S4!n92k z;~~DsP)5kXJxbzDRQJQn$P4sXdHqO6vkY=8Ag%9peyf&p5E|HWzpR*ONhS^o*WJYY z(LjEvEXf&gpR#_*sr83kLEtm*)WA$r<5pI?yBqgZL^UgUdFq*>0Br;L-i(t zNIWM_6QjylWPkxny@)Ovc;G{o{P5m-;fymwbj5rWYTZ2>iI44ce{8Oy`t8}GBH~rc zP2ARhfIY^E2*dD6L{+}uokJx4Zv4bF!z29{Mos+sl)ohZ)k$|Oe2GhtE&()6J=TeC zO!xJ*aeRkiJ2f$Ge4JQ$Yss;|0J4KO?WunYVu+POtk{qzngQLsfXg#(9}*MKAE*h~ zUGaifQM;HID|RI_MZvJ&wr}m){44lmIC{@UJmQfhDi9p@+PK;Mciw6Hw|EGNNg&^-daMo z#XG)}$@^pssg#*-1TGQDj23^P;W3TE6+7k{+M9(nsz?;&ZeSPfTV~s3rXz^-YaN?p z{w4AOC050&Z=8yLJv;BTiu&~|RQitOEe(z#e?Ez-v95W(q)ZI|_?(Chf1|xc&BQx7 z>3>$WRvc3da#OwC0D`(hC-`ev_|0HNhtj zUPU5&ht_0VuR=2fGYskN3yD|w7q=?ly#h0AJy5Uc)A|52&aV4>00I=>LDzlEFt~{w zmKT(+5&;SZxMRHd2_heBXiH{3Q`1WE#o{^o8kQ6hysG2mA|LqSzDg5%HRd$ySC`|q@Bow<3 zj#>BQB_Z+*fF>a(fn2JWeCf`MT|nN^5T(!7-M+rE4#o&tRarDok8Dq40Q3(?e54Nk z*dA$bBBByHe5{+@d~y9GEaFN!9GcI!rA|IYIJUVkv2GA2;uHbH;yZKU^a&R$m)B3T zub}o$PaTh^Qm*p#cd34H`HAUsGuS&>x*C}{R zA)2D|Uf0g6FsLW0s&1g$*oFRI1jV40=Fx@Wy$s)(w$G)jPnGQjp$~aSS+m-5qLQly z9*X1H_KkxK<8JN@Sbo>U8*wUn)9n#bai3=7x4R|}yc++G)7ZDzBaHzlJwPNRu>7E% zGyPW}v?>nCk5QqLccd|Nn7;Eb*4(LZ=GP_h`fd5o1bFAy|Dox;qp5!UKYs7EU3-&p zam|cG<(k(u?!ERVSt%K1OSUUp=0#NY$eu}vNOl=rBr7{yAv^o`{+#dm{o6TR=cIGr zulI92o}DFs{VmVzt!Yvm_}Be7?MU;5Njhc&*!H)>EwqzZ2SAD)rhdYBEy@o`BXBxM zmhuqKy^sJfUuzU}^E(Y2OIo5MyPO2P%!0Q}ooau$h%_2Y-9I%|BB zzcNZk=M7xxOI}Hs;tGF-2`QyG^E+aLM_!Nfs$R-0^8_nsDsH+xMgdK^am2f8hi?<_ z=df|$9Wreb=_xaZ-ZqT=L#pXh_5mqZ$qA0WI>YJL)iQ<6bfV)_QJzInGij<3QMN_* zR~w_rXzHhwN*&a?DX!u5o!&m8g^F9%BB2b+D$XpTNcicC4XT1X4^yQZ!27?U1Cmho ztLP3a@6w^1?jkrHiNDr0_Qlo}x{)9KWKGzR^MLAQl9Xkdh@E;LC{NeAPKh;{25n_3@I(L`CJU2 zUX>SM#IQDw0E)+dvcpT_m=o){?ODMz1ca?k&NTvaJ3l24H;+@|pUItO#3rK+LU^HT zR@GkA`$SE^7kK=b1L(>W_1(ge>X>ba;tG4;YcE=IrX%3MdC%50M3D*jKwG5nk_uU) zYa=oPR=fX>J*~6UjVUo)Dbt!j(MB2Ok{zRtUzDsHUv7oLu)6+8rVCAf5S&Wg_?>Q& z>=$!rlaC(Hd#iVs5XqwmwqWM3zfeyVbEVn3#Y#xDq5C%6NN~W9mgg5?Gub}Q{Gmn| z#KEGtr}mzDGnqZ!PjBm~H&Cz_bpxmUr{SKFr*Y(Wr-!5OJA&{#u?L+Lsae11NwCwj zPYwIz^Rc(kVDVHF0?DG}EwPodUGtZy7Uep31uS%=dQZ{`vxh6@pCQ3Vry3v$lzUW4 zTm`WcD$ElC&}4JO8l#M5`%mMh2#*JE8s+^{V0f=Y%2ft| zm{vO;|6+S)8q3D;JP)Typ`CEmr$%XR)KE~G;y+Znz>7wl4q@%Od z#^0o*4TJXj8n7jK>DPQuZz)~Hs~_c4_n_n^_|l>uPKW&yx=YGITMU6Y zpL|GJ@w5|-G!`!$$pzwq&SshYm z^nr!rMCadHKP^;4Dn>e2qT9Ku2dlpLJ#H44kqW#>jWD*Z80gMS0h%@w>ms1EgZQ6h zP!JP0eprkbNEkmeTMF2uIW4zR$y3TeT{P@hirAsUv^9w=zxue$9X6e=Xx6Zgtt*y1 zFLV5=ZMy;*0}p>Zwf6WeYS8)ZsgH3AH;{?R9xYW*L=@34TaB7PhOR-i2G`AGuKpU* zR{TrC{>Yw)IE5Z@w+ZL(Rf!c`%^X$v_Y4~KeRWz5FU*My3{JO0K+h_v8;)rR&%I$4UHmoE_W9t2OnBo>t&(B+T{_ojb2K<(0ie+xgZ2DD-_zuUx5(k|?<>~q6Wpo)#)9B?in)kn1rrO-joe;rRu)TXyq2$#Z`>T*m*OU$ zm-eU@H9y%@KKoeJ0*0L-=EGmK3oG*({6iY&pZV$r8X*aFQX2f_J*xfIk$!V7YIKO?0yp+=U$#GA4U5+uW&1i2x`F84ZQFPI&3Dsuq+y9OKy z9APWrAM9v4#ZUO!e8q4eNUZj5r~27FD-tq$Q^JxM_-?p53-msPWFY%0jX(0DkPkgg z!B@t2N5jPFyUr}ddLAy{;sb<=k$OUdKRT58#8Y4F)Ui>7LJ$(8(45(v7s-@=@ZtQZ zU&JY+|FI#E2H{atL0ktb#izVuvh~ek`o{v6*M#o&TydVr=P|a`kuEzfONk~S7n_5L zwJ(75ivUHj-QMCqxR-2@QdG@k!% zK~Ew_ZK{M)i(+2+BPO&#Ud)Dh%w z|1%Ud4*olGC8pxRuu)Z>o4Vmu)=H_{+e7y zi~bKo&GD(WH+OW#ZgZ!0pZ$>A%Pa zdnh*C*BcRCAKrc-!Lq#G@~4L3O_&vbthuo8bFAlJ^Cy0!^L4hbtO`*Qp=N^#I}~V!;f0DEVFKV}k*@ zmST1G|4--y!qG;8*`1+s9;VQ~Fmfb8OG2A}@`x4= zI20M$yFb}SN3=6A$g$fo#S^Zwr#$pkDqdd{JywuRei#8*xhtc6^Y@Ih&+@%d?&VTM zF!q3bTq@<^3J80iKat+uW#Ybmn-dy0WfaGDB5$^;>sy)ZWHP z$&dM!Mn?rYn!g=&^Uwj|Q!cAgjh(@{2q7SNgSZ!7{HrQ++azBRgbfiD0i4^L5ZHL~ z5sOtd-^q*|Usg9@(V*cU?8pUDt$rr?L|kLZ_k5_m_la;MHpFt`?tF)&BEX)YE=7UC zr|!%)q)~Um(e(p&W4ZCs+&B~nI1hv=itlU7lHue~C#O79WcUQdAM#B_)X(6MXkJd0 zSopk*Bcsb<4QAvkDO@j&%j25t?LEeLH}g`jImSoa*%T&>>-6Al>>Ynd7RzIOJ|M9A zcrbtWo1(=DKO?kdmK1%aD3q)aL0xl=jt*0%`kKe|)XdsK{?s=#dQoITM12U{!lzIH zuP)ZW5$fb5AR2?h)%=au2I(x-xpVn$NweHb7LB_Q72#pXfBTT>?}YT>>o4bT$G*$m z5wcZ3wetJbS{;ytxl;fH)M*u#Xh>dl?G#Kups8%;yFLA24s%EPHs==RPBD?pDnF^z z^?{xt^}vtD?dvt0|E%2JQXO)}t|*A?VoEm&L(O)sJytde;IgT*yTVTOM9XTe1;h8I z9~U9o#=#NUy{-?QzIHB9{ghio_RShCWJKP--2IhnROQqk7B%>T1@ZOfSQe6eX zH=%BWq|ydnPeaR>U6~Sr!P~?sjEmje-s;fldus``t;hbgc9TX_XC{xqpRKz6sw}Il zzQ|W=7cd=G{M*xQSp;L((hS$0i#<&BuuT~@MgZ_1|0{tT8!KzyZCg?l;=KBpSqIBK z7L_=6d-l0QrJLU-iZf1vJBt;_*37oQzc%vF;{GoEHS1Y|SP{jc`)gSg{i#{^-J-s( zbHQQGc2PTqXP`9GmFpn9;Z+m$UrglQyI!`5HPS$78^c`+DN&KS@@p5rj7%OSgUJ>& zX6||Z{+2620MeA6`b$nF?&9<616~7Uc)7^u>LI^7HHgs((CZ{=xvUt1@We1pQ;gx8 z92stkt%~XJ12>+6J3Mw1Jn6^Te_3pXo1~YTcS_pW2_}oe*|!gXZEQCkUQZ1dc3tWX zHrN39XyeiZ6jTyP&$QU~hjq{m7;C+tn*KP9CYUq0Ks~!r)iUpcOMxXk-Nv-ul}O5z zZ5OcMe_K!<(T zg(Kj*{c5Qy(Jhb*1|0Hi9ObX@Vo z+ImXyF}CGmAex;Z2}(uT8!u$RkF&O)b)^7Xh7)f1{iQ4#n`mRq?LYIjr;T*jFR$UF zJOBP)X;?>;dh)RR?}VTSjt3|?K7RhXlq63ND$vNwXrKes+=Y4>GL3^nJTBWQa!L7r zFTj@oVg>Y24Gwu`jf`uYAPL}TUU{x7L7Eemz5XvlV&Pv1)zzh)T?eUVs23HBz8GVq zzE3zDq{+x<2#7HK_d(RJmMmU$#0HXbEq+b{9-NothYMMz2VrW9=`5dPtOk>-id49h zXLrP6b^EBz%@qJgZd1g{>S3pndQ1g$C$VTc23SN+nVpu6&$ zQq}sn!&jq332++Ij-c>*24}!{N6-QG5#RGf1Y7;?JKqKSm1AZQDim{vZ7DHavju0o z5yc%-TuO!y2E}u)3V40XBn|%Izkfa4L5|+X@V8PQ>H%+?g#!!lk)Hxa6M_$Smmd(X zhiTnm<;$K!o zly$w!$wA17%;GOI3>MefEyj=7S|lWG+i)Jo2wOuAI+9erqA3)sS-sp zhAnB2A`sjyNG2i$Afo{n;s`^Skk!ZN<>x8(6XG~Nwgy@dBZ6Cop}Y@Md|f`FkAAhu z19-~mgod@NWE~Vw_uW@g=q+vHWR>R)(ZBbWyHC(UOjWw}Vo>(3S`ln3LU!(`=O5 z5tT66u(|~Nb?rBV7@s{WuWIFp-1@UTq!GsrhYgUN1D#Qj3*bug#Iy}2P13bK?r#zS zemS_<-T?asjfCPf}?N}!!OXqp8yaS9W9G!U)cuy`On7SwW zBs|LDf%ZjC&(1@TC=l*ok>~wPwed~-^Z}7X2Y9s+cz+*pL6iHnpDM0*OF>}qnUts2 zX%(`3HF=>ml=syOX51AT^oC{QWnJu|@o8w0 z7_tDTUf=*Yu0pI*PhY^mSgD1FHfz=l0J;(^PYO?69%ciHUDIA}{&NigwB3fh67{_Y z5Y+lx+?cZtL^mU_pk!+p6^xJ-yJojoBUeKr#{?F38NW+x zh6Df4-j-shaAGXU5r{}17vk3e*6hy!^SB<)kh0KLMgafVU%K*dMTX*gaT;feptW$d zH@QwimGi};-4;w25Q2F!=8z&g)Q5(sz_a@^)V#@fG+jYtZX96MOfphk&|OzwG8^A9 zhkM<4aT39unlJfcsMnFT;M)(b1f9{-ryy)IJ*B+sT~f+-mXAlfT(_+B-cqfSir!iZ z^vgg8DCD}wqZnPQv44>QGU}ZM)j#Y}vR+A`64&dWfXDl1vADsuadDZB<+|k|U@1E1NIWV~5p6-9l@xrYifZt-P1 zGvkpo$i3uksx%WGSx~OBO{~tjxDC#HI!s2lCOy_@`Koj0U8u~x_UL1p>Idb#TaF?F zLNwo0@oVWC3*3^Cv!;)HA<-<3`aADI1o{2oyypS^+3crJAQ8q|e0%JX=|~tOLgMLW znForjOpap2>UD>4@Q20s&%ki6U+bDDHle@P)mt_@yBW)5MHm>K&b+$ia<)>uQn3<_ zffjS^9UB8}?Oj>C#+E#=ldy4J-WFOc&kF_NTP2)1FgF*0m2^T_;&C8HW2X5ucP_| zpj|KwMNgdbgYlG>U2R{p@o&3rOO2+$fD;6Vp5%GLT&#(VnyK7^K^oJwGUUPl!GiYm zLINiVAYFlH=5|Dv(%%RKJqrM~poN2r#d1DFB!Q`R&wVixy!`z4*e_w4SKLYH72if8 zf-l29Tmgg!ab;Ypu+_YRtczVlKMU55Dfr`m5wj$ndCAGvHh&#q*!p{u$C>nMA)N)J zEnm~)8STxJc01o>cEmeu<{n3KTk@${Dt)|a@+k-(uS&6%(8h9NUi)%VP&+Y4Rbjm#GqA_66ocn-$-jF2Q!~8ey2~i zj?7gEB>v@l^0LEsslQxZbRGh?*~h`XF$#Nm^f{`3NAg2O?@SMetD@GMUPp9z=krs5 zPV?n#p0n#cv;OJ+GkpEZX=f;6xp_}Ct*d85>QF^3#<&4Y6FSO6DM{nfvNI zhT8#YLLMW;$Ix{lRmp~YNkLN|8ez}0ndg=~5oB+zy4y>2_*sM=o&{psGhna`QYRCGFj=w$bIt9pHsW4(~~sMiVD`jx04GL zPG<+dH4xihK7Qj36(oolpJ|?gl(H50kA&t%nHp3SgEUF9;9!jsEG)h1Wh0 zEG|fY)@2MeDwcYQe^Yh#fC_-s#rj&$-)7?^w|^+N5had;1H-~&z8Uq?T`@Z!%~Ef1 zb;3vP!?>ztCYPJv?>#l=$2Db*vPdr0BT>*R2#DqVP}%KzWY;qVezvS-BOnuu5O$=V z(qbDVeZ(kl7U6XyAZN+ih<2v6a8TvAv4X?&JGD9ky-uBE?f1Vu12~qoZ$TZiV%$p* z#%u;Axa*G0938Vtw!AqMy3fDpBc>TgQTg9d!x$C7{L^(_i;0(IXr-OmI*HFf^_ndy zt-rt5Cn$aZg<#a`L?{nP!Mx;4|6qEctotD2n6`j6_$~UBZlW})up=ZIsEvFU6O#`m z7m%UdrYA{Yt9)|xs_47%t+BRxva_CbK`@@f@ZbiBaaa|QV`ejbcP=$fZ(JlUoo0Yg zMjbS<4$C?exrX}t7U7$DzsqNF+V=!j`*-SYCub(AmkgygP=W*>kNJxc?6{oaMPX0u ztS}{dsm2L?6!?eIzSas^a48VH;M@p|rGxFo&E%2XE>YyaAI9sc<=`@lex+`F9o1+A z%!0;nmkNT^qq5duS#lIefg4nZq8-^5&GxcdD18Ow*r zk|~Q_qj%8!xqSMfO*6S~3F(#WqTRD7{;6|AH~(Mkg`fBeB|#j3G*V8Cz(T>;qKU<) zcNYGo@-}Qyhd2iV(*arP1k=P8eXo(2=No6kHh(^$M=G_yIROMv`j?xUV5n+vvL>u2 z6pSRmF86FeDR5xNb#~M(CL=T;?YC5d`=a$)Y&8`G^01uKMRV%<2UG}5EN;}Tg1wb? zIndUZ2OoX-*|ZdLBU-h}Z<>;`mq-68|5l{C`l%A?{nPtx8``+fncFEVQBU^O8^IVN z>uxR;%tetNn6f=nM;hmy=QBBf$xdUVg^R^A5B>pi?!+C<)neV9chVKSfMoSVv96tc zh$0+5;TvAep61kT^HVAu(?CiV+XxuSPEi-@JNV$2s`mEQ1G4982eMCSH|Sy?@~t{H zD!TJ6P)K-lO;`6k_2wc@1{xatSmNSIp6l{^553ry3o;>nXeiobyFwp3ljg;^kUDpr z(VxX4sCX;8RLnw50Ky>n7O!bH>(*H$UQSu0&f`{LW5GJOW@(i;_CA1uG?kulGOJKXullx zzPx`&W9E?oRaqrp74z+aY*f8l_lXYDSa5G3AT~Q9i-Zv&a4S01+!cL|7Niwe{X_mY z1f4F-P;P`Vkrx8yR%6Z5@;A!~Wxt8S3oLMrMlR^Wu(M_%wRWeG&|cI>A!|hAzislQ zUwLFM>MF{1QJ-nK5W?;$+Iv)y()HSCF}c^vS&@w-@Pe!S9~iS`edpWs8s4aejT#bs ztRIbGVagL)rRgsxWppPSAY)oW24%ZBbEsiuADDZ<5fW}f3d^Y6_7_KgH)vL{24*wc zU4?J#n1>Xz9d_3T*84FWD_4gWYDJjL+AFtZc-p0N6^pNUa6Z;G7wixUGr|8ZRc19K zGLgP~FHT!FDcMxHBFD;JJg(J4wj#Q6ygLqVM?)40c?dy{=a(k*`|V;l^sG^CcH6LX z-$8TSS<+H@fNuT)=Z2`k+K$*}-LLA_tya0&5C7B>kwTiP-=2E)uhBnF57SoeGHD-U zV%bRhk*~i>*BN=bQl|lR7RiWkh{;j={!1)ITx?utEbS!)94t>XG&Gp^z?$aGOEY$E zte3qp;Gfoid-PT2b9={dsmNByfHXB6!9UY47T3#Y8X8B3C56+DwY6&V&%Q3*ZNu$< zpPc3&n9g|eS&1)`;q_3b58W_&2vZvKQ>d9xL& zkWxW%4oR~xz3^fZ;p{li3&0?#WlkwxY>z~UVLf$QUmQc^g;RaLbC(v^Qezrgb!Fm? zi}JN?1Q4+81_eE%=Yu{uz-e+6UJUOn4sNp;c;TbH$AdQ=aPDk7pfKBH;PMPP+UIF2 z;wJ8bnlgFtFT+d6Z>~4cw4S>@m-^bbWwG2WNrDB!lhn^Klx1wE2pp?CdDJCgEW*y3 z?^*wC>Xw&J0psMT1*zX^0)(^?beNUk0~xjov5SttY1QOFI;l z(0xi|?7*YJ{1J)upg_+Hv8ed3mmkkuUK((9b;*Nu`9YLwB^OjZ*7<|qI~MoUL2RPq z_tul=&i{l3g@sLBj(8>ACHK5^fyjUDJN&$SYDNP5064vd1Ali`k>Mp@jb+A}G^4hg z#1;CwDCx|MLHf#a%)(fa!ON;Yq&T@#(}6*_+|@u{m4@i;!I7)S^hhqx&Dze3c!U4~ zM99DPT*Bjy>ChFHcU#clJoB6hBAVA+wuWJnpjU(({JM&IzM+0xrM^PM7yOPXsgwM6GRQe# zUwuDS@8Smft?ot1@x9{(`RpwUo>y7wOkhKDTv1+3ZokxDAP(G*NJ0Ub5E%;r+ERr3 zVaSb*f%5Zd1~#O{-0x*l&&8elVY`ytnR;>4q*0+8O*4&FoKV}}p!w%~E2Jz>?^?=# z*QX-+w|IcRY=c3eAgnmCQe;SlY-{(v|BRf9<$j1(njTbOOG_x1-Yu?I#wveC!RB#Q z;zt<4m05v<(=Lr95iRgIY4OWHjiqkASczv`3 zEzRyFcte*hD;&-mks2^o9zJrG6Ic=jQOTDJWcu^e;DJx+0Z;Wx_ zNcwfrBvml#m1*Z;?y6A0$5hJ^WVcFOc{#-^d8brb0 z?hdGUTW;>elB1?T$;F?-2<}tyXVHE9UW`VW($|&_cFG;cM}8kcH{fG2<7p+w~8z~?L;5W7>C1c8;Jfmk>FCz zg4`pRTvY7lgIb_EW6hn?$a&_aJ0;}SbIJ4J**&8_F#r9xl+t8CA1y5|^)xx_tb8n~CO=pCR6WCDo`ypaTrXFt^g@c5iA&b8}A zzh9Ec4`yHCieC`xS;CbiOy3k?oM@(cad2thnUZu0_^wD=h#2IBJ~qh&?>{&lzS}OE z^O77c3W5VyCy3xah!$;97S71Kb>#BXcCRWFbSPEk^pB+M7=m^tLG*A>JWS_Xqjx41 z;2HOGA!Qi|RGP@>4yyiM=?Cku`(rM2Fj;#bN@{=bxLx~$-ifCM>Vz)nqsG}(X-mQ6 zl2x+i&Z1WhnwSQLQO%iiUohfWGS`*s$7Yi*6*B1RCqbSLI*)2`jdS;zkf_5`GvbGl z*@(ufZ8mx@jy%s!rJDO-Yb6Qs(GUStlNv=NIQ;0HI`PJmnDzXFdwrsE_RE&bmMm86 zHBb*!*e8LN>9?dvI9>ey1XWM;W<0J~*jQfZ7Jpu&5d}^|AIpJ$fAzlr1I3bVcG zmq{;Dfr*4kAH7lH=T;47BHH-9`1{K2GW}Q%izuTWquBHYXUz)oL+!{0QUov6$+bt~ z0`J~wp7i7~cHX;T>H+;p6jVt*$XAs#F4z%RCvHrUm|&4GiKLRR&R(^dVHz{po{Q62H80$?wnq(6!v_z0jI|^=H*9JG{^BgJvc+CFaEfcj4VvjIbSneQPlxL-Pl@$|uq*F-}zjav%&SQN^6(mRF7vg|2V zuTyBW{?d;>tELnG06_RtL2wt$o0{B}BcTT;Wijn95>ZsTgf$}w-t#<5kidQGczR2C z@RfE@h99HL{p7jmWnB=S1a3rmhiW4qf^jvwQ3G;rT$hu+E*T-8+qL}=dP+~EVm{&E z1M5g~jBsZd@%99y&Pv|72i?T0H_0%>vFz(2nL_eBaqw@)&+VByg+xq&L^yRtV>g34 zz={Dde;cso1GAF5{kO~QgctVvgDXPfIti*zVc0+K?<}7`0(O5=vl`BYVq719(k4|m zJ<3lrBA>kJ_4)P3oHBBx3@FU7lpcpmeWco7jlkO7OlgdHrrtDw%GA&=RGV{yU{IIt zkTlP**V2)|)+8QJx%D!6t(C8y3xl^wZ93%f>O9CK0cX^@oH;WeAvmo8GK{FM|W^O<6iDl z7r&!79sAuKR6M;D$97ehCu7bQ%#tQQ?C&?3&1VUe=3JWInN07bkO-ph(936V?|W+1 z-~2FJ#&6eCgD^rBR3aAx2T(8PLIC(V$CnMhE^V+Oy?Z?6RRn0c0)8|8B?(c#J|?C@ zo+RUn>q7W2)Bbk^s-!wmc5OEstkf<|yJ^C3fxBE@7c{--B$m8@VLk;mT~Oy}%vtDp zXKnJ*m)2k9ck-_i?C}fFG2hf&z9X5k!vr{zN#OTY6^0&t;@Q;RxP@XdW(^1QtzoIA-z(2eeuF!*I>78Fdx8|&|$s-0w_<dU(EzESD~J^#s0@PdK79}cDoJ>N|;L0>!Y-BXJJ z8p}YtN8hi4l$<+N(JQ-yGG)97B)Q{hO(uq8_}QIRN0Qso$3b>WA;1Y&b2FV zGlA@6Ql%Hk%(3rxBz_x$&HQF!%-3t6jU)(By^gFX)r81Oxs(p&D6s4dB*`)%i`#$x z5;{YKb|h{I+c*{boQt`2Q2&L5qJqe{MK&2enDp+Z`&D}JLLdD&VgWOUIFxF`zWCj3 z_`u&`5#_p~J0`@8`R;VouPkipt=`aM;;FJ^=zgFb;>^b$)WgFz{X*G+ud$EFcBY|Z z0TSpTn@u+1>GCs{$U-2QN}jUY^Z$j{xZm-6?4M^&k#I5E-fO#i;~<|37*XbHq~~O* zsGj#$gNscS^cnFcYW4MFwdAgyhz@^k^;b3k-o>71EYL(*&BXfhKvKU4-0Pc2a{Go> z3CEm=2s!aVUQn6}jK-FPz_8`KZphF>nrwXUs4A{F@jgz`)h!znDtkxrd zoPD#%Av!zsHb;r<#82D$I)0<@OK3vjE8|AH59JGEw4?9IHft%@W74;;Hl|b|hEE@B-)q5YeRU}^% zm^>P>yOr+8MIxMJ;+@xwRufeY7*#4;I=`9p0&U!UX%hbwvN1-$Zpah!WDExSgtB8! z%U5Ks>AMg&R=m>l-sPI;=bslMp3vU~5x@B~J>Sdhh7MwBU6ChKQ(uW>W@_!3ChR66 zn&-Txi~MgF=*?HyZwW<>{wf?4Yb}NBrHMc50{+gw2UzbP?VWsT7hh+gr~IswahKWp zlRb$2My=&Asq!*K6Aq`n$mtOhLv3E4n)$SWBBCE7NPjPuh|~UkzZ%_j=@oOryOQ>R zX+z9w6f>FjJAc%z&|2xCuSpP2#|CqKNv#OF!Ox6iDgg^WEmVc1DTvMg^3cYXHP|KG z|HX4djBMigZn|)lVV8dhS^i2fmFa7>Pt=}qG2&+{ZmDu)IE{{4DvdxS73St>$NN6_ zQg0kK38LZJ7qAAxF1rj4l$*cm-Ou0uUN|=E{svjZ@AiT4JakPoT>G~Y4A{l{1Tf;$ zx6?l2R~S}7STS}Dfl?7ZUF~gr5gS3rjNUNtA)U4zYixJZm;VNyG-XuL&xv5|m};JZ zYSBCkg!I+@bR3-a_*$iO3)zKqS?7a0%l~*9mIj960!-t-9<<3jyBQGn?;9!Tjg-XD zylOK1NQNu0yAGo|rlP={DzPfV28h}U_5=$u_y!1%C-tTnC&}>pS`$IYB!koT9RTZPfA2vId$8-vyOV!MqZA6kpdqPaZ2+lH+-00r0RM zB^{Ecc=xFahywaU#XpViw}ik|Jqecbd+)^^975U?F)Jd~nRdwcd&=WBU+1lUwE?Ov zaeI1=pV&1rQ_m1fJ3~)x# zz$8g5w-3_}$!qB4vmBk2QJS$|pB!A9&bx3wk_EC@72aVfBsawDtUjAy`bEswYQH}A z$w?9&e@)LDfWz|z(k7wl{C%JG?5uUkY{W%e7x%strVC z_zzi9_77?bg_^!BJih)9CqV;;9N5p_c2Qa5LR7x)eD}m#X1sIh5u(pP$d0uKweiJr;|+7G+gHHopY@_tg&AMKsyv z=S6C>HZ5E7q5tyZc2+i|Q#<5f1J0b4S)b2IkwsGVccn|u^8*im%fmv97~A=?ljPH0ZAiQYz z>?9QPL5@Pm8@9JELhLCtNR4K@o>xRkWf8eqER;`|5_!zztss8xPc@jGk`)Lu9xt1O z*4wQln8t>N#1w;KyE}{R6k$}IzVdvXzKsN$ku>Ut;agcUXKuPvwp~a0H=p6=8?Sbr_s^{E-H_tLXm1-? znM&A;9E-V)jtzoacn(JfDcr0K!+_EW3Bb~f+`0ioNi<)Or9MAA4^^rIkOqLWTM~g` zH!1xV$_yiWW;Hv&-07wDGwR|KJV)keLB$`7s7!k>+QX8aYPbUl(-K6k1lTMd@#_ss ze>Aa7(c3mUqrqXyo9Ci7JMK&@f~a_`X6$8?9#BjMe&9S*NND=Fl1>nWT&P`a8E4K$ zTn4pB#UX2Xi*$%3M-Cr2G7BDkm=aMFD#PwzLHN-coh>;^3{m$fbup>vp^K=+$HY)) z>traYz#-Iq{k=_>)FOz`Ao?N(<2c2=Vh#EYGR4CmDDK_q`|uaY2gWBVAOt2}94bgE zP3oyJA5VbYr*lW&s%=+OTUBZZW5rW+2-?rtZ43o{@zWzvleLcSFOAB`j9v zy-PBn~t}`qnJk+!OW9#eD_QOB(Nv5$_=ieBvX&wV5rd{mr@Anb1Md*r(UV zj?Q}(fdkQ8RELGpfj=IXLyJ!z&jvJpEEj3s@BQ;<(+{QSfikgZ@hMX+M4DOHA(gf1 zO_Wb=T_DCkinSHyu{t@`Ze$*sj84*ITti)c#m<8BD+2YEB^djU+X6?scC=4)UG11U z)F;No!8#+Q`fvSweEAepiIZM-vdJ!9Bp~Kz2|LRLgGS0p!PHdfz-d4AzMO{Szoa*F z8ySu1PDEHix&XXfXResHOoOf?2V1PXR?L5agH0WSg&=9b#YRy=ck&7Uj%mUtJIzyx zM?{F*Nr((KFqK<+_52^#+-OC{3o1PRql^0akJlVI)Uqs|>i zA8|I`C3kySJ7RZu)_F7K;1&qaT?&)pCYj73LWJep!qm z11oS-Xo_!grz1GYG6ol)XuJ=J;rCV$Fm$0j11ehg3hp7Uz|c8e&iqKSos`5=-eyhc z0>ZMNP6oCSbN7lvA?Xs#;rL}YvRAzTUv|YU4`aNY`tf^p9>oyqVpeNhha&ZL>g9_n z1E0SFZ*1}|=mTiW<{3_7SpTVE4}BP1<4#Aq=-rw+z78Y5;s~`u`73jGKFPtTCPR)| z<#570-%gaJ;hcb8>7`XLWPYyp>m9;S_2EqQd10F+7qIb^a=AH(Z|gvXaoMO)pwy{jrXKbScUjd&UN4q`7nhH z&X)fBYI%cI^GmMVrLqtW8V!hix?uBuC#oGm1Z>uvL?sHLFvZ+=Ob8yw#CeLMED{q# zAG*k2Ly%6+>6aIB#}tN;-e1vy$1bgWF~c8^XR7{dxLib(DxI#qv+!x|_ZaN6y9?kAHQ7hUEB*kw`Wr@NyP9i9_<}uPCNa1aP9|% zO8&U3_Hs9~fvpqH%9m2Yo)Gf$iaqgNuheYmh)+DD#ous~IgcjwW7ip4Kray0zE|wP z0qqz|)cP!9xz1h1Lx05t4R}^5P`O+qOAuG4#dLMezt-DE&0Enzt4*FhVr*i6cRMMw zzz!l&k@BeiC-7#oL(t@eDy_su27Y4{E2FU%a1yerv*({V{b$)sesTJr0}ik|v=1g7 zoBpy=m3>$Gjl-xR#gr4hM!Nt z&wj%OWl}aYxaWVxTb8F?Ir5vTQ^$ocBrWSTR~&(rmo5uw0Uu^Zarg1BoDHkzzWWY1 zFgVMM2l9Dr#?-4?7XcTeyJbj4yR}We!>J=@mFr*1M$!+L5rXwzvZW$nVLwA<4v*e+ z!YDv{+;QilE)tDgNPTaASpGY?J+h2bDiHSbi2+60V6Rs;U~TzI>n;Dye)+R`{ZgOb z$AO7EO+%jdt|zK%_o9mq%f^l08{@{qahP}t0a~Q2Jil@Z-yu;gBnB>j%nH5{2-5BP z_lg;q8hUN;qV9@RK$03m4bkDvS^@f<5>^;0U?FQ?&Zhn zrqc4W(`L2eYU^r4+;NPgRie=in$^d>{n+moHCmRcw1xskZdDz)<5-Q1di|attyXm= zq9XqcW`LjSu)Dlr*9;@;$Uhex1E-$wBfH>leB%FY%<5QKXf}r&PWvOFRuO1XTdLZo zbOxXc$Zj2f(f~cGop3OB2v$sR`%W}!EA{7}`3=Gbf0(!tPR0l1BJ8c!Z%azu;#V&F zlX9o9L(n_STQ-IaSfO$Me8dgJ7!-^Dr1HS1=y+&=Z{?G{aJZx4+Z4Bvdz4e;jzE<9 z<+X+_GG_jnC-Rx=XyZ9ir@&mFu?_wiZdhD)D&7UjgeVU5q&+YQ|SedDylIgjZ~k9d`i$XAaV>(XZhUhzKYZjBJXac+PJ zEDb~$(Fg-%Cp#%O<$smcBY`t)i)A;oicXZ2g&+Bb>B~Qb?xu&(n6m^*xZ~hNweT?C zySwgj`Ln;+GUb%ef9T3*diTGqn<2#<-*2f&%nlXX!Xi_!+VIVgMY%Cs%W@aWgsek9#OZZ@uP}f;LFA+9t1q zYGYb#@+7uovy{tMf$!Q|jgaeucUy;nl2O;KMXdw$u-XbYQeS<=f4p-d*^PR+m79&0 zT2rfFfN~TtBJ@Tp{BJ4!0v)Yb_^{k8F)kx$u;Nm zDLVW>2Hqln;hw3nm@e0>R&+etfSGa@I<3_;-7|Y8wqg~<%jx%?=|Zaulq?UjxPLx2 zw>uf-6~@Wj$E7DK-3R{n3ppF(zWepU}mO+AbL^(vUTm z`tB;GIjfuv=X?-B|IPd0H2=EI#qezAxaQvI(w&$Zhcl1FHm{vqL4HSmPvD2~3W`CG z_nsa)j(4zrEVtEHd*M+m<@4^H2iv?ZfZ9 z2Yvf+J7tK^UbH@L>{{C7!T!2OxAwX;(&J~X>xkf0MQD^_#6jh$&aBvYN0*&(On&AG zlqdt96msQb^J@RLZEJdXRVu-TB(h}P-*NT|Fyqb0(uT?vm|UM2FjArf5^l60;EK)v&?Df=`2goZ5VW8xIw-cnW#Vn>jjB@< zdw6XQ_yRW1Lv=7x_7FH{#6Fh%2xgaa4hu>WjRdH`i6dqd7%ue? z9D0c33ZKE9u6x|V)#JZ$qEO4k5qX&$8rRC&cPtteU$k57;>+Sfj|uGLj{}s=x31(j zs8#{-chB@=tqyt8bCB_k3n38p%_@2w@U*cMRlimqF@nmbDxY+p?k8v8nMBOayVf+)KT=jh?j?*{1B`K>NTk*iA_Mosu}}z> z3nu{0Cwvjd{n2s(f}a2l15q&Zu+8IM&f8eOq}PV;Op1?FY#d^y`oYb&8RPXL;$Ijx zUc0fFQaobzJEc*O3=N-+d45{?X`x-|($Uk2bN2I2THiNi36HQ7h3p*#Ye1ISj~eLY zvIBQTh9*Vbg}7W2OeDH*)(IEgbSi-TOn*6iN_s&WURd&$oeJg%@u2*+_;*PI#&mpT zuQbjliJ?dzeE0YBMETV`VbG<`^M_|=v_(PgSTDDb$jhs2bLs35*#pRFc$!htA6H8L zR}I8>k5Fi3J%=DqCF+ZoH^XYN@KTlRq%z(TDkSyAtwzO7?e%&8*8R{>bAzJ{ZuwF} z)v5I`PE4WTi<7hGYeU{=XvO5qr~Ng3ny$Ueb)6yI6shZhWTWfWwZ*9fCc*7?VppR7Hz-}ia$`?}(L7(AE2$g~?bFsP&B zGdJNRIsKEndnvwN}2cU&NC)lqEIw2PC1 zf2K=gir;oFzfry-I+V~2Y5y!vjjyPCWOh|=u`s}WX1+uyL1D2ZKROz^K9t(k^}KgV zx2QnwX-e`9T_XFD{PQpQ-^ij}hx0MUPl-+C*Fy0+vKy25zO~;$FWFrMCf(VF$UrCl zMSEGrDa<`YEQS}n&9Y}vGV(=7ieTPNS={J#{qleJ?IJPkGs(m>Ust)mK<*ZXTGI*D zS{CqI`M9HAx^hdTC0>nO!L|>od8lQFoIH{rT|VNDcDUg@!Nqxsx zoo+gddayTL9=@j9+coX_c88&H!`FtSlCpVndMuIcS-0HduOQ*J)@N3gp5P&WRA+uL zheM^+%UJR1EG$B1(2wrlcolE3{E(1_{Xa|bd-T)Le1HamFDio>Oe0PiPUWw&a}(Y4 z<*cY^)*-8t7&g&k!Fqy=FiSX%RBZfs{TJAxDK?43lxV+Fw#Z4wobt~z$?~MG)cj=0 zjF_~<-^jBlW2O672&BN}^!|vpovXf$3`g)Qn@h(|BR#QT=ckOpjQu~k`p@X-YA58L zJ&8T=hZ`i1)7A9)exc36V2Oj%$ZuqW2G|--!R$f}IqT&mwngFL8dhHd!a1K2?_H)6 zvDpTNhPC5!`>=|co2F5TzF#jjtTD(&;;GSgD><<(LsPfB7=|{KdryW{h=t>oBH`#s zx(Za?_)s@2%~=7>QIGHwU!t-*V$Y z$g~gcmKfoz#3&Dj6lV}s0w&s|W6aCw{e5{b)64FpE_pC^xfB4iNc(S;t03%H6ks!7 z@QC^Am8~Nd8RjZE3+0J zMCsXdwV1n{0{hjW4;gM)(&uXet)75OkWKF-f!OnIGO(JMAaPoDF^#=c|7s)xfBN(* zGZtGwA&U5VMV4JH#(SlV;$|~ao&aPPWgs&{yuXZ{_^Tb8a-fP}{&K$*I0IW%Gtbn@ z*Qj9tl1Pd0FT_y|kA&6D7*JwD{uCX=3?uk#iP)f0n~;nTf%s9*c180M8c1>}tR@&; zf4m$rkoA`+j}$khOOIC?So2hpjnYKW-DsRJhNwf(0(sL6W!i){nic;gNQ-`D2S-`a z3wGaRF-sp*X#fY9Zua&E7p9N6wYnud(3Dq|(dUu=U0D@mGumMP{J5xDMV=St|Lm?& zCah8GdQq>;Bk%mYA3|K>GjgirmA=>vic3nqaf2$KEa{35RP{EJIxkNN82;RvgKY)X zx#sq(=~$?gj~%{#@~qxeBoPy@C?rA=aUce(@^$u|0i%2T-FmD;Wr);od*G9te+rX*og+sz zFrL37b7)|kXBBq*0#dmr%lli1RUj9QHJ+r{D8+*I)L?*jBrNdQam`tZ z>ClS~?S}jVO;$en!Mr6Rc*pODVCCYCX0O}!-_vu-e2b~%+DxW)rQ`bL(b1EL4N2p^ zwU5VCY0V3Zye^Lm4b7{$M`LEbetd?HEleKDEyA!=df*rB6@4%BMD%wpsm(QW?8 zLFNw>z9Gp??2AQhMZaMRo{GWh&tk?CZkdV)c4m*4ULTM++(L(RLYTd|x^kA2@7J!0 z@=m_AGIbOTgn09d&n5brUv1sG*nwXE<8gT9$w=;KIKpB^P?)IBT9=FU*A@tc~i+J2=|{-g2otKPUy})uFZeS;Q=Z8EhQzg z+>OHE?1W|n$tZO1*;3wx~LvD-U^4>4VNli|$ zT5XvXx-R7HVJR%p59VXaIj+7g$S2lGdiNQVQIT#_3)dp>yXwuaecpp+PD^7UMK=xH zbB43Fd)`agp;{-Q*BJa9EyD{uOi6kbz!q?PdH4kLfP1f^AAi)xFD^`HKKXk4{Lz9H z=A{rM1Kq-O&g#lFS=MLAu*gMmEIgZV|E57HkQh6i=*03`)`>y5&3^;%t4tvwdhf-g zAbz;xAfURJ_GaZZ$9Hb*ESS1pkQ+Kpu~nUlqG+)Mb^_*?I-lU4ObWLy^-%#Y|w0Vm*+m%N0JKOBdk*gNi(tv(#^@H=cTXLWKiA z7pYv1Oz>>bcu)OI1s?g2minp-q&+MAMGQ&C(aJ8yU@Pimo=cp(Rw^mY^YnroY#F|t z2d9i5u^U4Y>mG>QqYg;i8z|>(b<~I*oCMuBWY~)=0}&Es@@F@o?vha#`Px*nCUT6d z3=F|lNy0#2t|%GCgtPkQLt^c8c7Kbvk!s^Yf zR-s{kaE0;Gi?ut2Kc8@4JSn{7rhn;x$3ix$Yn=&!X$N(aUjOFu8BX*odY-wMkSf}%rF>HCkCT9`;&%u`>Ic2CsYTT? z4xN>doQiRt$IoxRyd|n4y-c-Kj8WE!#*a|hM`B zNr?#2-Ob$I{Q?8Ovt}h0TUHokTcH8hzgUKnT+cf{#u!Mfw)ad9iSqN^Xk>}jfK=TRyhQ|&`j6EZsf#+)^Q*3Oi43UC8z~Zzl|gLOpY(OU zm9&fL&2)K7aN#)agg6e#R@X-62HJJ_1`448Vj$PGh||_EboBna-PHbgZC0eRZu3Xy zp^-Pmx*KuHCw0QT$?`ul!thx}x~H~=j>bkq`5toQ1J;O(3QkhEmJ9OkE`r9=o5e$c!Vc)8YW@bL3_ zmljDq2yVwY-=aoMb4~-rb4xu#CG5qGVorQo*;zqqCBMTCx9q>F^PYVv3j49wzxX_f5Uba7G?>|qazjCkr)eS@A4`Vv&JIVYK-WwW%?Lb9a-&6XeS+u-h``f zj~MnKmJtqXP^jGLR1Afh zesVW#LbY`}R~cj=9V>>75asBky6IS4=r>jh`XMeCaUcw&r@b`xUa*iEj)8e_SbXpW zY(1Z`6~-xcN$ooF!!W@dB~y8sG+99Z%_=}5CQ$m?wot#VzvEV|G|L!E_-aKDD24%d zMs8?!?)`Yza_#m)ZC^qy^hxgAA{{x6TwnNyJMfU=far z8~h)D_8yBaO&6=}ipbu;dBprc^K9XcB5zdw^G(d}c3S8imr};zkuU8B>fhw}W%g&%s z=}~ncw$)7vEfuXW9>Xqgzu+H1a$wnfy1UqBU5Ta8Y#T+0NR5O${P1Ekdn;=5eSct? zD8~(w$d+|^MRCak>?N_&^d0~_!P^7|w1&GZ4*#4mQF=BTy?ZVr<$*V=rm2sweLv^VLEW=anh1=fC$=n=u^;1jjs0Zg2)6 zdVJPnoXNL55T5~6hPI&zBJC#Ce9fc<#)5nGL*zLQ+<-5M9jtz^E{LLt%vWdXCBtP< zs#enAN>gl}h>(`z@F|i5RFCKVm)cKl3Y^PwMLsXS(ZBRGlYT4vo*v?zNu?|A?1(iUCVC)O{{J?Ih zT-zyI(;2vUAv4vkapJ^Zb~6-m)$9Z&Ts#(<`z{>HVs9#Gb68la@$s$2m^bQ_;DEjM zL;)uE>dfZLCkN-ZMrav-X}KrgtwKO;O1rZ!$?;#^3WnCI=%{~b=^)EbnDnh-z5`_J zDTO)g=8a7_NY*NmPqgdRjKHyy4&>Iq-^%Hb$H6Ji+NI!>`#Zw>n?L!sLy7)8TcPX( zs*7~3d=m)?*J#f}L@&S?MF=t4RW$Hr{7kE{Uv8QH=lBA6u*u>qOox*nwl38gD=OE3>C{3Y|(R4 zlDDYMAYfOXzj-ZBDTzcJ)m}CHHNABW4m&T~_prvb1?IYb{yvp!X|CKZTUzlbE4r9bNNcx#+) zxSFPREaus){^>M(6J3}I8qfCAMvOuWc3E}PPk08ILgvE%^+J7D2CG2Vpt{2yi zw48t(-!GX@IaJ;GYt5W)EFm(!GQNb4E(STlgu6L2+6mpo`&&M{92?e;Yc+(jF)m;m znuEF}R;fbVpu%e74KH4!miGj&-MK}rnqs6N#f1oKL#wA_#S6HbSR6Kp=pL!>9vW<1 zrNeLVVV2?|L@WA2O3T^PuWI4T`5|^2lxfLH3v>aL*LlAs>~T?n)a8>;OO`v<9e+Ii zCnt4YUcgtbwlbwzUN&O2ZKZ5BRpUkN3^KTWoRnK!!&mEWpYo7hy{AN#o4%1SC$gh? zB6U!wHG6bA2Z*~g?HfYIw>ebi1y=nL17g=tf(+z)CPI`aWCvhT{734nBdyXe7^lBH zhWHWTSc*@}a*z8|@90$y0R3JmNA6bZKf-#tOZL7vMqvfYm4Ea1Zuoi2#$8J`$~U;X zIm(!@-Eps!=B!K=Wjx#GUn$`JdH05MH7hOI*Im!)(V}+_&iUa@Cwa=Q6n)AbD6G(B zPl+3>&LeAGZK)24GLdh1axJ%#oRH`S_CdlLWQq<_=3B)!FA>wr9@-fWxdUg5AE2Da zU;3U+%k+b_G=N~*drzdQz_(-tT)iF-7LvHbsbmXWL{IR|3LuzuQ<=k#t_H$nzaF%9 zS^krsh$eYe%%}PenhWQ1fYoVgt%1P^5a@Nc$V_X}Uw+GH{zIjFCqfgLfxH5VnK{ov zlSLsaTiY^%0>4Iq+FA}Mg%iYr%LL3w|BJ%zzGpzY-(Pp9>_Ak4KGwXDHrdF`0dv8g zE&nk9ywG#>(*O&USQ*`@lYp#@ndld3fMzLoAEDEsv9Og8Eof}i!O<3oZDi$35vS?< z3@lDklc+O>0T?lSjw66b6U+gR1C`|wSm2%2w}T!Ws8=$#y#nMizkYaG=XfQzvV@%x zUSjyCm5r5uCWDeDI2|A;(Hzv75V8 z$z&(sv!e<$Tvk`@mDRHw)69K zq+8Kq{ZUBOA9_$+r^vODx?E`NwtVJI5Nq(SQoUEdb3S$1e?D>#!@3Jok{_i?aogOJ zdJK$J@NK(jvs4PH0M8^_cxIsge?^6r$FaO(1@qxN2q^YqP58sPE)%;hWvTbG_o#`)j}lkSd-PGYC+0prk8^ zSCqQ((LGa;ajzMVJSx>B+91N~gpn~Qn)?NPIAUx~)`_lK_}Qv#A!gU(Bc+aU?vjm? z2A|4){-`Em30w|dxxZEVk&5hfCVw`98;k&13v56H_h#z9{$1pbZrYhyF13fPc?;bQ zIR+Y7ZVGvu+qaRE&53l!g4L=+n|}`(KVKjkPwQ4p-fq~Kwd+Qg5%@p91Hjhej-Xus zGpKNth4)Vn(Lf^`gX~nYb6xl_v}h><4^}G0m2TcZ@&@I>nHHUNdQBXG*d5g^HO#W! z!oWmDfpC}yO#%5#p^obLT&kV+Z(%B&M@UII6DUdKsFM5v7=aP$+lJ`}P-#%FyJijCy65A)~6K-ndAnwV)OK2BLqelU7>Q`dI z<-tCRWr;;kfG!AbggXD3S$2l)7l4hD1Z7AY3fOqWRl4$Ts^3yH=>Tm=)^wEoh*68o z5zJgvCwFXQP6I4fMB?TEBulOkjuu%IC@bprEu2j8!-S&GumR<$YPA0n=`W+G)AJ&w zCRPfQ340JF8SvyI1CbMobdUGWBQ_u`1`C)doD~nn!Vc__73GZ>M35E$xdW?XElGUf zOZ3SKgCx!v(5+0EX#};2nAz6!9s7Ywtl{t24M^bGm7=qYpmI_@PlVZ}A$197ca=|_ zZ7$NOElHeUy%p2u6Myt2!6zTKh<#gRvdU}s`-4fD5@~LMYO$y(B&>Lr?8pEo>3|A6 zi{0ANsDDlNUmn-TR*nGx0#C7^UNAl#e77x2JdU$|{*@hzrIhb_7=sP-bQ?2u{6P^; zc254^R;y1EW@|w`LaxDZqW}aZ>bf$GI9in;$lfobh|Frk8PMi@nF_!Z(nk^z5Rwxi8$W{uWQ!4Ir%YW)xck}6^zQ)CBd*p?A^#~rh!k6Wi-0Jrl93g zK~u#byuO(v?;D2%6&+RqRWXgCxNNm%tp<(pPaoMjbepqB$VGC?4h&t`!tq6d=KY(I z7xA!3j~ycrXG$d_R!4y!P7OI4rmjjnY4BNzOSszbaBY3uN??>Y3$*?(G_+X-X(ZoF zziU;IJkRq!?2{6EA-_}87Wv=|%q83L4Viy~>AzqO;R+q6tlv?`SYJ6jjhqy3=9EK1 z$**e-_tYH0X$)!E9}1hYxe({W;aAM<< zbD05xG`d|>KVTZ-TFzrw1s!UI+MjU#Ozxl$%JVz_uo{7w70I7hYUZkazm${ero%b@ z@bTBjUsXJK(c;f76|O&c8wTQ@*J#d`QoA4#Gf(%~hH8(EOB1-evNZ;&QJliNvU?mQ z#%RFxJ5_bdCk~dE_!kvID&1pgY?Rg|;yKk>ZTCfqeUEbE8!68@-U%)|5cA4Sw^QVX z_bl(bd3~*d+EKd{dgYTmyW6N$G#S83ygH)nB9!2C_>-4HzcVmFalkcHRNU7rEDot@ zFrBNNXJ^l??^v5P#E{e9k$md=wd549zoJ_m_s+7u*1?|OPfQ5y4hx9S{3iuzAv#d~ zNqB=(fnhRB2s@=2%_~H~PhI!3n~R1+DIV5_d0*NULWZ=!!g%l4 zqfbRMtR2STbl8O0T5GE%CB^yi2vK`h-r}$EA zp7N$YLh+0!IOfEMwmkXnnTvjizoMTHKP7EL^g0mJa=9M>hV7`(Qfk$+_eey3O&J?f7q%(^f1S)OCO`@348 zf<1tdi8GH%i67I3VJrW zy%9YFjg8y5_1)pBujl*Ufcr@8=#9dmJhq-##zS#?GKftdA&yl0-wqRj?9jvhLKrC> z{7cu^Jc%?8i~1-ZF(E{G&+=GJYAlEdQM>3T7ub}TEJxW%%=9tG+iQE>qX_MX_|jTG4Hzdd&6of__wG^j_)op5^lQI5U(4;APMl z1CtQNhUk11DKUEH+&h#@T8%1Q(XY=BYSdzEYA|eNr+(j=TAJ@F4&vn*P!`9&WaA%O z3`$qYC$E%#jV&;5j=s64ZWtT=P82d0RFl_pHv>iQbi&~uf!O{wc4<8j%MAPWal;cN z<}w_bJs)*X@;pffAG>m*O!MUa@s^q?dnokO%rV_;m6pGuv{&I8x%{$up738$r}3V# zdGVR;U(oD3;HN!r#V=NGvt@~E6WQKf13rWAzCY%*Es?r; z+3Uo*L`)(iV$64n7>&1T>OAJbMq)u|*OiB<^ww*5F&n|!;PXMGeN~XksDa!1UAJO9 z75=QP%!W7YIfG7l6K=2`$x2#@zoWCCTucep5cc3Sss!_^PX2vQV2t3dPozoKM04WP zGGW&u0fw)Vfbx`>EKVR0b10-Rwv^T%*0h(-Z4XbKO5QuiK3DqsDKLVbEXl=Q;iq1K zn!HnjK56&|Df}lOZm@|boa2L2z5XlP1$@U!74FQ1dqyPAd;q*d&$$C%lJ#nn0GQyU z{0QhDLGlW1Fo2aQ&{djoc%4J8ZCc1zkd%xpU7Nx8a3I+J4Nl7p?}?}vUKf-NtJn+I zl`A9%m1L!&YC)bF9!nxf$E3hfHJvcY<-5?1yYtJj`I>@@3qNyDJ7ok2Cje0zeGQN| zuP;P&u+!ocABBr%QA_JOFbxruWA}Oo!il};PQJ3{N+cDNBE#{fx!i56(%Z*h6A(N{ z0vXhxgWCgrvjN{p%JotYQuo1r^?|C~i*Ne{QbboQXzY`c7&$LEjCjY^hS*SAhoi;q z$G&XT-Nk7~VD%zHqwD|&12r~|-MWp9k^BAcP~n%S8MwgyRl&x)7HL^1?Ke(e}H^G?NBwsG;~{dCV62NvjQMB0KN&Ddq`TS}na@(eGe2 z7@#JxGQa$U&-O8=`;@t8+`(3EM|PtOS~SVv?l=d{%6PAdnT>-|eAtCgUOzgNRF?=S znu{P(rza=1Ta59q1$I}Eq#3pY5aQPuHU%KcENPU~71wtV&$Z9ts(im+X#V~wIR&1p zX1iI*fy=w{q?#^w>t@v|E^Z@p@AuF6N!(>u9iGMp_#7tFG@rJwf=YG-$kS~>6Sqwc zj{)L@i|DfB&*WA(ng%nr_tGrU<5oqsYwFiwWucnZ1Ee?+9uzY`Y_(_HX_duq_Wm25Me-CA)Wu|4O{dS<5#tBUR&p5qcpi z8LJq{IV6eo9VFfsdkTx1jjj7F+q6Ctf)We~y<;V*K#-6T#h!WCRyzH_Oc_e);-$SW z!MLlTBhqz)-`SUa`_?CZ_U*9~X$|08#}m61WH3M94LsAdnQS8l!4|DDxx0^0kj7ZP zo^y+82x4g9!l0Dyi9CQ!3iY7xC*`4Ebf+HBcExuiTyJ}NfeWR&``RC{+JL9WS*p!> z_WSpdZfMxae`!4CzEFxOyZU;0!TX64xs4B9@}e>~^L<^9uf)$fzF%^xDI;Yrml7>? zAv-``Pt&Ho_|wF%r+wO~os>a*7ugsf$CH^2zBl-69c&|nbSyh--SSZ~^0`WZsa zO-q(tvVITkHcm_BdmpCwGoM4J6X0y-5x0T4^YpxNBVfZ?yDe}8J}6FPlj<=NN?M64 zk)Ej+x<4ALJ*v~JwnP(1dF3{;L>EZt2tkn{l697t+A2x)&Syx%RX}eKEsa-iDT0DF zq$feihl|SBL8-;{wMt#gH=~2G2bJRLr+6kFh63)hc`pRlS!V0hxG@P*C)^4v z$w!M_t-;n+Zy;n?w)j8-=Z9=XO5`uo`xe!K^R&RIvgI#jY2QYVtUhoFfHd(An|oM` z)G*<&79x$LVzU3E;w@^~7;x?7)q#0g3mDR*UAP(2%Pqpc8Bm{uq+e+2%qHiB8VhZXk@ z4Yhu4mJJY7%}4iM8c?$SHgH@?*^ULaAYa9{XMkSBJmG57ACy>^;bc3JdiM54??~|m zz`$3L5mg^1QqS>VyiU@5UfUrRe<^l~FU|VWsY^Mg1RC7DC>eQ4R3-B}c7H~n!P**d zlBK*tP8j@zW>R6G#e~Gn^}1YvH671)LqG*Xy!a|mM_mh7Z0&eSuHboohVG298K-Knb0aMo5J|67j*B)=WtX>d@ z+9#y;C=IX}4Lscoa=j0>K@-D7guhSyalaV(qYI!7Zrbo+FRd-3fGNe*-ZlUzCZ2SP^|5a`}Py9BsKmp1pu3= zO@L^l?2)I=!oB;2>F%ik>i@3_(OL>hxOeZXlyx9M1fDE!CvP8IFrYwZ|5(r{!<=;G zxxp)zeK&n8w0Y)v0Z3ST<3W8itc#cp7!LTzTMDG4>U+G%YrGCISyu~ZiMAbK{%u3K z8e{#UU5m^+ii)1UfJCd@ik5UdOuIybKYS*-YDDz6AwF~eK&8s{@Gra$egg)Dt|Q8s zHv@k&KN)vE8TDe)i$*yB|7t%(AZLR#K9U6g_f{2kV4`CE%WwJ)3M{xb#urD$Opfaz zBZQl86bUcE?2shS`*eJkO$hMgGdSz{AmLzmZ{Mnx^1yW^;VIHZU;@~L85X*BrPPWJ zb|hmc7KlBpBw5vpeqSCgcZIOTjmk^%=|3SFNbj~JVxBe*MLjt0aOPI1cA0*L9N>kv z&TJerB$~XOnS+?^EO2Mqg|2IqeI}K!zBHFHJRp$>q-NfXy730qe87Bg;S z(~nqN;LzsY@NpIIEqjd%{_L7RnclR`5;lqnXYtL!AF{T9&)%;<2722-)SBY$yaRng zNuB$Ph9ni#g#s%U830uX>=V!1JI_7{{wYjF*XP^ebRD`QG2nrFrDcj}IZ(YZIcM1u zcp81-P8o9m&Z?v+ve-B2i;@||^J2p6HX`*Iuui)AaQDyRe6K##QHIiCyQ=vKv!oes z)`k@SCzMO)6gd=)ST|v@18zF18o1VJYDhtrwH4NhP&RRj#H_l6!HW=Le|+L z;b&=*rYjw_JCi8MhV4&mH7Zc{?HwkL5Q4ixQ~j%bfwg zzqZ|4dbIG=tsNy02{ZzS!jmDQ-Isv>Ifw$9!~{x>0+dp7Njmtwu3?=}BbzVxp^xB$ z(3D{NBIGIQrdxMN4|XzW$643{ZV&BO81R4|@`YY09&~szn>loKiRD)oWhYCCS{s&nW+soI8jdpMYp3|FklBLFc~fg zZM0#|<*dd5LhzLIt@{?d@y*E0=XAV+=2Pi2rnphS#i56di16L-xF(w37Y%A<#JU!dk)pFs_?@r2-S^@6 zqs6`?h!u%2FC>ukM8c;16zf%12q+vUaf~W6d*6*9X3Yq3@kaW)i|LR6$^43C%AdWN z_MlJMQ0{!*!R^O#{6U;y;x$!+TWo@?6#q}1pSv4xm01j)G)%_t_;3p`SC2ad%vO{? z>pyA>w*7#0K1)pjk-~@-t2jzX`Bqg^JqvhaLfvYvg{x}@E@n2XAFBTn+_SuD_@{bY4?>+t{J{C86KB@%Qup`f z%vGw{mS+9!>@lfxt-Ms>CEEk$X0AIgCJE=`=biBf53l}6*d6u0vJcx{BDOms1S`ki zNnX&i*Vo(i$>-h*o?-ii2Av$pfIQ;6sM$gGXG!=>iBw&W)NRIO{FdT6wsxzeC;NbL zRVBEWr}N1b-pO*i*Xxs)Ik^!Q9X{L7{=CGr8O@3_`J4C4|=}wS`@5RTP1-OV*9vApCVLzJ5nU^1_v1^bFuZr zQ!dc{;-aI9PKpIAy9Od7?0DqOj#;;}w9_%`f>gWg^cn*vsV;S>5$Sb_oLQcM@)F4G1=ua@(I?Hzhydix)PBshLdbpVx*ieHE0 zIZCy(G-DgF*Pn4%s{RG;p;cC<8>dxvV!gFHSnO_ReohBq@>)I}^Y|sS``Cx(pjN%M zd`yA-_T_=t86`c^z{&UG9PlgIR8D@ZBq=mgja$Z_ySm=xmR4<&J z%R6VQQ-}oFJ6XLj8?D$IvKS7VAe`_WG-PHFWfq0aD;_Xmqr||Vp+lXN;uQwqb)(-C zR6NZtu^1h{C@w_;khvN3&gx$X1C03}XDhT7}(2S7B^g^!|!ba|4H@go79e%{g zYYRuRRYGJCJHrKY2_u|vGYO+M5Mi75E(C`}Zvm6a+oO@7M~tP;xtsS;wBPqikXfc! zXA4&RBDchACO}ojW3oeriq~!{;DS{`!86A_?KkHR<6LG=-QK1$xROafXmIEfUAK_t_t(-dq%H z-0DW^O`SgI`rg0m*8jZ!7ObXzQ&1B6{EPIj=TKqjHe(rMp;pikfjuWE%iq2v9rU8- zQG?NfL_a{h3iP%w3Hqg@gJ`M!5ReYT98kA)+i@d}P?c=OF@324 z=nm5W58udC+~oKX57J5wa$i{H;=E=l84CP7PKe($Cu1 z(juW-)oMxFO_n>vMgRWz{Vlo&AL-mof>O6u{3mYh?Ur8Ky-sKQVejRwe{@!|# zHSU@N5Wtihbkg+2K;C{%oAy?Ho{a-@S?j1_JL^j6W-dQ;j|wCJc9OtZ$|P38^BJ!J zHwM<8U2cw;o301G8253XOT%9rl^`wC`(h`<@nLEY8s=^;iLIx`WBwfQp@aT^MOSxv zNW-g1cJ31Xh;sZZOx$>z7emH^2CwP{!8VlAA+-IPWXNRVar{+E@cu!5Nn+g(u<30gq zB0rl@sE}JI(_$IGvjl45j#6{BD`e18lMsB#_+|OC0_O*E#^|%-PaZmjc5r5kGU>lc zKsAKiBzpyiXteX>(rMC=86HX%d zv#sp7NQw(L$cVbv6WX`qp8G!3Bl!kD>IaBoeV78oKpGq69bg}-tID)Q9dl~A>u;4I z@zMRuUkmAWe1w0GyL<=#Xlrm+lO*DqpLGP_Jyr z6o0(3wZbtfzBIu{h$=`zn7m?+a-{G}fQ3g(tn?bLH)QetZL1c_-E@VYnhIK`{4O|CujyUhEa z2<8+&*1=3%SlluITBn6ies`}@WJxH+;Ki(Se|Q`YXlOYqF*!+NH?VPfb5m$gC3Jv^ z>%}|+rm%81X&R_x1W(LgxXtv9#)qMp7ehcdAHhaR;jgXmE#}*Nopo8Un)18i12u@} z+a_j8UxU`aA}pACS6NNOyQzDmPhQO9-lN*E&xutpu9~q2e>(-GG2}GiX`ci#9Vx6{ zBN&Gy{)H37wJ<{vC%)_VzYPzLiPq%A^*9XfrQ3wmRp+uyx-oc zlSDXfhGyZ{9%@^c6QcvW#Gmy9PgO5owv7qK;W`oZbM$&XEn>bK$f#-+peZnz z?ocegK@O6dUfUw!|y= z;0emY*_jwtFqN6ES$Y^eAMa!7m+&6G5!KZ}fKZZ1C3tjAIVesQ#KgntE`~Agu;H`p zvt!Qg_Rkf*d>ClA^C9_6ds+KY$na}tE_lMwa#ZK<^SSXv2BbE7EsDO+~jl&)VkDm?**#L0{?W~!-LZH#)V6){dw-*(dEru741gr49U%^^KY_CMtzIV>@`U1G$C-iRv~VQ?!5aB<+>ePH`|h~5{gB!=^VHvKfv zBxN|qs;o3T)8_5yDY8=HV;PuG4HsU~vjj0Is-JAyAbrBgkDm?<2>ZWHHgsUkVrteO zWK@FQ)pexv>>0--p8SOBQN2&(30Di<&@IV*N6axEcmLOMj@8i#peHy`ERh}CgmP)w zS)B(PK+r}|f2+uon{T*x!D`5oFi&9BtMRY^q}8Y+QyUWzQ6I&K-?VU=J9VL^SK`8@Um%q&3kFt{>h245d0q|kq-KLNPRYNwZI)V~@sewy#%h3~M!0dA*`}?YSweM7&>0$Ri?9FyqJUj)H^WCPY zG^wOU_N!3@fU1R}?cFp0vG!3cgQ<(R~a}R7A!=5)7V8`C06*ddd%Rs$nUFt@PqRL zwrCY~(3ViQb$(lYSeD2<4sAx{Em=jOV=KN8@8KHQ4}`CX=B5lNjC^U3LeOD7W9`q3 z|Jq3h9P0vx zKe>Bt?jbBCAD&QN>XWZ%VZkQ6QVzdJ`(wh-D~?8P^G^lk{w(L^WL^l$b@N5Ekes$x zs=XzlX|g)zed%(RX>5LXX6xA%hJDl*+>GUii+&R=T4QRGaJ59`NP-KR1F>+(zlkPC zVoHTb%7M_6P{|q)nrfk2QCZW<<~|ef3gMf1v^Q+tDoWh1Nw>(lu1+NwJ8y$Azm&J49XcpV7ZgMpmQ?>?EJteca|xZ)edLo+h)2eDfkf`5%uN`|J*P>yO0i_`+*h-?ZI zQE+LAjX^Jg4;ELZMJ_f!#$1|Gw)W3=vFVS#a^P!efIRv)AK7rlnXTx_#um{Ps*g$( z5uE*N8|wZL<&gyaytWM;NCyj(OMwOYuD&6uuqI`VJgm%C@S!$qM)06x_*>-Z7{pEs z{st^a@XOYQ1gz2)iQWah0BevjpcW)+wO#@SG)atenwxj~5u8YcwWZS`L~g7xI+$3A%g=jnHKA>TVDE@&j5OVQ{fnpC0u6O7S+7lxDr36ZHkG&Xc8 zwX)ez0RBxq9sYslnhSVWXYs~1Nb6Nk{1YJIkyAE*lz-$7(@2JM0m`g@>RlpuZ0WCE zmnbt|*-XBWCPHXz^}g6Lw=u{~C5!Gcj}{BxN{vtlHU?d6C@bgou$E5Z18c!Hl%Su` zWs5sg#-+ef8LImkPV;?m3Y-&*GX;3;!#oi~bBXK1q^N0IkUhm@vXsk2fIw8@e#pDG z+c`VC)=BFvaaDL(OpJw}o2*&!b4^dZR527$D zloLEkoQZQspf6PRi&CSVH3=4dPv(hWUvbs3QD`Kh>^WBK^eAJz^959IEo734p}7^)al#=+BIjg;%VS$ zijUi~!-Eoy7oEKlSQA9X#S_QY2N&M6D*+`?B|R)AkuvrzR7oTP++M)`V!pCdAGk|@ zI3T9|W`o$Mfb*k#}Pk8?x@rE5usa^|yS=xB1Ri3p!&VodKcd z;@&#*?LwbZ^N>r%MONG8cmLnJ*b%`uLd=FC}kk2S-MovU!@xGO^ni&MM9- zva=sWFX4A=(bHZ@9gPJ%zSa4&dvM&D0VUztW)zBcoeEqgulMyB2&>U=fU)gjlNoyc*@r`5cL`SAl9t#~e>woc5IWhfZRWCQi?+{dW&{?Q zhtDawTPKd!#>D=tf3}$!bKeND@ucwIK5rNu=XuH%^mU3uV?!yB-~Xg2e2PsCn(_PS zH%BuhOm#g49LkjoJqi-T_X0sYOVqw!oX45Cwp3MGrKZHWTST?is4sJSu<%x&g6*R1 zecO)Hsxk>}L#I&lrk9x$2)l8mEE5P6BYxMAl)h*;>LzF$9@kDW!=lC&Vh}^R?%3DG z$H!#W9&9Szf$JLk_|4=xnpC4@zc;=iccb?h^??I!ta^mH5^?TeNtTB#3e1606{tdFf~QAECozITF_srWlwF<|6udF zbhK;p@UP2_QXXM?{@>)=<(jk_6C2=)w+7fgbrPLUH!8x2ZE9?YFwe24 zE*CYg)XtnE<2}g{okS*c!U^8HZ}#**w{{|2_U>LCr;t&K#?OXNU3Y{( z@r%p@_-9FRh4j)wM*fl{20ThRb)nEVgz4xGhu`@CvHaYgdRL1f4MLZcbx|pN!~aPX zV&$DvyV6!&7x0pv5Eg4vpXrE}6acYx>HSE-RhbEva)OSeyyjo~1pqI{GeY8Ny{l&_ zp$}A#Qd%=-B}rk!OD5s=7i^*2yCD_9gn7Y?&1a*J@ZJslc_2FcY%#hzTNM+@<>%pT zsj%)8iVa{QAG2%8KF*T;6nzT(VI)fY3wcs+D$bx?!#!zCBi>7O*KkIJN^Ies|9eW~ zGP2YsW?m&+vk(CqVhsab52_inmqc!N(KZ=lIZ61bJh?hDmKK`J- zLTx5pQNBn&Y>AI48wE9xYfUuHs!xV8=>?pJZMW13R3lTUIBr~ZK95kn;ZypXnKrYk z72m|dHO%}CY*hG6_sDHeh}{W&AJsm&beoKmsp0GK9V4h0lzTuG9ZLr# z-CaJl=aF9)RHz~zXaElFD%OsNbd*a%^KWyJ1%ZS$*SitXL0x2HoH*H~w>%6ogaVuxlK^vt|#r>N2CdHEL@@@9!1@#?JJi zwd}8!&}F#gLQs*{$C5kGu)kY=L6Br#vHT*+TSS*NGGwL2H2zY5+)1Repv(&`qSdbd zEw>G79HEb{8pTyiHjxO`0Rj>J_T)`k9qF=CSS>RB>C18ztbLcIXN4m~1^rq4faGG))L8exEjaw#OePDmdjLp;&#Cxd+7Z%3g zductpom(M*)>xj=|1si>HLeYQ6tRrP1^y-N(;>3+3bz1~Nd8#B$z~cmUUdkey5TRS z61RJxNqT={(Tq@gzn%cH7&j4ymq$G%M7q(6L5~zgsNl$svjKpcP|wmpN1^KLuipJ1 zS&C9pF5JHa!P%W06?^5pBc=aqFYfK|xk-Mi&Z}xI?t3D>6HswBm&<+ZdUaOna@Y8e zCIJOX**)2IrRh6|DQBZ8_736p4<)y2%gM0OCA;rF_x=-gZ>imBR+AibnUChxvbsIP zPc3{aX`N1S*1j$0kOopmt~JQq5ki25jaTErXv%7Tn6SgJx>FmIS-mfJx)mmu;EZb~ zMCn$XMF}Yg4XJ`}iR;29ZDoSREPLj30CF>jiHx1MRD%*8xf!E1qFLpECP;wOdMXL< zi};%AuHnEAVOlv7OkM6R+Ks@pM@($?v=9QNoS5a(I1f#$XL=Pdpp*FLeMTzSV(3RS zY%LRf1gPAK+HA@f27~V-?d4FU5_U3S8Od{2dw29f0LNrP)|ZFOQ^8-BEqRtdmET8t zsQ*@P%9VsL-QQ?{hXp>QVhlL#{ZO{3`eL41JZ?8Z4w)s?X!sLmPPl+zk>g0G2V)3o zesM4ovZil4i~iHCmLs_b(m65KM}n-lFW*M*uALDOq|;GJbI_JO*ol#XR~ld0RSFXwhNPT zqn{+Z8)G}~+z8+XND?+5{X}d(R^kOAp_u{1_uetvbqLD6Kxxx7K1Q|E{$ecl=3;ba z5#gl#Lk{QDIh*TO=TNTNd095Udo8kll4)x`Rtbwr8CKE9Ns<5!-DS6r`ts7O?H*Z=T$8syQyUFf!~UXe?;zPo%}dK}PNsJMB;6~_ z=yuj$O*TbVXGgSx_hqiX9cGhGOdMQ&qPq8lr;B7WxhgF!)psEYAG3CqccL+83w4*> z`_AJ-8O%4iDkxa^x$rA1@H)@D^-Y=K2!i8|=BN%ie3O09$hAR+6#d#(&W|;?bvt)T zf;Qe))sHgx<5&FjV9%HlB20nrT!;Z4VlqU|FGaJJ-Rz*4gF`QhwoGgDiK2O{i=c4@ zlic|xCix%84|z6s5b&IWdXx4%$bH2CL6p{Pdt%!Y-nJSt@vN21-e^N?UTovSX7AMY zI5{a4b107C-{}9W`Rw^p-4w#)ld>&`9&2zt(+Kjne4Gd0)!RM)`DE(Ya7|))+#b0< zRXOeX$s8pO#xG=JZS3Jja$aSd!Aj*8LkZrw?t*dVzirYRvW@Jv+46M(e)#8j4ca=pZN@R|_vD{=V=*%MFe6 zQ@;z!gyHAp4o#A@vlH_72cabD^tmrS-Wp&&_e;TehWvZ~O?)ySyo3UdNwHAhJ|T{!KU z_h1SF4Erllz{2DsarlyMgDFTVNZR0j=r0m*)u=n~69;QkvwrUFX-NJ(Th#r(%jb*$ zV7k?N5!@t>*js<_P^g5?OiM_f;fzFy;<;Wl&xAd3*nEK+)!WhN&BKM)ZIo{#ae|>v zK~K3!0JM`l<0G2p;hG)`Y<)xuffY1Ej~n?6;b?%IKgPIE+wDfzfXzx6+T%idP3ga1 z{5C$EOy8ujYl%L@(l*Sx@~{`qHJQp^FM*P$|M73`t*@w{H zZ3f%V0y*2>cG2Ly5cuA`odrRH^^+j_J#$d`MhwUS|H!o#mQCUBZ)IpZvg)`>E{pKU zto}<*AY~r?jQ&OWw0&80`T7$0|oYe}T)l+Sm|JtMj1&3dgasnbnlFW2gJ zhng$=JOA)z|FdTjPpqQ+q#7OV-I%$mK1Cro)kI$&)9c(9I$hupr}(^or=s@#kO`VA zsu>)9Gc|*mxmt!X?mbme_W49yO=rK__${~xTVC(l#&gB{at(Qpsy%`tSK!?mBg6On z6^Sn+H8T&*3mtx^?&JmDt7$_co8KP+vf2{s{3pN7Ef&TOPJ_BE7MS}@*5{*rf@%naBp&bPkdZ}I zj_Y1pPTNl0S8RDl1iUcKxDNxmNxCA-xByeE(Jjr-3E;BP^mY8D6xwk1w2t5$*br`` z!VoR!r*V-Xy%%J6oK%22MO0EXi z;~zFF8jmuZ++h$}d-Bn`l#wsOq|QLBv*l^xq&GeWJPW7WklB;G`#h|KV_LKNb4h2| zU_G(10sIWt{QflISL2}!*a+yS4V4ca{D8j4cyozQQ!?1ed3z68lo3gzM})OK(~NtG#3cj3yS>TV%`f!|+Y8ol7jYm0Wh#TGtt z){8qSd`Jk>kpzCt8-Qh0NT?fK82DWiU4ya*fkiC@oj`mcDuWS2|FQuNdt3m~BS%Po zVJFLz=7`Sm9anfbTexy0Nr)ij*6+y5!HPymYpdo8K2bx3lVjv!{l?E64;f3NB==jk z4~N!-ZHLc(tiOWT;W9l%Ac%WjH)C&-oHhNq%O5_pV@#Db0q(w1C3Mwl4)7{bHi?ER z4Eo)nIS@UpEwprvi#2{t4!4>xo_x8lsnSl!NrQMSy!(}$4QnE>)rV(jIfr;nscd4l zrA{_FEN5MVNjT$KFHZUr=UPN(j78i_T?!hM<<#m7MU^!iJqD`~eP|tl^b&GWUHp{v z63epzIG6%=e(u5dK}fS?JzQhs_5{ynO(aalnN3kPU30t%$-e6-?Y@HuK**pbjspFL~# zA^}+*SxYK!$J`$(q@Mg`>tcZBrC;hh1mDas&5D{mA1L>^7g#SVeIVK>*Yc>tqQmAz zDCw|C?2&_qIgW6XuST_&={Q9=RPufzgrJaTq*<#Ijh|&TI2N%z~#cga#GI(dDizfk&3)n~4%hxlhRnP=#!N(yGx8s}uU?=@> zAYXD#wIwy<$}g`$hXg&t>YDg&>Mtjqdp9iy8pqu70t%#qI~lGnU-gY0&v-Zk5{7{v zgj~4VK2fb#-40SQUtu-pi@UJw1~PsGkxM3^aY_^?KNnf$IpkaO(E(@80EASJ1jUPr zR1`KNsDRRrbEcNYX-Jw;z8n8>r^hvDhILYcMSQ2K`|N&ERz+o?5JZQyfiLEDDO-Cx z!2bT83;?4NhL^|*^&Q-rtNi{r^TGFZWMxl)kL`iurBXaS*dcB1V`kK{NA+SZ|2ClZ zhTkm<@wr|jD~~w4@8CP_q+NElymid^KKD536PT?AcNPHBxmBk3x1Q^56F!cToYVV$G%q2+vjJ`@(|q`3T4`< z``k9zc_m(~`r<(?Tf~R)+Lh7V^wJ_Nw&8-~h&#CFzmJiT0=!&km`qsj zukhRGgSPE9-{;RqiaEd*QfPYccZ@nC5$`c8miCqo&w`Rd-9!kVA0)VP`|Szu`8Nm% z>mNfr+jxj0fj6`F27cZRwu@|&IsnTh<=~auV<2GpABcv&n4-9{-)JpV9^;(9XjA4J zD?Ev_EtWNrxw+y&Bh@Ak+fCW3iGS*MpV zY27U~oES>@ag;6%S~n3QvJ;&@nc@?IU8!pzJI~vi2!I=U#d!&`5M-z9zklotoa}?; zY%)h5nk3*SpSv!919L=K8~F=&g<}0?0af}r2HZve7asXjRT)J+pzWWxo1uN?mJ|Js7>)+C09<0hBz*BBw1|8t~onL>g-eMyyHyC zSVdDBVHaCgkLw*i*v5JmRZ5!@~B8AA2oZP$!fO2mHgA7s|Q{ypEUyEd?Q}HUG9`VO)aK#gU^{23r6}lWjLw>XUjXzTw-0F3TJYB3>BPT zlX4?t=!DHBvM659B(DccgR!iM4{suo5L`{fEH1c){G|OojZnjbL3j!Ne`(zLBj}M| z$b|h@*=cEt2EBQrw|jVgTsfe+CyR-pRum5TfDIl@TVn5qiur2kPHM&dcblfSPrpj_ zhA+QKzwXe(Lyf<2yFM6zQrmsyNdV%1<`ihb7hmfNqABYn_dYB(<>-a3$&;3t7Vg)d=tJ~h`+b?Wf^uTw(!0|A6 z>yhe{!}IeViSA0q96_D{~ee2L^F(d35%FA9TBd{@X_ z!$r+Uo-=;BFH0hJiscYzxA>7jwIrs!s6we^A-Y=L?|JJ0(}hf^l*|!iE1YqS3=(d~ zNwj)8cOTmu?W<%iE9YOASf0XFFMbW}m0ptom2~Cmh9g04FHJt?$uYN+z-ofV-lSzi zVWf(`y+jdEnE#^M$tS1m<#GHI<)QXnxDJ|j*K;M)dAl!^&+jz{*SHBdnD2|8ixuos zrKrbUbMMq12Ihs!I(7d{^ohs{p54DFBNDu&!{1xe=iT>Do%zJ~ae*QiO*{?{;SEn0 zBN&yMP#pM2*Jl|=w@QLI*IAKR6Zfs=zH*w?6Q|p0dpf#Mkrb4haAiX~@Xi_?BzDY1 zKHk}c3wmzucuitmPQKI?-C$&~UCQ-uJNCPW=sWGdFYipZLC}auLhb=S=(kAR=oqEO z$Klk)!2PdvK`#rTXxwLDjPNDJsOR&8AooKl^%9NitDgR9V*191lunV)tB)j>A$dY_ z!9qkn#8wH*k0Hp&V=E9JOin&0!0r6n5vtCt9;tJmxW4~1bS4*J$YO%8!%}4kvfSgx-d@mEa+F)fW2mm4A{|QCw5Q(% zFqW?Gz+pE#GWCS(*n9gl`rVhv;cgkm+u|Lk@&jI0ooD0pkr}ipe0Z6nS;J#q-q`fl zeNZkm|4A60h0k&zT@!tEvkX&;@|%dW>HM;l54dRE`MP4`qONggH#)D10<8=vDj`K5 z$n>e1Z(gST_Zr?&qOkW$^HmiHiZm;XbXpH$T7BB5|j4Ll;14Z<$WN+Qa(lf)M@w6x{`>(7=nxitLS6M+3Tg|~A`rrIajt#FD!bG0c z=B4B;8x;vCag%6=o~r_QxJ1Y$?ki#Z%K0xK&Dw!Z%jZr;(!1- ze1xMtEoh~cPIdSNWYoe;ysy+JK@^_NT@aKxAw`Kqq~fKY-#?lNDI(y7ydKt41X&%- zGji;O3N3Gc})o`ya|*{=wMpQ%QTH9 z?DsQPrhdTHp%Hq7j^O1-CCt1=_+yYy&4^nR`Rnh>KlWxN#B}4)r!8Ps;&M|EI~9h% zdHLR-eUN?P>N_^}o>dl$m~}+4aHo@N_cy%Zos3Xunxz7e3L<~BuiZA8=cBw$`Wsvn zk19F8Q)(?d99^fb=ahAweXCkd6T| z*#STr2_r7dO22RNxf$IupW?MCd~aN->>c(ONPAw0&&%^Z8i~ljGdboy zU;NrsPji_vp*#6q!Enwk)>?67mch-VN|uyb_(NzD^I^TI#ShE)E1PjKzqNUJIBr$! z^eQ{+TiT0rvWMo%SCn}n5e^S-XXd3b7GDqj_!-dvoW%XCa=CnA1%Z`^#*qzH9x9E` zLSVx^ODYJP>`m5L94ju)|~ZJQ2*mI7SHs{X;M-eB7JC#H>Lb0Nx;3BmLl zyCon9F3nu?Wv2id=8$LO8Tg%AW5l7`ywLMm>uT#RfyMXZl#}}@5L^Ef#~YmwH;9v@ zQ0icca|b4kA3Oy|9@c7*2hT8uhf(b&tU;qE24x|{JCxv0u4<~Q#e{Eb+-O!)*l3@R zj8*4Mo!vQEkq z$P(9@L7t^-ln1UV(d)J|EAB-Tk zc`6y|CzrASYsYw+B$|IGHitI0IQ<9b;Q;uI9%l?;1mj9{Tj7~cm{NT&c)`}0Fk8)y zM&`V%?yg@3zwxs!i&J!U@GkHk2qk}>c*KAer#t>ANbcN|#53_-?|zVT*6o2xRD@lVaBan*lw4x)7lDWVUQh=4yXG%|6lTfH zvQ%Pf%LQXcWznnn9aZTMM}`D2el+rPRB|F`u9#5|2^z=QvW~x1yxR5reqB#FKKR`0 zX=Fuoo<2k)SKS0KF;{^?m`RpKj%R(+*6K=_m`knt4%k`_EX7|pmyqb~mq<4>ar>=& zNqNb+ny`XB@GikrznyzXV^n57?n72dkVz)u0m8Dg zrq$-_T*@wrzX?wrm7r4Gagj(jFKQpCX$^a9za=sD5o-sG2#u?|&V;g|SqXVd2=WTN z)O+HVevZs9a4tw#I0?5uya)-EyxwM^2oRkf3X**CV30IaDEzOVuNA)QWdw9UJ`u#tC_=|)(^R}@KN1c z7eB1@|5*Tqb4e*Z1w*5qc9WE&{^}HeAN`BAy!8kix$j>j*?C=iGVe8Ht_G;cKg!{m zHI7hx7%9WFK&4Ulb1`#8OX&7&bq@EqhLES7^9`Gfs$*F(9`>8Z1&8uK2~K>zbwztD zBk|)0Njm~LS_a658+7YoI*U1~WU?_vPXpIvZZF5Ea!lggg{Gy;9S z;OcyfnIK_9yeQ7TnA*J&!pbj_x9)l^ocR{-iW=j5LxzW_U5t)$XF3siMz?&yKWl9u zxhBleH{tK;u*yDEI$OY2Nbs%xv1O@pQfwB&EH|EO?LiNryIcxgtU%@D2kPaQP<*IS zzu5WL2q>A)#os&gp5giMtZpd2zwom$eN+4$!RozwBcE z4dQ9Lv)DN}+| z-H2Ti*2ChxRYWk(P=tO3&KS|?&8i)){!clFUABl|0^F%OwtY__5pXxAIT%jSo~92Y2ajs(94 z?>zQy(mMQW?=tmP<-&qayytQr$3A~eZk_uyq{!DqrHsC(6GtMF3~nYFSv_h)>Hhl_ zYxYNSax`#VJsFUcNSKW0E&zQDElyEoZ0d%yZy4vr?eA>3(ZL)Gvqkmq=da2DpjVI_ z*4eUAI4xjQ&C;AaC&AM1CQP=|i!Mn3V1GP~C564)r<)2>2?F>bX}yYiax5u2&0XJI zEG*)d(MPqd!=@w-T!nerwv$2eSGx05S@pF!3^CK9%YzI&MTC56xGNUIy74^j)CbP5H z^q_8h9HjC?mf*Hv*Iy|0@d^P`gfyvunPeOe9xho-bvSFcFfb^+roQczM+NlvpT(nV z--V#qBYfV~f=!*ce6Dr*k!60eyLVIrY^Ls2&aE7MQd=OY?g)}6L@e!FPd&aM3;Ekd zjp^(e+p%iZDvWcy&C06%M6OX+D8;v~y z7k}jB_Wr-8@rx>nlSi^eoMemlzuWLnI)wPUm~lnk{q0cwndWgMLJCPl-SVbBEYt4$ zrz%5QueNh@q6%+Yvt|*SCuw#+Oh>BkSUnY4p2D%%kF!$FSZ3cP`$3;Lj3?%6Ubc-H zMZ@l0-1jz{9%0AacY9)59VOeITbWR#!k$*~fV^XX4l+Gqnb$zNZWsP6(rWR`o@|7g zAn%)XyDwQwm%}?F+oB|0g&SW>9`lSWzni9&hh>P~y3 zk4Lbb5oBzog&|nZ#d)PTZ!flv8lK0lz_<8pF~r7;R6|XXZ*D6YL@c;$^iq!(Hin%l zW79qtD!0A-MhVeg55iM8aLSv~s5sD|2GUNpFkH)@Hd}A|F9%*`C)FO!CBEIw81V@c_m;Y_HWQxCXh9vZIIZ%KB{e4bg2yr zm)}0tG)Ol1x@6HAp|y=7L~SL?T#5xvGtEcN3{juI`PQrl0(uT65a~D67{-y_6eDGa zh(BfQ>t$Mn^HD(7ipdtw(-R#7AEGohzQ*$Rym0=rPt%Z0b+Ll@`csI; zarHJvWks&aX1`LS)b2c26XYa+y6zQ0)j;|nO^sEB`)MR6%>(FbS+wq#Fb%rYi|i)B z50FjGFRGpA00jOSFPSzI&CfEpL%%Id@%{xs48?*Ty!#L1goMYy#K3?etcMeVIB)*n zrR%u_xO4>mGxP)L1SlKPP@C33B^t_>bG#lA-%B$jluqY1?7 z5MY+R+OgZj8{+d>%s|tD`zT^Q4)}RDGgad_*modknSx}NCxY7#U3(e+Q<#2x5m7Yt zWwiTp;`mh3Ug-L~HrdwhzEF4fSo|ZU>)_X}|0Zz23Oy%PioR z6u7OR_wiuyXLO|0l$k2Iti5XIzVXogM8Orv5}zrc@B%CnzUlas*cIlurs^X0%*}bF zydClWW2=nxL0v>I6$cO|3Lj9v_)U&BBvZ;i`=*CBctIb2Vgf22zio~*+bFO`u-T8) zC-o&h0XIc;M#C&4j7(}BajT1>-aKj+bn&vI(NsT)RsZQ_Z=N19z;W#cU-jL-1P-Cx zWv*2omWNTHaY4f3eM*1i(J&%7j=tJAg@co6r`>K3A|6so`nm87BeXyvZ>SyIXTe0ZK zo~obTZ5~qt6eC%$dL|!@%<}2h0Ur&7noq5{;r0Gh^XXe!TGaI~A&y4cQPPKtCvJDJf5Qp?dA_;N`5^It;+sf4mguUp zFo98006(4Z16J_e`q!~kf+I;u;RI=HeB@pH$&Cvl>|3x;7~m%qt?@B|rt>=WNfGMl zO6N<#X}9EwGQeig)^>&XAeV~Vl>hed;NYH!Q#Smz53_g6%LRRGftjNEAapr{Kmf8K zLe9-`NV<{-4nspy1Cwtpz)sU0eR4f%&ChAR#*oxdK$qZp;J@6Tlsu0m9*GOaycS3P z573=nO;>5Wa%*e@%TR>Nuj^oZCTjOTJ3& ziQubT1D|x$P208JeV(4M6k)uKch?y^M6(40lkYr-sqivrGR(D^$CFk z8X6~nMuZWf>+ml!=(Tk5GdQ!elLMAC8~BxAs?r#GB1W3{ZjGk2kH(Lf-QIe2@({r| zTv^cqQF;U8fQ8>Wzlj)F9ZwV4P$~G$43FST(pSJ45hTPOH7+F%%^2rP#lF=vHs(eO zt=PC4Qhj^A-9h@j7tJ%lG5}3eIt;P?xUYsO3vFA|<>PjseR!;g8h~b|D@f9Kt#n>+ z)W1$y#wv3yhStf_z?ZT=_q%;G9p1J)(kxRqw3sC4u=vrqL5F6(3R-fcIlg%L0$()i zq?&qS4iHfRmwsTW1q{Oeb)<8@cmM0%2u94L-O9k@5Mqq8Ez_THIDFg(EMeN(f7h|k z$1SY>d>v~g#^42{pIT8xHa`eLiaa;oXvoUZv3!Ej{k+e#(HV>+=k|+hFcRr&Iw5_H zBW2;%v-fTCv4?V#6#D%*p6HZ8!!{hk8?_7=bQom(9)MQ2xbSyl?ipag%f{^^a9nun z)B$@sHLAng&?ORplP=es1mccml@YTh#|VA3U~;m z5{^z<5r9_#CRcpPOr4+^jw0FSrgdZ9MDy;f6xPz>V#7g@%e~_!zQ`+6&caz@@<6qB zu0*KarW@{diMu=@|Gbo8fYa6wA+bx(WI16rK7}erC+F7qlT0tom^JsXcWS@lcak-1 znxq~>k#}6{#G4`~?U=YxSaCpG5m~i7uo$DrZx&J!LhK5PE{qu1LJ&d6>zV2urFqqBI@an*UQP226$3$ z{K7-l*1h1(@+aX+=V4pdd30pn5qbVgo9#Ifc|4AH13u2|@7vO1WwJ~9_#eC)w8%Jylnp7pp9 zISbWy0Ql~-ABECm^+x8#hQ-mct$RUsMDRoJ5uL)uRzl3-IdxuC=w7Vtj$Fr^+3D-5 zQ6T6yN$cw86d%vn-$&)lH%}Dj)O=vgKSSL6frN!nTzXep#c2?r&3%R&WVEA2l*1pP>M93om? z8eJz>O|@2Q0r<%+G{%~D5e-k6_mpisLp~ax&{cPczj@!a(sUKeC!_g z_{m*0^42w(@n_G$mAJ-7nh!@J<4TwnIrQ7veixpd-&@}`%xm8Ce&crt)qK`suBD(r zG561Q+*M7FyWBiWi6F+6t~y5I07#8`37av5rjKY2kZiJ-A33f(B`^HB!nA0KZ!a`X z!_!xu(yyrM{2-2;K3}Udzwtrwp*C|4-Zd};YyGTtkL0{>Ri_Vy^FQRu7X=M38?7LpV5O&js^5%HSL+yEc+6J*yCFOLH`_2ZV9956Ob{d*I00?rC`9)PE5-wX z+=4U@)V3l#3I?v&Ouh=D*aa!oUCZq#SKTguv7!F7Q%HnPD5+A-ZywrLz|+A52RE(a z{$R00PFPJ>z)kg>vt)%3~_nq zbuEa#b>gx@yC8iyU&^RJxzHt9aDX>E&+V?nw+YUU&#dB>L3Ajdk*@|QN5owa zg`!e$msL9k>^YNChg5m(@l=D4T;+XGxinEGqfuw$f7)Z5jA6w-w(@G$Us(!9`lvLs zN3ti>OQ`KFYquwYPEfX%LL+D7_8CJ&F70Fsn>rtRWJCL3$tf(qG;VMRO`Ejy^N1ZR z|H?6)T32nX9&mm8$o!G0-kCo*B?#{+-MhQq^>aPPC1T!7t2Q->D1(y?LHj0Rbg>QO zKCBnK&Hs2MkGpXioS*S32ngR`uW_(_GnF^hQ~-yhc!w;ZagTT1Jf3?Otmj9DcZBtb z$ub=3g3{SXRE*b0Dh&v);&vgB$*v9(0DS;pLNjZ(Ck%`dSL^kaaV>P+R1a0;d*`YB zlE_{sfKU@;H;RERw|!w9kv(;MfB*SE5~0HO4Nub_&18f_7|on#sw;Yo zS3R;C^1(*9EtvIhz|(nf zHU9p%E7-|L zXfu8>3ltP?Lheo)e8#)tDg6cK45zIuAg0~C(jK~|GkfK1?Y#;nqOHQ-;U9h!w&1$8 z8%GH0T0N1-R8pAKI*d-Q=uAv2B;hgSE|s_Oc%(qX8?Z9um+Q43b;3zAscXw4;zogC z;?*CxAI(S99vbhza@=jV)=yQACujws6w_rtnl_p;WYU!%ZD@f(@4(EBr0#K~#wUKf zbc^d?LYVfCX7h#6Kx^)V?;ks0ghEnbdMIHQu#UFV(%#s)KI9b_Sx#z221H-r!%@G1 z9^e<_Ao|XLP~lsEbszbV1KAZL)(NVe@is$&q2^!N)kAS76@0>PO@0s01QeW;`J{#i z)r(TVf<6hnw4B=OcUMjwG_!lK3+)kOIwjc}keU)qPsC5f*g|5OXadGvpBZ!pkfB(G zD8$c(5b6!Li^K1^+1<{kqdyS4*A=yIU#?8n9(RQDP|2r@zBTu%pNpxPg6EgCA^`KM z9e66oFsiP~Q7!b+EcslY-|_x(nbj(DjhN8P*F|lU5>4Xj6(gYblmLvZpUaf)(Pk zA6ROWA564EuRKkskY`50l=ovdgBmQ~r;*MAoRzla%!jS|l^ME{)!?CaE{LDrFDxv% zm6^$0yYuO9cq}7smKf0)Zo#UCl{F5}t71x$-DF0Q9D~dzQEKF?4jPi>8aOVHn`9?X zqrc&p22YDOOpOq%(GpYy=e2UqOp*=79eIf@a|i5q}IEBeyCuYpse6y zoqqK?>n(GKw0|_Et{e%4bfgAb31N`x%p7(yZt7zHH#+wHu`W9%a{=QFL8d8zLho&8 zDa&~x=1xqK~@+Ws5F}E*U`(ACn2N%vG z5ucbxAwF7G@mINXDy8m_nb(KWK|3$L<#QHM>1Or=?|Xq*`@xY93+aq;05kQy`hDOd;V*q zX`Um%zC8)sV^ajugVq1FEyt#W(g!~w-ny{e(0{te5*$IS-gOs@q%MDcgZDvD=g?+P z8&O*|6((}zu~(`2lHW(9d38IJrujWMP7xf1eB9m|3nBmvnDQ`V^T$3c|b<+!r!&?*e>LKdApzo4F)~TYpn&;K<>_^(W8r`YqOqc6? z5}3jD)qqL9Qe1$#B8$IJsTsS=V$=b&1drp}gbGmP6&I?DFG;UfS$AhtS3)a=2tr9P zqLrcp(0hlk#v}zS;Evdjc!}U7J6l`wV3$X~(Pkj9x>)Cz7nkUg>BJssQ0k=f;mUfU z&IfMjs(}iQCy`2Y$K>9vF60x=A0T_EA2bHAU-wyWge=*qbSJcs}Q(Y#@FeSoXni zI$kywJ&iYFj$!a>s6EgSw$3Jx~eftE6 zo~ZLIkN0Qm*ne&Qg|lrtJhN?XIxs?BsjCJEvWTY0y`VhXmj>@S?eP<+76^ZMa`L31 z4_=DPg*ngex@x|IPQ9dr1z`u!xWDI!lK7oR%6ff~pux88HQ4Db6Ei!igu$gy%nA4s z5B%UD;+CRL5XMXY8!leN-ddV!^aUXpg%DMxP|}O0Jj%=azpR7(xzZ`?oQE2gq~YrHW1Z*m4cRJN+Nh!+sk1D^J2D0n{5 zD%|NUe-ttwNku-uu9bK8uW`phNU)xvSdCq$DS~Xcv2~cCr+oAB%K=H~5~<{GuGvRE zr-jNCy!z3Ic{gy~>krB+VAru9HHm@d{eCgV;1`?KKkaI7=;6k^Ua~!PoId0oSecc; zE?Z*iI7R+f@bRG_nQ@Z}2=&=SIL||B`_xTY5T8(A-u~xwK5fsy#!a1SOi;e0`}w{A zUb_dadL@NP zgdp|i-|Rc+()C^;XQC$U`kKg0=JhQ}xLZ*G>xQ@1fOWA5zi zm^?NU@fpfxwNviZYWE1ztBFkC+rJDs+Se~1q;$YOPmI*_Ud^*ND#Un9M2`66QN7iq zonrvIreYnJuNihPRzP;RF88>UCdUK)s{#uDsz|7XkE42d+m$cKl7G$BcSEL=a^*BM zRb6tOdwBAfr{J}`qzk9o^a%vB-K0OJKb?1HCA*|5%?*YOPUX( zmuN@{MDy$mLs$;XUz1hv&q#;cvcYlJzhtj(x!&_w|0S!ycf8uL4-(deKZ*I)ESRs@ zaavM$cOu?>;8%UY2z;Hv=OmK=x2WM%XojD&`rMQdq+>TI$q982+--vn0{mg0p?|@> zHqw+Rag5Se&5>t@I7c|iVUe0!Kdk`Gr68ErNt4)70`f$>R7A2e07P2fXev?q{pPU< z>=#4$4|z&hIZ~tf6*`@OQL4i=QP-a74HbSB1HN9*>9MSz(}(QR*s^5DceIicJd>DEN|0A(@)ZF)|Gkd~0)etT+$)?r zFOSs?YUaOsg-m`9i0_-OhcfP&hh=zI%t}SQ6OX?KhBnI~^18wQJ z(|cZFY4hcu5a~u)I%o>xn}_DE8kPxQ|C1sWgs58dT6|?rGRfvLPswtrn3DM-pi0j^!#|v-KYG#$ z7g%#QvvM#b?5&K}eJKcJ=0ww){GQ85@wQ62JM=RiBp@k-D|H+R>0(XjxjukBRb*Nq z(6&dRYRMFhGaO4%9{tFCXufN^>zx3ITJ$$yXNlj(p@M?TZnKy2TL#{2NHD&{a=HcJ zCoaE!pR{E~rP1KO5V{TO%+`kA1#NhsxeK z47%4o5Ws2oj_KWwZ1KS9s~^gq9*Bn!iQZ*QSAdZWFKxYT!nm7&_>U+H%x%ra9%X(x zV&W^ldM!36iVguTC_(8~*k~Exhh~dP3iCL>CV-WDY0%bqjdT>_yZ^Vg3@~^_iOiOv zWl#H|GuHNl_3aLhO-{7skf`LXkf}2BZ&9OG&BaH5M$6HLGlQD^uH>_;nqS{HhdUQV#VHj#0WwuYVQ~&MvYX>+SFE5?GdX+jUYztS+q4;v$bpQQL06aqJ-L; z;?48n{gRX9B^erV&Q*YhL7z{tqjlG z24hPdO5qb~wJik_rVIKDZWvd8yy4oUpev|y&2px81jE_LUKVkI-cyL8-9(Np=vW=! zOwBx+`w=RQXhVno;{q)&|6@bTdpy+{Rc=Hd*>U*_3=KUdUQcv+evD^z?~sPWMcY0F zS3ApaQ^#TUMG!nhv28y{8W$ZS5x5Ed8^O2CoJav9oQ)DlNd89#+g4%VdN~=h`?|xt zpJ&~Cp>37d^Iw=-u6SO=&MEdzX*0r2y1_}$-LRsV)bNg(ao;*F=!LT7ioRwzsgl(R zr}zXQwQ?y^pYi$|(SiIQ4Gkybdtu691-qkRs4#n3SBmX)wZ}E6LrOXqf**yFDk*Lm zkvn=z%w@-GMrD=?Ts%fhd4X05%*FG2zTE-4@4D9EXj_3CUeS54Xnu;lyelp1{!G{?T2!I_8p@+CA2iqh)H?a(WG z9$fp9+S#{ffnGi~42MvQ&yNRmVYiXvssauRf$p8N!J%8++b_?T*tW~A+M8clMJ^3} z-VMgtn#o^YTWMVFO}Z`JbKXx%ol~2HhkR8Oya^bvSUtSo(#+j>jLiari zR}*K*%hB$&s>}hnEXWj%4#ptzOUP-Mh&nuzLhxl$W;3cR&%a&zm1r`x3{UaD9ZN4) zB=O|-Sw|&vGJ@T3^crEZt}s34QxoK(TzhIoZmAl^=ucpUX>l;YE)^~H;5Ox}r#~iXsn?1A zO|6M--|4P1VTK{crC}$&C$Ot-ScxY3tfv_(+H}3~c&Z2UO7LBkf{{G)aj|mekph}~ zINVARrV8Y1)MhfNdlV`~Mqlul5^lYsUwK_zak=J7+K{jOb}y=cjN{4qumPc9A3)H% zWmy1_@h{*$ta@GwdH54vPiQ0H#aSl{b}EPK6lpzxm!BGf#Lp9w#GHEp8FVhqMkz;h zf<`3pK!A26G3>Ngpi_<8CSLXR_cN6zGJ=M3UlgB4oly=g@XSUbG@C}~t`3XZgpsqa z47^i4j=o$Q1iCq}m*2fP{W)kHD0~%e?0M_=%3VC7?1qdpC&9^E!Tmx20=bHb-oXHIPUlZ3enOd5;b=Io@%Z#U2^xpLAY0?N z=^Q-2lizk9MG51$ zC0WX=FE9SjEg7ZH1Tsbf5JMGOVSVNK8$XPvpY4A?IZNT682#uJSAwbolQn;bd>x6P(F zN^SF5nDVJUfbYilnWrl$ik^@Uc;X#mD?|Cy`W1I{?k>%YulA>tl4EI)3ImbMBa1V} z$tCLvXRo$M%Hi-#KM?{_vyg!g!Bt+aIl=a4ubA5}bWF~_-6@SlQO;yU{9aC9086;In3s2ishOc5AYSolb(ChH%0{y^l!n)yG+D)^)0YsMEZE_TC z##+uA3qQ}YW9L_DgRL5yblky^f?Y7ZaRkmYLO?dTP8R9PL(`EqL%VCk0=(Y!&nmO3S%0qZ3b;dw_S8*3Dl)xUiG} zQNi|@$oWfY+j_M7>&6!w-0(^RixypL{B(+Lu`0S_Z&*n1V3XR23@`h-c?%6hR^rDz zyA`3j-Q{{-^btNoYR^>8EHL%=3N-*KGGE+KPJx=Kl0LK&VK|_9@=$JZ>nvF%%UjN_ zYcgwAgcRD>&HX2!!PpXrNQlyWmM=}YxxtPtLwi^=z|CuJZwS+Ax_L;*{WWt`hgaqJ z0D==lK9n-n<-BrF&U2koaS-TAMUO zS%EF7u3ib&>q4-E;g`$%U5|YN-{<2`;`Xqh-wwuugh~&dFI6$rN$jDt?UQe5NNfb& zvywQK3oVx*VY222R#IhbsJEm2_+A1-vI0M~;>(Gj4tKSgC#-36>h!l&zuDYZ0V+9K zsVLUy4)z8=%s2njgknaXJg&&7q8okmE)K_MWssGFTzu@L!b=R%deg@@BfaU@AU_}v#B33T%2L- z*tBq#F>xAp>7acX(I-5awFAC^-Uw$cbYkR;}zF zP|KT2i`DQ;Wt#-eu4-#aj+ZL3iXEk?0EgQ4ZW&j0Qm+-M17-xURKu21dd!MO6f4v* zFzx{!9Qo^BMPC@El@1qojaD1fNHg)6Q;H_4x*d*+NCKWudR*+3I#i=WQ9cwz~WT_=xjC65EAk z4Fs^_r%}j#58^dB${CVJVoyaP1XlqKb~UP%`B55z+>IE9dqz5~4?FxgT%0WjDH@Gq zeKy(#FLl@PWaOw&ayB%08H2<_{A-Gq!lZLr0pTV(U$0-H5FbkpS@!MXn*JGZnZ)n# zi5PV~v1`jzOLN78)3>pgRMTlEKYTc8S=d@wvU%0?nO&cl`k(EvwFmnM{3iCkl7jx+ zdDPv-0b{GO+WZZ|c}~QG%7w9}Rg>GozIEV`2$q^}{kPQ5b@8L_BE;|e-(+f()|Y11 zuE$qPmx-OIH8;*<^Y3g|l*D-}p9UW8Q*Ja1&OBhA69&}1qO#Pi=tWV)vU`(p$T7gg zZ`it+eMo``I`5W%MaK`qDrjtu9~>sD0Ie7wUI~H9$n)S11i(y;|&@ zg>5{pZ06TxMR4;&LFoPxK;FN#`sI|=ZD>D|~MD!M}C6gsct2K(hdm03RxaK4MItZX#h12UOUp#I2v`#&sp{8TM za|m<9xRl#L?8x;CHpAMe+4YUo;B@=_ty6{A?fbbK3Cg(|rG5UcxV)5(QoGyJeY_hk z^yWf;>5tlbi}t^Hfpei-X}(H{JJNpRGVi-q`Tf2dluS;V2_PGI|WUqK1f1XaizqG{?jz?`=Ci zR#7&&82J<#26?PG###Q^@VJ3ELo?&C;rb3^DNoryf}-3>(LEbB2|q5W4<&hlViF&U zEwOeNP)f=B-u$U|ExrN@zsocY3O2%Z+6Kw7l@(SiAeu&hJw?xz4raL#NEC9bna6PS zh0!Xp=_j^~$??yVTDMf&sio5@vOpuGJ~*EQz}rWNiR`B?m3$VZCG5P}AmiL%b1lHm zwTyndiGeI=`kI}*K*SOz{_)1)GoE$pNf$$gpGz3tpMNf)9WegzI`NgK^9Sp9n(~>i z_6)0(+@AA3xhlJ|0LL)wN^ZNb0n%|d=C#O_>u*`cANhm2;MYMZK7ifFgOY{60ct;# z@8MgJxt?SzY4h)xM?i^0Kfz1u@Ys0oUA@NB>vVyqt=aU#OJuT3{RK~!8oo=o@l(KM zcWWE-pJX`!QkRMi5KZ(E&_=b-W7IC6Z=Q~eVWk1MzdrT*ZQ(#6JJgh`q*eH6jde!l zq6q*x_7jD4T-mX%vm(;`-kti=%i%`uX(#2sZ*7z~*IH*49QmNA;psdu%enYFi8o#ol*n?VP~jhm3@out1oJq2ROHO8H%&NU+$F|+~mHD|G^M22U6lJq#x!)19I zwFQW6q8CmCj|4Caein~cR#FN1%P>L>Y7_`WZJ7keo@L_QPPU0>`|@dE=Y$PYYq$&m zoWG18DGHB^vEuRK6(+a@&t}RcAEQxanqHxI9^0E$l)|psn%lGjfI#Gu)+G^11OpKo zkW=QaB4?J4s%#jTmMYsLh)es6J_%;^E5j@MnFoM+Z2RND(CI7LCwceoDJJ;bwP1T1 z_=~+bv~R+TARZS{Gdj3(a1-jY$mLW_1X=Rs+`kgPh&vEt7b-(d&+krBtAux* z2hI(ucN9bFJQtCz)C-WU#ghq~u@K~ryyeMDxqV=XxSX4`F7GS^tvG#aBHwEW+S>P6 zOuZ!{9!HG1P*(iw2({J;9O=+6Z;SJ#$yQH(SjGBxEz9SdEQMEeY2YTl{8)yae1tkg z?GCnkEpRL1#b?<;xl8RMS6m0(ONuplE6QK)TAu$HeYa% z67z=aZTTg3stV^V+}snY8-0@KSlm`NGsXxuy-3Zma74HgxQd7ud;VK%12L#?5-gbG!&GDb_=;*RWJp9+b( z&~>5bOK2(`ftrYAAO|&S9dnQJ$A(sxkmedrsYdn$0Cj;u8Y6Ip!q+hNghp>iZV3`j z7ZRLspgiMVzIslC)>Nh!aTA1$zv?$i%MhjYBaEo1ObDda_mu`tL)zYyXLk#OS}5SN zlJ@l*!4XpK`!g&&F<+{!q%jeQr)s_LCsnO)999!cxnK+{BzD%S`3CMYdbU2-A0SAl zYn+JJ8yBcYEv(R7ZJZzD+GG)Pd1o238(fC$|mJemH1ivT~Wu&Lm!>7*DYX!-c5UA6rwAHSDuGDz+pqac-a## zr6KzAC93w~U;U-tU!sj6GZEIc_+}kktl|W#44>m_o2!G(w6?aMq>+diW>NDsHUJ?D z%J5P$>q18MNAQBu(fY~Sqh{C|Z4^nt0RAVcO4Xc~VM(rX8(Mgd>1O|3-!fdxN(~wp z^ZS10#2-gYOB5{33^fnO7*gI`XCFDH3iSaow;-1LvtW$5G4Q@)iGu6{N1IzWprE4- zoByo!j|K6=4z-OzmpIk&seqw~_&-jf5AwA7>rgwSsNKRU6f$4Ed!K zf2z{Nh!89T!DP#>==4#}gADD4aP?ixyRW8*wbn#ecjX%P-h4__A}+zVDUjGyiqPpFmbeVwwYwP&y6VxFxx z{K30m02-}Np&45V*}(jW+AV7*>1Sr23MNm4=xNd=Y(;t@xBAXr%%i{4)-z59>k8$u z^3Pb&AJZvzpBG!9<-5;Ie|_5~*85XD9e=>Nou8I6K&WP#O%91Cx49Mz0oGk#jpdvC!POf4P0g$xc3IJD5Z5U=GKJ=7hT>mko5rtgfLcDJ z`Y7rMM85L??&RU)tWt~mDu4sXlVCMa42^0lX}#Bt6!hmqANz--IOfjVCUyock>cjn zlF=*f68t2%X-;kI$gk_v`zaXBv&ZJOD{cZ~bewv^sxj0p%^nRSF^OL(SB-L2QS0tt$_R*{v%0QR3)wnRObKm=jHpq;9F5g&jr&=)bexNTjDSGiPe3=U84}5|8BWr zq34GGJk`O{=OTyKz3qw(jOUs@s@xTAza)e0%vx%Qb%(odVttne6=4J9U=Xr6Yht5BNOLr1Sv+*Vs1BcgJiW9B3a|-w@ z?TR;_AS@wnSN%dqH~XU<(Yug|CayhV%bduF5NQnT zY5h*MW4HH@tPhmsukmMm5RpoZA$&Lqu1R5h7%O&D(RM@Lh=OaOAP$7c3FEqGWt%@t zBE1Eb)1 zsXw&rfApS0UsZ~^=A|2Q0A}7$8Fe_oY#Z#Y(jon>W1kfmc%{8C$Jm!83 z*da(kf~DjpP(g}?R506wAi)Qt#2)!dle&#u&^jRroscC%Y6JR#E3*}U`I&wZ$|r|B zlxN(q(M?vl{ALRh7m3!d3WfPw$qk*uCy3R)s%*XaLHyC8jvXU6ZWiWR*VL_sv}% zvz?D0U{w3_^n(QO5%DEHbk<%uwolCv@+TI9n&ORsQe5Kmsl<+Qe7;YX!9Gx$fdTMf zD67UR4KGjt6wBwq&jSh- z=8T`V9pH+0qnz@uvA11d#xmihW#Xll>3t?V_8XlleYJ*xz8st#RJLo#omrx;vaHbv z*X(U_roWQ^&@Au-0nq@@zl*D$mEpkDPzY}qxl|DKcxaq5Em^!dLX<9Y&hb4NTWdFt zNmlFe5>)+c-6~k^GYh+VWZc#)j78JArrr~~1yWETm^wGm5}VF4Dg^EWVW(K(lDH5b z9MgDc+G2;ZR}OrrPaAEjT(dLK$lDYae*L93>Ln+3hcIo$S)D?oYG{}Zor#xZJgo1f zozNWq9qYvWsPFX?Hkc`&5t5DWLa-}m-&W<#e0wep_)vD38hvmlw-)N-$ZNxWY5^k> z6*%?JG#JflylW7pjHPpnP%?Ar=GZ`5nYEg)g--rdZUff`KK1PQ=|?zis>dCm;xK%) zw!sGHDez0Cyf-0Xwf|lwtigJuQK$ILATtqHMvJv@vHP{pX*l_1CN0_3r65Mt!29{i z1x_dvdrePdGXRpM$;f*~GfwH(HunJlk_Ctx!>S>&1H{%VAJ+OM4llUqY)LHn!SM*L zCh(|Ex8D~%ID7d2_Au7NqgR)PYuolSo)L+~lga(^S!P)IgbCyWzDrZjr5CR@p z+x-*tewJwg<3^6CCk#yr#Uu)t51LW|S<=_3)V5(deAzj3P#4MAoi7tbHB2sr@N z0B^Peys|arlomTtzc0#-N;=jYFjo~W;e}UR(_X6D3$bB(<#!(QLTB*prWmR1hXnjahWz016IiuKS)&8x5dE9Yb*t?))RowKX@kRN4p}()* z50H4@&Jqmw$o@JhG4D<7QFZaZ-%NXqO$rKYtfnSq6ld-X!r$HSck-evRr>b3%6-o7 z#6o}}c|U@K>R!L1y(yY{r=N7u6cD+lR~1JI1iaqDiy!rOo}B~=O-#mOfE|{lA)w4H zk&3HXzhatWt%diZ9E5zQhaMp@SQNYz;15QS*hf$m4{8Toz4ni$dAxg@AnJL~fw_tT zr(I+~NBhK{Fm%viIjA|)NZ&OdIj%XIxIY<5ZSoxrJjKfXp9O#&c-l_$!vUx>v!t+1 zoxR@FNOr7>MK;XYH+g5WRJ*=mbg9Y^nPoghPuY#leG+Uuzz<-TfHtZ>RptF#YqPIB z_L|_CH}No61AG4*yBkA-+NAS02kLUQM>*x%>CMh$$INatLP=7348>t4m4?S9PZ?E{ z0(wlr36dn4v`D(*pObn{l{hB1ovp}sPP*|aRqN0)^z`s0C*Ok5k{qc<89TO#LTdUi4H2D70b!bUgr*;)gi)tX3hPIWER!LhjbxnspfM zjP=NXb?qoL8UW8DR4e(hl6J`vyIlk?CZCg9d#q3TRR;|t8_kD{eMYKGt2b>rnQhWP zi~yy*H+hIezwqRf4a#6!WvMn+E_%BQ91P-t8f0j5EweySTAN>Mb4-ziFuHg6{Vw;nl}?l znNl*Wv@eh1obVSu`*a^;Oa2=UD6hAy3p7fSE(o+^Xeu$MVg;LE=B${bvNy1B>Biw0 zZGwp?SnO4SND+pkekV{=*(jWsw+?lxW0OuGBm3Wtt%6R(BWAfJeXxz{jm)5gNtxq{ zLggEQqrIM6@m~;F&gel&zUjxzDRNN(!WCD-n{nXG6~P}zx?>*+u19)Ln3Ts#2?}h( z#2=3Chs5Nbwc6??2C#T9B^wj}bZ!pp=znxx%g`Z}_WHO;c>UXvT0n=^DYv52mn4mL z@TFp!wNU&|QYL(f^POsLS-oMq-1{Yqw$(jF1nH$Y1TI4IBh}mtIiFEK z-!06)@}s`c^ehe06!BJj#@b{}0)&6{!w07kt0z>XF26ea4M@imvV8RzH&=)WJ}jH| zv;$f~;%Vw$JX9$6mBS{(nsoR}@%IunVjr1zb@Wo|u#26Dkn32o7|9B7AnWp#%TKWe zyA6CV2IusNZ(y3^?CpGixO@}$GwV26GM|7-l4GxXJZxce6OF}B;cV+)48u*8Xn4Au zp}q?0MLjO}spPmzJ2>JvGDK?uP02-z-Y%kYs4E{jusYqob#WB3Ibx09mnolRN#sPT zJ*r~!<@+BTk%HBBv5}jOAD(Psid5fE+D^ZqNeIH{5G&tB&gkj*kS<3^L?9%rb*rqh zP<~~`NeoxH1oF`fz+Dty@iI%O^77zn`%g>kSrTx|-=xJQ;+qfjDVc28^BCd=3(jA{lZZqOwm%{7x$&4|5vH--|Qk_iH`Pt!D zu_@G7YOTLbYK>18BflJN-h%>^YuYY-Dn$##jUz)yGK`~73MS4KAMVq)PWw+d>90~6 zDE(v}R+SGKYnl+BKWtsAuYM71c)Kcid#qT7$vkX5sP}jgJhlIQiQVMvhUQdh;Zhcu zfe&@$!lB876ZaNcmAt}L&Ub!6{$57z@dVd8c;Pe9fO(7ZN71pz3XNN6Bjx#`tCE)S zQ6BCH1}*`pV#49mLZ;@tRB&aW3#f~n4P})}7)Kl8f0gkb@H{dVo6Au~T`~spRY+YS zR|arQEOawQtyiA(|CPk34K~>XWacGUktkIgfEy2gLW(+ByBQYXWDFZ0U-E}YH@MMo0{GHhWlUcV$49Po)^}6HP?CpNC#Non&sVQbUT{QP ztrdt3r~;B(_H$BLTgEpG*V+(8!!9mNYYLtm=@iE;cg*d-yJ0sRTXb7WDl7Sr4T{7| zz8y=zfa;U^Tb$hmUTzR|T=IaEM3UxaoKDhbu$(GJ^1*O7m%DP)T=cs}^M-omChJPI z)|VgUx}{S#|Ne*=dd0NF^M|#4jO&EVRXSNT`H=u{wwnh z-Ml=1-mL!X7E031lW%en>6@oT(bw5tDkcbfMzV+fH;=x+1o(dK-yc+&o(xO}l#cv~ zaYpkTVC^I-X=Ho_-oZP|Q#2-^TWkMzu@`=8pGvmyIaQ{X*RD1y?Et1U_wj~4Niw~} zsI~rvMSd<;J}h|<9fS`jfU*rtUQT+)bir6nS)NRIY3c@X;9siDRG_o)UXcr(mi{xd zN9<;ZLB0~N+JKLF*l6XRjGFw7`_a9s#Ktj$RSHF>#xSf?vfg}woW9x!t9GH7XmwV; z_3hJ>PB=Rwywp<^Ade&Go1ZFfv0f~;>s;DWQ)EZcp4LZFU_=jMQjO?ghi-K zN>!VFLn?Vu{uix2 z@tR&T`kc1mMI_xWuKUHDl`g%Lobi}E-j)&gv(`e)Nqim78mE4Vi&!Z)cfy>-!nr}U z9Sxt(Ov7jH@1yj#mO%yIO908>NjW}W*tOWikaqD5xR<*+9{w=eJvW+US35&xKf(_z z{mw+uajscn2pAvZ`5F&F(glT}N}XfPlKhfkfHdghL98*& zLUU*s0Dap=&OH>=ia@26XNv?C@)o&hvA;ZWDss&=@|fp*ELmP!{p?h@a$3;DU+qz4 z;_mdeQKrSHV1qPOOi8}H#G;)M0UF|(ik0UAA~Lp`mHFP_3yM2l4$arfZS*m;KSkwYtXFs!fNO2qhmBIS54AOFU9)atm+`_u}BT)PlFXNZV)2^p@Tlk32xN89k^y~O20roc0eLN0YKTN@@G zAG<%Qilxamia6|%jmIGuxu`9@>^~@>mB6n@@7H! zcYkL;(H1|)#ZSJ!(m>7oqx(Gi3K!yYjeQ{?w3JfJty)dt+i=L*mzG2RDzCa1mWv0p zAdxiyGL44@FIDQ_&sRiX18&^BvBC@|v^)!b;9=o zB&+1R2);;wC6 z-m5*)lS6ZykBX>6Ww4tI4T2mH&{q#t-Yb62D($+FsaP-}^y8#+X6aNmIW$9ee&x|e zXFM%BWFnxFd)ZD2sMYrc_dI7I3JMAWBe)F`aCaiX>fD>SMP@I5jB~3+5Jm~b57e5m z>h-LhL1_ch4DQ!_P;RhzbyI#-o+DnGCQ4u4~9cmeQTh2Mdl)P-@* zpx!vro6RVvz3+v=XO~Yh34!9dZTRnAjsVcl7#c_1Ptu}{v&as>8#IlTtfTvl7Sc;D-yfyFU@y4OcH%jLzd@1pE7D9~rh&bZ?gWwx;W&Xp;)rvYb0DN?+!b z+d{01rd0VcM_G>nIs{hk15P_3f+-WTm(Jm{+AGxC)KpJUH}!OcNppDLY2m zKKDUr%O^@gir#8#HLrItk5Ia$d(gMpupnd_*fO+@8g*xDMd5hlfgs}RD z7|8oLa5GzZ7%ab1Vfu&2S(}2WF$c9*XdnFw*{KdH4HX8iq+V1=xz?ReIA$H^TC2lBrAlyRw<+X8l>oJ~HvSv14R@CS-b(5Q zKEX<5vg&+jYSE90#K1CY5)s;c4<(sLQ^864_e{ifN8cM4Kl?3{E?%}VDrvRBFzH!u z(6fnX=_GCpxu0xuZ*L(`Y;ltvo~a0-6bO6n0+@JF{t%XRcxwkjL{cC;O2CRjzK9Ha z(>P>nnJWkBi@f$pO?X;L&sSbqb)5Y@l3`vymT2QG6+_5ukB0akL&FrNF=`?3@c^`w zlJqxtk_T%FGuCGko+MT6a_*B6c632{AY3Ku>P9JTp$0Dp>rhaX>Mp_>8JpyX!9^Zv z%XdxpF~Rv7oFcRgK#B7urY*?@5(~vC{dz;}lLM+1qk04`(GI02ju#=mh)SZ#s;K7c zeNoZzE%Z{-Zsr>Gk%)H11&{zsr64(Z_vQdSpYkvLYU-d{lwm$`$^;}g% zcoLD2OUh%OxkJd#)vG$!u523g)fKS;C!+JR^sJfsU;~bKcHJhpdFbm@dz3pxc0-r% zAg3sfs#gtB|9rpv@n6+od{JK?nGO~dA*LAsWuA~FA4iludp~chTIvzPUtT;D{yH** zU^8~Qq)F|jG;RKs&sb?#W5&#hrZY#?(=6~qd3>m3c2cSo#pZj{_flhPc$?LNr|sv?eX)%;m^Y9aM&Sy4AW;j%vHcoxxb$j{hyTGi^CEh0 z`oW30wx_aH?`=915^x!l92H~Jg)oqpB} z;+f>XR+moI8N!r3ZyYpXcvpij7Bbpf3Y8vw+069g z7q-Sf>z=gU)LRw?JFp^-iWEV4TVZYTzZ69hzeZr^m&9yw?2S!k+n^-}!cR4h{_$QLO=7RzJ%Xe2C-usT@M5>E7+iBRb^{hfiJuT(fzmW9uOo)}){|vw-j`oPiLB zF2F=yyy-mHJCW~ZtS$L>V$tnJ3qbv=ouHvQxtcY3R(m9cJ~0C06vJ#uMRQK!64wr+ zglQeIC#3b@K8@{gzq8h|?#;;MzOx;Z)#&IGoo{nd%bN4kqKz+jE<(rrRD-mA;ZWEP zBZXeK8^;1QHm49!)qEpS^;ORg}w19NOhhO*zci9M`ZoPuwNn(JP}WU0w!-fb{fey)uyu3Oo@!72Pn=Be zYFKF=gPv+s0yot~=~hA*3$}h$TrNU$lWI$Na4n3#Kr#yS3o>EBwFK5hPA-*x)HyO^ z#xbAT@}ra(STiQL@5GLgGt-m2=}pRf)<~hgGjTDDrgKZZ^PR<_=23@g_?P;Kd?~3Q^+PHJ%egEmYVKy47bfMfhEEc4aDlCI_hU>e_-<2&Zi)Tr58-K z@4Nf@;IMAy(p7I`8Z)v+Q+_fL3zrRc!&g!jaKNF6bQqXtk{QP(6515f;U-c zt-b(ck>q>? zKq}6fP{hENky+J5>M%;qA@xgj&UnpWFAeU4WO&&Pq0x@mhZB~D?@n{|C_aGpORlo? z47^IZp4(U;)b{$*yW*!z3j~-Rh17JO2df@KYcw=_1sCiDxXC;2;Z6gXYSMk=2s4=59? zZf@vE1V_sAf`XF|*a;&PV`nMiJ6^L>G_uZ8TVPw~ZEGyw6;zxxn7P;8Q)SBkT8m?w z8@ZO{bKqW>bj#Axyr)s;A+8?%V@7b0`t>L2W9Mj8(f4htE>->SNI}{O1?)2U$yJKWUXv^E< zX;n?)7B~S~~?s76bxLiRP&j!;>;Vojgv(2AVfPy=f7Ri&0CxEKCI7ASpf?>go z3+$Zn$=35~GBsqns+CO=K50>pkt`WK-rBzs*02Dz@1a=WIxQNvNG5}sgVgO%)9i2> zykp$Zx#+)dJ~`xbHvcM6c`z@)eoTT)V-{(}fO227jLD}FT{()tXjB?y3) zF=so-^2J}EfL_=zkXCbqRu0~6QQC=Z%YcC2H%*$((AjsW0K zM_HgCFU5Xf?gksW1KPFbbn`$IYn9P>>^Sfu<#cWQzuY;%oOwi9YXm~(wmHVP=g{n4 zb}w6c_7YH#H$p3kJ1=#q7sPD@mX)gy;;oBkXd-t01b^!wIs{A;;^!5L7AeP{L3W4| z&<}_Hlv!T;!iJkV2o8&Jx>)&=GWmyodZ*Wc)3Bk{Z5}@b@;M$O#Nh(Oy0`=D!$OqB zCMqyx7B4Gg)zQfB8665ggK{)Dm6EB4y|ac=56C;g=dd= zQxlJM09qpv2vym_LxHn>s|e`8Ax>Yre*dciJK6Owe9x0;X!U5X>Z@r%s)LVg=w614 zS1lZ+_Y(@qQyKJK9t;-}lOKkH&MXv$+1KkhozCugz?N%$ z@2yu(vAfl)uKGs*GlZm^1ICqKa7LdedcB{XN%HCEs;AxMc+H+kR2LczNlSU3Epmei zq1mA7(vlPS1`<`3S0UN}S~7U&mHfKmI+>&2ooTgqmj2G=`w+P0>cJB6WZh=Q_V?wp zE@I+SA$}+lrEVPdAdb#sW5IAjdG2eoO714KgMMCObJL;(F%l-tPC4XmDF4u+6@QUv zozP#0si?R5Mo`u#u37L21QVe#f}?)xYJX3={B)Q@wba?}XlouPgw*+(F{xUeO*@bY zNQ?gZ(FZf}jpWaWofKMq+-g11C_zG&Cj(v|v-r^tGs42yPx3L;TH}xDQYAT*7`LLt z#4o?JP+mB^?BI7la29E@u%W5ZB-PFN_;Oho#+LQ~y1*syt&TlS0r6OV9o~FAzb7^! zG8xuiz`qsN$sf8OBGuoyug#ZLy?Xu{+A>%rW-SOn#sq%57f5}1quM!1OMu{d`dx(c zCU5g67E*F+LHqpjIjD|npvWW=;Du9mhtJwa$xBx-sucJ;Ex+lT5Ll6aP82QyJm9~0 zb|CAHy9&<#ePVCB+8ATxl^x<>Yxh|yJ!_emAc44Vi*~$@glV2vh9c2u_kyfQeQ&9_6N&BiKbqIho2OJ=WvoQ zt=h{~)OvVNI9`zb?^k!YPdXehd|^e_l|WX@9$!;hq=yBZPnE2h-h0r&b`xJxXiXHI zgw00}H9LU(e0b+3e|n=0e6;CYkmJUn;=!qe`9Ptw$|tvCYoDllTR3pi_-|!^d_4ht z?(UxZ8l2OCj!f98$)5&*AhEZ-dT^2G$YOg#1?!W?w)2HAeuJgsj+|y}Jvr4kA8{@Y zs6~jKf_))Me7>wL%B-3V6z=>6RZmKc*$K$G};#VJsi}T@?`aA%a!M}`Km)hgej}V2? zYe?GD6e@50xCd|n3h0m*LiMvuT-g!@lpH7LTK&hI%#k>2zgR}pUp(B6){ib}qg=y5 zwvg47*LYqyMrF}Uh3O$q8l75vXnd?MC^Z>xuDUObBa0%wF}v2jU!`5ji}Kw|*6T+z zc<2Vm^&{Ln8F#l|CnH|6P4B>`rSTBjgsCTzD1?kPSp8l9zv{0oc5hDmsa0aSD?B!)yZ?xd>c&F1_ilej|gH_$^p;B{YVcxg|+)ErZeyR3h`zq`$I-r#Yc&T}G% z@0{HP&%&!Iv<|5}$kaj3y`e$ZhacIhnNSUp{oPQKjkhK2(XKi#fo$3&!h?I743#G- zKf*+CbyGUxjT+M_-b#G_L~hvgwd4~#Q!rCF%;|-o(%-x3>gRV%5Id)%P!2qZ4G-@# zrR2x?@27=0V(pPdssg<&_nv3K@HsF%2F47-8Hs;J_qzk(6k75<7e(@&CJTb_(qN@O zV*3Qs1^t?D4fIA`7i)@c9hNYxyX;`hqaa_QEgY&Z=GO_Z`KRS8zdbKewePM`>M!r7{Hk{;y_4W>f5kmmA@R5YLRo$$ z8KrnW7Kr8OE(zX-9P7f7Qpx)sT~x`zC8epT-S;mw>`pV?QyNF;ZkB<3yr@UUog?M! z{N?gpP#M9%w{=vNuS>erfPzz?i<}JjTV|9B8NysIU8Ov_f#5+kK8MT3e;Z%q|7bevuqOZa?QbIoNO#9bK|(r5 zZ*+@vsC0J^q(r(qhlEm60#YI%NQX#+NPht7hUfnNj^p`~cJIF4=XIX16A7uU z14Loa{|fC%2dsfgDUXnT06~Ytj^?Xij}#>v&`BiUFjaH7OYcUfmg$i%W=$nyz!Da7 zqb`%A@^cTddDic3kif!8m06EtKO`Y$?8}x ztd9c_*z^Es5nbkjPND>iBzC668f=1vfbrHaNS+jU8q{HIK7%Iqk)k+0%7!DX)6-PX zT;uJ8z15E1S%;hA;t8Gb_axa8pGTjwt-GRMpC+@G&|@SoeEE=bPg_W2c25v45;_-7 zgLlosg3>NPj2j|3?Bct2SgP>PlisV2$nV4o0uWFJcJg#Bx@@t4@8VG>iYHK81c(b2 zwF6Gy|05-Wuk`JfBY~)kOM$9M)4ngIp|?y+FF+7x8k3StBrvo$8LIB@A{|bf>QA5Y4+D7(OE6jmEqd@}(>Y*(p`$U%V(cPjTWc1)l;Q$J=GqSoCJ~ zGT@DP5NR=zSt{Sjru$s4E57esa)o(jUwmvG6-s}4*7=Xj69KZ{kgsg`2m*Am(~r|2 zUujSZrL+5X2J|ogS1C}4he8#^ZFXRPFQy*sE2w8#ksFBTQ}|I)Ua@jE|KTTS(_BpHuolU%OD zZnF5>ir}M_SeQ|AWW8;$e0?b7*H183)&TiwE$S!xf^Xpdsp?ST#C=keI7pRsfN(p1=^}(s&}MW19T!k3BhHXgNFG%B#G1=a3f3QvCPu-;Zr(8v%xX>^O9OeV-{&Da zgLv};wo>$|j>_>*w<0ardVZ*Gm_<2q4Wi02&MZ){_$(AG@UZqJ7&iMyl9~D4#ZmS= zyD7`>u4f?bHp_JR6O&O}AhtwA7{;ULaFyQB%^x!(pzlkN#r=5HoPp2h)V zio>qD6pRlCCMe(_A{lcjk^T`1dZipBf^C5GMBug3icq^Pu^_$aQ;l@+=6&l3k*yN! zQLr}B(_clOFk#lAx74xe=zaYEoJ_5N;qUy~1SjoRFZ%qpXYUXLm>?yS&$Kas`ghHr z;vD_p0`!4pKz z_K6=>3@}&$EHQc$fJN@4OPL!d(F=QuA($y)`8%NTlaS8ex;CdJFY2N)?xYXSYZhRg z)ZnkF(?eFI80pzS=6Ja&48ezyeD*&N?a9zVkNRhQy;8;h#l3!iJ7@)GDK#r3T8DE2 z59&#uHYKMW#?tIz9UkSn_{!N}+SEnBL2Lc+J_mxe ztrhnH(2LoYcl0^g8>!P{TWy*Wn6d2-j<&uF9w1~`8;cYW?96L%aj$sb9w4$q8{8$s zn7Nz#!Kn|Mtg&b13N4d&5?cDam=$ay{WuwR`C5^Xd!(tFENyf@lQ1ynx>^O+0JN3ln+eL3W9FzZ7g2lZEC$P z+4xgTiYhe(BS9I%0*T^4F=(Y_^zl+_vP&sC^W?Xjg#vLGd-|!WT7xA{*=QR3bDdLP z0S5`7%%>U&0AGNfNjGw)KZ;LG)};;Xy{T-%r218wb=0PiK^;`58k?jUAP#< zwSh5!%EDl6-aQZQrKY6q!&$nnR4ti4QO(jNyT(?icDSrPuqo(z6@oV#eb2$n{YXhZ zrg|No(X9MY|I}Uj4{fd2HaCLPX=IF3hdXJ(T&>D7m~l*frhJ(F7fyEioF+ccEvEyx z9?MFvmVm@g42ON@6_76u;%s8w3v8zm{tj$JG%XgBum(5`07gy?@8R3n{SkoGa!7ycg zau)fY15q6IS#X-oB_Zr3q5AX6BaoWL3vV5Wj`s^@0L%|6@bquuH@MpQYNK|rZS{DF z4I=>=5N)HK&D{PsB4!rzey5A_?DL@muGc@sk*CjTG)%^jyDgs3^I$Jf=GHNN%$p=h zM-DF32WKn?Y#u%g*vl~ud$IWv?!$acPBwf46FiM?x5HW3sUYUpr3Dzl0Wh*tx)&u8 z&Ol7%V}75mD zHa+~4BOP&AbLomQm}L=WZ?hxnLL$t{T=gCU{yhm{E}bsrpa+!qjMYC8@Tsf>45bV| zx~&Lk4g}E+@D*?;tY~IP@RflC`$h2s`#E{$ilCN5_K~6eV`4Q<3coszV(19I7u+$C zK?fII#k9&#cBQGtl10nf%)v)~9d!dQz(1{3_k2Fq2QD8Jr|ys7rTmwqp#7d)8hXlB zkQqVCcZVIHX3cwsj48Keq0jowQlc#%LIFyR-wq}KrGlR{J1#@g-Dcapr8#GfO7IVe zRowGF2ipU8tqVf3aVZqtf&GhASj`hPmSU5VQGIunR0fe`Id&)mWD0lvS1tI*{zY5f z;Bl`> zJXCnR=SvpwA`Kx(+*zXtUoT7m;630q5GO7^(<4^{+IUHbSfHFg?w5_XbsD|+y~0_1 zcu*2@)oHcM4`L2!x%X;61iqES5vJR|i6+c?N3~DM@w^6cI=cR?`Sk%Ikud8h=Uc0B zD#*<;1~XD;l3$@8x(q@?B-WQCJgsWBxY24AGgZxb;*U{Y?W7jQUxww_LM*ZWZ3Ot- zD5J!fw8F&iu~GTZ@uUjNZoGo4V_~ow6ZUFR*SovRH*Ad?j3{KUUxb{(gH)s2sBBU& zB)qVo8C+7Yz_MuZMAikg1MMQeE2+n2P57T}6utmS7N>&;>dAA7KE7|1>k+TKo2F)x z;Fa0O@fSX(l}?{{rgF}PUM&py`3RXh8dJHOd+RQc+su%}l}-=VKR%niyu&2d1r8KV zOm#t&l%ac%L;soLmKPIhf;J|;MzUgFPH6crd7UjZwcjSguAPiWFE zm4Gb7AX=IC)%%$KhwLX?lObhVpY)-z#B4Tbq4?9pr-{T?yFNk7<&vS>$5_GKW2TVz zTz|c5b3f`;4x7nlRjd+`t0kaVJ(YMArN}=gC{%792L$JMNW~ibO7H}v+qC&w8)wcz zHvWb2^v`D3)T>=dLX0EI-9d5-+rx!}*T<6TiWMl^Ny+Q2TjHD zNpH-`PLsotGfXmmjgUg8GufZ;FaKpf;n|GB`=StE#=OPA?`a)65NCddBh!!9!+!RH zp3jFwKy^(0^^ZFDX}SDXv)AaU_i}eB)tnzE>$H_725=9(Zo;cDvMswiJgP}HlF@HE zkpuVr$=|m?hhpvM+Z5L{6YqAn7Ver-C5L9s{(?h&vO|NOoW#zQW6l38}dLcdcj*@4SQ+X#=pPY2ew&CgFDK4l}KTxLAr5nt;+C)$(>O1ArwNwQwXDLS2Uii<+$S`0>dQ zpc|yJ>OfK^#^Q28%qgdU1mR~0Li&7QsIDR01W0|UaXK!4gH=iv_Bcwu$yX6>n0#b> z@1yP`ofuU4v-rLdXk~J|bi$j=Tso?wLrf8WesZf_vVi*vP3)FQ8XI}t40L^0&9KZ_ zF#>Hkn}masuxf4QREknQ-NEGX8bRRR2_r!$9Whv{d32ecBm3;#2-U3g#L}J85F0E@ z8dBbL80nd_A`m1m%ybFNy%p(>58N(1QVlly??=IDsXigrAwKx~`=?E^+Gl1K|9|Cr zKGzG3hX4`5+FI(oVdjZL81{W#6(uVDlLPnFdvO&pow_2+P z62h6px1E1zLeioc;Lu@(c9(ZwRu=y;{WswV$b!E;g(GV5fTiPZOa_jc`4zL~|Kub; z5J14fbzks&J*_?cSay)Ebh-aUpA>}_28m$8%E3De0y$kW=R}n9=(F9X7kUkr9t9eU znJ0o%QB`%OiMp!#ZfJ7J)95>?t??ZGK*H|@Hv?kF-*#idOr{QXe zih6kYgL*B+E3`+7t>BRBFNC=NsT*K(0B=@`tpOeo3hUIXTk8w+-XA1-z24Wbdwj6l zk7MT+&XRqlL;Ebvp|`~I11wi8k*HFCrOg?P&mR0>j}1ne`HtLEUA=dDzQ3TA-iU(n zN*lwcM0RRAMZP9_25wa>zMi?e;4Z4^^T~}Oh590G!Kk?8(h)C zbcyrQN1@e$!O;f>MgY}rBJU2qbpkvT<{_!5(Ec|W`9X)EG!Tr!b}0sQm~Pd91$zfA zPF@+vvXynkNUdiw%B_kxar|h)vZ#jd=mCdbZ`x`Fr5JKOQUD9x9$5VQo~P;!-I>vM zwD(abEd592QBjH~SvYC9N~OfEz;@D!{Oj*9lP`QTC4pp?;u*zF#rrL-)8C$%uCcoh zsgV_vn*gd80jmQJ>-FiC08ob{PO-Tm-V7!##oAOF75mRSe8>LpgM(9(*3*AB)+iJj zG~@Bx*r))@4N!wZO^4QZBW(isgoujz;AHZiET7 zBZ*`1{0~k6ZYex=0Hv|myvMEfeC>zc$dNh4DTSX#dlFo)3y6pNKM{4?^#2H%uKkEghIlR93T{l^3@53n}rX=S+LMTy2;;+4#s zOUG?jU|d}&9Za~~3!z{$bU>FtW*?CaIoL)r5fdRqlMS@1 ziPX+pK}$O^<=A9BPZU~36vpEQ2_Rm$h|;KyQ1F)L5Sbfz~-108zpqC6HhrIRf^lcH6YzV4D-i6dRH<`<7vPGyhV7R+}0DLoaha< zUrW{WgB}z6o9)zmm95#S3ixIrDn*e2`r6r?1i3{d*TO_1D)G$23}T72;an?h=N2Kv zi`+_!EcQ+W@RTz1+yV~fcPB4C8g=Tt|HZv7QPG0iWc92nbwX?SwpkS8^4g<&BHG&w z3~S#1GM+P<;tQml1FA5VO|{Vm060)Akat45t{p+!WVbr5 zc|n6@LER|N#qCRFm(iZ{=9)LEy!fXLF5cVu+hpmF&U4$4DJj``hT)5OKxt#{sBIg> z#0nEn>9Vs}1LX$SyRDRAkcTU#4t_t%%#nV^AAbrV)W`WMPV`;Af$8?~%Rj#R&(X;a zWc(U2c6`isH|!t@vT3quH(t>1WB9RDqCx)!ksW|4gI*tLsz&g$7SX5HVu4}c{Q$yY z0AP`G!8=vQ|5frfz6lq$oE>6)f!rhVpY$u4yPtbg^cTbf=BItHhue~8RN2~kUpK0U z`{l>17~j8LnQ^IJIz%^BJf`J|;`)qI@nj4>lSVh*ECK(D<<6oLgVu3#%}8!DEIE@#&E}ptnT`M^JU?swAg*00Dbbz5%ml5C9%k2 zS>DMAry^gS{_EOiM{kB}%py1;*CxqbUvMgh9!rdzanAS)DCRKJ&+Yf#e?MY5(u~c0 zL-JdOUq8#{^_~pj3;W!o9EP%%U|hdSnbxJbVVQ^xM^M-ULXw*PgA4FtYgTH*(>9a; zj?(bUODT{hr*Dq7zeGI<#g80IpLHKi$9n`au}^SuW)_1oJ>41K_&;||O{0qPFT1p< z*6wza!M)BpQZYIC!bR@!Aw{I{X|WmeDQ#yrkgyf}@8U;^#}U8Kl+5oU|E>*mx?ozy zvmcdm8_0@n;c)e{{GWJG`p(M%p8>5P4lF7exki%IXF>G0bfZ4gx52#zT{<8>p|2K@ zJhcQ;H|{3q58j^*`i^$sZCO3FaXBYLLh-8kRoT2TMxHik$VO>$6h-k|+;%g(R>BOdhSK$(Rfh2>VX3J=>%=<82`wpSsyStv2|1w>V55dsCA?iFb@gv3alZ1 zuWHD4S)gI&Qf}!;ejJ>6vpIl7C&)HV;%D6a`$@GKZ_(IA zw_yj;`>ZDO>ogvPmOKM|N)mr3Z&4W*Q3GJue@R%dWlb>bT0o96_SI6YY<%7c*}4CJ z#eX*hwM$&zf~uRVv0(jx4G>^Npxbqu%I+^9$lC@$H(!3wC$NvCUJQ)skgkNX4R7;TwTA#VFHJ`4 zKYBAl4HJ$qhI(Th-ks~FP{vP1IQ!eZH$Lv&NB>h1-SCqmiJcs}dm@A|(&|A4q2vz0 z1c#mahh@PCltK+UO~A6C&TbmO`q%s{yRJnVBjJ}x;jHcOR^I5N+VF5)%j&tOFoqKj zXJ%gOswAKwZP^x+f=bEnptdG~vX7W(45NdxQoq`FJUUiYK1Utvpe6wz5~O!+^0o*200s6E)$bJ>I|mt9muS*Y=jsMm&^`Vnx4t&%vf#*4}tJNpSiCYBkRC@(x_Nm?_t3R3_q zj-*3ESa~VEglRcs2Dys}VfA54Uru`QaV$iN5OyEn82b@3`K(~(saXId`+t#tqlI_D zo>zg?dy&i<`uZzdp>Z1z1~*;lea6H(jNBnsbh0D4G+pLb0-FURX+mXJRy5C2b`|TW zxr{u`ui!F<)aPr`Je#K~&)rujJrqXnxn+xUbLM=9uZRy;Znu6>ht#h;bq*oEE(_ue z2&(bGgd?{?u+!32>crwV5+_70_zj%(I=e8-gGVs%Lloh9DZnrRSmXG>th%u+ zqQ|H}x@7Wm&8-b-%VF*+_~%o6Z&Uo`OI@%6g;m%b9_%Ils+aM<859PQ;{Rs>gw%c& zeVgRKUSKcjWhcsl>${!0L*2oPe+0tSiJ z7|+`TjMN|UL*F59J_F~CsOYzEQ*q|5)qty!_4R9*I2%jByUP@lTBRRK_g_vv63nX* zA}h0SfqzaEn|0QyG}i|ozs|9I5s%^r3iiSWw%Bve_1SXt`f)z!_P6*LP+oAw+QzWB z5y!V!Bj$VDITUJr+=|LpI$7xDBfz4TDy!4IGZ2+1b$>PW_4~L6LCnFrfA5wx+sb#yPe0 zFQSEP`etK)ySXrMuX+Fa-|bWJ%k^{&Sov|jXQ6i5fc4W?DHQE4G~=d2gv-9HA~uol z{lkVZ5UKUW>3PB(uX#tH%t&xD+IC$pcldlG(BDALL8ZQP@JxRTbmrwKJs34Q{;|UA z?T+6UZ%ICp{KWG_jp8YMI;7nK2Qf&K(nT|IHPF+h^f^QMM7H70J z%Pf^qY|#8WNjRpOmRt6r2Gb9hks+h_gv|)IiJz7#!I-p|90KY8Lv1Nk!lc|esAu>3 z!b`1ymr-k@%|zU6=alqnFUgO?oqoH+#?1Zb*!MfeOWydPzGFCc&seZsJo6=Lo^GG# zPg^p*3GH_;b|dP!0Z-%KPYV-^e&M>xkcJs--bv>^N-xOZ4SpD>_$TX7I5k#!S1DPg zl_PEurJJ@v14an%+H0uLGLv4uO=MGju0zlNLf2J-i^f;xP;6gYNE7IWBt_)v2zIg3 z0~9a;hx}aw??MnMn7ta<-JF!%t^b!Dd2hBiN%YzohoTGT*06g;_xo+ruRkpHt9xz* zn*keQE^7!7LP7c7XcVlpHe(ac+So#t>aOHDyOAYcWE$n{rPxfP=>(oxBt=NN3oOST z%P28J&lv$rfj&;k3Y$#5FUSGRvCMz)Qc9aeq84Z*mvG{QI)Q?8}QucJe)7RDA(KlnZuuBsbOP5 zJiPxkI_d?AQuRsxqfowA+}G77JeV}?oy!&vC8`2+BhfZlzN4 z09Gn>sY?|^Np0=x>D+h=TMw+)w6RZKHy|Cef|yBChn8p^x@CM5Tm&VBeVH$pNXm6 zb@n8?@*%`Ha)tN;OicwXK8P9q=cZ1->7MAQa=-OTzlCD=*DLjwC$|Td=T9+BBvucc zCT4x3=B$~?{$YFXIKo*f$VNjJ%6J(6dPHvOmKrD@O>qzAtRlr`ujbAw_EL@Y;Lc1p#77EwAS~{qC{yb#Adxe{? z1xrHQ(@2Zqm*w>Rc9kakN$~W`_`bgKirl!J)*JsKO@xO7=`Q|F6>HJcnPZ57YzFO9 zNgl;={VA>mOGH7cif~6~bl`Rzr_dz%30PLS!CdmGLnWs|hfJz;IsHoxTrA+CVbayk zR-{SKq|-27p05bd@(2ws!aCbsul`3E@OwXUzR38q`zH=Esyb>Ffb!4_tOoihfGVBd{O9ThBa#( z|1YyWeOh5s%(G)5n`uFo^WaojcDUZG+zXkX#Bc?3fvOR~s;#60th+t8bZ+>EJsxzc zu3yPD8RWqkEBbEiuN3~xA_J9fmshYWpOtsx_GASXf;17~8Y|`@hw9Uv?f8-eQmTF+ zIs4cgX0{xDOVZ0G$(->tAH`FUR!t)GshaKp)83%gy=#8$s_*3U9qk}Xtd_*=d1B*) zpG!pvE&8Wo+bj$OaqtUn!G@=D`o*|{)eii=>fUmJ*rN?@ap*Kk(^5dO)WZpcst{h% zlHZ5ED8Tm-NI;0hO#NqVBF;f#e6rSuzrX51df+5;bRg^NBIS*!md|Bb6!k(Z43i+m z*`O4+-Me?z;p*Z@z{9_aBYrWO>t@s^QQgws(tZN`vA=;CGr+#5_DL)KR1E~YTl^n<()&pBl|DNpXE?tU|7D=S>Rkl2)SaC{b zih=rw=%eh+WA*B*m`4#T+C}IuC^4QD}Yr z^TbUg`Fp@*9T>T3m5K$kW=UXqlQ;;5@kvR(y~fNY=Tg|sPXDaf*31?n9O_@lG)6OA z<3f@9N$0N9o^J1XIvqnIhrVJo)9pCcqG(;sLjYGV4A`>fIb6IT-~*^5yfWB!qv$VwLA3t|CS75OSGiQ@_X1_~tvDfsdupdQ);GHTi4aw4w}D zVnSJua!~p_`aDr>;vhd&>Do6D$t0NE1lAA=n#CU3uAgk2Nd5z@FmS>oskwjJTb9JEc`I?2dfK7+7*gFs8TI)kT#5z)h3DxH(rykRU$X$1%9MulGS)q#Zz@@sK zVuK>jCik>BUvC|~uN2IBzmPcV$@)M?=&q(>lOW*mZNmeK>!-qL()R(LL&Zc9{Rrcg zhyhUmk>{<7v0Ut>1O(|L?rIb(I)by^c6j6-{7Pj1Jv>2cIp(s2rA)oK7RXyqZF~$Yn60?0g9{v3ZEzVN>RwN#kWzq zry`Rf2iyPnSr0asfEPYDJogSjsvBhJ#SMKXSAFc-`c4^Rlfe}3jLD$ z!b4}oU2QtH%7#78X;EhZyI-ZlZ<45q)c@PIKKJ)9{uWG;1Pjs)>zOVfvJSu2)zk!t}^&O|oa745hNGlGL>2%_zA?(D3Qvg2{< zpro9n?{Y7CzI_aQ_J|-nvfcCW-(CxmXE00}`YnqpquwKd#j(ifQMaIYw!Fer@Y%Km zo9wt+ZIxBor5^1Af|?o^IAaXQe!9y)=hT(WpNfZKj&jMI%nfU3U8mQsOR>D@zf%TuUG3LKn<#tJ5v_3xh(OcTmTh_@DjhRg^_xsLKuMZOK;M?mm0SW-4@TXX@kAEP|c0kJC8>-kXL$<#$Ij z=8OuJZ(Coi7zZ#0HlJOb{q*|%P>R7=^Hu780dESP`i%cu)$Y{NpS;S;PW6Fd(}|PA}h*6Wq*3?W)~43nq_=x^b_w0750k!w16;m7u)g%`ZSbJBEh**e9Dl&^&lj#?>D zSUA1#dJ+5Dbo)0y(O)dITtpI$w!I{7)LNWbb7{Q zYoU7WT6$H2EO#(OZ`bmmSA1}!Pg#)D z0oo&Bf9Ay1oh|7=|4wm(lK_HzCyjzZX^VuQsiZnQIB7e@KyQiqqRe!Y5G>u~*Od=cy|6o`oZWxEc!y(M2r;9be@Rh}xX?`DloBWE!s_P>q zlf0mmrpkxf3ubu}mEGZ>Ilzlk=@o_i3EunKGRaa^hr0#^Zc6W~e?Lpyknm!i=af%4 zRybPFtc<&{AJ=gTPHI%BFS&oyK1PD1OS-h_8pksPKVwf>QDI61p1?9TT+On=tbK^s zwH3qc+Z9&q-|9$WSB~0kHD)Mv$!4}et)SUs&U*f4I_80if(h*}-a#~-Zj)S&2Yu>a zJc{e8QN{KH5Q7wakZ|I72usqpcD!K!wDtOC2^a)x;Ckh@r1@#pk8G5#ZWAO`p7QhN z2ujemL>uh?qCC|5A-99&KpN#(WU&psw;F;+F~(X|&OPc5I0#94vWx`OZI%ZeMkT6`4mtlJCww1V1pMj%^iMK-3o7>;n2=uwBtT{%8< z-DFgYqPV>Yg^D3M3S6yw)^r-xS|HGr@6TDl-_BWsk^XR#h~u~cipDHHvmGy7cqFp| zZsO}0RrnnDrsH>q`ma%>J+Sd?hR+9MVNbTvmaDU#+uacl4|WlZJIftM!AFVt%j2%R z1j_-}iLHL}GM5JzzigKLnhx5{=sfca*3Q`S3qR?+k{bv$5NCxFBX=_4soB~*AU+6k z)&eLXu~%ZQ+Io$Hi0GR=2g>Ui2FJlEyq#3rQavSmCV$^=@E7tcFiaRq%khk>i)n6` zQB4qqv&HxMXaE+!o8~5bSV)^=Ruk3v?hFG8yNPR5mbG3U%<`(+YMuIV_?q8B-2m`n?WUB zV5Ys|>VZ9M?oZy4gh@?drY$5VQt+e~lMdU0((YdJ&QKCPB~Z4CYLf4!WNyJ`FOEDg zVNRVeL}&D^v=~Gw>h*e*qE>{n(`o*RQZ>|n$$%I*B3DA09SnNK>%-W#P)qR}HefYU z1C*+16$Z>@H~TCPg1in5n9<&V-Yjdh zEx%45uZ+_}L4sLy46A@6y+U(2Nj0Ct+vk|&xKmslIaFy50DXGo-?>s*) zo5W->&r0@GNt^%bo~`}V9SA+Z1V)it}%kf^6JF z(GS=k%4~y3o9;*EoY*9LOmWhHXG;(ATQlc z!WO7yaSO|5=?}bPP{&kjZzkl+9>6)A{Ri1bYGQijiy7h%L{yHS5Zb?Ld$Hetp@N?) z`sw-1fJee&C+fZ%^}wjlza^LT9a0-0`@q!_W+YS4ZT08AU)pg%H%waM1EcDF1Mm^A z#9~CYFlsMc58~^Hb7>0lrJuileXa@8_`Omo=^Xx&?ZcaaWR_@(<)vTZNX&$7AlU}S8wBYOMpxk{f0U}2{C#URnj~>8dS;b1mj5Vkt z%%1tW#1l19_fZ+7ZXfoMK9$!U_g>Dw=hlE>#z!r1t5+Bdhp72<*PlYk8!SS`d=>uq ze7{IQ9EH3IYZnBEc&_4{JM4^Ks$)`J$_41?38OfF`u=zt@v=r}?7g#JCd&&(qp|D? zq4KF0=tt4Z*Jr0@yYv0(q^RQER!Ylvq`2*$uXsR(mug4Py4sC-%yUA6Zm{mO03IVn z>62@XFsDtEO40RrZ;2a*r+*jrb?KDar7sII+(y7=Je@5kHR|>+0&O=Jr*|&(d~c$Z z0n;9I^T;AFXp^F-Aas-TY-(}3?h~A9HRl)A?u56@IA!f#%`oEsDA19V@j+%M86yr= za>wLlCfq+M9_kjWGf0AIK6GsBc9FL{z@yK3W2(xNSE4*6$w|K2$YC~!R_gP=S~&Q| zb0Y}yuhM$_ttGY)qv^~UaZt~gzD8A0@taApLRU(_GQ4@hc~Hn(me+@TSeQ!7?-OfH z)Gx_5^+jzulJVXha@p%%l~1}4Bb+9hdw7q!U9do!sWSZF%CIU;x1S4_<-oB&G(N2- zr)W3lm-EwM(-)?l-l^>MGZEhECH;%Q&#rms+Fl-?eb3#%-{PoIXyMDZ^Yt z?>T#i!CftakRxc)RhmX~3b5#S5EOpBlGVxPRbsm;)R9i)BtE1%uKI?1arDUnLv8y! zO<9(Rj62d-UEw|MLG;P{s_B#ZaAAc3Wvb!<{F$o=i-Pc}rsN$Rm~ ze(VTJc*9`cm_evD!erdyBanDM(tm=XuER&k6ubPja9neX4GL1t#bAYEp_J;6ze?o% zm*sq*FN=+p{QVLSg6w=CDgmViZUx9Da0Z0^Hfa1I1~5c$;5IuV5VcI3uBwm*O<~#0 zBlAB2PWw4`#`)XVIe#g0BcAK6OTtMPCf^;$i_%t1FCYAx4hWLk&rdb_iGl?P&!zPR zm4eMtJfJk;&?CAbAGR=cLl93xVHxKW6tc3rh6j{2aTp0EhMqq?M}yM!faI6E2afbS z*vuD{Rj_ZhE&ES*83&LZwYigF`Kgg6sL3Lm-T*pIbj@&o#0fU>dK%~(!Z`ck%b-VE zqKfHg6ty5=7kO|p_thf7 z_n9&Kg)ROv;A?z9KSEE}Mk)Yl7g1fMAPWR~x?X<3oi{qQ6ioWYf{b(~BShlXym;b{ z{J*gi=sUQN3R$YQjFg1yZH8!keo&Ol*aP{@NrjbXxdSbSFfi=icD7(D)Op+kQGHEh z=%a_f)#<){$57EAAQ1LA(fONSdG&ERruL7bZG)i2C0Q`DnWNg(zjZcZ2en@^iNWSC zm$!RkR%S7Faqh1E(JgW=$DEdj_U^Y`cFQm9cLpEv$_lf2=Q$UL-V}STzHHLw9xfz* zfOw7`Eyvs`Iu%$%zo8zdKk;1e#~Z?yanac8l$1^863hu};Gj>#Wj(j*Fohs*Dr*Oh zhM3xlHI!r9mRX@gCZtoqj z1ZLV*)xhJ7 zWgF~fe{cGZHO6NEQqM?4_J_K$UAV#K>x|p6#9{dfqLmn|2?Mv=c}9X=cs}ywE;l~C zX#b;NjKueuKmdeX7~s^Os&6Ww%f&6tX6aR7AY?1O(zj!>k}2G?nY`Cy2uOCDIS-t^ zVL7<98@wG3igz_I|EGG!cH?vQfguGm7UnI*JTzaMJxE8}8W*6_fz59);@1Dge4Bl% z>_IXHme2Vt7L$1huLR2u24TZY;xSA)2#%1Y>j6GEB=l-)5=~HdSWnqv`7hsAP%5^V zhteN$UUzIY_gLoiP3On}mVdV4Dq__RgEUq2N>c}+`>lHU6}4$oPn-v_()BK`cJk{9 zH57mj#n;Z~ql!NjTh~Jl+X<0eN1Cm4w_s6XjfEm?6s8^e-ia{wY~~lUo)S^ezW6hc zc^7Bh=*Mi!2&*n4cZ&%Y==PjXI4nNM`0%HwZK%p7B6EyzW2*SzPIX(Azt9acRp+RZ zaTGi2pR`Zm2Is7xdB%U2dCzF@HFL5j-=4L76D$*ZAJwyzKA+Y1tvo>QV7yPaSGruK zxF}6)6Pwf>qSk+k@e!1YS8@8*{xRxX-?btS3jMe3N{3)gXFd2qU_maWBU##Jfp*qq zRuA;92|vm@olJw)uo#p!0IPIYngYRqXrTYMe0T@{9#saisZpU}Go>iVph%%(5I<>% zGwnwf(`f#T03%Or@yB_dDy46(v+>jn_)y z_&rpAk~Y6E`*Re+A1g-47G7eVTE_OCLIx|uYc)z_dtvzEJc-=T{L@vtL>&ub7dJVx zRb+U;A2xPYeY9AU4U{CyHWN8q5(N1iOybY;?*#A4yRe=~oU7t;lrSo`YQk}-2m@60 zKy?O&N0xmGofzcY65?%E7KDyIg&Z@su~nV|Rf0GI(9LJrn4Gi`90b-X6ZUTX$`U0LAS?V90HUC5V*Nc~h$8l(SKNz;*F z`kZW&iq&a}$&txh?EBf33OY?Gm?_)I<%8qnbV2}~l1~7AH;*rZ~ zmT?waW+?HfzXrSih26l->gOWbdv^1XynNUAcfns(xp7?sV zyuv_?^G*%z)MVIIq{tN%d?3{^!QoK0G%c~6+JC>AGd40$s74t}9%8%MM&WFCc#x5$ zZ1p`SfklNP-Xr+;Ki{ALrrlxR z*Fkz;3WW+*3dK>G8b8!^Dj5i+tSNeMdeB-Jb5tl;L~@BU7qF7UwAlIDdwnpZ2xj&u zF$N)A-bh6p{_$hT_rhg9mS#gKPQ-xpY#St|!7eAlbyYk~ziq;ieB9kJJz7o;E}6xe zKR>Td)4cuj^*>`CeR1xLihxkRV#bW_H0l$+_#4*+Zok`Jf84zZc@0gQ{5Q(6it*jg zqwY=c_LjxFammjWptR@mQkm`yZv@;Lo&~_aNwXGjF`snU$_O1b64Z$AC_m`6YH{X` zl|Pe#7-mVHhdO>D)5h#5l0{3U?m5@#WynqpWft#O{<>MyTIoGcR8>dIJ4J|&&p9O+ynH8uz#JwP)*cKHIhww* zh>^=4zJ9j285j4Ue;%-+9Z{7TOx7~@l7M4D$iFE2ATdTWqVFvfLS>s{&l>TNNNan| z(v+vBNlv)^FF1A(Z&JLF&E4qFX$s4_@Dq4^uuwV0KQpk7RQv^%P=yffFh9BW>ryW5 zN>G}>L!_r3BahHyq^ErXXgoa-_uL%L9iTuH&z!J*T^zTa<}Iztd};GWjqc2HTIu+U z=#IP$O7*RCScgccupH`MJzF)65@k@O@(J$F17_FB(6K=t4r1AU7O)D%{eLu_bx>6Q z`^9(ZPAO?vI+aFZ31OE8DUniC8lwf$)Z)C`U_Z;+7j7ZbrN*OQbLvQNbO0^2)Ik6 zeqP#jwnYbch=0FXWw1ew%X=^yEn>lvfoB?+!`{YWjH-Hg2|XWnoc~ze=*K>vv*E$p zJ6gZTQm?#=@8Hg=2g)4>r>ZVx}r61Q`-fK3SXxzl?Ot zJvfcB;_wQ~C88A@-`U}z4+YsR^0!;*RxTvu@CjL_Ax6Zp)AA%EQx{+Li($XpgMlM8 z1SBy~u0o{HqR*q-OSu9kN%i_|2xMs+V4-;a`6^v$m9~sz!Li-~!F_~$L)&=%(v6(_ z8<)RlA!cK6{R0jtu(LE;$NzHK-8_Yqj^3EA7XQR@%b+NFowsyD96+yiaC4St3*y-7 z$QpZS%B#nk8hmv08L{TO(|xpd?UH@`W4HmGuTZc=r+QN~)|{{SX~wMMMwDzA{3?r; z2*2ZYcp&9Eb0T8@s~7C?D_KQ7O1-^ajBK@*X>hs5R+K5fqFgf>91HeXeM_`aWuTCv z--@Ai6gL?s)AJ(&<^G=#wr|)8rrDS|Ui8ny20DjDw;UXRDuSJfQx+rnCj-#Fe}TC9R4jvuh@%!ka4fAa z;_)X51ru+xABvjU@Q#sRzSwr&vceJz)D({i;xw-{Cx;MOm$FjIm&8_D!rmgBX83(BijNqD2^NgjQ)wTV*yrAk&D? z^r<4za`<+;A_)xX=LFXM;0W`-+fv%GLAcSJ^{?6%L*#|WITvDraH4ULXqJ}vd;hwtQSh`HD9)(_RMnmJA1<04Vkisdgt;9c?1i8H38Ai59;*q}uR zo`qZsg}=ADbjDA<%yAe9j2n}{>QoogcO@9w7NgV9<+qs$^I8+O5b*LN+$ z0HykIMEspEf>@8vgJh53&;?LmZn&HWStILUZ=N5th(Ct)p*+4zDL ze5LU~-{q{NL;vx_oqR_R=%1db-UcYCV0e=0);Wowka7U#tTGV}UL_!dr#xj;m90=} zP#0Bp!PkM|N^`&y2YF~f1`81*hIqsoePU0sWXd*+ab-2*7|rr@bfVI)JRM-ajzw|Jq4ALja?I6-`F8GEK-r1Zzc_90Oblc~*BHg?Ss;qIg2~gS^>%==}u6 zvYzB^eqG7B^xeTdbGmz#K%8Z}kyz06>?&pNIrf>mx{)krA5ltr*pJul%3M$heR?U~ z2cn%{GvTYzevdn2fIA{+0LX|;s*P+IzLEAJ!8CX4Gh_nn=^^!d8-}vHM@7ta9i3x4~bMUwr=Eu4Km)-8rx_~|c`j^|! z_n~ay8=zqb`^I2+StoSx`2 ziu(aFGT@w}k(KiCx_*-3B)WTMA8sAnDHZ68%RXPaZA?IqDLBPU7^U9Z9Y#$?8o7Kj z59#cU6QwV0WxRadu*EMRD-H@cKO^@$~QB-wc1Yn99H3R#O3TAA_w!k>^(-)El@t&Qs50KgyC&xEtH(xJq5*_ELAN4 zCo2S(QV~Eu6)c(@!IJ<^W7?lwL$p7stBcpyHAWqnvZaO}VA<`d`wp0GJ9PzV_qJy5 zsss^$3`77#`(bH}FcH>t0Q#gY5&j#HGXj-F|DE?VJT#59eyomWrLcw#;*(anodf-O)$pp#w z0ma)jOiXa}S7bm?s#GcCmNE5J5?(RQ;!9W)Z7K2DTjIvCaTlQx-I+>H7AHYo?j!to z_)}-z)y|C5v#Dn%ov^?U7%ao=zH{0=k2AnCmFXD0aXZ-Xo4}pQX^S=0b2Q2(=yYJb z;8rD5C2u)^{$K|^wKWhZ8~nPICuY0;vH7125brl0B2Q`AT*W*&stu3ds{FEH+a%qn zm#Hrbf4v6vF4(^@jo5RGV4LJDe})Gxi;YO>UlY%d;yEU!85(y%=j$bY#95^3KW54$ zjVPv4`9k^@+4+ktdFS2+IN*xv;v{oq@(^ncJ;~nmxOoQPF8HC49NRRuWZ3-=F#MhB zy2pT*Y6U2H9XKH3whwH%kZ3J{lf4n~%+}aPG^{7GcR$X3s(W+y|4Ma{0lnvmS8Ci$ zA7*wHt-&uauf1aI#=(r}ra%ewxPzWl?Dg{5Op)3;cuc~6qS z52XkoEo{lySfZ~DoFzcvL^NkXmA_MQX+-h5b+%Y16MS#Xy-UZ2 z(<08qe_MqA<;cXT?Zq_%u1+3CkciPe1{mo|_iC8cSp(1w(CjMl&~vPIN-_WYYM#Ay}ed-Gom@>Ta5A@vH&|8HI%78kd6D>&@s)Gh0XJmNXf`ctj zvMR3jM;JjUhX5$mMViJ|z`CSi1xwA9+34Zfz$n&G&IVtCYl(5ZiK5Y{x2q9`j$YKF zjjR(gt+Deyj5B$V?!!&w>8Rtux0Bbo%kl0!D8?EwfXADBm~`0Pe3Zt5Jp6ix={#j& zPEqi{iKfeGK0H}DsX4rsp~ZSk{_XHZAAZ+*&!qynf~YWG40dLdWH4q=iPXO3@Oy__ z5dG54DF$8kjkO}pOE5Fj|I}X#b%tMkXGyZRg>?;zPQH{ad40A zY$9ZxSeshaT(HKwr@BSSIe04JB2R0X#4cZsyK5w0t-Vs-w#rPyhSz_o!AYj)5NgLm zMp-A*5hD_)kp#cEmFv>N;IzblY0Xv1}1L;N$$#-Kij)+H! zvmVgB@jw4GeywJThhg63&?o>;+!6*b(-`T0X2!TLw;G~^#Lfr2ifVlU&-o|Di~GI&xcOjig;WQ=l>p~s)cQwPh?7iYS^!3F>MEzHEE}VCky9V)_fx~` zw=yBX;^)P9&?f`%U;{TYvHNk5;&tqb88heK*X!+F`UBi+J1DZ9QRy1o=GQVjFY_AR z^&V=grE<^IOf??_Y=%CSBH#dKBL2=|OAI z1bQ!8(?kNJ+7QkcacXjJmr7N8LRU+LA^JsB+Y0c`sB5a*Jv za*qjP47coW8uO+!_C<3xzJu_$m4=bDH)#hu#gISSWuf~6Uc$-*j|H^xIn5Pm|JG%# zw^WW4-%83t2nV=@>8m}|z6Q=~#0Gq4;Hg%p({j&AuEvKj56b+2b=_{tLbP8;wg-^) zqk88HfKWkgen5~9?|WA^Xgo&x4b~@}xg(ih41xjt1Dh=MZERrJSFdE=9MS9a&*NFx z$W1U3l5fyrjcL&`=X@ucE61ED2!d%SFtNsgAAHCcB6$j;%GxH1D%9QC{t%^~2oz?b z%}w9P(CO`>RNqCj|5E!LILywMD2_nEQLG~7;)(svY`d9cAU5nGDs9(v=ah}q z7UD%iJUFaWg?*qbc95h;b!Ll2*-3up+ctW~wd9(ffF`N(_$uepzww4G+1r>i`n1+p z79hrrwb<<0GjG7+8F>ue=ksc1@)UmFMEQM*7Vkk}4S~6HM>6c)%^N1Nv3a+gq9AKI z;%^f&pSiWOQoxk`!4PLX1Wf&NuG@FKq<%5ZzpKzd1bk$+p7XaV(X5A`brAhR(!t<4 zdoVLHRSo^+f_&*$^oAFk&%1Oo4zKL7$vD5EfR2I0dV+%)l!QMJvBpvdhRSEv^F-gj z`6<;qYBa!hny;(8#vtFlXt<0F2G0D`VFmsKfBuW($5o7`NThvR$ORtx+-? zuo9yXyJBJ@+(8}4U`?JAStO#Z0_N^`|J_^5&y8$V?{se{Rv%StVw`7tHS|Pa#qv2h z_fK#P`*LRoLHt{jw<7b`awkbaNmm~8X&D-JQc)Dnyume|Z?>NB-XAXcPvXQa=ij;P zI`1S3V^$~HJW3|4Mn`pnj||GiyQCE{7#dkgi}YY!`nupym)U!b8*0K?|22<( z8@G0Kf!ipIBpyj9iTr$?AoyXZlf`g*-jvgkTsLvK7-LdlrNt0*0WTTPB&l?gJQXy$ z8b|u)bnCcH>*=5bDF|OV?Kntf9N?04;}+=Nx07D04owubcTk+37PecEX*l^54~<)U zD%ijH(&Q*3+&8X3i)?$82OaT#OI46WOyBbz%{uVWS|5_I-)Fc5<^{7vrW=gv_#*8Q zs$pn#=FHD&g>8b}Xe}Xi2r5jIJ@ar_qo*# ziDkOV3Kh05+3!+J6b1X-eE;htl8`Z{fc0tgyo%!hKe|5h`0B}Hxn(7gx~C!G(94*O zx6zF(^_5eNTdQVL|1eqB6~r5Mqc{e+*o!wh24ENLMSV=r+t$1Q@C$J~=@azO9?IFpV&a4kjAGxUyyz;yB!?^eT z_Nd1_bIW0kGcVgn9Y5^FTFdSFrTlOj-NmaTTXfVG7oIA#7(X2#5cYbbe4K6s8tQ=s_&%o1Iwo-?tSTjH&KRHtWC~4C^&~W|as{T=^ zU*aApRST8YJmN=}_UzvpM}8u~ak^R?a5_YZY%=q3t)WpItcy2>Ab4gzGaDfQ40?h6 zpYO$Q5rJAfh=W|$c*3Zl$s5rRR@5v+ca5JwvU>TMHyeR>3m5r4@!RLXBHrD^?JEHz zOWpsQqgML%-{HfqGhGEghAQ79aHn*Mk%nuj?1=aknGQG`90Y4~xFly&j`;9TC^z|A zdr)Zo^)LvJLZkfmZp!-ei-~&*14`Xcx_DE-^RZHmYjM zEqWg0LV%xjaEizDwxaXxSRz4{kLH(dkj8Rk?$Qavp9Wpgj#yxZH=4 zavNbAz5?uO_doGc9IhqxrRk0Cr|_aHSm)7sH{Sk^cM^!=S#Mh(aNI%x$>=$Th+^0O zhxZ-cBHa(ziNu8w=5pcEF~M+!v*$VdPX;kWrrSVh&t%r-{>OB?9!7YN(zAVFW>3&F z#dm2W>wj{|gX%lo={jj0P-n$)2yh4d-QsQDcTBS<`x;DNp&V!#g%gJgPCZO@km9dV z-+g|1qo^sO$qEI}{A;HKl{Oy{z8lh5iTA_FvqS(s^gGq&3Ls&Y{19~`dQaT8;Gj}6 z(Q!9+o6D2fW!f2Fb!d4TQJ1`s5lnD1U2k|X*I9X4yK7=hev89;ej3*GugEg6=cWgv zyDrk$fdBUBX$Q7qi*6V3mREnCypKqs+|792ie_=A&&t-=VGq8Y>#waFH%qj8T_+vu zUk-QP7Z+lTXgdoJ1msEu1n+NNjv;@Nz5(j*i|8bCx(Ju8h;lO*P-&vna*+BAE9PpKMAR9_268%ni%-xNu%1NbHM$1H;mq&lr z0rN`mFynJMSs~OG%ZWL*ZZO(ncEKso1H63|i_am?Qaze|eUuB+pfg2|ISa>u5VMmPwRKQB!2hL4Uhj(GZ0LnyEWiW~y>0 zHZP%keRx35N)(QsXPtGj-8QgPq;WXwio2V1Fy>Q!!&|LV=rY(SF`Jy#}3ihGkRuUV&#Xg@Jhs~5${tjkV7SxvK%0e9OH~2ydH!XCi zM;ei;)h+$kgIBqZ`Tgy~=uRAz|_vOhaJ7OF6$AkZtaF0y(nEw*Y-*zF8s_IdJ z4&tV)0=M9{QeS*IcPK#Ewl2T-le5ARgF7xyk2~wAO227W^(MQe&^-+=^v&AkxrW@0$_8%7>1K+`BLF@ zTGKoDnkXl!bj6~DNhqyT(K+?YIIDJ-mESBrsQk1y*^Th(=YKoGo=fB97=R$>n%dct znWRx7Qg%0Z>CUw6wHE58)O%%+iRAG#*A>&x-G;w@+3jzKchOa%kjtL7GdG#vdxgyw z)%_|8hy>8Q$Aouac6k0o2rEt3vc!O$l+Yp$q72#bXwY+tR>2}DF}v=!+7o=_+bbw7 z5m1F#n#D@|oy6$v^o7cqUTH9xNVI>Cys(FZ5>>cVT|$pPe3Pk$>16U064&J6EL>ul z>`|Um(c^EX&D*-%C78;uANbWpf{UhB3X-n!;}|5TD;Tupt%I$b$v5&0GH6A~n_v3S zEbcy4Xxit$b{n2g*mZxS$V7MTvsj{%$8x%uN9NaB{=M5tYLBvcPt9K{SV&rPo4JzN z(5dX#cb|RizeU*Q-Mh0@Zx%+!nqJ{0vASwMLcOJCo`LX!)i+(7*57D=zFcWkQifAxE;-1IW|7lli{auj6wh($PV`)2yFcEU<4(ph@t z)3}RtzNB4%_)1-P07yk%a7EQuvF%OaQX@E7XAAHIM_sgzWcIi@>)C6qN$b8i{d7=rB$2VTic0Hoy*bZ9{+zN8G@6+r^x`V_#Clt9 zPKMmOI_yOt>)e0p7wQGomr)De>h=4V?4}4&tnN9y!FfHa`WuU%&gWh3Asy!*Z}Hg* zBkv_Eczx(L``Tl#7F_&wFhd*OZ4)>|75B_PVi`UEv~Hb&c+KfxSj~E*QH-+XhP`XQ zjRnB5{L*EHSa7NAWgyX81xmh~$9r0__NR`f`K<5+Y-UtdWVME4M97VCKAWw)$2vI# ziLAGGGE|)d)h@_W8+Fb%*Xj~&6|%!1l(TZqbHs#Iu|hX$&l_J$IosNRbn+u_NQuRL z{eE@DeXnrM^}Iv_Q~F(oBO-~Q$GEzIly~f4!V!CRFXkZHjbIffE%!V@7kvZ}^Xq|G zRt#u+lF0A7lh$#h%?!U89vyL&K|>Br)`LFNAU9<>V~~OCcM#x#Oi#6n9N+6Tx-jgS zkG?TEvnsT$v_jvFjcaU6Z!7Tq>ubj8etmYa-FygosNu7Id)->E+ls$x5i{dXW%o$ReJUB6?M4uvhu8Ac3E z7hG_@Y$nL0svr>jJ5bQ@bV+0dmm;2h=@4Fw`Kpk3OQjH}w)ghp^0;ToF7K>*o;U$N z7%U2AFQX3)Wz)~t<_4%`+{f78_(1UbOGW#*-CQ^HV{V^<;B$30I6@UCj$nph)s8t6 z=ty*fase~~ftSIA;iAE8@YLUceEmspNYtYxq;$Z-#`uU zFg@k$XcePH@X+)~?N!a1eXv?P^~3GiBUa-lo2;5o z<3Z=MxXBNsIcSjHo)dB$b-%orlhZ#Vqmk0i@E0xbqzcJ)(#1eCa#5mbkf2OJxe5}>Qhyxk*|c9!nU27g|gM(jgdP@i^v z5F}*FB`dmiS%n?LKZ(|5`z}T9#gu67^{?vuk59^7K(K97W$cE$64_hw+lSV%ET=5* zhwzfmYyPA61dtPce81eA2#a3}SNp)SvlmrpvE!8RG)(;v2pbp3DumtvXvdSn9&v$zkhmTsRKwNKS<3#(vQ|Non z5%{Vsi!S)Qf70%`qgRq3xF3~_)~;wz-XXItP2l}+mLs1|)i#qs4@oz^vJtx z{vsA7$cz;D@uLH2#ugoQP~4}xAtPmZRN^cD^dZJH&@-)p_i-{$NZ!>if-3DuM;)_U^-k|H$YjLHJun!^@WDwt) z!yAbZ6n>3g@IkMa2IxChvIDF6ljviGzauKUvbWW2Xw*007wenSp%a~L7r(RzsIg!` zGm1Jol$7IGq3%B8=3=VQ@)y2W1|j6CBgnOq^+X_%Av@vZaf-OeEA!yeAo&af%@UKM z8r5TuYER$8v%c-$pxco*boo|bJ@JbKQjV)?tmhn1PcGRuf?Ty|$(<(x^J%vFM+du2 zrTJNrYAfcxl0;8olIJQssBMwLyY(lNBGq$HY9-V~X^rqJ`jVDipE4_zJM-O+ovo+R zoKtnY-!Lz+6Q4kh9$;jM_;Q36V z`|uh8X8a0m6~Y}>XMV~3SJ_qqO9b0a9U7USS&cRKa)%d7IgEwJYT2BSUi7u;Yj8!x zEZ%sq=+7jUXy`NMr=co_k=Z1G2?-}Q^n{rzH(}?}2CQ~1`CU#wPndmN_ElO@we?Y$ zJBsl{sE=Y#ice@)kH|hefJB**L;ESQCuGj_TVTWm^`=0~HA!&S)oo|St?v$g=dkmf zBG*xy23NrpZ4{R1zZzxYGt0Y9N7#(*;&|TPfH&g=sk)_Uq=~Th3752bG=sPYOm;;s{ATM!itP)M+4&YnPyrOzZK%X(`me#o(c6b3Qc#F>DAZ5V=}c{m{K$MhhE? z-zHSZ)7JUstLWW>S_DJZ+5sf4dprOL;3SLw7Jvm$dw4@10+Cx05{27wA#v2bh_$GI zRM!R%aw;Aps~^5D3qgK6^#=OQoviSGEyc9^&O-llFbzNLIW8L;Q<8UZ>^+Fr5Y4+%OL0$#o%AgzZ~}p< zVoGx1iZ(oRb*?Sn(*$vZPY%cPhs57|l3HKq;v^sTVGn{+1o3n4L$BPKd~i%Ts_{*j z*`DTHY&po>E%CF(bW_n7a~$ zvPgUBh<_|NR5{r9;2Q0c)X7N+{TgHxJe}8+t$7|Wg=M;UCUnfeHwMHiZqsSSG=99M zBcHhxyMfwS2BN~pa+jBRBOUPDl9RD5TZI!WT8i|;lcnhh-0&rApA`=(RuHGZ?N-@w zp)LrnQ8y4PPWOgiBxKx4h6OcAe{G0-XN9rOafHy-iFv>X$v{OLM$~aVCl<-G&I1i(bcJM@Z z@j@V!3)<2=frhPBD$lqw4G&TE8d125Knwv7zvKlDurHn%mF0-JPH1H_V7Q!$+mHwL zg4@_llj}my!2E=w_D}FjP6cCC)T}n`lxTCNr-j)x}{z3X-Au4isLQT%3mp@{e zCOLv;WLGN$SF-7tPn1NMtK zvP?d7bMDY;CGdOj?Z36as01Sg&`eaE&aaDSIXr3^mNo0GC!V&91^Oi>+!Qi`7jHg3 zO7uiI_W8;PlfGSSm*izc^gmW_R~i}nsWrtI`VYeqw}0_I$Z*f}Yp8mV`7897_dy0n z*?{!qW_YBexP8V~A{7hILPdZRhDc*X_>##iXhPFjvR#PjuRxD8v-OzLf@RAeG22JJ2BA($A!k5P4JI0Ero8(9}mG_!0^WdfJc(bseO$K?WK5gwY`R1Xq_ zZ(}{Bc^Gbo&kt2ICd$^@`A^4Km9IpX)%%gG0{ss{^?5$AZj|iS4BudfqEH9G{|2tJfSY7s6N$@VPZo_zs2F%AX}XC8`%}XtH)M!`4`sJ3^^cOuaaSlxqq9xe2C$6FnA zQ+4=@t;%0yj?gqKE+ajQut_EsWdBBWBE&;ou@Q%QzZw^gsS-rU7RL<);%%v9V*?85&lTouz?K`@GDx`11uocF6U9zCVfS3`q=F6|O=> z)Z#n5fU7y(^FJdq2M9tWpGUCgC33bCW@+x~kf>9J)~VBEF;@!=f6S;VQ&ZF9YaaYg z^`UsdyN3@)un0m=#tO*10GW=Nl-5}TqsnQOFx(V!u^$9Vp-AHVr zpX|}yduSXxw9MHufhTu}&!1N@++fU*Zw;)nn)*+)X%C69j*!8oL+euJJV z&pOj#Vh+TD>#ng(|BYd{f4yyZ2+AuU>FHOTdx@4v`!McED;=TdeEX3^X`$>L-*^LFheGI$Ba_nlcyQfM>9LE?>7K>q1(uqH zKTj?C+l8c_2Jrv(FMWPiXh}h)5n#1Hh?|}**R0Tydn|b>Ww`T#thnp*<=QmMpD{O& zPq6Kx=7$0-O7fBKH$2kGG;M|3Py;%tJl_eA{=NZ1}p$t3v$&<{f(FBgL zp*n-)B(>^yrcuH6`n~MR=_>5r(%n>!GrzOOXPN^?dxMJpH;b%#Fa0m3CyF#Y(KRhl zM;9&-OBJr5@6-;SPYr|$F0P;_<8Tvh`4)@>#e?Tg@dk<+ao#L>zXIR*;HoaXRs1GL z41!9t#o%6ORGA~_4pbHMVSQH(TUXH=79FAgs!pZ6Ox>B1>4(a%i6zn9<7PN)6|7-F zrnaaWP5(-8LAUQ4*R!sWPW}#kOk$%krmlD*N>BEiobwo+ijmur5lC=J&xEAMn{L7? z*`dT?#~7#@4ETt2{?oJvZ@YJog2+k(u&!4n%k|F;fHlZF4fpyX!mX{mrshPWU~KCT zpx6AlZcJtQUe=^Jt}`+aOtYYN6pEGYK$^h0OpmNqd z=|?e02Ox(Q#P*@yC_!AQWKXtDo;hnt&ykFtYp?BqkmECJ;a1_!a^;RI*{)*6FN-=> zfN#ig5Nh$NQ@~Sz0?s4?2AA&vp;OWOf4Vwb*_Wm0;Pe7BR~avah5^P zbIw@iW#80wer93h&D-`1=6~lp_6ffbbNFei%W?PDz1u~T&wa4nMdiY_Lw--Ybb>~a z)i66Dh6ta#@*aQuZnOHg*+`sF>G zf|a79Yw3hqP;2UtZ@DcFH&Q|dlXVXipMM_vv3y2ED?BCdvl2$m8-Lf~Gt3t-cQX6k z|1Wk|FF1MU{kwNW#M&BNG|3M9Vnv?ocN9_}rZwzt2F}upT|M84of9^zd_BL~z{;gW z@`ppHkuKyH1O&(s=w!Zw@vmct?ny(wbGpMm(_s-V5b&ThXnw$iGmB+^C;<-s?4Br% zUwFxaqx06u{H{gxHK63LS7!$<-`Hb_^9sW|x^AH(m@kGin`{Zx!(j}k0wy3hnocyw z_X9LGn+o7!Hov7ZUyouIM*maMor}FnNX&e>ng1aX==>Ns*{JyNZ}QmfS)W{fI(KTq zo6WNRv;_J+I`w$be`N-}c=tu=#PuN$Xz2;LX=)L6mL6(AGaF#W2fcDQ$Om;ug35~C3*D20_c7)y%-7Jj~9yf;Pt zL+izE{5jp|6ZYQ(%hti>tK72^E2|BYx0;8X$JM@(+3y;dppTJ9C~^^>D?*J=*q*hD zv)IWGMr!usaJtod&X>+%)R&Z)*keNI;KUz^S`Co#B7b)=-XGm5eQ;>Y3H#7+2*hcC zbT{(q^Y4h8gFi><)cAMgSm`(hC26Ol-?`o!MBxdqVcS?k7OzLJ~c<%#%#;u{USle~%N78)|$}gm? zKiCNu>B!(#Bfu$;E@gXNJw1t4(S-g76by;)2eZ(CA-j54?UFs7j|*9zUSFhzyEE;M zz4@^_pm!helkBHtiB^BZ1EoUFhq;v3m=1oW;)JYP%5xj=EXntmgxw$zp71*#)DwC0 zXew)56(LGqa<1OGTVl^pxW&WnoVdM%A1`}M_D0>iB2(G9TEl(&zD`2^C4N_rryl3K zYNjmvO1UfEC;~+lgXVSj-YfFz@bhrlO?Yc8JWw54_07eK4)?R^d$c7zVH_=0sy*v=Eoetj(01;XbEb+{1rK&S$nR6%~=Zr~U4lX_R@{2(9#56tipww&q@(*ih0U38hnpwcb6}12(FLK!ysXXN4Rp6b=5$eao-2IP!P9ozyF85C=p95NW>Wh-6lf z0oE4DZsd8|Y7#Ng)!O@1{8};c0nVw)Dep3Kgc_rvG?&bQ1%A;`5a83qx#WZvkRp=S zrCF4oJnEdOs;4sL$4-^a7={*mwnZhttNI$B|86Q>ki(IC@!{?{js4m;)m3<3zz28z z6|4EY#h%+(@6o;)lHiO6)GZ4Z%%u}-%QNCgt^E0OPT`!ao(|i0gHYHYPxLp%PoJR> z6d~L3#aoQlB!93Kf2FpV5-KgLe;PE=Io+QHngrq`>DW%2M^Bb@v9gPa2L}RUf(O6e zWQ?EZ4GGH=)bsalq|L?CFJJ2SM+yfWg75Z@s+fMk--s8 z$slQvQURC*(c`}n_*XXG2Z{52?FnS~x2b{CH`lBNd;dSYGvD6+NmBi8ll57RO31r? z0cYOs;4nYZx z`Ov}l;QsQT@3n7U(DiP{ZcrY1XP2Qf+JzK@jsCVxl$+}ChRJGy#*L4@t3i!NsWg%c z$Kzw4hm^tgTl7*ZEWXVlWUG=+cS%_m{f+<8k$#sUb&cwc&|zeA=t-5@3#!|Mhkt!; zt}Nu!>CM>widH7z?$CSde1s5&5glhiKFTZJO)I|BzLWlJA ztbvSz|4zl|Wt{i)?(3R_^SV=w0NJ0F>$l%ZF`h(2Q7?G`@h{v3q0TVm3uRO#(&p_T8+nEcf|OhZNmrlZj9yjdQ4E#a zJSuH^h6R_Gb_s?3a!fB;HYc&)5st1U<^Y@=Uk|++{4EYFP1?q00k0?!AZ-1BYlcw5 zJ%S3=?kG)z6z{59D9jP(?xAeP1VT11uQou*IHsost)$&`lX@myU$(yVs|fyyjktHB z=*7ePlB1=1Z7F-4MbbJj0304f=w3koZ!bT5{&CH(@Ri03A~Gw(mcsujFQZ|4dJUm`W}S>^wJRr*fi+k`($J@zaF z`=*SOdVv}Mk}1n{2_A7Fbhe2saD8TH$w^sv7FWV>!}~aUqiSA-6x2GEY!YXV7eAxw zZ+N@)?e^GM>vVTZH~rgZsJ>}-vdQOnwceYUB9Y?TEgJ*M!&!$0Lxm|90607l?wGEU zObY3Fi69mt2`McK#8Q)&{t-L$X(`IBwE*aKc58ovm&`$(l)%PA#{D`}EOIg_56n@% z46FMfF2Q+kgPTnC`}eW;ew65EX0&dt&o1DxER^urbx$K_h6OsgojEcK`kz&P+BCVvrse_ z->G3?HSF#oY;sSF#U)AG=y#`Tdff9JIN0fZQEQH7b zJ+S!mRvQXJkbW*Th8AH&Mzfj(4%nr)9ab8u=7B=;aRr|PQ*$Bu0&JFLo$e57xc**} zS@ArBSnErOP^ju-+He!uSJO!(zwDy{>L~r|Cp-rfS`W?iXt-i9gsX$@8o*>Oi4@Ny zWhns`9J0&RooJq%5IG!=zy2c>u1qyKWbiC9jb?>-cfjt8gYC495)|d57NkP_OebPP z`{5qE7Fejv!(N3nJ*|8P7zP${c(6f+AW_9Br1KNpWKg7$2xZ)Ea{RvLZaS%+-fj|U zx9|dEd9Qcq^jY&VcPiM{=0TTOA-gTLC%5>zQ^>!I3et`Km0j=DCzaYmxh%J2rKKvK z@8$9{6Ff^tFLH(BPTnA-NY+%g!}B(;uQ`wFJ}bnjNFp~cUO)|q3KzsfRZRkVHM!r3 ze<5hdNn+78KTj;k)#VZ4Qv19zkdi@dMzn=(LPafW*qWUA+N`Z~^qZc@UzpR6ME3>G zf6txrO+;W~uzb=HNCUy)#^#_?Fw-{AQk^OyGC@s_Wx8CJFum#KNgVE3BTOC5c!k5^ zM?;NV_0P>sH;N&C@9Dl9I-wLptVNa3MMzNpLZV(&rjrh29}Awv9?&%LyG&dA_wDmAX%Xv{ z%Q9-YW2-95^up~)kM@lTq}R~(gsNYF(n6s5q-YUIX40}eBEIuq5N6se#5_J`DyF*p}QyZR({a@&3eb#*^xZP z!j%BiMtS|=C{|jb%U%B5F75*J{C&ZiA53S+W=?^Z^y!Y>6y0&Syj{VIeeH|2%c(w> zUNAcF^RvC5BR3`ZTX8pdTe6!v<>Uu?H~M+q6WxLjE`Aj_gsQ9PP}@BuQgLG?E0oKP zL05r7BAIXm7L-XwXWHkuNi|Bz3gjjmhhPJXp)68EwqY=a1Xu^$$)~=|5Bmi#0=4|$ ze18XaEHgtTI!tM|_gv*>ip{fAXfVQB<)>xcO!na!7;5IMeeo#>(f=Y$p3o^j>PIlb zL1>qye%sO+E*Ac=$~aoAiTwX)I_sz=|F@5CFk&LoT?0l)t8|VI5k?6pNQe@Gq=3}u z5=INsoe~NH(jgK`r!)f69RtSTxxc@2o^$pmhd;Knd)Mdsyx*@^-Vn0=!D!}w*SVU7 zdkx7}xQam&l|9AP=gw6fuPSn+E78`jS_HfD3Sy#+J*!gdB{EC3t$_WBZOiV+TS%z1 zOABcQk{PAk@?d@?Vn`x<)6k}3YSYg4dyHQJ^A3Bv>mtiO;{9{620x4DeAZcZJHz%_ z-glPs+xW#zAGOK*iwbh+c~VQ*xd5n_^4BAodYx+BhL&KCV#(}-o5lC&oknN7*bWwOk>Z35k1mm# z-oDbNp&fwpP|Zkctd;N!$rEB6zwMOXe&p$jLbZdFD^((IR7*UCH}%}RY}%e-;987fN0 z5JxWgSC(TbH7q;I)c%^C8Kp3E_0#%V?oVOb#u)O6lmO zg_$-I^lmU`^K#$5e+`y-#{Zrl^Kj6Ab2_!g>^+#z%p9r9+8Y!4p>K!R6em4hr_}6fvgEbl|A|$uWXz=laj;Z6Fr4eA3W;?*8pf;6qSw=s%qO;!TSjZ67FCRkCaZ z%yq!8Vap4qTZyr*SZ}coWY&F-&?pYztmZhF>qD9O2$C%m8bu@4TOLA}mB0=7p}ZH( zEyl+K;5%}kPz@j)`v{Ug{O0rFncQaTs;%!$|BFCcj~9RN54%?Gn+bdl656xpa}25d zwVbUWaBchgdzbtKwn9#fz?lR0Nv_?P7}j+(?fd3V!s6}HInG-c^eJTfhHVdPLH?|K z($)8%T_xb8ZD|32VY+TZe2z*-`tEuPMwwZngMUkv1auT=V2M+DOMKu_&O5;!?!g$&Y=@s%p<-tH^70`&j z6OZj~h=Q>zJa52HtoPj~0VE~fLy4zpwrw8 zvx;5!Z?v#E8{v;A7a6^Mt@)~7(BN^=*;%4QoK)P(jSMxvC+)56yaFige8uZGDBT5R zYq5c+!56uP<2{fB6#On|3IvmCqah>-e$gcHE83)ZRF$wIM{ly53`&4$_>OCoy_hTdU%MWRd zrgLpqCHlxs9|GaeKBK9H^6}$#43GF4@!)V>P$0! zJETEU0%z)r`o#X5)w54rC*Fm_IMneG2!0xZK!f40?0kR!cAnP8!N~hTKD58XbnsQ8 zO<;+@9hhkcSzLu+WE35Nj=s(*5tX#lOpgC`qJ$Q?rX>7GczULt|7KiEcz^`7MFq|2 zf)4TE;!2Z(&d!!Jjcu5Iwoq0eu!JD{dg_q;7RkOQ z>F%hh04I?pH19iC!}NeF&oDS@I%+UNlz2txbU!}Fg;z{pB7-?W0LeSIq5)Eq61zvlC#(A~ZhT!7 zEP!uEx%Zk6d!M=BE8?>t);Tu9b^a5A7X9WikXQh=TA(K&awASBkfsnXqR`=VcqF-O z;QGAD0A_Dz^o~k}5ssurG?U!{>c*TTK+Tq*Pn3B#X6kD@?J_(Nj<3>n1KCt2*XVSe z%hi+S3}ve7&AeoTz*Y5xsgMIHud$E>)<-Fz5Kys6`<+$gUaoKxYzkmEv+OwnT6Jmy zC53veMA>&5Q7Q6&!gidPXPofS88C+=s&<7jmpTHz%tS}n{RdpGV62}5_e9vLL|`HD zqPz7Y!cvd>ZdzN}S-+E8<7;kTru8OJd=+$I2Npm6(k}NOM4q$if;FO7Ftlj( z0;`+-7n1gp2 z4(cZ#?9NmBre<{`S zPlT$tDAp`ghTj!|&V3i*>fl-_oH)R!gj0I!Xgss&QqQ$}DvvLhB+HMz_O{R%>fcC^ zPm$%!2^qT5>9>7J@4WQc@2MgqV$76UnIYrFbKBmEtr0e3E?CKd9st)-k~UrVx^ z4yh$=H))fbew-?r;d=u>iK)IAyr8?AH*)SOfhKkc3LY8kG?M?6El zy8ONaikh+zKV3iDJa+ebQWFUpub_?m5$~*ECLUP4o?2tx{svE@dI5KI{1`JejWWUI zW8MpArtdGB-OE$3xa0ree1~r_HRa8h$0M4r^hcFIw6A^FhhQBAHq|TSQ!HDgN3Bh7 zz8L@YAC+37+BNU?7hPgm3$}}x`n0d=+Y%Rpg1Ze`IRE-IN8$Y&n9p1W)!l6?r>zz>X4zg$?>3WmcN?+;C2P@kkr6nun4#YTqCt zWoYD|i*GKGy)@su2#Gfa<$@!%fhYI&vTi}71!k0UES2}=c^1m1KtY90@A9~M4&r`( z`xpp@z1mT7k4ETsKXdN@CDNwrLlU>A)A2k69)b!@=Sy6ux6S_IX6ZLi$!+X4$~2tE zio!uz)&zZ=fjK_c40tS2#Dovv&-`21e;?EmO%j6Coa|4%C_40)@u_nSWM-XRBtoI$ zlfvSXGu2m@;m8QG-h^4TZc@dMUQ!@9mq1ppYuFQ!vLUM=O)Dzx@^@*L`t?(=_;erw zhJdm!+(l}Jdj5JUDIiw4^1X=D1Ab-EYRKgBtC&*5TH0W%Zz9(%J73%=Zgqe#=`P|v z2+4=!nN$PovxmN7nSDw8tBDx>%Yv>_IiPj8Xrc@m>RBwfW;~Isp;J7BmmMFTgyV16JM0?sjY6jWV0llaFpe(eIicV3>z3aAO zod`8LXk;cj##$kDl{S|;=YyRFmG-eUiZD0SvyAf&z|C@ufQ=)W8KnyD=Aq{0*CMvv z6WEj6!^umOH|dr*!+`8xEVvQ*oz8_Tq~rc?%Pt zr%EzrE)l>I8!KNrIp!Pzs*4~^bSQPT*M>i z*<4r>1@;xtdPsa2*DWoNmHd1z+{2BNb2JVj%!4E&b(wP>2x-R9F=xn1>Kb2<&<{{( zM4JF7^#5R5sbG!=Pekq;Kw(zRU=d)ZiM`UPW$gsS3eX6Sw+AP=FC3oj0Ob94vh~KC z%7G788TAn$+A?qFCup8c^7WHAtj~N#3XuGz+rhXtiTu5FbvgA)#K1q2}Z(s~`%`>WYOO2Taqff7?EuW;0^!U_{ZL zPJ@Fn0jxoc{A*Qal8ZttJg7+qMrFK2w?MWGW<7`{Oq5A<=AYzlz{YkeK^nb|I3(z6 zP!d1EFs%qA2^reOcTo)rnkP_DS$oJN*+@3y&A2xbM1V-lgSdb=G#m10OF09XS4KDx zoYKteS%~I?f5w^$Jpqe?r9&b6xC$jMlm|ZjYgw5e)8`yyTbd6SPn@smUqlI znxmHErivY)~58P+5PO2w|n>d(joyEn`6DiE$hsgkTNsny(Wa&W;zlYCDnM=w2T_0em-LGYy-l#`g{h8K%YWKBW0tU5A zJB^^fb>xaXX>M#|g=l=O+PJRHl?&F?*eD-9$%?~#dtHc*{tz{wcb;{)Z^0$Ab z`}DE$!vXS5$L!YJ%02g0N^QURR}hXFD#BN2CF;H{5&i!7k$i@Zi_d2 zLK>^lW$O9rd=K)L3_LfyDY!3|1S$lY!?0a=$@gwgkv(|_f8}u{SS<`r@Mpizi%48F z7E#(r=AE;#1irxhYnxfTrNA6mA1y0hvq~2g@E_wL3X;c-w>y3;eRlswjjaw?xU_-F zZ&qjxv{`~QM_<0_Ij~Y(`S}GCZGmX3uB-8eQu)`ek6D5ANsp4y1gjl5XtP@{v*aBz;oV+WiYU+PS=s9`ei!_l-;6S`YH*Ze?~9hv;MSzqk7KXnQHT zhdFX?PL#h~;UnB&(-tKb*-BlHKm7vItoV09VMb|5CN|E#RhLQe)roZdDD|aNw3O9& z^a=0JjhMo%yG}exb>^o}IO!qW)HwG$JRH^7mC!X4i(ALzFEiSAP~hx~cV}*v{kpD6I}ONSNdnq>+CeQa;%>6E|XJ zIi?Q8C^~FHG@&HOfg&;rv#UNt;#;r^UtoqnM8WPUS`iNB#qohO^#X|@$u52}cuA7? zTmcJFH%PM@U-U}{JXm$oTUQ*!IbR}f7wY%w9nltxBz*EWKK(O;cS4p>7dv|PPGaU6 zhcFi^9Zfs|#$=iNN#Ki#AHf+6t;gdn|A}j|mjUHF?Di7+hbmKMMJ_%(p}~Z_c^xU< zV~?jIqraO2GZBxs!8f3dTuYcuPLj;NK~@A%9zfeYA_^l2;9%;v(}M)G?+9S}mTKEw z@6^c4`0Z|lJo(K!q+be@{#GBlkCP8K_ z4qkb@T?wXAj1GW;dRiEFNlc?}zP)j1BEtYcSdUlQ&_3O(Bbx7| zJ?{8u$#dpBAwQHB%u)5>ey^1sqQhmoHtu@!;)$w`V#(=!oX1_pvis{TB26JV>1@@DW55)pmG0tGd&Lca#OAmPt$&|8H=p(`8xmNxHzM#UqKS60= zc#+T1G9yRR5kb#ng&xu{}%3Hf@?-YiVt%Jj-ct!bBTsAMyKjaf(--ngbM!|8YLBQ~qy4Q27u zm+eD^wQDxiOJYC_48?>K`m12ZGkR{fbEiYp=^0z<^t1vU)@(NlzWC@se$}6G_44l- zU26MtQgV9+%LF>a=rRAV;VOLIrZ?OCUKTF`{@GKB-g(59JL-*aw}03Rry4UatT^yF!kFwpGT(A4=;Qnk9*sB~-_~Oq3_+Izsn$8_?W`Z< zXni3YN11+46=GKz41Ol-#bA-vlG5ZI?^sUzS|#^c85E%lY2I=8h{W7yUQKlCZowL^ zVtoV_!5VVWQ2H~KTo>uT!H)cR@bgRUbzHxnkcR=02S~AEZ%c9F5%uchn#c~ytccCu zHoWyzpuc$U>L0@Ap2GAWb-;xn;|x)_8lx=}%iCwALw8?EF<^;+0?FR3B>;Q;X=r;l zFdCFZzWv#t$3GLyJIWAc-)&EPPX!>V_rjIIkZ+Y>@5`G1ZsqEep^ShA*l>UVpqFaa zf{FybDRP0~im|KYS_pgAUf@!QGBB}7>~R(14c;&V8}(VTig|P%ec7NS`pI?$iRj8z zxz0o}@s$X5ri``2>fhH!$TlnJp1>r*HV|(V1LYF)Qbd;b2E5tWQ929QEPq_ydjqiV zFC%>zZfn{JQT}!85LJx^!rcbFaO3CnTamx^x^9@LQ!_gJm1m2ldO%%+%^%J9_M01h zdn#AjJR7R&l(3muZRgaB!}_f!*V(KXGOTZcd}T}t;Ygg6|9}fpx_YQE+}fKg9$2>; zwGcsuv|dh3{2@p6R&x()rn7CWnMQRStxuRmT8_Qii;)ctFpJLmNc1!pltK7ZBKd$S z1nk%Q*hNQ4PMU`zw3Sw>;%+```vFnuEW>2T%?ktFURl;)wUWsjuF?R$#kf6V15k>G zBW94BSk20^)vaJLvF+Xar&QT69Vt*;Wsf1Mi!!x@Iu?w>}?h0v>$ zXi(+?sMGuO}px zBEnnK;nKkdO3;ZsD zSHAua&kMBe{hZ};(hNWSV=Fwu#G%zQ4{AFL97Uq+V?KZdDnG4X(Yh>=|F8Lc!1pf+ zfMs(3z7z~r%iMSv$O+OUj8rjK39!>%!SZbMU&ypnYAy0ATHb(}H`u&76U<#~=$QYs zl6mIfHxCEJtxDC9!1w-}3@KmSl?bB1i}yB3CwMkPg8M!@%$L)8*nU5Y?rz z-M4#0VgC77I`$k#e^*@(;mE>PVcNDjqNWWZ0%4ke$`pS;gVyh$;%^IrWvS*ZHMoPB z$Jk6Q6Rm?N)DzVD#GpFrVYVj@MQjDF?ga1NGoIu3=3n!JI4FH@HCIdn@1Ryp=1(?2 zac`Ng{d+AyCWmYeau*DNin^@!a&>{wA52`%%LGrMK)I_Y6@1>gM~0sgg6yRfIxbl9Y}V~NM+ymSJnf;CdRru=VpG?$&x z5?TpWO-6rw=3}7|r<#-RiF|f!Dw4J=U+qfP8*l2g!eiPCGx^`KcHYo;ZNrk$4|fk< zc&(6~q`G9fpcA!nLGgvtE-f6P^eonIt^AfjDRf<)l9OxxlYC^kzd%xp5rFCP=O4nT z(C*Qv(O18Ru*s&vx5FcgsJ`2*t~baRJh!Zu->WdY*JjhVp3|oHMEXG<(XK5+!Ak?( z7f$*V1A}aB`T=?Q44@6poU9qNgE&A&fsZ9Q z&Cdsa5(mruRVcX&nVv=s-j+(!fGpRZN1AI@Rxh<+NcS`qlwQsIPGOBUE2cRYojGoY zTG<3{xzA5Re3#A$kv9$1s3#|!x9<1beYiWL%1po820V(i2~oy_;L%Tnx^bYm#rY(v ztrZ{sOSz=0uLsU6cqZwi>iL78Q!57|YoTY3BAS8fG86at>oQ1>ZSd9SiUeW(E-H6k zf{lOyl}$W8v^~V>N8^SEFl18}mpsZ!D!vZcC!ENDr%?xXJ&2+@odck%A2W`DvW3I9 zm;5J5Q|EUF33C84ww-+BWkGaq8hF?@W@QI=q-CIUWx`ZIRX*}p#nAmlc@ z=gt*0)`RzY)YN$#mxkCiA9p~t*heg-xuGRR*zqcoL0I1W*sG!@$-Baj?z zU|qjyWCz8*@rno>!PcC)uKiG-Z0O+4b%kcr$<2L{PTRGB2|5?B*Cd4}?0FJN7xrcXrK<{Ue(W`0sqGr3r550vaW%OK_^#%uchxYmS-7YaT>it zW&ZYoC=fHA#fAEqrmLca35KqC#F*9ZcG?Eh$0hSDu7-C%t}|H2^TqmQG%tW- z!HP<9;plC>JbSTux^PO3JEkzot3T=b_=IV7<;A3yng-)?58Qn*0t3~ajO-~sVsWC9 zakxRW7ULC=QPvtCDVzE1!6+>_s8VWhv(Fj7@e;0c)g#PhUMOss}1D2A%vt^5v8x!4+p<80b(%pyoXZU78m-?yznb$mUh!Hk4qQTyx`+5#jPLD zQ>>)D4Zl~soh%4A%m2H4(DL_bO#Bx}GUFHjq-S%aFet7-S)XMfWl5IeGc*qcNdyc( zcq;j?3sq5fEw|}P=>$?QnLls3E|zJ6RMO@4ZBXwsc|6>)QSVQcpRR4ofV{0+-RK4e zFNX$NgxaaG`n$Ej{mn*sj`@v~FmrU(t;?nFB(Ssvi#{Xt_Mr1&IVhN{_RjH7M{AC* z+r|fcm)-{CMLuneu(5Ga!qoKi!He6YW3q&51>EfMfe;fS5e!?X3>d_Y0qKX-a?~0w z$jcvhx&8b_cqmp4PJde-jJCbPs#303#T3M0D*G!gZydd zin4RdT1kq}^VkHB&Mg(ryGQJ@xeTDp^BXa1zd;EgZda>xOG*}weFM^E@<4d~iK zoG3F||D)S2B)040K=H9m?B&8fsngWlbQ4YOA~)>5Q!sMD4r9E?Zr_=;{lmL)YCdR4 z5(qg%X)GxLy^sY9s0bZewnwiJuEZIsQUdR$h(b{QOwdtv8oQUgO!*58cj#$!Dslop z%F$AX;~N6cHpXvl_R2bY+`=28p)MBr-W^UBl$!rM~` zl?9FFZ-iO1^v=kOOvlrS)w}7rlotR_v z%bvAk*HY{2A}VB{79laUgmTd+LzzOjA4n4?os38f_33v~swd!H^{Z}5OYh1UqaE0L zc#JFNOaR{#v|iMfq|r=LBX0P>I~{?WWnU-?OvU`iotaT1x)yHW4sUFlHKU zNr_q_7CGa5A`;bJ0ZH84Oet%r-pu^5TKH1G9sgiuHccD0om|X-y6C&?c(F#373XBi;*$_c6PeZ>LYMWw6P`&4GC>=mSff`c!bc{|g8ro&*G(3yC)hnU{YSBXy-R z4Iv|zJDz(uAkeEMd9Zs#%PMp&2qHGd$TkpBEo1-saxN3!jbKx!=nTYB^y-Qyv;ShQ z=45%-^0zcJz-meNd?B1_0PB0OtLn34;LAs1q3Y}MkPl*4x6w}B@(d&rm|m@fs$EuD zB<~;!)Ec|JOO6LaPlWqP!(#JULJfam6|^IgyV^nCr?ny5Z7^=>CHaYWu)Bx6t}23r z8q1md?@u(?x#3hp*_3O>Se=$FmG9EJXNOSc2!6d)siopnPoX;P!GMA76GdX5G=V3nI?hKG!J3LM?Eu?5R zSCpyKk^d7NMXZ|wXuJiC(fsNUgw*$$1NLB7t~J)E9#(DM=vATX*8yRnJ|6iABW&HD z{=J&tfYfFWk2tEA{dzyF;icW75sV*03QQ%1%$A9+{BL$Ss}l@5jgm*Fu8WsZU2=Flujhb2dx0SwIU5Ot2dWX|{0M+DS6XE* z_Alk!K6%pu3TDU~x^Y)~=Gfc#Z%L&UNa4>fDFMzGt+~|{Qr1^-?o%h88k^h0b@_ob%~@+)~YPH3y;$?PGrf8;?%!a za$gMfOwnY!#}Zj7y?KxnEouSeb%t^SnbB*I=9IgdWd5Ha3lC5TXBq|Hz7$nt{-bmX ztn3pep_w zlCCpU*+ze*D^oWI?V{9?N&shIUzq=QzHh4S2>bDzE*VC}6ImNnDD_TuEIfdIITj6# zNLx=%F2eiGUOG3N!g z&~N^jM=|~&(vqCVI~FIfYo;m(WCzRtyk**E+R|3VIz9Z^BmDw@PHgvUJVH%rOBDEnd86Xr;@PF6<3cm0Mykjde^(krQ4q1Dmzu#ck4YmIconvo z?zngP-~~{}l6=%cQbY@;jxqEHT|weApWE3<&h)M7-iu&-=Z<32f^y{f1<|Z=XI^UOB%m)<{rV#E6OEu1rFDOxgvby?E2$B0t8kFp-0rtRcV^X5? zM&8o4i<}eP*C!waOppxyFpCu7%C!^2tYgJ>R8xL1f{B zy)Uz)xo!JB>0vCq=ep{#qmT(A8XWDAj^Vt-pL=>9I^}xtK$*l$%MyxvsMMloBvz~f z$^{udOb$$p0RZEOp-_-fYwNeCFPY_qVEv0Iam1NbAiN(h z(-lyxdE>2egNn)U;rHpCU&<;Y@ibfRZJP9)knvP7X47R0^D5VWuR*PxN(!B+U;2vN zCsoPFyd=1f&tmJy@_Sl-CX zI=1xC;;J%;Q+A|m{%_c==9yl%<|g#EAVI3I`q#9QZOv`P>}7``9!~oSw)Gx!j=1bx zgVIPv@A!QyJR!8DlSad1r_pl}L#H^8hkFOaRJnF>FgVlCh`c|t0WFwH&%*Dy6O5Z0 zuASv#p9y_v!5mT(h7H3LLdkE)ya<|-K;r*axI$Ksf0Ko&<#O^rvtzz|`G870Jst$h zTMTv9FGgSXa_(0DV@l##m1Rp;iq}eNm5!5m-fC6-FlcXadDFTcU2tvZV&i&OI+6Ls z#K=t~YGzLrJ25I|Mr3d2rX0I>^7_3Hb#0qO*g3A?t)S(08r$U!1t#rhd@OA|_2y(m zK1gp$`j9*3z#OE>tc$PV1{@_JNS^mCYw*PkU@q9|wvab7WDIuSUi{nIi`*YcC8J5P zlu;~txR%%$Uj%^;W33zEJ>juzQ)+>7@;I& zBfkyO!NyDHSmq&{_Xx<2K2Txm#0ypz2ZkmQrNX?$r?W{aa-k-ih*y$KMUN)jWP!v4 z?^O~3$Ey;j2>8T~t7BaTl*1LJrtnVzaht7NFJ=?*_7^D0FovlU{*K@dOf##e#e^_& zB52jphac8YP{MvAPtSLNFlH)z3jEC{K{0(cds1uPuZx-`^H-u{_YE%PG&XX?W1Mve zN+*8$fRgTVfqJeW#c4Up=9_eL?*{R;k23<}!0=A5NL+3Rej>+tzkXu^py6BmFGO(koheZ)l81c&n$276iyj z;K7goSW;q_8XZ_s;{rhiYTu#u7^RnWQs69S!)JA*0ADM{<7FSsn`4+oxp9V(S%ZGa zz`^9dFtwDWjLLN1`uoA;vHSHjZFJsU3vJ?c63qLUGRkbuGIkW*?5FcLHvyZUek21R zZn=$|vp5JeI`b$gw|CVmmR=ePUYROA&3j>`u`1kCV4Kwq4h~cEU z?bDQ?#A~E9cV1RSlqp*f6~$OAph#kM>5<6VTn#8yJmqL>41Vk}zAyhEiz z(PS>?+w9EOiAjA74dw2>QSm=dJ6(hM!v9| zl|fvDmYpI4)kdKgv;F154nVs|+ z)MQ{!gY4q>UI^b}Mv?*h&Cn1RkMgw~=kkH#?eGN;9KE`=<{i1}#wSI)U3Aq8XT>-w zB@yQja(^So`VJ7OV#7HG_xxvW{hJ($-)B);=I>Y0-MUSG@ajc*U3)2}Eo_V^Ol))r z#nx<8&$!qp?fcykE!XDq{K+Ol3x(pd(PS`vd4H$4O6X`1ZGIAj@glw~HA zD30$x-t%mGDa{Jq;Cz1TINT|x3uex*9i0Z_i5;}Il960umt2x1+epdTJv+YN(rAnR zjLsxlVDc&bT6%2xXly0q8`11aX5xJN=EVl@ZCZhq1=DtSzuhpC-9a^GYFAOJ_q*I# zm|!t&jG{vA24-`j`}+C~C@tXWh0hIhP>H`F0V>vWY4(=s8% z6}mrmLDAA@Ols_{WzieaT;kBkJiA;rsq;@?}=!iuPKF97FHN;P;$!yr033&rx5A$_IB5KypD$m z@>65UiM3mqGA-%5h;Fx-hndOC$fUhPWf8SN&G46rG|_+z1fHoL^0>v$)Zu}y z1k-sg+xJ1aT}Okrk2iIKhW7%0d|t(tt~%puJ_p+|Y?w<6$*Jnqakvd?EeDTH9JfZVd&Ee|d8BLCZ&TM3gu4K`P{XFZ{}zD1S2i(R-< z$&`n7MJ0cAr1rhS0jPc#Zq{AEhq`0f>YL=Vn4Lv{9lj9-P-BKH2+7YXV{eEzYJwYz zax{33%r0{7ED%(Bvo^AzS};o-@E?1BFTg_Z>ubBehbVj(QR8FxMdOsmMVff}JhYE# z@2$2~xUl&*5MyOlWb2Wk8)V82G&pJ!hMTV?(K%i2FNuU_i|u-3 zm`Hp|xSZ=2qM$^t^!K~`+XUkawSSrOXG(sG_TbhdLnPjjV*_xvUCou{Ch(D2O6_~Kd$ z7M@MNi92GMJoA`}|EO*KZaVpsp1=48R)puDiO7%lk0RXzsoDX1S;3m2J$x`~t!zZ2 z2D)BSxKhWo&I7*p9Vjbu6!Iu3cd8Zg6n2Wp5)ULrCRZ%vc>>ykUpa5sCRZrQ)Q3>A#E!6W;%cZ5fJ4xioERJ< zjv{ZC!)YjqzU0Y0O%J7KbD(%1mch|zOaiUeMvo<7yiJ%N75lO{_*ud|&QtT^|0=jv z3LG}sU^u%VNaVpH9(nhYsrt^Np$}j<*Wr9pc>Z-O!2VNCVr*}wjsM+F&XeXVFD~d6 zUei%Hq}D_ufMh?_s>UaIHmNA2Tl}=z7^Oq5 z+NeKzc*q}!Ep;%0(l6V*CAQzG8l@cYK(m?Lwe}QmXUABqgb?+= z%726vPhFxd6@Hd*%~NbX58P&X0}*}pae|<&{Tm0!jOQ1>If=Qw-x7h3zFCcEW+Ej> z?rFGkfkxbKhp|RBOb=rRCtKC+TB9t%8FyVDWFVHiWz@C&VR?+A`WQDzlu>-VURv$+ z!2}aDj+gNllr$YQ=Hg;E%G7&FMs~m81lgM_AB@wF2zkys5WCzM&Z2y!ac55|{7jE; z_U!LP%=s6EVD0qqqr3M6&_7+W2*m^8LLf#&VhrY$BwS4GkQMi~sFv1#W8i30v+(ij zxRhkN6}j6l$_a_jFK%v6LL$&G^V7{vI&|`Ks~pmAnRkF?G>(?l>sY33_g@rm8`WZY zqbaFenUU0Xye=$iX-+(?&`9PYOE8cVPvcC(7#~@#{@sDpexl;*zyoS#l*HW;sL!?F z#$XaJ&v`Go8&AB&@zbqAs!f2o>zc!gTG%S>!u)`udiK((&z-{xA7$pknT472E?O!B z+OIqZ`Pz1}p6K8~3}%z%vwytXJLzRLn3@iGhQz7|k;1kv*EdqzaiWO)orLv+`J$H_ zaV=Jx{FoPK@&|wo0{3m5u3{^&aH+W!pp0A&9e?<>voqSP=M1@2_#80myVJDNxQ1g{ zLmAwJpNs9*GjuwwQZ+>j_yd$^tR=%srO`=Rn>>kXBfQ_ao?KVzgTo5RM@lBa9FAC}u=Z z266>NKqKI(ct9CLuVI3G8Dp3ABIoUtd&MuSw>*;FZdKm?k_HTJpSkYl{yd1T|Jzg} zwlW6A6T8@^!P5f%%U%XhMFhIG`o;UAh0KcgS=p{sMFt3nil)e^aj%=i^>Q3iKoANI zrGQGq_9^CX6RoCD0WraRKXGq3sL;;;>-~>IXV5^J*zU@9_qx zt~U8{cphzgTU$bxb_VL4>CcA4wGsVvl6!1D=OjUoZuA`6>C;Yp#aa~X+=E65+SJqT zX&D#Rjzyv|QSgb74F;uF(ps}S9h9eTyD_qxy`Jkazn8H5dE-|IP`YI07+@lsy9-DI z@HFl&c;;{ekF^B0v{+vgVX=y{lH8zA-U{QUK2l-@XFN3)3W$Q4d!qK?;+)GrkjWeq ze{^=3?y2yhr}2VRWTvl6{6gp(`1?OW6rD$3c)r&go(g2x-qm+_HdlT-H${g?EaI?X z3@Uh$-MdGP(069uFwf9$FnsqASV{uxm^ON)!lJxwmCwS&Mj(22e|hmd#&UG8PXbCv zyy_fwYsPFpA>+LM!Ohcu6kRkwgb@qYzV^3DUq2Ix&(u1VeMeI}Kw)(#t#6+nWk71R+A>p*HxRTBNVMC!UimcOhvW&Z?VQOmQ*I8Bp!c}t&Q2SkHX;H@Avrn@n z=>toyZx7;>k{08M_HfGP#7lBj<|DSij^F>_e>;BR6Zsi}M9-i?02_P7g{Rr|2~OwD ze%ydB0&z(oQJE!#%|7oyfx_iK2iOYVSXs5l-_|3;EwR-gLiGN-{U=Lg94w7dP}N`! zFMt9+u1wSO79{3%ul4DC1XQgzFGmDIsTju5!po+`>bDA_z5d|Le1XHUYHI|%zum#! z7>}F2T9Tw@pE|#R9xHrXYQ<3TO0=}U85S1UD7cOEToQVUd1-xUqV$xkP3Hrq;Bk+$ zb^eGst-{w(sG^r@3-z-GL)_E%!EEzFl>-rE_CM6B&)kD6-xYx`<@V7j#YO_mo90nZ zOVv9qu778+O*#E0^SXSd*Csr%_2xx4#9S+DgUGvjBEfEAkjzym(^J^<_f&7*Mf04` zpdsC?Z9s^_ehJ0u=#HU3B+IA3Az$-nsAY@X5Wylk>}eWewHwv;c57{JQz0{BU_{6C zc!nv0hFL;saIgD_a)u9Nr+1k8-bi1WFz}SLOo>nJ8Lv`?KEPy3-#1O@LG zrO44JL9&hKp&nG0*&t)!9Z&j-U`lXKrJBABaX@3c2wlE*WbIyS=N@o^H901jlxtn* z)lNQ~l>a_@gn&!J*1?V|-i&As+Q`$qAozo98CiL-wEv7N-G&j!R>}y#C`{c0FcJOy zA3wW_DE%4DBbojN!vEla!F}k0?;qsQl-)Dyg(O7lRSTGp@vSxq>VE9eqBH?Du6v{o zDpGvilibf(l`Hbnk_AOrt7k^s(qq2+i1^e{?uqYxZ%t)qqDZecXk%+oQA8kL~`>{y0q4?Yh z%bl5NWCG6a*txMPe2+N-~l?5J#Gb* z*hAeZQ*f|Sn@ycgcty)fJe;{fHW8CC}mw*;I=7`tQALL*a_u8*Akf5y7RF zXgAt4xKamH9lk%2f zrzCL7yy?)B1d463NDM06At@KY6Y~YaT{EBdNsR6*<0sNv3rFolEz=uj@_?gX;cGt1 zqu``(hRlGX17DP;APogP=ZZu&(u|Nb|+JEaDUkdz)hLKr;(DN#zK zL{geDy1S8Pq?AfYhk%08B@Kf&4blz2eZJ@X{(zmc?X}(aGp_4#$#4VpQW|k?cmUvn zS?L6K&gk)Nh7)xfYH=#S7=aS!*(;=a-0x*!^9`o4R^s-&j#k#qss6o^VY|qX1^%{;e{1?qZhj~XmpGXtDYhD+L(Xl}0 zIZPPzW@MH`mkSEy7&lMTN0g?=Cf+&_0@<#=^d(QcVggO{sFSyYI0K)3{P&l$f+up* zmC+EOgz>sS!9Z@pKd#!voXLPBFA^}REHR>OwsHC7&>KGSFWw+&I7FwU0|SFzB;yZ8?Y}ne{*9nZ!k~VaQXX0 zY?vK|31jAXR&r#-3I25X@`!jZfUTctXA+Q-Ve#sLeOb$*65)$6IPUE=A1gQxpM9QZLx&$K&$Ie_o@HWo=0jA{*!Xp}T3$4S1rttW)(?}p;o?|!A# zRZ;7N1H`r48vG)QJ{Y&)9<*}Q!iWd{rh7`ingK9en-fho{f}OezKaP^XUQ-bAuWu; zK+^!8<b(AF;z~mJ9Psfc#esiUi{uTfR%u0v>jN>Ntwf+(B;r4 zH#O)wnxMVk=Y1PrDOMI4!Cbo+ddSZh%*Us&ukF|l8RS!1h6#4m^P9)t?$x|)vPMe= zEK3%-sh>F-`Y1SaWrd+Vge3)@JaKTHG>y^KsM&Tgs9>LI57|T1hz$6S%}jIGxaE&V zXS6Wwj9fRh_(yjU=N)I@ET`&sXtB&Gd=;&q2=^LT=j0FMm8wbLBKR-Ys4PHb4q=pi z9uM#Vbq;!%}@h3N4j(z}eg`6pur^*5ue&;5a$% zv;t_}?EEYwFHG<>V}wB)4R!&OGRTr?L2>cVzD7yp^^x6#Krs0*HE5zbpbW_8JIC5w zl1oZw+Wn%o0TA_7!q`_lML@Cu@~5k|=4qgZ=0W7mIv^7a zPz=^66~;LSnqy3!*za0bn!~Xm9F}VMU~Gt{b|vojBxvddv??-nL z1fOV}cyP!CLWev&SN_m$X_E&y+Z)%8V~@Wa=%1?{Z|UeG1~v zO0V8%y$t=Cd5ay;HBF;eMSKuf85*1){@T)per^s|5|Q0KaCqMAe}Avi`S5>5Fa|h8 zz_1ZSN!(~%bjx1Z0q8XN_n%U5*y9@v9f#T!?UZOxi~dzxz)~ehAN4leeAr8J$V>dI z5|~(kP!8P?vIJj*tZo2RH_$O?yB80AdUEEWJi^49dlX~oKZG_u4pF4p zer#_{YP@ zqk^HAe2>Ky7CR@$!if~g@`nQt^9^OD5r!3)Q}#Un{iDzNpLRV$MC6854KO13{D{SV z?$#I}vHYhlFJ6+SI?44Fn33BzIpfcZbj`r`ELEL9G*}#M+ETO0HnQN z-S+VHKUs~lO;b^9?pXF%!vB8q?U1}Jklz9&CBK3*M*Zip?i%ogfOm7Pbpd5crh$tE z9V(siAwNYCxD4q`_9=(1RjDJA#2e*{MBCD1NOvLs(+ zj&2^YxX4G`uBnb)t35rW#?mPL{GWw(<^$nS9dlbC&Sh{lt6wR@K`cDcpN=?@*7`Am znwEP5)8wiYe3{^a1D8$7to#{e4im=`+PBJa`F-+R$lDu_>b|gDt~JMu6`;A)8`q`A z>MYW($gl&dv*ern>{)l-W0H{<$cim^T+&eForzmo+dhQ^n@@#co&)N^*1eV+^ay_E$7 zT?^{GFX3$_)Yb>$aU}~YB2OtVPLqefJw837M^CSHyA7;jj!X$8cu9^tw?ZC0OQV}) z@lU6}1uk>+DfU>HO>r+sJ1-c)dCYZAdA8Ly8)R@B#}<^0IP%WGhADc>qXL(k*P_m( zSIVu+zvLZ^jXMfVyM!?ppFV$1MO|kC6;hX%d1t7*?yYQ8GR>+@@Kj#3CsO3Qu;x}r z^ceEni@_f$DVu5FZt(vM(~3;69ImK_n1JE`rGhO~k_uew@RU|=z$%_15rDg2o|<2S z!E0gQK0*!aE-B{ZCw+8LG|vM=)FGWLvTTH__Od#0kS8`-^)rQ9bWvgV43-mp`lRLscxhfl z;OlA%yT3VW&kVN)ZqorFIH0r|EKqS(OMw7}BEA+7cBexI%RYC_`_T6K4BL|OwvqE$ z^rmY7&Vn;&2Z&*Z;7*~B{i+{K2aT!w+^C?|GSsS=6^DTt(o|WoLT-N8Q@hFyL<)@t zrIT{^3zUN^QhKqxgm9C7TsnlPNKjTR(^>^Zo{hjH5TlXlLfK?G95i!b`_Zj#?d7O( zdw;Ca$FY`)?~Z(V659fE!2!T-0%!!_#Y?JDW8$fu1aawM6(7Aav7)fcUD)SuClS|+ z^4UXhVwm;)ZgUebxp?LR->}IETSJ;T`D

      Mkt0<|1OTPCJj1ZYcLKD9#gU(vd*zT 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 z�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[<1Cj(tw8!pK^w|qe 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�DPasM|$SvN;moW)OjDzq(PZ^~b}PjN`(C5e*OW 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%0DS~%6Na;N2G%$)@Me$ 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 z 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

      kW|fl2_4JZi__(R@|oQ9Eky&jLwe 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ᾰbZbe4*o8m5@;bIV=RZpIuqLFldp_tO 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%0A=8qpCuzxL0Nm)F2!|1syx#xiVqdQEupoZaM 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 z zwem!l$c|bI*6pa@FzcUTFQPW74{;9U_Z)=FApU_AAn9Kwrd*A;k*tn7h3YQxSa!6i zDLA=7_38yVeb44b@O2j5C5W!t(fv@<#$1~#04+p9B78zEdK>i0`qDS_HH$mj_dx@` zU=KB4*fLw?Jjo+ceOB}%AqpBzX4^9xr9*pnY`J6y&pjOHekGc`DAHPt^R?&-i;S=g zJ85`>D)%)n0-DEQ*!vUcJ)WO2H%3vcy&8>B00Ai86oh2k1PhVO*Ec_83}IUZ6TN^lWFkbPFS*UaQTlp zng^)Qdm=-vFgrm=PQ#_nd;h@WrW2`9L{8ehb_D4}!-bTu=2_J6!pU+Qie2;fT)1Qi z%lT1MNPW_}9?mEn`{%iiRS0ul*SLABL0Mbj`OzybN($s!=fUPURgvhf$1ELr0T-q8 z75kvtC0b7L;=+KUo!ni(gw2+{n%N?J^AVjr`N5sr3DB;5&uj+YA-I8Bq@2kKWV*B{ z_&Z~$3iTubulTii&>Ffb`GYDPo7z2aHcp9ftRxRPa!_W^Vkb+~avU=tvGzcXB7b;n zcrzyw)woqH7fGYL9AzcAi)kZYcpMe-WLdeK*X8h}NZ20^{Ab1(I9zOSprcrm0-DJZ z-BCB%3xyBdx+)fxMWD&m;3&O&)J$o1DBXuLv*paPLZ(XK-eGF8Y z;T|d9f77tOlPT|1-hNhCQ%*)|mW#)@69nt%se5Ys0D{f+(xnqo_<%;3hhc*A{`Wy1 zO2YSvQnUI)F$vz*iDCJv@|8#nJ;+r3^u=gqD?wx(GsscA9~~ebL@^Zwr9h+#FE^>I z#SZ4@2^m-$ziFIV+xyBx-MF}7RJ#5`c(2&dyHPx`tMr`y`)p+QlRk6GVaB zzeXyElQ2GYo36)Q+XknTCcjZ$9l|EuH9v$VMJa6csSoGZ8+14dFbP=FE>@TQ<>c-kLQ+}(_>%K1g z73W6f-kOv$6nFzBYWGKJ2aFVzZAo>B2nVPdqAe73j={s36AGA~`zud#R0P3A$~cJ)kS^~MR}C*-H`;G#=lw5#g=;j3e8qS`Tkd~%@8-j!wiisx z8z8CMl3gK6R6E0aiYgWRNA9P}>8jU)QwPHTZv=Yd{U2ZccYN~777EUmprJtPQ5Q(O zoX`80l3g@eWBcnP>XSKlhbzgaZc8~XUW|?v+<6)@xND7NmrmJpyT9SK*wLv-7a*i% z4aj0W4QlID&4|b+9DN7f{Tgmdr;pR}s0BTO+ooKy54P3$8-7y=Wt^v;zX4Ein(J{^ z6#ce4VHz#IbduzWPv9|DFgoJ(k6i@reUg>}zC!_Z9j6qh9E+*c68s z3LE;v4zh$Q$=CLzNw|v)K1C%N_NzxF4fN{}ql9xmnzTYvg_+owbAM!!E9Tih9WRoM zGq8&%+h4}rj>k|?AY#beBW#t>jwGU=syaK)N)phBp_D`EBPfd`=&!+1C-Lc4Ve`}6 zc&dX9IszbIHgjqz&}MhTjS;N2H+l-l?GiENG(Cvgij6{<$yj}R2~wd!)NIHQ@LrB% zEs<8^$o?qVB&5=uUiMZyh?*M6zLRdJH;ux03l);Kb7$iu7WuE!fX7m6EU)Ywcj$i!=`P)f z;br3JuXuFSsC97jxJ097nbd|)CX+3Bll%LYk)h`UMMRYoC`P?HUzIe`6?TDb%<*WE zX8>|hwKGZM3N#3TvqhMw*>m-3Q6<3{{rp+b!B~kR?7?#>5iQBn6cV;|8f)X1c%mVt zhV;M}2p&b?1E|Q{eXSAQkZ2fzy1mCd9{cV%xruBKMh5VAPk{ach;AxZiXaVw8L_(W zrv}mHZ2VzL`?Gr7MAKDWdN<*sMz`Z#g9*O$NV+E0z4yGqJrfMT0ft}pby7E$qG_H)?yAgUD z;QdH_O~WUUhMyZtl@hZ)0RmOJ&WvR~yZhs(xwcow$1#5B5I@VZ@(e?(a%F?s+86!~ zq25jg*q>;IP(xr{-HEJ_VO`S0!x^N6g>f<8k_xWu+QGSG%5C|JHnqj=#SS|Bid$@n z>F;*8uvfv`O6(oY%3|}_qhj1YTMc{^NKFcr0#0)6yU^BSLMLO=O1(|l52~yXiAzyg zDefwda7AIS#|jV2DG?{j@rpJ%7wdZuy#s%uq$`YG0@|QIcZ0#^sG%}Fz2M1kY9 zUW3YNc+*P_<3KQm^6nCIe$OBbt0FPe_U#%~Yt`-^ zI_~r?hw4*uSh_707uR=km+%5B7xf->Fq~rk zD=bOfan`_}|1KpW4gu!lwJLuu9z=f-&sx?&{Ex9|FXi}a9czX5qY?Zxvqtqx0*_eQ zNOU&KO5jsNT+5%p<#%C-5XwOi1eZ$}Z zCPy=9bVTprS1LLTSncnF|Nhan_Aj+T+A#L~hrxy=9sIMdPUpt%l*@W}gnfy^RFT{lMMb*BZ}1F41HEIYKUOB-m+P%oPq4!c_WO%y|0E=4yOQ4K<{EC(1^)UhFrKE1u1>AY&Ky;725jKhjxPEkQO}NYO5mg_SAt39bCO}FMUgG$8 ztAwyUUlMV_@W!X5US!U7Af;yLQopI5YwhBY2~?!4-ufjq#aLFV7nZEALrh zwT7&dKfG|eath)OKHuKO`2enhS#4nSe$3H5wv-rO?~N;|{{igf%M)h_R^wHad!Kqq z@?aoGjYa_-ys>jYYz^e%{#@(ZAO)}Nnn}kOAD-V)`0*Z;%IPck1uUw7PRc9ig876` zPW-8Q>qU>d_Y;N|d4d#C0p)qw=ilPFaBfry`THIeuUo$o_a&do)2&YKlG8xf_3^h% z;KD)k{m1uDR6<2o%}IVxG=qZ3k6y~EK?N`xAj-{!Bh#WJS+ zkzX8-7%@LG#}wwAb`H09$w=L#d37!d0w#ue)`S4d^pw}S})KdSjQ@Fd;g|5O{@oh-GpUOEU4%<8&YuDx^$xM zU&oNx*R!S9p`$h1ks3~J!2z7}db<|uLBiBUDIbc^plSDQ^%jeUYcKIb=mMqZ{hd^_ zN4l3Xgm-T!=svxW%r+3pVGL`<@)jX3qw$crliy{37$0hxI?v% z9;@;-lNKWYVpzAEj|TIe&`MDPWFLBQii`<{X079spAGX0gDrH#mZJ&g z@tAZU;KB1=E&mlPyblj2;ggm^^hF)<&qohAUAdLnZQ7S15z^?0y(o}8X^;#&g2luu zM@vEM%?Z23Z~t-yb}c0B+F?0JcdnKbszpscT4u*Pn&rAB)}QwE{Hf0+XFni!Sg>i@ z%sWT{SZmnCh^FpYDJ?KU4#l4u@#klGe* zDAB^|FT+98OQ&rhm9uWhm}qvr?>+8TIunZ(nuQf(lWJ{D0ur7LU!;fN5$O>m>CUTB zq(H8>)RM?X{?gPe{^&;7ZAK`t^4QhW_%59Y404<|CD<`H@riuyd|WRaN=X)JLV4qs zaGg}O)O>3s$6;W(<02riWwQNQLUPFo-tCYJ<|9pGB?m4hlo-);YX&93)I%$%LYeY7 z8CUi%zm+uGCO6PSWjCYsa*{*HKrw0Z(#b-3O|AIHp)a>h}J4uxM*tacaPrbxm6yXG%4V<6T9gj9Lbaz zm(b`_0=wZZ%~FS+cjM-p$EVG|gEh0PM$gQuxN2s;)+&Z*tgPHVpBY<`&K>v484AqL zDcQNxSK)Qpdny1jBUOz&fap+vm>*&WMi83f{X}o* zpc%R)+YxtOWr77x@p(N#E$)H-`tbp(Ep48fWDB)mqqQ1gf&(y`V&Wc+9X7pw%T32(;M0flO<@UHv+5 zNdb$G6%F6A9pc#wd-ZGqd!t4GBI3!?hAbTYaDDLnrdnco5c(V9&h z`>)CoIOKVX7-pM(8AA1_MLoXOk68K$eXJ=QI*XarMN*s)k5ML&1TS)+1qYMa%8+wM7JsWUVy6oANfNIr2Q6ZTvzLj zvDq$xB-Zi*E`NjjN(y2w*YYe3MWJbgXUVji*TI4c{eKRhm*@zuyFmNv4pr5geoT7# zh_BE1JDa>VjSAFrYnTgr{{FqCb0z6=J#1s^R$lF7hyQgY;kt@vPoK^WwvOGUpn>Y% zxCa)tqaP6$&nCRq=*5<@_2C&J{qKj>k`k)Fbzh&mlRwLiK|3ZNuJDR^Ma{z+;oj>BMf%2|Bi$KElll*;-g~SnGe}iw+w)s-> z@=eP$s~n&1idSe@`B>FiafmQkQd#yltG6eg8Sj0gaW`ELx-_8PMA@UBolU%PH_f=% z&nm9EU^^?FGUUG);X$43rjU~yEe#0;SA?RALN1TLF+u+A@ccLr?*WOayhRJpp4_?8 znxT5`erG6Nml{EDZQ5%TQ=fAA9+E=+UP)+gBrU|N6`DAw;&$@wo>h{u-(@P-X%Z^Rw;k#R}VIT)^P**Cx-Tj~c zt9E?o1H-?ZwUQpPe%;~WRITq6Nj5zs{}{rr?)|Oy5haV{H)hrR%|dn_Rsh3zzLb>s z#qde&Pvb+Nu@{!~Ya*H}Q8ZL1YLFX>u{RN#ju+z|aS`5qu2{&KbdypOBJ4%CY%tOD z&>wD}xT^UVvke~l>poK2&JTd$aIK!`0?)0-maNJ)QANWdAcK-4eO*OKdb-ht7a#=4 zJSye5nsN~ZvC~1&{?Ok0(Z=5Fn`^{zfp@lXvShav;gP$S1)Gw zn5j`G5SE?QIFBA6p8;20)wE(3Q?FJt6Nw7o-%3Uc9&^T4N^N0gs-R<;=h8Q)Q05fO(bGNFkb1@D095*V>?oQ@uf7VQBgmr^6DG=`)A zKoEfy(YSDU|Fehi&s@GrY}CD2%rn1PtEeo~{CPfr)2bl-<);DOySiFs)7n&gpS^WZ zKuS-E-wd3zs)YobKgem_FWPaG(go{gNxbml0HUH_(mt00djQXBYliEp5hlr{k;XVI zR4sCd&XM}MBm8Rx1nA;y<`EykRF-PPv2|ApM;e9Y!*}` zS*pK4l&@C{tq_Qzh${TRLDep#ZB=se=Y=F$#4(a$K6=3LeXFMdU(rt4;=2u#73Kk| zT&t`nVgrw9Pf`7A?xp)%28z`UqCimKgp6R`GI<*KX#UGq!*}!`JvJ#*DLeB}uSd#M!l7aaY>`)ZEx?}wS zcD{N-9+$S;xhx3t=3AHEkR3L?irCb*X+5hhTD*L_R_$l9r+f0d0e-t@lLL(Xg`zZF z{{bfdeBonA2T2ZG_Eq#_#v9RVCg*2UY=3%rdP4*_hi5tT^`smt<#dPvFHDjlv3y*~ z+Gjh6SBJM-$fAg_-5#<<%R7e^nImcNWL#9vGtwdM_;7CwUonEi5h?IctJPgsJwtW7 zAxtL9W*9K?!L>@(B1}nHtDwg3ofHvwMQt<7)$2s;i5Z~?Z_Srjd&IHYU3+Q6AV8OY zIPd_Q^F`T=B#8l(C}lXVE{e|0^3u+b0o*z%kmS`MV~X^MBZK_~-jH+)BWYT1WWkX( z-_rf}W$Im3j7lx_44WcSWn#9O;@J}urPb`d&4{VZSvn4Qnc+|En9u^Cy>cL_I+^$C`_H$J!l%Yfo>(!s}u+F;#} zFoL%|aPqcvPK9l5@kUI&K8yU^1YpV_?Z0P!$+^WcLI~77#D|VOQxVT!KNL0194l26 z7$rxvWY4X;qObIs(Z)J{C32*xeRu>vV#=FDlmd80;QTcTAc;iuTNki;)1xyvpKrfT zISK6uV)oxZRR^oNr7kBwCY}rHSPv-@hAD-Lo(s>tp7jk8FRkabV6?svHSCzo0}<}< zi*phND{gOYWSjj8dEC?ZF78wgh$ntP2%sIQ@k17R-pdb>!g0Lm_fsH*yrsNaWm{fSv^6<+O-S-WA}cj`@e7HhO|lZo>a47ZiEeh!`>(zwt_5C#`y|Kz`qw2#p#VL4V_i+?KveAhCt8ay8<7vJb@Z zC07V!D!@2x7btbJ>-cUZM^FCj=6x^CAv8l99Zq^ivYafqT2A%lt|H>Tb`f}$^Ev46 zHjCD}S}S{W7w@=?FH=h1&o}y|IkLOGRjcq*z&8$zz^uT+Akuo67AtytncPD0O&FBn zPo#R)&ou23S}^W&62(DHA!DSC((mhF1f`J=)1E(tl?_)7fuF%N9FyMGZ%dD{$&0Ro z;eLCTB-G!EMywYGmPztV#fco3rQsHFFA-D0Mj;q2ZcYt@ zj08U?iInk(wml8`pd+Hhof>)Xn<;H?w}BSBSf9aPoD5_-EGyErt7s1=D;t`(@HE#Q z3Df}&3u%1tXw7Gb+f)jxf8vp?@7YY&VCZ)vh0972Ig`o78kcOEMZ50FF7L8qe*1d{ zNki~5dBh=kQ-{7xQJJh#)o@)>cvoH`Y0NfX79QcxYY7p2lRuRl5Rm*`|tKW%}A!q8Ns%~uf@exY|H2~pSaj*k>-aWfbLet+Ka zG=p2ztq$`V%V~I?g$qgsCL1Y$8evJEQ?`C+6w-Sf$UI49-R|CswB$ZQSscWo4YYKG zt+=8Q0X&{OlZ;pHjN#5}=>8ZM-gLpPQ z{egmSXGaosCHw1^C|8n!{Fxc)F>}(oH!MnMhq)DclRxctO&PVREgoT(2hBC6YPIwV<70=~m_Edyu?i2DFV1 z=d?NSmqXnM$9jdBRr3^UoLSWu)fiYDT$Vj(;9gH4%^7I`n52>-ERgK)C*vT)Ck*fu zg|;UbCh1!*_qz7X3U`%P_aaVXJbwBC_FDuAoH>+_E!l5(%>h)(kPgVl-JZwAPKDKm&UX+z|1C{=*5o~mg6+Mg_xo#mk**i;RmbN zB;6a=#K_Us9aee?PcXJwo0E_JvAq49w@oyW(3ruegMcLV=PN7mR=pg2+7LfN$#<|M zakm&}6=M@Z`|~g^6yaYHwfGhA@P=*YtidK9(FwmJ4Dd+o26O_pg7iV|O+&cx-KKRF z{yLq_?Enl7Ur~RP#9><&1P?1Za_#AKQiLyDOiMp4KJrp8SKuomKpDby-k5Ye`dcw) z_154MUp6uc6|rc{Eb|hQ`2E~U8&0uz%dQ6j?Ro@{s(S)7k`{$TqZ$4fLhm`L`cBJS zi%Fjj#uJ8m>C$bHf?AQ@N`!NG+xSbsXvVW#;w4pu@@1L2HhH$Y>2Sm!;1?rMMyfHcja{HwFe)D4hsNt*!6ck zQk5hBApo=+A1a8{J;TWJ6Yl@uod&W$?C9N(u=fr}E+)(+fDyU$zewg-Of`e>2#tQ81vQyP&$AF=pYI#963V4RJr8J%`a8jrAD#L8DQf2p6Wo3RQ#buPoJCDI5iq9 z{5}|e@c#Hk{HWCe^x|;raCG(PZPmeqS&0r*_b~%*5<{yCWW9Bne$zNo?g(-cGVa8Q z8%BYO62pz3LEFQWzD=d&^OR>~^t>i@H*OrBZe?<8a-8@zL<>}-`~aCYwjkB|=YLUW8+U(H@TzQVm}gprw*F~-+6D{y z5>$0UvZ`17_{V^T)oRec{%5fui38QWFSn@X8}`QygHHCJk<%Qt$xr*;q;OxmWVDhA zq;VHHIz|OSCM&n9A``5j4f`v%f))2jz2;t>+`7DlFG7`H6|!Ll&TAS`Wmj!r_{H>T zXJgb!+ntO%?NC_8W0&%AekYGnvylqAwhpt~ar6bj2}P*1whL z-sTewP?si{x;Y;$tIFl=tM52iT0ogqzNP5+5MPA z5lUs7p2Ctr=O-9hZ`C0Kt+fqqg%n3?3|O7|v=aLBw*6q!?**Ul8C>73I)deIn@zdd zlI=bs+-Kh?ayCh**GkhV{ML>7 zcr))SEVhL6pg5!KLgwqzXAg?Kw?I1To;n7Z!9z*Ga)%Lfvja{eczaY03)X7|%dB}B zD+;~Yygr=brGK-nLBc^wWHfGPIBoI~4H&!QoLN`q;rl^XNRbb zg+X^_^`0VsoPiSmPOybT!G$AlDa*xzw`hbbBQ4Ee0)o>Kmjj}^hqJS1r=fk*PTNlQ z$(s8fhW2GVpMQP^i)Rq?ZlA?hafliN0eoy^EGcelqC_n!4Yvv7zea_z0cu3bY(g5W zMpN-1%dg{mc`N0omo}E8&5m?$(?3vRfX&!|H!SXzKoj=l{%qP%)`PgYtxS*EHM3fAf>Omv~_b`nd*RJb6%Ml zZNlbm^GYXNQ@gDbo(xI|Tw7)Gto#WGGY)1s33TpDi^qUDu{w~3Pxh1*1=hzBu9B|8 zyKQgY`;-OB1*%!C;%<1(`sG-Ro@@TNKML%u<9XsWHhU!38}9U8yZR^X8l=inaU-rX zb?=6i+gnR3Q>CnmDJrX;V}DVmi}MeJgxJ=2){wU2Erb=>gh!%A-Oijj1b^m{#ReN& zk7`Fel?=o7N%vO#O(b@}86QXwH(Xo&W=iH-Hl}lcdNgUc+&2-jrn^ zL}S~!mI^G)N~29AC~n;Zc(g?v>P}K@8ZP^_#SkWc9(Z2Vl{w}1RG5XTQty&~K?<5a zvox|C>Cv4U4b+LB%SwnM{PF&DMJ>3tSJda%akjBja`F?+8h67c>v!Pq#g}{eJzt_A ztO90lQLWrY#rwku60mi?knJmbG(DAI%Q~jpd)|PiM3E)R7 z11#EQ!b*G;Ad1a9&otNTB<~m3xU2W6NmndIYi_Lo-qcU&2q8YoQE$qZDD z&r?Snk>X5xr0>f1-8Q-RJ>Aw?-HT-H4AvTjkvQboBUh*-<( z5})nAGf#}zFAvj=M$KF(D~e6Jc10QWmmX3yE#D`@8^feZfy>FM9T}}|0gR9pZVWap zgW}Zv;!eF9S^NuBxHh#u39XY2tB~^?WfLmD+#ifgF|L-RQPikyl%xy`zQXL@ZRFUA zx}U4nRH^zH^wtrtOOci8K24TNX`pLIs~a~nXIKzi%a^6@cUCylf+cLZ&Ahc90vtNY z3HMuynmVzB6~J+v_f>)WWIpKyiG}(Zxy0IQ7g&Nip<c6Lo7f^d!u_#q*r8&sG# z8>D+c(e&kh%O6g{z3Zl@tP8-pUe%wLtjKL+nCI;ncCC}#KzA-!`2zeoQ!a4im~J_+ zaiOz2N_Zv3O?5SR8*us0HO~cEd3Bz}9eJED(rn4jhQ9{uZ4I<2?d*Z_hK^8fSJWr7 znP+|%_L!@GM<|yo*h22bM_avy)O$^LwvMhm?H->=Ciau1UH)Fr9lL_ThjXniQciga zn^6}P9FtcRYnKg2I-4lSuUg*o&QqS>%Ad5RdE|oIF35f{{6oo=ZO%nq25+IxbFcQU zsPJo7mo2AlA=E2Hi&q~mP`u{>Eg@%{ZD-=>w|iUXf9LK1YQtqz?q$M}c>Dg`RfxOw z9@Abn8@{!f5e%k)19>P6v?u z3yNQN_M~e!Ig_oqg1{F~KR%6h=aSBUM!!?$(iF+TmC$WG0+bY(`jcc$vPn^F;(7!W zawu-(EpZZp?a{_(1_PjHIj8WS##0LXMjL+reI<`3pD!`bXvNYWdT~~{{Lyl+t|q;o z*Afswf@KmeP2jy?WlETW4j)8I6+c4FtwZ&7?ys@|%MkDSZ)Q_=5@Ch*=mV47v3Ivp zDqcx~Fkld(c0;<(8`ToC7yNfErO#7qD2@g}fhS-G0_}8lh!8x}2h)H1QXaSM|N9Zs zWhgOxtVHYNE#eZMkK`4nFYpT~32uHd$BOwK*1awHK4i4MA8P@>0qj&`SKY!is<&<0 z5n|0^Mb&tq9rpK5XyZPu7@vdYd?_c!e{#2-n14{ieHX*9f|%g5W$TMHg7A|_m0pcY z!qB{xHrK29oACd_uNi9847#uoD4J#V;xVen;Q7T!5TEe4xaJM1N9dT2uu7;y#&yk| zZ${SLbw1Nl9UM7UcXEI2NzcdEcB1AUEqwp{i9}_Lk`sxBQ&D1-8sM$>uJi)N9-t~r z<`i&hG?f~um)!?rmxrOmR+3*0@PVB@InETAt<5KkWBEngROm*QvpH`TIDIg<<%4Up zo!X7p{EO2(@>*~alxom6ksPti6~^QXu0+JEl}Fa#6Gm>0P-u6X56mX~x#W13wc9$h zV+{F4t(5zqDf8cX#u%IEl!4<`<@t4e_UD(}UyIPmVHnAb220p0>gatgH1Tq-CHkzq z1f+-Q349!iWkpRI{tG^=IQzB0!>H+bq;}}{d8N;(43xX%Gho${dvhSJ?sb#DKZz;T zfK~h+P;};(buv?he*2tZX|I=u%w5lExY0!p1&Yj%WNjy<}c* z0b%2F#rqH3!xDsVhr;s&a2UB$YALv!d=}Jx6Fo-9ReqJY+*&c9Y-1(ql$x?VcVQVeW?P_MVjTPP-sM}a^?0!X&_qRH- z!rB+&6YiFemG~aD{u3R#Mv@Ff528ov?$@=L!6}v*rHqC6$lyO?F!kEylj1+gh3&Fa zx;|k#VOdghG9#fe^Yni@5xL);*=}=^n;Ew$@&V1N*$LVTa68pJ86Ja=6^EWYxKlVo zN8#b}EL*K1il{FUB{=)aTJ$ ze^3$_>6NCma^vPeDUc>btT$L2uRL9TMpz8TvOFe3fNK>(eZj7ted1G^(jO?6N){8I zVqYw>3%1{))>Kyn{Mbh8a zFeL3M497uq*YlRbbvOBc1{3zQF5DZh9RveF%}tHtXJNXV8b9sHSMWvL_@c><)tbDL zp8I4&EnIm0QRq+0E*@xmEt!8UDW1X~MyuCUWl)Gu-YQwjBGA585C&s1)D_4I@`Ubp z#6eP+kbJ&N<zmq@JWYxy<(zhST+=s&{!J8~~9Ncm)ZAtLP0mFdbcMKJDHvuFXbOyvo$=yy4Q`QoGx@ESVG~BrV*=2UyWAQPe zel0Vhk%#wuO`gXa6~SP7YTHQ`ca6@_dTp`)OmfZ*YLRhf{rdvcK6JEo^{0i_>)%Dp z5#6Qxzm^y)G^*s>=J&%Aa9W~eN6|}?v|#C@no~oM2cWmPWBIAMVyMm->gDm9~jvxB0GptE<0Pr?HgixBqgV zUJkR;>R+Ab%DLew+xK-0!BSio;fEob%}B|MOWiiBit4Jrh%m;|KMu}# zj(>8YY7s*F4n-Cmz0$6jxc?Z6-8pQ|#{NGRfaXCsNYeKG`#i19{_xv7?gtM=4XiMKCn_d6hqOp`!fP zXYy0xGZZ}zot?yPZWh2>27o~Hf}nN1j>FLkPq_~!aU&_xJ5P#=&%nshOfko1U4M7u_NRQolqxYa~c5Mh;ITA)90E>@8T&Pp6ay{k99e~r&W z*hYzGm?B1(&M|^L3Xye`@>M~gh!)xBbZv*>t?pTR4!dGyuZb&Ieuy^)pIkv}0r=GG zj9bF@T>W*Wdd*2v1IYx)1XEo{yZ33`*$Eq*Ng%>3&5yLM-iP~o(;=o0(Z^{&bYcP* zl#d}9RGgg$<`<(}$>fyuoP3xF64ni`B`_8iZX4PI($ildoKPUE0(qj7Bl)1}vbl=I zL`XW}**($P;;oOK8~24sCGtEUrBc1`21CYc$p0PFDp8j+CX?LHfacjDwnIJiwxd9x z&PHpA<$RU9Qg#-fR4t6JOXQ@HE$z2N?)(v!!iF+01}3XqlgQ&pERFG$rj1fe&Ewe* ztg%jfK*n-Ms&p`Cyd5~l(r)C0EF=>O35mO)Xzf86K>uyltYvB1(P zh_K`m!YF#s?&z$q-nR(vqFtful z!`ypa-|r_CRWjEkw`Q)5Liu6*XXcHz>2a3dpF=Pt_VHq~!>y@e>-YS{rUoWT)+Va1 zj6wB29EVs_@AQs?w#Z}|g@Qe0tF8LL>oK=9-OvLeMg3EYoO?(0PMPKGC*<2QZdnDX z7Zv)b*dcEkkmnH9$Ajr7*!d(C**Dj6R?1v3Yk`2Q$>JKT!xQy$@an-yTx&A6Ob9n_ z+_wG$dicqCWKx1SE~V@kwAy+vc04%2uyH+1BO9MhO=@VZ(b3)(7uwBqm(G=BmBE;f zwi|R;mx5j>o7W~Wfr6K-ons;%t8A7i0$Zgw9`)q3*4RZKT6Q;`Ol;@)H{DEZbKg9X z*)Ffzo>)~HE&l7hdbGf5sX!?!HZpmZ(gFD-=6$q|167oZ{n=vlS+Sm?`4TbiyZ{;;g&^~o)-*cQc)Oq*1o$j877W|oxz{y{CDKs zXi+coNsebuRbHNlspi=M7%%18gJe}=%OMy2!K`Bh3b%pXRoa*<8OVDYBW(DJx}l?V zI-M67u)?7U+T-3DPs$cbEz|?%cGRHu%X(NQ8z?*{Gyiz&R5-dH7HqnC4DAq+vjoKv zp@F+Lp6Jjp6yJr#lAZDBvlulVJyuOPyZi4y6#S=Fh@h#8j?TZ2_WOZLqS5`Ai}%Ov z7;PZhI{K(^>P@0gj0O-~BJsyt<n#_$#qo zLU@C3eO%AR3KD9G@4K8=lxd*vRs4(nv0;HlDn*>u_pSEev?@K+_N(bWOV=rT$~`Gz z1|f#%dSNkTNKiQ7k9?XVZM1B0&Nuj+F;=4+VMRf$o%s-$EQmiSwuOP>45|3wU}e!w)?KHjBn64JXs&#x!*PkULGT?>A#f zT)1?puu6g`o5;Yy$}Wt5jL`C)IOUjl(gD-P7o^=y57O?@3eD#&^&4@<-6u9EA`#%j zJs88pZlip?3|8BH_wY|MTA+KQRtgZy+h{HPV*gFz>eW%7t z2JSHa85pV@G?}^cE&o}kIgfqCb6=6ZnJf2=RpzPyG2AHsm*g#b{k!+3zU0LhI$qTj z5tq97)sr3RPS!RhiY?Vl$+liH9+4FuI*^t+y~OVK1!-qB5fvT|2+Zk2*5B*19Z}=* zT{h-oMmV9Of9gOFxc=0EKhn-KV%f352RDZkC>0G~vIzhEjl4yu{nbQh`$euam*>0- z$lCWvb(gb)Yp7}A4b7hz%Vw^oQ1?PE*pB{#U*Ged##^#~LWph#^K*1?z4qVRZ}tW& z4m8c2-KT0B`#BVFAb!}KnsxPe?KbG1m;dOQ10-AMv}93W!v98~waDvQx+4I&$D(kL zr^&55OYf5PaOkyT%IWd~wBm3mpzbUtJD_TrhW~o;#te36QZ>?xb~zMuXR>?ZyzU8? z>D4tbY4AcZZ#QN#19qt_dkWjXD{x^&Bw{DY2;a_+S9rg3+5f|e<4^whxHM5oFc&N> zSK`pg%ins**440izRJYwxbXPfxxLS%Sf~ySyWg8OfRbo$vTvJ|sqT!i3N-d;d z3>@eA>Ru3foDMabRO6+Y%Nt(~5zL?@F|WI$1V%W6wcvd?G+Mvn!{opyjZ{t!1BX*B zObLZQ$RYkXc%NG5gY*Z_HIbCMBD?g2*g-k|KXMrfgR8o{zA?`X7>WiAG9=beQ&B1sE2te-F|IlAN?QH$*tTD`YRzrP8A;e=fCs?XC+0>b&~qdy8aRL`l^n?`RzjI{I)WP$3#ieYK6rv+LB8r6 zUKB#ydc7m~sZU#w5&hA>2O(4 zvR7gXmhgfi+BUJ9_@T2*C$TB9swX&Y@a|cN{nNVb1GzD(aZ!7_zPO6Vg_>8y!=HEB zxN0lPC^mExW3a6Xa0ifJcpi+UflRyfGf`~eV_Js_gX>KeTRm>~Op6}7o9KTM$F~!Y zjI<_HzO=+${UkoWF1M@;@#R8G0ZW$b(~6xLvBJR+sQ<EhLX4LZmBo+ClV%e{cobE_>Uf>$A9M*daphT^b#DEkiyY;wwBt&D0W~{ zD)Z*lPmgo4#8s}kA$4K<+kX0K z{oU`ldt2PNkyv-;xFJ|9qg=;DIyk0Kmx7ZF#h7y`JL!|pJhAn5GbqvY&94tH4ZPEF z@$%wPFK-G@DZ{>n`I0FT&SLs*J}!}|F}3CXlc25Mcp8cYn#%;|81jn_XxhF;gPT7(Zx+$sNEZ-k84#o|~^gV!3E71K5? z%F^52CKipFih=C0N3VdG>b&R+pezMSpAlO)n>K*t5egdzlHWo~r`IFzmYq{;mxB=* zZC(OC56OAxUO=opAXDmrJTTf3x^Os9nrfmIh;ad<<%13kyAkpNhTWb9MyOt}=JOMp zi*RkY1CadzcSw{+Va~nT;RMI!e&aU$w=Ie1c}Ef=TFYQy*T)oW3XH0UtxY<68suhr znm3pB8W!1cBvBLP9UZI~G_*py^EYzrRYqlt$Kt?A>7Ao{Z0t#{SbPFKIDdQI)ef3% zWPfDsqVJ+53l$te_ByRNTs? zQ+qZSV+B+Ok#8(Tc_buCoLNo#syL~eXT6qfex+Kh%RoA%?1VipB`#DBbpCDNGM=+> z7+gwFE~Dwl!e0D23?&V?+LBd{n2WGK(jr8(N$5 z&dEALecvvX4r?lM>;w<;ODE;|7{-cC51QQBGkjWT8C99hsZz+gmeBX?m3Xyz?Nb`t z&BC`6oAl1J51chpPS?dWOzA8)khDU9(nhu*xDd{$m35GZLlxnS!o3&U^zWQ64 z8j7k2d4y2d3NF9IS>&F)I32Db(}LVC)=CvG&z@<}>WH*!Nq1ipd)wcC=COJ2f7D6v zP{_OMXRWOFZ`dkC-q&!XjK4Oox5@qcjChLGD(I<3(?*IO+IBIX2C?T`La&iK=@P=d z5nv9udC*>sNo-&Qam>cxpRkR0nnV$b*!Dx4C zG>M#AKoN;^|2^R`B#z)V;N`}^+Lu)LHK z1=pjMGyAG!Lzo}{@OPWcF}rM}8@o#N>9;Wm_UV160R50$wiOv@%n>C`vTuq{Aq%K= zZ4U`JXQp_|!Hez+wZqgM%k zv0-Z6SN)Lr!z1E^CilMSGuf-AhxA~&fIp8_0gd0iAPZRy0%h^e%(e%#k-O2 zWc;>)8HN;V>YEZZ30s5JrZaye#*^QdcD@h7P^TDKhk#TUJdFB2cb@i&f7ygIq_-Z% zl%t3I*@0i&Y`;oznCcRsEH_f=?>?%&(%5ROC@;%mVtfgKt6fM_W2n(zLGj|>PY8_9 zYVWa;A&|6im}WMow4Uh{%P1#Tc2DHmtk12{A(CG`7A`KEEr!(UZ|t~<P*;KdPZU%PjG_lWL>OJ; z4djKj-8(w_vF2Z&d)d0V)?WPV)RcJ9=sYl+ubmehMoPb$s28j&N3Y%TCHMO4<=+$5 zlZ%DBm2aFn3&GK}mL?OupKrcY&px&-srmbD+T9wwo--&z6jwL^j(ve*1Y@RsxajXA ziL|k{O+jcP6U~)}wB2BNB7f2^q_k2$&+I{8o48|F0?``=ym~TXZ)m)%=}`>etSY5b zSROp?FrtcU&%bqj@9Tj&lBkq?wQ`p0iS(3dd6xIw(RsrrQdsl~o}G3ast|CT1#Y&u zVFOW4+2jOX|Gn@_U6TKG67Vurx|oJvD9kuQ&7;|!OK>+J7;^u~P}n|4AtM9+S>w^o zgX@4;f7f=JJ0PA^8kHqjwE~BNz8A~YBT!7oMX7?^bpx<Gq@(qA5 zN>pnkz8%Q>Q6GhgY4jA`$#I;R9K@kV=8AEeG(_kQxuHNbI(aTvmm|&<3tUs==N^@B z8{LUlKS+<-1_RgjCaFd&>8 z3lE3KLu3D9|96$QK#kh}*fYAWbOZPD+;8+>B|kfam)c7UwEmJ}`Nu%?+`&k4&rs>K zza!iMfzzmX52WAIp`<<>3<+&hbWx;uHf4g-hz!)4AbRwg{-2*Cfp!ikJx5%ZQKI+f zb6ekASI(onU)th9+KyJAEo-zgqJ6GknZOX3H&GvyhGa*l!0|kX0aqn`l|G~?D?r)H zcxC?W(TvxF7~-SA{PR6eHiG^~r0_({XIQ8IP5(yRx;3bj3lqgZOw!TP;AvGAqXCl# zr4)zeL3;$uJ6KUg)LMMO`r|a8yD&wR2HF)9xA(c6v6C}VhoK!q9Z!Ko`P}B_3<)qI zACyR|9NU2;)9&WABICT1QLa-ys14yC0BNv6(eyAr;si~{0ZnTRjt5F@i{pjzCxs}0 zk~_G8_@nrlbM_mA2^RP`_LSuz2!9a>EXJpdE=+n+Gy=hZ&|I$7DxHNM|8&H z9wbzYMd^AlTc0y_lS%EJuE?4b9B&YC->@hjZBU1FW(xqd<*cmnyGuT_tbx!^@1LNQk1Wvh*LFwoDmqlGng$s z^5k;yDc|Fa4%i(Svbt`f3e9)%Ki@AHJ_$uKjfsET zd&I{7Iv&=$)wkGRFR*9iq}-vQ-Ian_>cY;|9IF@$k_1N!TIi5dtG&~M< zFEet!+CW8n_cTAZTHI8sP%ZxOFZ(4iAda%-5riR1i8VgJriNe%+JX4v(#%Mx{PUt~ z1Aw}A-qHRLE=!}xw(7I;PIK0%RL3+Z-=6v^2SwKow<04q<5{)F?&KGxu9)3Vm8L=W*9{;aO`)ail~JzLNR8fePVJw9q91{VtSW| zn$N^R>*%}m8t%9_QBv`oR?U}WvEO}vWm+9K6EjR%K0d7vy*{4lzHFh_;gRE`$T%6% z6UWov%2AI3PDG#4T8gTM-So$(L2)@d=J+j0eQWGCa|%XMdSDq_=F( z@;vRYbZ25LV!6Ehbb%26=!m~NBxoMmoNSGoWQj+vT#TKAHbsP*#7;SQHX{4}-sL}^ z&N{(JQ^HWk(W=+`X!oCV+5e?1Q@8UJgM(kpX8UEE zKb3f&=|VV*e8Z7;@9FWG&GyXCt4s=y***`Gu3BaNh#>|bxTpo4G6aUaBXYgP>DT&u zO>$fM0{hqFTxQ%wqVs&V`|NA;xuW~f)u?0^#r~|?b-Ty?tlNKmsDl$dbsLHKGGegV zVc8N%t>tNh9tP)D=TI#KI5kDzKP!1}me%ga>b9`;h~RFa=(TPjUes({9G1XnVB=d1 zHDlCif2*6y5D!8EyV1BCDjvskLVGibLL>^{=s02-H6UVE@E-4vRlvk5|f4lrN0!y&yD46wtJ^P!}` z70rvwX@7gPdjs7L=!hXk^j;cMql;H+E#EqU!WZM9QH%&-G7(7)7_UC7)f4K?&3duv zTd$9pYF=&vfCaKS!J_l(Sb;cRlDeBXj#&+dwqKb01;I2Nr9%D3&kDD3ydV`8$xK^I z*Od9!d*u9l@32G(2riC?0N>1W?WeX0mR=<}JFR)QTI27gi=Qny|*<6?^%)Te+Z= z&ro*nbKBd5xES~t%TXtx7-*TJ)Fv zE{Cn45N?js$I)KS)5p!PVyd9gx+IBg3_8C$QNWLF)m9w(bWxw;-CY>k<} zG+0YX99vlOaeAgXEo9zGhN@0;#yB+z9&9=4Hcfvx_+>Jq%!`{Sn>;pkw;XLD8#y+9 zt`NQBtlN@?YMHCwAe<8b^Dd2s{)yU5>vO4`sp^M*}+h9(&xUBjd+?cEW*3hx$CB+WjlqZn^q7kIoJ8(C6 zW6}}Q0T&H8C63H_7em7{Fi{>XT{PG5PiJc5cN>z-E1O!;s8pdF!Jeh6m=Q_}a(hs< zIZ=@ejV01htLNp2BjqvVu=lKfS?egRhY{3LMX;-cNMKdsf)g9>T*Z8;KR=NIC2!FWgc z#Li`6Kwg4wIC?VY{JXm%2*X+N{q*hDO!EW#?q^qeKFFYhj~>cK!)P4ucM5xi^{hM9 z^gEJYYE<3H=7tD8%dX$(Xzz-oCz`-0>PhqDB=An%NGtA%Ma zxWv^GLLL4v)^H_{&4BbzHz>jRPm?j2GCVK-J@E@QB)}FMUF)v&A2IYj|5d(#(>0>* zXGuEGV1tv}xV@yOMFZs)PDo{KFk;Rb{$-qk682L!>oHD5mekGi7^ zi5c}yE{V5HkH=pZ%)v}d@Bx#c;c!m~fA7JVBjJ689A7V_W9nCfu5o(&Hjm%8>U%PJ zXhHoXEA5j?FGybkap9LfHG^?Ut6~AVCEFZ<@|cp7VNP)Tc8DV7iL+_}{MTe3`gg04KIk|0&df zAxylRdP@(k|NfB1KYt_V^0wvO=Bo>qEjq~$g!eChzxig>WssSb9zadhU!!&29Ri!$ znUYwk$5VUgLNLZVXHs>ob620ZZq8>N8^rq3d|REcVdrEkl!hmbHeglaCr^@%XPNe+~ckJq{EHaIgMGaH%OG;Wgml7-A;I|* z%AU~xbpia>%Rz1onAJ_Q<4uZW6$mk6DD*HBXGCHUe-L|I^B{3g{SXE%8y-};rVdE7A2s+?wlcCD5!j4y6f4-RgCya#jt9E)q3J8UOTO>&BEc~};2Ox;!L=iWcsF?E^RyZKU+INRZNs%zr%I=lME z3V(-Gj7*HArn!{FpN-}X#nEzvp;YK)vB{dx3ZuVO((RtL%@0}PZssLteV2UQj|V#) z6{iLCR%M4+{X4LuAML zd${h)<~=BsAYU7MKq_I)`z9}L=0g++SX2v>>g}1&7}3SPgX$^C^oya3`l_s1b)H*_ z*540-O6y0i;b%pnT8vwxheVl*w)Ik0Z@^nkCe4!yG1#sm3&wBRYi>>1o|-Ss;0^=S z7%!k`??zK0a-hkE{?UJ~SI*;|AAUYJ(hAbfgpPW_;D+UA(P*N$bjvNvNWI(^DJ{H6 z)B(X%E?{C2>)4?;Aynihenn3Zzu3U#8wunu$^a2z&rx`r4fa^ieyQLXZ_yN9?KL<= zoydojdSnC*;tIlOR{r>PXT00yqlXfOctgXl7%$;m+k(k^fyF9a>U$3n0{T7qMP zFV1uv$1m(qADhy zIQF}sZ|%J@O3qr%h|tsQHk|)`SaK-W_wdIXj?O)gcGJB|MtSjAMl2nd>bbP1-UikX zNpGWszj}iuS{)+F>JFu|ay8;f8E^mSf*ulEi1aX`!5Lnd-JJ_eFgh~x6vXj&kE&DI za|qi2TdlE@qyu28cix-Kj8<0n>)wR%f)k_f9iJR$XY$Tn+2DL>yg9NFgP5?Bj0Eg% zn2i^DgSfe9yX~>iTI?bH<^w{R>&4x>^D@t?{zrfxZ7@4;J&ht;SukJtEd!$Eh-WAL zUiurGBsN`>WAQu4Nn}69=o_E;P>{Z-2E7S@4yzlz2*f*yXSnIa9|!jc0D*ngmTngD zzS8Cm;U2Ld74w;4LJ^^K;Xg*y@Z?8gT#di9#sXN*xZTb0OJnI{FtgKxxSe|9NK$s< zq+ZjR{HvrQ(;2$fg6ic7MBf6#PRj3VbNhjp!)l7ruw`DBs`5;F#D%gMlma=8nNSN~GCvsbP4rgIN}($#;vm$dmgep_ZaLp?D6;Pt0oUH^KV@v#Le}6ufhrDX^#4;<4JecNej`b-w|UhtU%r_=c7CvG zb>U&nfj*B5#5X7P_I3NH{=TjEXoEXFUie|_715u(X1_gzrH0=9ZjlSuOW#$V>uKvC zo|dOfi^~|VBH`?i%4^M22RmdvvER6v4rR(nSo|hw1XC3b4uDs}fd1U=(sJh!qZ&*6 znI|)W>J%aar#H@sn|>W}4}yU#rWf^a?e;gb;u);%K2z}Fj8AG_dUO*~5}|RsJQ|?& zsQ(Q~XWEjOyKP*@Uvm8+m~qh*1OqwIXKiqP!(7JzEbi7lY9nqO0vqR5BjuVlTDoI# z!<-(!!K}k`>n~Kh$&x6F+}h}Ei)_TX4py-xfSwC3$5QK5RBG!oC6o<#ByXejMSl;`{;1G(# z7_}NA#cc{f+TNSP;w_Gvr<)|et1mc#Ikx3@Td-osz;@nCgpK|(sGE*P_ovzz1xuGk z3qEt6w4Sn;__oCvXS4z5l=irYln+G8S&%4E`Fkj1M0Gg6)uo zuf$4F!5n4#uaUk)=)NNJTR&H|Rb|DvWPlxZyo6+ii z9BY4c$J19(-n#JNcZ$Z?FKt~E(BeZsP?4gJR)mzyDsnM|Vu=K&dOWCC6&W%!qK+?o;B`oO|D_2J?4!hG8G`&Fa63g9^=-Pm(ChDOK|tMPvqh}(}u3ZX*#TG z9WSSRr0=#a^uBw4#SuVTcM=x;rd-n6kXf!FX8BxsFOyD_L@-f}r)pv4D^X4-7Op~Xw<>D)>V z@jo7lu&L@?5!v*vNgx0cgv(>o37tNBm8NseiNB!vb+ zdsi)W9;Dk-VEu5;`AAa>K^!{W$?6*>F?RZ0K zG_|6z9B=*dZ1I-%n%b&J`Uz8zrt_m&@H|vcWBH{}Sn%(&PQjQ(Iv{fp$k(OT*uXxfqa`@*+G2^8R~*+$ zK7ivu|Jd)JTCBZT60!`2E`+Yqxx%Q1+8>{wiP6=6@WIEl z#`5V;3C&TuCI-Do!7Zn)yPya;1}Alu z7vSttQVP<$#@)p6Am(rnS}?-xMPCpmL~^>)i+C#*YrJCD_-G=zrkNzg-MpD>_gkqm zIMYe2gkhq#WJaV$5lRncoQ^&wmqauOq-{9GtX_Ht&m?fOZLK@qkaWLQ@J+Cvn)kGm z3)z3s-(18vJ@b3!PV$JWfc95Hfp1NdQ1Hp&XWs;Ltw1`t0N+2M83v66rRDMQnfXts z>!*Zc160M+KN@vR4bq;Vhb|?A+JG&Jzng2V)YPT#)HfH0&pj4H-~7M0{k>R5{j%}B z&H(s)^;cG3#JT7^^^b*UAFe}p&zfn{J8raA<(V;{M~f79+`{4{eme79%6zGC;hjrZ z^!MVF5T$v0va~r2`=jPdwKtpQglziM$LvJe&+-UzuUA8p^l6*Mj~|Q-q$zTBw9g?O zfs&q@4Ub!yGk>@_kNlS&N6U;_ySqvbi|)@aiTMn z1L{%fbmAl(6`xh@HxSFzgZs)zF0jkbH`;Z?w6BTVF(*=yi_rKR0Yi50qk@uZFp{m%M*iWQNb4z*udz6$6hv+dkvuX zB5B0YU%NdhoKrpBXGIHh=Dr#vLle>_F(?+IIkl`Ebek(djfaKQaNcNY^4qP)&B_0H zIl_f%LB-LO??NosjF;IR(wKW_D^|ES@;rz+#2JI#+H|^*b_0OVoz?-=APB0y^C|j> z(BXSyD)CiMHZs%~hzjk+q0A}*;>_D%zy5@JEMmqWyd{CGNNXHG7=$m$3)}N#lb$Cp z>LXo$930@%S~jzkhon9HjbcP@yppzhkG~O*UB0fXz){I%QO3ULiUDJXImOo*1cyVe z{J&L4V%d`|QtWOK=1vbyx=Tt6%29xrUgOR(^Xf+esLh}tF-mHl?8&a8T(pi#uEmyq zB#W#vWy)ue_KggfQC80rOUW8@eag=EdU+aVD0M=-Q?P%bJ~%c}Zf)?I{e)ez>e2mr z(Q?Kr_bsl+t&Oc!3ml8K9rjaZ!dt3Hef5&R*G_*`J5BnzK4zUXi+E35`YSwrQ^rAJ zAbn*rIfS;lCGk(C{)Vo6h~-3a{NgtlPebvhwDzvE z^R1R~QO)4XmK2K)C`C2WabQ)@T01U=;EP{k-0{L&+iO&f~mJA8-h zL2kXpxsD+PlSJkv#los)tKp;X8lZ90Z-9S1djC3b8M!NXtEnKdrF^&9R>u}e6mi%L zaGc`>=83kQ_AFy}vRbr~a2Qd$Ul-|3T>E}5V%C_!@K9Wjq?2u1k`(Q#7^kTu>C_ZR zT76>(BDZgOrD-FiGIp(Y<=8EGUpZlZRdx&YW||ZHYMS{=91SB;MQ^bjP`$jaCYCS+ z3;#M5a`k6g?1*JU%%fuI&DW+D7&a+{&+l`KW5Aj9ui~qh0gAH5m^fk-d!ePj~mX~2hZuQYqOw?a5qCwapNp1d0vT?M+ISc zNZ5E?N+0awR8U0a`b1aAAtG@x4ubjLRW3msPs*QEM8h8iivO?CE|+A``(8@;?e)-z z5gkv+pV>)A`*P>|f7xT-Be^)Vt}EN~zC#q%+Y#eh1$j2Y+40W3AI%DQs7zb6iEl~i zq2*}2G$65_8qo@pz%vsz1i^&TsT?$*=y5sEfkTFy05gHHk;!>lENK;j-xovS1S|*2 zDAM04D^lM$wiPIy|3k6$uo4`vS@Zz#|LChCAo^drAL`0N4CKvkzPdAR$*W6-Z-Dr` z3;?o$EoHp(oV*PI?jhem@wpkv2m8qL10MWoEgmRhVh&i~J4gIiZf2(dVP3%S4ug)c zoFFmmZ5H>ny|3i#4DLOwLur_I6{>)tm@az^lSL$jGvF3N!LJpiH*Xf!G{~xwpENnLD+?8H6#V|mcsBT zBN7xK#s%RqRh!Z{O-(Rd*Tl`Q}mYjuJK(aaS~)vXGUF4;;822g~gZu+uF_oL2yJZh6S@kj3qH7`3YT{J$qFn!J~86 z*crh>Ygsm5WZ53kzTDS5Nfn%B%xvzF+iN5hgWbkqI-felz&3aQ!Se9Ht{`QMee>0DZQ;sBXvQrCDr6t>4W&jts#r33?V& zhyhCP)2g{gjxCd7f*OnViNaxs)z^+!B@Wbr*)Wj?jY%1d;ku1}X}%k#haTsH z@f1lLahO-xSoAPEnLdnMi1tGB^gJ{Gdk$Mcu2aa+?>SDF3ko{pf>c1S|GGWB`ww|` zD;ux`Q9cogMQkO%Hl(mNV$SZX>8#$gvChaMg`f2u+h06E$GG3RRs}NJV1Z&A0S|$} zIusZ0rl*#&7*}o!8b#Cgg3(>9MN!1zwWNSm`~`EafpZZ=Mw;T$@GQ%@u4oE37faWB zU>&F%w2%R~{}Y7Qv5u{}Z3EZO~Sc(B}yKvt+CoJ;j%T*C)w zEKQ5qqCM#E=^q<{>8lvgaS`jKHVO!>aS+3BHIkbS?F#A!HJw(2&CHbBnTbglMFATB zcxbWdV2uF95G9aAKS094tK~woRjan;9xeVfIxl@uMggRYIDZM^1Vzcf#r9KFdT?VikZKAgU5=gIl+qY`4_ z>HyeDBUGLW_jx&o2+bx(I)W@Lq*jyy#RT2wJndZey}4&KWE0jF13^(6Jb86%C?Ucr%cx|H?|r|GFTbkH ztCE6#QVYhP#9tgOU4-AXNC|(jPIw#B8#GRi>U|sk_C}~lBB{yc&Qo!#nPwM5!?Gst z-it>Z5fyvUVonz>f<_Uo8ui*As|+Nsqr^{C4f4)?|v6l_Aweq9nycJcsxOBfnTbXN_T z52yRvNJKPRI*MpcvIXgoA#`)s<7)vD|{XZhQ2?qp}=D5D7oy5(V<9P3k!3tN8&6OKQC z>?^6S&tr9%6~hrJ$@S6W?lUtGPu0$UM=$jOZCik1=m}_ z8%*kZe7J^9<)zPvV-NGpg8~J2YfF-MgsCy4F+}n6!*m!`{NRs1OnO$3Cea5{S~|45 zO%SHMbPyS?he?)S6Sm5}exT~#U-Nq~RU3NcS}FYy$t_Qb1~`ty^yfy@Xtk#IC6nCt zg7(3lF4$S5pb+jZH9#dW8Ms^j?_I@CJD%G6Gfx1}HWs0$3E?*cD%CM9%hiD%bYLL; z!R0o3zu!(Ne*?!yoRpq0_WL+_uaX>f$I8#3*V}*%!p}h+ibE46`rE^Wkcn&tMbuOv z(Kpki)b}ssudc)Ua$K#T=1upL{{Ec0shC3*p#n>=K!$DPVdKl0p~K9JW0Ccd?~wXv11?ysMkg`=Nw zLFLcOOYW9)+%i+S@p65s-*C-t)=J}_a`FEGyy|~4`)X(X;4tkLl^7t0p2 zxTZ&=cc;+Kiy@%?(Fr8dQvDWTvBZ!`3!n6!s-NXQ`p>+hMm`Em0*F-j9dn2J3LVE_ zbnURmAUfPjQwl{n%8(-Dp&4H~rDqC)Omyxd`si@$h-vR?<=dJ6{$n)H!bJue`kr0(;ph3#G+x={QVHZ24mNZAI}=Cd)b-l8Sz zPJZIuSyHHlLqK`RVuP2L5s_mu@tCRlbv4@C|{9l-{-IojXSz zUQeAG#51f858ERlRZ|jO7#BF2WcK|pm;U8+oKwt{IMks2{BcO+uEdtS+RpxQS0=5vggHSNcc-!RgMu}*0451}RQj$%Kcfz+)4^70GZ5=52f zC%6>#jl`JUo|AhXCqhb5w|C2CLYcX1wXR&8CW!qc3yvw@G=S(Gn&)fe0EC5otAa2j04a}NV*y?CO&6>qt z;DRUVY4e(JTaaK~a8|tSs?h}oB^DTf6EZ_sx1L8xBE{2`wny(|MGAl&%rYTDx;TaP zf}CXmk6Bopj~|oZtKtNcZDpH=**evF_GEegIX~{LzIg#QmE4Tgt^Sz)+0&m@>IWxc zJ@~7@V>5$r>KBiWuJ5;gkp5kGkwmCoxJZ+rLEPiW7F=Cwh&I`-BMc9!UTrrGm;b%& z8lUxGUhVZtTB{_OR;hy&4w|~IgkNr(vak89`Gs6;-{1CbzsQh05!)xre(tY-+9+l4 z)?)iPM$3ypWdQ6)$2~g?0YIan$c4iDgIiR)X0Y6^p8E>+H9DICa}8O2J2u~df&8NB z&p|h|UcV5N7YDWw36NG@pf^V zQvd^+q)(*jM8=8%&65qW4z`Xk7fKomZ}=xdl1>E}i-wICJ=r>Vwc)M^n1Y-L~)LvXChk8E*f7mX_Jl@uvire=05nuv22!-&>8SUtKGHvCj z`SivdPPtmhe6<;1`Hcm_BaA_LKh|F(+D4iWANdmhdE0D0VoUb6;nwu&k4)Y2js3CT z_LbCjyekr8>^_JiI>ioHaB{4~2Vlc1^3r$`)+F{DOG|cu`6j3Z&OMLX%?)1oI=}G? z*gW?j(?x8*DuU3bs2#5a8r1-0I(Z z9GP{t;=cL?U(x|4`%_;t6CagkQGCk|-{7H9{Js)|2B<#s8nReVw(be;aP!&`A)(aL zbWNqH&2LE$*UKxb$+ZxPZ^i1(kRg{-#Vkt+q*l7(#(F&1YG37R@;@TIXMLumRz+Fm z*zo=GDmV5kpK9k?&$mvtXC{CF#aG-E%%dtXG4x1TOUdR!=MuS*>ZD+YpTHsT(kNh( z3PmI;h{tNc_(qoHc5Hkpx6GL=)D*rBVzlCvVS?P(Up%zwm4bYT@j-WLotK%NjbVa9DJu$sZ*0JU(WVQK*kE^ke4S;BI{ma4d-nrXMAeB#V((f9 zxnL<1TCJ7iz8^6xUrJI48P`G=o5-$PaQo`obRuu$ZrMR{Z`>ig>?V1FcSJR~b+_h! zA74DEN{FDpYI@G`k&W}?oEB)cQj}0)V=I$q0qwlL zK~eR^1ft{OWusjU@4P8QjU3|jx|z|AgH!hZq3SHdqI#otzh{`CyE{ipC6yRz=ovst z5S11Y6r_=c0YO4?07a!i2_;loT3R|4>7n`4Ipo=%_dOrZcdp@@*w1>_TKE0C!4~xW zMN4MKV@+(DQp?ebp^fR^SvGa}b*VK(u}0uN0zljxNOcAE3CTps z_ndtrL7U8^^r3mdE{du-{NU{8^n5=bs9B?aJK#)3g6feIx&0zgWz3v}Zd^5-hgjqO z_QYYZB}vA3R@whpz=DkAEy&c)lV10m7@*do4ul)c80OH-uI~*+Ivb0 zy4gGp;@aJ_Ps8#|nGa0K)X=Ol(_qhBQvsdYt-=HmKqM_5_*ch_1i+chco^6^ubRs$i*t zAVqojj*L&Z$xzz56eH*U=8yjNBekc@gt$YQ1-M2X4DQQl^@`l^v0xj(`HoD=fW@gg zKq|EAcOAofvdYtp9UU{l=JYyWNYbmN3H zi6X70M6t=cnGsu*F}R2aZQ<_N{J(M`JX1q%eJ=A_*@a+I1_GYsb{TwX3&OgzK)J@` z{U#{pHif8UBfw9mr-l?sAOvxxUOhc6_h2C~$&s6hQqUib5hZqbYp_?^e}LcyX`aky zXBZtkX4Wv?K{J;o_J@Cu;hs}V2hg<<68X~eUmn@Ik{wEAG-Y>4;Jx|c3Bjb#vz1Dx zD0fn(I^Dmc91k9tGK<;Id$QT$zhL*X*(Jz!p@K@NdeC6;CSoCylw*g;c8JNs;X#^} z>ZMdF{6B595XEFdVm}tsB@VRNr5qoBH{`rJ+rIS2Gvr@)9O0H-yLRQ%GhQ#`N5-k17s1UZCV))bH(D3G$ z@txaKHTgX!&M654-`o|}YvMPy>vxqlI%+uzJc1ru{F3u0zli)}-Q+tN8hmUmqpW_y z<8bxswFBuD-Y4Yyt`nJT2{{(g=^3+6Tduj+?VI9}KP6-t`&T(5yr(mP&EO95A>Gby zN1QBo?_t8;@!g|S{5fT_!&b6aSJ1atyGj*7rAp2uo!4$FC_n$0G)GI=c%B&TicFAEMS;T(C&4e^ATn5JO zwy${WCuQQTwrP$PY=U_VT~$ByO{%9j1RKycJ$W8%8Gt=M4-y5$p^e#=u;*ka^`$xl zV#;-MESTd47(GBmHz%Ddi)p_D6F%Os4xH}=T%Q}vwlpw*EvVP0AV@VFhrDFW{P=G6 z_!B&7QK=cLZMdJQ_WU6&X2xJqN$8k6JXj1+dUq_`Xked8c#s8}#&CtDmVx3)2l#rG zT_sU4iB7uW!?sVvk?aI1;&A$&B{Z`_!ocv;AFtI;S;%Xcqu=y7%!YJbxaKYt+Ms`K znVu!Wv)LPlf{sf3H&KQ%YDb<6yDhdF*g4C;^2oaPWk2Cr&8Spo0N8uK7q0^D=3G!W zKT_zp2M&>&jucb{tjw(0wwtAo&I(UKZ{&vD&cBuO2z6CWM@~lseDtAD+1Q|dVzm9mLyVy5gEeh`uDLB$AQC>NBr2K_mv)B{mBVs?JV>V zT&by;2~{FvmH`Y+Ul2ruXkWpJOWQi%cfijYmeqI+eePxv=J|bZPoB~D-mqgF1R<}T zpTukIfkei8kg=vhG-J)M(S$-L@B9A0;xWpJULEq+j0Ql`RlhAoMcyh&v2)9dFY&?d zHp6Hpo5E9K6g>nHreRXO^dU_1nk`hX?i%MWyVFW2#>q<$IStZV16=145h(gh25TeG zU=BiC$!ol_H&CBCXiJFP$ldBSn%vBPcHeU&Nh}@us;@f*-Krr>kZkI}==@CP*3Tj%KTg}{ zF_YD8`?QHVd(s&sf+8oQ9;jhp{_{uZ|>?0#hAlCW&N zP`&xtqOeEIkxp^%cJ*L8{JYVl#f5Ij_-7lOu8Ndm@eJSYH=rBdG#sH?jp~Z9G`-Ob z7OU>oZK4zbiXs{}rNQ(9Xwx$A(`V^x3n+HI?5+LW{E@4K(HYceh7m=otD zdjuTYBHXRnT!#g&B!WgOJE=~>JSGa|vE2YADE6ub42dn!Q~=I1IL9sqD_}rtAe8du zC0R?TvG<`;|Cp014Lkv0r$ytuz$nRsJ5WLH`@_fSF5fP~0%6ESe?>hiN7VFct4Tn; zHB^+2)ix+^v{HTDQgV~kIpbA#gE@3_ zewllE4<43yX?rvwj+nhVP=?1^jtp|GWov*yKs{FG?(b;rf!i8=4-p;*>!14X%htiv4!K_=@wqq(k zo}^>WFpWSJea{bDz4e zlh5PztFl?1`!)dDJ>|Rx_%c9{Lg1r`mO!Rzi;V|6tE%ZFi6?yYSFRsu-X$7bB`|P` z8ue?t1*>sp+BfD(l+7zQFVsi(hwS{kA-m0|KfKrS*7)h=GI*eIs3wm%2w|1XbT=QUyV-{yTcB|>OA z6wC99xSLmkfnd%lb!CF)2oTzHv(aq|{n>B)u$XtaN3$s(=N6d{`jop_@StE>TV7#Z zrk?PTHZ{bBlE7$e3X|YNC}(X z81f5;XUj*j&=K+S>Cs}C7)Tu+DM(7Z^yq!_94$20j|m5NtsL3(J-@p6HG2ej2y1v%dy5Tn_1Zp@lBDTkpA%xMH5NtqwV>5ABt zi#1vR;eRr6Q(!IYh9hHw;f<_&EJkHw_w89KCg0&*_+C>uJV=Ej#hlqRl`SPWzBN~c z?~k8IhUPm5DU+sBHR&sCG6YEG!iEG zLkb>@tjq#tl^57O`9hTRp4m}qj;!Nqb^wYXn+h5! ze+CE~?AJW&z>Iiy?R7-f&LlN7{pWq$oZsll-xGT`#6r6FOt|0<)cf;Gv^^e_>9^GM zsE|}lGk@{GyZ^rEKZ?)uSE*ZR;Rr>qI?N0>jSa5|^-CWs9{$`5Y(Gg}S;Ng=_YpR=+T(@WbP`_|NAvI{uFQ1hQKqa*NFfsODZkZTNw5p#}g#YopiFvX;JOO4%cyJwUD{ zXg+N^(EfS!)7ZQ}qPK?ZDbl;GSOqC!wTJ0oV3y5sM$)$Q|G!>_+E&0r+Hz`C3pdx^zKGqnH18Z40=u4ht8|?7ZGPZfe zn?Ur6ap!?k+S0*Z_Q*)4_bub>E{L}MywF#oB+=I;9~@PF+OHk@%1xJ2v&o( zd(C5Ap0_(vy%40Mov5T^=^(jMhY&=+`3Z`S>(lMbea`e_x4OZ`KMW*@jIyFynzr=4 zpOV&x>Qdqj+zC_T&tS1yPwm90hi0W*9h4ux{v!IX-~3wXdLWkDknSU;KSlpy->4&p z!!}sBz`UUHCJNCxpsNV^D8<_yNPzHy4#sQ`h00wUVsk0XA1e)Z;YF)4~$V-H{)_Ipm*eFP%h#Ez<<_Su|M7;HMrrx+TmV!B|AnmUQ zDRKMsVt~Wtv+N1#UCE4Sq&kssJ4lV(1{3Y{jpM*+ve(&#z*?vq%`lJq-0<&aHnCOg_3 z)}np9R-p(v(u`L3Kg0ha!2RJO5$1Q@=3^pWKl>*GUFYh>*1 z3;IHHi?3A{%?x!WuWyQY>OE>Ok-Ke4CAIlDZP&HP{1ZgRT?m*3&^G@H4zThf<6{zS-uV@-VHu^aNHFs78#X;u~FP)xBj zYtP&@q)#Nn*RZNHQ4A5J<<23_Px81^7fft|zWJLk`&Ae@bs8_22PKf#y)g+lNfZp(nxZCl*Ww(M z`VS1dU3-!}hOC`D(C;hfXhGz;+X2mY=3B-jh}aJftONd2?G!uw{W`EDMn%;o@Td(4M9lNb(gPC@3OU3djICTh-K6XAIjTJ+UAubmB1(XM*nV5Qw(P*C`NCz#M!;KuLh;oRzldosWhwtq8^FD3?t#h-)_L3%jj#O$l#KyuMxRJg3KXQqk#EU>xN)TlnJByX@-&=auzdx>zd9*QC7ZGWLF>8;_x zOP>+Mm=?`58f%wClr<1yGHJYLipT8)~<_zx|4A*^rEqz^nf>jhFtmg)>_LB21_8 z=pHB@&4bUWiTgP0ynw()1c%c{Muyy1jpm7E9RfOvi%=Q0pL|+Y|hdiU<{+ zH25z8b?kp{{_X(~JQBm+v>}#l?c}VrEVbmJ{78KU#oX^k)AHPYyh9%0EZwK~JBt*A zoJzM*YhFsp$ZSVHx2EA%g7{cRgFeNI(fFo|4Yz?>0g!~aw^JA_UK2X-y0a0Au8V&G z!;w<&Y9dX)sJ&;|2$bk9@u4#rzNDg%_!>g2LB35{Dg*D`t(dQ}_=#L#>NT5~k9kDG zKK**<5pR5+-nOi3$6I$RY2M)qlrhtXI7|r7t@o0_gXK23GGdd~!_k}5Fg>+;aeYkM zF?~8tj6Z7?9{uyH-7q}G0gFHi-Z5Sr3bs8KL}wk_SgQJ&MFA>E zw(3EAQQFR8mj^}62lJv*pb>^H3$r?spy#!_h7uhk7G5ARaD8n5s~lT2`H6=-l84;T z%dZSYk4jI*m64)z?Qms4xPJFJ!+Q$E&>u%F?L08+-hV~GL6o)g?)dezHuv;XUgIJG zV=ihmS2{@nx!_^{3w_%_q=04VPd2hmvBSo-bPd8sBo@*3e@iwZ(PT9ZVPnkDjH3~} zvzF%7=r5``4wP$@*!_}?Ui;FPb~u>#GTf716)gY7Szre{@W23$#(Dfn+mhI0Z9o42 zB*P3(>lV_J)#QZu1hX}ilq$^YGpOTRc+b^@?;4C!%d!wZP@0jOI)~c) z`g&>hazJ5l?(^jekX)!8X?FJt?`!!{fXf4NmCu@l-ZX&dv{?Wo4Zf0r2=XaQ zVPDce8e49?I(wI*prm-e=1OFp3iPI`!Q~DxG=~9$22QJ;CHU1SjTJ%Ut%xid6$tv; z+>lVnTf>x)Q-6Q$M1koG!|Hbuvj1gR2 zLa<3Kc`;aYg!%U&I*@rnLtOpy7ax${v$;cmN+&03{N3KX9fC1*=YCI&rgzBSS3h^# zwB*U$b}&`FRv`^0+X%SyX~9qh5USC&{Zd_-wXI|XB>65L|8@E=!3@UVuw%I4yg7>F^%tzY8962Lk-UX=QIQ|2!$hb_>35m|l*c)%ieKh1w(|gsQ%E=p2qZV#kG-8v;Yae(O>+{kK^vvOVgbkhp?LP;15y9-_T1~OrQj2EBS3&+t!xpJe~lkF4`!5yafeZMys7HvVA*=QA&-D9+2xA5f*OanJS1ljCe5jnN@ns9089&ja`;hHF* z!KXf>N9jqE{qv;e5v4gwkh~%$U_f-aAlof~68LrHy&v-JsVSBpD?*GueNkaaMdUu& zZB~_hNo?Z*hL@EiuB;27AiJ2^#3RN}r8BUDHwhlsAqmOn&-m6rgnK+QKw@W8uygj3 zD3Eaq10V<1PlB~1P-8gt6x>#qL?-=iLPmk ztl4_rt|gQYu7$^m4X*o0#y_)B%^zF$5Z*9tB*K+))Of>7b$2vHEJM&=z9X#D7Ea;T zg$qb6Vnoah8;wr>=PNzQoAwPWn1Rx>LII=c=W)we-cp)7C9s&&V^LYR;LMb#c$XF8 z(gC|Ke=R!$xg+&!^_LEe20%Whmdk6IAz~{kALtGGszOUv z-Z&qxg)aj60lOK?si9ce%%hu8CW~GvA_<>}l1N2^9CwKV4zmvJ*eFr!L8)iZZ(*5()I#H*2NrB}VY*te=O18h-;jr2@ zu4~x{^Cm8inv%KqFRsf)KM0wD=+vc}L!u7uY-{+k`bkfgFNyGy5pD~nEpjF|9x*i! z^HrFkM5@diGCsXxzHe+OA_jT8TA@+G^;E{~(%=?$)dYY-vQ8JY9o=fK;3!t28<<+G zuHWSMB_UC3DisppyPu%kWG7yV;X;Xv>gVktIXu;cd37c0b3#lv4ve-BPId;}azcZl z!a3)@BT${r4eM7~S3VG1droax7g=AqH)UD}E_ndmL#-2$b-3Os zBY`@S;->-a*(pLY8;Z+6o7UgIn2`eqcU< zj0rZ++)*3#w33i-m+l6;|7`Mwtolk6EHxt5DYu_)&E2lZlWF(oWk$~ut4i93>IL1X zZ8MjM*HQMbzqRY%12d&7q==J7>BxW~zXRzxy7f5zGC7WnNOCtXW!9JI>d(x2^bLck z22Zr{zZpXJ8>iQWvi;gY8@^s-?(gtPa$J_0KS&n5!h^w&6RY7M(D*=*0&}whA2y;9 zDNr#I@iqS^-Ci+M4X7*P>#NiS`E~;(!%vK3%cwP7=3Um)0Gd=+<~jm9iO}MNEVLE{ zmaE1GUHCjZV?D}8=3%NgQ}Z+CnBv@e3Mm%aWoNllOj3)9*lfU&Ih z<_OJy<*Bz<`PySKCm9D|=s(RD6|fZP_U48gIw-uqYUD!CvU&$d*eM*n=Z8L4&^ zBEkeVf26rZ0Gyj{?P70{kuxcye!iO>cyR_nlq>{y$(h9toBt;aQnvdsjZn;WsA7IS ztzK?kUl&v-P@*&&rzp{R(Uo@CO|s0Peg=9buB>g0ZR;=UH3| z2!f4T>sR3ysIaoqCV;{YjG<%|m>m-Q0e?fIod1Ytb!Xo`G{1VQh6;U)*yuk$w$70- zO!R& zEMILF?pPC4R-T{VU(u!g`rqX(JYAGdruI8)&~;~XNj*Kwb5-g$MJ^~mhlXfEbso?b z&7BHS33&oUyyHm2TNE~klkbQn`Vpw$h4@4wYD9J3esfy&J_KE`b zkPu@33?Q>fI9C}yf+B1!F0bBPeTG)BHh*+D{L@?vc@0eEtLB$%jpV@ZeR&A7_;nTF z$(&s#tO>*BEle+Us3kmjlWF86`wvL&AKZ{Z_3J&`n?C`o(T5{N#ZCea|LZQ?htn`m zUxhm=-$t)f{?Hd2i#(8%SRNa6nZIUkqtxQfSDp_Zo-a=t3U>nje3>nnazDkIlJm9_ zcJM`9aXY#wlt7aTzL%hj)EwiQyB&v|d%bcK&YRQZa&x&~e4rZ1PtaHPI>ZnK?+dNgvJ|Z!wF~l~_82o)cDy6?=h{4ssLD-4(T(Fv@r^j|+US_Wx(zwk1Y+HsFV;%r8Fhy@N}WJ`rdI#1 zIp<*CDXZytH#`1N3ZC*i6S(UsQiE*vx23}}&Tw0_C~kvB>)AM0*)ra;Rr`Y<6XoWg zyODVNl|p`&&ddlv`dw9LP;d2hl{xFeA}&eLz)b<_gfk#&XxNN%zyFYYDf#5RvG%)3*5 zUXez|+mcqi`k1cI=GE@MWRM7O)d&aX&(rRYhN8(&215(cT!4l{Zmi&$ZE#V2lzsh3 zT3LJ+EG1?+IazzZQJlA^8LW0_9XX+l(uEUF()_tZPnq|BhNAppM!{pJbHs1-tERaS zM37Fd)jc!DNZ$d`p?T;GZfIf2b+abMDEbUsAvJpPvmFl12>EE9qxE~QM5V<&8c6ok zLuyCnuXpbV?`6i##fD!xd=^r}CoYO`;TDAxZb5GNt^XUb=CY%n0zw}Lks|iD*2=?Q zIJ7;*+;W@4t(0pNTw5;^Q;bk^hEJ#<9lf%td?`!;;4p!bnKp|w{($9DJHGBT+57L- z;}vvydGw|ILwUvXg)4rZ^bd`RM^P+~0|8^I-Vf%(_UW05h8V6?VrD(0(U}x8$w#~; zg&ekUE%YGdy2I7Z@X#hcR5ENAW{-7!J0tu2YExg}L8F4b8^k zl^~etOHW!`YW{i}TH9djzU|M1pxY$V%cx-zVw_C+(&4A?tuz1qL~>XQlOo>1dD{j^ z+;r9<^^VG`Q(x><3kc<&6gq}$gdKNZrzlo`=?*pBeXBsFHkyUy%@e6d-*0m)XkUEn zVQQn{s8)DOH_IbOOBS#8uc&>0EiZ~1gdZ@VR-xfSE-$9o+p#zg}<8&9Ys{z z>3$z9F?{a<3W4Ny|8*Ox&A^p#Y6pU5jmYKH8g95vJEPz=syCXG++}hFA)FO=chD$~ zj_BaJ#PI;R$I5wL%%V`|o*uHf8pS%S?DJlNzbor{;IyAG47c7tJf$MGY!@7&Y%I3Y zDJ~w(mQl_`lq)_o%>xrfi&YR(CMW;;6WGuDg>MvDrFAdR0Kid@-!^64a^P?|)GY z=vVCqp}CSKpGHd5hRBjsSv6-XCJK6o@MX2FQ-)tMpZwuS%*WTB`Mhaj**~7U;_|bh z-{0m!zdyV*!FC66yE(N4N}x*_RErtQ7vptXzy#z+@~VQ6*S?mFtH~fExYNQcEZK#7 zEAYdaOdfKiJ;CO^x0iS>;|hj8;fd%caeo0YHSJS64rRp`_#5@xG zawhr8h6gn(Rk!wAa!AcT*mAQC3Kv{>S6qk2*1*}TrLGf&Rb+w(`+VtqV2}Tl#`CE) zi=TeMay1M+uf1v13#b|QT5@v1SP)p!D(lwgFQ3T_7e7}y&5#-QYm@D)?%7asPq%L* zy-iwi@pW>mjrRU|a&I3uD*MH=w*I#-X8jmbtL!UY&!%GqPUB>Pw^7DTOqQ*OCbS|h zny;1G_^Mo9GD9#^VRu@R`SAj^^YsN&u@;cl#lcxsT~UyO0|XV$9iZdGe_; zl1=^^VERe(LVD?p64CJQ+|@0}l|0Eq(YEC93kkeY*g@~*bHM|!AO#+FBz8()-6ak_csplT04EbpEvWMjCJd%$h2 zj(!sxpwW6>ZZy5q#jDMgoo{38;UrrjyVOUv&iO_PV90o*82N8mH8O4YQvB!8su$jO z-zNO#{AnjK$>+h2ugfju0AH9+%TO@U5<5-8ZT8_thrb!6oLo9*Qc7d;?4&1N#U77q zc0zLIlWYYl{L9Ix;$avjL(HQvo%MVTl8>Lf^^ikKjKRBEKn6_jRE4Z0m@Rk+C}e~f zuB$5q+y+SkdwnSgM3rMk?cd9XZjy(0szn3;8)|lE7u` zz`5s~-P!-P9}8g#&J8bEtREl5ReY*!T;>4BmzmVuCSfzIdgLTD*P)}N*@(HKj-u`Er|KrlAx4K+PU?=do8O+%v*;u!g^63$KN(ixqad?&8B41yP7UVI>Qp zXm`m(1T}hvtehmnk|^agfNnF;ChMm7@n_=lz@I%mKoI_X>O<&A2l>It{(GtZ4_T0}Q&8R& zOYr>k{XJtArjt$s`S?_ouNqaPZ>*@IiK5?FYion|=kA`LmuAJUbSj+@JM{38O}JKG z-b!p58JiiIx12Jl^X8~_%NtLBNk3YVmu&n~Uf6pi{$E{QMhe?1;tOG>D3Jk4vVCdr z+OMPXG%L@1=8Y?qS4r&$V^nyc*A05@JOr%?D7=_ULtKy$PFu&EGDWZmP!_tGWQNTb zin4wo+iJi1c~a|~aY@s>YKSd*vg6J3Z>i=5Uzy&KXf^iSb2+it{I9nv^=~zW8?0He zar)~sPN)R+Z1b@x54M)%gO`P`!_rG*r0n8qFcjU5e^``|AuwbAt13kx!V?^TVdMtD zhBKwij=Mv($c!362PWNiD-G(mcjeL4Prq~zO5Ea36T-)Z2JyNA%p_mXL8^*FyAc2k z0)bG&7!3z=EdfD-zDV+dTY5sjlnIpF>!H!j?zb?3$BpT-@jrWKIcYkUc9}kh=}_x^ zL$$Gz?%I)jtKd3Og`?k4Fs7z{zq)^SVmCp+!i-Z}C(@4h<+0}8B?iJYb0K()*P5QG z&hN#*@@-{@Vc#8F~72DAd);XiMmW7maXIn+)&pmzpGkQp+>Z~qu>dTTU4J7f+? zJvna1v(1Lg1dSbS{itsW=)LaUq!)GQNi^{%%!^!@&5dG3g~en+v2XUlqf0rOW#7eZ zUk?1I%S^hwhFbmJ>&I_{U2%gxdGY$@}G&#(xY!xq6=ytqIT(}Yo{jNetyWU?prLkOvY+Nx8_#(JwLk znaEkifvxk#8$i4j<>t5@Ip>h1u$y@@*x{*ikw8-+3d&e@T8HbTKNcwS57n_?JRLj3 zl!)0$iV!bxp^{)RqA zTVT`y$b+B+Qp%zhlv&EVvtNBevJ|QT*VnKJ z@xM>95PB5BYxtO}Zf&##Ow!2ZZ+{(b=03wi=@MzS@uESD=3g~@?97<}uwF~ua6I04 zv2n}V{#V6yR`KuN55YU^G?yIHAnD4s3p@rdG+BIV@F~!i`!W%2&PX&1<4L)||;RArXE`Czt%b&9u_blQE+KFSI zrEe@2(Qu}=o1H5HFZFu@Uo&C{ibU6kwoRP>lHJdrGfWyuqT&DARK|_+8iQ!PZz9!L zr~w~FcdPIJbZ1~Y^nP3t1I9kF+bS&q%|-9r^wu-T5{@aVywrc}11a&;S_1g= z@ZS^PFOt8y8$ZkBTrL91#-6zC{97W*vAcIs49g(@b2Xn)f#e!eWGr5m1`b5O5@NU3 z8l3aJ`XvflN_Mr#4awsVsR}i`4+}PcG~{aJ&Baf{gJHVg+AWAKVmt29JmRJ=Fu{K0 z>-i8F83zIJWsIBp)YK#tSMcY-w=EL)CUbltyf`B{u8c3-PNyRxeH)*ff{JxvY;#&Y}$+WU4JBQ}(7aAaWGCm`k^Jflo+P+Mb{LQ`RW@{5#!06i+L3aEp1(ZOxXfWS@ z+-Pw!&+)XPcUf)BWBQ@Dr|oMB%c)0qW}9`x&|SY?Je>XBuk|hspl;zb=u>0gTWV+# zqHuzRG2U2LV((F#9(A8aO4%=)-m)&Un3Zc&v!=kW2L{l*3T+!DT}e8`*aw9wFA?1F zpQ^s7XMVdm2BXBu3dKn$m8}|d=B5b#mCr78i*dAbX;PCL9VPU(fkEKETob zu}84PzzjC@vxhd00cmC878kuJ`eslh>~Ku2UTD5$o;-eF@tA4CoF{*w$3S`jvk3z5@O)*QozJ*v zeE;(_aOx%LPUcJoXI5)O{~0wV?`@LH{XZ4}{l;PFsblNQ-R0P3RY&e- z1sknUA~+R}=A6m~djvx=Rsc4>{kaHexkk4? zhbKGxxjQ%0Lu`8e91ZS;@xzoUQAx-qZj{Zj~}o0UDqQ60MW_c&x+py zx6b9LUD!$a7}EDHjg=W=O!x^hZd>a1+bb;>X;D{$S+sJE%f^NYB>W7Yb6xWTo2=h36jp zKw@_N?EWh3+}U=BC%F@*gZKNWqD{&kr$RzrmG2p1%?j>4$VgMtUAF=s1zf%J1DYpE z{|l;DPNOEBE)?22YYS=&J@bD?8-203O?=FwQYMWW?s|Ul4wmdsZJ3)IGJhpPXnN&; z5i(tMb$oCo(46le=K}Wx{fj)5lgBmR*>2K6N=;-w|7wB3CBAc#7gqd9Jt7yTd+d>& z9GE4kuPflfRM4+$M@xn$jY9Cg;Y@%uC7CrkFd?sek7pf8Mr=qS5FQ8v4!ar&fQ5En^@A|b{FpjuC+Fma)b637e|6*U( z+bZ1^lK4AwjyWUIirU@E$e=&~9#6_j00tx);1A!~CDBX?yJ-NOoIaaxkXDu@#6Uvr$e*^@%;#-0S>QX4AHmPNg9@uh_}2c0j+1s79+YupUY+-? zhu%HjLhiSununT^9-cv>EH~DF%pQW3@Wx1S=?@z&O{-XNw7}_>AFr)MqgebCyhH~H z3BcounI-&LL2P4SZG3+JBV!6t7JH7FrymGk=4h5rcT7H zYLT#*hXwBF&Pp4CynOA%1`2My>T@#OP3W(cj{-H}O)ot&GrhBMVHiz)9nB?sYTbTS zOm(n8ng(xCK%kp&%FP-50~*usHefca+9sE4aP)?-dHbC_axr;{HLrKXz}rW?pQ&M_ z`;1Hu;7l;nml<-uIEYD>eQ@0@XSJIYYdlMo3IoLfj4c?l!?cSXiV79xK(@e{8xwhw zlMu8q7dL0H3@ecyELBim@ZuuG-@NXS-n@oRj$DN&c&`iqp?`k6Z+{NF3Q0Hx`^5x& z%jG$;uWW>~?R|(q{lJ-2f9kupbw-v6yH_%sz#wwT*y{tcI zv9Fm|ZmfjyCX7r-*@)1^*)0p~dzdXf{JIzt zz?{AS$&4<#HkS~F*@8F-cCcBuoFA<G?Geo^{tBs56CNx&x-_`X**1T98#E(MB9eSH{cbr;N&Y5V>c)QXMbu%gL-f1 z5-I|vZxpTZ;w7u0rDXdIH}bsy4sk!s>`6R%`&dRV37ySU*v8TiWI?uM{Gg+bX~E7DmrWJa&-!M~`wyx{J^UVW+%NyR1Ta>P8V%+uc@%uY`TooQVd}i2+5W?~ zpF|=?Yt?R$61!HHAc$It+M^V;T18v4_6(|KW0$s8ZCax(wMARCYt*dP45Abz_Iy6y z-|u+T!*a zASS2BK)A%Onl)K8X;Q4a5 zA%PPv?aA*J3gK4PRIbZ0k)@w`1gvWhe)c0W7Swa9?Q1y4L`!M>gOiE}|I;KfbU`KW zf|EvGIyv(N+B5MYTA#0YhCu0hjo^8M>KoP0 z?AxgUu-`gFnfFU&?|e#n27Ctrx(mC8m%g@&U16JErJ zuHK#JWj>ZH;vcNuZNjdNu1wjpY0Muc8TDx+h?VLb8eXe-Zwce1Qa9Vd*NVO}T}6Nl zZS4IDzdtkyH&$2Q@5oLyN-BL9G8LiLX!FeHsweM{itc)%mSfPvg~RxsKu5^+zLj!hl9-0 z_B{CGL8yWEF>Ne6p(k2??}^l(Q?I92XJQIfsp$%Wtf=`H4-+_az3hyP`gToSDeiNe zmeHuGl>f;iUuY9jyaX5{1Y;H?KNm6~QX4&RD|c6}c^=EtX50j)R(3M!mP>ay9m4F` zDoY@0Fl-7lf04tsyqsy9FwJqyN45@8G1Ec_XZDxi@B7^WsL!Yu@%bS=tlbwWJsU7! zzTeM5L8gIYgIT)ZA-qmXqW7{?ZTU(~fmA_l^Hor~BH9+wxj25{VWZiznDCqM0^g-S%sT&Be#G=5FO!mL8W|Kc>)Vud@>tACw%X@y|d!b261kMc*oUIk> zAn{wcFk5;FGvav@CLKPs#G4bBhsj@m3@S=wm+{43zeN+2m3Y9HW zr3LJLMh3nl1}+eE$mov-z_a(gtim1)9*haZRKKr!XMUc92qgwX)0XoV+}DbU_|2RD z_Ri8lDeY=y(cFucvZ8^TdDf$PSq&r}$o(i9x6 zCL6X5X#G9)%NGbbu*F*zNPtmpk8I?ze)>xO!>fCYQRU8lK4;MH*fIZ|gHRn0Z?h0cE6V7tg3K@G?NyKX+*?Ku}<%5QO29xxxfukD#<0XL0{*HPjm~^7n#V=Y_BCPHAG69JJX4x6OPp1mkGwjK;OLEe zwu_%L-G1&80kjKFYBgqijR;GM^S<4Q5&&(5=g!b1)fgKPaITd0r%H~nJw^cK@N@wz z(;v3k>{`n#Ie%{!Mb33nsNoqf8BZL5PFJ9Xl_V>^DM=m`MCbe)x%bxN*=ZkuL1T3F} z&gzf8fbk5w=p=2G#1!NY=7RB2v%Zfw4vQbBV|VZ>VeR&1%PR7DY%BD<2b6o~1b+gc zQYRbY>OlM=M!Lp)_Mvh$^2a3d?8$AuzaFGz%7-INx&>dVq3Y@ky=vmsfIUXtNui`d z5Stn*Z@yQZah+S3Wx?eaSRIn33*!a{2OzAFi*l7mt1E#!a+TU|v{r}i^+l3(8AVtP zb;5Dn+E^5g^&EO3h&wwdZiH~{ZbD*!ByRX?uq0<;!1eYQk7F8ytu6sUjxV`PBk<|z z>q6Ty-rGEiq5|WIv(FVJeg3}i@HU-q7AfnK|9RTdkqsS0ksB=rUcXi)=LfKM&3j6A zEoQ3%02SXWdCzIWENlv)PewL7pI`+2)4)&S2z=(PtQL7rk)YJv@oxx{b0{>f7?w1l zKfnkUg_yT~O=U(#^^P|A5VST^o$1FtE2xEyD9_QAhkJO<`O!unjOCxtbEV-kZ+!M5 ztTq5ultaMK8t3VH>4R+ggDU_);$OAbg`G>+38}2}CCNV5<^!QVOFr~<(`{Uz>MMm- zF;aaQGC6<79E4-XRX+9S_hV^?V2CCI ze^kZiZz6~x@@?uDyLWYxVx1Vbra;$?@LPVo6?2;1@jhQqOanHJwxpse2AxS}_?4-~ z=K#hc-~n*`NcISG!oJzp@@8FxMz8Of4!c5^t)7q>KT9C2kixT=LCT_Ig0yH z3or<|k;94GQY$q6*9C+Z1!384w6Ai@mIa94urpq6E2N8C^_rqdt<>WBI*gwAZw%r@ zz5s-Y4U+3sNATS=Q6gYGgq!tR4*?HKI#&(V`y|=7r$m#&J}VB1tzYB;2pqfH1Gn{` zp{sHv@=VhbLCJ95KNy6VPXqCo&sxUz&cMOGm`ax`2Q zn(DoJ1BAD|G&7z~{%oF^i{|FL3D|S$GHgJBwMh@Ff}n{y3+h5tBRpyFe!D(|c@Nr6z30uT?a2 z1UpfWFElYV5YwC zLgsTo+;i`H0>eObqWaGdQr?WJy?V#@*X`{^It=VbURzvi6@U+l&b1hVvbE(xdjywk zsCy2_-f4iWdhpDCI2_jxn4shy{`|{%bJ?!useFbs?Y_OiH|7(@uNvnDyGHh^zgfk2 z8IAOQ=@vZfhQyX$uD6cpf%H3;f^g=v>(6VSg+%IQC$hX<^t~@tZvtXl@sYfCr|V{4 zlq^IOnlR$or9jn%CZm`?3)nv5gzALLUrB7_Q!N-hQh%Azf5G#u`#qEXQ0tf{pk)5& zi;3@vt9$p(c+!E}-*F!Vxzrnl!5{zo1XRM+ibE#+3PD2@&;Y?!lz=i7TaGop7YLa0>O-N#o@?|d z4qy^lH+uKHz+Cg=@!RCim_N8}NZY`@wBcB>qRR%(4Cik0!&2(6TUE0%WNt$qVuj(C zS?>!@6q3=ixF!2GFRo&Gh1 zLw%93l#=QG48O4F2+&p7i-N2*##)!>U$>C&IxU9J4pNlMF74XLg zexXX%YQy}EmUaC)T6|d4Y$`#swbkVff+{h>XLWW0!J_)KYoj~|H;(S2ad}yQpHcl0 zcPBi0+Pu$`1M!el8G8Yc#cm<3!6>-S`;(j+`Th)qyQ>|4m-eG@jEA`gf%$I*adN8G z|J)aD7LX_LN5Hq0QmElW8jG7bSyCT$8z4MVjQ@_CAAw73IUkb}KE1ozCqsYTE@}HK zx>(h8MGwQPBzlJ;)UFQ3l!B6UADa=9T(d;MZ$5o}+UT_wO`g1|^paExR!{0glsF&# zqIoSQPn3;0k94SUMOZ-}TMWeiT65+*f!@zFc0I}u7MpP{R%4iQsIc!9&f%;{I!VAozXJQLI>;e~ z)E`H~Qzg?U#cSKAw+3F5yL=|wFwnu|BYa!t^#oB+;sM5)RJm9dEM1X5WdRoZ8Txob z#lTu+$wzVSRBx&(E4S)!FQ3{$x$Q7bi__^dP}%tHSx6D?6knTet?Z%9GQ({&J7RG) zFJpdHX04S*^k4I6Wojml4cYYn3JhZi`BhnY597LV*xS5DA(bFz%wLLjT%~sG&yYgQ zu4C82Gm?*OgQ&ZXJ{;7bC&-g9^Q_36g6ZR2ZPnviv&A6j>8pI%H~Vkjs_@MQMO9rV zV4TO-zm(DK@Km^J^cvgdw>6Y+g)pA&oO6D97C71&6F)-GQLphkxpFWS{7?M;lG74j z{XzVP-zG0fAUs4-c}^%@lXF)1ol6}B^S|)hbO)a4kAptN=V&u0hcz8G9~vGS-C5tN7O4Eh!!`3z z@F3?M)xPf#@~tkvJa|Cbgs%i?V6RO1OkH?nq})5@kFm*-&(Z!pntV*04Va9}(PZ{G zoekrd;;L|XbS+EUT91rN8#%ge6-rtyOEaJIe!8{etYEC!5UcqXY<3a@0pkt|CwiQ9488N6p3ow_*l6}bciB|)HyWHD^5~7uK=?LuTzCgeT3~AFN)9eLJD!%8XyJp2=>b1&M1rh4I9kJd<-%BHz(mPxN)VSM_uw>0(17vHzvdVVn* zBb@0i|AAnv^>#U$+-wC#KP7)%1=;{!#Uvd2!NzEnUs337m=nRO7I?oA^bsNnl!oyB1P@@J>tpLpij5a(t`G;=;Tc*sZu81x)xh7mSBew%9~ zkEdw^Q&;`ij#BrW=LS*eu*i>Z(1Ld#hF)NdsX_0HV8SQNO>EVaB6KQqyCb)HA?$BR zL-s@nR*@r*^vm+QIgOaTwUJ9k$%7o&$#q*GHiU*evXz};VN=W?Vn({L$DExC^t`w9 z7}@y*&`I>0f^EeY&^dR^w)g}DncIrV%QAVxa_wBRS>ES14|4Lbh6KDeYwoJLoOES5 zEak!IprYiQG&jFmj{7UoXWG04Mo&Bh(FtVd8;Q*4Gp_+snDOuTzE&BAiF_iY81<>Q z70KL7yT>SB08qeGru-QG;o5}3NhyKF5AN;mnek>LhO)uY@E`5K9-VG zG77gR$gn^)`(8VgidGlA7)dYs$2&P>A461sFb7-H)74a3znlBst>b2|V-5MWDTMRx z&C86O@ynvXm)K1A`|nR$8rR(03c~O1%UM-vjxks*`EdmB@3L7{T@px)?v%ekczP-h z7g*TKj%H8r?8i?|!^033Ci~9>J_~@fz#V4QB~IZ&&sX6Q^$<`%7O3lYEl_OZ?I6YGcrucZHgx)!h`(6t zwD}Hed@1H>0INnmCj<`)KbHyR0ExkvE-~K&crRQhJNvOCO6gwU% zer;}V!O3(hU9OM;t*&KTfk49ERDbUZL&w!P-yri0_s@#gH`V^^xngd9MQa7!ITes)^}ZVAGUUa;Wg(*KjVM?!B+SxRiM|qG61v7MWS+7tPQ&rCZp57pDzt zi_KfXTgS!MEqQv-RppX^6okLF@+M5z;`#YfJ3hUCvojF9i>x@g=8Nyzr||*BL(t`a zYDF|3G}A%6TAR*Ujj;iAc7mG&jJ}d3#v$>(=p0)ni&@bEM$pxyy^L(R!TW8gcj3jL z?TPgQe!>uAR*9|et&!RbEciou^v%2uf~+fJA6@Buq=JYq$bezrMG+)s;AtZ-Ta{42 zP?-U~gt?kWOW%Is}13 z$K>2;Ch~qSNDiNF@4Y9atkSp`d~cX>#K<%E_lotH$aRd?uMu)!|3x>4!sUqMBiLy9 zf%RQ~v%=7$ZaM14#Ac`mne)$H<=yuynD6!OzJD<@mqD7JJ(th^z>dN)+BPkwI4c=J zDIUk!e2gL-0DlX<^$Bh@T1`oN?|eZ_gKx&178Gn~kiJ#YHM3q|GpTTWC&qRs92;|E z?CsWxYyR%t7Uw6*DI4bH(gUjnCsZ&zACvK0m{p_KbQgv1t1;6stH3uK3!U#2A6 z8HkeAh=@bY3<6Wd>rui?fOpp3DXg5j{S{*TD*E7oX*NlzKcCu39^L%i?8wi27<+I- zE=(b(D+(nOT&Z}4sq<>wVM1d-_n5O{Sk2W=xr!ci%VPiKPEn%v zt;`ZMzto#E>U2RrU;6-UqJ$qyv|L+(bj_h`^K%PCg4-LLv1B(qreJ<~{`E4+x&gvbgOaH zCy13AGJWRLfTA{3U+?2lEzJ-%fNPn;EI8-po*%-RG*WKORCKBZ{pQnb1QpSYpW_*^ zrOET=9rxqJ{((+DVU&lxfMUPY^O_HQ`=K9RBtD;tK4tGh9c0#FIdG6n??wh}DOSd> z|67S~6Q#-gvnlI5V-hRNmIx%@p zPE7!o3kCw{pj&!})CjlJB*)HP4=}7=zj6P~ zkqZ(S`#?}r>LIimE6?6s{_XV1?UAmp&LlJP&!vv*Ahsn`V|1w|8O@Li%8r)0; zY07y)wg;A+Bm+F9_aR0$V;^$~+TzIWZ<;$0k#3sib4eq0c}7jTFzYYPzs|#D6{O}G9e9uF>Jy#ZG{se>KfJ#ut%B*62eYQFkEc5>K0>Q`nd+6rIxQ`%K? zVZeRal!$pMDR$s3i3X<>=15@K=C82C?uaAHqT$1gpwzt6{g>S4p&V3yC+u=vzYsPh zOD3l?0dkG8Z&N$p!zS*w1JzEI4Jl5}ye61rn#Y85P%TGSTjZ6o=o+)Q(2yBC?7hdq zc=)^2-hn}%5m6r+>WhhGD@N4GUsD3AJ9R{_=4`RTC*i>HGem&a&;_ALkN*CN{=3BLfB2~-cNdj;6Rj(e(i*k_fr z&{OTgmLKrVK1aYOC1cvj7w77Y+}pTDB*mVtKEz(~%kggwIHmv56;dsA@#@0a zvzPUGKWnexbrnkRf(k2A51YNilLksMTF?{kxHX#b?S}xhi)NLf_ZR35+D(uI(N-}W z?Rb&pY!IygmKz@&fG4y6y)^rA;1ww69Ij^Eg7P!a?2haFlTdq0pd*}`^g7${;~Tt; zHJ%B_2k=^Gcicems*jYkp|Z@M^JQva@x7_Y)Ed7voAV%+OPtlt4JvmQgQj}HZNfD& z#@~ekE_QVu>(g_$Fx`-()%7}*__X9M+j@B4^(54 zztWe#V9K}JGT`Y}#hi{dA+N%&$f4~G1N+IRQe$bkRV7KjgVv_IYGG+dmahgDrw}R| z+|_gsL3|H8zok>s;aw!T;4wJ@Q!RPE=VKg5Y4vNh(9Dr&nI|{HJtC091m8viWS zb_Y02FQK{NzSEC0cm}?!FG*5+`kKf@QGedoGYaoZzLw0jNQY9Oz3)NF<$6e2j$<2M z>1fExJ6ePJAU>eEIM-uN%c)^WKg;nvR8kKqCB~)gQVvp@XRmo0Y9e`fajhIatA6EU^H$v%i40Rw2Gt;79X!Z^n>^*ofwc#C0TRXMs}8H~i5J z2XNB47}Jl)lw%bx7JMk_Vs)vmBq-72bit1VPO2s*LldFMD@dcAb=kIhTJD=iEh`03 zixHp%3%n}z-_!>cYU>O5uD7RR3sL^w=MNl1;$A_LtBF1wJ0Eg1IatK$`R}T=ybCje zX&ATBfd(B%7%i?D(Ibq2DIIdKh)5HIa=(+49|(>goLP8#Q|Vt8E6mQDp4w|d!*AyH zG@pSR%wnk#1de)O22OG_uZ*VEh^vHi$(>fL)B@%9)(Whq$&AELmn0O}y2%vh*)P8q ze0~CIxB}UlB35~#sAawssQ&`%*-WmWQ@idNOuLITW<5g>eG%)317+<@L9}|`rWE^ z`Urx$#EJZK&cSU_gorO;<#PKYV#l%`jq*=}#3KAP>|Ab-HX}+v8afd=B@Z(PYVugO zvMcjW_|3Ai^!>aDC{+Q9I*T|EP2&0O4uIff1)wvU*dO2M2*9yxib&UI^2C4=_2oYR zAvG!;MUg{C#&9-qLVG5eo<*1{X7Wii(-fpACDLOsyD$8Ly3;R#HSPrCy8zZsJ1y?! zRIm5P?agbGRSWU(~GU51!LA*w5)_5&8GtT}XKd1<_OIHkDVV_-ryJ z;Hk}_3^(LRRUi95mbT>9Ax|s*quE2DUjnYr4%Wm`S0lBc$$euFyS`4i%ex-8hNGrF zR4@W5Vjpetk7!Y&w;ciuKf==C*GZB{dH@C>G|QUWR>I7L62_te2>XpBj*CTPwpG3f z4N>9II!@EW-M0As1MDa7&6+iAQJoC1rH#FDVQo@Iv3Q0U1X>ZVBbe9~yMhZgv?iVw zFeT9+BB;_oa%9E580d$D5!3?lShkw5ELl{L(YYcc?wsx zn-b-tS{aixW<_DpxnMEEwMiiT2^-ymF$8Cw^LR=g^$eK$#raztK~fe`Ax&%{A-FV{%||-eyZOHjPWpZ^@Q}jeS;CV^|>HF zlc?j3+-kcdfHEGWoBa_=z(e?@$jz*nKrs%Er&h_ZxKDt@ax&qvf6W~qEKBV!CNw7W^;EiH+FEaoY;JE8tHNyQ?&TY8thEor z3w8j)=Ji#7iJ8^&{-(8U{gw;Z>{m~8vv1!e`DAEQubiC7H2APISQkB)#^)l=)Nv|0$){@|t_El9%>kjE1K#$^DBbBiKR~zujH{VO*I>p+LrS+|o7 z!V7w82SM8U?pos!j9ow~FX?B~4R);7wsqKs1Ucv8#6fXe;lDs>TVuSM1;q*BSIMKi;0n&jou zYf?#t`gl+(CkVmE*m`a`vxYEm@iE3JD-{?M%CPjlaLd)Emlgk$26ZYrm$~rC<7k54 zV}POrf3jrPkLY_D#uSYBe=<&}YyI_%2q}M|HQLaLLHjO(N(}uecY3{BomQ_H=VN1i zJRV7J`)_019S%XU>gudGjvNtEMs78LlLieqBPx+g!OOqf4<57$`C*_w=RBe?(5ewR zIz}g{1v6yvx&rUq`8LoAaNK97mO>=(N+k@ahGQs6MB-3V%+ya`%k=UB&p$fGfO6-m zSyrMswy-Y%_encsY5(QSxY%6Z)6ff)7UrG6)5TyRfdPT*1DEh^)zznB^`ive3vpg< z-Nm!4*~HST02x#mK+3#S5lt1?yV%38x(mVr8JD!sag4ZW&-u-bYit z{$QUyU^#Pp8j*tV&;b6_j*Mt<+K5`&YF1kC|LlJaSN{6j{rJMI!G?|5$xa4z#*qW= zT;B1S%L!`Zu5n zyX86)xzLmq6+QTa#3q%-;H7cP~}>>BfErpv}o zLJ+N1wrdaXfGo0U{ie>$SM(H9XsA24=$K-b z#gO|>h>L50*ujBPiFc?bDLyHhl-d`}I`j7DjNUvqD&U(ZE;MoKZJ`+=b|EUcsWfBe z`MfiVBy_&oBl=xM#xy ze~&)l?G$_ocX*lM`EVYiX;j%}JPO8DW?_ffJ1@+1Z2mcpMYS4EgM4+`PAf}mf!sZU(I5@>B(h4Ztx|03`B?a+RZGA z_5H*2#cV^{C4X<$PA7s;LKV`8m^!4{r+OzB`rK_XT)WHfW1x>e_(WsiUe@dMxAr=B zm^cVa4^AvSD(!!n3@|;mE-dCd0{bhDYXre>bO#Rz39LV}*!Cq`ikjcT3d2(35HAA9 z0$j=*>TIY!4_V4Ux;-FuCa56Gwew6-Y+a@k(qNIbpO?y1cx!nx6!n&$ z|1;jdz7(V^F}R|FMqMH?qgcgW>3FKX^ff7k=-_4PPx|)rAsRleDm2F|$Kr-A?u1Jb z_@jzep%hhSx1UQ{DS&zfkTU>kdhC|Z`=1F0?dVW6LpI{R*=Hg28QnxJ`mNUTxD0J3 zJ5JEBW=0W~9P8BgL(>0 z5{Bi^BTACSx1S$?oY&OgPL!emzzxB@8u+itd>~n`1_4Tnp;w+Uo33IEDgJ^w8s)P# z<_dpwucYu?CVL}qO?Fb0+Q@M^3iTEq=bQi)l@LEeU}xBS}6E9r15RP0hH3m$Y=t= zu%-calzeD)}@`HV?DqglkUf#S%u|DIDFn#cqbgC7-D2%$41Pss^QTV%o>l4+iiW44AJ=T@A;{T zRMJPjt?wf_Cvoft`*z{Xy!%MO9Rg&n`1y{S_FkPQ?gt#RMXRvX4Ob0jX@{#H=9M;a zG7#E^MbP?`t?pQAo#Al2lP4R)2~55L$jEj|c;Pf)r%zT3ofKhRuw-?XrA zW*2m&KfZHR+ONJxS+$Q$v`VaUZq^9O$p|qDJB74%hsfeZrxMrpKq&j>JBW;wJQFso z{R8_!2PK`VCL@Rc3La_?UGZ<*a~;Vy`zgxNS)@O3`_vIX-A(WLLQSp%M+@`9XGyVF2sRu)Tkp2|Od{&iodm*0#;o zG%{-YQyH4EPMI-g5rziG{F{FGlPrf}A%Ge-a%xPZ~47u2KmQ{21vF^cCiFe5WP z&fz3D{TzMkkUjU{nlFEfPm~p)pLu$q2Te~h;7iXcNEI*uy%iBie4U|)G-JdHy}Jd? zEP3~_)WPNhlhG0ZWmU)nqF-~&)&`;O_%#xPKeVR7X<1nUZ6#I>p^26DDtnT3H^E7z z9rW~6y>RW!4GlP|#vCrB$jcF~?H2!0sk@>-Np%sMcHv`7mE*~-X(E{wj)Eo1=BANZ zS75(c+r$>FpZYe)O-ed1&}i8pG|VHZ&H|=Y=LXF4(k15<5(?tHE)+~PDE0)IM>`!2 z9*)jFrm<{c3%i zWKzeZ%d=)3-@gaSI%qSx^EWF63e|BfTcW}KmZ-pTSV(y4O8}Ct!vpHep-W|>PmsoE z#+ul|8RaA>3q^x(mTnupo@)#nd;;0ajlkzzNJX<|CnR;k!x$W98kR%84fl(FjJgPP z(=YG+$m8LiEk5+|cL4n>#>(s(CQ_9F*>Ku~pcK8>e_X^4Ri4>Hnx~3)x{crx9BzxZ zL4tReX)5T!f<{5u2T5n7lNYYP^S_5{L!-TW(PI~IuZ&C%ULDQ0na=0kZ$kn3edn0q zwqrd2jZ|l(VB(7&BDGx{|H-Yu1UOc&ST%5_(?Tqtq4fTwQL;8)+F<|4KsnQ6L2gY$9W@ku zmV1znyj9PB?aP;!AeAD|sV9P4_bwxK_+hClfHe#xjBu)qOsw(SF;QY{I5?a&wYP@* zM|rYiyv9w)U8C_1IZ*)&D?81b!Ce8^oU+6c3Re2EGp(0Ok7<8K4YgnL-pr+Lw2{4v z>E($IdDaWMfw#jDzqMK^*7edRcP3u!o>oN(@j z9qPTyOyoS%oo~U#W6;?J%6HYuYrwB9n~j3-Yvw~bmyvC&<=~XbDj^zfBTsEhV8HQf zwALfyBO5m3dV)~@l~rf>bs`>;|E|Cq^x}NlS#uI?N->Oh>TnO^P}Qd7EOxV(5F?`pGzyFm&zQoGw8Bds#&jNW0{}s&l&{%O}IAnl6IVYcLgX_ z{a@eNrC6)}4Al4Gl3V{J5aQD*HEz~l7sh|(WXJ|9oTF-!Tlizh+46e7E|eI|fh?tT zd_DG}#0F+N{oHvnKJ1uSAC2eus+jc4 zrw%BHIbw@W0N2Yua2&n&#Of%Keg5Po0MaffqpLsQPyr?Mz@ ztw|!=BWQZFekLfe*@J!lz@mK4kFU;-W){`2-O#2Fr$k$oIPxX`m}RPy2A(2B37ROe zck|=*I}|sB>E=R(ueNLhMS3Woaf@+Cr|b-8-LlWHQMM&@$PT3kC|HU@+k2P zy~KwLyESNuic)IsXJrrOuF)yV}uj=5-zE4R6=Y z0zB|?nsm2k=IY>Vx9gR@=Q1^1f#f21YOrV#8%r6xY5A9z^qqVCK*qgl*AvFsp@v2? z1$VZLvKn*QZm>ofcYq3a68qiqYmY$5fHu6IIpJQ4vyYrgW!cSCnRhbEQv8cX|_zZY->4|vT`BOy&4CeTQ5-jr?=Gx=D zDbJDzl68Op_`&Lp2)yaf9;pGjZUxcr0)N90%)69vm(c7bqEx zEx8^VTi8Ol@~TE55@1ILN25Ak`aV7*TG9z>Zj3u7{XZ5!Ke#LW8g0^NuHv-$eO>Fq zA2}eys9+PRFMimD=eE^G_ZfNnddEldK3@QW3&L6zI zZ9?Iq#3NH4Zp;}HP(Hfz5!bnvZkc`-hNF}>epZadnbzIEAWKg!=12Th?}M`i8-9j! zmBD$rqdjS5y_mHuHXap+_awuGr1h?!9)&b*(qN)j{`WeqF;XU`g*eYp@EY=W?RtWZRSSe=xBezlK)$~P?^z< ziuIt14GWFDm~ukcOt@C7?`8yc2BNhmn~2dCiqJ9zOjNtj=cR{Dkut{U5~Q2vTBK$u zqH#twSWVq_!b1iK>PR^_dAhl?$3e(=eZ&qw+1!|2Yz&&aUnM~jlB+7b>iIBdCptW~ zY~D0s6V~1^1#>nHVefhIXt*5gUrsxVkHr1%NkFE+k)H8aBD50~Z+S8X@SDB3=?O8e zkUnq4(QYx26c~`)1-iv#>cDUIj=7K^{9moG)Q`B;B|2`x_X6c>_2vC<5Khb~>`n>J ztwm%N4$;x`1~`o`!;%F_&Da~yX;PSxJaEB<(TYI{`LB|!^LJ{WTy2dDaBf|`?P0d1 zU+|+U@QE0?I4f~*roGf4TwBZ*@R?uX*!gd@;vzOKH6qwl`-*^z@5=QOyQz91Uf&CO zQ$>+&s?wTSMu$H_Gnpo}`0oJbs`yd{=V(KKgPSjFJR*Dn~?Ax^!HXi+cwnN##ZT9<6vP<(W2KU zZ#lrJrf??UqC66&%B15L3djCH+2KDIUJ(Vz18}rB_w~2xz~{iU)~W`O7KZ9#e|Y}( zgNQ6jfO0PED_!cMHkm-Qp-DX>;rKJ4;==_wz_`$ZKCCe~rcfUT%pYiy`}YhwwZ9JG zYW);3mTK0j90KRH3ZAr>%o+VIx%%kjesGN(Z}wXDxx~CMtyR%^q0+NrKS4}FpzZ4u z@}~XBTXj~o96_Hpg9ndlA%-!tM#&O5(;Gk-x@p+4fP^wrKM6VG0;JJ`$}|>NLSm_b z5@dZ(pg)XQ-FbYbZFVx-(w$!NFnxcx`C2P#VM$?VTIVk_sX+51AhO5 zzfs7%dWP6XtH33`e{NXT3c2=bHClmr=95j-qq{$EQXDTc9%W}|%<;BjXT!al!**wTu-dpQ`>%m73t@|foqkTNpzv|H<>W(E5nB$co(G z0{WKw>!dt2_SILL#%`?K^4V*e;;MHGd)(sEf;}>x3i)`%wiaeh$Pdx-o1Puw>DhZX zQ)hGO%z$xbqxEJ^u5YMwi`Fsq3v*KytCKf{x#Gr3*q!~aZWk$wl)I%hev3RlJC6aP z9`?NKx{OlT<62J}O{FU~;ioQhiT)!>yeBS{&fAoVQFrEqodHJGb)92McCO`2zRk80 zSNv(?zv0TE>|CvxH>cx%W4TuDNqaJksvE6ptyfNbIzP$qkN4J5Z>*-YiicF(lERoq z%Yxt9*{4UnXD*#9sxrrlhpZ>30Th`vfuTy%nbSpr%lPR|#UJ2Hn}GJRsKg2L@!^;l zHIzwKE^M#QWhetLn||!^E}RWXcR@UKiC}>GoO3oPajl+0ic&|2}NzOy$F& zfNMzssr3Z-27Gd1rDW{xc1Eb_!qG6e9e#SaJK(wuS?{W&4>_u%VLPj$2@5)soII(D zB0UdH_ow7eh9ysoM}>XKUYdM!s%m`}HgoXkXdq^>{`8txoUd1N*h3}Fme|xd>Q;Qs z*MJkv9_4QV?zbA22b}B7cc?u()nxrLFT@qqk|nfU?v?M#r@r%;?f~_7UXNX&v@*(WLYL93~8{U*tF_anVMkh+u{-0x7i<apEX%SuydK zLBJFn_2r+ypuIW&-^WL3JDSuNTlq)7evdN_;kIpk^LGd8RkWCO2gOxYzf**^PM;_} zJWCr(j@9PoA|F$`PD6@D(wYLt&vLbPskduSGKLbn;+t+9g|RFio-zA19E1@K;MB0X zlak~E66Vn4S1_~l*_A6ZTw0`>ic`#$86mCK$-peV;Zp(Yu-_FTxxt6P>Gd`Rz>n?y zdY`oxm$vr6?7RH@9{4yn!ikv`7NJe>Yyan1v;7?Omvint98eLF%3U zJMVXSD?=j8R{bDI$$W9|##ZmfkCW58uaEi4NtA;omCYmXj}oNbUz@i(PgQ6wm&7+oMFlME9dkMyOf|&@Dzxgg$q(83%$e1P?^=-P#@~EU z5yXC4A;!P&zqI(F|I*t1?0f24^`|_ep0brSshc61Dt$6(2cE6<{c{TkO=Jsy4);8P z&J$nYsHDnK)em$hKW{dYQ^_{!VFmw(y*Cd_YTy3HD=RIJL&sB=qU6c4vb4dRMYD4< zv$V2uhRVvydB6b$GA)~w%FJ?r%qcS^=OGZwl(ZD*SxIq5MMOkE;JeW}_ukLve(pKH z-~IPI>v??gNjCev_L|pgt-UiIo_1)+Q?G<}?h{_JXJGeWM}3aH8P_f%=M=~Uc1Vvl z`m?Qa;(&i4`dmgcv^x)mKB&tL8`ggXicipku=bM@$zN8E+~$%dy+0jIRAwH0D7y4+ z1LO$z!3YBMtM^f5`o+7x#gf*1ci+uht;cNVdc1P0ZPNSH;{wOrx@}$fIUgK%3OFwO zZ03QQz8mJ-(XNMn=>zFc;Xm1&B6S6H+poj@#Qe48!mU@NR@0*-8U2neo`#;ra^O@H za>h6;lJ{^PSDn#2zLsZl|B;6MIxsxt=MHDm#A=o9z!$==5nRiPlORl!*2sgf*}=H6 z^YC<69mgEw!-PJEDdT&7I*!?UtcWd&ZACGkY~An9>thuoir$Rdz0_9Dtsp7wwQIz7 z+vh;WKO+l%HaW}<^xuxy!%EXV|Hcp06ML2iRME5;(t6e}CXA1d6ttmLYvFx2jPa0< z3yA`^rfpx*1d7@|>hOg4e_2_GMl z6(3@UcoDDkFna%&y@ZPoKdkAjG4t7I6q(am?|4b?!o$iv(3?N20k6)v_oTu6i8XAy zTJqe1zJwRhV>agJC?rZ!Qp=aK6!jMC%u!>JMWmJ4Ry)h`-RCTERR*n(x3|sqj&ed! za2(#NDEB@UEh-N2WWQl9usysr@G8L^PDUSWUcc>X*kUk=VTzgLUM^vVxHLV)I1!6^ zz9qJtgNGn(O&l*tQ(L03a4|ZyqfiSYLb8x@@9EN1t`oy5inTkd zeUG+JFn=)Ti&Ok3hK(RaaMr9MwP!)!7B_Pm%j0tUtxcv|1;}2Sn+WxmY}C%MF(JK} z4$2rc33l+GfV-GLs;0)SFi^jKZmVMS$wIsLU<6u~E~)|-v(Sn8I;K^E?O|Tlh56hp zyrgEmi!IFNJu!^XOVAhcuh8Bn*n-22HWpUw6fW{h_U{u+ci5IN`L^L>lYzUXyl}z3 z^Y^0P`%(|R6}En8&Xuq`<~XFOZaK}i@T2(pC8_6Z&oQW6DeH4n0`zT#r2c>UXR^W8 zN9vCPetBNG`l{OnB@NmqE2!UJ_#EgOvQMjIHbbvk-v3Rh|hl+iLlp?)|yg z{5ZzY$W61KPu*PgwAajGVx2YK=8OwK$$#YnW}yIse$byjg+Knl%u7~EedU^+X0|w9Y?9j;40;u7yDA`Nme`^TttG@%thp+xle8%6B|IbJG;~DRP|F=5w zG#&eGj;G$X9iYGD6AJ%78iKKHlI=fX{pP-2m2!We?9`)iq|@G{Amk#UuhFo;@8UQ| zgc=;%^`7#!P)=5=Q%tX834pjX+h5zmd!6@Lc?BmkuMzm=UsP`Sd5mqBjB(F-lbe0# zT}4ru-{Ib4J^TH9S$CN7fif_MGS@x*F|e*)6Qz&bZSNEGYS0wj{_};_uXFKl+}Lli zp;_2^3szHDp_cDfu%z`1d#AnCW=-t2oexYHDymo}b>{UY8pz(tMNcNJj)4&oxQ+ z0I#2>(LX)oFvNyF@LNl2yq%Y_^uUXK=Y@epR&!Qy&R7!#Q_u4FRcFue z7hpTQu|}(eUfS}iHdR>zL$YF%OEvQ8?a{>KMk8IXU$bD>F{zSwWH-jBU;iwMY&@ZH zUv^W)qs7yc7%$DX9UMJ#efKfK#Facs{y+w_jn1IA@zPaWBM{%r(E2`M?(AuqHu-5U z$P-oTSw`m3iO^WPI<>dm1y?!ad60X+XXeD23`F@>y=~dr zJclz1x?IRqERsKu_G4A1OY}c-Siy2w5uNJWdW`i{0;K;;qATvM7N{&O*q-c!$HyI%7Qw<`AV`j#ahTCM>uoadHIQBWo%*bP0_rX8OJAZ9gU#oEJuYSQOl~{P#7DR*RJDtB z09{XYt%m^@)Nfz>VY=%~9_g?jd)R%d87F*jds17|8*!{9!m`IoJI(Zg#v^O3>F1@M zpOiOC6V?drr3u`NsORAJb+TXU!}q3+p4Z-c=UqwIKJE>@&5nez6|pUf<2 zcoT*&H+dZej3W9T^x~~U0pX?efZ3I~i8_~5Y4C3e{T5fiIquNJ4(a{)dSDoZ(5wd> z(%*Nh^bO2UCXZtdl~chd8SxqDWD{-l!c`RI3d+BU@FGF)M^IL_=7}|TXbmkW&b$+X zdMOOLy?9G}=SDShZPa@lboZw?37eW|UFn21C%2`^E*Y8&xw4nR8~s|w`r?oV*oBZ3 zA$N|S2dmYBBl$yu;n6y^vr*H#O|}3@LErhVgKT!EORSBqd1)%wj2A{g>U7~y``4-Q zuN9AL+`7tVTSa%Ylze1>wcpRSIFr9Hn9oWG!%MM4nc+L0f`*Do>Xwh;AKhy?^ggPO zk@Lc(*$BtQBPBK)v)$}K2uICq_iVMd%DfX-&>qhrKZ9{<7BAb5R@JMt z_MBFFPlB*Y@dkcg!!>#G#V3t%izmCe0^B*ozA!xqZli_GE-#fNuF#E-5D@NMFwj{& zQWoNcb<%tGK!Wa+sHynWyc32_U%WbLaW(W-rtVDe8ErD;bx~2i`z7W`y@Ts$k(RRD zKsc{rsI61GejaYT5qiAhv{Z_IUP}4i7_y&%5SqzuKxFodU2*_5eDeO&E{nQ`V((i1 zDCdxDCJcjYtTWM=?(dus2K(GS0y-146cYH*#**WR%*8YP$OdyNRVE@x2kfnn0*&gE zjlTQs+IvwkdM{%{S7t}bwy7n#gs7+G4Lsi;tTR=2tY zqf-^-Zu>NhRm|cx8lnl4qXkq-_I~?3|N4e{Cf9pse`nbK3T(kq)i+4(Pt481`e7o8 z5{G>^1dZ@G#X(A$Uu?~9uFWBRqv!C`7JXSpaJ{~8cH6-OBaI`UA;)uC6m)EKWz%7r zpWq_mipDwqR2-hNciO{6fe*YV!Ed&HAzp&%SI!~`ozHpo>K zb7u}O;eOPnkC;Bo$2>$<2+QW=+?sF!-Q=&FQQ20Qm1rjf?{Q>iXj^rASB_96$jdJ_ zaUx!q6vZcX7pV7LDF zlz>w^zYrh81hw@N@v@OV(+e%Nu*imp!|8d%VO*Np+ub?f@|XIYqcaO1YOljg4n|yCn}y!oX;SH%qN|*Y(v_v}=gerg(^wapZHp9JOm}|5 z`0>x4G0_x4-1Muqz?U=nWWz_uvz{S~Z$^@ti}fFdq^~RS?-O(@%HgJ67LPB3t3#dL z&%s^VjK>007Yyik;1P;qDe5+Q2fr4|zCR$O$7XO`osLp+poSQvDRkzR;uO(-H~iP7 z)U(w>`9$BH(V;qSbx)$2hc@w%aF5ruD=QNNOPtnDYlmg4Dl}VIC-fe827cWYcgNbh z4;r=?+j)ay+%FP-PWeb_S%?=!#6N_9MucIyii|D78zGx8{QkICx-rxjmCv`~p?H z;p4s3%t=VWpkVkCr%08`?-^bcwlC_5>P6`VvM`sjtl103qE?2Wd1EzQ!(x!T1H!y# zGx0JR5Dw3N`x0d{s^rv}$iS&@aXHBAKlMKZzaiO<8Q(0(^YhPAwP^*FAlkG$^m-)1 zdK=$lXKIa?`UOmN#?&r^rYr1L9`wwF!iAJ4Uym4o3oiAfxPlXklnLanj=Lao=_*r@~O&`5kZGI)$sRy>#%$77N+|74&O;h z4^7fiB@jYF!;n)o+xWsmafzC8x6_SO`>+^Qis3btAt3XA_Y|a`0&ku^ILLi!(JZKa zT*wmsNQ&TwVCIp^w}6hZ*Yj7r{ z_${i{CWuZB=8OhQ16efpfhn4)7}HZwp1*%>xNh9^PSsssfAwL7Ys#6Np%a+){%nId zI{AoxCi^UxVmcE%dWe%L+N--SGi>%2^ZoH;Dzz5Zdz#>RVcyQq(BI?oSfVB2Needi zxLZsS+BiH-=sc#gGbT|%a|&szF>!fUTkVU~(X-mSY7~r?0%GB1-n!Uvn0ArouSMCT zliHmbn5sEE?07|zaA)MZl=8BW!;=aTbgB*hyrtD?AQ=lxyN$9;% z?+lKdm4I%so}z9s7?QRWoKw$eObh|>a_MG8;fxY`a6~&F-U>-k;v+r`W^Q3mZ6%LJrTe6u@?aP<4mh3Fe>=Hmisb3TIcIcZZ9_&|hU|D4M^YiD_LU|(^>&qKLNNE>6$ztpW$+k^-!Eq$u`*fK7QcrjL>@H4$sMLV>_#ql8W^N9?c>_tI0M@ zhIYot2j|gnYC+7NOgOL|7@+H0Jbz2p3GN>{>6_{`vEBl$tc)EGPkK=SaUc889YkA~ zxg2VEP%pd<<`3bphm<~wv!cY?4PdtnGDV1_SEgQkwLwol>OO50?$did>=NAH_NPtB zr_0?JzFgcyaUHubK+050Dj#oghrp9fD)i)EOq#3P7BCbCfXD!U%@NuFoF*`ocZ}EHVtBK6u zdgQRkwKW%)LXtW)53fGGxuS*AE>aL8lvkOPZWlXG>tL|HvO1m*H9dcBG4eR%GVyti zgwul_C%cCw)UDakkjD?J*QtC= zy@tp>R7`A=a|QdmcXdRpAc#(1k1aW2?ZV4z`Svx2d4wIbUM)#Cpt@4w`Y0{`s%=(? zORrS#`4BBGz00_N50H+*$n%dSYAF+HNnw}Wm@!vJDV(Qz+8|QsuaQ$Z664hB4g&$o zZ4vP-Ja-bc`iYLCQceTCMOlIU3flU`L#5PpHhh*fJg?!`0NPWu+gE^_5@^TcD3B*P zeRnRxXBtNO@Ax`vu|CoZwVdKZ$l=3Nl{v9R%|cn;+dx6p8IiEB-lDl`opx{@f#|cS zf<~soZ%QN^_#9k!Kx= zte5r0?W}QXhFa3x{CxA?ZOMA_wV8FPa_xh(PcIuNG=|&Cr0Q}Pr?NMPlwce*f^q-Y z)TV_tZ?7z zHcO=r(F^O=$-Uqc6^3o#F+Qe?;|4}@PHfgh^EcDD9s_YTLF;Q;!gxL=N^&${k>RhB z&z?zWa*|3zU5#OZ`?%%_HE?tWk%is%w0g*7!TeGvPw63i4uWpBp_M)Da0*vfRv`C2UvUAwqIBZ( zou&tO+yE&Ul{INwpcKhlzxGhd`l;A^YmBlZoXrcqbmd4vcUTs|XC;=qHbM8~w5sS* zm2j!H7hf)so}$vGN$%lDO!3|g z&kID<_1+DYcSO{Bx7)fzSfe_RrgIa;u=8G17GtVr+BAvB?Cv4%@W2rZUVz>_x^s6 zO{u3?h1u$)j$Mz^_BTDB!xwx>SDQ05Xv0{$0GaWD;{BeYOK4YjtKnBaM;Yd@3Zjb7 zX=9YHPwC1BMT;wfH=K=B>`cjBsDO6DA@BO0;r9(LFd~s_pNceX%!S!|QAzNHispmE z!$#h3mD^?LcX;Bg7l_N3bB&)rhV$IV!5a}I1|nB@gGXF2wt1avP@dJrr4OxAEPV<6 zaYV@v&ZfIPTRNu)6(t2eX> z{unEVxCD7FHxdC4mmmjjIu;}UDWy0N&OtgeO4IE)i#%~CgpxAl<@ z6?5Fl$PdmQH~07ju(P(flRaLC^?e5?M-C~dC3W=Tge9d-g{Kaucu^Vus>oAhHRVj( z#P>DR7>%caPl1dZ`xRxp`pKS3aLEcc)|VWhY7{V?hd8Ybej87&qiEpC@Q@6J{g@s6 z7VR2FqMm=E9$zV{1+REjl`1Z5;XF6PSngh|FQr>bH56DLc8B?1L z?H3r=M=>2!7n%rQ@5NJsWOJ!Z8JGPtzl9|y>;Al)S<7AQnJE~D)n5ub9)ZzAfzZO` zBIkpxXEP~ZDAyx(%#%CBOqjSb-uk8Bww)679-Vta83v^D$8g?zk~?}lNjJ7(GTHj5 zgVBusnhycSG3XLpJej6XZUeHV%JAF%7hKt2M{dU+#ETBH*9ZkchtoVj4N69MxPvkJ zlO~jTTxF@fV3r9Kx^A~m%gyAYTvNQkyNqK&mge?lqo4YeLxaIZEljpQ5C{#1>{-tG zBBaObCR3aHrSk)nDh+}b$A`3OHBHN2ccvVOD|OgSm+2OGoUuF_-$Hh{VH$)OFCH9i zUN{{nPIPwkL=Yw>*shA7G>^sYnAb%)GQxTrRJM37{=Qcg7k==l))o(uzLL7kleLyh z4Up$u;SuAH)uZV%Cp0dErFAY&xN(Leh7~WNby^l6w%K|WF3-6OGwvvw_u@mahzoR? z_uP>f#Z2Dl*N3oprnazeR8!EgItb!-m26t|YgbkS;UHt~F=)(N(i&vU9UBQw374GU zKe5C3La(Oq@RM?_`8S_(TdAyCrvD-$MSHmbdV_5pff#IbsLyt7yiyE~D~5k-+Shc~ zayVshAw-3M-Pm@>+dD?%xvovG(R`8LXm~>Urr#2Thz2FZyZJsxDa{z{nO?(A6!h(L z{g4)iBWfO7%1QH6=A*Py`H@Lpk~h7~AE`3;w0Nx)h?_-=xq zhX`<4+A|EWtok`ghR1YURJr+6q$FQfB`LE*ZcGx92i~V0>I%&TiXJCjPJO#SA|np; zzE>fINXL0ebbJgtBgDHGZ#X>_XVEch1y02@k%z{B9{;T~rwlf=Ix831>LC%670k`o zUJP5LC+`pB%qZurblATfw=0xu2H{n@Pp`X3UvP~sdD0-E(-L6>q*ne%IdP)5@*m&e zyg-X{K73yjFZLT)uJ@gHzKhSAHOKeV9O93aHgDV(N@G5!FET@k%(WkUeLzWO-!@B@ z(<_(C8Xfc(x|Lo^#P|95i_iu*wBG^o&Ufp)2A~`VFTP!zDrY9s7kI>J#6?1M2_(7$ zfEa{3MKLr@Y_b2~O&?GTGkE&O2;Sk)w?%`NW-|b!G>!KpGQ%bcC)#gFbrgGLPu>%B zFM02ell5SYgXHBG zY3a(+A9Ngo-IW%4NI>X2a&wIB9>|!xUx9lPaDmd56C=+?;$oR~R#lWVQMxgooH)gD z+HFemoGY8dx5&4H3`+cH_I%%lm?OSJ`5&_G_>h50iuRKRa%eGFCEf(3Fc6S&!gXWSJ(E_Z@jfyBN%Y@Gzgn@H35Afoha}tMbk9+= ztC6qks^gUJnD3N>oh$R-7dg4@a)}+pr3@nEcMsOI&zIViwn9lARq$L6%0*ljSf^f8 zZueR+?+ z4usphhZh184Sw66ifJ_ji(=PO5(&F>5ldOLF1J!}D6>ygh%YHrm7?CmkOrq>(TG3~ z(4n(RyJg}G#qH*q(~|S*lnmH?I_re;;n3#MC)#ATo#1N@3cFr=J9Xz*8CAP6*=Aj6IL$ew#JtZA89?^j1V5qqL@t?CnDR zUEt0jMMfxrA%+^r-!glmx3+(Cz(Dkey0%OiZ}%F^@$AWUrXB&RCk(v9(6cbwQJcWq zse#gVfy3#O>yO|1oh&Q-3J=pg@1@m7^ELLm*49SXoKk+Xlr(RQupBMK?iPiluxMy& zX6-Dlm1aR!>Dq@l{ZoFCk+1@v*VOr1LDuJjfq{?3xUk0G*93drb@Bp2-I8XA5ZC%9 z>Yh%d7Vzwg-0G)WT+xeXc!=5ao+C_R$jtPJt?y#AyBqCB(!&*7vsi~F!}`g#OK zJ=V7>qh-a{b|zWLyIKL*@&Xuvro-Q^R5#v>I|&2}`$ISj$|)@J_#Ahk3?rwTY+!Ik zbY2ZwJNDT!)~TjjyK$*xQqA>gUpO)#=bjAC^o$#QLW*Gxd`c-uusd0d21#G3kWOdn zVEb?SL`e|GD~GG;JKQCv^uFpAHRL*j`0C`m0-C*2_i3UZK~M_SK{yPz%ksdq{;pDG zK+mb)bO1e}~UeXZE;x9;9@?=ko2%|2PVA))@gQa4J>-hy_=;1qG9_5qV3@F%JQh_~>q(HvuS z-NT!!ah>qw^mRewn(BG-RH;d}rZUhOUuuCia(zQN>#d6BIaIIyg^C*2{mODI%Hlzh zJ~m#$q464TZQ~psf8%_j+-h3?cqvsM;daHlOmK9lyg6fnyPeiOUdl6|(Gm=uuJjmW~!B*pDw+XJzNDn~NnFcLY!*#oKgspV#ZD*2FvlT(LmiD^uiFVuYM0tGVHZC)n>K!QZQVdi( zR8iBRyh+RVf-mSZjc-R@HlIaT0^w>6A_R&q58cjRYQq$dX zJHExchN+7stJ=_9!{#KD043+uhTB5mj&OJQ2pgSIQAq+Dy)LW>I0|>W7iBzj(G(c{ zNWhO|!+{2<*d#o{f5&a??<_d=?k%n~CEy*i>1ORxCOvqxA*<~{)Qy6L*AHSff~+TF z&<=5eimi=<&Kt6(O2s`R>?c}J@1a1^9^Fan+$0!*xaH%C!^J0ajG{JCR69gQFG|9b-Z($8u|Vo4?GoSq(`BW8Rj2sAgo^<|!}s+2 zzj%fb`sF&3nfp|E8)W@1Tn9EtBF?i0FD*%Er&vM@ib{#_YJDKxE+qIEtJom7b{I6O zNXGP(`Ej~$NOf&|6ZFuzm!LMk(e4*K4zxvT;MqW^l?|D7Fh~zQ`;Il5)?igp?(#&2ivjK7+uOD1HR;3mh`@m?2m-6`HddE$(!$psb`eRBI z4kz>9K%ZSDdTcSygj-H#XLzqTDdMGkv>hK+U|m6|T-GR6wSgV$Kh}duCC$MS;5ta? zLbq=_%wAjn9Rbwou*>d^>lFXyxF8OXQ8~4H$y+_rFm`}q^?~a{p724>lO-}$9eNBk zrbXwD;&Xd9ayArPIQ?GpmiAfjJb<{E3%xBrtOXNxT}#5d^n>n zA_Zys?vygjijDFH5exE50H`N5k4{w1fOqD>gt)sU$@mB z9DiKu-Kq^FjN*3mCDMY~K{df2|cNg$v!JC5N({3^T-l}fPkQRvj&NWYX z2k$;z^Lh0Xg#XIc=lWXK3;F|9;pxMb^L3e;9b{n9se*w`2felgs7{@7@ei=|=eB=H z*p^vb{HX&c76PJ3{rbF`1A@qhd{XuL0gedQ{9v?Pg0?hz2xw zTme76RDlex*aB2rRElK*4BeLx;c=nXy~O>~rchm9m+^|n@>uOKEiM!}&UT`-PDFc? zSsscQ=;<=#p2&?k3UBDyNi@*tvk3p>2LI(lbjk-f?t8%Y7q@^n<@V!Ss%JmYZg_Aj zC1n>I!Y5P7swd|&VJEtA-^vQOrx5#uy?)9hkEEj?`-kER1^Ru!Ym`udTVh)L5*49% zl(}i%V!H$!KW%EySy0X^deog@`BrouT5*6nnf1MYcqv`nu3+A_=aN1ZB zoKl_{Bkrw+wSG6Ghaw*%7OU|26*myzr!M#W+1S`1@7%C}#nO)(bN2|!moudM8c+oC z13g|--P2p;m`F?JqWcw_g^RsohVHWi-5lD{^Zg}GlBzNaOkqhp^cebCBv$V1I`!+X zbZ1Q{t>-e^49q4lSLAyWVf~ zE`aQsrRs+Ng1AWhwh4eFC`;~+usg(1nk1M$ulO)TZ@6{bPS@L`AI#s!&Vsnv;zk~D zFID)&N)V?iyIgx5<1tZ>TsEAB1x!|4E1W;Wi$+K>glYqkyz^9|3pK{3f^6{}@Or&J z9P9taMpsxU|FI58_ll2mlja%RA`?xNnd+IGP>`O!GGVB#c^ z?N3zca6IQ?Co_=p@!Bl6kQH5=o_{gmJ9257of>pjRXa$?!{v6wdRJFyDVxgryu_*O zLj%fgNBta*3EIk+>d;Vs;Mro zmjpf!29;i$%dg9EO@_S)%@AHF6Y>W>D#n6a&Gk!43*hzpIHhDF%E!Bcb$01|yS!Sz zmOR?TKAO{%Uj_mOAE@id5Z5>C__+09CxF!7;|iEQJE8& zkrKiuFbEtVzq@Gg5@~90Ps<1Y?EZR$yCjF`p}ngjJecu*6)SA!upy6ciWX~^aBFK zsxWV^tyWPe**mC@)%Oi#C9DfqkG_BO$}ZjAOLfiABS3If`-wMEw%@*xBs|WoM~o`_ zbWs?a%SuCz$YHnEt~$~M8#93|IL{It2o-@EcUQ;if4wL>I{c15u+C-^HCCprzFvCA z5&h??mdzmk?La{!L*zx9_Ti-uMHR_6T=UGCyg!;(`uTUQHxgphERkUrSn<1QtPP-m z`W4Sn23!EI*09Bpgg7UM4Wj8}8knFnm%Zwy{l{9y&D-gAK%LysIamYxIdObjpR<}} z)vJpy&{fS@@hEFzmL9vkA$;g_d3#x0aCKVEz#JXuFj{u4i#4e&7>{q3Z%8bChnPA= zxYZa6j&7g!W${q+r@>vYM<$O|k5&APvzcGqG;x04J$%@(J2a*YjGam2W8aD`18n_3 z883U7QNvP{ZqqKMHt0^s{sOhC0As3Z+Mm_^e#`Qf!@S0%&D;lJr0}Gu7{o8x8!=j_ zb&nnpxE+kNc0)EelXppf#U~pRi(K>hf&-)aC7@(_J3;YS^Njlf|K)(D0dsk^)Rr)9iM$ZABs=1vz=gvBt^PinbG6ZOuIa__xf zLn_6&&9NZVcDwMlJ#(?WtxD~zxZRY`oIZMqNBlVGsorlG1{;5|U|67eFe?;JwSjvt zg@Pz}nSqa^?-BQ&%Th~V6Socgs4}k;d)d^`B}fU)*8ygdT6R!1b6D4u2&L!49r^&@ zL>#M3XtE9RzBlTc&oZ$hg2#(GN|sP=CRn@dTuAvv)zLNp^a!21Qr2Mg!=pB?eiB3U zS+A}V8upC7Y80NRsAR2C3>59GL7#Jd0+!r+(V}p6Dt(SUloR}QRmS3q6}r1Ee>;2@ zZPNxlA=>Jt6DQHjqD5CY4SYM2kq(2>k8%v3=GdDvKNe% z@R{DXxssTC%-XWI!Bay>3AM|1h6#*y8XwfzZI(#iPUHPHbFLtJkmOQrRD}|B1z8=| zfh3XM*{%M(%C#%bxUGJ$HQHBinzsol4cOY@%Bl3nH3iXJ9Hz;%9*-{12=QkP1cO@B z%L^eKw8{?{ef`2|*MrE_U2|y8V^2u_$s>&-neZB@D?X-eza(nZY+i9fuFayQj&oe?^dU5tj3xc(Gz>cFg zo6C2O?8oq_uHTVz>fvc4c@n?3NZ1z$cyr-SR`?o)Ms8bn z&5_`=nG=5Mxuep^k5_Uzq6>noA^+=(pG#Aw+BEO)t+vHOfv-yA|Wi zOMQKUSoca#7m{?_gA4YF%xp51gHs2FhZ330Tre?pHrODNoqq6*5smdC+vt`hVX&>2 z?v@K5<+LW3+XjUgEu*O?C1-h`JFNLXn*w)xJ;S%x*zwIXjaI9E_Mq@>Rr|$Uz=nYX zwsKp`Ck*O?p_z+EXK9X{2FBMyA)h11v5T6pXucQhd>%RYDK*oMTdj>kHsVn)@$*IFEj|4AuH4sviHrQUYUOz--qPAqvbAE$L zQIp1#JikRj-uoRmk4T@U&*}9}QG*tEVvtDs5SC0N&W?3=D!QQ`n^F}nl>9_>LKs%W z?3pP%Md=YZO1_n7U&{H_hTzpz+*}b#RHb~4rGj~%h)Ii5Xz<6flElrScaLP9p#-md z-K}?Zs1;XI&?3Uf?Rs|_S66lBf||)b(x$7ZAG0O(Mq}dXowSvWQtqvrGEN`Nt%<{j zO%+Srvg{p@4Jx0CA=6}oMi>pt)ywF@+x>u~3&1BZ>er2PlZMna+Ey-C`CsbJ20MC> zrIz=New}CLiovM1(9)1fhX%jEfeEYc0gUC=T8rW(fsuE=d+3vNhkUj+JG}zp2n&&n z^-?9d`RQQ4`B$s6Gx{Np-tB7e6s^|kFqPo_+%vqY3)?)4m7N5$ELJiYMKyFy&T9~N z4uHD6peU~Vj=d2jkfr|D2Hw`Y-?sI{5Fai3+X&s1Cb-(8?ZJE5YxCxfvLi5nE;jY<5o5poJd~a(yH^G4K;2O=?^TK8ky)Vbv z(drcMK=8P(64biF;WN6z=Xn+AJOIdEA&FvCE`_}Ayw^}hi>f%4-Nbi6F(1GLc9K5= zfZRtz>n%ZJ5|TRIN}kbyqC?#i=litM%Qv1lfQxSq8!6y=K-(|8``?WN+wtlw77h2~C^xTbuJ-xvBq zDY&17<$&z_Wq zEo^w}ycv^`ba4@*8>0n~RXgwzkOD)lU zx0%0cm8A=`^OtgSoK?zufIFknnqse5>KZmO7!%^!|6H&C8vqAS)_)YVZ@i|-NHbJW zov6^*pV@Oae*=I$5zC>tgd@I>mk(s$_WRFH*T>0gX+!lKl%O~cw4foKbH z9KD{LIW=VLiEmH{SC@&tlkq^N-dRmv9ItG96fntrK_{?6Yl?8nAXdlXAvE#ys9BIo zu<3K15Hz<;EYZn}S(n(8!M`^8PEPyk^w;$8YE}N_)_dU51Y+q!Q1>3)RIn{ zyf4$tWf1+G_T+je>s?n3a90fm(PQ9IdVlci0(WV&Q~hqEkmM@%gmc%%wx9I6k?bAOxbYPM#z7I~`tjPuC8{uLha3{NjMQh5Ze8*M zZ)g^e%Sa8pIbJktc9QyeL(E*nwvnum8(2sDcWDuf1C>REBx|4f59_SM(_AGq#Z1gI zQwB$uA6=dd-1H@U&+~w#5_a^w^5dn5EK~j?vrQo;mk|L$=GC;({F3R;fY}9Veamro z4`*eFB=E}9?}IZlks8M18a7|;fNY`2>-#Jp@5}P!TN|-)*Z9~i&;kCT7 ze$kKgU>>pcI&J1;EIWVg;fO|<%q`k*aEL3}Q`Tpzjb#3X=D0XzD^3Rh@K$ywI7kgF zh4)PQ(vZatwbBDmLgGgWwCCK*ka0KtMkiV0gh?CH<_><~;gs7#VeIgc+F%#tYfS$e zIdT=VvBc-acL@$p7dO)YYW{WYbwd|>>%O`1Jbn%E20@c2vC$i&e#H3EnJ6 z*H!#u(92BtqrZK4>v&{Ji$$Oe+Y31U=lWRuCz6j*QJMRsa6$2EUxkaQ?~(BfsX^q? zG^S^4$xlOar8UP~)ApZPGQt0B2pYX*!!qFR!%co12}?bh{M*&?jJWbT<=-}ccbCLepbr@W&py4mLc8C-to&yS{1@$iohe$QFqDy0+>N3_z zUm-e3mhZx8-*98KS5|2bsS4m`CR*0D5&4MwvM7lBEg%VKyqs z%kuxIRW3Y@GcukKo|EHFc71tu=+uCsCFj(!&kQ19L`4qdC(7a%+7Ab9^b-n**hFx;jL3qaUSjl%yf2aS0 z@29u!ikKa0UsDxiedir<&YXAfLt1~?rL#ZX7Z}T==!bACX;-8}bzyy44XeC+qu=Y< zgGRm^yya^F3a~sfMroPyc$TPFy|pPhT~b+cFa)3Z(W+K&y&6ayHJC&$4TtTGZ0fce z*Bk5zIs~?s+pgxU<8yuZS)Tm)^LF6A#;8$#Yc^sk6LAPuZ^t@^tNm_a%`|@8E_2=e zIEm^3)>?CWJKhOaSMaYRlXctFJR{$EE_BV|n*mv&MNKe%akkvW&@}d3Y8&WRIFZ5b zgg5|k8|=!e_LIt<_t;GEah7iD6&vg!^m z_cm@COMh>c?aj`qXw&0d7W@7V(k9#a0>nc&}N z?Exy~JRwh7S%W{qG?5-*D>h-0}}i`k%4`bo&0WJM8b=^55kbf9IBeO?v(=`TTF?0?HGAmwf)6 zQhj&w|CF@qQTn?Q`$s?Ie--8b?~)Gy^Ej#C7L#Q9 z%SU2W(SU`!T38AyjTz@Bg+8+oTZ7h$oOv)~UABcJ%=~EDCM?_VvFT$|cax)(2(Qbg z?)Rz^JrGqhv^hP2v{p?jqYd~;qlJ9hpnsI845qoFB8%y-#M>^@I1_1hd>j{oFGC#c zA$zj)MH@1N(hQ-b?#SNodmn3^dPpkeyNjy)+2^Hxp4VmiH7RYy z2{whSAP}7rMa`Jf)(K%9C>K6yc(eYSYLU5=2nrmfhuS`fX3m@5uoVeVM^b3f9bH}? zdx~)01*cn>`dY1mxi7)mt@I$0@9Ndjn~1XYM_8v+*2475pqGKqy~CJvS08} zGM^XL+)0zMRDNRRcI1pnws?`HxShMl6zHaSn04QDUZwnKlaF-inlSF(Zxc{)6CVfc zUtqlrPiAW0L!S{{=TZjmEuy1E0!Hw!radd31B+!;yz~qE%x;wA<((zrIu?fErdIGI zVy^zG++(__t|L+06i9#0Dr=uvqy}q36WAXG!X?u}RN`OM5UcnM{YP`thn}KDQF1M4 z?NHofLFl}sLQdm)krI`%=qu2OHjQp@V+7@MOudrjd?BB>@_+Pg8%_UsB4r2G|FHVV zu}Y?qO((HJ=_6+X-TC}=wWiv}!JpOLBVXt$0qYh~TKJwxRQwlDC{35jchI6u z!D}|W8xRWbyysqkyp9UWzA5dT)Ktx#SCkg;LAXR(2snOH|LZKOU`3O&Hx*4fP({1S z;b-&kAMrGP(xkw8UPxY>CUZ>rk)U8@7IX<+v1D<#KDsQ?y!JBK%gnKI?>B(C`b#(3 zd+KdWU)N6qup6Q?eAuwV>c=Cc%tkNTRu03BQefxp)@fFY1YJcWL6zfCAy}fW7uE)} zGW^ySi8X(4^lMe^i}ulKUQlj5rKsA_t3_2$`ltH&Vj6@?40+Oro=0hfifCbXS!xYY z`rv;o(B_fffJxiCSp#M_L-;dU9H%1%f~dg+r4H zIAte|OzQ4MZ<0@#ntDrhJCP{Y#ZR6TV8qPQ-O6{9I7576$9@A{0v4D7%RSR%K0|tM z7T$DPV%XB-4%X1AL*wqu^ej-(t%jYI&jT-^+m$6eb$4!B6lR!;s)gk}w7gDy5RXQg zXWNL7F!F}yNBWe23Cw_>>e z*3!_bns7NIpQ%o^Yl+^Gg;Abq6#AaV2-Wn1>C|fBLuEf!@1tN5GoSxL2yFKmg&PTk zihMc&YM03=SdyzC9-&9jJI80kK`Rg6+R}Hx^s5}3>9x`4R;*{TM~QHRjnv{i`x2tk zv1QsV_i)-ciSwAV!Bds-UB%_ScAh6sKV+Z@+KV%MbJ|7YByHNNA6APvxeVX|Ksh<7o4El>H24$YRca8%56l)7u>L>Bu90*{vUkUiFQZpZo$C^Uk zH43Ud7-$~Cu!jnpFf~O2G6LW9%l}){irXu{>+k3N_}Awx(5l@shx}jJ>;8|lZ84se z&ih6tYTx_sbKV#3JN{GdE3Ec*u!o=X{p6GeEYx)v+5Ix-nH5}f;ArP+f4zQ*;-CIs z|2h6&;COhw6%9|x z+U4EbZ-4!|;r08cfB!uH{ok`+R)6AT8u?zGv5-{%tirM6ONK(L|LM!ie}3bw{9m`b za>n<^Uw{AID!ra>|NOo2Gv4Nknf&_x;r+wyg|)wZ|C&EES8S>8{_nfj{^YurFZ`|b zEB>A@g0?ztKRU8&;@ZV#3c0{a{LOP-5Ab5bwaG{|&=a8>4OGu|C& zd$g=Ew^{LyY2EoB&L3O;XTO~Iq}Pq3KIXsYPyff)_jA0TGW(;;fBR$q|5@JqcmLOa z-v43NZU&m~duQ;O+ugfA;oR?!&#UV<*Z%wb_vcT$`+Mr^_pLwv{Jl*WIhu;l|M zrE6gY74F6=Oe0c{+0`i$2zS;CpL!MkcUAn?)8NM4|N7l!KFkaZ4F+fSXZyTST*+ux z)eEl@V8$RuNwwHnJeyP;Cnw=PB?za%6*xR=fL!9h*5wqra81BJ-6?;s*8>rJQ6EO*9_rCi-(kl1Xxw4T jZlfs^bNF)TI%{rv!2krFu6{1-oD!MgpV(C+_6k9nK~$mlDaPMANjOKud;#Wx#sygC7k)8GbMfJ^0-)V8}LL zf(C3DvLRW)mSEAM87vvx<&qm_c6RbiPxo{VRo#{A5B|P$@BOQKXDKbsS#m`69rSc} z)n9+OCw=ET=ic@%UV0^!!|}unUk=9;H4X*xgpEUiJYggJpckuSWAegFujuzeq4>!A z-EK#gmloyP)pw-Z>B!-De8YQxP^S=n`S1RQe*eqH=El1G&Ts$6OenwbOTQvBvvcx; zj61h)$~V6H75VEr9$RhtbjYne0_p9MQr~nSf z!EqSWpRf_iV;tZ3-(UHGUC!QKP5wHM$0`s8`NQ#pjmIjG$APjw%vfG}AYb|8Ka?NG z@mK}&I8fGy8P$4Seq6^RL7hq8;rP*wM+EZy#(~X^H8~uQZ#?3%-hAVAdFIk{A1XP# zcJ*z!bL(dI`{O`aA7*sBUHNex-uJ49oH=_zX6C+kfL?yEsC?Gpc)Y_qEKogJ<1kZy z!p5OMp0M#qQ2+9m{{?x@O@gSFe)RoW=r8H8Od_FH>E-#+%OM>@m zt+w2MxFVnU)T>f1j{*ujdZIKMw>9(8FZnr@r zG^EvPNu#+Ztxj8dy}raaj;9KPKz{NkKP`**@5{>SvIM?|Td>#A3*tL2mdha|;xfHB zmR>*6&*Kbu&zAt_@c8AKn-9XAK4UJ2??EVqLP4KF-fCXq_dBC zDdGK+)arHl?zMO2#fum9vs<;gM7R#m%lj;rMr3rXD#b!kZrr{t`^|KmE*%{6InIgyUNdHx}UJym-GC;rU`rfUg%!AfTw<$Ln2*@YQWLr2~PqTKL{* z$lB@y+1cHd_4ReB;k_mV^YSM?DMyc;kbigWHB44b;)ue9sz6}^2qN?Y32{qt4`2OQ zl^}p36)|CjQW4LB_aOi(7=;t!Ig7;+d=)W)WhvqNXr(G8Oy)aMlU8G2&Yhfw0)A4Y z+mW=sCS!PiWPCzWJX`ZWtjMqb+-Go}K;FK7OFFnmDqXcQDsz~-`GsS$1How}M)lx|= zJaq;F3nW#w|6mKDhDM#PEZ)5%uf6sy*{#)N4_e>C`KYbsVnHh9vP@4-$n4Ctj8#Wv zd~8Ar`GSmL@+##D?xQHjx)4~WBQdTsHajC%uiua_fB8!?Gc_TVQXX2@loo^-MUiyz z0L^Ys+e;JtTq+l26!$wZIw}QDI5a;9s0{dmA_cGp3M5A_0FRKv^LVh-R((hM&3!q2 z@~q4)9F^&rd7Y>(-rL&P#=JyQz_UH~;!E<0=bx872GP5`;$7r=GCr+M(#ds=+ z_wL-0{dPw^5a%Z~#w-b}Hw{u_=~QmD5d4f|Lb`^^h;Jv=gX!kQhehO&6#^N-T@OA=;Zl0SKucQh?x|99Js2{YFS1{t8iy61? zExT}24NUgKUR*=TGBmbJa#ls&jgTFn{6jmfc5nV+7LNaHFMGFCx( zJ|>ik2dOroSUY=r>ZT~<1Oif_;$MslH=r!nVI5S01kW1BeHDgKXS@i=DTQK1V+KzQQ&InHxFQM`6!2n&YMY~Gr-g3=#TNEAEw@o)hi-9GNAV&40 zhI$RoO$-IA?KR}?g9oZ~R4lzu+(SaadZ`fr4Khk4_Bc7loiZGR%bUBhw7Da1-&>K1 z%7|P#)s(YylX7&df|DZG9=cNn8`Df`_{Wxq>q=+9zO>2FG(N4-3#)vxxEFei)6dDD;-#L zg7fDQcS?B#ZN!4O-^~Bvn@#;n`>*WyGr{1W5(qJU3x&@7=sD zyL)v-kqT&V4gwr~Qe2$YO6Hna63EP<5?M6p#t&Pbmr%%ZFg&9~& z7Y~h?0>MbLjsVzKGxIEpdhp=B2Jg?k@_C)#B9KS{J~)nOnt`znHSJU%hF^&WA_D4E zQJ4N~gI)t5;NJ3*H0cs>Z-k9}$YV$5_2C##zWvTMAftlJOial6Qzs;W`|9Ce75=+` zhov>w@VRSu7lo*mE{@tmAviVQZE+q4wZUN^WfuM8N)iFSK zp`1LPpdtv2tK!|qNrV_zmpe;~2IAs1WQJhaVr;31F}$606tu;0E^9r;nCLnKBW=?a3R3zt{bAWaRta^sFP+7W&x)D6|g$2g8k6r_kJg+T9{$NE8_F@*QJ1MAv? zRZdRNn0Sf%(nUy^>~d*D&%yih;WhgBo<@m*@(S_$@?hm5zE+HP@QkZs3^YMo)LPVP zd@2YmJ5JQqrS|=hQcTp0O{(PuIeYVoy!UWJ>fN{GGtXX-S0|=b54!NXrBW5g`RbNx z^?f-D1eQVtB2}|QCtEEq;rCd5DYcz`I!fY9F!~ygjg3G!S(9U9GCef~H`7&@*~O%{ zrrWXyi(x$3LqKJIQ7IL0&q!qPbDD;dFexk0&wFrH9qGV7bD}xPsZl{if_%pDrMXuIEd7HSh$?}X3A`A4pWO1QoKQTg8W%ENF|9|TC45L?|xLnlgm}ZGuYaIW&P}UV-1K zsr8*LSy{d#W%zaIl4u@?&*d?h6D$qjYYH)o+T~>|K%xoW2okV- z2`lkhshC$qp^&PGQ-wlK_FEl=vmE=|n@IO@e}t?E;&IwFF~avXR;93(&?B(u8=-g< zQVfQnBiHXQDHJyDG1VBXIfe%-%z4u5nB{m>e4Q7%GaM4&eKS9d{MLVas!c|Me3LPN zZmb9G_%3L9dYU|L{w*M?o44-B^B2wl>*r(}xI4eLsZf*;Oij!MhOP)O!RoGJ+#nwq z?!zYzhq(rL;Go}C6Ap7FMKB4n*`4)edGEX5kl9K>*7kd{FqM~;T3fc;MVXr^%inqR z8M(DoldY&C)uJy)Mk9HMEWHBvG!4jF865#+=e_0?V$+&K`z!?rgY*W2IE+bSW4|A1 z^4P;fDl)?4b|FaL3w2%?OQI-Ii{UY`Jw|NYNlh?9ylcq@z=zAzG75>V%R+6nDBqwy ze(~9dfoNzB_Ka&0Kg%u5iEt8{7ikGhqDPn0H-Y$n{hzPPt=sR(&%XLo@<-o%L*BXn zKlRgLNXjBqmx3RqJdy{B0fhm6Kmi#A(nIa$DZrSeB%4SuUL)m#60f`IrCYT}*aW7EYdn zaC7Ef=(F`&IUuD9c(@Y$e@`aIE1+azptVRLa0gmTgr~3;0`xH#d0*7pb;3du6PcIw zT3wB08jq~ojcjaMLDE|X08uH@?Nex0Amq_VBN>5s7EJhRr5*u8VqKOC^J>xzE{O@s zgpIf*6Lk5L;%OY?6TFE6gH%RWsI57UDNG5HLD9$Lsy8=Y9!yeGziE8;NmB2qer zaM)9%6{!Y>@U1`d!Z~^A*qE##IsEy5_yviUz9o0wUX*|TN6UbxdonwMY`D8AU;o;& zyuKL9spt9%GlTu z`T3vvG^mlLR4NtZ3N;}>q%YkEGTYhNktHAxwZhZ{bT2XHODGiC3mlT@@Ic^Mb4cnNe4dYf4m*b{mp%OdbT1-c}luzUf#LekQb)9vKklUa~EDf zDR%`fw5}85*@veh>>^p?Ym66HuiXM?R*-XN&r4jWD60_BGE!qrIr3j&kR_xlFbG6x z8nV<;tU}S4!#TpYHY{&>ZA0A^pFOoyi2b;tuv7`rAQJ|UAwiiy;hidJ=lHn%S^p_%OHTIs?@B$Y%9RbEBV^=F zkaQ1Wk++vT8J$Nwt4z!FoA1GGG;OkFkX9g$1@=_oc7cMFuGw6dyE}IjH1L_rBO^#G zt7>J1f}xC<7qxnZI#1FTTx?Fk1TBKDN)u#E*A4_;S0d3^Lz)a?aypd!X%HV0i2GSI zF@``Gz%_fdlH-M_DW1(*m`z0e#9CdV2uyjb*!ayF0=ge=$))Em$PD~)fi(rNrXz(h zn`qr3wo@1>);g3v(Vt^QDT$ctw$#NX3a9`0^^S}#FUpO3J$Z8qQ26|FGJ-@eL44Zj z=42EJY!8z}*7f>Q7s4weE`XUuzM^#$%K%V|<35$g!g^%(j3q7bWe>J$V78gX_Z6`0 zH!%6&wg^&k;NYma+Ys*N+A^5xk}A@IrDhCoWr8^+a(ijnD6kcPH%R%iJi{=%L&YTD zavrItO0E_|bm5p=o{+&!t-v@oacp~PU6sZH&tP#wEJCx}D8eAS4v;{S@~+`w3qUe? z1ZtukJvOldu$r5w1@;ZWCVqC~W->i#Mn$>(9>~E~UV<^?BRn^17d$4+hss5<5XFK~ z9tf=iHQ&|bk%-MEqC)fEtSBs1zQ&oF(}Z4YUrrpYVuF3C?{{SyN!QNyhOC1+Z*^KW3pY85yD3AZ7_yBS zx~WZyl5tGs|gDg37yuU#meH8@%G4o}yC{YLwOYsSz5gYKm z6tyIW8VHHNWUmH=0fK{|H&9k?!*^3**4I~bBb<}RPpTUv!s~Ym=D95V<%BYhDV5>b z>%<1W^1Z~OOtlblc7C8>rv)U*XJ#d|XSqMI2{6yG31-=Whl~cXUPTd?0vI=EgE>so zR0h1c0a2kbtu%vU10ni`=_N+i*G&*t>Rf9XCV8ax5oWHyWpN`KGQ9<8^VHNd0((v? zbNh{UrUhc<&f1H5^~8KH;5?H^Lb?rP&2V*5Gm=dtW=E&<@>CC#zVwbHtqt*dJ8~r6 zlBZ6A5bf3E<aFzEb2lcohPkpBe={gFK{X zm;ze2OVnam9y5F&>~ErpBWgAfMmOy#eZzbr##}I`Va8oYMbrqwv%%Xav72g(jjVzj z9F}Q272VDWWfnS4$wd3a@-N@rE>%mgWjL6bw8v6QBfAXIXaZl|#i%nv+Y8l6U> z#|s9Tg(%Vp`il7l8GI4ek@j1X$92x2CVgfURk!VmoSYq%(PBp~a0{s79T~^ukD=y& zw8Y|2DDT~XFp#OQhSTzCZ&#)Yq$MI*xmB|yW}+5Yz%vzKRUv~ikks>MkI7s2x1@#a zuLwb{)*_|+sc>HE$U;yxsJk#1BUR#dAfojoN|c(3t|92x8vBD8A9hdTnA~LWi*rIl z*}Qw1KWJj;_ZBwq-;(s*FUze5 zpyGR=ZWc>Y4q!pMsDnI43xdOxU4W*E2|pJ z2elrTY>VxlA(Zh_FH>X{p6#D;eKeutRy6Q=2FfWO4nyObEOqP!1_@ECQ{V6~&U!TP zCy8}!hH~~JlUwwH?@oGxQB zHW!dl&*0b=&{_pmMQHQAHB>c6an336+q?4YTutVZ`_dY1$kjWj@@>U3UpBCm)PdGt zn0(>-dBE?drc3hOrMj%|y@e8SS&o24@%AIQGSL04$R>gVROyQe)JntQ@fvKtAQ_7I z*F`dU<@RmUe-OqQ$g#we5k@+gd{YXxX+!45%nymP5V|0Kk)0&R?+Qtg4Th;jRnE1U z%9m#;79)9Hh{<3cE-JMk!T3f#P+u<2j>vNh(-1C#V`mSQx4hiEyCfYXU8hlJ*#$oo zK*LVWqMk9{m%niyP_~UC&&}VF;Kb)J3!4(LHwwNl%vWW+n98Nkeo>CS_qN=>bwe(m zo|ixQ^EZ*7`0}5>n}P{O-CazlOGGQgO*MLCWdqr2qDq6jgqd}--3Kac$+;s_Qb)x( z!f_+{z|iiggZU=Fckn%rn4%D#EH+?v9i@oH)eS8{n=+3>kdnpe#ML{D%~%(eWD2d| zCP{5l4uLTE=`R86=5cnWAUA9UCdNb-e`kf4*chA!_t00WB#)A&vz!oYYXn!ck8Dd1)=|vT3D!g>(R?S9h3CnEvbBpb zo(zN`kG>riFd>fj5escigPRHPhDr%CLd+3iE*H_ly_gmlx;O1q)FKqDtlQJ7*hAzB zHy0nsTm?QKR%ohefvIc5*Pod#%DqM)^P?rX9*6Rcdx3oMnMnytlk&TNa#h~EAIVH5 zlxXr9`I%=oWv>4~Ht$}M??6b~^;9a-gos{ zz5n^CDtM`$CVxB4uC!rB0pdjj!LhfCF@m&wfk=ulS(VPjfS%?jv7)S-_ZDr8F)q&V zik>Z9i1jv!O)0FWVeXR*GwNbviur6f+`>Y46Wi*ZLs%xz8?ML18AHowSe=7i6hv-0gLAS?6JGB&y`cUN)0opIdztgN?}Wnp|$B5zaA zubnEWfgGQmmd&koB$Y+2Za&;@7?s2^9k%#rBFy+Gim=qxh*dtZIfb~`0uF6+SGHlr zoUbsSH+7M8DBnnBC?U*n)F7Z|0vfgv-@sn&tn|6-G$v?h4tDuD;*nIm1}w{~ zP@n_>eNqgmp&-OQ3~7u62xV!fDbF39)Iv|Y+n1G{J;|{%1TtNP8wo+_zr7Bm14?`Y zg{Ob@C->#_cvoJY2V`yBl|s29{@cGVE0uBSS8#7RQZt}wIur8L(UY=?MD)bWWfZCA zqyv{&%++Nd_c2l_qYT_qZc4zzb-G}53!X`6gD~?5N$M-&qp~S|!dPiF+qVQDdAitE z8aFq$jY7&`;*}b5bq|_G5L~yVi>b z0l*l~rFCX0%c`3+pQZgP@1wiJp*U$HIbtLA8Hq&Y3A=}C1t*S{v;{?6;{Xwv&-=ewdJ`+TuYhB-fcuW#LWx8GOm zYJn0msPjM?o_$X&1okXVG{~h>$4(uv9`{zr3D<5T8#4^QZ!om-{Z<&h9%T~1thY#9 z&=*4z;(*byF~Hfj^qO=(J;UXQXsuxxapc00uKMe_iK^6VyOQViaV_Ysp|t@m$%Xl) ziYy^vyzw0bUubl(kjk6O%<@p90CjO4@t_a)SHQ7PFPxKw{H$!Yk!@$u4{VRxFo9^M(V#4oiws!@Ka&i4!3M6(u)w~f+Z}RZFxD7hIe)Q4HnoNo zGtXX;tT3Ah*wRmYZm4?1AGm_4xmg7W2G6Ia$&6X@UR&3Hq)|tTF!?A~fS*sL1jsxR z(#?1Z0Jsz)hZ5?wowAGpM(4ePTz!~G2j81GrU)w@Eud~+L>YJXr2LH+zaS%^;KQUS zmDZ?Sy>d+&sBKS-PhsLwM=6cU=Rg0mGBCh5j~~-U z>n7Yl#D)hwj}*2u({$ zh#kr37!Xe#TH4cY7NWMCQtNP;fYireHIt|S<`6eN^Vz>C7oK@WKhF++<>F#1I4agi zS>lD`(xVd8wx!OdY^#ut!zvUDvc9zeiyW8Z$4=PSeH9klhI$>-cxT#Ab6JOp)93f2 zC$Yg@Z1QOM50Up5v5cqkSPw}pl1c|em>5JgSPLh%V9g%PXjWP@W3oRv5-YC&!4O=4>X`enJ zElg4$w0J9z+DX{aWps_r9hsP!Ha=QRqXmUYL_=3e+J#Mbgv@Nb`}8Y6A;0*=UqoI~ zF*?b`qN@*eIb3q&xDCR6T`s^?St9@ooX&QygM^e_E*!IuEBllWlPt5lM1BGD$ET#ISQHbYJ7io}YPuS+41H5G~F0^wLNUPP5s%F*| zbq73uuAfs{Lf3OxOGA<^FP)l~FZ{x<$@z0ntEO@#6l>8vlzD|~HBf`^B3qByN{Y#B z;B`7CmS8=&up&4vx+OM6d$2&3b!kz$L;+7egJg09u$v2h`r7W38pYIdujTL{yr;$s za_Qn}d1qxu?(cS7z_sq%vA@=jxst8(L^7CX?dGwX<=iBC5qT?UgbMVdB)(R(KwgmW(a^ zkTE8eGsln1ul~w!$n1$Tdak}U8~|~#`-N@(w7gu-TAIJ+<}cXzJ<3bqGUVMn&?&$==H z08)}na4rsMuH)dH*3{jCmc&u+wrgjoFwf%#0AS!VT?|pP3(Q1vDOs88J9c)p4BFhU zOA9pl3Tg;5$eOcy<`7k#XiQ78-YSxO4A3KREhFU-`L$pF`!c!klvyXJmII-{Iw{CJ z0039L>gp{bA*)yl0eCM6>P=Wn8&-RN5%m`2Ky*#cJ#&!rV%@yNDknWaKh8jlxz9wI za4sO)MP20&-o7o1wU#OCdP8XUeZn|^lH`3ZYzQugW))Ci8s%*5UE6*#*4LcCv!z}4 zx`=^+1Gp?hRDt2b=uS$QL^8guy@oQx z`^CjImq2+`q3wphGY!zXL<}*7u7wjRT=fgLMgK#g_HErm2l5F#u&&6eK{<31ZKI&r zWz%Jlk<2ydGSeisr36#?Q_?hLYfy|tbxW?V@2VH5j910uH6=YT`3D4(4ptZ#e?G`T zykQUHCN&u<-5SJTPUP|wgR_%tWl&->Qil%A+C4`jn9Tw5Y*Q*L#twwrS$Brwi(S~ns!C|jOg=oViQTuN#EsDlC6s!16pOUe#EVLV4{}Kk<%(!lF{Z0fk`Gsy{>U% zEd*}e_5zcz36#?U{G6B=H_51_YGNDHnh3z_?3ky(Kz(S8V6y@O|2%3UQxFOtnCIGq z6}7mG8k)ViwXMtUIDrxSlHq!qmbo6m`|OK({l+!fZL~7hL6hFVu-@FG%>D1WdeR{T#^1F-Ma_0Q z9hjKnn`!j?q3CdMDFPv_q9oQZborY(o~*AHwP=;Loj*YBn*o{D!56s6%+%Dpx}Yio z@!a&JUV`@#`o=YK0(!CGe3~e;25jYlKwiIbLndbzVNr$-Hs$VlK<2xiQby-QAIJ+5Ghba^r=5wf|>)M8t zcJ@t`O&Mc*Vy!+h5PGI*TK%K?c`&4az`LN_>2s^&v+=-!$31_}R&7Pl`(>+zV@eGw~dwW|O zvkP#^?_PUX_VAekg+=PadU{p^$H&K1xY`e(@yYJE;2lIl6bfk@ozld1^ZTX|Fty^9 zA$u71GU*V<^?vB9g+51$>D2?@A}8Bj=y10TpsfqwS;sv6zn9we+JP-_`GYdBxoZSq zeWBB9%XL)!UVP=JrOMqOz}D7w)@5nwfldUgckBqEkjp4QaajYm zuAtU4(W@^nYa6Rqsmh7D1*rffl@K!+oV7;)7SH9kZ&POAl#0@EY!QSFmtiB^^o>jcXc0z_u{x6yD?^Lp&BcE(TuCEJ<+4 z#~b3QM9dm%6&9PK19u@)S5~skmW4$(58(TNlFW(|18cdeD%SiUCyl+D+*`aSQ%6th z_S=p6rY2_D(g?0u$7kw*&QzcRj&Hz%QjnGFw{J)ulRiE*B_p#ln%TRFbWP68uXx?9 z?OnNg^Lj=FiCyc*DO2(g99ILE?1LT7fez7QT%E_5K^Ba;v(a!#TfGJlWrQ+<>+<&w z;vvJE85^_aVGCGdyBB@4E;5sr=L+wM?m>~&K8DMYVHjrgyFpZmE<+Bigx!Lhz^=mb zJwMYDE*m2)--e6nXpj`U?97vu#hakpORyMlO$ef1YLdA`+iuv7lj>GaRD!;@1AeL{ zY1fl;&t3wD1$qX27Pxei%Opv*ATv#j+a!gvw6ZMwdwV9&(xuua*mHiAMMm{8mn-Vt zUL4%TLQA@?29(W}=(Zl@{q)IVvtpSj6`vC4n+BFLFbEe{oYE)mSj%aJ3SAS&K1!AZ zIc%(X2+@pnRjyf1?<2O0Z!9q2U=>Y;7>ezjA9RE#7M0MgQ8-HD+x6UDzau-#cV%?` zl(^n5u3%!8PDWK9i$Na~!L2PGfclu=9wZ|(Qk|+2E@}&pZ)1?lt;7ms9Txf4dsj8- zqjj53eqZwj=WbMIHGYQL_?I{eKQc-Y`hi`soT?=j0T^1Aj(0of1r~|AB+@YvnHW5~ zFzS7qz&W?&I}Go3TX0U!8~&0Z|7iE{FuTI_G65O0^|C}#o9%3yj3$sYd(Y7Lbdw4b z@qQ1!oX7F}joOxU_IB*%ES3)8)_W)-~!NGJ&;$d_?35Px0&QJGEG;?AV{)h@v0JgE8O5RQ*5+TXG@*IYFq*X+k1<}k`g;;bc9pH! zIq&^rP@ZS7%R6xbxN*TWYUZ50>iDGO zfvU7=jV=;G5*+WNjNIC<$==3>T)%ruwzqa5%mF&m9f&yDftMw3E@sAdqZ|D>83@aO zNnZu7`=r>c-P7HGe5)7+iN&_AB&jXgdYL22g1cwYty7B7^{>*^5NYTQS^8nX?|YBX z?^eJAIOqiCi8X0I%VS)#v09V6cx>X8ZsujVEZ#$}(?nvoZx*j;EyS$N;679e!DG{| zy0NvT_i^gzamf*_p)S6U*n^8mVZR|o(&o0jytuX|>uVdj&tu4qbB69a@!WzL?|^2z zq%E?orG`Z?GpWidCZBShD!Odk3PPuY%@na`i&sPO#JWZmQtD;%W=b8pe`H{357Vrm zUG1Ky8tdC6CR?fy+XX$YfJLkDT@^1BXMA4Zs%Hj4a7mju);TdnuvTJ-MD9JvH@F#C z0R&Fo8X|upKV2 zK_K6F@IaQ4ZLh2@sqh`h$n4w`apBtH9!qmbM#r%F$;F=97oQILo6T~#*ybU=X}V4a zU?#TfOAaWkNLDK`vBdI!`Xbk~*tH&>HN6A;OJXLJf-pIVNdO&9Z;*xA<G&x0>M}aCb*W`X$+YcYg2+q5U z8b=XKfM)tESiun6IKJI%$i2-?Y2)=q15g%0I4h%iuJ_Un_HhYyz^dmO&P{qav-IkGDW%$(rSNdKkQm1wS4QAK3kVX)>H$YW~%n# ze2q*7h0tQMOg^-oh&I83l@Pg*H!Gry%d#uAyNSGmq#iBAT|d0ilg84<^IY;S*+KPIIfDvDrOiAmWjK}+3bg7 zDR|SelpTC<6HBN%8={hOxrGMiA=jLBGKyqzI2rDM7@|s22X}27m99k2 z8sxMQEY2*$HB38!kx1l)6eT^tt!b=z%q5v=$nwxoIwlt>$pcpi0l?qa%!WU;HXzORe_ zH`X^5t?lpcSq{q2+=cTU&W$-%Vts90Zr!@6yQpd+&1Z^j=cbLD4$e-1FLR&Ogf~vI zZh7@OLqI6A3j2S?bXXyI_ITe(N|&lpnz8YF4##J(I30Axn-kjAahb`AMJ0UOv(>sl zSsPRgi}4Ay<8ndSs2Jkesb8zfFli5GskJT{6Pu%z1(PJ)@0 z&?ISdC=Iiq#VrCG`z<-OuppD8RfLkJ-E`T{;N~DdvqY(HH#f%nP2JqNWu}g?m9RQ6 ztVHTNMfc1utz11N#=4RrtsgX04>cdAuI3{L*bkj!E2IPUkm04yA_mGvcGYc8yHU(` zMOvWInn|oJHmc#ywWSudq$W2ZWumY+G>T$M2cGU0NB5QHa>@iJ+9B9hFcDiz^(~a< zYs@`zUZ8af-XCcgx|i=1W1cg>H{`yq>d>RJ?<+LivoC z+>`o)fIeK?=5aH#b8w^6I=OrvcD=i;WIe0hy1lIpucIrgxZ>9d#XXM$I9`@( zq*>iPi{C?;dgxZ&Y73{C!YmdH+9L-irxo?Bi=#VYnbqeSa7+?u5M4dxsD>~w+aA%k z#!03PZY`s3NXhNVaSW+(PIjc*AL07_o@#ugtFV|vcG>r862(HAac3KVw7>lazo%OS zaz}|H)v}yCdIHcFnjRG8AyC#ha+N-El%(Ggv%9fx8s1aWvg};4ZoCs1B{F;0N2a{M z_0@KsGM8$Nj2pITGOde#EKTT11{&P9R+$y1=>d1831phuMYPK=uv$!a7cQ%At5 z0TF_JFQXuq^jgx|-O?meCs>PNHXvK=O_D+58XuqC{JHc%G#AtUWVXOH+?{WMPHZfX z3T>A#5C(D0ywd!%(%5v?NS2eB7?#8asD!$Gh8CJa+lHTJu-8qRayRLa-?M>8oQtzf z5lZD->&kj&ht6jLSTyJ=@eDQ28(~b)Mhuw!)Wn459@-O(UCm-Y$hL4QR$|M9s&TMCGN!+%Eu>};K zHwe5mB3cmJgbek;`LL|7jgPt}Fw~t1GLB5|ElpicY!Xo!P$w=y7K_I0nh@j8Q%jvF zRjph2r5S8f0x&g1oBnlyz;2CUu99u!=ysyhttYH7VoM&nq)1m&NtAW0=->L#zuysR zlOE64!}+G?r&Y5?5m>o_n8IM3WCR+{#_Trg8D}rQ0E?+h4cUCJX?E#3IX$Y|%5oQ? zpS^rW)*7JagR*Sao7yeOd|_;CQvVzU`KPf-FvOFyvi0!3Zd5?c);Wmn?s}@_#uN0~ z9TB_M!;*KLC8h5ZOPIQKB&kK6Dhm^A4!C@=V)MPhhBVx2+_#{Cq}c#v#ij>~(u!R6H){~rA*{vSHQj}KyWWz0fiPx)0Lx?AQR4e< zPcE~7bpr0J3i^J1`JU7^R!r>TZqqhjat_MG#GZli&O><4!u_nF-1H=vwTPyqJ=C!? zM9-*8_Kh$k8MsN~E$sRb%|mRq$s&tyak3G(aWkH7nL5~cPQ-2jn51@FZPWKUXuNhP z#wGLi?{|czQ-!9k7GgKb*WO~^G}fio)iw88%J4Fy=XVl=?2s=Zx0skXlK}~GMky?W z+sod&`j+fA`cj>nw&yW?Q@7VKYsWPaOqDAu6~?4|@j0nY&&$?>o4Rq1`5Pkx^g~vf z8)O>oPct{{;t7v6a~+7G68#MNYm%!$*g;$KyK(=ip}i8ZG1=@>=3RK^#X+wB0mB&H z`^FF}nnivYPPRT^cthvOP@5H77EkDAh;f&7G`)Q9NB_W)9{A5pP)K^>FB+cw zCByqZj{ROYWplORB9KMuI-$ez*Tt6oSpMQ$@@1gVc6aIT?~aB>IJmwyK(s@Ym3j~F z|Ks65=p()yjwfmy3gihJhXQ%R#s>=I%()Bt^}@$rkt&$jk7{sB*(zxGkNP?spZ(ky z^m;$6!TEdU(q&x(|H)6i`k_A;OwS(s&EXe#f@3F6%C)QS$QlYfFTDJU;&uLYwa0zK zybkG*$*Cz#EO~AI<+jH;I4Qi=&Fk-~;0d?+SK>a(LFHn8MTB-_;h4@HpY_Ac;UgBp zWx;!>vbn)t+HR-&*tLrl!Z+V|U6z*??8K?eTK4v6{dM^$2R#a}%aq2&M*TZhAL6>+#Y?ZG@*^C) z(Z_8Wk6Z)F^*EL3qZ~hS*!xinL$C2yL>L^0dB_ts4h8arjsFL-yjbcQ^K(7`0000< KMNUMnLSTXo4c5m1 literal 0 HcmV?d00001 diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/dark@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/dark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4bbee3622aeee602680ed8f0ce3f567758535388 GIT binary patch literal 48823 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 literal 0 HcmV?d00001 diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/dark@3x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/dark@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea316fb2f18c91f46b1453647a44f08b0eb7b89 GIT binary patch literal 97501 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 e)l6|*5o>RRg9{T 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
      #3Yq5vJ!$s4M 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
        SkQdvZ9(ek;v1y*EeJ?otgx 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

        rd5mPZ|B0qbA#jo{O#jn!h><-qw$ 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°KKX?5e9doX}Y1|*S~=PB*@SDRaS!&ud&hR9p_Y{Mi;fZLCMz}K>TGw_x5 z?~PXW=44IQjxtF3SabPyuIiCdjm%N#{{R*IN8$Z5!}HrkY3BX3`Eju2PDdH~SHU3? z8{2iTnna%8aon5%-vYkY@#c$ZK8>i_-m)pv{{YfMX9R8PpnVS&^0)SU6IzKhOKD>x zgCqKMKb~u=32Ru+ae`@Y~~- zp{7|}XjeB^2)lC~nOrQVfwOS=mz-c@A4>AC1o*E*)ikTETg2M6zM9Fm6JsR9-arQERLiX1#yxj}*7vS34qM=nrB?-4*EG6!9O0ZnfAhbvcA! zDP)mY7)vHTUBjp2_*I{d9xT#)WpAcwx->uO1w@eE<#q_pFcp;W2Hrh6^{z!tqpeg- z&G0{hw674`-Ct{$js2x=zE#DeA%%j*2k%2OW%qU93;-+E^w@vlT;Ig@8l-aAh`!Ug z{{VWyG5)Pce~{xj&$ku8{5peG@h!98>GyE1t7MB6)wHEiTqZbH>dhhKFC_LA?J?Jx_E<}ib(O=fRVkluYWZWqel^!T5p#Fo?*-{r*Cq(veA$?p z5=1x>bMrA7>6{)iDRmzePo>{Qtlw%!QPs7F+j(a+3m(UdA-umYJ4SKN{^0k^a){@;n);@kh0XYNfTyC-8jaS8sKZx~fBRn<*polW;ks0|c z53nAU)%Z%wSJiDSwTlZl<%;YOut)O~<%7w_FfyHMQ^cMx@dIfsr`|%52&PC_#mAO$ z&pkLiU~x{Gah8TMNu%Ulc7GD+mydHQTv}OMjwO;ZP>C?82Vzec2a5IY2I|)LO&8k+ z+kp_@l`10K4nAB3IqWNATfgxJjiX7fy~I=7F3qAe0r1^OsJt_DzBGdB=El)wl&{Mn z0yh}zg&(gStGZIUGElMA*lJSg7E9$YVZUU%R459=1GRY%#GM~WTj6!5GLaRko0$_4 zkC&VuTIw(L4QIo;%sPF=tgmlyzdDbZ0AGA|svarRmsQZOBe{-9OU6n+d@n!+XQ@^! z>AwrFC9t>gY*%*DTBIIy@s|a+`T<;qxvqGTVYaZ+qmIs533gza!geOA_-1`s=F{|x zoB3A7aS>p+UHyTtuXNvr+CA2tHO0$rxRN0h@}2^xZN8L($HG1{eMd}&3;jCcLva>Q zPC@EOJu#YphCEGob!Pg`u%_yLs!+cr{eLWRUfc0A;rE8T8>bhF>90zr_liXTMvwAx zdGFI3Yvx@GU$n8lUkfB|mQ3Lqa&pP$9x=hd=DMM=%_&&&-xl~U#D5SzA>5{wYPOI} z_TovU1yy6)zaxyW0Pr~Zjw{Z*cj0X-!+O+OHSSv0AXztbGDpB2J7dznK=f-nOAist zsoZXDIF-}G%6GQlq(!?p!weFBwesKX9pT@wX;!+u)Lvwe+^8N|!6HIIbEw~YW8a!Zx}!!QS&fCf=yZQ z-}a}7^esb2Y|UqHwq1d~XxAM8uQh8an(XfRHXJU~(2xGLdWSkcMPt-$EWQ=#zY}$x zcIn=G48E6bKI?NcD8P_ojjX|X7Wc1`w110Q(U(Y&XK2Sc(Aw9p(}3Ee9bb*d;Kf8(&f^;9pRX??I%!z@_)0L&l`71 zAnJaV$5M%>Ip6;P!fWBr7}-9ts89BLr-u)2PTXzipjXU3C%U@VZl<)gMTH`KZk2+r z7oZiD1*V~>&RY1jz3F0hfxuJJvGpGfYFAS_&2&cACAXiH1KzSxu{S=5@c#gc^dAj) zUPqGYJmV4ujb9`%?fCbvE*j_eUyf*K|ekS;Fsoc%1YF3k7YLQ7A!mLbyfC1Q>N-D4; z4Ux$9uc0qKAy{d4I)vBI6^<|fGB3)gI2;asYz&I|>&J&gxYU2)ELiStrrN0;wCJFt zzwqR31~ljn1_lLZ6l#tuOxCrltzc@G5f+vhRw!AUt9KDd%>2_Y0BEP$eSIc+QTPzVh2j&nlwIE)I3!$hv4&d8#yCv zXEDCealkn2YnQY5jilaQT}HM}7IoSSoV2I-u)@BY@y~-iIpVUKN)vG=Hl2l22dLw} z(!Obz!B+knTjqON4dt_iUEeRs{9AFrH3$v6-3!A@;rVs+5kvM!8*v|aZtM+R_dbbU5xSh48$Z&C>ZZw2I6e z`CD_iuY7g_w?KUdABZ(e3FNhyW)S<4R~P{F8LppIMQ9_sy1;Ytu5pi;bgvlD^_#1Q zTMa{WFK>@BHv@rQ$$1NFOJsJi0j=dFdbUQ!6T z1oR`*>t1j?MW#t4BHDah$izn(99Ev8c zss8}=S2VsFn%3ndX*P!Y$lPSFO5M|MF-pL zlumu@?!MKv_UvqJ!0B2Rx^xf+lI5_9GshJ4l1wb1U;}`0OuCv^w`4hFl}K)Kq~ok*SI9Br$&I<(1cZ-~61CtUhhE8z_a7_Dw@rd^6p%b(?4lgAXIIJS}i;(!L4 z_6<3uwgfa^cLS=P)q|$Xb$bl5>Tu!EmCxR3cNVN( zFiJN-dLKbR4Abr{ZPrGAk-7}?#U#4+mvL~~J+n6K0$qmG`c_?mcbgL9%t7~h56Y)o zO*Tu0k(3ECImdrW0HNX?B5h5rkWR5j8y4i`GYaE$sixFtxzprOt!p7rK;(g4(@cQ1 zglf}CjFXNOilqjbdj-L}iYU@nIc7X$iU6Nb@Wd1NdgAr1=rr?fiCxw_$O8~L zY6WB8rxvq#U4#r7m+r5BVf3#j@g26iExob}Wq48YyT62y$gSNf_Biceg&4O0ank~^ zJZ<7DeK$*<;_hZug#)6m@k#tERET>XJ+0`sW8z+wXJ|aQphS63WzWdpps%7eEiyfR z4bIttLjXGw{zZJ@@ZVe2d{yH+$?njZk^;;-Y#(>^ucY)#yUFd~v`BzO2PE|8wQO^< zn$tWrrP<%baSlY0K78-%e&8=GNS|e*JUgwJCT(A-~(X*bUxLk zb-LlBg=dJG&T{*bcZA>J}dlBJiG}9=Bw7??;7^ zhs%T4HRpQXg&n8HSf;a_y`Xh1o(Lp!fnQ=@TJF$VQ5NM3@{l>>u4_7zHHtCxYZ&ab znJzA{fulGWWyPm#NrBqypN7uAyuI`^kxk%j) z@7^XTtUVZUlh^}P?Jjlu+na4gt)!Xclt$ZuB%Yr(Nc=14g!rN39}U>9nRM`6Btv2e zK*&?>xIBF-Z9C&89!ouQMS}JTf;o@_xmkK)x;77~&3s2G^*-CBi~28zrIJRrn&~l> ze<`|cKU(hJMO%pCj>&>Yh6-`t+PE998TbRlTBLWk*Ee05OLBQg2Ey4oA1O^$h%<l)S8sUqw`M#0bojB!?gL{eddL<>3` z{~UBYm)0^*CBsT>(ldb>>P9NWx{JS_wv4gF>M@_Zd96U{7U=?S zi))R(U(@MaKEAj28j9Q6N9J3`tB`tb_pA1AD3Ls^+d$7wIIG#Yieso;CiHyd1J-~V zEF`wJxsS^eG~pP9^%VJZySK8ES)eGPKIS@oD(-`-MKrR_EC3F9B@z4wskvgCq&X@ zzPgGRMjJ*(;7`(_&@42`bkDckA_OCJYn_Te3JOfglI{YS+YnuLPR(g2Wi@}T)m1sgh*{iVn5Q3h4N)@PHC zO3AR)CYI>iNe9Ti*OnD;NAR|%tzP*MgaH6)Fn;Lt73pyJW(_hU7=Zlkvv54nWcE5O z3hLD?ZS=b|;zkc6p1G}EM&@BLZ254fQ_v7ABTp7uTzn0VIRUyFzUR--8*lSr!}v846@nB0!#K*{_@us6z0}*Z8k^GgvE9?(nI7)Be7(U?{1(* z5_nS5@tQfV<(=`8dw=z-i1E3z_+{Zcj}Yot+*=U)NZGkT82~p^kI#W#hX$yTUHO)> zF4Om!tBv@_;C(O0J_^6lbrpFfngc9kedWjZfBjU}fP8~<`(A6hzlm)8HSqagOR&@# zZOhE7D@Y|DFf=^uM*0)m*c6=@1UlV*$_>b_~?!xy*n*KPVFsz~{ z-8zwi=c;6M;=YUUFN$ouGvMnc@hTl2drNO5iC)-aT1yhjB#5@jR5Gyxfyk(-FLuaIS3XzL{wQhpNcStN z>1!D{0VUYu{@I>uvWvvt8@o|+F0pLKZ~XL8`ev}^@Rx+{fHUbQZ-0~tLD#xaMg?wxA(?RgJg*-m@R=R4zbWt44ta6K-ZUFiU^nZZycr)Tx zgJUyG8frEv94jTE`S+aRn2h7)9D+C?*L5|`4s>%=k16zKrvl$;a!zM=iPz^$VC^1& zb5%6?V$;kwHUxQV9^Ij~{I$z}!m4YxX)L@+t3h)Z+N}#NKOW?J04s#?Cx^Uyqefvm zn3~=`lSdEC-%?IN`c{#R%#WzgiFD&-6qjrxX~Ei6ho_;%aN387<>P+=)X2_zv}c&cJjFt1C$7%xL~A&<>v0I)21x){t@w9U(sk>C zG>f}inLf_4fegtjHgYf(dC0~{>?*EkQC|+jcbiMi=^Q+(0o3{rN?80qr`zfFMQ?Z=hLkWrzyYGCf^e5K1>)#6N znv58d*hK#Tz*u2`^}*^W0``yLdo4m?KARw6jz`@eg>yQjZ>Qf&99dx*+5(=xTIqCc zA6?Tkr)`n5%P<)HtB}2sEwx*lTZRiT>Q6KQ*XSCD*p+T4F3LwLTjd0MS46sx+g45f zViw~YzEBUfau%XE?KaKBvUT({$h8R;FR}s~f6bBDFTEB6y}I!1vFQ?B8H#V&u=m;4 zxlLR9Lgv)E+&oC9*r%%SSMV}e` zUe+Evi%a{tpJV3TnEwD1FCI_-v+XCnQc&wIJY z8`$9DwEQV${ga}m%mhKW{&)aa)ZssZk0%rH4Dqr-VSQz&wmC+K@y|?;8?6-3HlCy1#_*%JpdkbrZTe$#Hy1G+mGI}1%W&23# zx>T_Z8^YI@ktYH|cA*FFAG^2z03NTS^v~N1!q>Wb{{U`yAH`Z+jkjaN65Lws^v`eq(#ovKQ`gh9E^Sy(@Oybv4vb?i?csNJa^;S zv^gU>Ns9Jna0^HCD<`jRE5bZ|@h(GQ4W5s89GB5E&*=+E3OzMaL*kR-~3akK;9A3uQcg4&SY^c>YEvx z7|!3}t`^_I8qTFWCie1Jt!@Zr{pSsiaz$v#qgrZOJbIPBsVm0E+U=qS*1 z$B4D;5y$g}VdaCIe5>tW0sh_k#*<;CcyGa$7STlamj?1l)GGe&+y&Ti#|IevYl4n3 zSE{39YLMlP&&}T({7CUfj;{u%E0G=_8osWPNRP5`zF5G={{XJK{U=Mh@P4%|wyq3rnDWWWfTRBatzM-??i?un ztN2IZj}gW2zfOb1qt3dBAcExHKjiQJfr(gdY7dp4hL1{snwX z)qHOPcx^Q)?PP^k7(keXWkuxRoOBiS?4BLfw8)R0;(MrNm=ptGVbijf=Z{MHTvQUM z?0eXEdTQsUtRh*N3@ba0!9y-aNXHfM4~n$CSHQZir>HuY)9$Vr*UC(&1o46g72JG6 z_?Ph`;f||iXC|Qrqh)xx{{TsYE+XhzTaLc@BDbu*DfmlNu$p~ZB)ybJ{-o`~q5I8) z{3F=L9p_^-mIfJJchWN!9+(eH;p1qe$6#;QWrD1KT~T0&{S_HZZAYuj&UKM{D)cBu2fvs$;wQmf= zVR0R$%G^E0ilo0X5H_oU+ppf}Di(!B*jPL@<5}S=stB4OH#$p=s-1J_a4VAVzs2X% z^+92y1>Ctr87vB?A1M2)T`kAO_%(egtaQt1E$!xsq0PX~7EFRebQrG!(k(P!4G1OD zXG!jNn9PjhYO{Ovq7=zKn9wcsZxnd;<67~>+FRUD4q*knyJ-wcOL?6)61)INsvb7A z@boKbK8X}jz-PpsUn&^#qthPZxJ_c>;!g2*1JLSRPJTRe_(5P#GYfW z((bPG``I-`fWaF^%|3EylAXRxL4*Nc2jBvJnWXxZEb2WIk|hF|Y}YHe3hx|Zj4 z<+QOZi{+^Dup2#()|HI;jJsV&!M-QIxYc||pkIP|Su7gN==yHD(^-8Gus!SYn9?J5pBR~OyV`-B~WBtITgM-r`6N*UdPS*B!(%$EW?b|2=qkp) zq}kcpIz70RB!WWijG&CJ4tox~9tiDRWa=#ZyW45=FPW08atfbJV;HG*9dA^=wv$VR znl!kJV>eX;^e5?FYKhUzd`;mkH^Tb1rK}BAV;H=WIKrvgsHX$vUI6J`?cann+Z$$W zI>bqC?Ue&KABpK&ItT3hwl8rv_VvPL%M}qW!}p{{Ra$xUAVU-ED6KfMz+% zMX^E7MIW~|$Ix^Y=XQP_78<7VGsh|q-2_*o zc*jE3?Cmu>woxh5W!pI2&NKW2t}B+&HMq5#!)}p&@Tba|s`d264W#nv(z;mYFoeG7|Jm}G^f$2uW5CpYe{=|a{&7|Afp}z zJxy}@zr>Ah{ynkjO?%|c{)%9Xw)5&1w>i&y8gj>MZi@)80UmE${uSrfP+L!bEVvJ| zo;rO+ao2jc#64O#p^^zKnbaRBFAMEZ+iE(_hjR{dLD;&r(5bD zX}WFew15Rum_?{~f(v+8ZITl1N3BI2t)t^&;r{@IeJf`~k6HU%uzi#yNH~(7q-bZ) zEO$DDwpL2>vhl}76x)dWp$u1ue{|XBr8`f1jU!f)@!edr5bC3XDKB*?FYXMx2bJ6r ziZu-iy3|7254A#yL$(ozddSjr`y2bGo?Y#7xC+Q{exHSP-W{>G@f8P3f37$7Rm4*|+yspM-Z(wY za{dyyvCwT})!<-!`S4JTuTQ;QCa1 z`Y6AeIihv*LoVh$549!T!|9i{CgbH+kw;IIdsm@Z*)Y_SbVGy4+;|?i6anV(_%B8f zNp7$W;FZYxtBT|-TH8#xmffLA8aBcf>BW2B_HWI02-*WNKAcyAHH+M8FEn^){KNAe zgB4uBdZvvH)y0sQ6-FQ3=tXTo4cenhK`eM4habwR_+`M33rNtooZA z$~p?|q&5%+joCp}3ZYna`d2)QTNp`kbsf722MBrEI(t$Zr!jBx@WYQ<*OuzT$xBU+ z4_43dnz1gWqFH%1vUzJXqbr_xsWmW)OEgOfQcDg!1!Ogh!y$nQA6x^U{{U5Vx0?5d ztSzOxo!8~#a^n@okBMFgEA}aF<_vk-BN;#aY68boV-)Xg=Q4#?01nCr;p9@a-SrTy(z{{3#{U>Dn}N-OalPZwd1IpGrm6wNDs3=t&3JM5xQ=H$@H8k9yJ! ziNZz%Q(9fyPdsgumSXx)nv#=k_e|Xsn+CDC8_hU+#+Kb(FidkQuI8HO~r+KtGjzD!vub zZJ3j8Yhjy<^Bk})chrU-W$48HKQ@|i5(R5=DmJhHdw9=#65AjR2~5KtmIcI zK8eH$- z=W!jYcg0Z4Z{mF#^4lt#{F4}7pnTaiCD`5ZUGdTG;nSHiB!OlGare4^Dr9!Mw5Vge zeX=@dYW?c5;_tJ`;(IHrq}^@yborPZBXfk~9VwESWK{DMF-}Kp!b)?{rih1$Ni^Y*zXNw-?{LA#$=g$K9@n z!mp=lR&h&aLy6$tvMY5x59L}BKZN9EhgPwNU;xSe?AOfRJNQ%aH^x3QvhjLr2$1RW zZMT70l_6Z@>;Q02diw)fhy4m&{{VekYd8BfPQ_Qs3lSR$1mnF_U5r$ZCbEZE(GS`# z+?knyX78W(Yr4`kYlMq-rNc2e;}{=G=(PG;-yI|i0G;#Ow~4hG!(psqVtm-ySqo)^(>tR5*=?)E8uWsQgK z)QodpKjUABw>MgbrQ!J97CRZ94dISeqBy{>I`D;@de@09t~Dstt)`I1UHA-r>!O`4 zJ>WjS{{V%J6~(e#No~3*SIqhSJx1OuTS@UAkF7<&OSq0r+%kd&-(~{@*UvXkcmDth zCaHvbMcQ=CeS~0l{tEusYU!fW$d12(|Gyj=T@!Tl;-Z%se{1@7hal#>QXiRFju{~@ARpg8)y~84)n$_9v%JZ;#gnuqIK_4PzlkG% z5?g9^(8(j8mPTabXyfT!>^kO@;#7BzCkgTfAOcAAu87W2*oJsEmEcS0nn^t214ky! zr{>-7U0J>V0EAL#^!d-)B30ig=z0F_dIp=RX&Z__@o#qd{{VQrIQH#cWAPJIH-0YC z^t*5#FD*olnEqnAAt_69CT(h-IPkWf(ZQ+PPZW0xmGcyCKA5ghr-L=;P-|t^;u8^4onjiskMv zEiRtmg<-IL=O>S)YNt?+NS`g<{3p?*@#I#vqszB=%NRlV6;q6;J*&38_%Y!2LXb4p zO)6ztGmuL0(D7OJI)a~x`n*Nk5XT%5AUW8L&QuEZjYj6xu8CF%k%dL|;D2;;T}q_P z?2ic4egxTD>|1S4Sxa(N;ZgdpO61SLooOTz!+zw%a~r|B7em_(?f6&IO*oeD8E5%+ zVOp+c7`|A;JGb#OX9L)D{V4W~mm8ln>0b{1D(MYy@c5GU2aqdoS(zR7_5nS8&2x7i z9Qe6yeLR;J(-AMs^F01xW9~9f>0e(NWKc_;n?`!}u3uZbw~>sI$U%7a0E2_|t!Y+k zLpesr&DOe?#HeF7wlb+1%VY*8>P~52#U4B*Qs+!r7z|-hgU5UhmFia3QE8{lk07zj z4_x=ER}UQ}VAs7;)>QO4??wKw0yQSJNFhIvXGJ<#jb^6qhTwhxsvPethcCMc`M9oz{>H{)~n5{U07TR85_$`56$b^wk#gX`(%cFsyXS`9=?@t zT8m4*bc#H?kQe0W0H#+lk!h_-J=!CN4oD$~0|&Kqq`OPL+1qiz-O!K5xZ8~>plA)O zayV8T^!zJg>F*&Rm0)rFKC}lhJ<`WGXf6?CB;kXMgZS4otXtdLv^LPk6M4Lli-HHH zYo)f4U;<+hl25&cJ^q!4eJRv04aCC_9~h5-J+VY*%4H**ywN1FA#K-mZlSiQ>6+Mz z2%?2&xrxG}jy{#qomM#DFxIHq@JkZz*y%uTV{OQuvW4GxqE0<8|}G zMgZN(s}3R#>O^S zrR1*Mo;p_6kEuy;nB|*4DQ<+1r)tK%B>m(EeLQx$nt6A`G;Jr|Zg6WZHbSz&3WobT z5xIWu(OUYJnQpp!HI&~pn_FP&KAzQuZDn((nG`rCWyS??nhm%=zKUayEOa03Q?*Ou zsx)e#tWe`4uQhJoC>jYrv=D3n_3YiM(s^raBZ@!~S1JN^IH`L9UPhKnA$1twcj=r} zZ51vixh))kj<{oOHWS;2^&rcB$U#G24ja^A(_Jby zAlTKk_^u1JvhK(XSGe}1)9q%oSgsskg}_{MS&OTF=$yBexTpi#wzSK?v`q+}MpR+I zJ#so!&u~t~^K{n)M(dI~XB~f~MX6l{DQJW-UR_AY2OTO&jCPSDs2O5;7|(vbojO)L z_IGkwO{zXdLxdmRZ?192ADv~&Ahgu21kncW`*x=T7_OonYR-7l5Ju$WD_56UgcGf_ zpC^BO^sbKH3kbCYjvTSh)A&(3AbJ#y42+IZ6Xfc?hO%=oxIN? z*$icQ-H*B}I{0ZZ+&ry3lSscQ3CG>88B;VguJ0$XVk41@aG)MI_N-fJ?k;abw67zK z0o?s7q|-%?vu4q;D<*LpbRw=>SzGDzm=xy+21Cm&W(3-U#bKv3*KN99fDWHQSTT7r zT10pS@^E{5eJbyZCARXdp|p_668!El&!u8Rzw8ENAL{;Jf30m4XjZ>lNsr4Q{m;oF z_CDWA(9!ht)Mr?ns;&yI(a@;kxp}P|%wmZdf%%)?729cUEM$a50pW04Kdn;(V%trU z+9r>9a)cB8>bYWMiQ3*wMI3-0oSMsq`*px1GVLG`;~$lEAdnL2~rwspdD`K;Lw6UU#Xb{E_Q01vdWLsa0dOh{jTJ4M%DB>$yTZ83EBd-SykfW{?26BJ8 zF- zR(e_0;Vyi{8(|KikIDcp%BnpG9jY&iUjnZG0A(KvS;Mc-4eq0>&6sRqWu4OAB?!_@ zDypd5`BVXNp)hk_J==V1@lJ{3Kln;DJF;6-usU40byCO^Y(RoALhw%DHEJ48TKei+2c592(B?C5W=Wk4%Fy6^RIQ)b8Zx+tQoijY?}j7KOcO zCb#=jZjW#Kc>e&|tLXm#5q{4f5jV}^*z}nr(q}ASx|z}>RmtH;B&hA{U5;^%<=FZA zPg&af!W1mC$10U^_j-;q>0hrt3iyL_r+gV-23uO)*+XOyCbI)>Z}f$E9bI<(!Q?z( zj928&jT5%1Esp*2$1_D1&YR<4EA$4>MfkC0;288_a8e6tBAQ6m_;E1Zw|7CeZ))*# zSaaE?XN(4u=J`o2k8a&6@K|J)r#?Fp z-i3`;XnxFOws8OD0KA&k|`fr_h#pZ9i#jq58E63%KS$y{V z$PdcBKMLtI?P3`cC~me!KJYuT!M>GFnI~4-z>06O#WIbj3NhA+HGM$|Ms?5eVRquO zKFl+@7v=2TTbi`6Y#RfX$=q^zti7B-ea5qNSa~FnIxs5W65u#;1~~_|D|x10BwSoJIN?om%7kyC1j@H}b6regLRoYCJq9}uYRd~T+$LN) zoPawIYR|aT?X9ml!-hQI^Y6>&A2GNMM2j?Q-~{J5=F8I#O9R-Qxw@>Fykht{lG z+gr#Cvi2Yj*gxS|_qx5d;U%bPODX%kkG*N>cScxa`%DY6QUPPZ2i~T1WQt7D)1pJE zG?*(KEJ*(VK9wf3e9a~y3ZYjl{l#C^X0^7lmPg7?TnM0>dojYG?Ns#5GD9j(+?;bgOAo zQuA+6N0c~x?EqEVK_CCn@tq4+v+!;Bn(q=xBx7_)+eYt9if@J>@a^Y`?>tYbTO!Dg zWC*E@n{an(St z%MtnqwdOqY#6KK08{JB64#w6;02pD082Jh^s!7jNjPRg)RlO2Fh}QxcFG;eriGz7& zU7_>aiuJDx_#;Kq-V5LC<(m58M1;8n0y<+O0=7I^;n_7SCAXR)H$GK?I0qlXLFU>ceD={VMuBUrbAMdy6_C@a~gk zq}xH6BZXq#+=O16aqC(rmkonN(ax1>VKOY!b$^#1q30EwuH4+9^DSF?6~^3QLH_^> zbT@bUrQElSq9h{)zVFNFTtA65=#$K|g_xBaP;^iSe|mNjW52YgH>n-O>X&6mM2rBS zk9zgZ4_UL2kL_6^kU*iOErYuqg?!g@W2)T4{iz64NWg9EaM|`9aa|vV?d1sjvfcZsY@$0R}+$uaVBUnF33?O&T868w7?i#$VhtU((x zvD+-NfD5+fW;;Q`j(8nMdiI}*t*BU7%`^)0+L<FTs0CuV> z#3Fed;aL2D@Y}uX)Tg67i5OGDuv{IV#rH>Qo@vY=p`V8U?i_UOihQXw?1TY`!8oj` z0?U~h32uSC$6zb59Olo5;)v=B&6kcsP~fmXo;~Z(wG2r3+ny9;bO3SutCjG*oYuly zh}}xUz!88>Pfw+HGFgFmTap-tMCd>I{MQ9w`f)x8hWsAxLe*4J@f%;#ut-jWVFS1hT!8XnLr z=e5&hwJxSPNX9<)2;#h-U9d#+8TRjEg&cOTZF|dITGBbJUp``dq;%wV`d24;;R_3u zj(MdoCjjjnisFrFLD&x^wbA8u0`XKQ(9W0D7Nl^4(OdGyRc%X~y9KTbpmR zSxVNZVrByXam90o#7$>rmN7fGQ6lZZ8-450ZY;jfYnisH02M&sdmrF3}33F}p z0;7840c(zwqUB(bf|~L+sq-)H8v(au06UY{HT4htC_Pr+;eCh1Wq3ulr5aoqM1;w) z%LVF)6D1EuJwUIY>@;g_(@8WwXUp=decIB~{D0zoGeMuiab2*{%beQG%_LC}I-n;B z_04TNgY|t+%9ivkoME@8nt3PbReV2bCDiiX z#~R37eeRh)xb0qzE}^99w$WQjF`nrL;t=lvzq{>F=hDM6Urp0A)RGwBhFhR`1CTLX z_2Gcd1n`49jFstuT6!(aH}~`EbL~fs`gC2s^?`r(hXCn77QfeC;?;w5^1oHbq4uN) zxA;2UEi|vS$!4=naB!^a@_>HsJ&&z-7Wxi|*NLdy+rra~WD&)AuZ4af%WWN(hVJbl zxZ0r=pan{Sz}zx(gI!(sh;*maWQ+{?T&k-CW#d0}uye;uSD984QqdbLSn{tL=&%nE zT}$?Ts!#5Uj0~RG^sZJ-J*^Z25O0_GMi0`xdsd0H{Yo3C6qv$-6!G|1BdN<2)>6Re zu}Y57@-fHOx+z!DCPk6Ocs}L`_4032GPlZ5uu?EF*S&jno~@s3~tKBXhw?wUrL69{z$z}v=6 zb{-^S)8O+Vjxi(o zpX&j~rFoL4XSun0`$8IQJ8bbLLzR@5Xis$`UtH)WB#5R(- zY&I~sz}xLyO4!E*+=MA*asiM5z#rbG_yXlb@9I0;loxcgf+X0J9+#TaO1k83brn06kO*<9&1 zXbh09(GzY5JxHvrb}P6omgXIsfZpRBtJ9-9dxB`k(q3yRnro-q6Aht%{Z&@x(#ra8 zGw0r0BVSi*0*y&F0}^0Cpg>3=|na$&2(LI5FN*N13sKrXFo4eOwX~cg`wyq zZV-0QztXM6runcER64N3pX>Ck*0IC|Cn7@Q3KzG%YOSlsr;BV4FK#yUU_I(RsiDJY z+M8(_fEN3FzIPMpQuv=#ZAMjeT*V52G4g?)xTrM-hSvUNXwzCtZWlMNP<03>DIb4u`g1YM)mA91J`9Vx;jr~XATRL_1rMt^#6Fn=IwPcVYzlU!1J89?CL;03*H}AQ|H*hPr*Kh3`Oc%O5 zYP(belejTC{JU3G;e9JWmKM<-IAl#lN)?s%pD=^8@q@vwoqNF+ejD(*+1bLg+~gCm z?;QvyJn_?mUM*VDY}zro#%P+jz0;BJ3P~!i*%uff3MbJcO_vEPDoOsYjGA8s{6Ey% z(&GO8mL+q-=Oit3x7t0`v%?a}=0>TXPCcs*X!j`0v(l|?Z9lYfrbQST>-hWn3|G&8 z5Nx8f@h93N8&=^w(xGMqm;8etn-y-Aqw{iJb+CL0@H>B8G8E>stTag-& zbMk?XmGUowbosR}5?WbXjJuLE>Bpsg>84vfmxj_SsJxj#+5XgY<(sg1n)SC;E`5ZYVKtXS@mR&9;6Wtm5OdRFI;zR71Elc?v-xOnjP$aqoP zBAI7%Xe@4ZIiQsr%2>cr`?0&WI#-2HLwB*@cY1R@(rcDcIwDHDgRTbd+*ezx_<(9U zQzoSXVOM72F^qq7S5|rED&prC| zu5}G{G%|I4M^TOlBeWiDGVKkxWw`XNm%^6!x|R0(hY4=~0J|;+7+$%qJH!&)X;w`T z9#aO!Thkn3s{AzZOqO?o#`b3x{{S;EJvlvVSkZ15h#uE@r)lt6y`6~5=Z{6jaIEWh zbq%?UCgK&nay!>QdE+~X{7rFbXrVwP;#+TWF28^iJSb62r+OGp>&2 z-%XdxF$NIjKwe2&*SGMT8tU7u8@h@fNLn ztUataf-(lgRsL1SG|{2W&+tpc_72uobHZ9D9%C!KZQ-`nb54b)A>n=d{} zR$w z5ce9jirCuRh>8;I3BstaCwTQK-+C)=l{Tv&7zGv3P3LUosNc1?XNu_D`ldSh!hs@bxI4|u`+4vgf1UI2B3*c^f z2q2#L`c#^Rm8&v|ZPk+69ANXw_r-aVn&?sJTXbnOsB~REaAb&OhByTEth00Wdw;Xq zN~|r=f_?p~J4Up;f(DXE$!8cN7$USIv%8cCRs~h-pIYW-h2IU?*xubiHQ?ecz`JwL zwNUXwJU7tCX%~?ju{<1Z6)onW95%jqD<9d;#Zl3l@T_K@;$#}y9=(KOqAQY)2>QZkvxZ1%2}$4ao)t>KndWNm?jxdE`; zfPR(9{6n(T3~<_+50Xlxawqk!h-sh|b?qxndoB0v8SG1$)^i~@5aWJ2W3_s;DXRhM9}jgI zB(>C_n6cS!EUhO_dMF=C!O$nvFDzrai)zQ_5${)g2^IaepR8(^juIH`q!7mA0g1;S zt#Hs^PX?84@E1VrMkDM=6|0KqLT7ELLw6)pN{`5ONKg|#b9K{iPh%cNL8>cWhzWwEU@ zm+^kPXW`8WA5K|k)F=7WqwUz>1C~8;&uaMp0K{5`rK@VO>ROG!*D*5L(GrSh4zH3U^U-p05uFNt?+*54lE+BV} zWRvFuaRV6QnuF)WY4a+9(;Ob0*JrHglj%s7_t;rHzcXe!D{uvK?-_S2ryK(5Vf_o@wg|;j4!qhE6DBqMQh@(1jJ#4Ft)@_ z$DhB`@yM@4(!7YgDQhm7v^pZQ5;({wa^u&fe1%GOJ#{0|v@JJYlJ)z>wzabR9-nU$rpV3^t8@sxnz`*}F?V*e z+T9C4B;|hbI|mh389v{CBzkyArj(u``9^;Z^~?B@+UG=L9owjN8-uH5PpHLGLPxLo zm&JG1S|x?O#r{yn5JY<508bwME7ZOV>d9wqsQ4;t3wcAM>JVKp!^BA+D6ft!uiH_- zu!`*(a|-_KpW`Q$;=Ypb3_6I{rj{3I+^k6aV5}pDHI;9G>B7Hw`W8=)J`vJgY_6|u zzqY{g+R+h&zb^`;C?I8Uc_O?@;ayi<4tHUjR2>5F6 z#uwfpeL`s8%o3t0QVfIcuOp>qxh>svYm)+LEuvURux`NxafLwU1y0r z5Q9%^TgXy#cAJ}W{M(A~Ip}NWEgr{K(rjnbZ{A2QU?n00JgDRxfyOxgRfMXkbUNVn zI{jNy*7Thk=GN-bV6|By`PxDEN1zppso6o|FC$X2xiGS(7%OBD-SJ$8vt{EOsGiqT z-fj43WLEhY9^@X?#~Y)hSx%-kGiN?>^T*PyA+~p#rI4_4mOSMewe%b)X*+%YNq73ppFJ?T^m1d_Se$>UaMDYSE^e z8-W~*u|@&js4`1^D^$#yJ3Dyhy!%zOn{FA-z}$_k)N@>==9v}y3oF7@LdAFoC{G6! zXTw^(?SvEQ`lXSXp5Tznk@F6O8qC&pi@Pb-WVL_1F~2{&J;1FD#!ca~hfmd`)2DcpT&op0%K`^#z2O^+%_GHP`%j%`l}kp7NATmEih{YyUNi9Jl6bn? zRCsX`Pa8`J>J)u_E56r!H)XBqFkNWJ%Y*lmNM!rO^Z)_qD&L4KWYzAjC)G@F+|NGv zqWh)E;~e&;Yg#lu0ycMgwakXz>INb>PT-2e9S6N)(F#Vd!Mj=Xy?w7VnAS_*B6oXv zhwe5A$oa8@-;7sF@jmsebc3w;g`u{%xV%FYNOl#1cThZ_4se@+$I`it3&b|sX04~| z+D_=9Pu)&%H@s{%oxs)~#Vr}UedDj~Ek5Q?>|Kz=-fH0^E6D(i;2h)FS1i%I53c?M zc#B8Vtz*$_+9+(NZ#C|NaLhr#EO{LJa&ul&@mu1awd0L5#(GzU(VXcTk+HUwcqY+0 z&9m;fU|0^yFmcT@;r{@JG>r~FC{C7<`DRcD0AznWb@ny0tmyh*fix{&#ugZmKA&;& z=X`9N32gmvDmGxD?_HdC?5NX!!nfBfqPY3RCbe>Y!mGlSiGFwEusF}Pd%mrIY`P`Bp`hI< zUpzZbPSWb5YhWB4dk(}@)cA^?=NGSivfo#Nd(zT9L3%EY%C4lJVe(p_0 zZ{d4eIKJ_aFU!5S0gwLxTDk2{P=id0c-mi;I0+wKI$+nJk37NngFL#9s|AI)GH-PV z+3b4YdsnhIgl#OmDQ~Q-am74RM;FWTwlUZ7tlx$f{vOoqKelGHl3SR`W_bogXuh9H z-tpe5^2=>)8+mr*Zj1r)ocAKMQ;}*Y^Uo1!H#)g9T5nW9RI2a+>0TGEcxGERYiN1f zhi${D>5BU2Nw=5Hx3|5?M`PwcPkO}oo#E{&+Tts_fAvou*#PY0kzKfY_A#wS=f&36 zHt^j>Ul@OzX#GD5`=jc9OKL*;&{w0p?DOp28NKEz|b6oD*&=GH>`P^rAeq0~^wRAon`(f7w zg}VzlVvnsfz*cxA``09w9lT}M-wPGq!Hirc>b z0KJjvUq<|H)h6)#Hkuywl0$9`#10jL@IINZljaVQM7It?qhyskLEY1e>A}ZKoVbQr zlghofQ0^7-a->!b#k4SQVPuy43Bxs+XsB)@WfK1Yd7L-oKPunZLQCF4=4)e@(QfsXk?yUoE-h{o z1q%|R^u>Fkd`P|1w5>k!8~cggL}=uLZ^;`D;Z8;kd5!Jmn(5_WfS;G|^gmqZ{3@4+ zyho>6Y8JoS_VZ1qmfG(Y)^zs(l?UmOSk%GNmdMtQDo|&%So~@6C61|Ycj2!x&7yUZ zMkokkItN~cz4O8!w3m*5w+-g2V$%79BTBI--|9m2$n9Q9@S@Yf{xb2rIucJDP;Zgp z--O(XKIz@TYWh)p2|f0sbUZUKlHX1FUQZw@0=+`FlYZ|xj5l77=rN#pK0iSBwgTVT&?8|j7oo{6|W+cVp4;tz{2B>1$v@himMHSnF- z(6rr2#ih(^I}8oZ4mrk7I%2wE9&d!j$*s}#HTR5c?#x#3%_)j9Q_m^rdS?K3^{!Sg z7~8(1eWuAco+xmkzzhiX74wFl@q^+W=7_p3n`Z^Y(Bal#gs|JoaNCpe74z?jzA*e= zj_Ix@)NE8p%yva(7%EeYbkFjw>EYbpEy$r5kG8S1o+rlM-A+=T{G^L-p}mO9y$;> z>r^~@sd!t(S_YqWrAmx%V_SzYpO@tuNXY*HYOP@^Q;)ukD%6bS?wy{AqUzTk0~(&G zadUV5sS?Ppr(!16z)UYc(~gzHTxuHEjTN-LQrmsKj5}9oB;^JMdiE9X{{RIv-FIE^ z4UMj)Zjso>Zyadt&IBxajBC&!? zvpK3p=f%UoI?jQwwx!`hLSHHK0x(dFepW-8tkCWqo1?KbtE&21*kus7b_)MFj}Yq7QQ?t!c6aa(E@>SlOeF*IX*fsY&t^=Z|S z%;0#4vAns~=VncorGqmu$F>G5)BG>t9}dZ-YM0(6Yr8jzTl*bSUoB*ne(rnXvGnam z!p`w6{E>Nh&$coKBaC;?Y~sBi!pj$kyh8fcp&y@bWswSz@?Z>c+pTFi2_wt=Yp?j4 zJzCQ0<50P~xNCK_jc#XYk|oF8K=}*Pwky&6KL(|vT3X&;>NCkNk{VSKmQ-QTx02UuG9<{A=;r{>=&3PLz^OFFbhXZ$P*U(m) z2g7KYbiFhe)FT2m1F8IK{{Y#1H>2IM&n3)v5dpp#KIk2dajJ($C613&){c+x>J2)@ z65jetee$~f^5Yl=zEXiaS>it!Sw(Fv!8=5Z$}*&e85Qd~!H)A*v9q4)PbT_JigAFx zmFbtdMX!PEqj7>;>fnf+>AKfzaM0oqHq}Z8#ER zjf?zz`gE+#4X+1y55sav_AeA$yt<5c1}NmXk(f5ok+ftl1B&#&A8GM;FTomz_FI@` zm7%t`M!;0_8;}M#Tz35hd7q3tWuf?T+9*6ZdG`6Gjf}J4iG0rBu^a*09gZu@-^5=K z{BdmhRkRIwZ9mdoRrrli9`3waq?obxXoaK@$9_f%7o+6^Wzx zuUYXgocB7Qju?1*cuv!_bjkje^UU8Cwa9F*tnbP-+Jg*xxoF350O?)F!-?!H^cjt& zp4S)msfhu|!@oj3t2v>b?`5jpSfdRV#wlfpG?Gn>wsG>}zH9NY@tw8%MfUBY?R?o( zuV?GewR<;*rq?_z6tX&RX$JWrW0A0Tt^?v$t!Lt0cFNWuuw6?I=>%K=iPU1VORye^ z;U5Y7Ka0aQaoojkaj9G(W_dnxSal%t`d60S>FK6xQ%PV1W;qUKj9_A$qWFJZ)vs;s z?NOsy*dnuW^5<{LE4IDxmEvArczaAuh6dYk?8B4o(un9;<(j{UppNS1Ya3;_o_(1t zFwO6QUC)3n?)6Ja?Sw`%YDp?N+z(+@CHQls*~)bt7X7X-q>p5RRojv}?G?ponzp6k zEkSQ0MwUM}XP3X__uX22L>{f;D@&J*fSkTIpYFCWE9Y4u*1j2QOv@08+g?Hl9HPny z9^CZCJuB$_L&jbkxLBK3km;i!ks%!qrYnu{y{?7g9SU7K+EH}8O=~LP?QS|?k<+bQ zdjZDkGo#v@xbV{*xnFwZ3u+|!!#_6xdk<>Hu+?v$NSfy2VH;UC$6bml8}Cf6|b`qYedtggIcoGZk1X!n0%yt-Q5j)E&ZUjy=j>;vT}?&dsmtZ^h=~O zN{ShjsptkfeiiCga>uLM8+3JG6L63o1}ai9k+r75J-RSRvAsri_ubN^)h*^xZ4_ta zSHpT^zvWrBI;l%|?b_vI0l*9Ewznsfk37cme6BzoE^3H~Np&1Hqs|yX!tsR%*EPw{ z<1Hsl+_x>l@L2}sHI09$c#FjjEOebY?N&dPq_}*pKiw4-&%&pXV7=9~nC*&>`1VEG zr{1(E>DR^n4@9@y($RmQQP=|nx{ntH`8l+6{Y(T0GkcZCvGsJxm{Dn`b7Q|yVGo1AutUCEN;7eow@131abLR zhlNj_;oUqDv@9s9KiWZ$=xQ8n1j}O#6G=bubU))&XCldi!a`+nvmL8OY2%JbBf)0} z2P3Dy(z%U5T+XiWBQeJq?NTw2-tg-+B*s-x5-+&9C!5fs}s4@H8Qr5Za{XQL5}sw zd`fh3_>TUsFH3dsd1)gl;T30FE#Z<>6$Yzucm0JAoFU4oWh<9q@_-xv0M%X{t9Yy9N7`eKeU?`Hj=}Sd$EPDBfDf&D z&wzX?nmS2wEQu}jqidr700Vj&?6p`PR$FN!57~(6SYA+W zG~0u`j4`^tjq&E8ccl0x4wah zp(>Ip{LR1w(gS}@)9pNkg6IS+NADXLA3Y$4yw*1Jg#t~HRS#t zvb(v_M};gkC))|i2}ng^PD-gA$*XocH;iqse7o&2p|FvBxfp+}k$*8?4?0$7(()P> zS`mBOYp1!6($J`8b{{gK>GJyHw`%J3tw6~PNu?O2iZ796%H~0jL;iTKL;DdX)HeNs z@9gD%VyxR+{`szM{{X_5w^DD48<eil)>oUiRYt`Uo2k#UwIp$8JCR)!XWtCaE`&c}f_>~9? z$6C+UHM?np`D^m+ATOpU0X0oPv;`~>C(0L&yM606J9mZ%q)8NQ=L7myPMA{q0@q;M z#-N?iwAcc4;bBxdg9x;)o@Xg^Y$f$wc)c*jhRr}6ILKJh4YU+Fw zq9=)dA6Z`L`j^}P0MU1)!Ui5=V)G@tpJU2AwMjFTJ&kvM9{4*2 z$rEdr*FU-$0^0y!`q!`O8Wn~9rq}jy7}7Y=Q+5bYz1!ZkG{w1+(a=6T-NPdzr>;9z zM0-QY?*1NJSZem?M${kd`$^C7s2u}VM$Z_1rM}HHQu$0lEI9(bb~TY^at_7=1RgP1 z32k|C1n@+DcYKD%F-(;^o_&93tg^JTMDl}$P&wzmE4{Ol^|aV+QVAmpqb-b(N7A{S zLsi!FJB9Q1v}?vk0=Rqch+ZNN(M510k9K3)HvVRVXu{{Hh+?+=?bKdTZUHOL)~R0V zR(?&)QxdT4VVL?3I@gQbYxmR0CBD9u*zvG8%d}PN9c2>ISXL%zB@F#?SdZbYJ(-wj zpB6p~-ZYlbc%s2&-a|($!*=E1k0=tu2ZDCjvnRwqhdPOdZ}>{IkpYNB^4&tAS$m!A zG1k8e{8!)&YfQSn)UGU^7^S$HMUx%bvPXWE)OZizXNo*q_Ia)0iQ>2gw?8hp9dHM4 zO73_%X5{tb*QiAqO z6DO4_I<7z2Mm&8-75TZQe#iPgl18C)t9v`j9gM6>upLyW#utj4!af0)!2bXrw3)ms z16W6KXC(2!tlmnpt|S`?=O-ECrxnjCaQh7D zf%zS_*DqnM&v`iVGU%>z{_RxPrPQwUo4b2ZE&kM|Eyw$<#V4^*XCtRi1p0nfUGYeR z=Jynq(lR`211iSkfKTxXp=+Y*x>PV)TlsRR7%%)aUr;*4S1{V8ik+@8DEq1na88tt z*iHuv@o&Ii@Uhb0N7SX3-X&Hj@$gRXPfw*|{4Dr4WAJBE{?XCb&iM}KnX@h!eA`uc z74I`>n)G(FYJOLqBaCfW`6^FOl=D>o0O25#`rQr1yvZ=a5XuHeL(;nN?rCx}8n$Fw zUx=hSfx5MSEu8Es{A5?9U267vhMbmnb0L}I!3)&ak>9PXQyY;Owu@*yam{mj=DllS z2llH174m)Gf^^**#5ULZ6j@muF+k;6AKMt>zPh#Z zqp8Ng7&!oa(dY$s)>@SJw(G0S zkt~qqkKP-416?XaSf9e)9Pu`<;q|)nt;mV|wN}VxQPU?F{4>Q=9vAVAy~MK{INg=7 z0yf{LZ%Xw4003(-$D!P+N9Hm)+JE1#R!CCj(g{Ls$m}_+oXpRhbqy!tHm70aUFoY5 zDh5rY7c1{vW~Xtf=@&8EYL+uJ!ZZNIj3^z=eQ45ILmTf88CJ^3TR-q0rFkEYEFiv< z?a+`mlJ0+nlvJidXTd%@FiqkWg53&9CgM2$1N|#r+${DBYPk`|@}574e@fW+k#%C% z_P=9Q^S3f@1NcYut{t^E)9sA=iyYxl4z2zb^w?kFBg(}5We*f-k`0Ry1z&;caa#6% z8!e_pcHpKD=ThjFce8pO>Hsz2elz%Cr|1)0-szWj zCM9jd&mo7++kiOZjw|So9(bz4*T*n$MAq>Hc2)U%oxQR^#c4Dnu^i>vBBOANe+^Y33pe#<61OcD^*y z;+jh{8pU$_FaUbj$XZ>QiJjxdP`aF+st@qj-ronU*-%g*=um$>2|vH^DI!O%1Z%| ze(1(}SI!oYM*e22eSr<6O(c?Mg#*&QSMk5buM_K6@@ZZdm94ahW-%#NJK8b9ehvnG zx&dA^XjGfj^qok-YJDmDN9tY~*Dv&@)oymd3^GE31HIgD8wN4K+uFWUyR`81cd$p` z`^jEx{oAJU$ZnfQPM+sJ^+Qm%)AbuGORw!FYmhfcyt8%SAHunff5BEa(A(J~-E{ zipw6S5;SqJ%EZ{*i|W1bE9RXaQ`e!swT9sC)Nmk(+>HL~b_Y*GUeSMRe2}p5NFQnt z@XEY8k&KGUqzxk@#C{-MXkIiBX_{Wxytx-Y?62`xr}!gBwbOhpK9goyp!pl+z)aU)-={MhJmG?QY4MJMkjzzwP9RY9}MbtH#cygH)F|@$>0`V$Nic`iKpov7`pJS z#Bj`sA_L}1rz{6xYb)*E9klTK-f9txlCB|*H*Mr}Z>4${i99didu<9WYTi^;jgh5} zJ_LjNt%~P7Tj6u!pA5nO00^d?Rp&n!{12-5!^FNH)$OgfCZ1b)J;Sn}%Zm1!i|sQ((_ygtH{FFoq*%dhbOY9+ z$!s>v`~83Ik7;vf6M(q|6;4!C8m6oLp3wwS?I;CTJ4hb%z7Fv^qTNlYp|y`|2!p6l z7qxNIBVJy;!Z6zB<X=6Jqot~xS%j`a4q7Lkgan`rQ zQ|5rFPv1SWS#3k@5#BTWib2NT-SNh17SxBIopC1z-N zFO02z&*HBb$0*IM*O9Oj{0F%o%DjhE@Xnbf#A&1{ftad3(aDb-lkZ)xjUG?!>&;%` zaN|&s2bRYe3)7EE*SE8t@)cV^t1ID|$l!ZdbsvPzM;+oFD$diw&0!c4!V|dp{L$)b zfzz(#i%ErSXLmS|?U6?q+x%FrBTexA{L(5bkCbjI4^h}+ zyI^t5?expNO7Hy|a3Lr@@?e_jEuohBZz%)5(T_2}t`kr36uMlu4|<$7I=y(FS z$oxkIyg_Z;DgOXy?@eE_=#?$!x57t z{M&{I&tXo+e$gJ;d8F$X5L|t-aW=!8XVcobDQ(|V)-0?`bY;OOa2V~6N}Ix7E3=y8 z$+~0v@rLXdj)t)AwQH>_TYW+WR#+PY9D)y}bW%ocN2z>A(_y~SB8uU^)XJ(E6b-}< zg1q|s!_&5!E;Om6g;hU<;J3ADTwiMbDzrt5kf(kR%2az-H>Y@W#8;Qb{`T;jTV@$e z*ckM{uB1a|--q>Y?0pU!OZiGkAZ(W9iTAFyU24Ym&M|L3JiI9iIW^85S47pN7D-~V zGz9+u4&FYskg`ZT+bat}2G`}4xyE}{85R6(s#__wSoX;FuCjmitI$t~e$R_?qo?n6Ey~Z16FZeU&#jU+#fS3~wL!>r_RS-qaW& zkuma*nSrktx4yi(xbnpQOk@MNb>h9VT=31z`XBbJ;CYJ<%=ThEE6sFY3)-DZ-pf%e zo6~W@=b8ZMG>sw~>pS_Ty}M}b;}S-Y%3=pRXB^jW@b^jZ?ClMolRSZ>X5Qy=gVUd!Px?7NFQX)Nt$fCMqI+lb1qbUku={uP|c ziPGFZh4d>(uIG?$Ks>(LZ$JP)rFoWv_P-GLyHeKgtmC$^fSAzB^08gG`A}n;^jVg| zQlLbo5b?chF8v1F7}n9epb^NS-TwrP%AN-XDtj+F*R;VfRoDz*A%R zG2z*-AiKY~l2nhNMe@esU5%%LhMD8LZBpN8j7Nqb@yBdetK8|9Mj0iTlqfeH$AAa5 z9OkM=lYBq;f8oswRlbrOw5rXu1*SIl)Aw*LV2 zg>`oKF>0wD?VyfGU*?KM8&r>{sIEg<*YwNlIV~s77v^xxUg*vJ}hl>+|& zTHQ;%X<}A~Y-&!{1LiA1nU&)wmru6-)Q&jNTcP>X0z-ZsxZu{Vi{kAz<4LyES#!PC z2LtaR#zA4&Rt?Ub{jifqu4=a8*>n4d#?XCBsOrP;u3pPc&{FCR3d<9V$wK8O4t`Fb zDxa4Xs$hDBrH+ND-pD@F8Ms+D??b{K!1^3^s+UWrY2G599Zv0Jl@~C}BXGcu+3Y%g z70u|M2Q;ZQ%j@|y39X6}3ao_(KDj)B_*KmZ;Xa1OOWj`n<4~RCa`Ll$=V`{={{VL$ zxjyvyfW+~Siy*r3zJsM{G6`)2A#Ok*gCIHm1$1}%){AV*=Q)RHC4&*rdSKSxkKiu~ z!*JJ$Vir_mwUprgJ*%m^@ZO7biv`Y=Zz_x*nk8oZ$f%QD0P#z|6L@MVi^FiPGo7G< z-;l3o@OQ;;ht1&W^h2w*o2gmP_M3C%vu|7sCJEH5AP4q1vu@VDV`J8QA=FU1cB_;X5u?lsFr z)Mb<9wP#5rLH+hb z!0o8pSzFC=QJ=`Rju11P50^V}jDufD{4tYP(=BJUK@4_tfa;tvw_-3>G6~wO2;6() zwkzasguVvVb=zBy4$fNASwP)7{Jg?G@1}Uh4ShkQ{5k&sgd<4%J+<7kP33^0k0S^8 zamE0u#CtTo)2F46Sk%0z;&pWSc3|TLNfnQz>Ut&Rr`YGrZa7wp8@R7J)$R2bw1Uzt zUQ1~4`_+(wTi91$;C}&K%coplO>{Sh+Zv$A$M=nLsTnvOZm&GENfe(fNwli7U~ss> zs35VLXcf)KUN+_|k&mxR@lP9gZ^U}7g!&f0;y2MOqPp|#-rfwCWd|FGU_kZ+e=6m^ z&G9cs&?MBnCE`1Md|E@i+0O@*T~h>*RzOQ*vo}4n(zdwNZhco_Zwe|!9GjmTaCpu= z`d5~GQ}KR@@cRD7&%{%GmOWnDRui{i6Ie@o(a9jP3kOE}7@)I!2!zt+Y{G0L72bE398HCA)L- zfz4@39L~b!IlV8#mmV>Vb!{~+B^R^H=Q<3sKJG>aM(%xUu7ks#D6zS1Hpb3K^yyvAa_B1^j9wV=Hj}1H;=Ai%5~8bSYz8ByeQGT!Z~Q%~FOLyL=i7X}!GJ1P z{hrmz-TX@Nt9L(gJ7_<7Z_|PO+;^;4 z9-FCrV7&83*>tgQjFJExV~q6aUSs3du<_-kw9!Jgcds9vHvNIiiF`KNUySxB+h=g9 z>xLwfYq@?Lb~J1x`;<|1P_9fviUd8pgo_^QlX%(&Q8GjKDGi(PMsEy%T9LRVnU zf#Z5K^I5kq&5i~=D-POSSk3}ZhHh|c&vkub@JTJKYq6B% zA8M!JoljGfR3i35(T}(juG;N{IN`D-UUzz=Zftie>zE! zE(CmMJq0sHxVV4xyZHWH#3=)gD?;FIFEmTDeg-i>8FShfb0}^*FQqv&tHoh5OM(5` zb;C{Mm5dA?3G}P+OB7I`8D_-*XH8`+L8O*OVbcWumBe_jQ2xw#On-Ipz(1vW1;qPR zk@+k?;3Bx4QX6~qjsqIID9++OQSDk$fzMh-WuCRC>KHP<&ci)_8tIXA;U43*R>wZS zg>ZLT6|>qrXi7*A@cr7B$4$F}*an;CAC^68@6A5@*Chi3ri^{Ns_ za~kA6Tec4sMWnjQA?euTy>vnZ6fYq!84t⩔e4CG(KD&VSN0jXdczQGe}U0M?DTW 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%0D)vmQ z(I`GpWApADaC>ycGvZCc>e}U&pJK+^C}UI@;FLMZ_8&uB#GV<_o5Y%SjicJN`fc+r z%p;A8er94gz&Z7a zuO%sXa>gZ4M%4qLW9UBb)~R^E_JPtoAL1G8G@DnN;clMW$+-bx^5f`7Zi2pZ@lTDl zpBIf%`E6DSZ^@Qrg@1Ox?$@b@!TqToW-AeIb|nvr-w`i9rpauw;)65a@GoUk zQBtLWBh!8sPvJcuz;h(*vuiqohG%upl^TFT=lBOx_}1=?9;0Ury1tjT;yp;1V~Yp) zdE7pLabA7l9}al8PtYa5w$UWHOTU#77cz*T03VcRuNdi6JV)^=?t5!J8%nhP&ub_c zw808aSm5KS+EugD92|D9DzoNiqe-;3J^ui~^0uF-!K(PSc&+~cv5Oc{fjin@S05?I z131lA@TZI{PsTlaQWuSFWp}1W5oKUAxv)s=&4N1-$4dFJFFa?jS+GB8y0&)(ok2No zucdl#fjk8z?6F+y5=#M-d}SiYm62B@0pA|g%;RHZ+vs>lj5XM`e~4GtZ7aQumrP*; zl2JZg#|If;GmgU*=pGdDjgs9BIc!UB3SSg?V3vHH}717XIE@ zC5|0VVFV1{DFAgK*V4Wa(=4?=4#Q~-zIw$F+)pKO*MV3~vf&fs--ueCp`ckj8ePLE zS$4O7m$|Pm(EMqAX?G3Wm!4o%#?W!FeJkjXih2mYjqUt1Zu2ZVyur64E7rbqvhZSE zNF}_D;gOMv*fH}jMa6eQYmk%b%{Ny*G4Q10XPI?xwd2|Mi5>CjRJ7}DTU7AcMlG5c z;eCxZK1Ol;Bi6Y800(Qg{tcGTOS-jSE)c9z3}wS-2S3ujw*LTxTT9jc9@yVoYAI)R zG=WSZ_;PcQSNIRTVIV#N@fMwXWvWm1kl16CW7Hb&^c_C!bX$2Z8)i1k>$q2_-RT+y z_3ZYyK^FNkgkx~R*E2qhlHV%B@{$2*pz*QhO{3oI6b~**Qzl}s_nDWsJ6Wr&a{VQ5)onKV6ytvctgsUI!+G3@o z^!a|3rQ!bo5^Iu5Ac9(=fw zlLwBQPw7_}+(vcn#g~SrxFqimiX-&Tt#g_|vGG;=&#gDwBD7-hTam+_z`h=225Gy1+i8a7BztAX+Xmd{gJn!0Ki@msBwVpb+Hzyb2-AIg`;`k(e5l5BN1 zM38{1uzwL9E21P=lf@qt^%yls?X)c^Zf1>C0?+gBY<=CM^r^lY>Ygy4#cip0lH6KC zkjscwwr05eF&Z?Qm!pG5Bu!d|TbF>p5GqANgc`y(`l-9YHi-4MnEJ z71`KisL2fV^EbrCO+4AdC@U?zo?<^-W2Jj9!oL>7;|m!RR8=~SfGVRH671;Tg>7Dy z*DzA4XUcmAgYW zvHj*BHa)Xj9|msq4M5)wN#1zjky0m+=V`~SYxtMLX7ca*QRS93-M(9VXYm5PN8z@W zrLLEEdu_HdWGm#T19K1J`gQ!MtMCdc&c|121a`Jk+)BGQbmN-dv4thKjgSC`uf0^d zwI@M0y5#s(Zm#^1Z1 zrt46@4;=Bx`~j4782pGe^mW(RS6&ui4>Ba) z^x8D0^gNSa)OA-xh+FwSS61#T4K(*_PwiW)jGXON73lsZfv&CPbMnPG``z(e@wKoz z2ifiU3CKOk70WoCP?e4*_7friK45dtq2j)=_(pBC{{RofE>Jm4=hu}VrF_eAXF5P6 zjE>(grg573o8d%id@gRKgLf|&e%k;Q;^$EP$~~-}f4n#Db?*)?qxKu?Kp7O`I5?p>|Kc{2pHT4^r$p%9Ki0j(newD11FQ7n67*KD)Qpn?K7(? zG2DaKKhm-0vbbrPf@GrbdVSg~WSQ$%zAH^GNLZ`P&VPfDK9$+%-ZVR!`r#%P;c>Tj zJFDjxwbowVE9;qB-V)=>`FJDRy}L<*!}}}A-<`w~eOuas)NXnOzmH6_6ZZcJQ=7Fe1 zY>K*epRP5`$eb$zs>FV^)Y)q9;r%A-&w+0yk(C+xWALgrekZrIovsjx4hTSa#(k@i z)HQp%n}Gw2w5%Aa^i`mzPUkbP#o~Q;QMa8mzyge}4+kFAi*IMGLm;@i(%*5;GBLpP zuc1O4b03%TtYa7*N3~owEqA)T#%D(kn;<@K@c(w^{#PQAhs7MMMh5Reiycc{mw=&5vaFQq+G4if6o}R+BG|z^g z4Ry%lhRN?1XH2rnL6bg%046;+&2;)#!)reYU9HxL%Ic%<%-n??k7~5c+3JSg+QuO` zY?6bIO3b@yk|kJ%=6?Q_fj5Y*+6J;BIVK1IBig9gYyKdZGTvJ+l^;xdR2ZAD9?18z z3<{RULf0|$*iWT!TIY&2D`^#FxBbHrfIC+1pW;Z<%93agP7h&P8JvHLeCO2l2%%BD zxd+iZ=D1xeO}n;cxQy;NJ-9vVe&@tjI<~2*eU{Y43%=6t*BvU^)fU@Mj@T}IvHQ+3 z>?x#Z8dFNo_cT=wO7 ztmpV;;Q?zTU)fe#a7917^1f8q2mwF@4Eu3hH^AQu-gpOJ@m`5w?Jk#jsC}{sopG{8 z06P!&)C}YMqoyn9Jzm?%(eEcWIG4-awSM;8Qo$>Qy13dS|O?9g2?m>+n5!4)GAa<;z z?r4uVzMK9LCyw1unZM9k2S?Lt9uX}V~NX9zy&Ju4H%T54Rx`h=5)P(D-~ zl23Z$d_S(spKdkkjSQkW3lMh=!|svBE1X>_;xLJDccA;h zc)MeoQysOYoWGrrE08BC1WPx^sP@2>Qd^aI1DKQ1A)#Dn z$+!;x07}sbq(DYPT$T$=rVKYYK0Mx?Fcs>JiK`M&}9#&ziL#hUF5kmiQ{% zn&>6eBhqbU`$GT-*_!L6r@(R4vE_QFfQQUl=*I+ww{7p~&0}5sJ+q5Rc;dP8nF=j6d>RXa(jXASh%&iH%%OLcY2kLsx+3ROO3-F z0ImmC*IIkw1fF40^Gn|+(EC@?I)$yhybT!(Bc}m6fGf=PX>_eMq|&ZDyL;=^$}m7m zdTy+Sc>uq#n)zS>fcwgat75gH3mocW-OyxuRNB{v=C#*se7WPexQZ}Y&|ye5>}jJ| z#cTGf)KR@bV59EwKpcB(G27X!5pdghAb(2v=i@JnwcS5JS@hYO-L42+M%c)~>yPPQ zQh9zHxzE`AxfNHR?^mCAr^0?2*X$k{?IU-$Uy!R~Z=oZhi{`a>y;CC-;n3y?Zt0gQw4P99IOM4sqKxo#8(TXx4_#=`B%Yx9C@@t}C&Ydt004 zcraZC2-SA`Qf3w+`zygJS=+Js$YySs$3b4Jf1<-K zmWg~!hshy;=ngpMxR`AKl_Zdo+fD~;n)MahbVf&Pzmx%A;oIw1C#jl8&$oI)U)xIt z@_1!X20DA!lz5B6?QOAlFj)5F4yWl~M9Rr!Zz^%O<_pIkg?X%z%W}$Y5QY97-_E+| zGoHLp8Q1(Vr(ZxOy9^31-Acy*;;sx_oTsVPLu1Pa zgRiv>L9eggIplMY%rXG%4RqZ)xom8F{qYOII&F@f{h<_UW4DRKU~#p;-P6AUzI*U@hP59SYfBcK zzq_|(b~)SBkK_T*rG1m}cH>X5@D``$ylFbe`=NomdoBh)0&B*9XMIA-$5@w6xtGcl zLLYuV*5r?r{{Xv>)~0f@vCr&zrE)Kgz6P+c@WPb;07$uxM01YCzEk-M__?&xJgQ-r zdZ{W``TkY<9r3uwcj2vaeL8&R9r5IHzFmANq)Tr$p9?O*ERB~_!3ue<>>T~WlN0X9 z*YMlj=(9-BAa9pGppR0jo~Qy2q|we@R=L?35? zS=Lj!Pr|-Y(KV*gJV6EXLT(wpK^hE_aoWC?@U8B@t6L;qNQ8&^M1vUzwPhxE(Rv-Y zj&!w+ge4+s8$;Bt;6lck$2A_O72#0N+3$ zzZNmY^UE0W`1|7n@D=0so&vnoARbn!a?24WZHH;&vvw7&rTiAsbrlzux3_UjbGu~4 zbM?;^&0CbH9cH5OUP|ZXNK|8fdi#1}xCw3+2__IO26!ui2jD3+FNIP@O{mu|Rul6h z2i%}`9P?gXtN0I9wU}9ra^oG>J#p<(LzHsZ>96h#mM;uytvVbPHV9ilD!?(q(3un{hucsPy*5d9B6t7gp;H+J{J&YLalEob;~B zP$DO7Z}CSC*4DPNHqd{00o+09n)S~C{9LxuV|_OA39Xh+j7DF1=t!>#_;IXhI&J0U zi^QI6*$a>e!0npY)~qMhFCwPWyf=MsbmgXviI5fG4{GPng*AP)PHBO6;kc>e%;yDdXWlxVVPeqf7ojqWyVJACRBlWMV4Xn~Fq{`Te3n-Le^SMQQ$pwJ2kzL7944o#>Gt7;zxB+u}J&{wzH+L%-&w0jJHEO;2luM}J?j|YMy-6z8~%*hf)v9O=F)CM{8^LZ8mt?Wx?5w zpw>*9mZ22G%1$L1nN;IwJ?IOcIeyR@UcIdNm+iJ1d;O9ZAkIesu;3QP03;ggJ_G!1 z*Z%-!`;~1(lVBm^>t(W76gFIWhd3ew8d9CDHVM zh0Fs6Jt)!1v@h8B~hqoHM#dRyDxC{Y|PxAE7$_Q_e_uGuu z$9^FAajMzh-H~(VTicl#k@nW z-f0uQk#vSnJ`h=tB(r6D`*B!c6xOmks<^$6ll7}bx{e5dcNXNPI&wWLrtqGbbE8_7 zmNN;MhS+VhbOSjVXm^8wx<_|(%bK$*>F1izLo8%9(3Y!_u3V& zi#&bi>HvtXtxzi|;h1EPY>d}sKft?d>k)NnI>#?k^OGk%ag)f;JVsx2&gXPG9Pd?o%f8dYA4G+P-5Y+S=m?iV{ z=9cgPnJo&Oe229r`WF-G#nT~y3|m6SCn7qb3nqvrhz*H1`lJ5Ucm|XERcU(eq}nHk zyghp>M6AqbRRPg@fr48_GqEQF)}QT7hnjCVooq~$Iw=B zq}#E-GCrU1^fy*_4leFK`DT%S+N_;ZP)$cvRkFHQhA;Jq#~5SKdUmgtei?jg_>be8 zdxpM(8yh&+$=wGR2w ztvVl>0LH)vRzK3KYWkj^C6Zp=%jMfNp+kmTET6)kjd;|$TiYGe%ueumRynMDdk?i; z#_=LCgpa(tvIo|PpltPd{8iygUD8}#s5twIpfMe>S=yel750jMvq>Id>6{#U*PQBF zWu5i=O)a!>G=0={`U+X^S4~LZiMZ|n{vUd~BO|i#&H9TQg#_GB9|N4z<oNt6iFdRm}4wPeH4bGX zhw&|@r{WC~^(HaHaW%U_c7j3{Oa>h=M`Af0tAO}<@cUl0(%}*6jT}K!oy&HBvTISl?YmFWml4ptGmnv7^+JwtEO>08&8MHcVx65*|oHrYHamVFf zA^7u8y72Y*wA5rRESs7V4se9?_}A#fmk`}zHVG#mG4GHCe1rQ(_&`Oe>H4*^6%Ifb!)pmXWP zNS3!(Gx=!VV#Y~NY>u_ud1qtcyL&03lwUC2<&BJRIXO7zr!}K#;j3L%{@43P@9g%b zb&g468@#1B=NNYt{>#1u@V|jR9@)*H+uYu+sSliPFFhnfeV2do{{9&CDZ4gj86SBG_a?Z#WA<$LO=&mw z-kWc8rroRVESE3x{{XnB_jUAL%+Cz_Lzy$qU!9`3oB5c?Vh9Rna=0VrKS7`6S^G)% zHb;nS{{RkbF03Um++C#6rr4#DZ26fL;GQ_rZM2UKM{LU8d6b};pC=)CudcP-Huig9 zS{Y(QAG>^fuHCEVKaA@T)9h3L+b7>3Pxe>luR{azqbkeYK5y{uqp3x17CSdrM<5Ix zqdoK9yX^+U#MhdnH*Bd3!s1og7&!ygPg>z5@!hSgUuc3E

        HNDFOSwwY%{D0OMWd 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

        eAhMPx9xJ{{ZT&=sPeuy9-#`5XqHhB&N~n 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

        ehy7A@UyDvy97 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

        +vW`C?;lK8rRnxl+v)S^?}ceb#Up~D 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%0DOs1CCF)^!isF9p&U`X7YTI5Xt#S8!MpF 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Scene/Compose/ComposeViewController.swift b/Mastodon/Scene/Compose/ComposeViewController.swift index aa581c860..f5dfc8ba3 100644 --- a/Mastodon/Scene/Compose/ComposeViewController.swift +++ b/Mastodon/Scene/Compose/ComposeViewController.swift @@ -381,7 +381,7 @@ extension ComposeViewController { // bind publish bar button state viewModel.$isPublishBarButtonItemEnabled .receive(on: DispatchQueue.main) - .assign(to: \.isEnabled, on: publishBarButtonItem) + .assign(to: \.isEnabled, on: publishButton) .store(in: &disposeBag) // bind media button toolbar state @@ -915,14 +915,25 @@ extension ComposeViewController: UITextViewDelegate { // MARK: - ComposeToolbarViewDelegate extension ComposeViewController: ComposeToolbarViewDelegate { - func composeToolbarView(_ composeToolbarView: ComposeToolbarView, cameraButtonDidPressed sender: Any, mediaSelectionType type: ComposeToolbarView.MediaSelectionType) { + func composeToolbarView(_ composeToolbarView: ComposeToolbarView, mediaButtonDidPressed sender: Any, mediaSelectionType type: ComposeToolbarView.MediaSelectionType) { switch type { case .photoLibrary: present(photoLibraryPicker, animated: true, completion: nil) case .camera: present(imagePickerController, animated: true, completion: nil) case .browse: + #if SNAPSHOT + guard let image = UIImage(named: "Athens") else { return } + + let attachmentService = MastodonAttachmentService( + context: context, + image: image, + initialAuthenticationBox: viewModel.authenticationBox + ) + viewModel.attachmentServices = viewModel.attachmentServices + [attachmentService] + #else present(documentPickerController, animated: true, completion: nil) + #endif } } diff --git a/Mastodon/Scene/Compose/View/ComposeToolbarView.swift b/Mastodon/Scene/Compose/View/ComposeToolbarView.swift index 66bde158d..4ed84be7c 100644 --- a/Mastodon/Scene/Compose/View/ComposeToolbarView.swift +++ b/Mastodon/Scene/Compose/View/ComposeToolbarView.swift @@ -13,7 +13,7 @@ import MastodonAsset import MastodonLocalization protocol ComposeToolbarViewDelegate: AnyObject { - func composeToolbarView(_ composeToolbarView: ComposeToolbarView, cameraButtonDidPressed sender: Any, mediaSelectionType type: ComposeToolbarView.MediaSelectionType) + func composeToolbarView(_ composeToolbarView: ComposeToolbarView, mediaButtonDidPressed sender: Any, mediaSelectionType type: ComposeToolbarView.MediaSelectionType) func composeToolbarView(_ composeToolbarView: ComposeToolbarView, pollButtonDidPressed sender: Any) func composeToolbarView(_ composeToolbarView: ComposeToolbarView, emojiButtonDidPressed sender: Any) func composeToolbarView(_ composeToolbarView: ComposeToolbarView, contentWarningButtonDidPressed sender: Any) @@ -304,21 +304,21 @@ extension ComposeToolbarView { let photoLibraryAction = UIAction(title: L10n.Scene.Compose.MediaSelection.photoLibrary, image: UIImage(systemName: "rectangle.on.rectangle"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in guard let self = self else { return } os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: mediaSelectionType: .photoLibrary", ((#file as NSString).lastPathComponent), #line, #function) - self.delegate?.composeToolbarView(self, cameraButtonDidPressed: self.mediaButton, mediaSelectionType: .photoLibrary) + self.delegate?.composeToolbarView(self, mediaButtonDidPressed: self.mediaButton, mediaSelectionType: .photoLibrary) } children.append(photoLibraryAction) if UIImagePickerController.isSourceTypeAvailable(.camera) { let cameraAction = UIAction(title: L10n.Scene.Compose.MediaSelection.camera, image: UIImage(systemName: "camera"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] _ in guard let self = self else { return } os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: mediaSelectionType: .camera", ((#file as NSString).lastPathComponent), #line, #function) - self.delegate?.composeToolbarView(self, cameraButtonDidPressed: self.mediaButton, mediaSelectionType: .camera) + self.delegate?.composeToolbarView(self, mediaButtonDidPressed: self.mediaButton, mediaSelectionType: .camera) }) children.append(cameraAction) } let browseAction = UIAction(title: L10n.Scene.Compose.MediaSelection.browse, image: UIImage(systemName: "ellipsis"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in guard let self = self else { return } os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: mediaSelectionType: .browse", ((#file as NSString).lastPathComponent), #line, #function) - self.delegate?.composeToolbarView(self, cameraButtonDidPressed: self.mediaButton, mediaSelectionType: .browse) + self.delegate?.composeToolbarView(self, mediaButtonDidPressed: self.mediaButton, mediaSelectionType: .browse) } children.append(browseAction) diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index d4783045c..8b1d390f5 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -6,7 +6,7 @@ // -#if DEBUG +#if DEBUG || SNAPSHOT import os.log import UIKit import CoreData diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index d49235c81..7b7f35e5d 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -127,6 +127,11 @@ extension HomeTimelineViewController { settingBarButtonItem.action = #selector(HomeTimelineViewController.settingBarButtonItemPressed(_:)) #endif + #if SNAPSHOT + titleView.logoButton.menu = self.debugMenu + titleView.button.menu = self.debugMenu + #endif + viewModel.$displayComposeBarButtonItem .receive(on: DispatchQueue.main) .sink { [weak self] displayComposeBarButtonItem in diff --git a/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift b/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift index a1940640e..e67ee0106 100644 --- a/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift +++ b/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift @@ -65,6 +65,9 @@ extension HomeTimelineNavigationBarTitleView { configure(state: .logo) logoButton.addTarget(self, action: #selector(HomeTimelineNavigationBarTitleView.logoButtonDidPressed(_:)), for: .touchUpInside) button.addTarget(self, action: #selector(HomeTimelineNavigationBarTitleView.buttonDidPressed(_:)), for: .touchUpInside) + + logoButton.accessibilityIdentifier = "TitleButton" + button.accessibilityIdentifier = "TitleButton" } } diff --git a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewModel.swift b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewModel.swift index 7ddcefbbf..35480ba98 100644 --- a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewModel.swift +++ b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewModel.swift @@ -38,7 +38,7 @@ final class MastodonConfirmEmailViewModel { self.updateCredentialQuery = updateCredentialQuery } - #if DEBUG + #if DEBUG || SNAPSHOT init() { self.context = AppContext.shared self.email = "example.com" diff --git a/Mastodon/Scene/Profile/CachedProfileViewModel.swift b/Mastodon/Scene/Profile/CachedProfileViewModel.swift index 083724be1..c33a905a7 100644 --- a/Mastodon/Scene/Profile/CachedProfileViewModel.swift +++ b/Mastodon/Scene/Profile/CachedProfileViewModel.swift @@ -12,6 +12,8 @@ final class CachedProfileViewModel: ProfileViewModel { init(context: AppContext, mastodonUser: MastodonUser) { super.init(context: context, optionalMastodonUser: mastodonUser) + + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Profile] user[\(mastodonUser.id)] profile: \(mastodonUser.acctWithDomain)") } } diff --git a/Mastodon/Supporting Files/SceneDelegate.swift b/Mastodon/Supporting Files/SceneDelegate.swift index 79ce1543a..d178cd0d3 100644 --- a/Mastodon/Supporting Files/SceneDelegate.swift +++ b/Mastodon/Supporting Files/SceneDelegate.swift @@ -59,6 +59,14 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { sceneCoordinator.setup() sceneCoordinator.setupOnboardingIfNeeds(animated: false) window.makeKeyAndVisible() + + #if SNAPSHOT + // speedup animation + // window.layer.speed = 999 + + // disable animation + UIView.setAnimationsEnabled(false) + #endif if let shortcutItem = connectionOptions.shortcutItem { // Save it off for later when we become active. @@ -67,7 +75,15 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { UserDefaults.shared.observe(\.customUserInterfaceStyle, options: [.initial, .new]) { [weak self] defaults, _ in guard let self = self else { return } + #if SNAPSHOT + // toggle Dark Mode + // https://stackoverflow.com/questions/32988241/how-to-access-launchenvironment-and-launcharguments-set-in-xcuiapplication-runn + if ProcessInfo.processInfo.arguments.contains("UIUserInterfaceStyleForceDark") { + self.window?.overrideUserInterfaceStyle = .dark + } + #else self.window?.overrideUserInterfaceStyle = defaults.customUserInterfaceStyle + #endif } .store(in: &observations) diff --git a/MastodonUITests/MastodonUISnapshotTests.swift b/MastodonUITests/MastodonUISnapshotTests.swift index 182ed1810..d3c5d2bf3 100644 --- a/MastodonUITests/MastodonUISnapshotTests.swift +++ b/MastodonUITests/MastodonUISnapshotTests.swift @@ -45,6 +45,19 @@ extension MastodonUISnapshotTests { extension MastodonUISnapshotTests { + func takeSnapshot(name: String) { + let snapshot = XCUIScreen.main.screenshot() + let attachment = XCTAttachment( + uniformTypeIdentifier: "public.png", + name: "\(name).\(UIDevice.current.name).png", + payload: snapshot.pngRepresentation, + userInfo: nil + ) + attachment.lifetime = .keepAlways + add(attachment) + } + + // make tab display by tap it private func tapTab(app: XCUIApplication, tab: String) { let searchTab = app.tabBars.buttons[tab] if searchTab.exists { searchTab.tap() } @@ -52,159 +65,223 @@ extension MastodonUISnapshotTests { let searchCell = app.collectionViews.cells[tab] if searchCell.exists { searchCell.tap() } } + + private func showTitleButtonMenu(app: XCUIApplication) async throws { + let titleButton = app.navigationBars.buttons["TitleButton"].firstMatch + XCTAssert(titleButton.waitForExistence(timeout: 5)) + titleButton.press(forDuration: 1.0) + try await Task.sleep(nanoseconds: .second * 1) + } - func testSnapshot() async throws { - let app = XCUIApplication() - app.launch() + private func snapshot( + name: String, + count: Int = 3, + task: (_ app: XCUIApplication) async throws -> Void + ) async rethrows { + var app = XCUIApplication() - try await testSnapshotHome() - try await testSnapshotSearch() - try await testSnapshotNotification() - try await testSnapshotProfile() - try await testSnapshotCompose() - } - - func testSnapshotHome() async throws { - let app = XCUIApplication() - app.launch() - - tapTab(app: app, tab: "Home") - try await Task.sleep(nanoseconds: .second * 3) - takeSnapshot(name: "Home - 1") - - tapTab(app: app, tab: "Home") - try await Task.sleep(nanoseconds: .second * 3) - takeSnapshot(name: "Home - 2") - - tapTab(app: app, tab: "Home") - try await Task.sleep(nanoseconds: .second * 3) - takeSnapshot(name: "Home - 3") - } - - func testSnapshotSearch() async throws { - let app = XCUIApplication() - app.launch() - - tapTab(app: app, tab: "Search") - try await Task.sleep(nanoseconds: .second * 3) - takeSnapshot(name: "Search - 1") - - tapTab(app: app, tab: "Search") - try await Task.sleep(nanoseconds: .second * 3) - takeSnapshot(name: "Search - 2") - - tapTab(app: app, tab: "Search") - try await Task.sleep(nanoseconds: .second * 3) - takeSnapshot(name: "Search - 3") - } - - func testSnapshotNotification() async throws { - let app = XCUIApplication() - app.launch() - - tapTab(app: app, tab: "Notification") - try await Task.sleep(nanoseconds: .second * 3) - takeSnapshot(name: "Notification - 1") - - tapTab(app: app, tab: "Notification") - try await Task.sleep(nanoseconds: .second * 3) - takeSnapshot(name: "Notification - 2") - - tapTab(app: app, tab: "Notification") - try await Task.sleep(nanoseconds: .second * 3) - takeSnapshot(name: "Notification - 3") - } - - func testSnapshotProfile() async throws { - let username = ProcessInfo.processInfo.environment["username_snapshot"] ?? "Gargron" - - let app = XCUIApplication() - app.launch() - - // Go to Search tab - tapTab(app: app, tab: "Search") - - // Tap and search user - let searchField = app.navigationBars.searchFields.firstMatch - XCTAssert(searchField.waitForExistence(timeout: 5)) - searchField.tap() - searchField.typeText(username) - - // Tap the cell and display user profile - let cell = app.tables.cells.firstMatch - XCTAssert(cell.waitForExistence(timeout: 5)) - cell.tap() - - try await Task.sleep(nanoseconds: .second * 5) - - takeSnapshot(name: "Profile") - } - - func testSnapshotCompose() async throws { - let app = XCUIApplication() - app.launch() - - // open Compose scene - let composeBarButtonItem = app.navigationBars.buttons["Compose"].firstMatch - let composeCollectionViewCell = app.collectionViews.cells["Compose"] - if composeBarButtonItem.waitForExistence(timeout: 5) { - composeBarButtonItem.tap() - } else if composeCollectionViewCell.waitForExistence(timeout: 5) { - composeCollectionViewCell.tap() - } else { - XCTFail() + // pass -1 to debug test case + guard count >= 0 else { + app.launch() + try await task(app) + takeSnapshot(name: name) + return } - - // type text - let textView = app.textViews.firstMatch - XCTAssert(textView.waitForExistence(timeout: 5)) - textView.tap() - textView.typeText("Look at that view! #Athens ") - // tap Add Attachment toolbar button - let addAttachmentButton = app.buttons["Add Attachment"].firstMatch - XCTAssert(addAttachmentButton.waitForExistence(timeout: 5)) - addAttachmentButton.tap() + // Light Mode + for index in 0.. 1.6.1' # DEBUG - pod 'FLEX', '~> 4.4.0', :configurations => ['Debug'] + pod 'FLEX', '~> 4.4.0', :configurations => ['Debug', "Release Snapshot"] target 'MastodonTests' do inherit! :search_paths diff --git a/Podfile.lock b/Podfile.lock index 0593a8e24..336caf883 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -40,6 +40,6 @@ SPEC CHECKSUMS: SwiftGen: 67860cc7c3cfc2ed25b9b74cfd55495fc89f9108 "UITextField+Shake": 298ac5a0f239d731bdab999b19b628c956ca0ac3 -PODFILE CHECKSUM: 1426a4b78d8d711a5ae7600b9deea8986ddfdf7d +PODFILE CHECKSUM: c471d1f9c923dc63bf8684415c79b85adb2ac36b COCOAPODS: 1.11.2 From 57f4dd9cd6ee28c0eb0eb0356e3bd84fb8c1f5fe Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 19 Mar 2022 01:08:30 +0800 Subject: [PATCH 366/374] chore: update i18n resources. resolve #343 --- .../Sources/StringsConvertor/main.swift | 2 +- Mastodon.xcodeproj/project.pbxproj | 90 ++-- .../xcschemes/xcschememanagement.plist | 10 +- .../Resources/ku-TR.lproj/InfoPlist.strings | 4 - Mastodon/Resources/ku.lproj/InfoPlist.strings | 4 + .../{ku-TR.lproj => ku.lproj}/Intents.strings | 0 .../Intents.stringsdict | 0 .../Resources/ja.lproj/Localizable.strings | 18 +- .../Resources/ku.lproj/Localizable.strings | 377 +++++++++++++++++ .../ku.lproj/Localizable.stringsdict | 390 ++++++++++++++++++ 10 files changed, 831 insertions(+), 64 deletions(-) delete mode 100644 Mastodon/Resources/ku-TR.lproj/InfoPlist.strings create mode 100644 Mastodon/Resources/ku.lproj/InfoPlist.strings rename MastodonIntent/{ku-TR.lproj => ku.lproj}/Intents.strings (100%) rename MastodonIntent/{ku-TR.lproj => ku.lproj}/Intents.stringsdict (100%) create mode 100644 MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings create mode 100644 MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.stringsdict diff --git a/Localization/StringsConvertor/Sources/StringsConvertor/main.swift b/Localization/StringsConvertor/Sources/StringsConvertor/main.swift index 79ee6b492..14266a45e 100644 --- a/Localization/StringsConvertor/Sources/StringsConvertor/main.swift +++ b/Localization/StringsConvertor/Sources/StringsConvertor/main.swift @@ -56,7 +56,7 @@ private func map(language: String) -> String? { case "fr_FR": return "fr" // French case "de_DE": return "de" // German case "ja_JP": return "ja" // Japanese - case "kmr_TR": return "ku-TR" // Kurmanji (Kurdish) + case "kmr_TR": return "ku" // Kurmanji (Kurdish) case "ru_RU": return "ru" // Russian case "gd_GB": return "gd-GB" // Scottish Gaelic case "es_ES": return "es" // Spanish diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index c08dd9805..f15777661 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -1293,9 +1293,6 @@ DBD5B1F727BCFD9D00BD6B38 /* DataSourceProvider+TableViewControllerNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceProvider+TableViewControllerNavigateable.swift"; sourceTree = ""; }; DBD5B1F927BD013700BD6B38 /* DataSourceProvider+StatusTableViewControllerNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceProvider+StatusTableViewControllerNavigateable.swift"; sourceTree = ""; }; DBD9148F25DF6D8D00903DFD /* APIService+Onboarding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Onboarding.swift"; sourceTree = ""; }; - DBDC1CF9272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ku-TR"; path = "ku-TR.lproj/Intents.strings"; sourceTree = ""; }; - DBDC1CFC272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ku-TR"; path = "ku-TR.lproj/InfoPlist.strings"; sourceTree = ""; }; - DBDC1CFD272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "ku-TR"; path = "ku-TR.lproj/Intents.stringsdict"; sourceTree = ""; }; DBE0821425CD382600FD6BBD /* MastodonRegisterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterViewController.swift; sourceTree = ""; }; DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterViewModel.swift; sourceTree = ""; }; DBE3CDBA261C427900430CC6 /* TimelineHeaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineHeaderTableViewCell.swift; sourceTree = ""; }; @@ -1305,6 +1302,9 @@ DBE3CE00261D623D00430CC6 /* FavoriteViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewModel+State.swift"; sourceTree = ""; }; DBE3CE06261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewModel+Diffable.swift"; sourceTree = ""; }; DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationPreference.swift; sourceTree = ""; }; + DBEB19E927E4F37B00B0E80E /* ku */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ku; path = ku.lproj/Intents.strings; sourceTree = ""; }; + DBEB19EA27E4F37B00B0E80E /* ku */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ku; path = ku.lproj/InfoPlist.strings; sourceTree = ""; }; + DBEB19EB27E4F37B00B0E80E /* ku */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ku; path = ku.lproj/Intents.stringsdict; sourceTree = ""; }; DBF156DE2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarAddAccountCollectionViewCell.swift; sourceTree = ""; }; DBF156E02702DA6800EC00B7 /* Mastodon-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Mastodon-Bridging-Header.h"; sourceTree = ""; }; DBF156E12702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIStatusBarManager+HandleTapAction.m"; sourceTree = ""; }; @@ -3438,28 +3438,28 @@ ru, "gd-GB", th, - "ku-TR", "eu-ES", "sv-FI", + ku, ); mainGroup = DB427DC925BAA00100D1B89D; packageReferences = ( - DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */, + DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */, 2D61336725C18A4F00CAE157 /* XCRemoteSwiftPackageReference "AlamofireNetworkActivityIndicator" */, DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */, - 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer.git" */, - 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController.git" */, + 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */, + 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */, DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */, DBB525062611EAC0002F1F29 /* XCRemoteSwiftPackageReference "Tabman" */, - DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess.git" */, - DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit.git" */, - DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources.git" */, - DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi.git" */, - DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator.git" */, - DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin.git" */, - DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit.git" */, - DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections.git" */, - DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal.git" */, + DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */, + DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */, + DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */, + DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */, + DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator" */, + DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin" */, + DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */, + DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */, + DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal" */, ); productRefGroup = DB427DD325BAA00100D1B89D /* Products */; projectDirPath = ""; @@ -4439,9 +4439,9 @@ DB4B777F26CA4EFA00B087B3 /* ru */, DB4B778426CA500E00B087B3 /* gd-GB */, DB4B779226CA50BA00B087B3 /* th */, - DBDC1CF9272C0FD600055C3D /* ku-TR */, DB126A4C278C063F005726EE /* eu-ES */, DB126A56278C088D005726EE /* sv-FI */, + DBEB19E927E4F37B00B0E80E /* ku */, ); name = Intents.intentdefinition; sourceTree = ""; @@ -4462,9 +4462,9 @@ DB4B778226CA4EFA00B087B3 /* ru */, DB4B778726CA500E00B087B3 /* gd-GB */, DB4B779526CA50BA00B087B3 /* th */, - DBDC1CFC272C0FD600055C3D /* ku-TR */, DB126A4F278C063F005726EE /* eu-ES */, DB126A59278C088D005726EE /* sv-FI */, + DBEB19EA27E4F37B00B0E80E /* ku */, ); name = InfoPlist.strings; sourceTree = ""; @@ -4501,9 +4501,9 @@ DB4B779026CA504900B087B3 /* fr */, DB4B779126CA504A00B087B3 /* ja */, DB4B779626CA50BA00B087B3 /* th */, - DBDC1CFD272C0FD600055C3D /* ku-TR */, DB126A50278C063F005726EE /* eu-ES */, DB126A5A278C088D005726EE /* sv-FI */, + DBEB19EB27E4F37B00B0E80E /* ku */, ); name = Intents.stringsdict; sourceTree = ""; @@ -5304,7 +5304,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer.git" */ = { + 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/vtourraine/ThirdPartyMailer.git"; requirement = { @@ -5320,7 +5320,7 @@ minimumVersion = 3.1.0; }; }; - 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController.git" */ = { + 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/TimOliver/TOCropViewController.git"; requirement = { @@ -5336,7 +5336,7 @@ minimumVersion = 0.1.1; }; }; - DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit.git" */ = { + DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/TwidereProject/MetaTextKit.git"; requirement = { @@ -5344,7 +5344,7 @@ version = 2.2.1; }; }; - DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin.git" */ = { + DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kean/Nuke-FLAnimatedImage-Plugin.git"; requirement = { @@ -5352,7 +5352,7 @@ minimumVersion = 8.0.0; }; }; - DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */ = { + DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/AlamofireImage.git"; requirement = { @@ -5360,7 +5360,7 @@ minimumVersion = 4.1.0; }; }; - DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections.git" */ = { + DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/apple/swift-collections.git"; requirement = { @@ -5368,7 +5368,7 @@ minimumVersion = 0.0.5; }; }; - DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess.git" */ = { + DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kishikawakatsumi/KeychainAccess.git"; requirement = { @@ -5384,7 +5384,7 @@ minimumVersion = 1.4.1; }; }; - DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal.git" */ = { + DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/slackhq/PanModal.git"; requirement = { @@ -5392,7 +5392,7 @@ minimumVersion = 1.2.7; }; }; - DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit.git" */ = { + DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/ra1028/DifferenceKit.git"; requirement = { @@ -5400,7 +5400,7 @@ version = 1.2.0; }; }; - DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources.git" */ = { + DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/DiffableDataSources.git"; requirement = { @@ -5408,7 +5408,7 @@ kind = branch; }; }; - DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi.git" */ = { + DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/cezheng/Fuzi.git"; requirement = { @@ -5424,7 +5424,7 @@ minimumVersion = 2.11.0; }; }; - DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator.git" */ = { + DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/FPSIndicator.git"; requirement = { @@ -5437,7 +5437,7 @@ /* Begin XCSwiftPackageProductDependency section */ 2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */ = { isa = XCSwiftPackageProductDependency; - package = 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer.git" */; + package = 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */; productName = ThirdPartyMailer; }; 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */ = { @@ -5447,7 +5447,7 @@ }; 2D939AC725EE14620076FA61 /* CropViewController */ = { isa = XCSwiftPackageProductDependency; - package = 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController.git" */; + package = 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */; productName = CropViewController; }; 5D526FE125BE9AC400460CB9 /* MastodonSDK */ = { @@ -5466,17 +5466,17 @@ }; DB01E23226A98F0900C3965B /* MastodonMeta */ = { isa = XCSwiftPackageProductDependency; - package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit.git" */; + package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */; productName = MastodonMeta; }; DB01E23426A98F0900C3965B /* MetaTextKit */ = { isa = XCSwiftPackageProductDependency; - package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit.git" */; + package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */; productName = MetaTextKit; }; DB0C946426A6FD4D0088FB11 /* AlamofireImage */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */; + package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; productName = AlamofireImage; }; DB179266278D5A4A00B71DEB /* MastodonSDK */ = { @@ -5485,22 +5485,22 @@ }; DB3D0FF225BAA61700EAA174 /* AlamofireImage */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */; + package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; productName = AlamofireImage; }; DB552D4E26BBD10C00E481F6 /* OrderedCollections */ = { isa = XCSwiftPackageProductDependency; - package = DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections.git" */; + package = DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */; productName = OrderedCollections; }; DB68050F2637D0F800430867 /* KeychainAccess */ = { isa = XCSwiftPackageProductDependency; - package = DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess.git" */; + package = DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */; productName = KeychainAccess; }; DB6D9F41263527CE008423CD /* AlamofireImage */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */; + package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; productName = AlamofireImage; }; DB9A487D2603456B008B817C /* UITextView+Placeholder */ = { @@ -5510,22 +5510,22 @@ }; DBA5A52E26F07ED800CACBAA /* PanModal */ = { isa = XCSwiftPackageProductDependency; - package = DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal.git" */; + package = DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal" */; productName = PanModal; }; DBAC6482267D0B21007FE9FD /* DifferenceKit */ = { isa = XCSwiftPackageProductDependency; - package = DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit.git" */; + package = DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */; productName = DifferenceKit; }; DBAC649D267DFE43007FE9FD /* DiffableDataSources */ = { isa = XCSwiftPackageProductDependency; - package = DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources.git" */; + package = DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */; productName = DiffableDataSources; }; DBAC64A0267E6D02007FE9FD /* Fuzi */ = { isa = XCSwiftPackageProductDependency; - package = DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi.git" */; + package = DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */; productName = Fuzi; }; DBB525072611EAC0002F1F29 /* Tabman */ = { @@ -5553,7 +5553,7 @@ }; DBF7A0FB26830C33004176A2 /* FPSIndicator */ = { isa = XCSwiftPackageProductDependency; - package = DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator.git" */; + package = DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator" */; productName = FPSIndicator; }; /* End XCSwiftPackageProductDependency section */ diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index e8bcc805b..13499a8f2 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -9,7 +9,7 @@ isShown orderHint - 15 + 3 CoreDataStack.xcscheme_^#shared#^_ @@ -29,7 +29,7 @@ Mastodon - Snapshot.xcscheme_^#shared#^_ orderHint - 3 + 2 Mastodon - ar.xcscheme_^#shared#^_ @@ -104,7 +104,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 37 + 22 MastodonIntents.xcscheme_^#shared#^_ @@ -119,12 +119,12 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 36 + 21 ShareActionExtension.xcscheme_^#shared#^_ orderHint - 38 + 23 SuppressBuildableAutocreation diff --git a/Mastodon/Resources/ku-TR.lproj/InfoPlist.strings b/Mastodon/Resources/ku-TR.lproj/InfoPlist.strings deleted file mode 100644 index 669ecfacf..000000000 --- a/Mastodon/Resources/ku-TR.lproj/InfoPlist.strings +++ /dev/null @@ -1,4 +0,0 @@ -"NSCameraUsageDescription" = "Bo kişandina wêneyê ji bo rewşa şandiyan tê bikaranîn"; -"NSPhotoLibraryAddUsageDescription" = "Ji bo tomarkirina wêneyê di pirtûkxaneya wêneyan de tê bikaranîn"; -"NewPostShortcutItemTitle" = "Şandiya nû"; -"SearchShortcutItemTitle" = "Bigere"; \ No newline at end of file diff --git a/Mastodon/Resources/ku.lproj/InfoPlist.strings b/Mastodon/Resources/ku.lproj/InfoPlist.strings new file mode 100644 index 000000000..710865573 --- /dev/null +++ b/Mastodon/Resources/ku.lproj/InfoPlist.strings @@ -0,0 +1,4 @@ +"NSCameraUsageDescription" = "Used to take photo for post status"; +"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library"; +"NewPostShortcutItemTitle" = "New Post"; +"SearchShortcutItemTitle" = "Search"; \ No newline at end of file diff --git a/MastodonIntent/ku-TR.lproj/Intents.strings b/MastodonIntent/ku.lproj/Intents.strings similarity index 100% rename from MastodonIntent/ku-TR.lproj/Intents.strings rename to MastodonIntent/ku.lproj/Intents.strings diff --git a/MastodonIntent/ku-TR.lproj/Intents.stringsdict b/MastodonIntent/ku.lproj/Intents.stringsdict similarity index 100% rename from MastodonIntent/ku-TR.lproj/Intents.stringsdict rename to MastodonIntent/ku.lproj/Intents.stringsdict diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings index 68cf2d8d4..cb037936b 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings @@ -11,7 +11,7 @@ "Common.Alerts.EditProfileFailure.Message" = "プロフィールを編集できません。もう一度お試しください。"; "Common.Alerts.EditProfileFailure.Title" = "プロフィールを編集できませんでした"; "Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "複数の動画を添付することはできません。"; -"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "すでに画像が含まれている投稿に、動画を添付することができません。"; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "すでに画像が含まれている投稿に、動画を添付することはできません。"; "Common.Alerts.PublishPostFailure.Message" = "投稿に失敗しました。 インターネットに接続されているか確認してください。"; "Common.Alerts.PublishPostFailure.Title" = "失敗"; @@ -47,7 +47,7 @@ "Common.Controls.Actions.Previous" = "前"; "Common.Controls.Actions.Remove" = "消去"; "Common.Controls.Actions.Reply" = "リプライ"; -"Common.Controls.Actions.ReportUser" = "%@を報告"; +"Common.Controls.Actions.ReportUser" = "%@を通報"; "Common.Controls.Actions.Save" = "保存"; "Common.Controls.Actions.SavePhoto" = "写真を撮る"; "Common.Controls.Actions.SeeMore" = "もっと見る"; @@ -147,8 +147,8 @@ "Scene.Compose.Accessibility.PostVisibilityMenu" = "投稿の表示メニュー"; "Scene.Compose.Accessibility.RemovePoll" = "投票を消去"; "Scene.Compose.Attachment.AttachmentBroken" = "%@は壊れていてMastodonにアップロードできません。"; -"Scene.Compose.Attachment.DescriptionPhoto" = "視覚障がい者のために写真を説明"; -"Scene.Compose.Attachment.DescriptionVideo" = "視覚障がい者のための映像の説明"; +"Scene.Compose.Attachment.DescriptionPhoto" = "閲覧が難しいユーザーへの画像説明"; +"Scene.Compose.Attachment.DescriptionVideo" = "閲覧が難しいユーザーへの映像説明"; "Scene.Compose.Attachment.Photo" = "写真"; "Scene.Compose.Attachment.Video" = "動画"; "Scene.Compose.AutoComplete.SpaceToAdd" = "スペースを追加"; @@ -263,16 +263,16 @@ "Scene.Register.Input.Username.DuplicatePrompt" = "このユーザー名は使用されています"; "Scene.Register.Input.Username.Placeholder" = "ユーザー名"; "Scene.Register.Title" = "あなたのことを教えてください"; -"Scene.Report.Content1" = "他に報告したい投稿はありますか?"; -"Scene.Report.Content2" = "この報告についてモデレーターに言いたいことはありますか?"; +"Scene.Report.Content1" = "他に通報したい投稿はありますか?"; +"Scene.Report.Content2" = "この通報についてモデレーターに伝達しておきたい事項はありますか?"; "Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; "Scene.Report.Reported" = "REPORTED"; -"Scene.Report.Send" = "報告を送信"; +"Scene.Report.Send" = "通報を送信"; "Scene.Report.SkipToSend" = "コメントなしで送信"; "Scene.Report.Step1" = "ステップ 1/2"; "Scene.Report.Step2" = "ステップ 2/2"; "Scene.Report.TextPlaceholder" = "追加コメントを入力"; -"Scene.Report.Title" = "%@を報告"; +"Scene.Report.Title" = "%@を通報"; "Scene.Report.TitleReport" = "Report"; "Scene.Search.Recommend.Accounts.Description" = "以下のアカウントをフォローしてみてはいかがでしょうか?"; "Scene.Search.Recommend.Accounts.Follow" = "フォロー"; @@ -348,7 +348,7 @@ "Scene.Settings.Section.Notifications.Trigger.Follower" = "フォロワー"; "Scene.Settings.Section.Notifications.Trigger.Noone" = "なし"; "Scene.Settings.Section.Notifications.Trigger.Title" = "通知を受け取る"; -"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "アニメーションアバターの無効化する"; +"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "アバターのアニメーションを無効化する"; "Scene.Settings.Section.Preference.DisableEmojiAnimation" = "絵文字のアニメーションを無効化する"; "Scene.Settings.Section.Preference.Title" = "環境設定"; "Scene.Settings.Section.Preference.TrueBlackDarkMode" = "真っ黒なダークテーマを使用する"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings new file mode 100644 index 000000000..02c8be667 --- /dev/null +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.strings @@ -0,0 +1,377 @@ +"Common.Alerts.BlockDomain.BlockEntireDomain" = "Navperê asteng bike"; +"Common.Alerts.BlockDomain.Title" = "Tu ji xwe bawerî, bi rastî tu dixwazî hemû %@ asteng bikî? Di gelek rewşan de asteng kirin an jî bêdeng kirin têrê dike û tê tercîh kirin. Tu nikarî naveroka vê navperê di demnameyê an jî agahdariyên xwe de bibînî. Şopînerên te yê di vê navperê were jêbirin."; +"Common.Alerts.CleanCache.Message" = "Pêşbîra %@ biserketî hate pakkirin."; +"Common.Alerts.CleanCache.Title" = "Pêşbîrê pak bike"; +"Common.Alerts.Common.PleaseTryAgain" = "Ji kerema xwe dîsa biceribîne."; +"Common.Alerts.Common.PleaseTryAgainLater" = "Ji kerema xwe paşê dîsa biceribîne."; +"Common.Alerts.DeletePost.Message" = "Ma tu dixwazî vê şandiyê jê bibî?"; +"Common.Alerts.DeletePost.Title" = "Şandiyê jê bibe"; +"Common.Alerts.DiscardPostContent.Message" = "Bipejrîne ku naveroka şandiyê ya hatiye nivîsandin paşguh bikî."; +"Common.Alerts.DiscardPostContent.Title" = "Reşnivîsê paşguh bike"; +"Common.Alerts.EditProfileFailure.Message" = "Nikare profîlê serrast bike. Jkx dîsa biceribîne."; +"Common.Alerts.EditProfileFailure.Title" = "Di serrastkirina profîlê çewtî"; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Nikare ji bêtirî yek vîdyoyekê tevlî şandiyê bike."; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Nikare vîdyoyekê tevlî şandiyê ku berê wêne tê de heye bike."; +"Common.Alerts.PublishPostFailure.Message" = "Weşandina şandiyê têkçû. +Jkx girêdana înternetê xwe kontrol bike."; +"Common.Alerts.PublishPostFailure.Title" = "Weşandin têkçû"; +"Common.Alerts.SavePhotoFailure.Message" = "Ji kerema xwe mafê bide gihîştina wênegehê çalak bike da ku wêne werin tomarkirin."; +"Common.Alerts.SavePhotoFailure.Title" = "Tomarkirina wêneyê têkçû"; +"Common.Alerts.ServerError.Title" = "Çewtiya rajekar"; +"Common.Alerts.SignOut.Confirm" = "Derkeve"; +"Common.Alerts.SignOut.Message" = "Ma tu dixwazî ku derkevî?"; +"Common.Alerts.SignOut.Title" = "Derkeve"; +"Common.Alerts.SignUpFailure.Title" = "Tomarkirin têkçû"; +"Common.Alerts.VoteFailure.PollEnded" = "Rapirsîya qediya"; +"Common.Alerts.VoteFailure.Title" = "Dengdayîn têkçû"; +"Common.Controls.Actions.Add" = "Tevlî bike"; +"Common.Controls.Actions.Back" = "Vegere"; +"Common.Controls.Actions.BlockDomain" = "%@ asteng bike"; +"Common.Controls.Actions.Cancel" = "Dev jê berde"; +"Common.Controls.Actions.Compose" = "Binivîsîne"; +"Common.Controls.Actions.Confirm" = "Bipejirîne"; +"Common.Controls.Actions.Continue" = "Bidomîne"; +"Common.Controls.Actions.CopyPhoto" = "Wêneyê jê bigire"; +"Common.Controls.Actions.Delete" = "Jê bibe"; +"Common.Controls.Actions.Discard" = "Biavêje"; +"Common.Controls.Actions.Done" = "Qediya"; +"Common.Controls.Actions.Edit" = "Serrast bike"; +"Common.Controls.Actions.FindPeople" = "Mirovan bo şopandinê bibîne"; +"Common.Controls.Actions.ManuallySearch" = "Ji devlê bi destan lêgerînê bike"; +"Common.Controls.Actions.Next" = "Pêş"; +"Common.Controls.Actions.Ok" = "BAŞ E"; +"Common.Controls.Actions.Open" = "Veke"; +"Common.Controls.Actions.OpenInBrowser" = "Di gerokê de veke"; +"Common.Controls.Actions.OpenInSafari" = "Di Safariyê de veke"; +"Common.Controls.Actions.Preview" = "Pêşdîtin"; +"Common.Controls.Actions.Previous" = "Paş"; +"Common.Controls.Actions.Remove" = "Rake"; +"Common.Controls.Actions.Reply" = "Bersivê bide"; +"Common.Controls.Actions.ReportUser" = "%@ ragihîne"; +"Common.Controls.Actions.Save" = "Tomar bike"; +"Common.Controls.Actions.SavePhoto" = "Wêneyê tomar bike"; +"Common.Controls.Actions.SeeMore" = "Bêtir bibîne"; +"Common.Controls.Actions.Settings" = "Sazkarî"; +"Common.Controls.Actions.Share" = "Parve bike"; +"Common.Controls.Actions.SharePost" = "Şandiyê parve bike"; +"Common.Controls.Actions.ShareUser" = "%@ parve bike"; +"Common.Controls.Actions.SignIn" = "Têkeve"; +"Common.Controls.Actions.SignUp" = "Tomar bibe"; +"Common.Controls.Actions.Skip" = "Derbas bike"; +"Common.Controls.Actions.TakePhoto" = "Wêne bikişîne"; +"Common.Controls.Actions.TryAgain" = "Dîsa biceribîne"; +"Common.Controls.Actions.UnblockDomain" = "%@ asteng neke"; +"Common.Controls.Friendship.Block" = "Asteng bike"; +"Common.Controls.Friendship.BlockDomain" = "%@ asteng bike"; +"Common.Controls.Friendship.BlockUser" = "%@ asteng bike"; +"Common.Controls.Friendship.Blocked" = "Astengkirî"; +"Common.Controls.Friendship.EditInfo" = "Zanyariyan serrast bike"; +"Common.Controls.Friendship.Follow" = "Bişopîne"; +"Common.Controls.Friendship.Following" = "Dişopîne"; +"Common.Controls.Friendship.Mute" = "Bêdeng bike"; +"Common.Controls.Friendship.MuteUser" = "%@ bêdeng bike"; +"Common.Controls.Friendship.Muted" = "Bêdengkirî"; +"Common.Controls.Friendship.Pending" = "Tê nirxandin"; +"Common.Controls.Friendship.Request" = "Daxwaz bike"; +"Common.Controls.Friendship.Unblock" = "Astengiyê rake"; +"Common.Controls.Friendship.UnblockUser" = "%@ asteng neke"; +"Common.Controls.Friendship.Unmute" = "Bêdeng neke"; +"Common.Controls.Friendship.UnmuteUser" = "%@ bêdeng neke"; +"Common.Controls.Keyboard.Common.ComposeNewPost" = "Şandiyeke nû binivsîne"; +"Common.Controls.Keyboard.Common.OpenSettings" = "Sazkariyan Veke"; +"Common.Controls.Keyboard.Common.ShowFavorites" = "Bijarteyan nîşan bide"; +"Common.Controls.Keyboard.Common.SwitchToTab" = "Biguherîne bo %@"; +"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Beşa pêş"; +"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Beşa paş"; +"Common.Controls.Keyboard.Timeline.NextStatus" = "Şandiya pêş"; +"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Profîla nivîskaran veke"; +"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Profîla nivîskaran veke"; +"Common.Controls.Keyboard.Timeline.OpenStatus" = "Şandiyê veke"; +"Common.Controls.Keyboard.Timeline.PreviewImage" = "Pêşdîtina wêneyê"; +"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Şandeya paş"; +"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Bersivê bide şandiyê"; +"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Hişyariya naverokê biguherîne"; +"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Li ser şandiyê bijarte biguherîne"; +"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Ji nû ve nivîsandin di şandiyê de biguherîne"; +"Common.Controls.Status.Actions.Favorite" = "Bijarte"; +"Common.Controls.Status.Actions.Hide" = "Veşêre"; +"Common.Controls.Status.Actions.Menu" = "Kulîn"; +"Common.Controls.Status.Actions.Reblog" = "Ji nû ve nivîsandin"; +"Common.Controls.Status.Actions.Reply" = "Bersivê bide"; +"Common.Controls.Status.Actions.Unfavorite" = "Nebijarte"; +"Common.Controls.Status.Actions.Unreblog" = "Ji nû ve nivîsandinê vegere"; +"Common.Controls.Status.ContentWarning" = "Hişyariya naverokê"; +"Common.Controls.Status.MediaContentWarning" = "Ji bo eşkerekirinê li derekî bitikîne"; +"Common.Controls.Status.Poll.Closed" = "Girtî"; +"Common.Controls.Status.Poll.Vote" = "Deng bide"; +"Common.Controls.Status.ShowPost" = "Şandiyê nîşan bide"; +"Common.Controls.Status.ShowUserProfile" = "Profîla bikarhêner nîşan bide"; +"Common.Controls.Status.Tag.Email" = "E-name"; +"Common.Controls.Status.Tag.Emoji" = "Emojî"; +"Common.Controls.Status.Tag.Hashtag" = "Hashtag"; +"Common.Controls.Status.Tag.Link" = "Girêdan"; +"Common.Controls.Status.Tag.Mention" = "Qalkirin"; +"Common.Controls.Status.Tag.Url" = "URL"; +"Common.Controls.Status.UserReblogged" = "%@ ji nû ve nivîsand"; +"Common.Controls.Status.UserRepliedTo" = "Bersiv da %@"; +"Common.Controls.Status.Visibility.Direct" = "Tenê bikarhênerê qalkirî dikare vê şandiyê bibîne."; +"Common.Controls.Status.Visibility.Private" = "Tenê şopînerên wan dikarin vê şandiyê bibînin."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Tenê şopînerên min dikarin vê şandiyê bibînin."; +"Common.Controls.Status.Visibility.Unlisted" = "Her kes dikare vê şandiyê bibîne lê nayê nîşandan di demnameya gelemperî de."; +"Common.Controls.Tabs.Home" = "Serrûpel"; +"Common.Controls.Tabs.Notification" = "Agahdarî"; +"Common.Controls.Tabs.Profile" = "Profîl"; +"Common.Controls.Tabs.Search" = "Bigere"; +"Common.Controls.Timeline.Filtered" = "Parzûnkirî"; +"Common.Controls.Timeline.Header.BlockedWarning" = "Tu nikarî profîla vî/ê bikarhênerî bibînî +heya ku ew astengiyê li ser te rakin."; +"Common.Controls.Timeline.Header.BlockingWarning" = "Tu nikarî profîla vî/ê bikarhênerî bibînî +Heya ku tu astengiyê li ser wî/ê ranekî. +Profîla te ji wan ra wiha xuya dike."; +"Common.Controls.Timeline.Header.NoStatusFound" = "Tu şandî nehate dîtin"; +"Common.Controls.Timeline.Header.SuspendedWarning" = "Ev bikarhêner hatiye rawestandin."; +"Common.Controls.Timeline.Header.UserBlockedWarning" = "Tu nikarî profîla %@ bibînî +Heta ku astengîya te rakin."; +"Common.Controls.Timeline.Header.UserBlockingWarning" = "Tu nikarî profîla %@ bibînî +Heya ku tu astengiyê li ser wî/ê ranekî. +Profîla te ji wan ra wiha xuya dike."; +"Common.Controls.Timeline.Header.UserSuspendedWarning" = "Ajimêra %@ hatiye rawestandin."; +"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Şandiyên wendayî bar bike"; +"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Şandiyên wendayî tên barkirin..."; +"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Bêtir bersivan nîşan bide"; +"Common.Controls.Timeline.Timestamp.Now" = "Niha"; +"Scene.AccountList.AddAccount" = "Ajimêr tevlî bike"; +"Scene.AccountList.DismissAccountSwitcher" = "Guherkera ajimêrê paş guh bike"; +"Scene.AccountList.TabBarHint" = "Profîla hilbijartî ya niha: %@. Du caran bitikîne û paşê dest bide ser da ku guhêrbara ajimêr were nîşandan"; +"Scene.Compose.Accessibility.AppendAttachment" = "Pêvek tevlî bike"; +"Scene.Compose.Accessibility.AppendPoll" = "Rapirsî tevlî bike"; +"Scene.Compose.Accessibility.CustomEmojiPicker" = "Hilbijêrê emojî yên kesanekirî"; +"Scene.Compose.Accessibility.DisableContentWarning" = "Hişyariya naverokê neçalak bike"; +"Scene.Compose.Accessibility.EnableContentWarning" = "Hişyariya naverokê çalak bike"; +"Scene.Compose.Accessibility.PostVisibilityMenu" = "Kulîna xuyabûna şandiyê"; +"Scene.Compose.Accessibility.RemovePoll" = "Rapirsî rake"; +"Scene.Compose.Attachment.AttachmentBroken" = "Ev %@ naxebite û nayê barkirin + li ser Mastodon."; +"Scene.Compose.Attachment.DescriptionPhoto" = "Wêneyê ji bo kêmbînên dîtbar bide nasîn..."; +"Scene.Compose.Attachment.DescriptionVideo" = "Vîdyoyê ji bo kêmbînên dîtbar bide nasîn..."; +"Scene.Compose.Attachment.Photo" = "wêne"; +"Scene.Compose.Attachment.Video" = "vîdyo"; +"Scene.Compose.AutoComplete.SpaceToAdd" = "Bicîhkirinê tevlî bike"; +"Scene.Compose.ComposeAction" = "Biweşîne"; +"Scene.Compose.ContentInputPlaceholder" = "Tiştê ku di hişê te de ye binivîsin an jî pêve bike"; +"Scene.Compose.ContentWarning.Placeholder" = "Li vir hişyariyek hûrgilî binivîsine..."; +"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Pêvek tevlî bike - %@"; +"Scene.Compose.Keyboard.DiscardPost" = "Şandî paşguh bike"; +"Scene.Compose.Keyboard.PublishPost" = "Şandiyê biweşîne"; +"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Xuyabûnê hilbijêre - %@"; +"Scene.Compose.Keyboard.ToggleContentWarning" = "Hişyariya naverokê biguherîne"; +"Scene.Compose.Keyboard.TogglePoll" = "Rapirsiyê biguherîne"; +"Scene.Compose.MediaSelection.Browse" = "Bigere"; +"Scene.Compose.MediaSelection.Camera" = "Wêne bikişîne"; +"Scene.Compose.MediaSelection.PhotoLibrary" = "Wênegeh"; +"Scene.Compose.Poll.DurationTime" = "Dirêjî: %@"; +"Scene.Compose.Poll.OneDay" = "1 Roj"; +"Scene.Compose.Poll.OneHour" = "1 Demjimêr"; +"Scene.Compose.Poll.OptionNumber" = "Vebijêrk %ld"; +"Scene.Compose.Poll.SevenDays" = "7 Roj"; +"Scene.Compose.Poll.SixHours" = "6 Demjimêr"; +"Scene.Compose.Poll.ThirtyMinutes" = "30 xulek"; +"Scene.Compose.Poll.ThreeDays" = "3 Roj"; +"Scene.Compose.ReplyingToUser" = "bersiv bide %@"; +"Scene.Compose.Title.NewPost" = "Şandiya nû"; +"Scene.Compose.Title.NewReply" = "Bersiva nû"; +"Scene.Compose.Visibility.Direct" = "Tenê mirovên ku min qalkirî"; +"Scene.Compose.Visibility.Private" = "Tenê şopîneran"; +"Scene.Compose.Visibility.Public" = "Gelemperî"; +"Scene.Compose.Visibility.Unlisted" = "Nerêzokkirî"; +"Scene.ConfirmEmail.Button.OpenEmailApp" = "Sepana e-nameyê veke"; +"Scene.ConfirmEmail.Button.Resend" = "Ji nû ve bişîne"; +"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Kontrol bike ka navnîşana e-nameya te rast e û her wiha peldanka xwe ya spam."; +"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "E-namyê yê dîsa bişîne"; +"Scene.ConfirmEmail.DontReceiveEmail.Title" = "E-nameyê xwe kontrol bike"; +"Scene.ConfirmEmail.OpenEmailApp.Description" = "Me tenê ji te re e-nameyek şand. Heke nehatiye peldanka xwe ya spamê kontrol bike."; +"Scene.ConfirmEmail.OpenEmailApp.Mail" = "E-name"; +"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Rajegirê e-nameyê veke"; +"Scene.ConfirmEmail.OpenEmailApp.Title" = "Nameyên xwe yên wergirtî kontrol bike."; +"Scene.ConfirmEmail.Subtitle" = "Me tenê e-nameyek ji %@ re şand, +girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin."; +"Scene.ConfirmEmail.Title" = "Tiştekî dawî."; +"Scene.Favorite.Title" = "Bijarteyên te"; +"Scene.Follower.Footer" = "Şopîner ji rajekerên din nayê dîtin."; +"Scene.Following.Footer" = "Şopandin ji rajekerên din nayê dîtin."; +"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Şandiyên nû bibîne"; +"Scene.HomeTimeline.NavigationBarState.Offline" = "Derhêl"; +"Scene.HomeTimeline.NavigationBarState.Published" = "Hate weşandin!"; +"Scene.HomeTimeline.NavigationBarState.Publishing" = "Şandî tê weşandin..."; +"Scene.HomeTimeline.Title" = "Serrûpel"; +"Scene.Notification.Keyobard.ShowEverything" = "Her tiştî nîşan bide"; +"Scene.Notification.Keyobard.ShowMentions" = "Qalkirinan nîşan bike"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "şandiya te hez kir"; +"Scene.Notification.NotificationDescription.FollowedYou" = "te şopand"; +"Scene.Notification.NotificationDescription.MentionedYou" = "qale te kir"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "rapirsî qediya"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "şandiya te ji nû ve nivisand"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "dixwazê te bişopîne"; +"Scene.Notification.Title.Everything" = "Her tişt"; +"Scene.Notification.Title.Mentions" = "Qalkirin"; +"Scene.Preview.Keyboard.ClosePreview" = "Pêşdîtin bigire"; +"Scene.Preview.Keyboard.ShowNext" = "A pêş nîşan bide"; +"Scene.Preview.Keyboard.ShowPrevious" = "A paş nîşan bide"; +"Scene.Profile.Dashboard.Followers" = "şopîner"; +"Scene.Profile.Dashboard.Following" = "dişopîne"; +"Scene.Profile.Dashboard.Posts" = "şandî"; +"Scene.Profile.Fields.AddRow" = "Rêzê tevlî bike"; +"Scene.Profile.Fields.Placeholder.Content" = "Naverok"; +"Scene.Profile.Fields.Placeholder.Label" = "Nîşan"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Ji bo rakirina astengkirinê %@ bipejirîne"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Ajimêr asteng bike"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Ji bo bêdengkirina %@ bipejirîne"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Ajimêrê bêdeng bike"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Ji bo rakirina astengkirinê %@ bipejirîne"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Astengiyê li ser ajimêr rake"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Ji bo vekirina bêdengkirinê %@ bipejirîne"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Ajimêrê bêdeng neke"; +"Scene.Profile.SegmentedControl.About" = "Derbar"; +"Scene.Profile.SegmentedControl.Media" = "Medya"; +"Scene.Profile.SegmentedControl.Posts" = "Şandî"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Şandî û bersiv"; +"Scene.Profile.SegmentedControl.Replies" = "Bersiv"; +"Scene.Register.Error.Item.Agreement" = "Peyman"; +"Scene.Register.Error.Item.Email" = "E-name"; +"Scene.Register.Error.Item.Locale" = "Zimanê navrûyê"; +"Scene.Register.Error.Item.Password" = "Pêborîn"; +"Scene.Register.Error.Item.Reason" = "Sedem"; +"Scene.Register.Error.Item.Username" = "Navê bikarhêner"; +"Scene.Register.Error.Reason.Accepted" = "%@ divê were pejirandin"; +"Scene.Register.Error.Reason.Blank" = "%@ pêwist e"; +"Scene.Register.Error.Reason.Blocked" = "%@ peydekerê e-peyamê yê qedexekirî dihewîne"; +"Scene.Register.Error.Reason.Inclusion" = "%@ ne nirxek piştgirî ye"; +"Scene.Register.Error.Reason.Invalid" = "%@ ne derbasdar e"; +"Scene.Register.Error.Reason.Reserved" = "%@ peyveke parastî ye"; +"Scene.Register.Error.Reason.Taken" = "%@ jixwe tê bikaranîn"; +"Scene.Register.Error.Reason.TooLong" = "%@ pir dirêj e"; +"Scene.Register.Error.Reason.TooShort" = "%@ pir kurt e"; +"Scene.Register.Error.Reason.Unreachable" = "%@ xuya ye ku tune ye"; +"Scene.Register.Error.Special.EmailInvalid" = "Ev navnîşaneke e-nameyê ne derbasdar e"; +"Scene.Register.Error.Special.PasswordTooShort" = "Pêborîn pir kurt e (divê herî kêm 8 tîp be)"; +"Scene.Register.Error.Special.UsernameInvalid" = "Navê bikarhêner divê tenê ji tîpên alfajimarî û binxêz pêk be"; +"Scene.Register.Error.Special.UsernameTooLong" = "Navê bikarhêner pir dirêj e (ji 30 tîpan dirêjtir nabe)"; +"Scene.Register.Input.Avatar.Delete" = "Jê bibe"; +"Scene.Register.Input.DisplayName.Placeholder" = "navê nîşanê"; +"Scene.Register.Input.Email.Placeholder" = "e-name"; +"Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Tu çima dixwazî beşdar bibî?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "hate kontrolkirin"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "nehate kontrolkirin"; +"Scene.Register.Input.Password.CharacterLimit" = "8 tîp"; +"Scene.Register.Input.Password.Hint" = "Pêborîna te herî kêm divê ji 8 tîpan pêk bê"; +"Scene.Register.Input.Password.Placeholder" = "pêborîn"; +"Scene.Register.Input.Password.Require" = "Pêdiviya pêborîna te ya herî kêm:"; +"Scene.Register.Input.Username.DuplicatePrompt" = "Navê vê bikarhêner tê girtin."; +"Scene.Register.Input.Username.Placeholder" = "navê bikarhêner"; +"Scene.Register.Title" = "Ji me re hinekî qala xwe bike %@"; +"Scene.Report.Content1" = "Şandiyên din hene ku tu dixwazî tevlî ragihandinê bikî?"; +"Scene.Report.Content2" = "Derbarê vê ragihandinê de tiştek heye ku divê çavdêr bizanin?"; +"Scene.Report.ReportSentTitle" = "Spas ji bo ragihandina te, em ê binirxînin."; +"Scene.Report.Reported" = "HATE RAGIHANDIN"; +"Scene.Report.Send" = "Ragihandinê bişîne"; +"Scene.Report.SkipToSend" = "Bêyî şirove bişîne"; +"Scene.Report.Step1" = "Gav 1 ji 2"; +"Scene.Report.Step2" = "Gav 2 ji 2"; +"Scene.Report.TextPlaceholder" = "Şiroveyên daxwazkirê binivîsine an jî pê ve bike"; +"Scene.Report.Title" = "%@ ragihîne"; +"Scene.Report.TitleReport" = "Ragihandin"; +"Scene.Search.Recommend.Accounts.Description" = "Dibe ku tu bixwazî van ajimêran bişopînî"; +"Scene.Search.Recommend.Accounts.Follow" = "Bişopîne"; +"Scene.Search.Recommend.Accounts.Title" = "Ajimêrên ku belkî tu jê hez bikî"; +"Scene.Search.Recommend.ButtonText" = "Hemûyan bibîne"; +"Scene.Search.Recommend.HashTag.Description" = "Hashtag ên ku pir balê dikişînin"; +"Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ kes diaxivin"; +"Scene.Search.Recommend.HashTag.Title" = "Rojev li ser Mastodon"; +"Scene.Search.SearchBar.Cancel" = "Dev jê berde"; +"Scene.Search.SearchBar.Placeholder" = "Li hashtag û bikarhêneran bigere"; +"Scene.Search.Searching.Clear" = "Pak bike"; +"Scene.Search.Searching.EmptyState.NoResults" = "Encam tune"; +"Scene.Search.Searching.RecentSearch" = "Lêgerînên dawî"; +"Scene.Search.Searching.Segment.All" = "Hemû"; +"Scene.Search.Searching.Segment.Hashtags" = "Hashtag"; +"Scene.Search.Searching.Segment.People" = "Mirov"; +"Scene.Search.Searching.Segment.Posts" = "Şandî"; +"Scene.Search.Title" = "Bigere"; +"Scene.ServerPicker.Button.Category.Academia" = "akademî"; +"Scene.ServerPicker.Button.Category.Activism" = "çalakî"; +"Scene.ServerPicker.Button.Category.All" = "Hemû"; +"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "Beş: Hemû"; +"Scene.ServerPicker.Button.Category.Art" = "huner"; +"Scene.ServerPicker.Button.Category.Food" = "xwarin"; +"Scene.ServerPicker.Button.Category.Furry" = "furry"; +"Scene.ServerPicker.Button.Category.Games" = "lîsk"; +"Scene.ServerPicker.Button.Category.General" = "giştî"; +"Scene.ServerPicker.Button.Category.Journalism" = "rojnamevanî"; +"Scene.ServerPicker.Button.Category.Lgbt" = "lgbt"; +"Scene.ServerPicker.Button.Category.Music" = "muzîk"; +"Scene.ServerPicker.Button.Category.Regional" = "herêmî"; +"Scene.ServerPicker.Button.Category.Tech" = "teknolojî"; +"Scene.ServerPicker.Button.SeeLess" = "Kêmtir bibîne"; +"Scene.ServerPicker.Button.SeeMore" = "Bêtir bibîne"; +"Scene.ServerPicker.EmptyState.BadNetwork" = "Di dema barkirina daneyan da çewtî derket. Girêdana xwe ya înternetê kontrol bike."; +"Scene.ServerPicker.EmptyState.FindingServers" = "Peydakirina rajekarên berdest..."; +"Scene.ServerPicker.EmptyState.NoResults" = "Encam tune"; +"Scene.ServerPicker.Input.Placeholder" = "Rajekarekî bibîne an jî beşdarî ya xwe bibe..."; +"Scene.ServerPicker.Label.Category" = "BEŞ"; +"Scene.ServerPicker.Label.Language" = "ZIMAN"; +"Scene.ServerPicker.Label.Users" = "BIKARHÊNER"; +"Scene.ServerPicker.Subtitle" = "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre."; +"Scene.ServerPicker.SubtitleExtend" = "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre. Her civakek ji hêla rêxistinek an kesek bi tevahî serbixwe ve tê xebitandin."; +"Scene.ServerPicker.Title" = "Rajekarekê hilbijêre, +Her kîjan rajekar be."; +"Scene.ServerRules.Button.Confirm" = "Ez dipejirînim"; +"Scene.ServerRules.PrivacyPolicy" = "polîtikaya nihêniyê"; +"Scene.ServerRules.Prompt" = "Bi domandinê, tu ji bo %@ di bin mercên bikaranînê û polîtîkaya nepenîtiyê dipejirînî."; +"Scene.ServerRules.Subtitle" = "Ev rêzik ji aliyê çavdêrên %@ ve tên sazkirin."; +"Scene.ServerRules.TermsOfService" = "mercên bikaranînê"; +"Scene.ServerRules.Title" = "Hinek rêzikên bingehîn."; +"Scene.Settings.Footer.MastodonDescription" = "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di %@ (%@) de"; +"Scene.Settings.Keyboard.CloseSettingsWindow" = "Sazkariyên çarçoveyê bigire"; +"Scene.Settings.Section.Appearance.Automatic" = "Xweber"; +"Scene.Settings.Section.Appearance.Dark" = "Her dem tarî"; +"Scene.Settings.Section.Appearance.Light" = "Her dem ronahî"; +"Scene.Settings.Section.Appearance.Title" = "Xuyang"; +"Scene.Settings.Section.BoringZone.AccountSettings" = "Sazkariyên ajimêr"; +"Scene.Settings.Section.BoringZone.Privacy" = "Polîtikaya nihêniyê"; +"Scene.Settings.Section.BoringZone.Terms" = "Mercên bikaranînê"; +"Scene.Settings.Section.BoringZone.Title" = "Devera acizker"; +"Scene.Settings.Section.LookAndFeel.Light" = "Ronahî"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Tarî"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Hinekî tarî"; +"Scene.Settings.Section.LookAndFeel.Title" = "Xuyang"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Pergalê bi kar bîne"; +"Scene.Settings.Section.Notifications.Boosts" = "Şandiya min ji nû ve nivîsand"; +"Scene.Settings.Section.Notifications.Favorites" = "Şandiyên min hez kir"; +"Scene.Settings.Section.Notifications.Follows" = "Min dişopîne"; +"Scene.Settings.Section.Notifications.Mentions" = "Qale min kir"; +"Scene.Settings.Section.Notifications.Title" = "Agahdarî"; +"Scene.Settings.Section.Notifications.Trigger.Anyone" = "her kes"; +"Scene.Settings.Section.Notifications.Trigger.Follow" = "her kesê ku dişopînim"; +"Scene.Settings.Section.Notifications.Trigger.Follower" = "şopînerek"; +"Scene.Settings.Section.Notifications.Trigger.Noone" = "ne yek"; +"Scene.Settings.Section.Notifications.Trigger.Title" = "Min agahdar bike gava"; +"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Avatarên anîmasyonî neçalak bike"; +"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Emojiyên anîmasyonî neçalak bike"; +"Scene.Settings.Section.Preference.Title" = "Sazkarî"; +"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Moda tarî ya reş a rastîn"; +"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Ji bo vekirina girêdanan geroka berdest bi kar bîne"; +"Scene.Settings.Section.SpicyZone.Clear" = "Pêşbîra medyayê pak bike"; +"Scene.Settings.Section.SpicyZone.Signout" = "Derkeve"; +"Scene.Settings.Section.SpicyZone.Title" = "Devera germ"; +"Scene.Settings.Title" = "Sazkarî"; +"Scene.SuggestionAccount.FollowExplain" = "Gava tu kesekî dişopînî, tu yê şandiyê wan di serrûpelê de bibîne."; +"Scene.SuggestionAccount.Title" = "Kesên bo ku bişopînî bibîne"; +"Scene.Thread.BackTitle" = "Şandî"; +"Scene.Thread.Title" = "Şandî ji %@"; +"Scene.Welcome.GetStarted" = "Dest pê bike"; +"Scene.Welcome.LogIn" = "Têkeve"; +"Scene.Welcome.Slogan" = "Torên civakî +di destên te de."; +"Scene.Wizard.AccessibilityHint" = "Du caran bitikîne da ku çarçoveyahilpekok ji holê rakî"; +"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Dest bide ser bişkoja profîlê da ku di navbera gelek ajimêrann de biguherînî."; +"Scene.Wizard.NewInMastodon" = "Nû di Mastodon de"; \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.stringsdict new file mode 100644 index 000000000..8ae1b812a --- /dev/null +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ku.lproj/Localizable.stringsdict @@ -0,0 +1,390 @@ + + + + + a11y.plural.count.unread.notification + + NSStringLocalizedFormatKey + %#@notification_count_unread_notification@ + notification_count_unread_notification + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 agahdariya nexwendî + other + %ld agahdariyên nexwendî + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Sînorê têketinê derbas kir %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 tîp + other + %ld tîp + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Sînorê têketinê %#@character_count@ maye + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 tîp + other + %ld tîp + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + şandî + other + şandî + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 şandî + other + %ld şandî + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hezkirin + other + %ld hezkirin + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 ji nû ve nivîsandin + other + %ld ji nû ve nivîsandin + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 deng + other + %ld deng + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hilbijêr + other + %ld hilbijêr + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 mirov diaxive + other + %ld mirov diaxive + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 dişopîne + other + %ld dişopîne + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 şopîner + other + %ld şopîner + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 sal berê + other + %ld sal berê + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 meh berê + other + %ld meh berê + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 roj berê + other + %ld roj berê + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 demjimêr berê + other + %ld demjimêr berê + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 xulek berê + other + %ld xulek berê + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 çirke berê + other + %ld çirke berê + + + date.year.ago.abbr + + NSStringLocalizedFormatKey + %#@count_year_ago_abbr@ + count_year_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 sal berê + other + %ld sal berê + + + date.month.ago.abbr + + NSStringLocalizedFormatKey + %#@count_month_ago_abbr@ + count_month_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 xulek berê + other + %ld xulek berê + + + date.day.ago.abbr + + NSStringLocalizedFormatKey + %#@count_day_ago_abbr@ + count_day_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 roj berê + other + %ld roj berê + + + date.hour.ago.abbr + + NSStringLocalizedFormatKey + %#@count_hour_ago_abbr@ + count_hour_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 demjimêr berê + other + %ld demjimêr berê + + + date.minute.ago.abbr + + NSStringLocalizedFormatKey + %#@count_minute_ago_abbr@ + count_minute_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 xulek berê + other + %ld xulek berê + + + date.second.ago.abbr + + NSStringLocalizedFormatKey + %#@count_second_ago_abbr@ + count_second_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 çirke berê + other + %ld çirke berê + + + + From a2ac3ea5d32bf1c354915ca5d3f57cc97ca8ede1 Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 19 Mar 2022 01:19:07 +0800 Subject: [PATCH 367/374] chore: retain the API model semantic --- .../Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift index 0f9392ad2..7cf4890bc 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift @@ -22,7 +22,7 @@ extension Mastodon.Entity { public let title: String public let description: String public let shortDescription: String? - public let email: String? + public let email: String public let version: String? public let languages: [String]? // (ISO 639 Part 1-5 language codes) public let registrations: Bool? @@ -43,7 +43,7 @@ extension Mastodon.Entity { self.title = domain self.description = "" self.shortDescription = nil - self.email = nil + self.email = "" self.version = nil self.languages = nil self.registrations = nil From ad524b0172d20816e017210fecaa8de1b5cc7d48 Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 19 Mar 2022 02:13:26 +0800 Subject: [PATCH 368/374] fix: force LTR for some text fields. #318 --- .../Cell/MastodonRegisterTextFieldTableViewCell.swift | 2 ++ .../Register/MastodonRegisterViewModel+Diffable.swift | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift index 8659e1500..3daa2eb18 100644 --- a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift @@ -87,6 +87,8 @@ extension MastodonRegisterTextFieldTableViewCell { textField.autocapitalizationType = .none textField.attributedPlaceholder = nil textField.isSecureTextEntry = false + textField.textAlignment = .natural + textField.semanticContentAttribute = .unspecified let paddingRect = CGRect(x: 0, y: 0, width: 16, height: 10) textField.leftView = UIView(frame: paddingRect) diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift index b172dd40a..beb16890b 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift @@ -55,6 +55,8 @@ extension MastodonRegisterViewModel { cell.textField.keyboardType = .alphabet cell.textField.autocorrectionType = .no cell.textField.text = self.username + cell.textField.textAlignment = .left + cell.textField.semanticContentAttribute = .forceLeftToRight NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification, object: cell.textField) .receive(on: DispatchQueue.main) .compactMap { notification in @@ -94,6 +96,8 @@ extension MastodonRegisterViewModel { cell.textField.autocorrectionType = .no cell.textField.isSecureTextEntry = true cell.textField.text = self.password + cell.textField.textAlignment = .left + cell.textField.semanticContentAttribute = .forceLeftToRight NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification, object: cell.textField) .receive(on: DispatchQueue.main) .compactMap { notification in From 4614bd86926517a99f668eb11c5144e98d3bec90 Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 19 Mar 2022 02:51:24 +0800 Subject: [PATCH 369/374] fix: textView break IME input issue. resolve #342 --- .../TableViewCell/ComposeStatusContentTableViewCell.swift | 5 ++++- ShareActionExtension/Scene/View/StatusEditorView.swift | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift index c9c8fa4fa..4c3d37169 100644 --- a/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift +++ b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift @@ -161,7 +161,10 @@ extension ComposeStatusContentTableViewCell: UITextViewDelegate { logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): text: \(textView.text ?? "")") guard textView === statusContentWarningEditorView.textView else { return } // replace line break with space - textView.text = textView.text.replacingOccurrences(of: "\n", with: " ") + // needs check input state to prevent break the IME + if textView.markedTextRange == nil { + textView.text = textView.text.replacingOccurrences(of: "\n", with: " ") + } contentWarningContent.send(textView.text) } diff --git a/ShareActionExtension/Scene/View/StatusEditorView.swift b/ShareActionExtension/Scene/View/StatusEditorView.swift index c945874e6..595057fa0 100644 --- a/ShareActionExtension/Scene/View/StatusEditorView.swift +++ b/ShareActionExtension/Scene/View/StatusEditorView.swift @@ -81,7 +81,10 @@ public struct StatusEditorView: UIViewRepresentable { } public func textViewDidChange(_ textView: UITextView) { - parent.string = textView.text + // prevent break IME input + if textView.markedTextRange == nil { + parent.string = textView.text + } } func updateLayout(width: CGFloat) { From 5f79b94170c6f633b404cf6a0f33fd353c851d59 Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 19 Mar 2022 02:54:28 +0800 Subject: [PATCH 370/374] chore: update version to 1.3.0 (109) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 36 +++++++++---------- .../xcschemes/xcschememanagement.plist | 8 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 29 insertions(+), 29 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index ca2c1ef20..73f11cd26 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 108 + 109 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index f15777661..69596a202 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4648,7 +4648,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4677,7 +4677,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4785,11 +4785,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 108; + DYLIB_CURRENT_VERSION = 109; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4816,11 +4816,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 108; + DYLIB_CURRENT_VERSION = 109; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4845,7 +4845,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4870,7 +4870,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4895,7 +4895,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4920,7 +4920,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5006,7 +5006,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -5073,11 +5073,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 108; + DYLIB_CURRENT_VERSION = 109; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5102,7 +5102,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5126,7 +5126,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5151,7 +5151,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5176,7 +5176,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5200,7 +5200,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 108; + CURRENT_PROJECT_VERSION = 109; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 13499a8f2..a90323e98 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -19,7 +19,7 @@ Mastodon - RTL.xcscheme_^#shared#^_ orderHint - 17 + 18 Mastodon - Release.xcscheme_^#shared#^_ @@ -104,7 +104,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 22 + 49 MastodonIntents.xcscheme_^#shared#^_ @@ -119,12 +119,12 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 21 + 51 ShareActionExtension.xcscheme_^#shared#^_ orderHint - 23 + 50 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index b207e6866..311ee390b 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -43,7 +43,7 @@ CFBundleVersion - 108 + 109 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index d8b6d1e0c..02385f4e6 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 108 + 109 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index ca2c1ef20..73f11cd26 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 108 + 109 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index ca2c1ef20..73f11cd26 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 108 + 109 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index b0e6e0a22..215b572b5 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 108 + 109 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index bfafe753a..82ba5658a 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 108 + 109 NSExtension NSExtensionAttributes From 8af9c4af4543e084710f58ea1c4f90eb04de4117 Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 19 Mar 2022 03:12:09 +0800 Subject: [PATCH 371/374] chore: update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e785f29b..aac90354a 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ arch -x86_64 pod install 3. Select `Mastodon` scheme and run it. #### Contributors -The app require the `App Group` capability. To make sure it works for your developer membership. Please check [AppName.swift](AppShared/AppName.swift) file and set another unique `groupID` and update `App Group` settings. +The app require the `App Group` capability. To make sure it works for your developer membership. Please check [AppSecret.swift](AppShared/AppSecret.swift) file and set another unique `groupID` and update `App Group` settings. The app is compatible with [toot-relay](https://github.com/DagAgren/toot-relay) APNs. You can set your push notification endpoint via cocoapod-keys. From 82269c0409ad6a1eb7a0279896cb34ed5dc17122 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 29 Mar 2022 09:10:39 +0800 Subject: [PATCH 372/374] chore: fix typo --- Documentation/Snapshot.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation/Snapshot.md b/Documentation/Snapshot.md index 10fececc2..7140f7a0b 100644 --- a/Documentation/Snapshot.md +++ b/Documentation/Snapshot.md @@ -11,7 +11,7 @@ brew install chargepoint/xcparse/xcparse ## How it works We use `xcodebuild` CLI tool to trigger UITest. -Set the `name` in `-destinatio` option to add device for snapshot. For example: +Set the `name` in `-destination` option to add device for snapshot. For example: `-destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (5th generation)' \` You can list the avaiable simulator: @@ -128,6 +128,7 @@ xcparse screenshots '' ~/Downloads/MastodonBuild/Screenshots/ 🎊 Export complete! 🎊 # group +cd ~/Downloads/MastodonBuild/Screenshots/ mkdir 'iPhone 8 Plus' 'iPhone 13 Pro Max' 'iPad Pro (12.9-inch) (5th generation)' find . -name "*iPad*" -type file -print0 | xargs -0 -I {} mv {} './iPad Pro (12.9-inch) (5th generation)' find . -name "*iPhone 8*" -type file -print0 | xargs -0 -I {} mv {} './iPhone 8 Plus' From 6e86a57e6f99705b209fe7d2530fd7bd320e27cc Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 29 Mar 2022 17:34:31 +0800 Subject: [PATCH 373/374] chore: add bug report template and contributing document --- .github/ISSUE_TEMPLATE/bug.yaml | 62 ++++++++++++++ .github/ISSUE_TEMPLATE/issue.md | 32 ------- Documentation/CONTRIBUTING.md | 30 +++++++ Documentation/Setup.md | 83 +++++++++++++++++++ .../xcshareddata/swiftpm/Package.resolved | 18 ++++ Podfile.lock | 2 +- 6 files changed, 194 insertions(+), 33 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug.yaml delete mode 100644 .github/ISSUE_TEMPLATE/issue.md create mode 100644 Documentation/CONTRIBUTING.md create mode 100644 Documentation/Setup.md diff --git a/.github/ISSUE_TEMPLATE/bug.yaml b/.github/ISSUE_TEMPLATE/bug.yaml new file mode 100644 index 000000000..c4a1f4911 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yaml @@ -0,0 +1,62 @@ +name: 🐞 Bug +description: File a bug/issue +title: "[BUG] " +labels: [Bug, Needs Triage] +body: +- type: checkboxes + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the bug you encountered. + options: + - label: I have searched the existing issues + required: true +- type: textarea + attributes: + label: Current Behavior + description: A concise description of what you're experiencing. + validations: + required: false +- type: textarea + attributes: + label: Expected Behavior + description: A concise description of what you expected to happen. + validations: + required: false +- type: textarea + attributes: + label: Steps To Reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. In this environment... + 2. With this config... + 3. Tap '...' + 4. See error... + validations: + required: false +- type: textarea + attributes: + label: Environment + description: | + You can check the version and build number in the bottom of in-app settings. + examples: + - **Device**: iPhone X + - **OS**: iOS 15.3 + - **Version**: v1.3.0 + - **Build**: 103 + value: | + - Device: + - OS: + - Version: + - Build: + render: markdown + validations: + required: false +- type: textarea + attributes: + label: Anything else? + description: | + The server domain? Post links? Anything that will give us more context about the issue you are encountering! + + Tip: You can attach images or video or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/issue.md b/.github/ISSUE_TEMPLATE/issue.md deleted file mode 100644 index cc2855ede..000000000 --- a/.github/ISSUE_TEMPLATE/issue.md +++ /dev/null @@ -1,32 +0,0 @@ -## Description -<!--Brief description for bug--> - - -## App version -> You can check the version and build number in app setting footer. - -<!--Version Code here--> -- Version: v0.0.0 -- Build: 0 - -## Detail - -### Steps to reproduce - -<!--How to reproduce this bug?--> - -1. Tap … -2. … - -### Actual Behavior - -<!--What happened?--> - -The app … - -### Expected behavior - -<!--What is the expected behavior--> - -The app … - diff --git a/Documentation/CONTRIBUTING.md b/Documentation/CONTRIBUTING.md new file mode 100644 index 000000000..cc018445d --- /dev/null +++ b/Documentation/CONTRIBUTING.md @@ -0,0 +1,30 @@ +# Contributing + +- File the issue for bug report and feature request +- Translate the project in our [Crowdin](https://crowdin.com/project/mastodon-for-ios) project +- Make the Pull Request to contribute + +## Bug Report +File the issue about the bug. Make sure you are installing the latest version app from TestFlight or App Store. + +## Translation +[![Crowdin](https://badges.crowdin.net/mastodon-for-ios/localized.svg)](https://crowdin.com/project/mastodon-for-ios) + +The translation will update regularly. Please request language if not listed via issue. + +## Pull Request + +You can make a pull request directly with small block code changes for bugfix or feature implementations. Before making a pull request with hundred lines of changes to this repository, please first discuss the change you wish to make via issue. + +Also, there are lots of existing feature request issues that could be a good-first-issue discussing place. + +Follow the git-flow pattern to make your pull request. + +1. Ensure you are checkout on the `develop` branch. +2. Write your codes and test them on **iPad and iPhone**. +3. Merge the `develop` into your branch then make a Pull Request. Please merge the branch and resolve any conflicts when the `develop` updates. **Do not force push your codes.** +4. Make sure the permission for your folk is open to the reviewer. Code style fix, conflict resolution, and other changes may be committed by the reviewer directly. +5. Request a code review and wait for approval. The PR will be merged when it is approved. + +## Documentation +The documents for this app is list under the [Documentation](../Documentation/) folder. We are also welcome contributions for documentation. \ No newline at end of file diff --git a/Documentation/Setup.md b/Documentation/Setup.md new file mode 100644 index 000000000..ede9d4862 --- /dev/null +++ b/Documentation/Setup.md @@ -0,0 +1,83 @@ +# Setup + +## Requirements + +- Xcode 13+ +- Swift 5.5+ +- iOS 14.0+ + + +Intell the latest version of Xcode from the App Store or Apple Developer Download website. Also, we assert you have the [Homebrew](https://brew.sh) package manager. + +This guide may not suit your machine and actually setup procedure may change in the future. Please file the issue or Pull Request if there are any problems. + +## CocoaPods +The app use [CocoaPods]() and [CocoaPods-Keys](https://github.com/orta/cocoapods-keys). The M1 Mac needs virtual ruby env to workaround compatibility issues. + +#### Intel Mac + +```zsh +sudo gem install cocoapods cocoapods-keys +``` + +#### M1 Mac + +```zsh +# install the rbenv +brew install rbenv +which ruby +# > /usr/bin/ruby +echo 'eval "$(rbenv init -)"' >> ~/.zprofile +source ~/.zprofile +which ruby +# > /Users/mainasuk/.rbenv/shims/ruby + +# select ruby +rbenv install --list +# here we use the latest 3.0.x version +rbenv install 3.0.3 +rbenv global 3.0.3 +ruby --version +# > ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin21] + +sudo gem install cocoapods cocoapods-keys +``` + +## Bootstrap + +```zsh +# make a clean build +sudo gem install cocoapods-clean +pod clean + +# make install +pod install --repo-update + +# open workspace +open Mastodon.xcworkspace +``` + +The CocoaPods-Key plugin will request the push notification endpoint. You can fufill the empty string and set it later. To setup the push notification. Please check section `Push Notification` below. + +The app requires the `App Group` capability. To make sure it works for your developer membership. Please check [AppSecret.swift](../AppShared/AppSecret.swift) file and set another unique `groupID` and update `App Group` settings. + +#### Push Notification (Optional) +The app is compatible with [toot-relay](https://github.com/DagAgren/toot-relay) APNs. You can set your push notification endpoint via Cocoapod-Keys. There are two endpoints: +- notification_endpoint: for `RELEASE` usage +- notification_endpoint_debug: for `DEBUG` usage + +Please check the [Establishing a Certificate-Based Connection to APNs +](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_certificate-based_connection_to_apns) document to generate the certificate and exports the p12 file. + +Note: +Please check and set the `notification.Topic` to the app BundleID in [toot-relay.go](https://github.com/DagAgren/toot-relay/blob/f9d6894040509881fee845972cd38ec6cd8f5a11/toot-relay.go#L112). The server needs use a reverse proxy to port this relay on 443 port with valid domain and HTTPS certificate. + +## Start +1. Open `Mastodon.xcworkspace` +2. Wait for the Swift Package Dependencies resolved. +2. Check the signing settings make sure to choose a team. [More info…](https://help.apple.com/xcode/mac/current/#/dev23aab79b4) +3. Select `Mastodon` scheme and device then run it. (Command + R) + +## What's next + +We welcome contributions! And if you have an interest to contribute codes. Here is a document that describes the app architecture and what's tech stack it uses. \ No newline at end of file diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index a10344881..11d453883 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -55,6 +55,15 @@ "version": "1.2.0" } }, + { + "package": "FLAnimatedImage", + "repositoryURL": "https://github.com/Flipboard/FLAnimatedImage.git", + "state": { + "branch": null, + "revision": "e7f9fd4681ae41bf6f3056db08af4f401d61da52", + "version": "1.0.16" + } + }, { "package": "FPSIndicator", "repositoryURL": "https://github.com/MainasuK/FPSIndicator.git", @@ -207,6 +216,15 @@ "revision": "d0470491f56e734731bbf77991944c0dfdee3e0e", "version": "2.6.1" } + }, + { + "package": "UITextView+Placeholder", + "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder.git", + "state": { + "branch": null, + "revision": "20f513ded04a040cdf5467f0891849b1763ede3b", + "version": "1.4.1" + } } ] }, diff --git a/Podfile.lock b/Podfile.lock index 336caf883..f8dde6937 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -42,4 +42,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: c471d1f9c923dc63bf8684415c79b85adb2ac36b -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 From 91b72c16edafc74eaa711de99d034bbea1bbca38 Mon Sep 17 00:00:00 2001 From: CMK <cirno.mainasuk@gmail.com> Date: Tue, 29 Mar 2022 18:49:28 +0800 Subject: [PATCH 374/374] chore: update README --- Documentation/Acknowledgments.md | 34 +++++++++++++ README.md | 85 ++++---------------------------- 2 files changed, 44 insertions(+), 75 deletions(-) create mode 100644 Documentation/Acknowledgments.md diff --git a/Documentation/Acknowledgments.md b/Documentation/Acknowledgments.md new file mode 100644 index 000000000..eab4b93f5 --- /dev/null +++ b/Documentation/Acknowledgments.md @@ -0,0 +1,34 @@ +# Acknowledgments + +- [AlamofireImage](https://github.com/Alamofire/AlamofireImage) +- [AlamofireNetworkActivityIndicator](https://github.com/Alamofire/AlamofireNetworkActivityIndicator) +- [Alamofire](https://github.com/Alamofire/Alamofire) +- [CommonOSLog](https://github.com/mainasuk/CommonOSLog) +- [CryptoSwift](https://github.com/krzyzanowskim/CryptoSwift) +- [DateToolSwift](https://github.com/MatthewYork/DateTools) +- [DiffableDataSources](https://github.com/ra1028/DiffableDataSources) +- [DifferenceKit](https://github.com/ra1028/DifferenceKit) +- [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) +- [FLEX](https://github.com/FLEXTool/FLEX) +- [FPSIndicator](https://github.com/MainasuK/FPSIndicator) +- [Fuzi](https://github.com/cezheng/Fuzi) +- [Kanna](https://github.com/tid-kijyun/Kanna) +- [KeychainAccess](https://github.com/kishikawakatsumi/KeychainAccess.git) +- [Kingfisher](https://github.com/onevcat/Kingfisher) +- [MetaTextKit](https://github.com/TwidereProject/MetaTextKit) +- [Nuke-FLAnimatedImage-Plugin](https://github.com/kean/Nuke-FLAnimatedImage-Plugin) +- [Nuke](https://github.com/kean/Nuke) +- [Pageboy](https://github.com/uias/Pageboy#the-basics) +- [PanModal](https://github.com/slackhq/PanModal.git) +- [SDWebImage](https://github.com/SDWebImage/SDWebImage) +- [swift-collections](https://github.com/apple/swift-collections) +- [swift-nio](https://github.com/apple/swift-nio) +- [SwiftGen](https://github.com/SwiftGen/SwiftGen) +- [SwiftUI-Introspect](https://github.com/siteline/SwiftUI-Introspect) +- [SwiftyJSON](https://github.com/SwiftyJSON/SwiftyJSON) +- [Tabman](https://github.com/uias/Tabman) +- [TwidereX-iOS](https://github.com/TwidereProject/TwidereX-iOS) +- [ThirdPartyMailer](https://github.com/vtourraine/ThirdPartyMailer) +- [TOCropViewController](https://github.com/TimOliver/TOCropViewController) +- [TwitterProfile](https://github.com/OfTheWolf/TwitterProfile) +- [UITextView-Placeholder](https://github.com/devxoul/UITextView-Placeholder) \ No newline at end of file diff --git a/README.md b/README.md index aac90354a..bf35b4599 100644 --- a/README.md +++ b/README.md @@ -4,85 +4,20 @@ <a href="https://apps.apple.com/us/app/mastodon-for-iphone/id1571998974?itsct=apps_box_badge&itscg=30200" style="display: inline-block; overflow: hidden; border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"><img src="https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-us?size=250x83&releaseDate=1627603200&h=72b0c8495c2c0af1291efef280c4c2c1" alt="Download on the App Store" style="border-top-left-radius: 13px; border-top-right-radius: 13px; border-bottom-right-radius: 13px; border-bottom-left-radius: 13px; width: 250px; height: 83px;"></a> -## Requirements +## Introduction -- Xcode 12.5+ -- Swift 5.3+ -- iOS 14.0+ +This is the repository for the official iOS App for Mastodon. You can install it from the App Store now. You can build the app from source and file bug report here. -## Setup -We need the latest version of Xcode from App Store. And use Cocoapods for dependency management. +Read this blog post for this app to learn more. +> [Developing an official iOS app for Mastodon](https://blog.joinmastodon.org/2021/02/developing-an-official-ios-app-for-mastodon/) -### CocoaPods +## Getting Start +- Read the setup guide [here](./Documentation/Setup.md) +- About [contributing](./Documentation/CONTRIBUTING.md) +- [Documentation folder](./Documentation/) -#### For the Intel Mac - -```zsh -sudo gem install cocoapods -sudo gem install cocoapods-keys -pod install -``` - -#### For the M1 Mac - -```zsh -sudo gem install cocoapods -sudo gem install cocoapods-keys - -# pod install may not works on M1 Mac. Fix by install ffi -# ref: https://github.com/CocoaPods/CocoaPods/issues/10220 -sudo arch -x86_64 gem install ffi - -arch -x86_64 pod install -``` - -## Start - -1. Open `Mastodon.xcworkspace` -2. Wait the Swift Package Dependencies resolved. -2. Check the signing settings make sure choose a team. [More info…](https://help.apple.com/xcode/mac/current/#/dev23aab79b4) -3. Select `Mastodon` scheme and run it. - -#### Contributors -The app require the `App Group` capability. To make sure it works for your developer membership. Please check [AppSecret.swift](AppShared/AppSecret.swift) file and set another unique `groupID` and update `App Group` settings. - -The app is compatible with [toot-relay](https://github.com/DagAgren/toot-relay) APNs. You can set your push notification endpoint via cocoapod-keys. - - -## Acknowledgements - -- [AlamofireImage](https://github.com/Alamofire/AlamofireImage) -- [AlamofireNetworkActivityIndicator](https://github.com/Alamofire/AlamofireNetworkActivityIndicator) -- [Alamofire](https://github.com/Alamofire/Alamofire) -- [CommonOSLog](https://github.com/mainasuk/CommonOSLog) -- [CryptoSwift](https://github.com/krzyzanowskim/CryptoSwift) -- [DateToolSwift](https://github.com/MatthewYork/DateTools) -- [DiffableDataSources](https://github.com/ra1028/DiffableDataSources) -- [DifferenceKit](https://github.com/ra1028/DifferenceKit) -- [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) -- [FLEX](https://github.com/FLEXTool/FLEX) -- [FPSIndicator](https://github.com/MainasuK/FPSIndicator) -- [Fuzi](https://github.com/cezheng/Fuzi) -- [Kanna](https://github.com/tid-kijyun/Kanna) -- [KeychainAccess](https://github.com/kishikawakatsumi/KeychainAccess.git) -- [Kingfisher](https://github.com/onevcat/Kingfisher) -- [MetaTextKit](https://github.com/TwidereProject/MetaTextKit) -- [Nuke-FLAnimatedImage-Plugin](https://github.com/kean/Nuke-FLAnimatedImage-Plugin) -- [Nuke](https://github.com/kean/Nuke) -- [Pageboy](https://github.com/uias/Pageboy#the-basics) -- [PanModal](https://github.com/slackhq/PanModal.git) -- [SDWebImage](https://github.com/SDWebImage/SDWebImage) -- [swift-collections](https://github.com/apple/swift-collections) -- [swift-nio](https://github.com/apple/swift-nio) -- [SwiftGen](https://github.com/SwiftGen/SwiftGen) -- [SwiftUI-Introspect](https://github.com/siteline/SwiftUI-Introspect) -- [SwiftyJSON](https://github.com/SwiftyJSON/SwiftyJSON) -- [Tabman](https://github.com/uias/Tabman) -- [TwidereX-iOS](https://github.com/TwidereProject/TwidereX-iOS) -- [ThirdPartyMailer](https://github.com/vtourraine/ThirdPartyMailer) -- [TOCropViewController](https://github.com/TimOliver/TOCropViewController) -- [TwitterProfile](https://github.com/OfTheWolf/TwitterProfile) -- [UITextView-Placeholder](https://github.com/devxoul/UITextView-Placeholder) +## Acknowledgments +Thanks to these open-sources projects listed [here](./Documentation/Acknowledgments.md). ## License

        h&k3yfg@ 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

      wyQcgh_TM$!tRZ!IyF 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 z z*&5OI!#%pZwN5Wzy~?Z-wWsFz`dcc5v*~rh`q+R){>d1o`JB|G!iE{T(SdEm;k4K% zDsZY>Up2qNm^#v&BnT5u4hA4pc0gzdnDX-4ssK77*&(WrScC_#rc%`teLJQ;YPwJL zoDwpDcv|jjYz89wrP+I$h+hua7&k;z231mJM;jYQ0W4w?f8isO(4bIXku{PCYO&V8 zp$arkxfHz8Xo%SU=>7u+tese9xhmOIEs|=Oz|4aGlVHp#))eOX=V{MRKE!O0=;yy4 zKx$WIn-RW5l=hUkeP&@$p%qgP~?`LgY4L7n6C2>V4 zx6M-UE23w{M>apktu&CrlEAeH^nO zjI*E;s4!7J#=($X`TK{ou(1GFlLR`7I#TGqc%h%=*X~Tz3%9Q1xG5w@;lJAu0H=9Gr1$$WA7_IFB?w?^e}+UbuGP%O+lpEkj7{M z4EuZzM7j@As81ffNfmfDp_^y;BpdC*vZZHA_X8xG+H z<;Dy4t@ynv)l|E@G#{nYO_ZFy27S=gx?ZUX__F&KKF^aXH3kOe6skSSSnxi2Ut|T( zbn{Sv%}{nlW{qiakyq*w6Q!mA(v**}%R+l{epTb3f>~MEb>Kd|>KKTPdhf$eX#c3E z@jP*{Q?mmKT%UEdM@Ko`+wZad!`H=vF*cRx@caG#NQ(NM@M=GpsCyq18le;|Mv;wk z8*HLZ>Gcne>AgFBW=#|J#C0T>u5-M{y40Aycp;^~@x?W|co9POF^&0}+pHVC^5R8$ z@76JOxqrLeHZ9Gcr{lLscE0H@uh9`}V6L-5_YdyUm9uB);&ZRiho9Y{mtJ~>Zhra^ z<)p<88|_r?f3dSbi|u)OZsR%jj2_T~gB=$32egb-olzosm4hzE8eE%?d(>lKJ?t}+ z?eaaHC(qPmSoTJg@D&R-JOMDWDZMa1r(U@P zyYo!tnM`F9jj5XcfhovCP!=AGG`gx7?&2W#uB^BlG^$t;l%71#W=TzToQFtxAI0&Q zbEv#eBiH4e?ASRxrlaE{*7T6rO{6K}28M~wjhQJSOwi9VqsqlZJfn)7q8Deu4GxK*9I3KgZDi^3PRp9Z|cSC;#B7&Cbc3Y9_Xp$wBsWnCAgim5srzzj*5CvbM zmcA%6*%M2Zu}e2I%0+ESVxoK{Z_xHPb2PhB#IhBxQh47{^fVPVP=#^HcHxP5(Fy}& z861h8CsFDn>p{rZay`quNzO4b35L!krB2D8U> zLfwLOsrx-zy>=+VKf5THl}u=GFrYEBqfc)?qK!+J*fE39h%WUQ9KQeB>kM?y(-&X) zDjjcqCW+#nKi|sQZ0^6q$d*TuiZn0JPt{>0nyP4_ndV1kS!GU8ENL8ekCy!e z@qMRZFJw}Pu4OKcZO93kc|@_uPEfaueDvJQCc32YgxDqx(fhJrAt}?R#QbC4n>7*O zfGV0$n1i`mKfda5FXyio*sFlnpT)*#7GSFC(vwUB$!y(Y775HQ0HKj)Bec-+xAh*rNIi9 zfka_tLiRn2x(IHBc%6-=mEwI~z;>Lgh63#gd&-Gh8>=UqrYJMg=lfhz$iTVrq zQ(GfB~+ zEfwO)2!U(lOAME;sy<9tLD=x3qsTm51@uDtL)kH<9bAHuGpb*qv2He%ps;|ys9hB( zj5ZM<4hhsS{Unx)2a%Y9*s`4gtTERVonkm1NJ4C%C*v`L&>TGHiHix~@j#T@7|`A#6tO9HEI7cUQqfeHKj4G}zvz4a!!VmCyZv_&WUm80E#I-+@I zRE4GxH4EBUN@#TfF=SJ^`w%f!V>+`wp_Rpy7WzG!o9{|eb;hRQ`NoiLzVYuEAXu|v zPhG1!p%2}VE?-<{t%>N~?yl%}yX+-=p8MqMuRPD%*fPEM!A(mQW{BnjUrEj{0vr(^8Yb9f}6u{gI#zw*Uzkn5@T_vmoh6TtFWswm~K|lGG)DTyx?0;kc)6p7Q?W9FARgnRY+-{2i2T1S zEi0?)`=w_crLk4QupQV*ljAkI=kuA+jDBQuDbB{gB+7SZq?%|MRoIVyrV1t$v7vI- z%Kg$~uYcb4QS5iSzRKUBKeN-qSJm`W)2%GM^7svSdVF^r)r20qhf323b@S2%dgUwq z7eOq5TeZXd%*}>D5tvmlZk;P_-=tb?v?wgFZq|_yLOVi9j|LB*PIoRKkPIl?tE}cw zop_Lq`0t(LV_I85lJ6Ax!<3CgA?jwv=l@!O2dyK`SiQFSq$x8Qkt}=XA7B^wPB! zt*<6hCI>a%S5_|4geN_A$4Li7`}aSf_0CyxZ5GGJj@~^PGxM2HpPAO?&OHX1d8rEE zrz1A`+O&G<8Ct*e1-kR$kLa@p4_M$Iv1YWwKdZu=Pf)3~(~@wG{$xnUhldQh2pC)efCkE2VMiOX9RZrzj9LAVysnZjnRbsR??{XkSYAaXJ6CXEWG-ylM>m(Diwn19)AF32l>F= z1IlUNTj^yJ+@0oK0bI;-l!v51s|Ek@;6)QKgmB(j9-#r0iSeCoM|CZpILJjra3fsi zI|n^_@f=T5W*H4x5mT$PrJF)%q<-?~ekPEHSYx9Hct^%YuP(r^M? zf4ehBufFjvz4fEFC{Hl)8^R{BTk+xekR1n2T4ZlwgIP|GwXogeed?~DZ-~YEk7@p# zr$zR1KHA!0P#n|QwFPRihaqVswxDQ@Bt)>|K6?ifVa5pR1p`K~^ZiE;>9>CKH?;n` zRe{Y~d|n1cK)?{YC-Xu8)-^3O);!8=9h{2E;6U`W6ma|&vo2~xIs<&Zio{Go1%!P+$P z(;t zEA;7Sx9G-=YxLUd-=nt~tTqq&)SX+B5;wi$9=-d)+muWil5;rMWgV%>LOp|_W7cy# z#&-87Qqkh#GHX}ZWP|VHc;sobH>8~tH4*VJreZ3kY)1Cz!ugAI$Yw8qTq+sl6YiHx zb~@hOKad3Tk8XYvQ=nwQ<7W&l49}sNu|CE?*z29xnAOyr5twzZ8>nWMg5#}(Q9(YM zZ6U8V>~Q04tcqzUwQDpnIt_V*GA?a~7G+nJN>4S0hMOP{z%GjZh9*0o{y=XrNJ4Lk}ogEEULl0&5Du zHjCO%`dn#N7LUDmn&kzBDhq(3HxtmY1Q+j1#EvO9i6#b1qNguGDX=Mx_$>>{>+UlZ zmKM!7qAKj`fH5t>fF&k0`%>3(y6?ALlRf-OKUU3J=uj?cE8`jKgpESG{l>+GU_q>y zO@s@uW&;X-%qE|76u$=G!h}dVJmJ~If#>Xi-$%4`MwUcQuH0$GxftjuWz{UzM!?YS zd;(wt)3R%q)Qf3ulpQsca@id^tnR^l4drhp=uf`R2C73qkY^S*7_gbjZ0pQ?Q>qPM zA|LMd#1qyZdSL?T&`GJ7J~Kvk;|Wk4A#8&uiZDS2mF4+@&Bz6s%jU=rPiSuW40|d& zbnDK?Qng}ZsUz%SjM%gUF-{|Tu>FwEFI|+r-rm_|hK5992gH@Fvvy8~wAg6Vi{Jh> z{j>l4|3{sb6&h|mqDMOu+GlNW${tQE4*66UKxj9={%gN3%~?0@ywG?DO>C;UoItYp+ResB9GBv~p)+YAd|KVay~+ zIaUR;bnu$g<)db*bHjp{9YwQDMSdT>f!-!yNG+3j5sM2Lt01jM7d)B58mAf-qX3m# z6$dX4Aqj2{J557LsFdxdiV625joOiWoIQDO?2jJ%yw30V3eB>z&u>+1n>FqHsn0n& z9ewb5Et>@+SKd@aU^AbJGC5gY&aQIt<%tp#pUGmmG=8f%r8kwgT$V`I&ZvS-h_`YT zjmnch#V+0K!*}|9Oj77SVpQ?OZl-N{f69{+C0L}Gf8gW>EHFiyk~i2DP#yOB;uV95 zfhIu8pX;Dt9_a2mO$ib3Qt?z{LzG*L% zh=o-%)ktn}!)p?>)H%0}2rx+{zYsx`0K!CfwU&~;%v|3G1*Uu4MUS;P290UwP zOfG1BeSwLMJTf@3Xj$ zt<>f(T%-}}RvrHDOEfyw}AlPyr&tVqlZD&nw=AQiM=%l4Po)6`7SaPdiA zf@GG&9K!NF-TS~l_N4$O&bIFfC0)WvLY&O(P3g&k(jP8NSVH(7QKX&K8t+m(&sHmm zA#o+wEg9OZH&X_ZWRDkS@8|YFog}wnpa9I|f)FSe1_7yvon^X1G*&UJ)L>R%G5|Rd zLsKU?g>ntdlwhho+&Q3)?mC-@xd4>7-$Cs$sMrid`CSz3!?9Xzq>BuNJx$q6++dvt zrDw3B{&(#C`LAtFdLD+owbmZae9oQkH+FyQfo!sy%@#$9qC`=oE!v_j1%j0cjuS(G z;RHyKU-Ad!f5=ZkfFy_##6biYkYNj8Vj5IpnwF(dBs<+?&)wg6r!xe>Wpr9f*-O7H`&>feDx!4&&_$F2X}WRxc2P_ zcj@{0fhUfj0^Es^`HuG4c*!z3O z&j_Z)7iTXdtHWfBc)lH)GZ0T79*9yLpnH6JLT~@nJ9Pc@hVE|Nr#D}Jlm7VYU!=47 zwL}J#g~Vg{#V>x5{`#-{75eSp`Zwqw|EK>cGr5_tMW~lLW*_f=@IDv4SoOVr+09 zTPHc+4hooEFAvO%=jV-UzxRg4;rxHzgg0jR$J1n|gvEE8-gRGC(Ve|Uk?Jd#EoXl6EPm%KFD3qE|q;z85 z@JSa$R-hEeMyWt;N_u81xUOeKx)x@DsT_gJ6DiFFz2g;I15a-Nm2=uVT2R`#OW*$b zf`0!`&*;0 zn(pl|2u%5WW>ME4@VKfk)r809o!4HIcm4GztiVT{-@(4jul>C}`t0X^p8n|f{v{pq zSnjhDAMXgp4GHQM%bw~azxs`@vqkWj{;j|LZ__uv@h$qpKl%SjVUH0OE;FldeDj+u zx;~)&{X_b~=YK(fYIkSXQVwgPItM^>E^ zs;aRSB1|vkAu#wF_P^J8mRtKGXxCK6>*u8^RaULe8UU4#E$%U%OyL=Z4FRC)ebS)) zqrNjMpE0OJ9_!W&20cE&f3|K#G-!8OJ+JAu))8L*Y^VebYp3-0LD~*daB7<9kmeJq z>fOTKDccSQ*ML|Wtgt$m(6_hk^XoFGttI_ODwtKLlU7_A#5YGrU&=7?E(ee7iR6Y~ zNcx(y>jj-&v#w^`OGpUPn;<<6l-Kw>u}m%HiHN zU9K+05f!?Xt*pg7w_2;Lk~MFA?;^0UM{@ds!(ur?L1mh6y+*(H#c#6i zDbY`V@-hACH$I^6JY6toF6bA|c6hRH)9-(^p+7oi5M@@h&7$X7e?gb5M|%GXD_~0i z{DPV0#rszbGH{^HQYjk$gVKJDZq>xl@K{fgnSk|br_Y|zAN*JU75)4F zlYfu?-rxQ2(Yx<`ldjLt=wqy(!or<0;C=q{U!c49?$dOI>Q`j$deK~;@9>m|RZ-^#g*j_$q}Tb?Y6{#S8QA;`tgtLN(>loJW;LB<9yjW3 zF9s!7vm^y3_=X|EA(^8Ug2UB0w)#h|mg+8pIV$%^4b@{AXG#@H90zU_ z;a);R{Fe$kCT7=cHJRwvw$<-k&o$I_rHKCkTR^10G+Om5Ye)c(wOGQ9Mw@KzJCr}N z?`}zSPeV&WLERLs0924YS|uo)D~!q5nfi@1^*)2yMFWOrVSUB94~JU(wq-|bM%R+# z2uG<4m$T4qO;@7XN#SLTM1Ih5?e6W1z6$Mth3@q1IkT*5I=s8Baom;`1po*q$U_Fm zpZoMD==i_+6Ey+|Lu7pvi-9O64GR(UAhHOg;!j6Aym)pQjJA^-AF`yifi6r+j5QP%lC#eK19v0vpDxJpYG7Ve8S?|vrOM!&gpC4W|6gF=E3@`5B}(q$7RVP z90SexK(mnYGu}VxXqF(ZLO-?=W(EM5b=G%)g|lNx`uYrAze2!dh^~J^z`DX=w^YTpx#XqF?zVmBz=jed`&42y3=%4=X@6xA!>XY<3*woey2qIM{Ri9DsoMasRM&C`>bsO7?XXXKYt4wP|p&{sLhW8_^& z;yo5Y;QQi0<+-xJxJKsM01**@1+Q&PdYG5bj?Zbjy~jGKZMr!jdU1Zq3hD`sI%QQJ zkc*HSRDDM130xA|kphbp{#e*Ph1_o$a*7LsPg^cpZEjO-qw zx9SyKdszAeuo}tg`R$92F8}zPjz@cJ8D!=4y9@-QLmEwY#FPGFj<6tN_JoY2E789- z%ueQMDON%;oJhW=PR@st9RmrF7cm5)Kg1|jqK~-E?>u~qKKITq(A)RlrU?Vp6)X3_ zxL%x}vp(ybPj6{|%HVZ5V^MNM?|%7PbU*LYXbG`j{o9}{UodNJ_~*krNA#(8-lQkb z8RV|!3|8Nv|Kh*+f78G7_x?Wp&0qgb7Nxi8;e!XXv$G>&xrD3a>f6*vLO+|sjRy8N zXy-dWMTdunyvdx34lL%k^370cRTg$mVe`{WwUV9I7c4f>rp|L;CgMm+o*g6=anRSE zEX%$xB4(4dOub|>p)4SUFe452MzPqby!Rr(P)#IQL_%Aa#p-uEsVVE!*W*i0uyq@O zgTx0fD$*&Ok-UScCh#k_&uh0{(~A+&28a&7)1RZpOsy$^fCJRJH9V+NX&X)!QrebCz zt_yo$ORVR(VTRP3JB5goN#iDUA+1CN+-D{LoypDoMoi9=sphysCWy1EYi3IaEDkOt z!Q5POh%3k-1+OaqlL8Ld-AyOu>EYbC&wvBn7R#2BQh5(v-${eCp{Kb4^Xs!mkjO^i z84Wa*juv>$EppK;MG=2J-=^!+8~!Xw<(CPnzi@j|!f(bPgY+sh8P8Tg5v&9m9AM~Y_t2u6buD$#T zz;UoX(8knGSW$mLC;V^0pa0Y+K2^$MNiylAVLdX>+Ejwsdt)B*zaBnkyYz{7K0$x@ zFaJ>Wu9R&YN0NeiIPdFjFB<~_&QU^ZzD7I3+|OYZ$JE1eCu4doRdG@P#@r(MmFcID zifA^M`@?B=YilIBTG6?#R>ked$e{w7h|*Cxvc_=IFvf4FO!t$bG?a^om%j_}d7lT8 z5#`DN%W&jkjL6>wN!JA?zrPr3&E|OK2 zrU|dsX=IVdEyhlPtBox!1B()u6BWB9=F%J>asP`aAJNB{VSR-+jtf*^&Zz*`WIUC* z<33Jh)n#Ss@Q)MECrc8!aurBchf}kO=yGhWc4rgfU`-Kj+FhN){@<+bE0{W(Ub~fb z1r>x^ql;^1G~G4p9d>w!ywv{oE6E$b z0%wRh ztePtp)n@c-@7$pWN4&W64ISOvr_3O+nomWU4eR2FEtDrnzl`L7+?U-^D=Y$Ih?9D^z@PsGR;KfH)9sy-$BfMSEmdpC z00DCZp*szg&37RQA60cBa}gm)7yKLsEa(-_FHSYh5L5z7q}-_+tmqPp%Z^SlvDB^l zH8zpzf-L_F;!>~0MAX{m7RcU{(8;k}&V>bwl^427Sg2E5){o};Qi;IVNbUnWN_B0d zb$KnUJ+=0y4auplaVl&y7yZ>x(vtU{@*wA?uleEg1{$>C_qiGeeDnetqv&c?)Khld zC_ca+e4AAv>Wqk*5a?NHpx0T84=S>6Pj*czG`1Q z!&=_Z!DyG}H!J$gCq7Mg?%$WOzPvc2^RqL$WM%paHUAhWmPrf9-n;ie3Vs~jJ)-;f z?}-Qwv9;@JNERrBX2Bq3pS=|!!GdH~3*RiT#SGwWC(3;JJoFKuhoJU5cka@67-X}F zDR}2#d!=Z~%F-pJWZ6tj!ESB^af$f!lX(_ILVW08Y_78nD7MydCLUp`_4Jx@3m4kkWwVW}9RyBoj`V#@-d zEW7|Q5tlQh{Jo<4cXq{k28H%H>txP&u|7Gwq_d~z)bKskCx@TQECWhu028nppw%!y z!T}Qr?Vv--SSV0Bk=BY7Z}^-`h}6bQHNXO(b?_-;#q_(!r~ErlcD~KGo^hKPM4us0 zd(yLYZku)vRtye@%m`QX;@MI};;XBLQD)6r0Y4`7kjI_H;3?)dGABHL z!uqABtUsGcmF*XoPg$>bMrZGxNkYJ1{Ka3PyLZ`o$Rgz>m@B`F`*#jlhc%EYvtmXcWCkq0d+t3t+%8**n%9|-6Unf}rx>%O|#jex=Sy*o5Mx-Vf* zc#retTt!x%e*n+s+uyJSr}G7lnN0|Qrtn?K?QWSyvk#KN&9p7iHe!cf=n#VCVqN^bsA=@WTc2B=cgraQ9aco)%4mj4^7Uh2L7^d-)raV{l|F}) z!4!HeXEe;q{<57wzcNWrCSz+{vbZp$rqE&{3QnzcvcmyhDx~0lDTE`qRS*hJ7Ln#R zbNO3zYmNFrK>_Rszzx>|7?9KtML-)=IcA1(xnw4D!Hc;)rFWk`qi??dl)m%)gu!Z; z?(U62T_oKt993sz)qEg6HJSo=30+s#Vhos=P^OAIpqSu0)7vO8yK}6Ek)W*DM665; zW4lv&_k2w6Uo&gm+odmm`-J8!vfiv%QOMOp+z;wl8Yrj3FpZ&!z(EYbxr`@9iWq5t3{q3@e^9l=a^u2@*5k+Sa zxq#^eLkFtwu;JwDqYv52nj~x}!;_z%Ju-lW&PnpUqf5-(B%A3{!=&oG?TazP3!?bE zl#NwqwJj`VeVB3`4P6a%=Gi*wW7?Qx%J*!kWn7h_s*Gf+mCmFUS(CXMSbTH$`)R^Q zP3t{!wiTC69{&Da$xP0JNE4h}LucyR+(3kaMfoMn$#h#m%E@-Kf!fL2u(n}D;2c#J zRjnbh6jue3GytkiaH6$`=;u)sb8~CoX;6SrU~}&CHt2OJ46d>-skKC|lpZmjfw z@99hc@A-u)9dCk_y#o0NvtYaMWhS2fPEpGeea|TSrg&y6N?5F?pf%Hr1U5n}E$5=;x{`L>bSF8KPUXIcj-? zZc2<&tFELu_BLn+T-%&-F5uVOnBX}mMdyWQB^hfgx6HSwV;QVxd*MY1ys%#O%7hp~RN#oB=}({+*+BFLnitN-G^c9e{?kGOZzY3IpLFw@y*1+)p~) zCbK+tgJU}kH1j_2FRfQ;*okMq8eetb`4!8u_ z86I-(CUgVq%+ zlgG!D`Ezl2Me$VIh#~6ZS>oGePQ;z%%t}dpO5il>dbBh$@yv`ydMIchkC)7=ATP-~ zDhhgKTA06R|5yrOsHM;W!E?GbZCxL-8IiKR*5Kph`E>+ODIDd@Y24Objy?RXi6s zO!*=<2!M@57qYn4VxBw9%8*Uq{QN=!pW(#W8DPQx3YkG!;$abJ#mo!38*^%%up*iD zU22?eJ51_ifpra0je# zzms;(XG<|MV9d`i6?ApqGTjKqmoJx^$@rc7rI`YhEsR+=*0!3RV2c5Z5gwuw?cLAW=GDSqw*0myN1V2N~3W!iMJ`;8dHj^M{%ppeZ3b5=*m6U ztrGywwyl5)Z)1pqZCmMY?uR-!|6EI5l083_U5%`qxLS8498Z7@Rv|13Rl+v1YfBQt zq^4zvahT{R)QP{ZE-xh2%+A)B_Q0U#nXP54^p$)_h>0VTz!9WKmgjK4c_HudR(Zf+ zb~#^3YLL{c)e*bx4HgkUd#f3#XL+jyAOusIWCcH(wTU4b5fwZ6w-wep;vqX$@aMMZ zK#)5LK4S1e6E}#Y7BM*2h$t#-Q#S%hKq%sfT191H@^#4U3G3Eue#y+Sq5F?t6L*LY zKKPK{e0ao0h-(&A8mTq-__as$E5GzB^sB%8SLq&G{t|BrodbZpj9$cHn>6+=sk~>2 zca>}kD)uk)O6C!CYAYo3V@oc)#4`YWdn!I!rx)k6v%AO7nu^FOLB&vD_qrHP&d=Bw zp|uWIvyNg#C|HA~?<=(yw@sbDVCKqtS_#!UK0emqd2ZJci=GI;*2R~r?v#k~`bxI- zAtH6R62MZIhAh5+O|P4SgJ|o1U29CK9h(RlnD$WNzV_I`+M>-y(MyOMiY z9z_(SC~w_*;sBTi)=2xi7H%OaTT>q{+lICx0+Gt)O^9T#jT&^;caHE~&b6s3*Jn## z)0?%nm{q3H>ei~?P6IIz zie89%J1hdNqy%vz)rBGQ&5<+f`pOjl6FLBBu}HMvFIoIiMe!EIL0(9rYs$4w=wwBNXZ8 zie9_-28&vE#Fq;>w~qD>=`)}GJpGlw`q$~v{l_d8GYf)_%HA=63Lx#}9Gq3TZqxIy z>Eze!vSJBKnlc9SVY$+56)T>f(}N@Ng73F>r4(0>%FmQbEko#tVD-F#H4&CX()2Xh zEZM?Z`Mk69b1kfk=e9L4*%jZ|xWwU>+i-bxSskBwv)Dg6D$BvGUcJrZ&JzMyJp&ha z!Kx6+upcX4b({95_`MpT=}JeEo42YG} z#J4W1eyPr=B$bO$ZCbpun*|)wH63))?4|&TPFQM79`hsl!w}ljYH?KPiKaVKs*c2c zEk%`;2_Efi5$t;Jz4tC%oSxIY{Ucepzy3G=27TfapP^5F=5uVVn`+ioZLp*gF3!6) zf8dcOqK~Cm@&6U3Okwj&T61v3R@M1Av%H&ygeJlL0-%oUr(hmPoVb810Zjh5FI*oO z5YA>-bPdN@9+bJ{DogUt-NivY&a-^xsb9omYnz3D4A>9lQcM*I2=Oei;*~pfnhHYR zPmH@2kTzD!f1?Z>^igxsp;U;Z;IMR-j7XhS(9c(>>R8z86+mjlA)L| zaPthmSM^JiHa}PEEDc1$YVog<*E%~IDA;c~hF$~p9XsP1+`~x_X_7)4+KObZzgpK% z)jZ8Z@h^oN_HGI;Am_?JDvC+HSN&WS>!qs|#q+Qbg|nizspXe?@e1x`qV$dKJ`%3e z*R8?ZIsE7_Mi&&Ug*NCw^KY7LmlTH?TnIF=o#wv_k zDx#5A*G8g4Q6;P_NWMg8^d)rW(c{N-d~#OakOPPQ&<#_i3wu{&3HzMs_ht>t4Hb8Z zq*h&FfFqp)T2?k2b5k6Ws07l@jEZEE!kM@EP7cLJCmF-@>UXs99c`@t4bTerjmOaV zmI_b_SQ+ce0r1?%P#Bg>)?BG%Ma=NPHNf!SZ&UDVL*4WNESgC@3s56T? zEzwn30Cf&lK?&Lw&*z1lTNs{!tSdoPF0SDXgPo$!Wjr*4Lsv}Ls2C&R9n7k(uddXU zqOD%$xF5nnt|ia;m?n88O86|IUJ`NAz0Ufib$EqQZL#7$BltK8=)u=qqS|<&AP{!B zvee5xmCc}zt<2au`ekfW(F4>1q8js7^4i-w6p(K-6l5^;*niuV)ex zB(4`a*z)co!zzZK-o=0WoD@)n0dare;0xtD^iIgA0i7bmM)U*WM^h8sz)-gK@6ZC3 zwAt{`TY*&3*>y|LG)Afd8Hwl!{g&&F;Q5Z{^j80{ZEAjfTzGYLEz$?&s>Z)bdV@CNU9q@)X{uw@S z2hQN>?hCtZQvrbpOhmaT_oqQ{RR`8g?#iKQq2b61;99{gvQg!;?|jIv3M=Tf^0gyQF3pPka~{X0B{S1^)_SPU@CsQs0b6$Ysa_o`>ig(XKOfCIX!YcOG6un_B| z4kGKPM0bcPM=p{Jrg4ia)C3)tSXFf}zFWq;TDC=r7Z zb%Fi>tkoCM^q8rN(nIF72{KMv)>9R)pW{EjAB*Hb^c#MmKWsB23QX$Odju4NO&7W1Y}OZV zv^?$r(HcblxDXoT`Y`OUlj%gBFS-k)IG)c%F*@amk3tksoX=R{E|qa6%0_MwEX)h` z-p_o7-n@IH6^18j?(VJXNj6=SnA(@UxIsWvS}-7qn?pC3g)n1c(3Z`ck_f zOvE>r(l;8+KiL3nOG08ryr(GxRlic812~GSi$n?}y5ccCzqk}VDBdxEp@A=#ZIBZ2 z04s5?sjv}%z7qCAHhe$X%#bB^d)MYBRa#*ijEjb3WIz?}LAvodp442T z1x}p+)b-`cdY|W*7xU{Ic{h?tSG?!dAzEF5vTRCGg%u?zle7xaSZ7dW9_3B3vaW9$ zoV&reQiv*vpKqKu{L|;SOAPpAwC+AYlm;T2=crcwQ!0N~D+f`SMapQJSb)_gUO!Af zQ3hhr`TUYjS6xG~G>U&ry}rCex!znf>_rTUY}g>sV7KdSXM>WmD}^qx&^$sORzgh5 zT?VTOi*RDnzqye@sL6cHBp#6`2TFr|#7wL~;ffoK)RnYvDH#aVcSn8)7y+m($I;Su zS@CA>wak-%Os|RDAim%kt(P7Uza0ImZ)B|T2R!>y!m3nxPeWe$J>$+QTx5a%m#)KFhY#k zmQ?9k&=p&75d#SidKC1)IDhoyiG({%Car87tDdX?g#vTJ>^VjWv>c({J5MUWUi_IALAH+t?^ya=!N=-}b!tx#^wLIHUTDIa0N1iF4052MvFjn{BP4ipDDqLwME!bRbq5C|2E;4x#(3C{i^g zfto8Zhsr)005h4Azc&wSIFaHx%lXPm%qL-7GErE61+frWMYAYMwGuM!gmHri^40e~ zr03^n>eG`|%v1eHGXPrA$0Qr?G!j<_v83Uek;aN8xEEO4;r}GXGS=k$^&L^26d}s4 zXs83!3!3lo@ou!5L211E`ets_E z9vpS2(19h*i;gke;>GHH0fWSI0sgSU;_sWQxmbojeEN|n_rYw%658idlhCW=sHLzg zj>z&3ELWKyk|ro=J~8*(YTIVOd_{EcyP{_mi@d!s55baTlL55wdzObcnvgLi$KNEgMoDEbvO57Ce*rI%X*i{38I zJsX>siINovZG6(29~VS+kGEUbBS|=?o$0Aq#k0NCUt8;>{jN3Dz{2_gV6P9*@VefZ z(3--sIFz~-%U+-*HGCEnqYW+h9&w3IMmCGP=^yRK60-b9#2eXE3#h?+{G8BWHzwA8*c)es3__?3| zOY|Fm^Ec_IKlKT5X#nFC$3+ucu!zB8#)yq<^gTfTma@jl;e6#Mf=L%(a+@Y#1Yx1hmSL1WcgVM)v%mR8t|_28s|KsUc}TTjTLmU2a_MKyIVU zWjk(+74~L;i6UYA*JWL~5_Kz4JGRq6486XfT^85x-8rQFt+4<$;yWc@nI)1Ww8yr}R@dWmA+uT6IUdL>nc6`2esEGAb+ zk@^u0iBf%N5ykAAno%H8)lJpwTuk%tyP{L^wnnyKi@deqRQt-Ud|h8<>vapJ0ep$Z zue3e5R2buFjj@$zbpuDyp^z$GT_@odL5VGdn1IDMZq+A-bce??5VqqMvetafJTJI+ zMB@X)_$4oat_)$hvKor!e*=+Ff|45z6>{qq0BO_?4H=C*mlgeOCnA=|NhUE`RKK9e zR`JXP-=)=@_W8Qcyz{1{&iUAvCPf5LBbVGrQ2VyU~)vAm= z#twy_q2F7Q0y5SRvbpxmmXPfg$Kv8#m}6r7Q=G8+u2s|mKp_1zN`4*XBYB48!3X=D zjEfi{Ir$L-n&B(P3!0H;mqGsY{5k(SHC<;?rjwd#EjD=R-7+cou(_zv<)zgCm`LC< z?$Z{K^0}q=sID6FzEW89+48A{Y`hfaLN)}>z1G^4P$1R;Zu4i44)^Hp-ZmX>jnuiB zPdvF<(!0mJ0o<(Axw`O^O%SSUWcXaymBnky`K56~kczBwg<4i|lnS6&WbJAGg(6vPS_Dcn+(D6*<5BF5)94IV1o!vF^Tpe}nluoNsJzT%DP~79u#Jn6rq93vN7;5T3aJR)sFem;KyhDK?obmDN_e#Q zdU2&ynWbpzwj_=l+4xEE&!%Pzl^8)&$XDvC01ju>rRlajl*qS;qHs1bJ)6Eua$!Mr zflwPO7AlpYTNMp81qljAEGh#{WMizpP-qpZ2u+xcy!P-8-8;HRpZVF((x*T7i>##E z)fB{yf^%=<>aR_lXN@gOmQ3vMqL)H)z!}S#Q`&~J=k*JrFqy}&F-OymmB;;bM+$wc zTaMg%2;CFJP!wd?VUZPV>zpl*P@dnN-Yd})A|i@DQO5^vn$X8x@VN+DCv&!yN<)@z zxU+)0xu>C9g-`Wf90hF0Pv%Rf88RBpNLgYWg&88IGpk4@o1iT`^+!u~Ul;chRmHNo zYybdB3$)6DrB>r9xt;g!?$D$CZF=Xy9eQx*h&RS5vqqwKPcP}k^_-4pOQjN7U35CC zR>fuwglK&Q`TAH}bfVkA0rokTfLaozE_5q*4-Z-7>FI*0I(9o$;=zIdz};c% zS!?$nNmz&Jm&ijl`qCC%=*n(YA#0=3TSaxJ|C3xHP zb#0@ITVmz1MiF$&89jdZkiPJ4l!NO_rj5RA zRQMiFx9A6I>YbgQ(ZPeeOs!UQ{QLz2HH){89xyZ7rPXXf-Ry#a5~aa9^~fjB$eD{` z8uy+sXpIqQjiLZ#>DdROR)#H{w5NO?hAe{j3jEhmz=TuOckX^jk};uf3Ag(uOUYoOQaQY@&!+G1NNeZ%`;5n};N*bpKfkYseV23X zUU81g9KG#a&upmoOl!};OoxwY zzKloVEoOm;BB3xVV^R8ux_O2@1B`{gU#EC2l z_)S6QHH9^+>q-UR!7fIcHI>$TmfWzAWM@}V)pl!VxIXXQZz)bQ6D34H(;IM!zNQU3 zxlTBwN^UKw+-jko;sA;5{X6uFzxr$R;I%hciP5MI%f(XGMMIt=mcR{NE3I$gag{vAJHcWfxY)Hfc6j z44kArPL?FkKrpXK4WYM07915be>PSzCL3^TC8e6;NZ4Gax;#>ND>g@U0~l`pcvo%G z5H@kC;lAD9-=a@FzE5u+?b8veHj!qqKuqqcoznYHU(n?Z(m;>OyZF)I>h@#9c$QL- zt2SBMOK##fDCfuP%6Ya~EdHQ7cE&!j^4Wx-}d&%UAi>R~O-!2|{Y+Vtd z)-Q!&QfPj z3?i*r=enZ&$CzSFmVEu*(IHKm37tHDMo-SprC2I5qE2`BXgSpqW3g(oW=?G*J{Gfo zXX<3(#7T8N4<06Z>bhF* zkAf>rq9U$m6A2|_hK1&+65Zw^w{JQcn+ihTXKy}rQD0-*&39eZTChS=EsDDW@~ge` z=41MqPrOa9AMUXAlP!Y`xJU$v6#U2B*Ka*}A)v37^2~9U;u`tUj$9Yk=Hcs?Y<}b) z4k!nPfSgNgp);>hvK^@Eed_ZoQ!`f3rt%_ajjFFJ?;T*GC@AuH)4qgB=y^3sS-$~L zw_R5kXC8c38CU?y0_wT^9t{e`=}%B3S;YQGoG78J^@RVp-YeH!vmR^Mi!6)~g(6iQmeYB+w5oeVC+q;$Ot364j)SAS3|9O- z%Y=J}sQ!E*4x8hH1I><_&0o}Xh?Fz|i=hP#be=?3PuawG1L(ym*0Ui^c1!B;fN#*kfNM0=$>w*rV8Rol+;#*{QF^ncIUj3>5GkuNLtn8(B zpByY*0lj|cr1V@!sU|{`Q?+6Q$_nBmu2w&z{j+ zuRYedc>`~EXdMW|#)Jl9Ue1H>T|J*I?>@d3FKzddCK`@w&bE_l>KI8#DC3YtcQu`k zC3J{sl(5EM`lVl%f38fgG+(PId*P01rB*iuDV1iaS2WkUCMpDL!UC4u_$$rxgn>n{ zx1@6B#kY`+q%n!e9UXJsgmPu_{;mqc^m$@z0%aST!}CgCg{c+eXsZ4r*%yY1RZZy+S=;UWtO?u@pN7P_NV6-611$@{ zKuPL#;{YfKyJ?opu%5AA;hOHUwXk=O`(z>k4JShGtBCC{&&3M$D5tPkZM+JQ6V-h7 zdS{cQ!7%3OeNIDb#kBo{Lj&E{^s9e;9)ko>@3wutpHve_)=vyzDr8q zON2pr`yyJ4^XpQJgEnv;MfwO&qb=4y!j<9t;*6f7{Fek;d+@t>TX4G-P&5q6Hc1Jj4Fix{(y(9l}sU16dXr~ zZVLkNZbeI#_4s^I<+l#B`T<3Ms76vMN7m#EsVEc8lh{q~WJ%iUVymLydK(5hH5$_0 zD1N#nEP}31>|VCCCJl94>gUsy{6o?#*U{Jt1q=~!1CnLY(lP2^M&rwkwGTNJdX63X+FUST z0^ix0@?xGypO-5gZ}>IAF>`jUt^&wv01vUY2w~gBu+V93~z>LP-E4N2YRQgwSJU@>B#g5~e- zojcO!_uhY>+191KZ=1(5(c`@A2Jf;Qmh#3K{Q--yBeA5`^gM1Ag`;pb3#Wp3l8QYsvby_Qf__q|rt~L-?e1Zk6^OD;zHa zpD>{)GK`$RJIoAJ6fe6aQPo9lJZ|&KsB((j20v~oq*@nq+qQ)fIW3DyV)eFG;E7d3 zL>m!kwI}F{?X95L4xC4$Gie0Q2v|OzW%32aq0JnInvluClq(>w8xKs-uIG{^^h>F> z+eF7}EJP{!rKy-b70qa@SstJ)h6pK&WBwe#rp(APB$(Mq_P*dGsR~*bPl7n?@1`Gm z^OwaPck!ePMa=rvrxic{iWe-bPTO$a+){R<>`Fygh^{D3F}94N9@r}*V&Z6dpI(D2 zn?o>B$wDD3pGfRIK8GvwkL zw-&0KMd{aw5hAIR@?=`9z8V5%$r=@Li3aX7PJ=hW!kN%_1E4?8BMrr&B3Za)E4 z$I+WU4!I3Po5($i6%5@QAI^hG%<>Ysm6c*iIH1KW`j|@gP!=@+018gEDsyYTN(i=< zj0(Kl&E_|>$D-uk!6D70us|=VOWa#pSXdAdmZ9F9E?V0_4 zv|bebdBFtArCk;UQ5zM{TCNu2^$vi2|NVFA*~v3{{oxyu_8Gos^BY+6 z#%wDbK47Bv z;&F$^HpXQso5EZcD$1sLT&aZb*cc+V5~AY#=91g86pI?z7E;+{WQs+~A0E4t(-Rhf zw*&x?iw&7vZA7IH?u!=-ly;Wm9tYeX@ILR}W8(qquRK&p^H=HIMaG0Z#6tFcQ8P#e zRTBcG_^*LeVaxKpzGHW82F{_PHn=SSA7^XA!rqFms6QWo)$^voh=TDPk0x@DT-Hge zg=oW}Q>m%H+hGEI`A1lFJN;kG*eT`Va~|Nd1Hk%@6WX`Ij>vRYkx7;NrRpTG;|79X)t`-~s697wM23MVV%{La}(UfX3svA(PftV}O5~iqWwdU1sFQ;RW0J^sB^7_OBpkeEcCnZjuPMs1c+i6X_ zE7os){p(+&Hy^#JagQvu%W6M^-4bGbJ*@ZLY6pbi`tkg1a`#J<~7{HZQOEg5#58 zn!ti95^GCa`@8Zku26@N`+t6MAtEr?l+~bBwwyFO1)>?S8MS7?j&l?31`9>u+&yM% zIm|5|cc=$`>SG_54XnPWToz!T!=fFC8hW3(AJ3Rn&1*!nej@LO~M{Xveh2Eu(3RW;B0+*i$vL~FRd zrw%~X1=YaC-evBlI#%{6DtW!#fnHMtsVcJF#;D>yEy1pX;Kd56WzmOu_}tL{a(-x3 zb(bIt&!UY%Oos6Oq9gD%=7WQsZLzqrnsg8cI{_uBa3jpL7iT~C&djc^MA^M9Y^*QO z@N_*Z3IK1r?>a#F4z00lWF5^W#pW{6)HA+U76cFP6&C%R7aOxa$u==7Ohud~d(9jn zN&T4heEG{?reFWnzb=eMBniHDh8$F^AKJc?w6t2%;15YE2*0LPE)J7qjM*FQRc3Is zjpr~oFLP@@oIqiHg`N+;Ll1*&rpTG!aeG@t4KPDOb_cM+$@VTaho(p3zfVt2g^8fQ zTdXJC-rm#LNqB%W%erE)!~J2|%dqB+Y*CoV3kI^x?$V(1Ufx5>)_#Qkj3j55r;l+l z5P-L^)G~0kC92AFWl~fCi^|;-=}YYVH5Qi&Rn%);p~m#50KsWf!?`-sx5A3pNeMPj zI?;#@AeY7N>+ANU0zT=!ADAiYCg%-6tGChx_uQjLG~uq>!PM|e*) zz*s4B+z3*#hNNK`>@N3|)=;om%mT}*3U?pGRG3h{MPw}Esp-!;)A0<-bq5j21a@De*f-WW>0eoCpusYEHW4zvJPp+1`*VW+(o4x2CWkYLJ_S-Iyc8~>P4RV))e}= ziaj1~RyN6`bqiq`^h!1E8Y7B!IGpl4cyRv#?Q$E6!rtDYvo#+Fd@C%;Sdq~N5r4_w zrvaYCy^cu4Se^ID!j?3lAmzHrX^gB!kaXtA?CUKOx^-RJCZAdt@7A2N)8-`upfM)& zy$%O*auyg^T4ihw?)5tyqu7GRe2>4)wd-NJ-a>)S ziPriPw#nmhWtJ#8hbQ^fQmaEB^8&kbdL+B%4qLErtrl`M(XXkKBKCC{iZmGD4Q5N$ z2g!l}MKwZ+@O-ME4_1PdFxcS%FpxYt6mEc{CD<4P#QWd;CcSazo}^>BV3F?uDqBx? zv=mk2885ZHNZkU<;>4_G7uJ?ha^HAY0x^drgk?_$ma@HRMj0KPMcS~ z`-}~z%o@3%P5j9YO0*Vqyf*hJT({2Ja-j`=nDiFG=a&2V)lt3VY@`4jNg-X|F?^xu zL)O`l1Pa@(Aa(Wn%^W_%c5H%7#N*DYk3_xI?eLt8U6Co*lerFfY*}68&cfvP6iOUX zLz@ZjG`pquxk%G_)4Jojt=gX?`Lpr)Lb3$(0&J3-tFibz(j6PS`$tbclI)}~XWwJ} z%bRb!A*H?W(3r=(`t0P;hWgLjl&Ol`!&jio0AAkkY8M8u)VxijkrrGKC&+Fo3~7-y z?TXZlKuQ?~*>}J3HG2HnZE5%J_Ku`iWAx*(p=+35KTCL@xSM`VKJAFjahAx$N z10OGSW9UlUJvfx=B?--?@?{#DYiFF`K;aXqCxn58hP?dJV=Xp3PF)3qglTLjF z_gLEA0Tw?;u^7a#k;8|i?6Gzg9M*lHstyVasVj}}LGa%zD0-V>6`jh^`aYNI`abHN zOulv6=o6u-nF(SVnK~dt-B44QO%)Z@eI*aBakH?;>7fl!{-(u97z#wWspwu>0V_}` zEdI&pF5NJ5!0j&1FYu~ZJUnJm=88V`$xm7;lsw2f8OL6Iz~Y|Ol<{Ame9G9eh6J6R zOF;{=9T!$S5o^VvbtT@>C{&{%G@6bDCh=WX%75qm_voiye}fVO21LHgW7c2o?b8nb zzO2#ma=OqsjA@~v7xi_Yv>0*D%H6CI|^gB zp`>4%-(@?E^#gzp+g~rkDkyT>pWh2?KLgnU`NctTE{UJ3rem7 zZ-1vUHhMj?lgn%QhZHxBh!pCYAxsM*hh&pQ%HoCe10u(b>7bBW_XX?a{_Nd%DX|V~ z#r@i6P+joipYl1$z|G=GO8b;~w6xuBv*>m~PoF-c{k>fgmxM(cxWMsoW?%)sC;@~_ zGDe4c2MivXT>+Lo84JV(vdDSG%&lWFy5;+Uh1@{NPg)&ki^qH)>0wZug6{)gD8wdS zcb9S>Bv=FtYNlZLOjw2tGX*0|DaP9QoJHtRLzUjTY62S&<`vS|Jbds_j2WIqbqH4V zXCF3nD#94qT27)LY|Dmkj9)6RD#&6plvqozgP2vy5mDQL5}On0W^W6mY~Xe64VlvS zf2^@91BrD-yZ-rdXmfXlYz!-oH^uwX%a2j4@ErY{lFML5=iHHyf*7*t%8+mAXmmSB zfn_;3uFKlau!bG+^vKy6RlR9pRic;hkL|qZu7ShFMiDEUdLCJu3cV)N>Dhu)h4QF$ z3ycu)cQalj^HgKE`o%(?HE-u~B6dfJD~}#Oq>KJSK;wq3aPKlG0PtSpN#B^CO*KH! zCTP*icQ_w7fB?V;VuNoy5Ci8+bvzU(hE>c8se)A@uof-@)5*5vs|T2T`8(gC9Tx50 z*gvER|GQy!xU*b|-&4@cPzou2G=pkiCNT7N+iY3e+us#$bLgtne7{s(mQ)9_tejYs zJWdcj0r*gq!@u`BUoK zr1)g57J%q<9Kf~`t<7DlW2riqhD?Dat{M7$E8gx8SQLa~s=E_NWuPW5%9=@IaHQ(S z;-l!|v;S_Bk=)mr&4WfR5Hpb-^whu-NGyy9oM zoEN_<19c0n^{fisUI(FgZjqC7H4tq2V%eY-7MMypmg1A`j0Yf=y0A-TnMhlb8DL3X zvkup<%p!+f4?8mce(>-fi&%Sfea#F4maeli`s!D{D$ag)*n%h?T^3G}L&nP@B#O&| z=^`A+ePY|#gXsaV#BwRtt+9NM5Shiy0IRRX25=WB<|Po>COzi%)3a0h3R?_Uj~>g; ze*fd|2w2zad^FW$q3!`%?FOld??1Rl-}?5q_3ynMR;bU#UrUndpfM+NAag!+J)0mr0Z@Ak;LzK_*q~8*rlfBxSW%hADbg+~ zD+O3op^QC_l<3*Wd&S)=Gs#gEJKU|D%JXKU+>j$XpDiu@DSQ3092 ze2RNRJkQQa-(_d5tITwuIRJMW-Y24}Ux#Caoksj>TLY6wXPuR#WNBKvz?SrLx5`!Y ztV-dOhGo8L(m$dhFu6!GWJ4)1DVfZzN3`3*HZjy0mVDOxy+X)^q&|rwsin(g$pxzq zCXGbNXLV=D*8T#{Wf!(xfyZphx|VHT0ICc{F@$Xr*Uyy};Diqrc7I&Ce{>-FEB7Hn zx%+Q?^IP=s{Bfy((%4Is?)BR49KfZ?y7Qy25=1P4*}gOPVr3J?+Gx$Zc6%&91ec3$ zG!^ENB^`>gMyz76vdLIesPszoGr;YT8#?X$Qxwo1oRT}GajB?5rV+Z^u!>;*BKX`X5S-hF!W%{Sr3@m3?7j(>kHlA!*S|3(ohfNLr#ygT| zfVG{!&oxyz@@WAe$E-`*VIW1N9;qnZsMD}anXL1!ZG7|faUt^57I94!R%a=0&^FaQ zS>i}i2}g32japH@(?~t?mz{Y;x&#vDJ^Cb}P{}tHojGD?$xSe9-2zCpsYME+(((a* z)I96{?o*^FcK=icpgiw3m`vfjwE1P>6n>1NpT)Xpmy8i<`KTn}EUvxR$wdKWZ%6G& z(j2Tz^esnKt`C*>&W;+hyj7i=(O!934b?G9gWi>wk%oWQaDcwZ%~CSl0&WX4E3)>Q z7%WmuwkpA6G3BfCA4KPcv=yc6@e?cup3sM^^Vr$lrVl>)K!Mk+Z67{)!n-%ZeBKcT zCh?0BC)d~x)T^T@va-S7Mk4iB!fuc(P;?!vhgr@wAGtHmY>Y|r(vP*GjHC)i2n=#J zk$UT=?2F7WHgYo-n}@Q{Xn_2MKNxkjDZX>cFYVWql}ONI(FkknTH=tta4 zBdDa5zW-+w_{b$ANeYrpqT#(ZicokukKUjyS%sI{NCzR+J(M8`49oZcRr7YHSQsJ& z-smqrPMGL|5E+-BCx@AW%S52+4exZ*k66+w7n5p$?m`fW*uy`}AOrzo%C_9wa z6U4>kEc%vCl-)@Z{{iseObTYP&tQc6!#_(_bmMx#6+L_QROtTae(tl95=B^@>DM64 zh%N*3urWUy1o*Pj9OBjW)eT)S8(GY*rCuMzC^1BgS}BP&8ENjO(H2{qvSxx<%xkL+iyPI4VZ8Sb_vz&3 zoZkQNUC6tvVBZtVB>)Rfw;IsQCj3?{VsLIfJlNxF?~8I9eZF`1KI^`gZ1p>r;vWE! zDFU34?uA)azq6zIrG*@DdRo(Ujco65BOyCCMMGj}+q*If8n7l)hSs z9~ANyowA}C!1em;uao-uth6>He<%6MZ&YcGFq7GW#mv=QoCp!sj}{~4u_Svl5!V&@ z+B0h-g0zuMV%17qpcdiKp!O`qw%q#~K$*m^3c0)*utemkPZJ9RF(!+RO{(0i1mIAb z3_l^dNh~1$4xrthZn4OFmrj^zot~ab!1e2oA2T@bNInMp3i@fMYdych^XpfN&k;D5zne8bng_u&V^_7IOK4zsIPm>ix1otD(OR+ryLXHFitc4k z7569)-C@d_q2V#y_&bV1+z)dMM9Et|Pvt+~<34@W%cTfjsmL}I-5^FTazzo$OSWs@ zVa?HjTCMuE!J(o4iE{m{?7r54z_tniMK%+_#$6QDLDX0tW>~Tg*dmJqlqnCqs;Q|A zE?d-mlZJ|U%Z04%kWeg}2EF~vn$nr93|2`;Y;l#n{RSXFXa>ZU3l^mSCSBhOpaHD# zQqIrLB?FXXtIX#jJ}JXcs}ESoci1`y<#s3T30I=b$Kr?Lxfj~hO03;vx&0{5N7F0q9`Y20HpO4v*`fU2Us0o8`Fc0T*pW{{;(QCchpO054T~W zRlS>$2ZcAx?k==2Dg!Fa^I{2<3fXF{T$wWdh!y7tY&E<=nr2w^7<6_SbQG*K26NP? zzgTK2bIu-PC*e>_>DL|u-Huc%y0S9yiFWpP1l-}bbjm>cf^~2JdJKrfI>PxfkJYVX zxw0_`bI;yIoF59zx?E&TJ$Ia=6j4e1IAH6!ik{-Ck=3cQwa}(i^dxn@7iO2E#m!xc z@KQTrqnc1K6U$r>z~I14QM$_od`e#fkQK{m9;$JQ zWaMB~uBE~XNA51*=F*D9e$!;jvVuni5gNSQYz_3Z#VOs+4%bD$3RrES$+wmoi!7`R z7Maee8jvBc4_+EoP)q(l5qtIJyTfSNyRs>mMc-Zr*LP8z-y5KU zlgTzjl0C`EM7G%Q{EM?=dhzrFW;eYS+O(s$m*3=~l~d*fXVvk_!gfeRQ1qr%IZ67X z-uLRy2Cwuvvzi6}TTNMn8YfE-*NQ^m^5jgs_Rp9hPFe8{Bf|w76Y%^MbU4Tj#-NP~ zL!({p`(0%X+v1znT52APq(BvH1BngxU~>fL@9pi1jw^4mc#C{vV5;1&Z2`n<(V1Z^ zTAKqa+myu@4Rga%4XH6{Wb;`;QH?srNa3*AwAwynK?-g<7hqvTN*fp=TKUcwWg0Lm zDuO^7Smaa19g6J87D?%|=ZHtPjpppKX7|7x_5AJ55>vWu!BK5UE?~2H=Ix)p^avnS zo)9FQhU&V#6$rw`g-Io5%)r1j zaa^~d8}JeK{N^Ge0&ud%$Dw_@tgnJ-bIl?QuE)JlVrqLwQ`3yC>WZdVcBfSJ*@1rM zjkiBRpZwI%@#j-!Gg{O@tFyG?X3$xX>wGbzi|ZS)oPkaBC3|dBCV?;3V%fp(o-q?K zcKj3Zc;c*-6^y*Qit^njtS@$-A7~@SU`MjHA|7+ws&8+}{cvCO8*M#1 zzo2*De_!1MM%s_DWnCbb0D2A0k^RUvoH$qThDUZ!u@p8FNf_9-Dq^b_x~6+k51UM$ z%{I<^{3ZTdnFgD0(SeaI1;dGTeR5eRa)U-TLo5db1Y}Q&5kyZz`3mxb?6i3eAivk) zhNd;u%G%nEpQnvGe1Gs)2!%1fjXR|}UK%A}X<|GK0ckkoTJwu3`-b#bw7=v!t=QnU zDEd-3U#&*D0HEf>h%&W)g}pBtDrG`BST%w2_L7StyKj#@GlG>4 zOei+slg1F;pFJEnDho=(JnDpzs>x#p99}S3KoEB(lU8+1DXIQxKBrx_6pp7_2Tv5) z03}pi5q}`H+({Z{EYc}oFIG5D!Mu|ERdBvsE?Ji~yJCyk5^*)^v(%~8uh8{GCC8JD zswCf25f-m;(OrqoXKON&1=kx$kH==xM>YopD8si4);ShWAr2y4O(SC9CG9W}efXVk zGhn>{U8A$7PZ&h6>CWMSWB?s8NRJrEAiCnYGN!FE#8Epc;+TMj&9#2G5;Vjpt9ypW z{E6?8sSTQ`>im%R>ci(x>B;eP366G=UPSLvb(?TD;&Z+LWH%J8d=4zIsU+Rhp|9&Z zFyyJY8X)sU>-wfft%qG-*}i9eO%%jE3f4u;OOtY{s>URc?DI`i0;w((SyflYN7}+j zqF7e5M)=&$LG(>(A^EOHemSV+m)QSuE+U+?BbNpB@@sB8dXTU~e zjZD6^5Y@s3w7H{6JJT=(X<#TIe<7)WS1J-q%ZrkC`BuG>=Kyn+6Ex@-N$RBR)Rrhv zr5dt$n~$`-xCLtil)m}Ruh9+bYu^5;Pcu__poKBbWdNeie10SGcql91Bf;H_^+p!= zs(_`hs1}H=EH{ePcsBH88k(cAhAT6wAm|p0{92q*uQUVcoV3agZ|@7q^su0(&px8( z@UvnuY{X!UYQ#5}7t}C7BWy;(bA%Z*B|~TmF`qNjU|pw0!|T-zqFl)f*bf3~?O5e$6d%;GL{>v^=8iFzVJ zh_(2KM0+Aaj!IsBPxUPC#Yk8#x%qQw&(MKVI_XkHRtBfBg{a;XVmfUTiisiDS&b79 zS#Q0nLTcnnJTaBw|Dle+^yED`+sQPLf^NSwtjR#lBA>u9@}N%2YuP`Iw)&#Cdgz5F z-fqd$6J#>MWZX1$0z@5C?#u;2|8ANTfUPh08^%JZ&yj*wQ@Su@LncvDjI$*54OfzOrusg~ zx#DXB*3b!adH&IR{MndZM{e%XR5OHjy;h+?h6pJ3;o1NT;?=q6q+pp8zbF@RE$y!x zD4=I+gnXjvj81NVCMJ;+;Fl3B-pR$dCnvR)!Z0BAJ zpdw}vg;Jk9c_QQA7;q<3Q8?4-%d_i5afP(k+30Pqfzhchwa#w|C4!=#$3}8$Efu^_ z7*;IMrV|y=;<1D7F1p6RVY$t4jZt@qu~~D4?`PB4B+EjQl)=HI2@-%d?y=7C{NzFy zzUbmN-P~}(g3&=FmH$40lj%ULI5Q%57928@?TDk1>XMTAl!?9zR0-3S(c$^i4{5Z$O9yw< zYrL}{;uR`P!-Ya}ovS60#B*PDFC{L~{+9RCXkfPpp5jZ?%Yw_2?qy{YdoF>xM|bWhKmg$ubJ{sNl$6Fb&)vWjWy8XoO=bMeJSi+NQ*6*spSsCC%=t8v0inLnu^9=J#ppt= zkY%$u4{zw?L*HRn+4lP3ZH`OJ^&4DeXz+{(AmUFQ#XW z$~i^+qw0W}Yu5$?QtqJ+b8!+@P^!uB2h>&?Vxn8gPT>8oFR|>#xr&u_VhsNcSy^Rl z-gZw482eTKQ2{@{M>%>0z>Qa8wAZ`VHzqQ3uiG`%pC@(>I6_YSI} z*<3fIhFzz+3M_hj4yFAugBD`z5Ly9+`_l3-i34dOt1PoDfFpGW-ED#D?w8a}Uf!Nm zmbM8GWiou5G^WnLA$hL#nFJd@efnI-*hF+xITmnZKzie+KS|?mLHD`MTX{qWuRWH; zf4h9$wZ#4{ghgmst!8b@uDX{T7E1*vg_nAmwKFHnX|4v18|0tAyrh%!GkVU}N^xT_ zCg;mR*Fi2i*{C1!T|Fv)OFc$gydx9)8lRhq$|jR+u3_)&iW^2}%%B2ovFtS}u{3GZ z5acYzSp{098>oJc5Fw2#O+(Z%@Q$U+{BSpxzTZ@({K!YX4b|f3>DJ49{7V{82lS+4 z13h_UfxhNOl-ys+73o8l07u$fm_O*w76UJ29jWQmefta-WCzQhu*5QR5R%6QtA_~l)0KmxCk*|R6L%~Sc!ek zY-+@981)*1hn=qF#dC1~J{_{YYyRXJEf`344~}RXz=&(vg4vEVy)cSBWMk38$r%>3 zPuu`l6o2f0Y;TClttOkAseN4(hz;*0#w*^_WN))3CPVLJi0oMda75h~ z932sBw<79F(kdQ$ur=k){;cmP66PUdipIog733A=Ag=1*E4`QO4yNN1 z%buhXRsiUis;q@G=>LczY^2siv&Y+S=I_rMt37Y$jc?L$aY4umZ?h+L{a2 zvBCEXzHW2=8-@X&tI6h54(f!W$ftPETsGB|X#kRPO)|$@X_D$Y1!Edg3$(FEDB@#< zC;#V$AocrPPkp_%c=Is6R-#Kr>OvuYbjkZNxI~_xjESw^FvpF+HtCJs|3^A}uu@?d zsmNspShoqj;r#Mhxur>EVnxoLGl;ti@>dm?s%$-aKBF|MnP4qkkm0~cB>%Tm}h+iKzY^u z5P)OfvT|-ws*(Y&N#?|B9hjbFx&Z5wOag;yOgb03 zoC9#t+JYvD-^>Njbe=3&Bt=%z^XqE{)C&nD*Y`=1Nkhh{ad#LWui?B)TI62mkk4l_ zCgjZ9u9G>|=7Y~oDc(Lb*`O~J4Y52iR) zJT-GAwa(W3`chA>@9o-1E!A4L;a^2mbWn9$UhAm+UUyzwhT zXuGt_l8Fa8*;>h1nKcWjEeiN-!Pm)PmBm69cbttd;EsmaD zUqtvgewfFopV)O{NjWp`t5R5WG~&Bd0Ub;Tm7xI;jcsUifE5Zazz2-=RA(%ub5e#vF_>u`o5E6 zD{f0+@z%LjMLZhL%T%3!>%!Y)12Rt%S@uzqw!7e@T3chiiE7G~RPU?*`T@I()2nQ# zb{`oNWZgi8BTB^ydy5(DHIg)j>wWG>e%VH)kgPk_fUVVM4F+L2&Eq=necWgOB;jl# z`g34v{>=E(`ddg531D?Hv0~@zb$Ku#(%6Xlc3oQkoC4LO%BZ}9@?wmkIa_IrdX*F# z1wEX}v9S z)2DbUlcj*jNQ=29Eg{v5>Ax$xxmFT3WipHdw3JvA6KELaGdxL>S|Dzr0Rk zFX2CiNyxN#q6M__5PXzPH5GUV4*lOJP&q?Oo11_mPjosZTGOAQKTQFw3JycjD-RnVsnp$^3H7kq~!)%cweouH=QllNo>o7Kn5r zz3JUxW#ltiG(4us)*kH~92!eaC2)9U3jtp6?W)y~6_2G`DSPR(1M)jEDZc zZ`V6i7xD}-epnsJGC$WCgsl-}eAH6> zHcANVvn_`Wn2fRcuin-o9oUDG&7uI7UeE<;#R**jwBCdCsi-!*N)$fBwJ_*Rr^f=& zv^L+X1W+0(&nOJrQdt*v+xIoHAm6sOngZ%%Qpyi>ybL$|{*8*%$(XLXSq-m|=UXF3 zg*gox8x?xC@H|-@MOG8QNqaYBR<}^l0upIW1?PXpq&QnggG5@_IYU%dLE zVd{IcK8kPFoUTrvi+*Oby{)2QgK&)ri)$nW70_11)Zv{?x2BrPw^#qIxCv;IzbyVj zQpGs8HVE29@q~t@3*O!Q4Z>a^a&3(t(bjZZMgZ2%OZY(X^@n`zT_h=#gn3Dn&mIBR zM0bYdY*lBOvnJ82Ib)Ylsw~C?={KIiA}4ZD0W`rDXWTYa#<@0!Q53Zm=3|bS8ZeW{ z*IGe_@_wkaCw}14!uo0T$Q1}|(m2=--ZKR@)<;RD{v&d$JC%9TTNsXCQT&+v(fmCE z))6s*3>lkXP#L2p;Yg)l{=B9*P}8uVVPh^o@xHub7E#>*z9(?$6*-KTKfmb7C>Ia> zf*GkkKav$6k5N^$n(5X;0^FKXS%p5JWE@SYQeIMqR&sv(AmKi;+jb?bYdkgpZ@8Te z-UWVdo4TM%>eL>^GYZHM!ND{yrEf@xC%^_>nS({IRiAqUB~8_#o?go+yiB+%Xu zK72}Vz5cc^vg@l0vCIK5Fd$pcpVQlKz9mIPN8;hHF^Rcsmsuvh+}qUtN!;!=d%ong zf`6G86iu4`dCc#3c5^|OPd=o(d%Lu}xS|tgRx4hxS2vdomUDXkLfM~+^)`>=`>ZrZ z|BMVgYr9nMq@T5A6R*?KRS_|HUnV!;3=ak2P8cd+(=%yiefgHPKu%22eM&N$7 z9((bPLus_L=A0apTpY~C981#8zUotpWg zy(*C9A(-R}a!u$=8MKrJ!xslZ0W7NsTrxu>qI5f$)(Xu&DSD!{7aR638gSE`trBlH z_$-RcU9Ulat5Ee<`(8cumGyPvAWByBbCu6%7Y?YSEe5zPiq(fC2t4OnM732{g&aii z#Yzi2zhgiBYKQ8EtKKS4RntzThjm=8D-(RqZdNsQd>)+wtzLYV; zzb)iFpCX0hNEeR)zkz9%#ABkbngXP_jR8WR2Nz-~ zSuDNaYmhS@j;+wajmNEdx93~tLO9mhR$OIkr>m&HZls9|jEczR4BN*NkqqiSLj^!` zXxBgj@y{$znKM!U(#e5GfJj;(%NC&wWwVdD^neEUbHhXGY$Ne?7?@0^@5P|jhU1oD z9?(Y`_GfUdeWrU`io;8u+RE=Y@lukgb$X&OBTJhku-3rVl70!{q0?G zdANJ`uC*D}cP0}1n2hnEGBlh=k$_MNp5S>9UD>*Kb$TYxk@4b1zI*=x19B$?Am(f# zg|WZJjO@))!XN3L=4Jq{b86k-dyuMGO~jOw{tuI>@!9R8#ea z9|DT%7PQNnDwqc1q=ob#sbEsSFt?V(3F@M=WDQ-A1R#6b6nVZ`Hrte{SRBEbsEXsF z=x<9dF7*ZLg~3Rw-jS9l&r%(QXu*qh!eD_a)WX6H+z{Ue8qsox-mGV&RD#Iv7-SH^SzdQpUdkT3AV<3IXpO^OJ-64 zuq#v~VrKa4=~Dy#ro4Zj3pw=J=hWsrBwO@E#RswOWw#Os7gQpE`Gyl0xl1SRzX+BY z9h{XxYwHjbD|$p{Ibq2}$p-Io!4nOo;+!dwvws?rogB$Xs%>_WEJAhVAgNqizWyFZ zfy8x5C@?HtCzd8DS2EHRbk%dC=$gZ|PLf80huT6duf)WqlpGz`8oI`soRJLhDQ}WX zXCUit2-VcPCc=>pL?0NC$6*cDzdg%$hbp4hmr>E*nT5T~xP$t{Pfgk7YFATfLrR%q z9(*xObdA(61km|V<~&romT~E8Un86Bq!d?6QNM_9p{Eg@)@m*j{qkZ&dv}gBq=y%5 zx5)K9QqZ;Jez5a<+LS(2j489d*BuT1uTaJdc;fvq+k#jK(AwYLk$b}`hytjO9zLR7 zR_+(JX7|_4s4WV1BpO^GrxycR$NH~!Hm4DT&JSJcQY9J3zE+@{iWQ$E`fSi=u$5(uh~L)GuUALy+?IJF%*UN_`kj% zAYu_o3*=?0#)|bLSEx&CV^9Pi8eXgYsS;QUn}IXn4V(y4kpFii=_`7r{E+)J*Ii9) zr%WS;(FAKqL4s8LWlD$aU)mVFN*iT;^fiwUnFutL@8cp2(T{_LQn z7ks=J{Lm(}0@+NFhw5m5j|~lH)X$f!GkZ?&z5kx1L54fW`Pr#}Xwzi#&QGSNOC{BE zJPO-S)p0X5!*^fVOkGh01k)NoIjEq&YXIl-S29Q7T^Hwfl`Kkxgypj;n_?bb?>XM; zeS4ZA&wr%w)!HF6~aruKCRz7F)IK*Vqm>(~($G0y=!hx0bBiMw)I z13R1JB@I~JOp4z%1%^YlxJ_OUd6_a`YHxeLHz11?+aA#-w*hvKSuK?k%+^h zA5WSWNfhel6j{UpA2Y8NXGz`Qh}eXTUha}1X>?#Af&*cr?iQIJa&>VgfF+6DSP|Vg z8@5I*kuj8&({Mh8c&9f_qE9OCDy0%D>N%<4oGJOa_|v3><$?u41}QC_wcxfKaQkmqHzu1N zs^;+LV5<(($l>6-uvRhfSh0>zSr5wiC8&3Szq8GWIM_51<~5XBnsl2zjoXu z_}Hz1*2V(fxG@byLjN0=X9bTYtew6HRK6ib780_Icq22}d(7qfs&?`DwbsU@R!|9x z%2BmKw(fK`_ol2K0@7_g96li`>Qj`bDU828vs{-qb!y&c2Pg8X;Hi$8h=f|WGc+!x zVV9G?Fp{Ko?yZ~)+v>^-(92U{M8k2ba(GH6%gRa#>0zuufXn~uN23jbSbce6PL-g(>+f(LUH{6%hm35mKeS;oR2Z6P;afzvI%Nmh9@S;g-b(Arh5Z=g~{87~y3n8Wdu^-L)R z_a5|fZG1N9iUDsJ;&=f?=_?-2ZaZ&%t}2;Pp@mINmr)jGsw^gjtbdY?v#CkvqS?MY z)EZH&C84uk;vNCJD?p~TOp?qswF-y~cVR(!2u#L8ItqE^o2ri*RHn{V=jBw`%Xg*C zk*DHu+%&~2y=>NjZPtlkv%p<4Jj|l4ImD^2ZIj3J%4tg3rEKD{xiX;q7DOcIZN^)g zmIjtISR*^rIk^t%{P=|KKDZ<8P}c-iremRl-J$PlVI0#IN^2o2glFZ*$*Kx>mVQPn z_(0^EZcmMQlZcZLJI>E9r0o1;_n_?RP?p2ZVQXt!+aTWB=C5Z4gM9`w$-~a)AO;X2 zLC>#HsFfAzE3M$u!Q-BvH)9rsG&d0a5R&qot&=CuUWgJNY-@XOhd$yyBOiSlH6^H6 zUqdPjr!3n%T(q<{pLE6#xkKFd*Lg<1Z6_tF(n(-3o)NsFv00VxZT=_&(>zkH3$A03O~uz}F_}09q5W|@La&Hu7?8Yv6lO%Ztf|5X!@WJ% zypxupRF+D(l#CJ4AoGM{z^Jt_2`AMW24D*TEtKrpM7DlxFn-pqgj9WHPYunv%(t0>Ea= zca^MwgPrHa=;XOBf);ouV-(hwtb4qOm z>RApZ0H7RMB0+bEz&HXVj+yQ3jkjnQRjTd%DwCVhgrDVE1f zY^>V2p+=dXg&mV^G|5>!Q3NB;kdT_-PbaS`=s?4KQGTN44PCT4M`FAyGR=xk(h@qV zrqEWK14NU2X4#ylLA;)4kthZPk5#2AQj(0fXXMm2=RxaekUB@fqUva6Pc3V_0OH3l#kHQbA*Eg}!Vp928a=XVM?<^TG+~6{{ z!V0cg(>RAYEbn+2bR(XlZwB4S+WW|w5AIP=LhhN--?LZRB)8B!eW*pqEiJO z%a`7oGbh*t&Ov_mY!*GK42_++3)vM$8q7>yG}Ay>zU@?GmGWE+a`S6rv*yXay|XJ| z^fKla_Tak?h47!{yK$naAOuc8A4@GqHg{Q4?(XR1K85E66u~BQA zrh!%;n7P(ijDC*8P1$dkLf>`TZYIsF#;6KpDQwn;m@?NI84tV5W}_=mlH zh!OEz8iHROjiJ&#RqI`*it+`Fnq;9_O$iSwVIy{q0EO(=zX!D*$VvRgUpFQXzXhl?)00oJqQ3Q*uL`;;&%U1M?b5y5hD>G>zWZ^u>L! zu9A7K-VzAc~5m5A0&?ko7_#Q%OqIK{w3Fl!pKtfh5lJm*sUY z0BmDcC9L87ilUro1E}g}c?f1XjyJ85!h(`CkYcjFL)Bqd!@?+b#^j>9=*VHq$ezix zw{==m1FOv1QGLO;De~kyh)ed90=gFVHn?|sDQFcL9YE5m$GYx3Zh5q}4RLXJ4`XcN zI3$xw<>lnei`M!Z23I#(P1WJa`|v-BBNM5&WkvT$*bj6r@QH%HNL>w<>Kn!5If5>U z&jCQ8Ld#g{0!~WC2YHrR`dm5g6%}AzLQLS)G9^g12H#oidayKzYp@bFB8K+H=%%9F z7XXB!ezp*0Hx`w~J}Y2~wbNGM>FF`+na=5YtVJ2FXIHd)_ks9cp~Cgy;a$NF0O7gu$jf6^P9QkY(HV>%h25Ny&8^^&9PAV%2|_NT*S}7 z>TDdynBh8Dl_4zW5e@c^R9R}gQW%yvE}EIU9|Zc^f+y8I$Y$OReXjiavOx3$iPq0~ z%|R`6(&cj8#g*Ifh0z*yjafzYSxrq_f;O77YuAMYfDV4SFFA(%C>5ef&CL=9BcCOr z5)Nc;7P(gMk@q9JofRNxYFwh!`Xd$X!1O%l5Q2Z9J8H+wS{5^LcEp5(QW}6U8JpuD zzXMUSBin(2L}7R~VdNdyg6plQ1kCyXKv)(h3`$oJm*6phc)VsLxvQYKmx3BuT^^JL zQi)v@{Z?a+kd!6-!`XH#&Zp*ZiiOAHbIH1=`R8rqMTq~ubC?JWAdspom~qu=`|jgR#iL)$!I<6NF)xqfJa~Y@2sz^ z7XzRshss&ur;LFCQjwzSvKoArt#4JypN98JYc3Do>A3deGjgt>IsUd%s%WMS9_CPw zdZ!8`zLR#tmt9iM=%jGaQ7ejf#s^xxfgRuq6)mxUHG~1B-Q_+sl!41m_fus{T&;_(!)GBF;yqpUHHU_|1+ z;lM~)SRD!~;`f!MoN*nAq^Ln53vR~?29kSw2U6+zU~f+V7H$nI{vLi=_wL@)^6@O% zo%6YS(4{dLqwVSwmPCOrpkZ;Wv)Mw5S}dei;*6d?d&<{d=_K!UtdR{uEP}><-O5(x z0j(Vy?5e!Y0Tt3k71&i_{`EN?AbfIsEI*M!Vwd%5TU*ME)p0mm0gsVdaUHO11DE+B z8FwoKDf**4RG3p}hHsAe2G0Zd!=KGpfJaK?2q3n(M&psvCG9Vz+XUh;MkXz&;@*h{ zUV}*;Vb0%nXj{_SxUaL;uw@8;2y0qp7jb3r_c)5;UD=F!y^Vv78umg+N_e;`fxD81 zCElk=L6Z9u2dK7*>0}rLKy>d#83``JuTX?3a!H7`$`+IE-;z};IJzKh?(O(oH_hI)m?pd?-Y07;Eiy4vR zmb{Ui7dZ3;r&)$X#Lu<@C+)egvIWe@ZLXtP9GTIZJsT^3w9OO(kx^9=)7QmNT&;F5 z?%6TOIlFlF_zC2{)HH;6<1OebvuL}uWgXlFi?b(_9;CjwC}|q$b9Hd&%j=?djK3pf z;aes{$i>2w`eG3&H+%l^)b1=MKn~F*LTC*hLfY+?WU$ZYf`}=~FkKqokFKVyg}j^= zlzZt$A+~qV07X{|@7B$TK~FQ5|3qm@v?B|pWIejOje4vvN)_aS_1);WJ;y0At5-jw6E_;w>q+Fck?;0t=>FF8sN>~*r8X~>cwo!EC;}Afm@Y#*i4fa1!S@K$rk!kmx7GNJx zdKufu`kX=ibc$Xe4EDGZjG%3IALKR3K9M`f?pTeo(Ic%5w2-jtaLp{8F%=c_T>ag1 z)B6(ShR>$j*x;XvNr#GQvi>-rW1%QJ1dNY%cafg;3k; zGc?wm?@;KUUjM$tt0rrVxBmmqWI?j}Nhol0wqS0Uy**7P{ff9W#AqD%85JD~TdB9= zOC3;7LxHerS+Wr$p|U9;JG=yT9S$0&Z6S{y^0g@cXE&l%29@v!jk6P?C06IZ{k_J^QQ4wmJ?@3n`>MHM9#Y1 z5do3rn0-Zw9#QF`amx7vITe?x)|GFuQ;dFTVR5%v%y9;LIqUp%_|?IxNSs&qSxy z{I79E!j#a3@Gq!k4c)cq4NBC{*jR!Ccl>C`UXXzwmgF~hVgZ&Q4) zzr#A174x<4@)&g!)+I6vjMOwp7>9P;FIZIYc}V4!2>4Vd35+^A)G~KhKPb$0HZ{B( zao{Uf6SLy6GrYOTs;nddp<=N^nY0p#0l7D;C6_YI`ZbFyT{0>SVuvapq}Nah->qn= zh^8WC+>K%z3M8x+^l6e+3ImdZ8_8FXUNa_g+4Hu5)bKb7!RY8-@mtn+r0nskWak8v z9ui&k{r4YkSJ+g40-@3|tW*f9-NQK2*W4%Nf6z5i8N!-Y3MZ z+eW)-#&la9Y2RPv6@QnftIxucZ#U*4H6VHF$QDBLbuj4sQ>)t4<^8TUj3HV7piI@6 zv9)tz#_{+~+Z5V)fQ`es3Jo;#QG zidp&f=Oz<jTO=1AWe=ExtKW-*rp{*JA|QPMpYc`o#eR(b|pl}$Ys_GMLHHbk&gi<$3X9fe4nN+9Cb85J|SBd-3)#ZKDcyE55i&`bLfE znlgAAF_5SVpQYG}^7bZ5b&d*R43$QSL)Twx5`^vmSWV3uxBl^kIgKpI&g8r(3XsXB z7S_sroIYqZa7F8N)fHITgNBB?)A0}{mcEDQDKadtW|Mw*_`oSZgC*-y{lA}!3XX%NNl90Imn8h%yy0JXhwH$Yh0{l3ke}O zeNc1QFyApTh-t3VrwrPt@*0-F!+lb29-d~Va&Gm6H)D(=Z(Nqoo0~d_lnmn8wJ&KD zv`p5ea4w{Mb;mY{nG-vdpv&yHUsW&i`Pqi_MNFZ*W4W(CE2ign_*$-(IeKhJQlu%- zSCzfiG z?P!-*mB?VK4!8?7!3ly{o7@>XeWm22ZPL(PJz*t6+S2u^H|UB9AIx5-Unc)P;^*)b zgRyoD+UHDCQH1j+qqAVDGHr0uJRV$IYxCexV%edPb!uI7EUc&mL({%zh!LsI*FuGd zLOq?r!aNUfGJq%K($qlwCZzUus@DmCJ;-al!cg^i0`v*w;)2>1I2A>hSzrm?I01H&h6_qt3aF^+!}G z!m(TCt*Pm&j&|lPp17vrw_LIk=K|`b@25)+6I+#_lj7aV>hggZ6$;|&$tj>OLC&RO0=5D4~Kf%26-$~YJ}`x z-2~JSKQ0Ge3>Q`kdPD_A-S#>vWin}spNv(K49ZC?Y(pVIU-r{0!RAjod^nRHRI2^g zDBTgO`a~=H84mjrKOE$zu(p$~5-L1!R-RhWfh_)}T->u!(O9vdiM z&gFuKD{=~0Ss4%m*Fdk`((ja_6kWxrI)Cj{&NtR3Hlc;kxC9{}mis`ND+Yu{Irq*F z-Bhq>|D?G#10g`6h*}c1)QbW@rid=RlrVSaf)Vm#l#q5L%XLlkJM3yNM&OC!%4n>a zL|N_ zBv_oVg3@H0##>O10|dxpW>?e0cGiO1-@glr(E5o}{dL)m;%%R)HNIr?Cb^J98!EXK zpoHT?z9=anA=PBtd$uWY*+Zn>Z;%?s&E%T;!3*;TV->aV(w;K+Ad-clMUTuMd0+4< zUoA*x=~??N9juLVsix58W}6G-V$$qDM>;~guj!tUX>~TxFLE8Askn+ujErriDL52Y z%f;GAsVk_bu5Ha_g!W`r9%1y}*3$6a4(%67P8pS6vGk0@)$FHdDDz*gqb{}`Cao8r zKm;L2`ihEcd_rTwQPKVtD8BaMnKmtog+Z?->A5j6aJ0?tZel2Uu!d|E*eR36MG!oN zpz2nnW)KFo6=1VEw{mc%ZwNsXCiXTziXpK*s$&hrbSyhEh9O|3)!K#%b_zdUOm!%D zQ5dk>0D8BK!tjTnc%~s6Vw8>%T32Pu=nl*U%h%FRkpT0drko(qR0~_?!vPOFo=;S4 z&+9r@L}Nf@DU*BwD9d$*a#%o>=Z=KSgtd%IbsoD(SP%i%O1suzXV-IUlnrfXuh;U) zK7|N-R2vhJ#htYpC8=2s>Nft^D}uVh;99#d#=yc4*N*B!oWU2Zh%xUZp!#OCD#Y;T zuVBq~4-}>9alQ}Yh=gwZIS~+7ZH&L~1{L&zah0*M>{#lF-HbiBtLad>vF{}Kx(+?g zk<&~so|RIr+Ii64W}EUXQ!}S(2S3Qz--Tmd5{6sY#@5r=56VEBo7 zNm=2f^z@Sef`Jkhx``&(<4q$e0-rqGtEq1MeEj)|4`|`UU9?A&>qbXnuI4akuq0kv zHa318DCDLQ=i)xg+It%a@%#luDAgDC;UPN*zY7aV>#G=2Gp1a}AS2tsjjbh!&P#==$gv`A?KolMV-~w!+Mj!h_jpHLFsQmWkzI@i z%{f@Uvq?7Z=nM8mx2MoQx8uruQmmL{o2!yz*#3^G^6om{a!OV>JCQpW*GDC+4^ny0 zbxPpD^^!}8v{2YK`iR}H7j4PTWxh$fF#4isBx+NZA0E58k^5O%FYE^xHis7hidWSgBSxK4T4XE`=cABnb=GxKr4+G zpdeQ=VxVjTpuvj2x4-#;e#HDrCpI{|M)h{ESTJoF=*;~x94+z0J}_H<*qx1@z!hjN zv*?SA1I{d@MyjF&rYRq9zezEb@yvo8zS3r!$thma`rr3m`Y~U?ohTG2yXlICcdTjV ze;;2&@a{bq+C@Yk!=fDw)og-=qk`ycNLnnixhVW5MX6RLqx}XGIR{L)Yac~&N46eQ#@4;N}^D-r5{~r z9qP=Y@0=6#rTsoC!lF9requU`yFkV(sVh)$A7k{9Ryc-n5Ox<^-j#V2Uz6GNC%&ue zH~+!FAD&oG4Vh7xQ%+Ag#a7FP$qnOCX$9TE2Q*9sH!##67q^%tMi~=)$1@cq4}Jy8 z3in(;%5|Z{Mta%l-Ms?gm!6)BS`{8(+Nv z`9yjUQ*Zw1sVd;X_91=Xm)TSahyaYtx_Rd0%=Q{+a=ZRD-f?DtjyyY$ghRphI-#US z0yemf+&EoB^eX4%z;ZdmW%ih-q9GtVJ3P=YjJO?$fhmk);WmPIUt>*=0 zix`r-;zp^WXH**G&lh2jhcWO1rWxoa)V+Ppj>-p%@Nn36ucjZ>NQ-Afr%?=s2RDj$ z*pciy*uryu$kOMarJs{cuf&JMbAaC7vO}S~g9J;@U5AMUnJ)pGRuhyD=sW+jhLyL8 z{i%Zh%HT#L)L3rqTlH;)QCIc?vt|v8p4pZ#ID6U=4SAYQzw@ zMVJ|a(S*wAB5Sw_KEi|r<&y=_cvT&6nLN;|PVNSzd<>T7s*}h^91WwuOpIOIm+(-F zq8>K%8oJ$?@4RL_-tC_!xW%n9x}z4+(US_S<5Ci^zg{wzc`vab8R zreOgQx47^Zj-Herjm%H59tmmW4)|AnMju((@`%|~F#f>k_t7%6>~-N|JI%j;tb{8E zioFF;#w4{ju6 zOY0$DvH{PB3ffU__Y5Z7QC+9%iP!2#7<&^*NtO;MyY?}$3`Ph)5-1O-xvB6~pK%0~ zp$e=`TRZhM*VJ>k>*{07wTINa!p%dyKv>|iD!*v@8YGCFtSIxvf?Cc^@>7j@XU3(& zRz@(2cEdFObSq%<-mx0T*&3re?|alGv~NFGfeLA2j&ty?L!VE}io5d3*7k3AV9KizKM>CzAD&eZA_ zwH~#yDG#QRX)eq1g29>bhwBo}u#P^Z9d}K(Ah6$D)*zwY>e4LSN<};^cXXd-=c(Q1 z_1&&a@p z8RDmthQRWlQ>t^wKM~!Qqe)#;qAr;l8f0-S_pUn1fOws9-1cLqBqdhB4|`x8rlBHp zyd0)+s#Ifi}fGdBPL>zf<><~eX=Z=?o#(RZV!a^HxRaL29Q|psqjE94>@{ zZ&gF7x0;r@@Abrlm5fR<0-N_~Xbd|?NX?3mbhM_FVKX{P-NVaT(iEs_B71e*kjuW` zY^iBBTN&X(#kWpX))+-hha%O25_z9DC((|4t}3I+IkO|y>18%LkF?eJ z@o{GN3^64siKT{U7@l`S`&OHPXn{^cR|m_+Ac!kmKA?qx5m%xqfh3H+e4@(NO}YZa zrUjPK_xTjj*=$-xj8oSpIG+0lc>(dq9LPHQ)A*~VUYm| zJnlq|^w663VZmG+Tk%icWkJ?jsPii?f(vn!&@vrX^it86rNsoJwZRGySz;C%{L@b6 z0*dPTKEWeh;+jrlTAmp%SWR=M96Y{rBuH34lnp0CNB;UPTJ; zwwOw|RVy!4*NB@riiO_!SbYJ|lyLn%^hIh0g*gu$3yOwQ1%(fjgk}|3VGv<0q>@1m z8oIMfXI#CpInO1e@2f%Hk9V!xaRsOdK~u}u9ND`1ES*}jBS=VT!65$(Z($v(mz5Kc=Q=^3~erqPr*{;bTBNdqOahK!ao!tL6Q~LBq0ou2@Cn8 zwKEAjUaS(q1%FJmndX~qME5Jh2~q}UkE@}dBM`ob*x}eOdIf_F`#d%&-(ys+pbYXh z7jqMZpLAmrQa+F5KH*?#Ht~z2SZ?|nbIW>)Dy&b;q0FpO)+#SK z$M!-qS9#l9Iv;Uc%+hP`>ji7RN#TZ0R;onpC154);R9gxU0mXkbKf zQ?^OHSFx==x<>fw67hD`rEBbb8GLjvsC>F``x0oDmXO*=xiT%|{vD$G@Z(tPc1i4( zKta$J!Lohy*>8~Nu~4E}^`1M~jMj~&Zf`+z8=NkG2MHdk(TKboH>n+NU`xRD@-(I{ z$pRR@RJ^r}(GPbGoy`(z*2baBjN>XEkv`7-b6%AEX}u3lK=p5)cfu~`rgG!iFgHewi2L{ zCH1OPCzSm6R>-;e6;)=hz~;>bo}JD_e6k|;NpmlhIT3l2sORuyn9Ax+d{thFR9yU&}D*^9KO(Q@sxXYn#0UdI{c zOmpq$V%J^9PE>@)CiLu?r|d=wg7~(n@w?|mV%-R$7t?a}9iss7+4>PL_XFORJ^N>x z-^E|^$Nr@#xwkCVWyLFpot9^}v$cm4w$7jV1n4zW-ivid2$rT^vlL-%q|Ojb7?6GF zLbIbfbwiL5FxqDToyJPqa{Q#o+D(V;HX%u@Ul=WrcsIMaun*}WRmAFLb2rV=4Qu3? zy%egiARpx`8xM}^0O*SJ!@4wUFfY?tJ#k|5sR_udAq^`KI@R1r^Yqmk-wLYT8+CXr z>v^ysCBq@ZVmEW^b}>9C>!kHrv6zf8RgW{ zEmSIQ2-v30UPg4v!>Sps%O0|hux;LU>L_ud8b>h)tSa8Ol)DPTX;;ND-*^^CFDkvf zTWhb!TM*yJ%e0!~RXr?N)b4lrK!Vsw)YW=BXu%+SWn@x5Z|Z-b#|cXwWU5to)G~%g zvo$q1VVhw5D(vTy_okkc_*OQ7W6jGzB~kT3ANr2j)i#q0JW{Iv7zDeY!$550Zt6W= zw*NJ#*2PC2=av$tF}ukSZ9M9`-GB_fSC#rDm5Jt$uLiL>yq>u&*8(Pvw@Q_~iJ)cN ze=~CA2N@4YMm_q0&#SLYhKf#Zo?`|3$=H~`jC?G>)9|#ZqC?X)xcA$*!mr6EzqqF= zS!CU{vE1!8!2_~q(=J7+xrNJ`C0Zw<94>BWPFPg3HWDWh^ zco_hAX|WwwY2WU3a#4H~kuUTqPddV}%bHR&eOka}30R1Y%P(l_7Jz2Vfj&Xo(V9|f zf9GCbEebZNDm;?rfB{xL*8bI0eZ94dhwe);SZ*juPWFyyTqF;oTbKelr#0geki0lL zZ@C|hRdGw^m% zdwZS$kH63jYo?c9eV%PP8Q7mQN zF(Y^N^<;LY*6~oTb+~Mqy8G_qSepY^g3o%s@gMx14S49 zb_NY|nfRx~sYoU1hC33RB}`5E|2r zg%Uv7O;=9$bw-lKgWeI(MNpM3p1M2N{ib1jGeRvwuSth$+@p#@p^X8uE?n-x`JKe|05VK&_S~KGHJO(i7}9#RglLa9??=XJ5&{ z(>{3U2M0|VZg=s*#NAUzTX%^Z+w^hY{@M(iSt zw8AhT_Fi`xhWIZS=70?c<`*KxjmKuPtRTIvRHf?6f`j)jttk?|g zPjd!LtL!I`;5Gb;q{YZw>?|kk36gjj(FF)g9*D+XYLU%@LhmL%TaC*s>-F@_u!YjF zIvaBWSrzw)23_x}&~>AL4A!4~JY2;*NQ5l^xFzddnMpaZ1(5QY3YT4@F-_yxWShVj z3hmVZnB&*FJtx!KJw+Bh9lQs3?eoZGDy|WxDR`NqY$kteY#8AuvE8Rto`jR6{)lAj zbSS8o52Rej+7`7 z0u~iKV7?6xWx`L@y2jZwoP!oFJ2wWe)^pKUqjc%kC@=WBfTXaDgBYuGd$amU3No-s z3@laS;c$)pzTIR#zNx;ZN{&nk2>S*nW6g1*6)&Ysr_E(zZtm2|6ty5~JE<~A^VhpX zVjR@$g%$+6Myihv$Wo>+suZd0>KKaYao_9vc2vQFV{Ww0L1FvNxR%~<-7WG%VR>Jc ziVRUIl87RpqWl2lw0RS6EAm`aTkTnv20lUjV2#xjoz3?jj6smg>^U})%@$Oh@n~@H zkT{Bz|M=@@H7%kPbPYPMUo}W!m9iCX1*{3?{S<*;rpV#ZK$<7FNO?rs|iuCMCs(mC&k*m2}+sa3Z%y8^(8= ztMi1V+2$>+QV*#A?IKNuw;0v+**J_2lc9Obb^)h53Fq_epwy^+Y#riOYJqk#0T@dTEJui7}RDoC>kV}|Yub_{Xj z{M7j!DDlP!_@xKykY9x*D#{CW{M~{hjr{P88L2KEZE7?5mk{=RnQp*?0bmtd?F6UR zlbfCMP|9jZ2}KnLdqF%CI5edrHdVvOuYdP->JxvZFc5<+WeIeMyuKkFmdoa;=XZB6 zsnW-73}%`mq+QUjv%B_bF+#bEV859;JKWGOY(;FPZj3iP*%skIjyk(MPXn3VT17NrkkyCzqkQ8q)mr{`620OpKEnNLdfUskA(96l4eH(+z(ACH0xwhS8T_TU0 z7^tMnXV`79P|h|!!go&WTR-I+ipTLh{Bp;A#Xqp7)yHl43cMTZpZI*&QHEQ=lQO#_ z*i>{=@m;y&;%}W{9!9MM}Ic6#rcTK_8{fjvQUq)akp^1aEA~7Ix&c z1ra@TLg^cJX99tbkDX$br4|obr8V`+=(3OF3-0#TxjC!@Q$5 zrkz9w-~iv}DDhB%E280>n-p7)_z5K*nqd+fHFZ=Ukjz9ezlGtaeK0pTPfQs(y&^_N zUAv(OB0*=6(rx?!Q^isCwZr0JBA=Yiu7H+?2S5Mzm_lB3XGB$!HHVP9JQ`?wYFbtHN$CH+$*`-XXnTb> z6qeAZY+vv&*kFn-uhYxjZXqRfIjMSX&35Z&3R$JtAtp*oSn6R({TtF)m>;557tU#3nU z6NG_^*A7-a@--fU7}8taf|fU~aUj21j!4B5c+l9Isj^18v%R@dSgwdsPxhCuv3HmD z47Vf_SO|opqegNW?e^PP6xO}W7zuZZ^X9tyfZ)?!D3K;&y_ywB3p~|_xVvQnJCX)c z-*0;~#!D0@J>3S0;QRYkclF2xHPoL6cig)iHwE`> z_(pj2qk#ihw+6u5HCB+iqt}S-uVL?|-4?qmB83Sr+8q@iFdK3_t4b2X1$gYr#$uBP zspBXdNhVIx!L0F|aeQf_c5!I1<+Z*HE=fzoF36eH-Fi60zv9PldCkyK9 zza~8hmLUDm0hG3Ji1tNz#YNjG_}WPY##2bI>6H7RDXk&Wd2?W2!?A-)TT96Yn#2IKE?V_Vd)@5^CxwEZ=2t6R7OJdZ%Y=!|z(gkR7g4Et zX>iT-HFx@tVfIS5bm%U8zW?&c-sR2w6J0&%h_U%`Y1YrfcQIOq6}e-vJ$GayWR38Mzg_nt8DVTO|na$_@{S8;%~NW`F1%;yJcpS=330*%v6(5@E4E2WIt9* zlj5(b-$S~O&UG~JZFR=Kj!%s#Z7hm}B^I?kCS!sy#^67I|CjQ;IGw~4l=EeL~ z&Sc?StSR6^2e}ywOT>m8VaF-5B=O}9*5pHP%b!pXC~d7g=;Sp%%I9RFTbleg!_h^0 zNGeUKSl_qVX$)dIM(e3T^;T&}3wHM~+6`$16tTNxhrF}&q`}Qm7CSXu7Gkl%l$71m zc~s-eQqsibj+ZgU-zu3Jt*Ewrk)Y|bSo&B>7Ybt0WgcFfAE~cWF6&lnT+phk`FF(k zI=Ze@JAZLpp;REg7p3gqszh1d#b|bb!Y$Ic+ZYXv=_xx*?h4){MUQlHR*sab88z8l zMKclu$m`p`EEbVS$^SAwne93G5yPNqf*faCygY7es~Pg_H)eJCopD;(v6JVDZq(`n$t%L~vp5gyI)GUd zX@0*E_r19esgikKiRr4Kv`HELEol$~;;U`ksfY=l>H`F^X1i~v1%y(hBa_JpJV9t3 zwZIPoKLA1ViInn|;B#?1P!;Ir&fR_T)T=ZkCX@ikqb8L_YppRzt&hOR1%T{TP?UG7 zEZtevq88(^TMteUR)o0D{L>mtcDIMrio;=-o)iqL$tgI~sNMLL7)k_8qy^gbKek$c zoRZ*ugVX3%F`h+3gZ4U7b3jF;HT%Ow!K^R|t*LdA)w7OAAL*YkAyi^{Z8XSgbE5g7 zvw905WE}=$$eZP5%*2`cKy>a$(#OxQ_LqUy>7FU5nTREBZ{*wJVa3?8GV=^jD_8#X z*EHQ!wchLKXdX0cotsV7A#Sdq>5>@EnU|lfzE?HU;2qR)1&Z>;wuE8T3DL2Vb>rsB zV{zr0+|Ctt6-A0kmnIhj%e*;T9UYX?puK)zRr>`C{W8Tr{=CMUIMV{A*ml^E)KT#5 zr<4-PHFnFwBhy^0>)e%d?A01T5f44$p{`Jm8fjA#8wAX4S;+PXE{;^UDJ#5ci3KU| ztvXu?YBb!XHw=Vc5s^jtS}ib;wLfY$)eloTPF=IlBV84RqTxGCiRs}7Nlu;DCAFPg zDbe7RN{=>+ecp$PLrx721pPb$2AwoD5|HZ9=`AGb68^WrW_tteAj!PCd>{2>Sxpqp z-NhY5VS;ug?O(Lxvvc+x^{f%^?{I>s+eh>Ei4(NiUKAGMLCsC=rw8`}QT|y7DDIEa zY95QUfQ}2l(bi9EW?I%$7JE^|BAWwiH+w~%QyGy?OQ+woiE7DaA?;p>Q1au=V6ot1 zG&&hKezYMhVv*-ukv3Gl`%>EeL21QIN<$OY$L5rEgNLSs{P&vKCxmA~%_wd_zSCUI zk$YQhPiafdr~567Vb|g-fhf>pG*QGY8C1|@*IG&Xz((_1L9&urSmbVd@5N=p2tRos z2UGksg|1tU@sd}*^AtY7;~a_2#Ca)ULEFkey$`9U)m0CD!HkO-24sxvAFQZTQQ3S1FBd+5lF9G(^%-0w>BWbG~afd0UOStW5HDS zk!@A;Q;!@8ncp70iVPg=*atFn$cP#qW~R@`olE2a_$p_F3) z#`oF4gej|K+4&5zy}PsTP{A6(-AW?w*O)Gw6~uMHpo&y=W>TH0v#%={9KU(I^*A@v z=f*Zq(bzL#c1~AbjpsPsSMa+ca~T6O5;^m(%z)n@Y}&sORZ;z+h*K+};Vf|gfqxPu|da+1%Gf`IA*H z^{Npb74TNEOr@dAAMPc$p04z_cxc5>x|V%KPF$hO8ezJ~>xZysLYz=D3`kS1aUnZf zeuJf$>w5ezz~g=h?)nNWZ(kwmO{RthraLJlC!y)rY;{gMvRO}2hTk7XPx+3(mgJ?o zptkF9xDUJ0vMzbO>&Y!Jg#*WqNR2LEh%HyjmBnS*k?rh{1cc#e-qr4ybPwN`^Bs0` zCPBhV9Bn*Ra0zloEl<0Hhq`z{ho|<6%Ca6qV{Zn%)wEKk)C>jO$(`iRtTu@wJc92( zuh4%%eP;T2yS9sKBdI{&;UxBai4hRLLxQoED&o)EE6^X`u%YC$F9AVD7_&m4pCCyG zj@G|IM2lfPaUY9LBl0-f(x=K3vUz<-)0e*ytxax|3r#=$+8lY}Amv1p!1$A9zB>2X zuEUvEa|X8)5sTtCzBYXKMkl>fxl|3A^+ zE+ANHP~c-NH`V`tEkChS8$iG~cgE|KYqR_rn?Wyk<`W!@a(&4=A9sspgIE$;RXP z>t5{6`&BO~{P~6co75MRZO%($?iX)jJoVT1&3Esq{?HvM2&Nk+NToIaX7|beLjXv0 zy7Tn{1mnM1IhEG`MB{%6QT&MVOF#l(^g$5cb}$`01um9d8qT zKlndKn0|#pjY0&R0$+Q9JGNCbK|!SNgQWtpNQ9?4pW?tdpqKMadKz9Mr{1=#-ndzjxZi`N$;8L#Q`yw{u0M1Q(> z92u4{J^@Rp0H_gnwD@}O?w9M<@!#NW#`B+az|VOsV47b7V%@AhaH@AG@XN!{7@Us_%SlA@)?@Ef$!|$S3Zqsr`64ru-hs>u1pl zsba?U^XF&JwAhG_e$Wu-R>t>WdLc99YI_df+cg~3?_{Dj$d&IRf;txevq*okDtx@d z7iU2k5Dmi|-!pl?2Eg~sK>*pGc1X;~9U+FkqHiqV1yEM;>~mcI1MePb67%MS@%}X* z1P(fi;L`g|JO9D46f9UkfbSz*nX2%=pzSLFcn{P7y9M!_&;JDnkPoENKe^&i>dI z#ZPPxVP=2}KJLFi+0}?ljaI<#F&3FUswn8J$FVI0_1I_(MXpw?!y;Gnr_?-$mlrrx z#~;yD=EM)fI3SZ1<8FqamE@)n=7nacJZ*Z-6k^59YYUuo>>f#_pAFuFb9Xrt$2I&Q^MU6p?aYjC+c{XbFFYf*@^3Oq<=eK5)cICH(#xi2p zud2%5&+oex;|8*|wG5&DiRN2d+mk-k)^L~vv=^v8UB$vntqSNUg}2D05mhotuRfT9 zj4}9GS?0XZ{GC7RUHkZww+M;=vbS)Y&_=dCyK}a* zqVm7ynO2}nm~_JK#})Sq8u%bch_QYq+J4L#Eo`~@*y?I4TCpgwDSy}3CRKsW@!@;3 zeO!CHe2-$2S7F^dAB1nCqLJQJMl9HnrpvK-*ayGN%S?N~{Dmeno|on9XERuA7&wx@ ztVGU9kg5Jr2oq{N4>`uOI$gf>`UuJwuoL>F6FVQ}av*28XK!?RTOREH#KV(}45KwP zVzFuXdfc>XgmwS!a>xv${uZknyt%82kc+~OJ}M~pu7zD16A#BXn)x`!fk{Co!G4S^ v6b>_pGk_ufE%clG4>aU|S~89QQ@IDnQ1lH)FBqyK8{ru0;w(65Jh%dvKQ)hu{Qvcc(~zLU9TdDDE!B-CA0>{N8t* zd&W59d}o|*+?zj=mF$_h=9+u1ojsrV%s|vt6|gZVFyP?eut7jsO*l9tC>$L69vb57 zC*}oRyss}vw$dunaBxkDn19TXU*E%fXe!9S)lX6#!NDQIsVi&Cy}Z1vv{$x;xylOh zJUl#j>MOv*!~gpA>*aLxpXcY-JW<`wvpw zq)~zH0A^03cMREy5ls(e-&Z-G1{S0|YkKz2n5wpbqnFR*2ttdgVQ`%hq9 z5f-ASrzf|NH~~sje>WQpOnh52y@#(5)Aw(@jNiHHh#2dtQez{#7$~Ul;jY4J@X(P; z+&{1pBFD!k>8gWXF24KOt6LgrUhWKu@vtdKzhy~Y(>M z*owQT%Y1FhdYd?v?V~c$Q*wKI7ihry$?R=oF!&e5$XJZ*?&o-WRbpwdwuhCbhOzb2 zJ37LYzV!!C*v9k0~Gwm-~A(tnm^Nod0LZUxfDxLg7 zrzU@dgSZ-F1NQe1U8Ua*<;JAyiC*_4oS$86Y;2pEnJp|VDKRljcc#{*xDFS%S5?)_ zbT@t}O3zk(^LVk=(a|~BnDC=w>G|{6dN%~Y4=-53Gl(0 z)RHLkgsFDfyhVn$$75zregp4r_H%&=DvzgL)F2&$(yv_)*Cwl9&$cZO^|;%LdJ;OZ zEEsqnWT5K=@?O|Xmrag}iXxgyd}+O3aeT>QA%Ms#$bVwy4gmrP01#P*WI7Ol03G@| z044zlAV{Fs0RZ?a6$*GA{7Xa{`a1ZR$Un0GYmtA{{aedF>KOi|<^P@W-&+1hk^kAK z{~Nof8Na>R_rv(KrN;D+DN$TQ9HAHT|4fdv%IYT{rT)({i{A?YFDGD1|E$|H6UdOU zmqq7G_|Jg>S?E=+D4#FL{na^#>dB?#pfN+Nt$$o~$YXsxuWL`2qmp(#|GQn>HSC9u z=t(8qe5CrBpCNh8Ho-?>IPkb7yuN5r$#i}3<06@?_?nq3BH^j7y}aa~P@kDb{x1uc zBM9f4TN0@idlIbv2Z6Xf^MVDWt2{taTO>*WE!&wOe5M1XiLJT9n6k4QrOtdKI~~Qu za>cS%xE}+vQ%~|Xr|1mm`PuPC`vVcGOm9219p+i@61kDSWMB6CFOXU0*XW^>Lv^?JO)o2F)=_9!wRlvbt{vn?= zDIkt?;ZT^6n2?~H3Ggp3okrnJcAr1+zHpJddjBz7wd1UC?qL>r5Z@`XZ#eyC;Xo_# zdr7_F!i|0S1sVgyf@8DV>DCLBUzOY?y@)7lZyepDIiNIcM*4?#Yr+3CajW$roQB9- z#83x@JQ87-nk`)XDY)p1CYJ>fB)@D8?@NtW{ebcqI6et0D3}}T9^7CBoh+CZ4=3Fa zlD+=okJ*^gAXM9mS8=P)P1Cq4x$)Vn(HZS?jLxZ00u>Z1UXtzYIT^tg!!(^L+_$<> zY#&w`(%}>QM5G4J6`tvF)^cj1Cvl4HQPn51uqhWyQ&&058g*tvv za4EPpSa$+5M>P_BIulVovzpGf--o(i>*A{5dn{TcjTo+B+-y>frp4-(hFFlw!tVw! zA&@BI&!NLcDOXj~G5RXjM!p@iTb%=%`GSiZCSLXyKXAHCcK&BHcJi7sQhOw28QelX zl5?@GsxD#j4_5F^a!t4POdj&+w<7{$!hG5R#Iek}p9*!FY=YQBA9I6_43Yj&hm@8q zD&S&TWHa+rmG5jM%MviVdyWlhq@+1mZU;% zp#kEqk1hW+PwI&=MTwf_B+~HVsN;C2fm_qp6b4<1Q6B>RP-F91Gr~9BL)tpJ+XNx0 z%5ez^*e=Z|L8C{*LIq1YjiSEyoL~mBP5WwTQHz>(W?3GIvbwPh#d#N@+S|dTQr;&g z(WW4jpj=&S9M`CmJ=AWDmj#*HaA6!|pv*az&N55i=Q6!Ym)a6uk94)jM;Vww;;68( z^ow=3xYRLhIsbrRS_`KP4`jsH;84t>O_|f6?U>n(tgB;W>%R+?^*T9ff&)&QdgX8s zeL6{6TpHt};1mvTiEtsw5uav&Q^?~_S1;0uH?6lqzL^<|(`>67o0q5Ah@R@~8!C@0 z)QIuf-Vn42H2oaLam8*}(T99Cf0(Aq<(vL%ZBI%;D}|O2lJ9`P>l3HJ4BYWdCK~14 zw(i1o2d*dd9xrzZFoY)_^~Ii@LMPjTFxl`@rlS=Vfd*Q~PERzLG-NeZ8r zy}4bh8IBKHX8ovpo66D6Lt5#KUQnLTLcne3aKbmJ?_4eNOnm%@V1luL$E&=2nOOs8 zovlZ(#?PN#TsQqZZ%9MJPc1gzfxK+Hq;;TTQrn9KVD1)t=aBr4U87m#GVG3*tYynb z`OAtn1K;z)(jV6}%~8Yk_Rmgh=Lez3A_pk+x%agjo64Ik2HjwRWJ|0GOgH&f7+!EB zw%8ux4N>bf%mQLMNrGaj*puE@0H z9Tm!~P37G=?kD%Qu-S(DbjDNL9rVbcTrmq73~bNrRGji8piZgZ7sJfM!OIB54J2?C zSm^s2+GcwwNZE$xXTCOUo~z)Ni4x-hb%51Rj|o9T9zv%O9#`!OSaN_m(8D7I0$*Bg z=l2Y!r_f7x@t>KVMG1s$mw~)1a$q8vEp4=^g$nBS&QZX8Y-wIZ>h#+vs}@9GGPM!E z@scorY}FlSI-i~D$Uu$ewlQ=>OO{8Y9HQ$M7(-eaSTzZ7nNh+tq8OC=S(=U}it%1T z@ZvFIYuo5126d^DEe(aOwF2NwC~?*go4|B@@|Gdc8lf=LZ063=NiT1Nrw~&j9iAN+ zy?u-*qtYW9B4&w&4kT-iqd{9LeB3}tZFy3sI>^a;`yv8-$3Xf~^}jN?fh9JmqwsEN zit6?}6aM0Acu{MSq9#_A97cla>B!V22nw>i!JHFC_s&A~^lICy zLI>$CuNxDniLLYAMR1KSISm!FiaK-vhK3R(iqfu z*7MKRu!2G*nT(wqrh8e3++g0`lIKT)ozi8oH+mKo{Q5V(>6|XTTGqh^NO?V-IAUq~ z4Sm1Bd)@sVfKj&wAzHufa!0!qfIFeY9WzAiAzX0jZ6|V6H0!xJw4=&WL0Rk)HE zFW%opi3s-M4AgXJuNCYBT#_p(DPiV|86KU{2qY(Z4&fYi#zbb~CyIz~7WRb{;^vnN zPz;;dKL-~|xRDuo%qPLv72i&*PH*rv+9b`rUO!NTON|-h3VVdVIIdJ+U5JD1qDhrc`&)g8+2=!zt zyE73CAqU74#Gm)FLRTW#f($Mo4CpwtNvS$()w_os0Af9n!g51xfo$a?v+3|&CZ=_> z{zt2g9e{<(fZZAs#7NHY_im}g`ICHypo$(-qeBhJN3v2a73-X3UYprck`#cyKZ1Z| zE4oALc8T|x3SUlz&sBc%U|%NZSu~NDsN!!B!zhI(NNH7AN;D8K{YL7`inHlTsk{9} zw9;{B&K28&nSPzg>49TgaV|*(Zern9Y##CR3YzKhbZ6O4m`&(|KEDN2RxRFmNA89r zFwJxK86-x0PXpV2Ou92%PvR8q)^=!BR1#(&bh%k|lk3p_AuK~cDpaJzcEp&iB(qoo z7M~jJ;MbP3E>^+4<_zqfgrQ&%6PIqRL48w|7&cR^vfU_M5*Fllbyw+bDSsY)SrAsK z|Eqd;TSx#&aNmk#N{-w-r%AAjAT+T*|GQxVEwV2X+m9Als@|o8y2R-Na47xhW?~(Vh9GVsQO|4`EA^2rP8_*?xh~4bdaK=EbcZdM8R94Ez+F|qG;pS zE-zY-raT)BA`?i>38?%d-o>nTQQ@x*5DV|cKDn|xjHIlH&<1L%H~C}?dI^q=Yg$e3 ztcbTWM1iNZp&=#<9s%N9qXP_ZCHM1?-O(-pTM}BdY?R$Do0xA^(=5fHRZ6N3g&qtk zm^Z|r7z{&J4wI5cbD++TQu^geV@Ou9;{3iQ|4lOpy?e?|7a-;e*sfAfym_QJfOWM( ze8)FT2)^uBIiUT_Puv}8IS?(SNkbJFb|XO&x?SG3`dbd{|Aw32uL&tPKmGaVZM4^# zc2vod{m3V938VR->u=93(^kQR6>Z0=@Yz(AAL5YmxJKSPabbGr7;hd5A|zKPrt`R; zmvd!RrH4l$nj)(O^40yuctO<{)F5#+gsHGGf;zL}H7Bk%R3W2lZ{s`NAP<1sul7j| z;j|KB80)!6DB2h{iwUFf;%h=r)EX;j;y$WEIXWBTa;I_HuhQl06yG+9ZQ60qyc6nfRDeXtL1xgagn=MTVej{2^Xq-cb zy>3ZecVTgAKkpwCW2iTK8W>w#!d*UBNh}74@mqR@O%6QjSF=R3?Ir!o(mmT_$qfUx zv|_dU_(vpK>0pfkwwBO*v^ySR|2a2y-p(1LqI0Cq!%Y91>|3>fp3>J1gqhq~MBz2% zs|>7GV`2PUOC$N_18doFGJMa*#_A(wI*xMzUQr{e5v;1DW2H_Fd>S}pB2QO~;8D6f z@Zb{d)Sog{t7J*Lh_dR z+Y!mol$g~k6k0TW<)O;rV|fbZH^@40OQGO=)8X*4W8Yo>uS_{uaCQKw?PtqxE#J=s`s5{BZT=aUii*%=txyr{&^q!N@nG+E zZUv@_4DZABWD)y9O_)L|>g{-?_3WHa_T=eIrk;=Fb7w5P$LjX_hvWpQ9^fg&Ebm$rta$$V zfurdgn=MkWS+B7s(%XY8Waskd*+w1BAlwlR_SZYp2+kKBA2}j!eYS;>70VOwCg@!j z44kf+wt|nn_QocAW#eU^$GX9>WOYiz2BpS~m#LSOB(dzb5a;&tVzISr$Kcy8l^-?Y zSw8Ik{+UDv(BG*+fgzNGw7Y%b?5$DcG%z76){0P@_30afE)2?UOZ?!7#=5!dFD@-( zw}c!Ba4CGPL9&KJD2fX;*v=!#c><00vn1*ElqL}XP;cI%EP1KyH zq^LO#z+J?za*@$x_0bB1_vc4kr^R`{6VwF#bd2T$_<|YO@!*m~}WNAex zKw$X^xLxWpQ5tZfHd8fQNsv@MAwehqs~V@^Z`f9H3oot|ZK_ zxZ)iwaIZ8+J(L%E&c$pWkHeg!EM)K3VwjRNS9#Glv^C-l4*VidyM}ua7eaeIp$M0$ zFr-;Ve#<8k6GF)}Vkg*2Lodq#MfG^6|7{(_IWeVX%`RBu?U<$_EU2VKD$mWKL$THx zejw~fB_D0MX5^w`O7_*wygGCr)s#waGXeAU3IN)ZN4z!kxWM9~dA;e|-#Er-EXI}| zEr|&HZpxf$*ZG#tMNLUci}mw_mtoo%<8|eXVdX;IwncDBG+^!m34Lw z%-k3gw>4oG_7A%VsGr^~MVq>NxL3!BTlbH{IQS?@1#(7lFq^)APELsWspUe1g?ooD z3mrdS1xw-CnNNz0m?qnvT?pAV_-3i}9L^eQ_Yn&a{xHigaA2ic+~OZrylXpT#Sg6C z+2hUaKUxTG`x5u%AhntkVOWs(Eza82#>DZb@JA&L;3(mj79W5I z=$lPRn~#Jft)MEv?chhNia*+UhqsdGr#(7VUEsFGCj5^zsFETZlbl+LQnT~A^w~8< zYG`nK_xyRuQlnZ7$L^oYK_ssk*R=5f%(cU{Ic86i02_y`>)g+8-Txaf@Bcrf?q8_h zf5is>k09j#5T>>s$QHX;KI)3|ae-dvMTaKfLFtUO{v=1ee@@g=)5iIX?lC4_8a#W{4WCTQqDw1o-{|&I}hTSdiIQDZkFI0z`nb@|1Tx z@zeEtDx9%Y&@3|MsQXpB8I$I)?ozh5%?7AeW|7se7`<}bS*m&-R=5a9Pcnv7r`Yi+G5JZA$H zgduo5qrupKg`ut%5z00GF99HHp{Ab~b#jZYGp#ZU97i}CiCga1$Nc$WUsohb%5iq& zy&u;#h2t5*hf=1dtPOPe>B2&~Mz)Sn(Ikf8Vg;VjLz$w- z{26&i9TetzZbrZJhVC(Ci@u@Or|8o8yP=_0J`#;>ej)&*EwIyJ-{{f&C}jZ+ibDyK zlo=&s>vPuX%uY@{`kTS3Z$_|FQy3>m@{CxZD})EC*$)+i16(zlcGWdngoxT@M;fmSFm4>rwzqh$8ap_iU)J8vm&~P&93JFt>9%>=(6KZTo}c$G_;Bsa*I$@ zHDXyrA8C6ve$gWkw16qmTbpB;t-wKlKZ=%ohi5=%X|j_gKyk*!6OE;dDrLt34gz|f z$I?*QDe^gqb8N+>p?06u5U31jD}eq_)xU`)xBwyJ-^g03F@Bn-(mT|Ma&j*U*_X97 zYdQ*S5j@s>e5YyS6@;DHg0QVYze^jgw6l;VUWQ||;^2##rkBSn!&BGLu>SSaC*q!S zL{`!U7~1)D+B||PKYT!$TV|4ZOM!f5v26VEQ~3`r(4jYwk33BpV7}|rh=Uy6`{vs+Hi!&E zI<>qBNHDU(;}QpCTl!1YCn>+S0=Dd3f`5;RC%u!~wjV#9Io;Fz@l#oxDjK2uaLH(U z@bc3nJD4Nm=)v89I94uNGI_NWkh$zN+2LpCI|1^V8l+EYteYPOJpzOQ)7ZE?nqi-x zp2ZlCq(w_y5zeJ2+z<=5fH|BEoHB(dy&cLRr|6Zj&iHsJ-!>VSbJW!v8a5|nN*Ck4 zUBPrC^O$@|VZ;}#c!kKutb`p``bjKL#~*+r`=1cY1q)~zz=uHSms{zt8vn;iigYqJZtNtG)S%Cg1S%ahG;sJX2px5o(h5fP{FT&g>xEc+(R7QoA zDi2!+H&WRrSJT4_IXba=0snnd>E&Y*&4%o(q1YNzjOw$;GEASOD z5N`bU`&~b{OQS>cIj;;LI=5y4W0b*}cl++;G`@Sqqh<^pPahnW9W8&&VC*N;8Fzk| zyd}kVcv2car3Hy;nc^h1ghZf4mp)ma!Y1B-iUUmT(C^~An59C1h6lx}(lc7*F#D4% ze|xdz45UDgXeIvzap-#j*`HZ5APfkJ`bM>XBQWYpi?4^2K{-TO5(SeZqn_k z2815b)|q^yj3yP4U3q^3<$UkeVl+DQt-jxLN8)2dPEOEkBEcAQyZNRgi zh?C<=*)?ram5=UYU$!g*rmDH1uZeOAP*cRRHZG~pN;&IV&@ zJua*MC~;~iIc*{6GiMg%Nz*7#wRRt4e0`T%wj_U-qQ0v`n4(J89Q_-vD!{ALK{vK# zhu}>%vrxIEn4J=G!%S=d{`0go$MneVx95m;x3aTNp1U{Z6RdPeAH}sUhz^;poBIl! zMRs~u1YTq!-ypp}P5kb#zvKOz*kyJaouP%)(oUV^A*%hl6`}%k*JG!pd~>BWgxbfq zmXFQ?Go}0M%t0+m%|1*vrkI%GaxFPtsMJp=w(Ip?P(V`PtoZQxl$`C#FU_&7=}f(- zF_bIf^jioF@EC@eQfUBh4P9XME_HjsB1YgyhZiExxpLxll@14#RL%m*2bxxm%GbDt zSLCE;N_w6bE{Sv|YzwL_$>QoHf|Ywl)~5o$ZAM(jFLmv=$`9co|=R89uK+L?W?EGjz?&TCp{P={aE68YC)J^o31 zjY0lWezj7_L6RnH{S<09m)_Z7Kug;-?X-|&o^PoQXh+7yno48+N$$H9SvG*cF>2hQ zpz~x7)RYru(bEd0tcb3w=ZDgya+Y;wEFuE@P(uOP%+1H;JJWxjGxu}#%7cd#%r^MO z;Nmd0QpAZL3mJ&HiOz3`j5%sJPJ#};_N*6}97YPXl3r6R+qaNd3a4j#j`1stH#FVO zBJnWtcFzso{p~%u>=;GCsD+MARX|vee(6%XjEM^VfWiF;w92Te?&z60 zBXwJduEn6q#FTY5uu0Fpc49=d0WK=-`!gl3gg+NLY25eA(=9!CkVprz)HRR$n^ZUV z(cgTNE`5^Vq2g(HXfK}mMVfnbsTWl_`?mlaT6uItUbV%8CmAMg0S@e`fuFhqCW*Fg z?mgzPGgK7>bJruq;()0hS#-K&SD(z8Ef0?06xJET{p)b|&1SMc0A*p047eM@xVM)Q zm^NrMWqfm_%Qj9`^_?0F)Dp?%f<((x`WOixQTqw2eQHUK-9R>wxQBHiZnTRBO0r?roS3@^xi;^Eg~nM|Pq>RL>BHGi+4IFPMdu*|bFf+P*uV`yTcQ zJB5vGO<-7<*SfQQm`XO?_csMu)$tbdEtb%zM`?ih;D;N#f!ai}ssv{Q-4Dext4svT z200ro)A7Rxw{3F1_6-6Hi{t3`n!OCFC|pFWnZiXDu;J(va);P7Uykyzcv zOP|_MT8{Sgn6hF0q{Az*L-iQy*q+cJrHG*uGVGTO-cqBm%y|g)uBb9DX|!yKg)_pp^QseF5JesZ=LMx4mcTqMcjlj}Qv>(@G5p|8 zsc{vxZc!eRdH008ny593)#ed+H&3i5?@BiTa;1ku>mAd#3{T4=OS0ymrvLbn5zxRP z*{j>$>W&LlP9D}d{HUjEpQ}3lYCXitKB(yGOf?X#bJ9sPA|)uyD{*8cwQZuQuA?wI z9R`52C3`)dZz2`;) zF;wN+;D&iK!_hnVcgskxJ}VYIL;$enj2VogfNUsXp_H#b{EK>+O9#Dn)O4d{&c2QE zTEF;^K~j>}wxnsy&YyHE97{}aLQrmAi!u1@?iozA+_wxlOtZU3Jh6Fp1}W#= zmRr!Il-8yQ1SfPI~|eae^oO08djQ#Y84EgrK{Xz9o)G}U6x zjM7o>vkDC)$?7$O)=#c;yMoEl7@aJTnCs+fS}VGAL_kS+Z|dLJnE_aJwrDummkI$X z$-QUOW!;srAhk5bWy(G@za&b->eO_GkL8vyax4C2>R2VyZ@O&Dm;*V+1UjLpPfC-E zfi*d&x{>xGQr*;;KRI=S3Lqrd#+e0T{6zF}#piBUnv9_d+ec1Se6BXNESBf)plX^4 zTkO27?5{jjpu?$~TW4Y~&?sh^@#mEoq=u4fZ@)Dz(C5uz$yFlUj%VPSJMCeka?mUq z25NZeL(HBZ83>ohWRHeK>N8)yVG-7!;V@K6?ZEJ?U(sqZ8Mk!rpfj3pI&kUWw@^E= ziaNn5i8yJvKUo!Q6HohCv*!5#|C!9aUs_pCriDU+g6hb%G{292wBUH>MmbG9 z8C=#C6;lScazX+Rcp4UaM7t~%gZ%hAzej!JYXWt{hDS*B%=*npj7tb=d2T;3R;o+n z%WBMHq6!|?VP3Q!ZJYO+w0sa6GA;_}zx$F2St?ZsD%qNY@UH`KRDY;u+bi&aAfd+l8+P7`% zh=A4n@Y~x1-Y!7yn3bDvEGD3dW;B+Akdn^+1+@_uAbr}}DQ}9Fq>Yv=dt)NrDs9YZ zg^@*^`|#CGYL4yGhoHvjkoDh&#DCM`qE8uf_OMYlO6=i)Bn>&ZQ%C&ilOKEwka#uu zR658_FsfP$zs7dlvwkOCHqv$boanO|aFKEdu@`Yc zjdV*&hFt9T8f(jYikoyQLPHBW<%GlBnEJm?w~h5(*7D{CF4M2=?KYF6 z)PoTp4sEsBLIG?fWY~{9`a?-rQqFIViP?;=g<4xuj zk-!!8rxXaXU5`tfcd&cG=SrKoz_g3`ml8W_3$~+ za72)KU*htR859u-L{(AL_BCm)_Z$8)Z}Qo!ignc0?xQgc%2!LUmDmoH$9`=>^e)d} zYlCimDAi<3zMU({qiBP9+p@KD_b&`g792l)A+0i_k8PB?6|y2ipp4BNfY6TDHQ;sb zQyfT>SBDgxGg6MU<J#kN-$qjS0<9RgwXuby|Fz`M+ zkxdR4q1@Cy;y11K&=YWB0YtD~@!uNl^%_opbm=(ctvpjZ(MGR zq3&7f*o94<`|c>>n)02BANc`tlSc(8w_DFit8}d2?*)V>KJ!eAM1__fr@N022Jeq{ zy`^Ja8-in=DLMKfFECGaT{ZTXtIK24$z_X##_9bXv)=r>sgz@HghCROz6`n}^o~-C zE}Hu4FyGTs;$8fPjEsB5UJ-x$$x71nKJC7ArmDdJ`_v!h5K zHi5lD0F&U#ASw+T(fNV0;M*NyRP|&eY+<1!NCoOvw{b8(5s$x;UrKeS1k8uluDxWVWrxyXad5-IhTJ@suybcv}%FcV`wR;H}7gtTtBoU#ghx}c}2WiaNxhMec3YEO#b-AJG zFy+w*=N)LiJ{S6=Yc_}OMqBkIUQ#&W?^QV?{bg4|#V>E5aa^_HhYaXStmq)Hj3!EQ zIOu|XD?jzFCAqVdWeci&sOgQiMxl5YF0&$!DD0qLBayStXa1?O{_H(sJJFrTaVL+~ z35v6PYiFOOF!{t}xv(p{SD$6TCX31EI- zxvp!yh+as=A-Fs&*+w2MkYVpmiQU9W3j0o_=T(x!f94Heu@CPzj%?k5pL+OuY3F{! zaViZxQk|QkBs{AsSLQOzkXOn^tp|`3pD|Q<3U{xEl{y_JT^1lYt9@hg%j&0HOdq!njBT0ME$~F^0OVFKaG?M@ z3zp+b(*)nm42Q+XqdHFle^l#vaEpyO&vt@Z*rjJ)3$rl{qaKG#MQCQMF<2ZjRMF{I zuA85@lw0aX55-r**LhuULf>(3Gy8|*{@_G_ds#S4IAhO`qIA+drgp3GF0fRW-A@pv z#^Kat>&j7THqHn6c}UL?x`PyVTX^0Pq>r@CYoM*Aj(m2eRVUvY#voB7`IY1rU-uoc z{h1S|ft7pr;K=^8Id!_tWH30Om&Vp;c9Fiqi?~;2b@Ef`&T7=c zUMHd%K*m5H@MAF8)lJ<^TOtv9P|C)s|Hfuor8-Oaxn$i*R1z#b)7M%0TGp+VePdQP zM_k?i@f~(s?BAidvIy=)(;#BI_d3f<*})lGL)jwVeM#yH`iR}p6&=afxzaJOD?Xia zK^E)Q!vXsS)Fk#SIhnHyYj!h^I1ip_+5#rJWy6MwH^Dt0j)eM|j0FQu$f~4`8BbN3 ztyFlBk;QeF&gx`6o(Jv_pgJoOhJdBo1u!yC2W#wlhSpv~W9Zrg^Am%mH;_$w2EGfR zy6L-dfA)+^pAoL|!f%~R(r@C!Iq{Rb%?;Eha4tzD`_>XB zf=_f&9~OR=vDAd27J6sJD<2sdaR%Y`>pYs7no$@gH)2aas ztvh|ipqo)(gRt?I{OX!-dkt8@jRpQ6rz?3&bzlt0j5<=qLp`o|J?D)NKD)B$wA% z>)LCMDw5aw6s-$o?aSrHC`~~5)@pkN^EfmM5MYa8LxrT)MOe;CApa*fdI*Ka6OB*A z-17pyFt>AB)B9@%$GbFyv!Mlz_fCSR`W&aD8i*u_wR8Z#e4|aDlc5?Uk~P`D^XK0ui!z3lg++ zg74k6UVsBpE@{m0L09kreOh)}IcejR>>~ShSU^ovjig(cu_jMx1E-KNzmW$Bufm+f zPmhj61HsOL1#hh|-EHZs_l#BOI(xf-wPB}kj%TwDF>23kUuXuk3)L)b&w{bU zvQI{d9DR*uzI5f=T5MGwDbL8!qv=#MW&DH>v}>BKLzWosZm_MU`0kEVe;|yw@0cDQ zYFC`Q{N>V6ujKBVf}vnXmZ1b{1kpCgzx7u2^3>agfApIf-NViNm;-CtT7`&P{4{26 z-XxRTRDzkGz(c1CO@x-XW3W<@o9^F_Q|Cd9pk0D?Ynhqf7n#CqMZ0j9fwc}2Xl(2EPquo)QLwHf)v335Nzv2f{fXeD zrA)3EhZkkNTbRPq+jQF%>P&$-lQ&3hSdrVm{eKWipg0q31;m51QcGtpw)W9Xpx!rj zuImWI9M%j#|G78c=+U3Q4fQgSr!9w;g3lq?tyoVuP6V!nKsJ)5u`+d2zjyIY^hE6M z0a0G7vFyHwC?n}rr5IOb0z>v9R0dh7-={#hD|&IEb|qGJiaijamq^>1+7a;W`5 zh}BpdHRwS3RQ;}LhR@4eyimS9xKxOtDp(?AfgBX;2$!|OfKTij0lY>4n7cEUa9%os zlas^CtCR2nXN!PeJs6V{tk&Mk>I&|lIn;PP{jrDzMsgvUV+N21>WQ)cINRrxg^I!n z3ww&YJDhEyh7L8Rwak+Z^EP#hu|qzzaK!r}r8~$IA9wpWH%kL?P6eVB?$wW$6tmk5A+!0pJW#v5gXzWpdo9E#S(( zroC$Scoa16_~Pll;@epSHm!-r$8igkXz3yb$mG?V<+moD&hzByOb&0d9KljN?oRrn+BW-S4w8`3%V`_O0$g!v#I0DrBy+THSJV=b`)q01a@5GQ3%|Cd z(cwQjWHK}pa4R(RC4vQrD;0dO&_A7&Sv5&(2)%8-5w&{f-~e4N5Mh#n`RO@kiSPk z^&K4ytT~_l0zJnGd+(z8fhmFn=e+&h;=YlJ-@qv@C^AX*=Lw$>fu^S>d+Rb_`|dHK zXZ>Wbzu?gkF2!lt&@Y9Zmd$A|U@ z$75N68`GQ9Uv}@8>r54I$k3*&Z^R2wx8tsT@k?#$XYKVVB4?co$F!u^B|7Q9)ajma z>`^S;A$G`gx2NUotL-=WPFGk7Or!llZ|CN1rP@gDLb~;SAA!9a2-FpJ$Ly$%YTYz* zdad&hb$lSCMyJUff_x>pU#wc_Acym2KRhTmW<*d4!sLli8~KJgI8^3%Bxww@5RQ$n z)Efm}Lg%|rbT8=G3QWWG6KA(ko8f$d0UVyjeQhsG)NAzUHSorXKE!U``%g%9?3Cj$ z!8P>rH4?zt+wO@J!});~BueKg66L--CwXQy05dpxdf! zeQ$BJKx;w}o4*u(Bd@39k*)aWb{qA>LuIR!rn6s1t$ilDB@O~;$RY{OQELoMGJ$`; zmA&D5C1X5%2EoUf9Z#r_ei~_gsFgUdQ(CE=j+@B^KKbxXSz8!->rmUgh+JGoGB#gd zhVao?xnt8CySli#=uW~h95N7FzQ(?FRH@vSJ@#Vfygm$xH2oq9tPGcz+5Sq?kX1v5 z#>h2-aLGU!J~A^l@F+r!Y)5d(vZD9RMX4k<;aITe>tkY5&79%QdM77wIh_;Km zOOvm>rs5JdYB~rCds8Tu$ADz-FmF}v^7B{9nX#>62e}KnWZ4PF)m(&KK_>|vQ&Xdo zoi|3NeRyCuOY9cuQGapm#<2a?)_p#wGlcf7jcXD-NJ6U849$b^xK%CNmZ9y^>dNt9 zqxJ=L=s|mGyvC4_&TD$K8edN<0L7~`Emt=+V6|*jj7)Bkofzv}|nx3Km>M#Z<56eYWrVy{O#21c} zmVbAMDqtTtzEJd@DGPZhy;Ylh4&e|+Ed!jZLViry#7DJ zL24%&k^Vmdi1M0!xO|HL)`YFzLTwT1CJ?FVY9D|MyZ-C@NqpfB1mpg4d$?WvPjB`a zAxJEy6!wqf0B7W&CNlMbO?-S;M!fRP5exXos$I8uJx7@IY+a7fLx(rIV`i{SVs6HCVauY|yrTgqQ4|16s(gUH931#K|U3SYrW zvXh3IzkHqRKHxBI1&;nwB$%ndIB^4Dk?Q>Q!L;cs*wqXN4MhsepQE5(bmjAXvR|eL zR4VJ$n3!*ggdt>#<#=Rdib}KCO%E{_-4B}^h=0`{U!;!S{?X*xBvjKyyn_oc_e|QrR8G;Mq{|~?@>qYmk%xf==Fx17e~l>qxOk)KN>yHeNw%E;x$Z#$-&3*e;GleWhpusIiEi{ahl##!Il z$M@8!pk|bOwzUelIW-gXll>>mKR{se6~qv><3|A2XzJ=9uWex6ps_(U0#p#4e&uZzM-<_FJR_za1p64497&j`U3Pjo|H?p=G1AYRl= zEoo9`%D1NcH7N`u^^L<}$%mU(FJ#)9+s(z2yYq5DDrZiHCHdv{+=(a?k3A$(~j^`Hv(^#ojCUoxNAs_v!$IzN3%rn&XzK&)^UyR`^lps-zWkLC*^YK z{;zeJ zmh3&G7SzZxww#e6c7{QZm#LoK27C9pgaPH)u|VQOG?HW6Nfxm^r3Eq@u!XdRh1Qc~ zdEc93_)%*oqwuodHtA#A<5R2qdg77+R$gNVO58>#uVj!3FVxC9Noh_#bf|#bq(F4! zGqJnm17&W&;~Cq&Mnx-aeze$n@w|9P~ly`H^^7+ZdY@d%au=H2)N zCeExD0iof3S=5(XF??~`+u}i-UFm#k`Q~%kiuz@j#pA2(aqo|-dd~zavAP1#l2zgj zd)g(*&G0f|5$&|a7aASogc%-&Q-Ci)_kZFjr#45eFRBI~P5j#(Dc>aRrOCi9Z{LNh zaXnL$Vi)(K;>>z{s?hTg>PorT-Ax4c6)e1Z-rMoS(OT?I@}{~yh&K#l!#AFg1 zr;CrZ2NnjB2%cWIJhSz#PWJmB)X}F4ISCn3GscT_T)M9vor``q7^u0LZpa*!ki(PYQZ z+^u(f9PHD?d<>Ic>1F|3ea#-sOmUSPoO2y)26u1(DX6GqnM1VPG%=Ddmv>>-)=naT z-1qq3JWjSs7MjbD{@FXxre9%4jS@Hv%l+lottWhmEB!x?%c?{Y_{F*-&`bh-{EqvU zB>j%mDR!IC&*390;suRg+awmYKhrYUcnA9#hHkt7jc3PA+&98=T`Tt%)D z?D)Cix-H&ku#(QSI0o>QiAqAIf5ymIpNPz;!3$uc5f7~Od6C!Zw$d%U-JN7kRgJ-R z1J33IcRb!;ItNuM57La)O`-vNH!rN8C3ib(qz~jr=FD`B-W)V5*wJO!X;rjU$*$4> z*5}D5_BJNe(tq(s8@71(TCpWrbpsxA!VBCF4368k~ zN$u`QCK^M4h}VPi;f$~b{{v!&VZe0Qmct<~ky zfbWld&+liMT3H5}?;JARjwR~S(N|w9rXs5AqLO+2rPbhDqQMWxf%7Lq$597#rub3h zwyp<^r%oH6mP5&ReEmCH>z2*G&E5Vqt3a;Y0j0+K z-WQe$$^XK|Pr8JUF*-RxQ$**emCtZVE4X$ONFcD-kT2&-)T{0V>tbS0Yl&1(Q5nxI z!Dm?fno_}HH&jY{tzU+0hS(2WCdu0Rg}fOCzyews~_^9 zdhiH7=(k&C^l-Z=*0@`#qSoj6uyv>vy{tmjDnoP+uLQak>&8bdq`O+9pJv2t|C34m zsY$F-iGU$45$eO9qX|~AKO%_X{ArGQ<8eg~$0>i1E}Ibq$(R+Q3~@xb7s7zWpGo6m zs?c-R<2J2oZ-T>?Xt792_saCihd;n`a7GP<=`XWA9QT|w~} z(eo72Je-8z0*TbsO;5$Dvyn}&ZnBCQx&5eY{r0NY3ZrA1kT+#da1Y!_PJq{%Vc_^Zy6;&LgKlYT7_6jU3GfC#bA07 zi*Ku&-wj-l15C)d2rVwY#926*(#@<{lQK@9n(gDV6NL#I!ZWEf#((eM8nDy!Rv2BV zoGW$2uV1?eB#p|}o;gVoo-lkQrsjp{;xfs=#;qpEM3_f^%VQ*a{M)W&B!#sP)+^Mq zjE~Clp-{$gJ0Fkhku*Q(7RmhcTOt;v`gDev|b38otp)of9a>K*#dT*%Bhn6%{c$Ulwug#Y87g|(Z7-`--V4=|6{5{elnNV zIe|cGLou6qjedugEeF4Ojc)B!2(3gusvC4aBsK8Ia!_^h3j-Mb`QAJ9iF)9=AyWZA zO{PV{ZNEM#>3}cgHXG$$kERAxM$hXE8{|0`0yZu$SR_6K9U%^oPY<+@5A}2CAeKzU z7ICjJdRwclJbQ`i48^>uf*qxy6!O3^vE;4D{)CD!N>Lg%`D_N!?5~`+YU)fD zumDZZh0I_}UYsS1?u^_ee{9d1N-p8h1m1@?I|FWiiaRHRoA`^&d4i?OzxN;nU0qCn zQVjTeu|hcn%y=>e;9hog(77f{Kx+6GT}D|UD~$zh>MWuJ>RC47NE{)}f38h_E4$B| z8WST3*Msa#yWfZ;%S7!#==2E!h#B^st*ydHiE$h)AacfHe%CwC?}`_i4dxQ!OlyHr zjMhoV%h?&;PklZBSSRvHCkOFwwX!`B$2w`Gh2q#9vDvqj8tBGDsJ2KABK7WfZkh`8 z?G|C&w6}Jv6YQ=tSTwWUm*Tzw*ot5qQJNdWe{H1`Xqa>2Uy7*ZQm$*axZ3`>nck># ztyCZ33X|x?4 zC%tp19Fr*Mu{%NH4h;+Fo9qUvoP+RbId>wGKkM7`R?v#(7QAL);aRn7DgWlV{qf7% z?3|Ese!{DnPhyGg7Ejba=&`J_gc0giW}dWFfv)YXRcV&e|^t2 z_r1-L2lyTW6_Vu@G~y{cKf}rT?3D^kM#g9;MF@mOx(bD?S>m%Oe4b{5T$5KrU6ExZ z zF^cwS{f5^6e4jEW6b(r0e~%*r11CGf5XnSuL8r)n)S0ck!lI(Lr#EdTv`5O=Oi|+= za2J6c_v8;Pt1j)#0mGZ7Q^ID)T(3sQntofV4v-70=g+@u27N(pl6s6i$C+>P?ga%sjq%?PnG~Q-EHt z`y8Vhzo_JE(9Ktazg*L2g163VPRi$@_%0eS%}mmm8CNeKtV~Wq3xivi+naCozZX(= zqqnzHh^e_DuzeX(Wo@uM`Y*gLhZEDK!+kO9aWmVl{ROZ_RThPa&%vz2eCyVAyI(B{ zN$s2j;&4^seugq9@ccbGxTF1S;b6|XYFTXXeQ{7`#*b|ur_O*U0mEBQ8y6cQ+TM<= zlY>znmWO8sq?c)@hIL`Piyw^m6m~U4_jk735^+|E>oA|6Z`jTu2zC3jK5pRg zS`fk~u${tOUsQ2ZkKr9{h3-BCwulvD`(uCic5i&Y7uX$XfBLS4TfK+$&lMyl#Fy; zl++PV?NbINsS4p+Sfx;KC{j}s_7u4buY=(s8IO~Uq zm($LoNzi3?v2)wmvwYk>x&5hCB;x+?&Yq!K5}wn)fNFfBlD77aZcxg9Z|71?u416!%J+7w`jMICmmwMTK-XsSr)vWo z;7|*V-Cj!OEB(*_f#xDQTB6cIg!k^NT_i7~t)uezO#>zg4gmjyPqVNWonTDmF)o+aH%-=M5*sCqe5K@$TrzuE2WdzXjk*Gew zEYtr`)t4ZE_THEal31%riYHg5(#*_n^_t4;!nPqJGVA-hc4|y@LQRYgDWFcb$!3Q~ zJP9=h#3e%BQ(*vIX~2XkEsc

      05#O79>7PT)_Rl&>RI-Tlhl;o!ai8B*m)ni1S*a zmD|sIv1p(@=me+8yGP8X0>6PV`l!H%L9yD}Hr-=q-2=&++PDj2O31ajgj%sXtZ8>YPGUYW9Ysm88Ai@jR(SN zjKk6L>}LE6Wj61F0lwe~Dg%eGu%QUpnxDt|y8j3196Zipm)niBF{{z+JIG0bzO?dp_- zXNm=xg~Ap)@3yjpx|xi!GQ{uJ6|GAKZj2MR#(2|xi3)V_la~i6?!Hw|R3XGUP7EL6`}9eyT^T z&?R>CN;l-Fv|8MY@Fn;K1!zjhDb{_;@!M)Vk&);eN$v6nk%t&m5h>RHgv#&4_HMUiOvGXYCIlzXmkRE1j_XDJnNyc@Fj7P7iJs|%*Q zAegr%;96f5zjb*j@DeDs{Dzj6ngXRR>3bz;!gq*6MG`*7Vy6y4 zH#>{1yD6b66G?IRi}^v4pvOU+PUK!#g2dxb#R4wFzdIeD10VQYK#j-#{!!mY0_e=FO77ZXbNse4udqj%Lm<~+OOiW|&*aiwc#$pes14i7{BvEsDO zzeI-MpB4d^t4m~*swEY%$DWV8!dqc94hG;pJeZ$8yJ@6*uV&ckwFac<3{kq@R}B)C zkifOtKXlM+jBn=`<8i+@9Deybi@NzvXRgYm)5mRVekms)T#BLjCt=8?Y@)nxZ(I`( zL?W}dA37|Xp7-+m+P#k#kurw{WUWsr82>g6*L~AZiRsIR#0XP=3-J7x zbaVm}1nu=W{abVCZ>>^*elsFh5R|RJOj%zF9mObIrGWW=P4fO{Cr?{Pwu1>R4*HY4@%{ zOxEdS0YD;@H5)o}R;ip9SnE;u^;=Q3%G2+{-uAs_*l+KZA-40+{Kfy6 zd?Kp>;v*TbVrEvsOhgr>FK7`*UdBxx*M5@TM-P&>gEx{-Q9-wdj5^_$&wBO>F9oK(cE;B&da zGOqG~+|jkB(F;bke6l57o{8ttHDA{MMti5S7nA;5p5NpszS0!9`2P7IJH!#eD_ zU2t&Cb25Vs34U&Z;sX+OXz{}z!%tebZ9GG<>sWQsai4Fu zYB)kEuj2u5kM8#PdRW)T(%y02u;fPr!h@L%XoxzK>;=%H9J+muk@*n$dL`uxEU+^v z`BqOF!dVXQG$~q0{xMMGAtd)KMRbEfUvh^Jg8yceS{M=;Y13|?e|9a|F1Y!D_?7L> zeBb^QDv8bvIC@xZ_TC?mEb8f{W#N1(o_lIUZu%kDuk4Z6Wu~_|>Pxu!s;K^D=i_ka zeQOSKnEXvszpNo<^M+GaRpRBYTe#7>6~4Eqa86bZh?7%btdgmFcL+`xV7bG;*TrmY2(StPnV(bX zsTr$%wN&i5Fw~UonEOST50H+d-ApQo8}`=o;1*DQZx5Y0Ev%*m%rJefed2aGU;sst zW#C3mAa>de0KfG_** zjK5-^lL>6#|6LcQh@^Yze&G~gM7=|K#y*bCgwE8M4&tEx&X1l?@w~jdCEtQu==PQN z@>gsu8Nl*G-TK@t8YC?8>@EH4f9emoz|umONXNijj31*~zi_)IaEvOX2){r34NW(G z^LJ+r>;_aeJOcPFU(+iEi}|k& zwHr@ME5&Nm#z(>fs+~(1?eKWqS?Kg%hZWWi(jspeB1MA>EzSqXC2td)ODL?_B^q0Iohsk(z7 z3@`r78C@i81rIaLh56>$#@A9oS}KO60J%|ae4Z>dX%gPK#9kg5Tl5f+OR&pPRM0pfjjsh!gnVVyk5XhwGSc>=nrNR6 zOIt@>!P(fhxZTHG#vQQ|gE&+iRTA@PQnGbtralqN>TQy`s>9Z#{nr95|uW394W#cHeyzh>kn1!i1wh{6UolIC2&H}<$8Nsa@9znKop5$ zhXiu0kDU%IHgGh=I3z<9UMoR7m8>DDjK%j6B4UNvI6L+gvxsbz3gpcnsI7W&-J4u8 z+ttP=YEEc;ke|H+VjlEqn^exDbW#%>oMC!p7l}hMS@JFgy%I+!Zj5U*p~al448@3P zJH&nz49MP$bi$d75B(X_`v=A3BUpGJmWi5YEz*DOK%!^cCm`cW-Jz4IBkQ(|yeL7> z7NZKA=g`TcNhwrWRtCHRh=*~4`X8Y!vH1=(djoFPkZOLOZ=ah5dACz79w%f&5*Y2Fbn(4D$s zm*6C`aJ}S29V9WHUGy8~+8?(4;Mk(GA!KWBe^k*f@$lfM*IB;`lwu~tgtio!xo3|Y z-Q7V`cgUH|q@`%7Kmth?u23^%U*YIe zO|D|<*ptupJx-91*_SWt;LaS$r-dlw{gNc|cnJ56lV))V3meTL#YymM2xWq|A z0Tx-z+c}qHM^=zv?-<+Fi%5gE7huaqPZc*z*urr*M1^~QNP)jX#j7pt-*2Px_pKJXA$T|j202f z!KhO<=N7n!{OsiEvRsF+!1DU3;`2q`3T zAbXMljOnCP%?V-`JS#R4M{cpGUWZ5JPrC3Y?PaD#tCTx+T=;q1iArcFYv-0o_ z4~7ylWjD2-+JOh_f7@SH^j)_+D(89~mHTZ;EI)rqY?1!)jrJHzd$(zXPF0b`kW7>N zLn-Lb92$VrrJ4j}XC`4x`N{YZ_|Q|h-By$O?K%C_u-C-;wr_Ku4yIu2%jUT7(gzE5 zSK+DOj|E5a4egG-Ga3`3?+uzz zjWhdHAue%bvK#}9GfQ3)589DSrvB`EoWVi9u{ zgD<@S{pQfiu+3S~#*sCBH{4$t>!+#mCTEKZeK<`Gmgy$+qr}DPttz;p?Zn5@dbj3& zE?IxCl6qx!I#v=>`r0(~?Watqx^pZP*3iY+QHzScV*JMO$PeShEnstVY{ zi{>7HGme?`o$K)zG&}ZZs@VAo3wV%4UWc3`aIL}QQvwdf)X<0VQUJXdn*fMCWeeZTlrFQntc9Ox*T{#=tyjc@bgWlT zDa9k0nkx!&rXE*Wq0dOFAXx9;qqFGZze2s`%E;I`T|k-J&h)q0T8~6y#FmEHA%*s)`eWY1P{u>d3+x z)>TQ47b)Ab7R5I)#1+3^li0HQ%(^l{ZA%N33|?srJ+Fwb~s8kOVp@HTCGO`DP>Xtpv$K|e5U=P^ui3#uJ!;WbDW9J_K!bM_MxydJh~%fx zXW5kLj&N2<+sEQ0KpTNfLu;eYx{Rvp;2^#o>bW?CXL8Hl3Fs_qj^sFv_ya z#yKh~t%`cUn*8U8Q7tWi?b-Gyfyz|_-y9b;jk0XMIf=8er~%y2*w8@2<8EPen;?oj zNBpU8ViJ?~wTZ9U6Y}w8qDSbQ5(TYLrw`C9Ct41cFJv_+`Z`2^=G5nsnhpYwEHI#~ z4KEODoX^23ddrBn3_d98dqeedKW}a{fbx`Sbd9#WiZtdCANcQ|6_Hny^B5Z>-lX{) zhJY)k20fZo=HXrM+zDwrTRp974oJ40d6kt#gNB8w)`tMYTwEGomg;GXde&{MJBRk?%T`7QV`p>qn4-+aqxp zAVrLN&v#w)ys+z>f7Z5+Nbe5q8M4jpB8p@b}pwG#gJeA z5aVDmc3N4cT(Y*>clE=xwX4{hahk+*`?Fbk@nz`Xi5$&|JJ5n{49n89IEP%9@i2hG zzeo>P2#2>ehORI-5?1R@E8hC2rnbM|Jx0>c-8OD0o-S!Z-vF`7 zWuz;PnQjYZW8#oibpwi1#H&16cpUZT(?KdLD>(Y2Nm$I>*@Op%V-eT6NUgJzAzW@Da#`$OjC{Cpef+tsiGp3<1@>$Mv1~$ z(XV9g_hWDtz*nN@m!5>GW1~LAOjT4lk{!H4ItZ=;$S>}tf3S;HVLG1)ck& zE}uyUb5sm*Ib<0?1qUV(v|f zCrMrD;$0?ZkR~8V>SdFiFzrN@mX_i%ADIv$X8m+;iwwM|W&hU(^_Am{g%=LG2P}ALE7Ue<~+YfPm03ngr&9xGZ z_?nT1n~f7zBEQ>_WxZ#CF@>#<-fMXV(hA63gTjlG?fQ&laJD9?!ELfvRDMZKJrnm* zWe3IE4B=N|-e_Kr!$i9#CL+1PmxQvARm3%Jnq#-AV2sIP(w2pl3B0NQQ$y=ej*Jid z248P!giO$i%lA>G$`m8{Z*+hLsJFLWoVp*ACdp&_77nk)2MrISVz!IijI4T%;H@gR z=ml>GURs^Ey8t9TR;D*OXNTm(|K6B?rl#SV2jS<+Em(Buh291IMoi$5<6 zPXKh@9ep9jyMV}iw*wu^5YHv17{seAwlvnbGP0qAZanF1H!Df6JLqhGC?sDNb$I#r zhZUq&j&wG-?d2ymj@iU*mD~EsZQ8tcy*wYjr5<+Xs#=Lv8Y^I!q@8`LJVRVag2Pj1 zPfd{B)4DvKW_v>)Fz}veX?wRD@jxBxYeJpkhRmR$HqJUQKyEY(L#uAo3_esqj1AM*W530k1AS8Iy^7B_N2M#;8TjPsko>l|k*4&x3Nh=RpT!9NY`X zE0cGiit_3LAA9ZBY-e=)a-OuwXuj(1Y&a77KXN+VK2|8_C0^26Us5cU{i8+VOcBNj zktuE|VX!W@`S4Q3$!SQoEZA9Qn^5-l9n~|IXtIiu#ZWONg_rpfeW@>4F{b-}Z$Ml^ z4a&xc(8VBP|H^?1A*Q2P@^CE^J{A*T&uY84nyspExfE)~guqQ~G?CuVEF9WN-EDpFIbtYPJ zkme5Am%C!%YBB6F1lgLsEnM;v6g(!wKbXtq-f9Vcp(XpK@kY!bb zk%K~($uc(URVSdDv6<;_X>f8>IeOba@>v6Xn`%+$_{0?+_m9QV zlEC1mO#^P+?c21l_C#mvZ))m&_zswsRE$O;{~}p|m4+_7yxdSiCfSkNgm@19V?bS9 zv%ehnhAtz0B2aA-U?fBQt)SMt#75r1!NDfJ*YPyy7_}dUx>f%Z-FqH*kT8Y#hx6&4vpW*` zd8mgW(pb2@6q}P*>;qUTS8Y8*}Xz!55{GA2#sJkNESd%YP=|W^NwS6kfY< zEXs!vNOmH{Z(t3N8OHdbSD4)JE0EZ+H3U!TpnI)uJ_oyrM7)@B(gx#O9R~0p3zW1q zG;&shWG=ejeK;oOm`X@%)-%nXnImVpt>lB^*0mKw7Ci%pu~BQwtQR`V3a8PVdmELC z05{XX4rhnU`I-muzasrp|4sDQi_2nXnY67f4w z@e4#{Y7YhxwwHnAE;Wvb%H7s8(Wbp4tHx^`$_kUf`lWT6x}VJQfu~`A)q-LZJ>Ci4 zI0K99Y0F2b#cTIck_)06${d>3Plk-${o$o4OS~ljLv~wNcQZ>fr;CK(0u&g*fnLI( zCQrvQ(a8{hz}=|xLp)$w!jTF69k_ba>m7XY+7`{RQo7uJ#W+I$NcXCT`*``G}Rju?E^&O{rg(%O`Bd5nqCpjTYd|v2<%x z<|%~4$gs~*_``izQjN{3c};UfMA985kG|yoMA>jgKa{B$R*{$V zT@eM2T1o-ZwqNypAY?*O@nesV0|_RaoF)(5e0HyvG2NZpU$DMU!hHaqXRJOw148sX zi5;b3&je&38suoji9bE^c$*)<1;@sTpsf4^@$cWRUx&ytUg$(db~*VSRTg6nT^wBMCOi2Uqoup!#^T0KNP;m7^m1L%9rfX4itpr!83wDc{=;7W0PxxpYX0NLbG7-FPI3t6 zm{XGvTo(v?@oYPgp~U`;QlpIb?H+jjv^ENr8?jZjlZu@=6I8WdKS#54JmMBf&cuMn z(E5M0R}TDXxMHnc|53EI?eH~7k%ZcM)v&qR}zhQPh;eDGjkSHkz8L{~}#68T8% zgo;1Cf=h1{96YhNX;=OjI^yXrN~OZsoIpb3qUd$$OUs0@$X+gOmn=_=qNR>D6jJ(j_TW0yC5$wa`8-2I4x*z@qCe? z&}9=jGjgMv?Z3WN)zP^%y*29&s*{nbb#%NqbH_133=qs!akamBUmDRa$xf3K^jLvy z*}&xK|ri7im<47d|;U zItc{44iWUk`}kGvpukd9irB@$_GnM$%we@GxS&J#@ST>ZPe5Qt6ECuLJQ@JW^D9zV z9K&|ptmah~=l~eKZIC10&gfyD(Qh}b(z?UG#rmKRj*?QoYy1SMZnF>V3H*2F&HMP1 z-235SJBmbIghpZKN)4R>6!wrCsG%9^YOZ*&PLFp?+|$Kn*oC+l_!TJbF-XRnt@Pa? z;Ns4TZm={;>a1>_0QAp2M(C)DhEAVO;PIf`U-n`ODXeuY2! znh5kOxu;iLJU<{Qe?TXYDu!C`O^7yCOE9yp0~k`{%6jy#S=Y{i72DB`{e0(~vW?>A z_dw04_R?bWybQA2o&38ob#&IZ%kh%_b?xY?$D46&ToAZD(PC}>3x0Q}U3;cV>H(B0 z_Wjh`1OHS=k(TX_^u*fGyZTaM6Qxvnrnjns`{yf20H(Tg4=*(U3dyzjP`&%|>jPT{ z49bBvdgcxPM4Vu!7JuqpsIA&KRF9uY@kT#X4w)*(*y_Cej6sJ=q0qK}w}NW*$rt`1 zT;BBfx+N;4fXi(u3DFJC5?||Ftg3Z(?p>_sJrE2TbN=-9`|0WOl2;ngZfEX^-WKHn zRzmvrz(7~a?E&eU4QK=^=0l%E%6mMYT%Qpm45DKT)fnkh{xBfR4zA?lE`!Q^0CbS= zfryQD@aQN3Nlk9<8!fXQY!68TJv0Dy5I5wMIAW>wC4<^{uy62#H7;kIf0`%pYEb?tY3|qaJ-(jw6H3S;RaT+9|t2VvB_X;w8$8*`@i*eauA`b<28UJ>(D5 z0#%b^o;q$UD8lY~*H=n`yh+awzR-hZjl1#^j@>n3f&g^!+*F?!iEHQosv}Wl1d>h5 zN#QJu?PDG7z@BonI6(KR3|arRZz4;Y#bhT(SP*Kxj*|8;Ei?97(hp(Eehu&G`P%~@ zl0mAj>gu=p2D&PP3!ZZ4=ePDO@N@a0qRPjG+gd7`dC`D9In>R_#my)pq{D^0q$t%} zN`?MNn;tj<@t2E;)a2n1OoGRtZboE6Y&hc`)o3AFi9?F$a=!a5Qn9-j9ALGxmi~#E z9=h?ZA{O0~1{b{yBPf{OBCy^z6uGa>3O#oMP4L4N_=qO1r&rZJFjjY(bib#cbTNl+ z{j2;);f=*#94W=C$=VC5=Xi+8-&5@QINy^J=U)>3>?-w#iZWL33;dcTz5AA=%l>hD z3Ke@RXASJ*gv(}-Xs9#l*7FbHQLJAUlRtUq=8&eftJ;~2loYZE;{*KI`Kf@~rPwJy-#U)a%1KCZ%EUhWaQ@te_^ z-H-VD&-ReOf&)dxNB4}~K>k=$sp*m!{)%Uk>|v=v(pKcrl5uC4 z9+W6(E3N+Qa6vt8gbwQiWRQROm*{ZMJueWV9{3ipU?CM*@Lt^R@WOaJ=Or~dHe2U= zU|w(`!Q4-HBmgVv9*z~{w5ku?vNLN@4x-^Ey}PHo_Ug5s_iZx) zMu&4`5j*#36OWpghd~oXQs}WAymUNHU&Zwzpr7xA$PF6wJ zOco{f6_e6%SnJFch5 zM`Ntk zH5qp93Z6Z0tc{Nc=Dy}A78XW$hpvogJHU8O95$(~q5(}IN}KQ`Rf8TPK>&X-s3oa8 zlI`s8O!I|&?H77R2)RCH*WHaoFm+uOKT#Y_##%q@0Jx_!UO0;?gB7is||>Xh>?uuv7|XujKWqVf^04 zVO6}w)KPO=V-CxmdcRWBM8WR4VqSS|Toebjyh8<8X@#O}*oSllnVpaj$>EC_%XT^b zN)Mtq0xI;CcZC#loQvMx{a>6Kw5!n=AP-w@4(bgDl<@Bc5I_m?t@MjZQCNcv8?J5L zb`-NKv(SxNV>bc{8>BEa&$nB*MovBS!*awwfHgv`R7RD?19iqCk&%~;5-KkWgkg4l zn-tE=j=1UUz(t%6MlS1X(%={?3IL3|aE*B0iTA~gu!zP|21 zPEOKNnSCmbuv9Y-O>oP9X)I9xh$`slKD@(Bc>%h{Ex+#hg;6NAAqPP`(Rh6HxE6kO zE@|wVK@nq0j@S!Y)OmvsPzu=Ph#)=N|ZTnkJDd%yy1K8ob46H4X7UeqrRguY%4y>!i=Xpk&CLqfd-*SV*iMmD3;mE z>~|)v?MCalc;mA`uPJFCO_M+ySSHYtKb9x#46|?B;BZS!b%{ApaPab`@whFSs|ee3 zoKyRiaTMz4JmuLhUuRNB3nzlAD!2D2_cM)r-nC9$tYEOI(1%4ijYC%R)9^EVsQ6Zvn6u;)7J{m@9t&Z44H8uyG!2}MY7 zt9UL(dnBwwQgSUWrCCa2Ya|LeH~^E!y-uspQFGE2l3bu|dE<|0$JIUVLe$zu<<(XU zFGxlgKOTTPvJ(sn{bf#+5QGGoD<+%iGnOTS5=kQbwOW0POvI;EBgJa@5VFUt!Pus+ zl9sL^L!1O%gT{NI*Ie){sbhP}AD>REQOkHWn@HRdS!|ozxO#$0O-#3(Ki+~wo2o?f zD&0lxxd%f6#lvB9(8rdcsu6 z)JKzUJLuVZi2gerQ@kMArYOI{lVc(&>jhTa=L@^cFpo(8Dls0l&(s?j4@?>ZISonU zw*8hbSD9ap%>XS&zZ6SjKA{O zx0dg^J#?`mv@g!%BV~RrnO6SC2{z1+TWPC!B+D18Y2xXMVL_x3{d z>qrNSTrTh6IhqLW!wkjyoLdvnjxSDuXe*t-06RWLj`F?egC2YQr%#Erxqj&OPCMy# zeuUA1(2hV^6gjmkMQ}5_j1QOL_QaGTO!;y7FJDr^jUel!LJ+6cQu}pf!;hUK8OHDc zPK`m0iLCujgWUtd%FWOHtPAM-PtngM&X#u@jXeh@NAb72^51>wjH+)FpAwQ)B{R@E zOAgOl;>f&BS#ddX?lhxLjqx1mG_)xhVqr>#x(|s&pk)w@ma)Eh@3}v@70M|u@mFZj zK;TO8X{hplLgPF9adg0YMBXN6F3SkW0M2=>8aE0DH&wZoLQxkF7)CV3 z7UZrHipxZ4uZkN5+R^GtYWGNK4U}0IA=xPJQ|H{y zBG_E*pks*LO34UQ21Nj^SS*5_p@@1lw?pf7jXy-eP$L-+=06wTI+D6zVY?C`kf|vt zJ|Di6v*?(T*FX?!?&UBXyB;jeH&x^pb55)n^wguPZ-q;|zuX(AKXyLvMgP)Dt0`$tk6HuFqyHiFrj`5$g zfos}8jb3>owijX&#Q_CqzaU}``l%ZG2juVy1_JvKBYp(3xB@KurSPI@I z4zbii#zSf&`JK*$gU6i|yvOB{MKUen?3xNiisvW7owNXnghnFgLwHib?c*ewgiT^N zr~qUeekn}mN4uaZDAeo7*GKyZ4{5jm(GSm;;fFM|aG+3;)4bu5WT zdwTM~z`zI-9N2Z9wszy?tp4Vw?RI^x*s>j^9?H@Z+IhQO;O zcY&t=8kg6$-CZ;f8aq8>r_EMht~f;IaFUF@k^!8{HLc-0RQKqyz1qc&%r%&*2ESWG z!D}k!{yYj(5{S)JwMX}n+-;I}Adwy~z$(nzQ5 zkm0Pyg29nZ-IPM3G^LN#PR>T1ap$$}$kS=h)D%fXCvvtA=;%=3cC3M% zS?9KIwiO6ftw2$>(~GR|+UmgD7O6m9S9-%mp`d?al_hx|gJS9w5m+IGAre?(r>m0n zDSLrmgg)mGUF0yf`~>@W_^j*sNf&NYCEFtrabY>>AcLAQPpKz(##Gx3oBbHA&L&8~ zRGMQHl<_=9Kd|N#6grL3QWy~=D_}eyQ7yLf`v7Q%Z9@PVNOa|ov?*p6P& z8=ngy(Gg$C2V%mHEk^=CIx8#t6olg@Dh6j|#?(|%=vnsznLin*z2>cu%i*rc1u}M2 zUFnKp_wp33NA|sLp+fQx)htBtBjE7|q(@F3$CMH5=IRp|k^@Wv8qa=mr{1cIQ|XNA zcm6rduF`B;=6^p(l$aZ^|4Ppa$z?6kKUCo*w`r@a{6?UG^_CZSXZ1QoO%8gb2CIojSjb=X>4bfQX>+spyCoTHQ zoP8pTbc*;(p50e5fyQeGlUvZyI7p#|Oottd?S1mtL5W029G|A3{5OW%!N(6P-;%9O z7Ad~pwL|JOvec%IuCavN)GJ&(!zyAotB0pxVC1OEVL-y>+4$ZcUE#)XJLBA) zAa|e7TOB@<7UGSZJd@9%^VweW`&cnOJHuu0xx{QZ)5ik5Yo9n#nk9zdAGPiye3kfx zt#N9j$zchXllU~fj8mZ>1JHlYb*0@=GNI}jFO4q_uK=I@R0>EB>uV+*(*Pl* z0+$8g1T33VtVqk6HW1XoYR!2%!ta&+(o%k%!~y|ac$+|uF_$aB zSJ~uU%f*q(K?bB7Q@IZ?#Ic6PJ2rxVqx{apYY8F70a@gZu-YXjj3H|PSd{~`6*U^I zZ)$7ONp4>GH$6(|_Q{I_(U+N~>+IdVMGmj^? z(F>8v)6MY&d#HP-OsBLkZ!T+P5U->NEaZKkOdG9=@ReHFAVs652L)J>cR_k_d3K46 z5iU*>s6q6BoRlg(e}T(*pcI3&x$S=B+vB+tmdde4_1*xtCE@ppGx1V%{dp#8prVhW zG}*X88nykrx9>OgKw>bwXFI(7!Ou{AO`6;Z6!*mZ`+|d)Ou0@}RIRFAeTU|a{7(hu z1NPtWQMe_M?(ypzC`((QX4|-L^s_g1xcrQJURA9R;D;Ggu)Ks8ixsg4_JV|%aI%7+ zXL>0o`TnH&Yx|PZ$NF+?QV=EkV4*++?rt;rhGWD-kyJ;)WvYY7mu1D>^5=#HDCx&z zH>=oQ{d?Zn!K=x6qcTJ~UoECSlZ%9%3AudY(uq}LR}_(B^1x!HcdE6}IzOe!P7$I_ zOP&1@62}r1X8K($w5;NiZR5r((YWT7ZT2@U>bSxOR;qYY@1+*+hRTatnW8(WR#A}; zB~-Fq#;)1NzM;T*Z9wjDr5D2fiqCn-FnuQesYG0ApTE)D6+&JqXoI+j&kELg^zj2p z(Q|6c^K!>bd{3b-b47W^WZP#;5{Cl+?C= z;m9*uqBAGHr6O}E>uf=tOf-kyWIedB35+ON#_hEaQb8;m(#5%stu*IXdK~cL9rITz zh^8gwOfY*5DQ>6z)hl%@8F3$IA%FZZB!8G~QK1ncjLNI92I)wv9qed5EeCvGP6ctk zI1kYtc@ImHIT6Ayv5hTKavu@}l$tGZfE7dzys}HPK4SQG^mn?`Vh)4TI>0hFSc_SS zom04;Mk$p-QJ|W8k0NCOs9Ru>@+M7R{6;|1jtuZk1dL{VeJ}Jn70d0qL{8qPwBdh7ABqr1+x7fF?-aX=&VJq|v_+o)eS4y$jNo$rKF? zMAkS;7w6vQyxSNfp>_7Of?e8i9Js>e(7_|iAxE*rUh$CQaXGhtrej;^fL%MVpC+%Q zPr|UIPa$js9FfSY>O1K$wxFh@`v56o06+|XYFPFQT&jzlZ8k8vYu2|M;1}PnpQJxI z`R%@Z1Qie~>7wnnTyBzIW&`MBz-}Nky=puBcTe#|jYRO^46A(;D#>G`B`C8khpbc{ zcH_;JphLa;)fnwtdUVc*zb3^w{3C7|7v~_oD2ffLnyhABA>b;t;{Jep13>09X&8rj zaRfijRlupr`64do#^Fv4CBnB`t|ktI@#uxf2_7p`At|yxJC#*fvQ#rR6lEycJHUw9 zVI9-RF|_Zc_k|2+T4Xv1Woq+!#}*Y456+HWTZe2NW@VI>j3#5}(a{7EQ>0MDbM}9ENJ7y3f zO;8~dlu?u~OijV{QzaP{UP2&@W`aw)o(`|qDjqwX%}zb%M{0^dq(p)h!jMIZTbPk< zyy2b%gNtngRU5eUC#g-YV?g_;Wumx}y?_xhqFvT$vr#wB{yj9cXv@54=?Yuun|+? z@SjliS-M*JNal$TM60A+vRDcrz=Ox{a&WU^ZR_gi95oK0ZrWUGL;L{tk%kE&PRqr=JxGX>=+qY$e6ZxeNw^9b0}w`P1C#0Avjhr)#dOrb z&7k1VwrDCVUk<~Nr{bb`nR32S7e|JfMZV|`*eqoy4pMT+MlT@Qu>wvB0w*&_2PI*v z{rS-NCv5H0=W)UZ`rqxFO-Q>8z)RiO=8ZhX0~FE7bqT@{O{@q3xyA!-I5dy-KR};0 zZ;*~Amd0HD2S4{Oe1P+MI$OX!s=)2_VlXeR=0W-4%T@Zz{Ay%mQW@k#wU%eIUp*hJ z!bA`FoK@(bIIrf1yD3}~4oa~k$70__&L)%vxt+h6!LpeoKF#_QQjEhetXE_I zDh;9fGVW)-zKz~Qn~RSX*@C$(Ztv!g1~%YQ-u4eiG>kpt(Rt7zlA)SPH?^7Q+s;aX zR=b%ErL{D*aN3NJF*Rm{%K3h^&oA${80!7!rFY z?@t1b7Db%v2p&?Qw?wC$%EoLoGyv0x6N#tc`GW=UR;*A~tQs(C3oep;I8%nnhtujH zJ{jU3|IwR+#GQgXFj|3U

      _C~zIo%mJOgx=AE`E*;q!x_=pZ;5 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 z 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

      }l2UPG|NUTb1FnM#$K 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

      9ooR*Qx~ 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 Date: Thu, 10 Mar 2022 16:20:42 +0800 Subject: [PATCH 350/374] chore: update i18n for open link words --- Localization/app.json | 3 ++- .../mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist | 4 ++-- Mastodon/Activity/SafariActivity.swift | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Localization/app.json b/Localization/app.json index f8dc9d811..f0dc0ebf1 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -552,7 +552,8 @@ "true_black_dark_mode": "True black dark mode", "disable_avatar_animation": "Disable animated avatars", "disable_emoji_animation": "Disable animated emojis", - "using_default_browser": "Use default browser to open links" + "using_default_browser": "Use default browser to open links", + "open_links_in_mastodon": "Open links in Mastodon" }, "boring_zone": { "title": "The Boring Zone", diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index a5d4f6d92..8fe81456c 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 21 + 19 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 19 + 21 SuppressBuildableAutocreation diff --git a/Mastodon/Activity/SafariActivity.swift b/Mastodon/Activity/SafariActivity.swift index d2c7b9246..62a193eaf 100644 --- a/Mastodon/Activity/SafariActivity.swift +++ b/Mastodon/Activity/SafariActivity.swift @@ -24,7 +24,7 @@ final class SafariActivity: UIActivity { } override var activityTitle: String? { - return L10n.Common.Controls.Actions.openInSafari + return UserDefaults.shared.preferredUsingDefaultBrowser ? L10n.Common.Controls.Actions.openInBrowser : L10n.Common.Controls.Actions.openInSafari } override var activityImage: UIImage? { From fc2300804a985ec7681829c4c63eefc482075782 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Mar 2022 17:11:36 +0800 Subject: [PATCH 351/374] chore: update i18n resources --- .../xcschemes/xcschememanagement.plist | 6 +- .../Resources/de.lproj/Localizable.strings | 58 +++++++++---------- .../Resources/es.lproj/Localizable.strings | 56 +++++++++--------- .../Resources/gd-GB.lproj/Localizable.strings | 56 +++++++++--------- .../Resources/ja.lproj/Localizable.strings | 18 +++--- .../Resources/th.lproj/Localizable.strings | 26 ++++----- 6 files changed, 109 insertions(+), 111 deletions(-) diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 8fe81456c..d6f875774 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 20 + 19 CoreDataStack.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 19 + 20 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 21 + 22 SuppressBuildableAutocreation diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings index ea39f8650..8808e8d90 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Zwischenspeicher leeren"; "Common.Alerts.Common.PleaseTryAgain" = "Bitte versuche es erneut."; "Common.Alerts.Common.PleaseTryAgainLater" = "Bitte versuche es später nochmal."; -"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; +"Common.Alerts.DeletePost.Message" = "Bist du dir sicher, dass du diesen Beitrag löschen willst?"; "Common.Alerts.DeletePost.Title" = "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?"; "Common.Alerts.DiscardPostContent.Message" = "Bestätige, um den Beitrag zu verwerfen."; "Common.Alerts.DiscardPostContent.Title" = "Entwurf verwerfen"; @@ -94,7 +94,7 @@ Bitte überprüfe deine Internetverbindung."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Favorit vom Beitrag umschalten"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Teilen vom Beitrag umschalten"; "Common.Controls.Status.Actions.Favorite" = "Favorit"; -"Common.Controls.Status.Actions.Hide" = "Hide"; +"Common.Controls.Status.Actions.Hide" = "Verstecken"; "Common.Controls.Status.Actions.Menu" = "Menü"; "Common.Controls.Status.Actions.Reblog" = "Teilen"; "Common.Controls.Status.Actions.Reply" = "Antworten"; @@ -114,10 +114,10 @@ Bitte überprüfe deine Internetverbindung."; "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ teilte"; "Common.Controls.Status.UserRepliedTo" = "Antwortet auf %@"; -"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; -"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; -"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; -"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; +"Common.Controls.Status.Visibility.Direct" = "Nur erwähnte Benutzer können diesen Beitrag sehen."; +"Common.Controls.Status.Visibility.Private" = "Nur Follower des Authors können diesen Beitrag sehen."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Nur meine Follower können diesen Beitrag sehen."; +"Common.Controls.Status.Visibility.Unlisted" = "Jeder kann diesen Post sehen, aber nicht in der öffentlichen Timeline zeigen."; "Common.Controls.Tabs.Home" = "Startseite"; "Common.Controls.Tabs.Notification" = "Benachrichtigungen"; "Common.Controls.Tabs.Profile" = "Profil"; @@ -206,12 +206,12 @@ tippe darin auf den Link, um Dein Konto zu bestätigen."; "Scene.HomeTimeline.Title" = "Startseite"; "Scene.Notification.Keyobard.ShowEverything" = "Alles anzeigen"; "Scene.Notification.Keyobard.ShowMentions" = "Erwähnungen anzeigen"; -"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; -"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; -"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; -"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; -"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; -"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "hat deinen Beitrag favorisiert"; +"Scene.Notification.NotificationDescription.FollowedYou" = "folgt dir"; +"Scene.Notification.NotificationDescription.MentionedYou" = "hat dich erwähnt"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "Umfrage wurde beendet"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "hat deinen Beitrag geteilt"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "Folgeanfrage"; "Scene.Notification.Title.Everything" = "Alles"; "Scene.Notification.Title.Mentions" = "Erwähnungen"; "Scene.Preview.Keyboard.ClosePreview" = "Vorschau schließen"; @@ -223,18 +223,18 @@ tippe darin auf den Link, um Dein Konto zu bestätigen."; "Scene.Profile.Fields.AddRow" = "Zeile hinzufügen"; "Scene.Profile.Fields.Placeholder.Content" = "Inhalt"; "Scene.Profile.Fields.Placeholder.Label" = "Bezeichnung"; -"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; -"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Bestätige %@ zu blockieren"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Konto blockieren"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Bestätige %@ stumm zu schalten"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Konto stummschalten"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Bestätige %@ zu entsperren"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Konto entsperren"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Bestätige um %@ nicht mehr stummzuschalten"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Ton einschalten"; -"Scene.Profile.SegmentedControl.About" = "About"; +"Scene.Profile.SegmentedControl.About" = "Über"; "Scene.Profile.SegmentedControl.Media" = "Medien"; "Scene.Profile.SegmentedControl.Posts" = "Beiträge"; -"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Beiträge und Antworten"; "Scene.Profile.SegmentedControl.Replies" = "Antworten"; "Scene.Register.Error.Item.Agreement" = "Vereinbarung"; "Scene.Register.Error.Item.Email" = "E-Mail"; @@ -271,15 +271,15 @@ tippe darin auf den Link, um Dein Konto zu bestätigen."; "Scene.Register.Title" = "Erzähle uns von dir."; "Scene.Report.Content1" = "Gibt es noch weitere Beiträge, die du der Meldung hinzufügen möchtest?"; "Scene.Report.Content2" = "Gibt es etwas, was die Moderatoren über diese Meldung wissen sollten?"; -"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; -"Scene.Report.Reported" = "REPORTED"; +"Scene.Report.ReportSentTitle" = "Danke für deine Meldung, wir werden uns damit beschäftigen."; +"Scene.Report.Reported" = "GEMELDET"; "Scene.Report.Send" = "Meldung abschicken"; "Scene.Report.SkipToSend" = "Ohne Kommentar abschicken"; "Scene.Report.Step1" = "Schritt 1 von 2"; "Scene.Report.Step2" = "Schritt 2 von 2"; "Scene.Report.TextPlaceholder" = "Zusätzliche Kommentare eingeben oder einfügen"; "Scene.Report.Title" = "%@ melden"; -"Scene.Report.TitleReport" = "Report"; +"Scene.Report.TitleReport" = "Melden"; "Scene.Search.Recommend.Accounts.Description" = "Vielleicht gefallen dir diese Benutzer"; "Scene.Search.Recommend.Accounts.Follow" = "Folgen"; "Scene.Search.Recommend.Accounts.Title" = "Konten, die dir gefallen könnten"; @@ -339,12 +339,12 @@ beliebigen Server."; "Scene.Settings.Section.BoringZone.AccountSettings" = "Kontoeinstellungen"; "Scene.Settings.Section.BoringZone.Privacy" = "Datenschutzerklärung"; "Scene.Settings.Section.BoringZone.Terms" = "Allgemeine Geschäftsbedingungen"; -"Scene.Settings.Section.BoringZone.Title" = "Der Langweiliger Bereich"; -"Scene.Settings.Section.LookAndFeel.Light" = "Light"; -"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; -"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; -"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; -"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; +"Scene.Settings.Section.BoringZone.Title" = "Der langweilige Bereich"; +"Scene.Settings.Section.LookAndFeel.Light" = "Hell"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Wirklich dunkel"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Ziemlich dunkel"; +"Scene.Settings.Section.LookAndFeel.Title" = "Erscheinungsbild"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Systemeinstellung benutzen"; "Scene.Settings.Section.Notifications.Boosts" = "Meinen Beitrag teilt"; "Scene.Settings.Section.Notifications.Favorites" = "Meinen Beitrag favorisiert"; "Scene.Settings.Section.Notifications.Follows" = "Mir folgt"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings index 3c405b666..09814c91e 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Limpiar Caché"; "Common.Alerts.Common.PleaseTryAgain" = "Por favor, vuelve a intentarlo."; "Common.Alerts.Common.PleaseTryAgainLater" = "Por favor, vuelve a intentarlo más tarde."; -"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; +"Common.Alerts.DeletePost.Message" = "¿Estás seguro de que quieres borrar esta publicación?"; "Common.Alerts.DeletePost.Title" = "¿Estás seguro de que deseas eliminar esta publicación?"; "Common.Alerts.DiscardPostContent.Message" = "Confirma para descartar el contenido de la publicación."; "Common.Alerts.DiscardPostContent.Title" = "Descartar borrador"; @@ -94,7 +94,7 @@ Por favor, revise su conexión a internet."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Conmutar la Marca de Favorito en la Publicación"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Conmutar el Reblogueo en la Publicación"; "Common.Controls.Status.Actions.Favorite" = "Favorito"; -"Common.Controls.Status.Actions.Hide" = "Hide"; +"Common.Controls.Status.Actions.Hide" = "Ocultar"; "Common.Controls.Status.Actions.Menu" = "Menú"; "Common.Controls.Status.Actions.Reblog" = "Rebloguear"; "Common.Controls.Status.Actions.Reply" = "Responder"; @@ -114,10 +114,10 @@ Por favor, revise su conexión a internet."; "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ lo reblogueó"; "Common.Controls.Status.UserRepliedTo" = "En respuesta a %@"; -"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; -"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; -"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; -"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; +"Common.Controls.Status.Visibility.Direct" = "Sólo el usuario mencionado puede ver este mensaje."; +"Common.Controls.Status.Visibility.Private" = "Sólo sus seguidores pueden ver este mensaje."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Sólo mis seguidores pueden ver este mensaje."; +"Common.Controls.Status.Visibility.Unlisted" = "Todo el mundo puede ver este post pero no mostrar en la línea de tiempo pública."; "Common.Controls.Tabs.Home" = "Inicio"; "Common.Controls.Tabs.Notification" = "Notificación"; "Common.Controls.Tabs.Profile" = "Perfil"; @@ -206,12 +206,12 @@ pulsa en el enlace para confirmar tu cuenta."; "Scene.HomeTimeline.Title" = "Inicio"; "Scene.Notification.Keyobard.ShowEverything" = "Mostrar Todo"; "Scene.Notification.Keyobard.ShowMentions" = "Mostrar Menciones"; -"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; -"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; -"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; -"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; -"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; -"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "ha marcado como favorita tu publicación"; +"Scene.Notification.NotificationDescription.FollowedYou" = "te siguió"; +"Scene.Notification.NotificationDescription.MentionedYou" = "te mencionó"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "encuesta ha terminado"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogueó tu publicación"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "solicitó seguirte"; "Scene.Notification.Title.Everything" = "Todo"; "Scene.Notification.Title.Mentions" = "Menciones"; "Scene.Preview.Keyboard.ClosePreview" = "Cerrar Previsualización"; @@ -223,18 +223,18 @@ pulsa en el enlace para confirmar tu cuenta."; "Scene.Profile.Fields.AddRow" = "Añadir Fila"; "Scene.Profile.Fields.Placeholder.Content" = "Contenido"; "Scene.Profile.Fields.Placeholder.Label" = "Nombre para el campo"; -"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; -"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirmar para bloquear a %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Bloquear cuenta"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirmar para silenciar %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Silenciar cuenta"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirmar para desbloquear a %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Desbloquear cuenta"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirmar para dejar de silenciar a %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Dejar de Silenciar Cuenta"; -"Scene.Profile.SegmentedControl.About" = "About"; +"Scene.Profile.SegmentedControl.About" = "Acerca de"; "Scene.Profile.SegmentedControl.Media" = "Multimedia"; "Scene.Profile.SegmentedControl.Posts" = "Publicaciones"; -"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Publicaciones y respuestas"; "Scene.Profile.SegmentedControl.Replies" = "Respuestas"; "Scene.Register.Error.Item.Agreement" = "Aceptación"; "Scene.Register.Error.Item.Email" = "Correo electrónico"; @@ -271,15 +271,15 @@ pulsa en el enlace para confirmar tu cuenta."; "Scene.Register.Title" = "Háblanos de ti."; "Scene.Report.Content1" = "¿Hay alguna otra publicación que te gustaría añadir al reporte?"; "Scene.Report.Content2" = "¿Hay algo que los moderadores deberían saber acerca de este reporte?"; -"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; -"Scene.Report.Reported" = "REPORTED"; +"Scene.Report.ReportSentTitle" = "Gracias por reportar, estudiaremos esto."; +"Scene.Report.Reported" = "REPORTADO"; "Scene.Report.Send" = "Enviar Reporte"; "Scene.Report.SkipToSend" = "Enviar sin comentarios"; "Scene.Report.Step1" = "Paso 1 de 2"; "Scene.Report.Step2" = "Paso 2 de 2"; "Scene.Report.TextPlaceholder" = "Escribe o pega comentarios adicionales"; "Scene.Report.Title" = "Reportar %@"; -"Scene.Report.TitleReport" = "Report"; +"Scene.Report.TitleReport" = "Reportar"; "Scene.Search.Recommend.Accounts.Description" = "Puede que guste seguir estas cuentas"; "Scene.Search.Recommend.Accounts.Follow" = "Seguir"; "Scene.Search.Recommend.Accounts.Title" = "Cuentas que quizá quieras seguir"; @@ -340,11 +340,11 @@ cualquier servidor."; "Scene.Settings.Section.BoringZone.Privacy" = "Política de Privacidad"; "Scene.Settings.Section.BoringZone.Terms" = "Términos de Servicio"; "Scene.Settings.Section.BoringZone.Title" = "La Zona Aburrida"; -"Scene.Settings.Section.LookAndFeel.Light" = "Light"; -"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; -"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; -"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; -"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; +"Scene.Settings.Section.LookAndFeel.Light" = "Claro"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Realmente Oscuro"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Más o Menos Oscuro"; +"Scene.Settings.Section.LookAndFeel.Title" = "Apariencia"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Uso del sistema"; "Scene.Settings.Section.Notifications.Boosts" = "Rebloguee mi publicación"; "Scene.Settings.Section.Notifications.Favorites" = "Marque como favorita mi publicación"; "Scene.Settings.Section.Notifications.Follows" = "Me siga"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings index 97e5d01de..be6ea23a9 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Falamhaich an tasgadan"; "Common.Alerts.Common.PleaseTryAgain" = "Feuch ris a-rithist."; "Common.Alerts.Common.PleaseTryAgainLater" = "Feuch ris a-rithist an ceann greis."; -"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; +"Common.Alerts.DeletePost.Message" = "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?"; "Common.Alerts.DeletePost.Title" = "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?"; "Common.Alerts.DiscardPostContent.Message" = "Dearbh tilgeil air falbh susbaint a’ phuist a sgrìobh thu."; "Common.Alerts.DiscardPostContent.Title" = "Tilg air falbh an dreachd"; @@ -94,7 +94,7 @@ Thoir sùil air a’ cheangal agad ris an eadar-lìon."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Toglaich annsachd a’ phuist"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Toglaich brosnachadh a’ phuist"; "Common.Controls.Status.Actions.Favorite" = "Cuir ris na h-annsachdan"; -"Common.Controls.Status.Actions.Hide" = "Hide"; +"Common.Controls.Status.Actions.Hide" = "Falaich"; "Common.Controls.Status.Actions.Menu" = "Clàr-taice"; "Common.Controls.Status.Actions.Reblog" = "Brosnaich"; "Common.Controls.Status.Actions.Reply" = "Freagair"; @@ -114,10 +114,10 @@ Thoir sùil air a’ cheangal agad ris an eadar-lìon."; "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "Tha %@ ’ga bhrosnachadh"; "Common.Controls.Status.UserRepliedTo" = "Air %@ fhreagairt"; -"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; -"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; -"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; -"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; +"Common.Controls.Status.Visibility.Direct" = "Chan fhaic ach an cleachdaiche air an dugadh iomradh am post seo."; +"Common.Controls.Status.Visibility.Private" = "Chan fhaic ach an luchd-leantainn aca am post seo."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Chan fhaic ach an luchd-leantainn agam am post seo."; +"Common.Controls.Status.Visibility.Unlisted" = "Chì a h-uile duine am post seo ach cha nochd e air an loidhne-ama phoblach."; "Common.Controls.Tabs.Home" = "Dachaigh"; "Common.Controls.Tabs.Notification" = "Brath"; "Common.Controls.Tabs.Profile" = "Pròifil"; @@ -206,12 +206,12 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.HomeTimeline.Title" = "Dachaigh"; "Scene.Notification.Keyobard.ShowEverything" = "Seall a h-uile càil"; "Scene.Notification.Keyobard.ShowMentions" = "Seall na h-iomraidhean"; -"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; -"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; -"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; -"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; -"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; -"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "– ’s iad air am post agad a chur ris na h-annsachdan aca"; +"Scene.Notification.NotificationDescription.FollowedYou" = "– ’s iad ’gad leantainn a-nis"; +"Scene.Notification.NotificationDescription.MentionedYou" = "– ’s iad air iomradh a thoirt ort"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "thàinig cunntas-bheachd gu crìoch"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "– ’s iad air am post agad a bhrosnachadh"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "iarrtas leantainn ort"; "Scene.Notification.Title.Everything" = "A h-uile rud"; "Scene.Notification.Title.Mentions" = "Iomraidhean"; "Scene.Preview.Keyboard.ClosePreview" = "Dùin an ro-shealladh"; @@ -223,18 +223,18 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.Profile.Fields.AddRow" = "Cuir ràgh ris"; "Scene.Profile.Fields.Placeholder.Content" = "Susbaint"; "Scene.Profile.Fields.Placeholder.Label" = "Leubail"; -"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; -"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Dearbh bacadh %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Bac an cunntas"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Dearbh mùchadh %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mùch an cunntas"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Dearbh dì-bhacadh %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Dì-bhac an cunntas"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Dearbh dì-mhùchadh %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Dì-mhùch an cunntas"; -"Scene.Profile.SegmentedControl.About" = "About"; +"Scene.Profile.SegmentedControl.About" = "Mu dhèidhinn"; "Scene.Profile.SegmentedControl.Media" = "Meadhanan"; "Scene.Profile.SegmentedControl.Posts" = "Postaichean"; -"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Postaichean ’s freagairtean"; "Scene.Profile.SegmentedControl.Replies" = "Freagairtean"; "Scene.Register.Error.Item.Agreement" = "Aonta"; "Scene.Register.Error.Item.Email" = "Post-d"; @@ -271,15 +271,15 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.Register.Title" = "Innis dhuinn mu do dhèidhinn."; "Scene.Report.Content1" = "A bheil post sam bith eile ann a bu mhiann leat cur ris a’ ghearan?"; "Scene.Report.Content2" = "A bheil rud sam bith ann a bu mhiann leat innse dha na maoir mun ghearan seo?"; -"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; -"Scene.Report.Reported" = "REPORTED"; +"Scene.Report.ReportSentTitle" = "Mòran taing airson a’ ghearain, bheir sinn sùil air."; +"Scene.Report.Reported" = "CHAIDH GEARAN A DHÈANAMH"; "Scene.Report.Send" = "Cuir an gearan"; "Scene.Report.SkipToSend" = "Cuir gun bheachd ris"; "Scene.Report.Step1" = "Ceum 1 à 2"; "Scene.Report.Step2" = "Ceum 2 à 2"; "Scene.Report.TextPlaceholder" = "Sgrìobh no cuir ann beachdan a bharrachd"; "Scene.Report.Title" = "Dèan gearan mu %@"; -"Scene.Report.TitleReport" = "Report"; +"Scene.Report.TitleReport" = "Dèan gearan"; "Scene.Search.Recommend.Accounts.Description" = "Saoil am bu toigh leat leantainn air na cunntasan seo?"; "Scene.Search.Recommend.Accounts.Follow" = "Lean air"; "Scene.Search.Recommend.Accounts.Title" = "Cunntasan a chòrdas riut ma dh’fhaoidte"; @@ -339,11 +339,11 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.Settings.Section.BoringZone.Privacy" = "Am poileasaidh prìobhaideachd"; "Scene.Settings.Section.BoringZone.Terms" = "Teirmichean na seirbheise"; "Scene.Settings.Section.BoringZone.Title" = "An earrann ràsanach"; -"Scene.Settings.Section.LookAndFeel.Light" = "Light"; -"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; -"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; -"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; -"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; +"Scene.Settings.Section.LookAndFeel.Light" = "Soilleir"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Glè dhorcha"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Caran dorcha"; +"Scene.Settings.Section.LookAndFeel.Title" = "Coltas"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Cleachd coltas an t-siostaim"; "Scene.Settings.Section.Notifications.Boosts" = "Nuair a bhrosnaicheas iad post uam"; "Scene.Settings.Section.Notifications.Favorites" = "Nuair as annsa leotha am post agam"; "Scene.Settings.Section.Notifications.Follows" = "Nuair a leanas iad orm"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings index db88120b5..68cf2d8d4 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "キャッシュを消去"; "Common.Alerts.Common.PleaseTryAgain" = "もう一度お試しください。"; "Common.Alerts.Common.PleaseTryAgainLater" = "後でもう一度お試しください。"; -"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; +"Common.Alerts.DeletePost.Message" = "本当に削除しますか?"; "Common.Alerts.DeletePost.Title" = "この投稿を消去しますか?"; "Common.Alerts.DiscardPostContent.Message" = "この操作は取り消しできません。下書きは失われます。"; "Common.Alerts.DiscardPostContent.Title" = "投稿を破棄しますか?"; @@ -94,7 +94,7 @@ "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "お気に入り登録を切り替える"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "ブーストを切り替える"; "Common.Controls.Status.Actions.Favorite" = "お気に入り"; -"Common.Controls.Status.Actions.Hide" = "Hide"; +"Common.Controls.Status.Actions.Hide" = "非表示"; "Common.Controls.Status.Actions.Menu" = "メニュー"; "Common.Controls.Status.Actions.Reblog" = "ブースト"; "Common.Controls.Status.Actions.Reply" = "リプライ"; @@ -114,10 +114,10 @@ "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@がブースト"; "Common.Controls.Status.UserRepliedTo" = "%@がリプライ"; -"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; -"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; -"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; -"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; +"Common.Controls.Status.Visibility.Direct" = "この投稿はメンションされたユーザーに限り見ることができます。"; +"Common.Controls.Status.Visibility.Private" = "この投稿はフォロワーに限り見ることができます。"; +"Common.Controls.Status.Visibility.PrivateFromMe" = "この投稿はフォロワーに限り見ることができます。"; +"Common.Controls.Status.Visibility.Unlisted" = "この投稿は誰でも見ることができますが、公開タイムラインには表示されません。"; "Common.Controls.Tabs.Home" = "ホーム"; "Common.Controls.Tabs.Notification" = "通知"; "Common.Controls.Tabs.Profile" = "プロフィール"; @@ -314,8 +314,8 @@ "Scene.ServerPicker.Label.Category" = "カテゴリー"; "Scene.ServerPicker.Label.Language" = "言語"; "Scene.ServerPicker.Label.Users" = "ユーザー"; -"Scene.ServerPicker.Subtitle" = "Pick a community based on your interests, region, or a general purpose one."; -"Scene.ServerPicker.SubtitleExtend" = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual."; +"Scene.ServerPicker.Subtitle" = "あなたの興味分野・地域に合ったコミュニティや、汎用のものを選択してください。"; +"Scene.ServerPicker.SubtitleExtend" = "あなたの興味分野・地域に合ったコミュニティや、汎用のものを選択してください。各コミュニティはそれぞれ完全に独立した組織や個人によって運営されています。"; "Scene.ServerPicker.Title" = "サーバーを選択"; "Scene.ServerRules.Button.Confirm" = "同意する"; "Scene.ServerRules.PrivacyPolicy" = "プライバシーポリシー"; @@ -362,7 +362,7 @@ "Scene.Thread.BackTitle" = "投稿"; "Scene.Thread.Title" = "%@の投稿"; "Scene.Welcome.GetStarted" = "Get Started"; -"Scene.Welcome.LogIn" = "Log In"; +"Scene.Welcome.LogIn" = "ログイン"; "Scene.Welcome.Slogan" = "ソーシャルネットワーキングを、あなたの手の中に."; "Scene.Wizard.AccessibilityHint" = "チュートリアルを閉じるには、ダブルタップしてください"; "Scene.Wizard.MultipleAccountSwitchIntroDescription" = "プロフィールボタンを押して複数のアカウントを切り替えます。"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings index c323d415a..c79bb681d 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings @@ -5,7 +5,7 @@ "Common.Alerts.Common.PleaseTryAgain" = "โปรดลองอีกครั้ง"; "Common.Alerts.Common.PleaseTryAgainLater" = "โปรดลองอีกครั้งในภายหลัง"; "Common.Alerts.DeletePost.Message" = "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?"; -"Common.Alerts.DeletePost.Title" = "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?"; +"Common.Alerts.DeletePost.Title" = "ลบโพสต์"; "Common.Alerts.DiscardPostContent.Message" = "ยืนยันที่จะละทิ้งเนื้อหาโพสต์ที่เขียน"; "Common.Alerts.DiscardPostContent.Title" = "ละทิ้งแบบร่าง"; "Common.Alerts.EditProfileFailure.Message" = "ไม่สามารถแก้ไขโปรไฟล์ โปรดลองอีกครั้ง"; @@ -124,17 +124,17 @@ "Common.Controls.Tabs.Search" = "ค้นหา"; "Common.Controls.Timeline.Filtered" = "กรองอยู่"; "Common.Controls.Timeline.Header.BlockedWarning" = "คุณไม่สามารถดูโปรไฟล์ของผู้ใช้นี้ -จนกว่าผู้ใช้นี้จะเลิกปิดกั้นคุณ"; +จนกว่าเขาจะเลิกปิดกั้นคุณ"; "Common.Controls.Timeline.Header.BlockingWarning" = "คุณไม่สามารถดูโปรไฟล์ของผู้ใช้นี้ -จนกว่าคุณจะเลิกปิดกั้นผู้ใช้นี้ -ผู้ใช้นี้เห็นโปรไฟล์ของคุณเหมือนกับที่คุณเห็น"; +จนกว่าคุณจะเลิกปิดกั้นเขา +โปรไฟล์ของคุณมีลักษณะเช่นนี้สำหรับเขา"; "Common.Controls.Timeline.Header.NoStatusFound" = "ไม่พบโพสต์"; "Common.Controls.Timeline.Header.SuspendedWarning" = "ผู้ใช้นี้ถูกระงับการใช้งาน"; "Common.Controls.Timeline.Header.UserBlockedWarning" = "คุณไม่สามารถดูโปรไฟล์ของ %@ -จนกว่าผู้ใช้นี้จะเลิกปิดกั้นคุณ"; +จนกว่าเขาจะเลิกปิดกั้นคุณ"; "Common.Controls.Timeline.Header.UserBlockingWarning" = "คุณไม่สามารถดูโปรไฟล์ของ %@ -จนกว่าคุณจะเลิกปิดกั้นผู้ใช้นี้ -ผู้ใช้นี้เห็นโปรไฟล์ของคุณเหมือนกับที่คุณเห็น"; +จนกว่าคุณจะเลิกปิดกั้นเขา +โปรไฟล์ของคุณมีลักษณะเช่นนี้สำหรับเขา"; "Common.Controls.Timeline.Header.UserSuspendedWarning" = "บัญชีของ %@ ถูกระงับการใช้งาน"; "Common.Controls.Timeline.Loader.LoadMissingPosts" = "โหลดโพสต์ที่ขาดหายไป"; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "กำลังโหลดโพสต์ที่ขาดหายไป..."; @@ -193,8 +193,7 @@ "Scene.ConfirmEmail.OpenEmailApp.Mail" = "จดหมาย"; "Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "เปิดไคลเอ็นต์อีเมล"; "Scene.ConfirmEmail.OpenEmailApp.Title" = "ตรวจสอบกล่องขาเข้าของคุณ"; -"Scene.ConfirmEmail.Subtitle" = "เราเพิ่งส่งอีเมลไปยัง %@ -แตะที่ลิงก์เพื่อยืนยันบัญชีของคุณ"; +"Scene.ConfirmEmail.Subtitle" = "แตะลิงก์ที่เราส่งอีเมลถึงคุณเพื่อยืนยันบัญชีของคุณ"; "Scene.ConfirmEmail.Title" = "หนึ่งสิ่งสุดท้าย"; "Scene.Favorite.Title" = "รายการโปรดของคุณ"; "Scene.Follower.Footer" = "ไม่ได้แสดงผู้ติดตามจากเซิร์ฟเวอร์อื่น ๆ"; @@ -268,7 +267,7 @@ "Scene.Register.Input.Password.Require" = "รหัสผ่านของคุณต้องมีอย่างน้อย:"; "Scene.Register.Input.Username.DuplicatePrompt" = "ชื่อผู้ใช้นี้ถูกใช้ไปแล้ว"; "Scene.Register.Input.Username.Placeholder" = "ชื่อผู้ใช้"; -"Scene.Register.Title" = "บอกเราเกี่ยวกับคุณ"; +"Scene.Register.Title" = "มาตั้งค่าของคุณใน %@ กันเลย"; "Scene.Report.Content1" = "มีโพสต์อื่นใดที่คุณต้องการเพิ่มไปยังรายงานหรือไม่?"; "Scene.Report.Content2" = "มีสิ่งใดที่ผู้ควบคุมควรทราบเกี่ยวกับรายงานนี้หรือไม่?"; "Scene.Report.ReportSentTitle" = "ขอบคุณสำหรับการรายงาน เราจะตรวจสอบสิ่งนี้"; @@ -316,18 +315,17 @@ "Scene.ServerPicker.EmptyState.BadNetwork" = "มีบางอย่างผิดพลาดขณะโหลดข้อมูล ตรวจสอบการเชื่อมต่ออินเทอร์เน็ตของคุณ"; "Scene.ServerPicker.EmptyState.FindingServers" = "กำลังค้นหาเซิร์ฟเวอร์ที่พร้อมใช้งาน..."; "Scene.ServerPicker.EmptyState.NoResults" = "ไม่มีผลลัพธ์"; -"Scene.ServerPicker.Input.Placeholder" = "ค้นหาเซิร์ฟเวอร์หรือเข้าร่วมของคุณเอง..."; +"Scene.ServerPicker.Input.Placeholder" = "ค้นหาชุมชน"; "Scene.ServerPicker.Label.Category" = "หมวดหมู่"; "Scene.ServerPicker.Label.Language" = "ภาษา"; "Scene.ServerPicker.Label.Users" = "ผู้ใช้"; "Scene.ServerPicker.Subtitle" = "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ"; "Scene.ServerPicker.SubtitleExtend" = "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละชุมชนดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระโดยสิ้นเชิง"; -"Scene.ServerPicker.Title" = "เลือกเซิร์ฟเวอร์ -อันไหนก็ได้"; +"Scene.ServerPicker.Title" = "Mastodon ประกอบด้วยผู้ใช้ในชุมชนต่าง ๆ"; "Scene.ServerRules.Button.Confirm" = "ฉันเห็นด้วย"; "Scene.ServerRules.PrivacyPolicy" = "นโยบายความเป็นส่วนตัว"; "Scene.ServerRules.Prompt" = "เมื่อคุณดำเนินการต่อ คุณอยู่ภายใต้เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัวสำหรับ %@"; -"Scene.ServerRules.Subtitle" = "กฎเหล่านี้ถูกตั้งโดยผู้ดูแลของ %@"; +"Scene.ServerRules.Subtitle" = "มีการตั้งและบังคับใช้กฎเหล่านี้โดยผู้ควบคุมของ %@"; "Scene.ServerRules.TermsOfService" = "เงื่อนไขการให้บริการ"; "Scene.ServerRules.Title" = "กฎพื้นฐานบางประการ"; "Scene.Settings.Footer.MastodonDescription" = "Mastodon เป็นซอฟต์แวร์โอเพนซอร์ส คุณสามารถรายงานปัญหาได้ใน GitHub ที่ %@ (%@)"; From fe14e1781083380c5a12ff02d642d09ba020e03c Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Mar 2022 17:12:36 +0800 Subject: [PATCH 352/374] fix: share extension not accept plaintext content issue. resolve #335 --- .../Vendor/ItemProviderLoader.swift | 18 +++++++ ShareActionExtension/Info.plist | 2 + .../Scene/ShareViewModel.swift | 50 +++++++++++++++---- 3 files changed, 60 insertions(+), 10 deletions(-) diff --git a/MastodonSDK/Sources/MastodonUI/Vendor/ItemProviderLoader.swift b/MastodonSDK/Sources/MastodonUI/Vendor/ItemProviderLoader.swift index 6662f90ec..ef0c36f1b 100644 --- a/MastodonSDK/Sources/MastodonUI/Vendor/ItemProviderLoader.swift +++ b/MastodonSDK/Sources/MastodonUI/Vendor/ItemProviderLoader.swift @@ -55,6 +55,24 @@ extension ItemProviderLoader { ] as CFDictionary guard let cgImage = CGImageSourceCreateThumbnailAtIndex(source, 0, downsampleOptions) else { + // fallback to loadItem when create thumbnail failure + itemProvider.loadItem(forTypeIdentifier: UTType.image.identifier, options: nil) { image, error in + if let error = error { + promise(.failure(error)) + } + + guard let image = image as? UIImage, + let data = image.jpegData(compressionQuality: 0.75) + else { + promise(.success(nil)) + assertionFailure() + return + } + + let file = Mastodon.Query.MediaAttachment.jpeg(data) + promise(.success(file)) + + } // end itemProvider.loadItem return } diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 21ee332d0..9d51584c1 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -26,6 +26,8 @@ NSExtensionActivationRule + NSExtensionActivationSupportsText + NSExtensionActivationSupportsWebURLWithMaxCount 1 NSExtensionActivationSupportsImageWithMaxCount diff --git a/ShareActionExtension/Scene/ShareViewModel.swift b/ShareActionExtension/Scene/ShareViewModel.swift index fe54e7e59..fbad82209 100644 --- a/ShareActionExtension/Scene/ShareViewModel.swift +++ b/ShareActionExtension/Scene/ShareViewModel.swift @@ -262,6 +262,10 @@ extension ShareViewModel { itemProviders.append(contentsOf: item.attachments ?? []) } + let _textProvider = itemProviders.first { provider in + return provider.hasRepresentationConforming(toTypeIdentifier: UTType.plainText.identifier, fileOptions: []) + } + let _urlProvider = itemProviders.first { provider in return provider.hasRepresentationConforming(toTypeIdentifier: UTType.url.identifier, fileOptions: []) } @@ -274,25 +278,51 @@ extension ShareViewModel { return provider.hasRepresentationConforming(toTypeIdentifier: UTType.image.identifier, fileOptions: []) } - if let urlProvider = _urlProvider { - urlProvider.loadItem(forTypeIdentifier: UTType.url.identifier) { [weak self] item, error in - guard let self = self else { return } - guard let url = item as? URL else { return } - DispatchQueue.main.async { - self.composeViewModel.statusContent = "\(url.absoluteString) " - } - } - } else if let movieProvider = _movieProvider { + Task { @MainActor in + async let text = ShareViewModel.loadText(textProvider: _textProvider) + async let url = ShareViewModel.loadURL(textProvider: _urlProvider) + + let content = await [text, url] + .compactMap { $0 } + .joined(separator: " ") + self.composeViewModel.statusContent = content + } + + if let movieProvider = _movieProvider { composeViewModel.setupAttachmentViewModels([ StatusAttachmentViewModel(itemProvider: movieProvider) ]) - } else { + } else if !imageProviders.isEmpty { let viewModels = imageProviders.map { provider in StatusAttachmentViewModel(itemProvider: provider) } composeViewModel.setupAttachmentViewModels(viewModels) } + } + + private static func loadText(textProvider: NSItemProvider?) async -> String? { + guard let textProvider = textProvider else { return nil } + do { + let item = try await textProvider.loadItem(forTypeIdentifier: UTType.plainText.identifier) + guard let text = item as? String else { return nil } + return text + } catch { + return nil + } + } + + private static func loadURL(textProvider: NSItemProvider?) async -> String? { + guard let textProvider = textProvider else { return nil } + do { + let item = try await textProvider.loadItem(forTypeIdentifier: UTType.url.identifier) + guard let url = item as? URL else { return nil } + return url.absoluteString + } catch { + return nil + } + } + } extension ShareViewModel { From 08a603c2b3e044582814ec07f57ea60993c492a8 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Mar 2022 17:13:10 +0800 Subject: [PATCH 353/374] chore: update version to 1.3.0 (105) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index a1b21dc4b..a82708649 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 104 + 105 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index ed8a4f2b3..531b5e27c 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4634,7 +4634,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4663,7 +4663,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4771,11 +4771,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 104; + DYLIB_CURRENT_VERSION = 105; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4802,11 +4802,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 104; + DYLIB_CURRENT_VERSION = 105; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4831,7 +4831,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4856,7 +4856,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4881,7 +4881,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4906,7 +4906,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4931,7 +4931,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4955,7 +4955,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 104; + CURRENT_PROJECT_VERSION = 105; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index d6f875774..842a78d1a 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 19 + 27 CoreDataStack.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 20 + 28 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 22 + 26 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 2efdec0c5..11768d97a 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 104 + 105 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 6f5b6feda..a1b806157 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 104 + 105 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index a1b21dc4b..a82708649 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 104 + 105 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index a1b21dc4b..a82708649 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 104 + 105 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 19c22e8a8..157c902e3 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 104 + 105 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 9d51584c1..06f751381 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 104 + 105 NSExtension NSExtensionAttributes From a742ed9557731a29270d451af63ae326b16b5fc6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 13 Mar 2022 05:42:17 +0100 Subject: [PATCH 354/374] New translations app.json (Japanese) --- Localization/StringsConvertor/input/ja_JP/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index 0957f9e73..7bfa6189e 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -539,7 +539,7 @@ "preference": { "title": "環境設定", "true_black_dark_mode": "真っ黒なダークテーマを使用する", - "disable_avatar_animation": "アニメーションアバターの無効化する", + "disable_avatar_animation": "アバターのアニメーションを無効化する", "disable_emoji_animation": "絵文字のアニメーションを無効化する", "using_default_browser": "既定のブラウザでリンクを開く" }, From 870aaaab05e25be04de99d593a6d2739ac3d131e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 13 Mar 2022 06:45:36 +0100 Subject: [PATCH 355/374] New translations app.json (Japanese) --- Localization/StringsConvertor/input/ja_JP/app.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index 7bfa6189e..1b2b67b16 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -23,7 +23,7 @@ "title": "失敗", "message": "投稿に失敗しました。\nインターネットに接続されているか確認してください。", "attachments_message": { - "video_attach_with_photo": "すでに画像が含まれている投稿に、動画を添付することができません。", + "video_attach_with_photo": "すでに画像が含まれている投稿に、動画を添付することはできません。", "more_than_one_video": "複数の動画を添付することはできません。" } }, @@ -360,8 +360,8 @@ "photo": "写真", "video": "動画", "attachment_broken": "%sは壊れていてMastodonにアップロードできません。", - "description_photo": "視覚障がい者のために写真を説明", - "description_video": "視覚障がい者のための映像の説明" + "description_photo": "閲覧が難しいユーザーへの画像説明", + "description_video": "閲覧が難しいユーザーへの映像説明" }, "poll": { "duration_time": "期間: %s", From 09556eeeb74bc87f59d42de61480cc5f9ab1924f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 13 Mar 2022 08:45:53 +0100 Subject: [PATCH 356/374] New translations app.json (Japanese) --- Localization/StringsConvertor/input/ja_JP/app.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index 1b2b67b16..7ddfa51c1 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -87,7 +87,7 @@ "manually_search": "手動で検索する", "skip": "スキップ", "reply": "リプライ", - "report_user": "%sを報告", + "report_user": "%sを通報", "block_domain": "%sをブロック", "unblock_domain": "%sのブロックを解除", "settings": "設定", @@ -564,13 +564,13 @@ }, "report": { "title_report": "Report", - "title": "%sを報告", + "title": "%sを通報", "step1": "ステップ 1/2", "step2": "ステップ 2/2", - "content1": "他に報告したい投稿はありますか?", - "content2": "この報告についてモデレーターに言いたいことはありますか?", + "content1": "他に通報したい投稿はありますか?", + "content2": "この通報についてモデレーターに伝達しておきたい事項はありますか?", "report_sent_title": "Thanks for reporting, we’ll look into this.", - "send": "報告を送信", + "send": "通報を送信", "skip_to_send": "コメントなしで送信", "text_placeholder": "追加コメントを入力", "reported": "REPORTED" From e6ee02b2b9d67299ee8d1f8b7ca9f196c5e0eb47 Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 16 Mar 2022 02:02:28 +0800 Subject: [PATCH 357/374] feat: add onion domain ATS exception rule. resolve #338 --- .../xcschemes/xcschememanagement.plist | 6 +++--- .../xcshareddata/swiftpm/Package.resolved | 18 ++++++++++++++++++ Mastodon/Info.plist | 13 +++++++++++++ .../NotificationTimelineViewModel.swift | 2 +- .../APIService/APIService+WebFinger.swift | 3 ++- .../Sources/MastodonSDK/API/Mastodon+API.swift | 12 ++++++------ .../Sources/MastodonSDK/Extension/URL.swift | 14 ++++++++++++++ .../API/MastodonSDK+API+OAuthTests.swift | 2 +- MastodonTests/MastodonTests.swift | 17 +++++++++++++++++ 9 files changed, 75 insertions(+), 12 deletions(-) create mode 100644 MastodonSDK/Sources/MastodonSDK/Extension/URL.swift diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 842a78d1a..a5d4f6d92 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 27 + 20 CoreDataStack.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 28 + 21 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 26 + 19 SuppressBuildableAutocreation diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index a10344881..11d453883 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -55,6 +55,15 @@ "version": "1.2.0" } }, + { + "package": "FLAnimatedImage", + "repositoryURL": "https://github.com/Flipboard/FLAnimatedImage.git", + "state": { + "branch": null, + "revision": "e7f9fd4681ae41bf6f3056db08af4f401d61da52", + "version": "1.0.16" + } + }, { "package": "FPSIndicator", "repositoryURL": "https://github.com/MainasuK/FPSIndicator.git", @@ -207,6 +216,15 @@ "revision": "d0470491f56e734731bbf77991944c0dfdee3e0e", "version": "2.6.1" } + }, + { + "package": "UITextView+Placeholder", + "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder.git", + "state": { + "branch": null, + "revision": "20f513ded04a040cdf5467f0891849b1763ede3b", + "version": "1.4.1" + } } ] }, diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 11768d97a..56eb9d83f 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -2,6 +2,19 @@ + NSAppTransportSecurity + + NSExceptionDomains + + onion + + NSExceptionAllowsInsecureHTTPLoads + + NSIncludesSubdomains + + + + CADisableMinimumFrameDurationOnPhone CFBundleDevelopmentRegion diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift index eb24f3a3c..ee2ac8a0e 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift @@ -148,7 +148,7 @@ extension NotificationTimelineViewModel { guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } isLoadingLatest = true - defer{ isLoadingLatest = false } + defer { isLoadingLatest = false } do { _ = try await context.apiService.notifications( diff --git a/Mastodon/Service/APIService/APIService+WebFinger.swift b/Mastodon/Service/APIService/APIService+WebFinger.swift index 7cc0425dc..b49ad9e31 100644 --- a/Mastodon/Service/APIService/APIService+WebFinger.swift +++ b/Mastodon/Service/APIService/APIService+WebFinger.swift @@ -16,7 +16,8 @@ import MastodonSDK extension APIService { private static func webFingerEndpointURL(domain: String) -> URL { - return URL(string: "https://\(domain)/")! + + return URL(string: "\(URL.httpScheme(domain: domain))://\(domain)/")! .appendingPathComponent(".well-known") .appendingPathComponent("webfinger") } diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift index f72fd3aff..66c822b32 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API.swift @@ -74,27 +74,27 @@ extension Mastodon.API { }() static func oauthEndpointURL(domain: String) -> URL { - return URL(string: "https://" + domain + "/oauth/")! + return URL(string: "\(URL.httpScheme(domain: domain))://" + domain + "/oauth/")! } static func endpointURL(domain: String) -> URL { - return URL(string: "https://" + domain + "/api/v1/")! + return URL(string: "\(URL.httpScheme(domain: domain))://" + domain + "/api/v1/")! } static func endpointV2URL(domain: String) -> URL { - return URL(string: "https://" + domain + "/api/v2/")! + return URL(string: "\(URL.httpScheme(domain: domain))://" + domain + "/api/v2/")! } static let joinMastodonEndpointURL = URL(string: "https://api.joinmastodon.org/")! public static func resendEmailURL(domain: String) -> URL { - return URL(string: "https://" + domain + "/auth/confirmation/new")! + return URL(string: "\(URL.httpScheme(domain: domain))://" + domain + "/auth/confirmation/new")! } public static func serverRulesURL(domain: String) -> URL { - return URL(string: "https://" + domain + "/about/more")! + return URL(string: "\(URL.httpScheme(domain: domain))://" + domain + "/about/more")! } public static func privacyURL(domain: String) -> URL { - return URL(string: "https://" + domain + "/terms")! + return URL(string: "\(URL.httpScheme(domain: domain))://" + domain + "/terms")! } } diff --git a/MastodonSDK/Sources/MastodonSDK/Extension/URL.swift b/MastodonSDK/Sources/MastodonSDK/Extension/URL.swift new file mode 100644 index 000000000..a9345c7b3 --- /dev/null +++ b/MastodonSDK/Sources/MastodonSDK/Extension/URL.swift @@ -0,0 +1,14 @@ +// +// URL.swift +// +// +// Created by MainasuK on 2022-3-16. +// + +import Foundation + +extension URL { + public static func httpScheme(domain: String) -> String { + return domain.hasSuffix(".onion") ? "http" : "https" + } +} diff --git a/MastodonSDK/Tests/MastodonSDKTests/API/MastodonSDK+API+OAuthTests.swift b/MastodonSDK/Tests/MastodonSDKTests/API/MastodonSDK+API+OAuthTests.swift index b14aad24e..c1f09eb99 100644 --- a/MastodonSDK/Tests/MastodonSDKTests/API/MastodonSDK+API+OAuthTests.swift +++ b/MastodonSDK/Tests/MastodonSDKTests/API/MastodonSDK+API+OAuthTests.swift @@ -22,7 +22,7 @@ extension MastodonSDKTests { os_log("%{public}s[%{public}ld], %{public}s: (%s) authorizeURL %s", ((#file as NSString).lastPathComponent), #line, #function, domain, authorizeURL.absoluteString) XCTAssertEqual( authorizeURL.absoluteString, - "https://\(domain)/oauth/authorize?response_type=code&client_id=StubClientID&redirect_uri=mastodon://joinmastodon.org/oauth&scope=read%20write%20follow%20push" + "\(URL.httpScheme(domain: domain))://\(domain)/oauth/authorize?response_type=code&client_id=StubClientID&redirect_uri=mastodon://joinmastodon.org/oauth&scope=read%20write%20follow%20push" ) } diff --git a/MastodonTests/MastodonTests.swift b/MastodonTests/MastodonTests.swift index 5da71aa43..7264dde64 100644 --- a/MastodonTests/MastodonTests.swift +++ b/MastodonTests/MastodonTests.swift @@ -8,6 +8,7 @@ import XCTest @testable import Mastodon +@MainActor class MastodonTests: XCTestCase { override func setUpWithError() throws { @@ -43,4 +44,20 @@ extension MastodonTests { } wait(for: [expectation], timeout: 10) } + + @available(iOS 15.0, *) + func testConnectOnion() async throws { + let request = URLRequest( + url: URL(string: "http://a232ncr7jexk2chvubaq2v6qdizbocllqap7mnn7w7vrdutyvu32jeyd.onion/@k0gen")!, + cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, + timeoutInterval: 10 + ) + do { + let data = try await URLSession.shared.data(for: request, delegate: nil) + print(data) + } catch { + debugPrint(error) + assertionFailure(error.localizedDescription) + } + } } From 70c274150476a729efa0bd2ce985ddb48528756c Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 16 Mar 2022 02:31:57 +0800 Subject: [PATCH 358/374] chore: update app version footer and i18n strings --- .../Onboarding/Share/OnboardingHeadlineTableViewCell.swift | 2 +- Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift | 2 +- Mastodon/Scene/Settings/SettingsViewController.swift | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift b/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift index a5d6e588c..01070fbe9 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift @@ -25,7 +25,7 @@ final class OnboardingHeadlineTableViewCell: UITableViewCell { let label = UILabel() label.font = MastodonPickServerViewController.subTitleFont label.textColor = MastodonPickServerViewController.subTitleTextColor - label.text = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual." + label.text = L10n.Scene.ServerPicker.subtitle label.adjustsFontForContentSizeCategory = true label.numberOfLines = 0 return label diff --git a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift index 91d95c136..2389947a1 100644 --- a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift +++ b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift @@ -64,7 +64,7 @@ final class WelcomeViewController: UIViewController, NeedsDependency { let button = PrimaryActionButton() button.adjustsBackgroundImageWhenUserInterfaceStyleChanges = false button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)) - button.setTitle("Log In", for: .normal) + button.setTitle(L10n.Scene.Welcome.logIn, for: .normal) let backgroundImageColor = Asset.Scene.Welcome.signInButtonBackground.color let backgroundImageHighlightedColor = Asset.Scene.Welcome.signInButtonBackground.color.withAlphaComponent(0.8) button.setBackgroundImage(.placeholder(color: backgroundImageColor), for: .normal) diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 984346660..4cf20cd09 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -206,8 +206,7 @@ extension SettingsViewController { } .store(in: &disposeBag) - - let footer = "Mastodon v\(UIApplication.appVersion()) (\(UIApplication.appBuild()))" + let footer = "Mastodon for iOS v\(UIApplication.appVersion()) (\(UIApplication.appBuild()))" let metaContent = PlaintextMetaContent(string: footer) tableFooterLabel.configure(content: metaContent) } From d7599a6e490d7ddecf3fc443e27750429b4bdfa4 Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 16 Mar 2022 02:32:23 +0800 Subject: [PATCH 359/374] chore: update version to 1.3.0 (106) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index a82708649..d27c256a7 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 105 + 106 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 531b5e27c..f490ebabf 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4634,7 +4634,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4663,7 +4663,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4771,11 +4771,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 105; + DYLIB_CURRENT_VERSION = 106; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4802,11 +4802,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 105; + DYLIB_CURRENT_VERSION = 106; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4831,7 +4831,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4856,7 +4856,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4881,7 +4881,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4906,7 +4906,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4931,7 +4931,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4955,7 +4955,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 105; + CURRENT_PROJECT_VERSION = 106; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index a5d4f6d92..a8c98f7cb 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 20 + 26 CoreDataStack.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 21 + 28 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 19 + 27 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 56eb9d83f..48ad142f9 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -43,7 +43,7 @@ CFBundleVersion - 105 + 106 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index a1b806157..522de370d 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 105 + 106 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index a82708649..d27c256a7 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 105 + 106 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index a82708649..d27c256a7 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 105 + 106 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 157c902e3..66e01eca6 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 105 + 106 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 06f751381..8d50c166f 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 105 + 106 NSExtension NSExtensionAttributes From 8c01f21276325eb7274b14b8f529541aed3d1fd8 Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 16 Mar 2022 11:01:04 +0800 Subject: [PATCH 360/374] chore: update version to 1.3.0 (108) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- .../xcshareddata/swiftpm/Package.resolved | 11 +-------- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 10 files changed, 23 insertions(+), 32 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index d27c256a7..ca2c1ef20 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 106 + 108 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index f490ebabf..8a5ae97c4 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4634,7 +4634,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4663,7 +4663,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4771,11 +4771,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 106; + DYLIB_CURRENT_VERSION = 108; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4802,11 +4802,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 106; + DYLIB_CURRENT_VERSION = 108; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4831,7 +4831,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4856,7 +4856,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4881,7 +4881,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4906,7 +4906,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4931,7 +4931,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4955,7 +4955,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 106; + CURRENT_PROJECT_VERSION = 108; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index a8c98f7cb..a5d4f6d92 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 26 + 20 CoreDataStack.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 28 + 21 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 27 + 19 SuppressBuildableAutocreation diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index 11d453883..5c9c5069d 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -55,15 +55,6 @@ "version": "1.2.0" } }, - { - "package": "FLAnimatedImage", - "repositoryURL": "https://github.com/Flipboard/FLAnimatedImage.git", - "state": { - "branch": null, - "revision": "e7f9fd4681ae41bf6f3056db08af4f401d61da52", - "version": "1.0.16" - } - }, { "package": "FPSIndicator", "repositoryURL": "https://github.com/MainasuK/FPSIndicator.git", @@ -219,7 +210,7 @@ }, { "package": "UITextView+Placeholder", - "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder.git", + "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder", "state": { "branch": null, "revision": "20f513ded04a040cdf5467f0891849b1763ede3b", diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 48ad142f9..b207e6866 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -43,7 +43,7 @@ CFBundleVersion - 106 + 108 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 522de370d..d8b6d1e0c 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 106 + 108 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index d27c256a7..ca2c1ef20 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 106 + 108 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index d27c256a7..ca2c1ef20 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 106 + 108 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 66e01eca6..b0e6e0a22 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 106 + 108 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 8d50c166f..bfafe753a 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 106 + 108 NSExtension NSExtensionAttributes From 7da4c186e1b3121b6d9d17fa29b1400229aaaa95 Mon Sep 17 00:00:00 2001 From: Zac West Date: Tue, 15 Mar 2022 20:16:08 -0700 Subject: [PATCH 361/374] Handle onboarding authentication errors in /api/v1/instance --- .../API/Mastodon+API+Instance.swift | 13 +++++++++++- .../Entity/Mastodon+Entity+Instance.swift | 21 ++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Instance.swift b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Instance.swift index e91aaa7b7..e90ee27c1 100644 --- a/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Instance.swift +++ b/MastodonSDK/Sources/MastodonSDK/API/Mastodon+API+Instance.swift @@ -37,7 +37,18 @@ extension Mastodon.API.Instance { ) return session.dataTaskPublisher(for: request) .tryMap { data, response in - let value = try Mastodon.API.decode(type: Mastodon.Entity.Instance.self, from: data, response: response) + let value: Mastodon.Entity.Instance + + do { + value = try Mastodon.API.decode(type: Mastodon.Entity.Instance.self, from: data, response: response) + } catch { + if let response = response as? HTTPURLResponse, 400 ..< 500 ~= response.statusCode { + // For example, AUTHORIZED_FETCH may result in authentication errors + value = Mastodon.Entity.Instance(domain: domain) + } else { + throw error + } + } return Mastodon.Response.Content(value: value, response: response) } .eraseToAnyPublisher() diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift index f245d741a..0f9392ad2 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift @@ -22,7 +22,7 @@ extension Mastodon.Entity { public let title: String public let description: String public let shortDescription: String? - public let email: String + public let email: String? public let version: String? public let languages: [String]? // (ISO 639 Part 1-5 language codes) public let registrations: Bool? @@ -38,6 +38,25 @@ extension Mastodon.Entity { // https://github.com/mastodon/mastodon/pull/16485 public let configuration: Configuration? + public init(domain: String) { + self.uri = domain + self.title = domain + self.description = "" + self.shortDescription = nil + self.email = nil + self.version = nil + self.languages = nil + self.registrations = nil + self.approvalRequired = nil + self.invitesEnabled = nil + self.urls = nil + self.statistics = nil + self.thumbnail = nil + self.contactAccount = nil + self.rules = nil + self.configuration = nil + } + enum CodingKeys: String, CodingKey { case uri case title From 405715c63962b9aaa9911d55aa852b0308af7555 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 17 Mar 2022 18:48:20 +0100 Subject: [PATCH 362/374] New translations app.json (Kurmanji (Kurdish)) --- Localization/StringsConvertor/input/kmr_TR/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index 2990f23c6..d4ebbd81e 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -537,7 +537,7 @@ } }, "preference": { - "title": "Hilbijarte", + "title": "Sazkarî", "true_black_dark_mode": "Moda tarî ya reş a rastîn", "disable_avatar_animation": "Avatarên anîmasyonî neçalak bike", "disable_emoji_animation": "Emojiyên anîmasyonî neçalak bike", From 0877b7eb17f417abb9ea1e9c63f4991cea4611ed Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 17 Mar 2022 19:51:55 +0100 Subject: [PATCH 363/374] New translations app.json (Kurmanji (Kurdish)) --- Localization/StringsConvertor/input/kmr_TR/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index d4ebbd81e..5d1d70fb0 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -512,7 +512,7 @@ "appearance": { "title": "Xuyang", "automatic": "Xweber", - "light": "Her dem ronî", + "light": "Her dem ronahî", "dark": "Her dem tarî" }, "look_and_feel": { @@ -520,7 +520,7 @@ "use_system": "Pergalê bi kar bîne", "really_dark": "Tarî", "sorta_dark": "Hinekî tarî", - "light": "Ron" + "light": "Ronahî" }, "notifications": { "title": "Agahdarî", From e82b97619e7402493eddc4881c321199e02a24d3 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Mar 2022 14:55:26 +0800 Subject: [PATCH 364/374] chore: update Xcode schemes index --- ....xcscheme => Mastodon - Snapshot.xcscheme} | 71 +++++++++++-------- .../xcschemes/xcschememanagement.plist | 17 +++-- .../xcshareddata/swiftpm/Package.resolved | 9 --- 3 files changed, 55 insertions(+), 42 deletions(-) rename Mastodon.xcodeproj/xcshareddata/xcschemes/{NotificationService.xcscheme => Mastodon - Snapshot.xcscheme} (64%) diff --git a/Mastodon.xcodeproj/xcshareddata/xcschemes/NotificationService.xcscheme b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Snapshot.xcscheme similarity index 64% rename from Mastodon.xcodeproj/xcshareddata/xcschemes/NotificationService.xcscheme rename to Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Snapshot.xcscheme index d372229c4..192847c1e 100644 --- a/Mastodon.xcodeproj/xcshareddata/xcschemes/NotificationService.xcscheme +++ b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Snapshot.xcscheme @@ -1,26 +1,11 @@ + version = "1.7"> - - - - + + + + + + + + - - + + + + + enableGPUValidationMode = "1" + allowLocationSimulation = "YES"> + debugDocumentVersioning = "YES"> AppShared.xcscheme_^#shared#^_ + isShown + orderHint - 20 + 16 CoreDataStack.xcscheme_^#shared#^_ @@ -27,7 +29,7 @@ Mastodon - Snapshot.xcscheme_^#shared#^_ orderHint - 2 + 3 Mastodon - ar.xcscheme_^#shared#^_ @@ -102,7 +104,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 21 + 32 MastodonIntents.xcscheme_^#shared#^_ @@ -117,12 +119,12 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 3 + 33 ShareActionExtension.xcscheme_^#shared#^_ orderHint - 19 + 31 SuppressBuildableAutocreation @@ -142,6 +144,11 @@ primary + DB68047E2637CD4C00430867 + + primary + + DB89B9F525C10FD0008580ED primary diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index 5c9c5069d..a10344881 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -207,15 +207,6 @@ "revision": "d0470491f56e734731bbf77991944c0dfdee3e0e", "version": "2.6.1" } - }, - { - "package": "UITextView+Placeholder", - "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder", - "state": { - "branch": null, - "revision": "20f513ded04a040cdf5467f0891849b1763ede3b", - "version": "1.4.1" - } } ] }, From 12349105e761ef54196a3f68353f9fd34c6c329b Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 19 Mar 2022 00:30:00 +0800 Subject: [PATCH 365/374] chore: update the snapshot documents and UITests --- AppStoreSnapshotTestPlan.xctestplan | 9 +- Documentation/Snapshot.md | 69 ++- Mastodon.xcodeproj/project.pbxproj | 329 +++++++++-- .../xcschemes/Mastodon - Snapshot.xcscheme | 4 +- .../xcschemes/xcschememanagement.plist | 8 +- .../Athens.imageset/Contents.json | 12 + .../Athens.imageset/IMG_1010.jpg | Bin 0 -> 2473276 bytes .../Scene/Compose/ComposeViewController.swift | 15 +- .../Compose/View/ComposeToolbarView.swift | 8 +- ...meTimelineViewController+DebugAction.swift | 2 +- .../HomeTimelineViewController.swift | 5 + .../HomeTimelineNavigationBarTitleView.swift | 3 + .../MastodonConfirmEmailViewModel.swift | 2 +- .../Profile/CachedProfileViewModel.swift | 2 + Mastodon/Supporting Files/SceneDelegate.swift | 16 + MastodonUITests/MastodonUISnapshotTests.swift | 520 +++++++++++------- Podfile | 2 +- Podfile.lock | 2 +- 18 files changed, 732 insertions(+), 276 deletions(-) create mode 100644 Mastodon/Resources/Preview Assets.xcassets/Athens.imageset/Contents.json create mode 100644 Mastodon/Resources/Preview Assets.xcassets/Athens.imageset/IMG_1010.jpg diff --git a/AppStoreSnapshotTestPlan.xctestplan b/AppStoreSnapshotTestPlan.xctestplan index 02e1644e6..8761c4c01 100644 --- a/AppStoreSnapshotTestPlan.xctestplan +++ b/AppStoreSnapshotTestPlan.xctestplan @@ -9,12 +9,19 @@ } ], "defaultOptions" : { + "defaultTestExecutionTimeAllowance" : 1800, "testTimeoutsEnabled" : true }, "testTargets" : [ { "selectedTests" : [ - "MastodonUISnapshotTests\/testSmoke()" + "MastodonUISnapshotTests\/testSmoke()", + "MastodonUISnapshotTests\/testSnapshotCompose()", + "MastodonUISnapshotTests\/testSnapshotHome()", + "MastodonUISnapshotTests\/testSnapshotProfile()", + "MastodonUISnapshotTests\/testSnapshotSearch()", + "MastodonUISnapshotTests\/testSnapshotServerRules()", + "MastodonUISnapshotTests\/testSnapshotThread()" ], "target" : { "containerPath" : "container:Mastodon.xcodeproj", diff --git a/Documentation/Snapshot.md b/Documentation/Snapshot.md index 5d794923b..10fececc2 100644 --- a/Documentation/Snapshot.md +++ b/Documentation/Snapshot.md @@ -8,12 +8,13 @@ The app use the Xcode UITest generate snapshots attachments. Then use the `xcpar # install xcparse from Homebrew brew install chargepoint/xcparse/xcparse ``` -## Take Snapshots -We use `xcodebuild` CLI tool to trigger UITest. To change device for snapshot. +## How it works +We use `xcodebuild` CLI tool to trigger UITest. -Replace the `name` in `-destinatio` option to change device. For example: +Set the `name` in `-destinatio` option to add device for snapshot. For example: `-destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (5th generation)' \` +You can list the avaiable simulator: ```zsh # list the destinations xcodebuild \ @@ -22,16 +23,27 @@ xcodebuild \ -derivedDataPath '~/Downloads/MastodonBuild/Derived' \ -workspace Mastodon.xcworkspace \ -scheme 'Mastodon - Snapshot' + +# output +Available destinations for the "Mastodon - Snapshot" scheme: + { platform:iOS Simulator, id:7F6D7727-AD49-4B79-B6F5-AEC538925576, OS:15.2, name:iPad (9th generation) } + { platform:iOS Simulator, id:BEB9533C-F786-40E6-8C38-248F6A11FC37, OS:15.2, name:iPad Air (4th generation) } + … ``` -#### Auto-Login before make snapshots +#### Note: +Multiple lines for destination will dispatches the parallel snapshot jobs. + + +## Login before make snapshots This script trigger the `MastodonUITests/MastodonUISnapshotTests/testSignInAccount` test case to sign-in the account. The test case may wait for 2FA code or email code. Please input it if needed. Also, you can skip this and sign-in the test account manually. Replace the `` and `` for test account. ```zsh # build and run test case for auto sign-in -TEST_RUNNER_email='' \ - TEST_RUNNER_password='' \ +TEST_RUNNER_login_domain='' \ + TEST_RUNNER_login_email='' \ + TEST_RUNNER_login_password='' \ xcodebuild \ test \ -derivedDataPath '~/Downloads/MastodonBuild/Derived' \ @@ -48,16 +60,31 @@ TEST_RUNNER_email='' \ Note: UITest may running silent. Open the Simulator.app to make the device display. -#### Take and extract snapshots +## Take and extract snapshots + +### 1. Setup status bar ```zsh +# boot devices +xcrun simctl boot 'iPhone 8 Plus' +xcrun simctl boot 'iPhone 13 Pro Max' +xcrun simctl boot 'iPad Pro (12.9-inch) (5th generation)' + # setup magic status bar xcrun simctl status_bar 'iPhone 13 Pro Max' override --time "9:41" --batteryState charged --batteryLevel 100 xcrun simctl status_bar 'iPhone 8 Plus' override --time "9:41" --batteryState charged --batteryLevel 100 xcrun simctl status_bar 'iPad Pro (12.9-inch) (5th generation)' override --time "9:41" --batteryState charged --batteryLevel 100 +``` +### 2. Take snapshots +The `TEST_RUNNER_` prefix will sets env value into test runner. + +```zsh # take snapshots -TEST_RUNNER_domain='' \ - TEST_RUNNER_username_snapshot='username@domain.com' \ +TEST_RUNNER_login_domain='' \ + TEST_RUNNER_login_email='' \ + TEST_RUNNER_login_password='' \ + TEST_RUNNER_thread_id='' \ + TEST_RUNNER_profile_id='' \ xcodebuild \ test \ -derivedDataPath '~/Downloads/MastodonBuild/Derived' \ @@ -67,8 +94,9 @@ TEST_RUNNER_domain='' \ -destination 'platform=iOS Simulator,name=iPhone 13 Pro Max' \ -destination 'platform=iOS Simulator,name=iPhone 8 Plus' \ -destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (5th generation)' \ - -testPlan 'AppStoreSnapshotTestPlan' \ - -only-testing:MastodonUITests/MastodonUISnapshotTests/testSnapshot + -test-iterations 3 \ + -retry-tests-on-failure \ + -testPlan 'AppStoreSnapshotTestPlan' # output: Test session results, code coverage, and logs: @@ -77,6 +105,18 @@ Test session results, code coverage, and logs: ** TEST SUCCEEDED ** ``` +#### Note: +Add `-only-testing:MastodonUITests/MastodonUISnapshotTests/testSnapshot…` to run specific test case. + +| Task | key | value | +| ------------------- | -------------- | ----------------------------------------------------- | +| testSignInAccount | login_domain | The server domain for user login | +| testSignInAccount | login_email | The user email for login | +| testSignInAccount | login_password | The user password for login | +| testSnapshotThread | thread_id | The ID for post which used for thread scene snapshot | +| testSnapshotProfile | profile_id | The ID for user which used for profile scene snapshot | + +### 3. Extract snapshots Use `xcparse screenshots ` extracts snapshots. ```zsh @@ -86,4 +126,11 @@ xcparse screenshots '' ~/Downloads/MastodonBuild/Screenshots/ # output 100% [============] 🎊 Export complete! 🎊 + +# group +mkdir 'iPhone 8 Plus' 'iPhone 13 Pro Max' 'iPad Pro (12.9-inch) (5th generation)' +find . -name "*iPad*" -type file -print0 | xargs -0 -I {} mv {} './iPad Pro (12.9-inch) (5th generation)' +find . -name "*iPhone 8*" -type file -print0 | xargs -0 -I {} mv {} './iPhone 8 Plus' +find . -name "*iPhone 13*" -type file -print0 | xargs -0 -I {} mv {} './iPhone 13 Pro Max' + ``` diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 8a5ae97c4..c08dd9805 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -700,6 +700,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0655B257371274BEB7EB1C19 /* Pods-Mastodon.release snapshot.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.release snapshot.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.release snapshot.xcconfig"; sourceTree = ""; }; + 0827D1674B2523503E8605F6 /* Pods-Mastodon-MastodonUITests.release snapshot.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.release snapshot.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.release snapshot.xcconfig"; sourceTree = ""; }; 0F1E2D0A2615C39400C38565 /* DoubleTitleLabelNavigationBarTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoubleTitleLabelNavigationBarTitleView.swift; sourceTree = ""; }; 0F2021FA2613262F000C64BF /* HashtagTimelineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagTimelineViewController.swift; sourceTree = ""; }; 0F202200261326E6000C64BF /* HashtagTimelineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagTimelineViewModel.swift; sourceTree = ""; }; @@ -719,6 +721,7 @@ 159AC43EFE0A1F95FCB358A4 /* Pods-MastodonIntent.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonIntent.release.xcconfig"; path = "Target Support Files/Pods-MastodonIntent/Pods-MastodonIntent.release.xcconfig"; sourceTree = ""; }; 164F0EBB267D4FE400249499 /* BoopSound.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = BoopSound.caf; sourceTree = ""; }; 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk - debug.xcconfig"; sourceTree = ""; }; + 2C12EB4B3699D5D597027962 /* Pods-MastodonIntent.release snapshot.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonIntent.release snapshot.xcconfig"; path = "Target Support Files/Pods-MastodonIntent/Pods-MastodonIntent.release snapshot.xcconfig"; sourceTree = ""; }; 2D198642261BF09500F0B013 /* SearchResultItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultItem.swift; sourceTree = ""; }; 2D198648261C0B8500F0B013 /* SearchResultSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultSection.swift; sourceTree = ""; }; 2D206B8525F5FB0900143C56 /* Double.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Double.swift; sourceTree = ""; }; @@ -783,6 +786,7 @@ 374AA339A20E0FAC75BCDA6D /* Pods_NotificationService.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NotificationService.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3B7FD8F28DDA8FBCE5562B78 /* Pods-NotificationService.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.asdk - debug.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.asdk - debug.xcconfig"; sourceTree = ""; }; 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Mastodon_MastodonUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E08A432F40BA7B9CAA9DB68 /* Pods-AppShared.release snapshot.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.release snapshot.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.release snapshot.xcconfig"; sourceTree = ""; }; 452147B2903DF38070FE56A2 /* Pods_MastodonTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MastodonTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 459EA4F43058CAB47719E963 /* Pods-Mastodon-MastodonUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.debug.xcconfig"; sourceTree = ""; }; 46DAB0EBDDFB678347CD96FF /* Pods-MastodonTests.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.asdk - release.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.asdk - release.xcconfig"; sourceTree = ""; }; @@ -814,6 +818,8 @@ 819CEC9DCAD8E8E7BD85A7BB /* Pods-Mastodon.asdk.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk.xcconfig"; sourceTree = ""; }; 861BE60ED27430771CFD578D /* Pods-MastodonIntent.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonIntent.debug.xcconfig"; path = "Target Support Files/Pods-MastodonIntent/Pods-MastodonIntent.debug.xcconfig"; sourceTree = ""; }; 8850E70A1D5FF51432E43653 /* Pods-Mastodon-MastodonUITests.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.asdk - release.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.asdk - release.xcconfig"; sourceTree = ""; }; + 8ADD558BE5B8255E5764A54F /* Pods-NotificationService.release snapshot.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.release snapshot.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.release snapshot.xcconfig"; sourceTree = ""; }; + 8E79CCBE51FBC3F7FE8CF49F /* Pods-MastodonTests.release snapshot.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.release snapshot.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.release snapshot.xcconfig"; sourceTree = ""; }; 8ED8C4B1F1BA2DCFF2926BB1 /* Pods-Mastodon-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-NotificationService/Pods-Mastodon-NotificationService.debug.xcconfig"; sourceTree = ""; }; 9553C689FFA9EBC880CAB78D /* Pods-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.debug.xcconfig"; sourceTree = ""; }; 95AD0663479892A2109EEFD0 /* Pods-ShareActionExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareActionExtension.release.xcconfig"; path = "Target Support Files/Pods-ShareActionExtension/Pods-ShareActionExtension.release.xcconfig"; sourceTree = ""; }; @@ -1340,6 +1346,7 @@ ECA373ABA86BE3C2D7ED878E /* Pods-AppShared.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.release.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.release.xcconfig"; sourceTree = ""; }; EE13214BC0246BE5210CCC10 /* Pods-AppShared.asdk.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.asdk.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.asdk.xcconfig"; sourceTree = ""; }; F31E7502A7E3945B98C6CBAF /* Pods-NotificationService.asdk.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.asdk.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.asdk.xcconfig"; sourceTree = ""; }; + F43DF6E8AB8C87914A64FC48 /* Pods-ShareActionExtension.release snapshot.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareActionExtension.release snapshot.xcconfig"; path = "Target Support Files/Pods-ShareActionExtension/Pods-ShareActionExtension.release snapshot.xcconfig"; sourceTree = ""; }; F4A2A2D7000E477CA459ADA9 /* Pods_AppShared.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AppShared.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F4C94BD75C96D0EFF5F6D961 /* Pods_MastodonIntent.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MastodonIntent.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F920AD4EC23B0D00F5CCA58E /* Pods-MastodonIntent.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonIntent.asdk - release.xcconfig"; path = "Target Support Files/Pods-MastodonIntent/Pods-MastodonIntent.asdk - release.xcconfig"; sourceTree = ""; }; @@ -1541,6 +1548,13 @@ C3789232A52F43529CA67E95 /* Pods-MastodonIntent.asdk - debug.xcconfig */, F920AD4EC23B0D00F5CCA58E /* Pods-MastodonIntent.asdk - release.xcconfig */, 159AC43EFE0A1F95FCB358A4 /* Pods-MastodonIntent.release.xcconfig */, + 3E08A432F40BA7B9CAA9DB68 /* Pods-AppShared.release snapshot.xcconfig */, + 0655B257371274BEB7EB1C19 /* Pods-Mastodon.release snapshot.xcconfig */, + 0827D1674B2523503E8605F6 /* Pods-Mastodon-MastodonUITests.release snapshot.xcconfig */, + 2C12EB4B3699D5D597027962 /* Pods-MastodonIntent.release snapshot.xcconfig */, + 8E79CCBE51FBC3F7FE8CF49F /* Pods-MastodonTests.release snapshot.xcconfig */, + 8ADD558BE5B8255E5764A54F /* Pods-NotificationService.release snapshot.xcconfig */, + F43DF6E8AB8C87914A64FC48 /* Pods-ShareActionExtension.release snapshot.xcconfig */, ); path = Pods; sourceTree = ""; @@ -3430,22 +3444,22 @@ ); mainGroup = DB427DC925BAA00100D1B89D; packageReferences = ( - DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */, + DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */, 2D61336725C18A4F00CAE157 /* XCRemoteSwiftPackageReference "AlamofireNetworkActivityIndicator" */, DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */, - 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */, - 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */, + 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer.git" */, + 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController.git" */, DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */, DBB525062611EAC0002F1F29 /* XCRemoteSwiftPackageReference "Tabman" */, - DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */, - DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */, - DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */, - DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */, - DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator" */, - DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin" */, - DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */, - DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */, - DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal" */, + DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess.git" */, + DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit.git" */, + DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources.git" */, + DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi.git" */, + DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator.git" */, + DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin.git" */, + DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit.git" */, + DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections.git" */, + DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal.git" */, ); productRefGroup = DB427DD325BAA00100D1B89D /* Products */; projectDirPath = ""; @@ -4925,6 +4939,237 @@ }; name = Release; }; + DBEB19E127E4658E00B0E80E /* Release Snapshot */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INTENTS_CODEGEN_LANGUAGE = Swift; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = SNAPSHOT; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = "Release Snapshot"; + }; + DBEB19E227E4658E00B0E80E /* Release Snapshot */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0655B257371274BEB7EB1C19 /* Pods-Mastodon.release snapshot.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 108; + DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = Mastodon/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0.7; + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Mastodon/Vender/Mastodon-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release Snapshot"; + }; + DBEB19E327E4658E00B0E80E /* Release Snapshot */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8E79CCBE51FBC3F7FE8CF49F /* Pods-MastodonTests.release snapshot.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = MastodonTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; + }; + name = "Release Snapshot"; + }; + DBEB19E427E4658E00B0E80E /* Release Snapshot */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0827D1674B2523503E8605F6 /* Pods-Mastodon-MastodonUITests.release snapshot.xcconfig */; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = MastodonUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Mastodon; + }; + name = "Release Snapshot"; + }; + DBEB19E527E4658E00B0E80E /* Release Snapshot */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3E08A432F40BA7B9CAA9DB68 /* Pods-AppShared.release snapshot.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 108; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 108; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = AppShared/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.AppShared; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = "Release Snapshot"; + }; + DBEB19E627E4658E00B0E80E /* Release Snapshot */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8ADD558BE5B8255E5764A54F /* Pods-NotificationService.release snapshot.xcconfig */; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 108; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = NotificationService/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0.7; + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release Snapshot"; + }; + DBEB19E727E4658E00B0E80E /* Release Snapshot */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F43DF6E8AB8C87914A64FC48 /* Pods-ShareActionExtension.release snapshot.xcconfig */; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 108; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = ShareActionExtension/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0.7; + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.ShareActionExtension; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release Snapshot"; + }; + DBEB19E827E4658E00B0E80E /* Release Snapshot */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2C12EB4B3699D5D597027962 /* Pods-MastodonIntent.release snapshot.xcconfig */; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 108; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = MastodonIntent/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0.7; + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.MastodonIntent; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "APP_EXTENSION $(inherited)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release Snapshot"; + }; DBF8AE1C263293E400C9C23C /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 9553C689FFA9EBC880CAB78D /* Pods-NotificationService.debug.xcconfig */; @@ -4981,6 +5226,7 @@ buildConfigurations = ( DB427DFA25BAA00100D1B89D /* Debug */, DB427DFB25BAA00100D1B89D /* Release */, + DBEB19E127E4658E00B0E80E /* Release Snapshot */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4990,6 +5236,7 @@ buildConfigurations = ( DB427DFD25BAA00100D1B89D /* Debug */, DB427DFE25BAA00100D1B89D /* Release */, + DBEB19E227E4658E00B0E80E /* Release Snapshot */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4999,6 +5246,7 @@ buildConfigurations = ( DB427E0025BAA00100D1B89D /* Debug */, DB427E0125BAA00100D1B89D /* Release */, + DBEB19E327E4658E00B0E80E /* Release Snapshot */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5008,6 +5256,7 @@ buildConfigurations = ( DB427E0325BAA00100D1B89D /* Debug */, DB427E0425BAA00100D1B89D /* Release */, + DBEB19E427E4658E00B0E80E /* Release Snapshot */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5017,6 +5266,7 @@ buildConfigurations = ( DB6804892637CD4C00430867 /* Debug */, DB68048A2637CD4C00430867 /* Release */, + DBEB19E527E4658E00B0E80E /* Release Snapshot */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5026,6 +5276,7 @@ buildConfigurations = ( DB8FABD026AEC7B2008E5AF4 /* Debug */, DB8FABD326AEC7B2008E5AF4 /* Release */, + DBEB19E827E4658E00B0E80E /* Release Snapshot */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5035,6 +5286,7 @@ buildConfigurations = ( DBC6461D26A170AB00B0E31B /* Debug */, DBC6462026A170AB00B0E31B /* Release */, + DBEB19E727E4658E00B0E80E /* Release Snapshot */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5044,6 +5296,7 @@ buildConfigurations = ( DBF8AE1C263293E400C9C23C /* Debug */, DBF8AE1D263293E400C9C23C /* Release */, + DBEB19E627E4658E00B0E80E /* Release Snapshot */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -5051,7 +5304,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */ = { + 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/vtourraine/ThirdPartyMailer.git"; requirement = { @@ -5067,7 +5320,7 @@ minimumVersion = 3.1.0; }; }; - 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */ = { + 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/TimOliver/TOCropViewController.git"; requirement = { @@ -5083,7 +5336,7 @@ minimumVersion = 0.1.1; }; }; - DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */ = { + DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/TwidereProject/MetaTextKit.git"; requirement = { @@ -5091,7 +5344,7 @@ version = 2.2.1; }; }; - DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin" */ = { + DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kean/Nuke-FLAnimatedImage-Plugin.git"; requirement = { @@ -5099,7 +5352,7 @@ minimumVersion = 8.0.0; }; }; - DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */ = { + DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/AlamofireImage.git"; requirement = { @@ -5107,7 +5360,7 @@ minimumVersion = 4.1.0; }; }; - DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */ = { + DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/apple/swift-collections.git"; requirement = { @@ -5115,7 +5368,7 @@ minimumVersion = 0.0.5; }; }; - DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */ = { + DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kishikawakatsumi/KeychainAccess.git"; requirement = { @@ -5131,7 +5384,7 @@ minimumVersion = 1.4.1; }; }; - DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal" */ = { + DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/slackhq/PanModal.git"; requirement = { @@ -5139,7 +5392,7 @@ minimumVersion = 1.2.7; }; }; - DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */ = { + DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/ra1028/DifferenceKit.git"; requirement = { @@ -5147,7 +5400,7 @@ version = 1.2.0; }; }; - DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */ = { + DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/DiffableDataSources.git"; requirement = { @@ -5155,7 +5408,7 @@ kind = branch; }; }; - DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */ = { + DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/cezheng/Fuzi.git"; requirement = { @@ -5171,7 +5424,7 @@ minimumVersion = 2.11.0; }; }; - DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator" */ = { + DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/FPSIndicator.git"; requirement = { @@ -5184,7 +5437,7 @@ /* Begin XCSwiftPackageProductDependency section */ 2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */ = { isa = XCSwiftPackageProductDependency; - package = 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */; + package = 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer.git" */; productName = ThirdPartyMailer; }; 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */ = { @@ -5194,7 +5447,7 @@ }; 2D939AC725EE14620076FA61 /* CropViewController */ = { isa = XCSwiftPackageProductDependency; - package = 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */; + package = 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController.git" */; productName = CropViewController; }; 5D526FE125BE9AC400460CB9 /* MastodonSDK */ = { @@ -5213,17 +5466,17 @@ }; DB01E23226A98F0900C3965B /* MastodonMeta */ = { isa = XCSwiftPackageProductDependency; - package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */; + package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit.git" */; productName = MastodonMeta; }; DB01E23426A98F0900C3965B /* MetaTextKit */ = { isa = XCSwiftPackageProductDependency; - package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit" */; + package = DB01E23126A98F0900C3965B /* XCRemoteSwiftPackageReference "MetaTextKit.git" */; productName = MetaTextKit; }; DB0C946426A6FD4D0088FB11 /* AlamofireImage */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; + package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */; productName = AlamofireImage; }; DB179266278D5A4A00B71DEB /* MastodonSDK */ = { @@ -5232,22 +5485,22 @@ }; DB3D0FF225BAA61700EAA174 /* AlamofireImage */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; + package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */; productName = AlamofireImage; }; DB552D4E26BBD10C00E481F6 /* OrderedCollections */ = { isa = XCSwiftPackageProductDependency; - package = DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections" */; + package = DB552D4D26BBD10C00E481F6 /* XCRemoteSwiftPackageReference "swift-collections.git" */; productName = OrderedCollections; }; DB68050F2637D0F800430867 /* KeychainAccess */ = { isa = XCSwiftPackageProductDependency; - package = DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */; + package = DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess.git" */; productName = KeychainAccess; }; DB6D9F41263527CE008423CD /* AlamofireImage */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; + package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage.git" */; productName = AlamofireImage; }; DB9A487D2603456B008B817C /* UITextView+Placeholder */ = { @@ -5257,22 +5510,22 @@ }; DBA5A52E26F07ED800CACBAA /* PanModal */ = { isa = XCSwiftPackageProductDependency; - package = DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal" */; + package = DBA5A52D26F07ED800CACBAA /* XCRemoteSwiftPackageReference "PanModal.git" */; productName = PanModal; }; DBAC6482267D0B21007FE9FD /* DifferenceKit */ = { isa = XCSwiftPackageProductDependency; - package = DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */; + package = DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit.git" */; productName = DifferenceKit; }; DBAC649D267DFE43007FE9FD /* DiffableDataSources */ = { isa = XCSwiftPackageProductDependency; - package = DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */; + package = DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources.git" */; productName = DiffableDataSources; }; DBAC64A0267E6D02007FE9FD /* Fuzi */ = { isa = XCSwiftPackageProductDependency; - package = DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */; + package = DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi.git" */; productName = Fuzi; }; DBB525072611EAC0002F1F29 /* Tabman */ = { @@ -5300,7 +5553,7 @@ }; DBF7A0FB26830C33004176A2 /* FPSIndicator */ = { isa = XCSwiftPackageProductDependency; - package = DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator" */; + package = DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator.git" */; productName = FPSIndicator; }; /* End XCSwiftPackageProductDependency section */ diff --git a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Snapshot.xcscheme b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Snapshot.xcscheme index 192847c1e..96cbba566 100644 --- a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Snapshot.xcscheme +++ b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Snapshot.xcscheme @@ -51,7 +51,7 @@ @@ -63,7 +63,7 @@ isShown orderHint - 16 + 15 CoreDataStack.xcscheme_^#shared#^_ @@ -104,7 +104,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 32 + 37 MastodonIntents.xcscheme_^#shared#^_ @@ -119,12 +119,12 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 33 + 36 ShareActionExtension.xcscheme_^#shared#^_ orderHint - 31 + 38 SuppressBuildableAutocreation diff --git a/Mastodon/Resources/Preview Assets.xcassets/Athens.imageset/Contents.json b/Mastodon/Resources/Preview Assets.xcassets/Athens.imageset/Contents.json new file mode 100644 index 000000000..786051dd9 --- /dev/null +++ b/Mastodon/Resources/Preview Assets.xcassets/Athens.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "IMG_1010.jpg", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Preview Assets.xcassets/Athens.imageset/IMG_1010.jpg b/Mastodon/Resources/Preview Assets.xcassets/Athens.imageset/IMG_1010.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0fce96bddee3e713ec024769b5b99d51d372f445 GIT binary patch literal 2473276 zcmb@tX*io(`!{?=5P~R;HY%pZE}^?k=++n$)L26Vod-m#Y&4-Y4++&l)0kV7NNWh% zDlNrE8(Il!+GwkWmWGnnJhg`MWbgZV@Bj1R{qP*`@t&E^thKJ|TIU+i;kUL2w#R_I z*5Q5^0l>)#&;rdq-BJb<3G3fe}4bH-G9GU-~Z8WO{Qduzu3QKg$pHXXmnjj!e!iEkXjq6^>4JuR5c$A<4SfvuFaZ41=Kp!> zlIy>13EI{1KWPb{0l@6l_V#xD|D-v*0)R@#Qr6)m>5_b3J)9BJmGFq#*y2)c+>vza;Yy$^Dl=qU%K$N{Zfc z(h%wYrvG0v+arKDu({0z6r^N&>8TH-P?nWVN~FK%wG6z2 zaS2VVq@sl@#EZIfuRdK0ZkhU^vPl|cK$=(b4*nauOY6|sZwvp3^shw!cLK%# zf0F3G0{vH>?Lj~m3=(x1SOLHT>t%kMe>0-Detp|*WCVo^5b)Jo&5`OZ4iPslDStoj z88J@fBYXE^)-o>GR@)8eknsol=*$d@7yJBxw-rOnr(n~i2yit(Kn)B@*`82!E!N1nL9_28!Svz4^!0* zP@pr1-J@5Rh0a}&pG5F=^4c>Lsz0#rkOGh1M}T0>NKfcXzBDvtO&v4dwfv&DRX#Ah+OI`UfJtX%Yjke|V0{J6?UL z^FZA0<3Iyat(cxNM8MxDI?6j7xdY()1GGDNkaOY1)5D{$oVQkdK;@d~YV;TJ!l3NIBVPa*mY9G-!~& zUxY(e4#Fg4)`?=WvuBVLXMFQL<>dA@vs<&)W*)JdS-z91m4shI7o0)J^(BIm!4Up; zyNo3nsUh!KYol?P3H0XMUoGn!M2X_|H#VWy`7fwWp!3v5CEpp2gl0_8j#!(|5EOI(YImcZv}5R@UiTe#!Vjtv zR=X|)htQ1Hp@0WM*(=`J?$BjNZajukIv+D{G*_^;4u&N5UH$4;D?e2K8{h79lUjCN9Z{eyx}k-HPwP0-B@-paNxH(p47TW z+Jn*xc)Ib1p>v-Q;c*SG#B)gIIzYij+&aZ+q?sKwBf zajz_RnWONxErO%)7QiOS^3*Kkx|fSc@N~wE`tRU`PEBp3>>fFB_p7q}xx*dQA+ypt zS@+3VChJSlfzEi_Vyvr_hjYJadbhwLTT_K^#0z2O>9)LJ|Ng|9L5a+4_1zSjA&!n;!h;pcUt__gHU5`Il@CP_lpka4NRyBXmP~hfvt0+lUd|sxpD8Jk$DD8j0uS=zXZC4 zNW!G9K+;_Nca01qajral-N0H7tlS3`G_3(foQdTe0?BZ1Ri)rIo_s2hZu9z7?EP2} z)>%{Z$4#w@(JL*00Z!R8P8X!L1J}K_TzEcm3N3b==`>qKERN7DT2@^7Mz7GM{GOu8vnF1k=c9It&c$rewAp~XoWA@ zTk4DYJi$J4#8*~c#SduXJL5QVBQDyFxYT&#Bsoc@-7t2ULoOd)I9la-RqZ-UAJSJ1 z68mEkNKe7Yvqj3}^5xeY(IR3)z;*Y_zupGkxp>!y(vzHWWM%miIQ2wT9UwOA!ArZP zcs`vjBn^lyEbXzm$}`SgUM|#nA;ugrfx5r-BFrV(kPQVaU1ao|@ogaS-d%s7cY{y4t1mA)eZm9;rQL)(zY3Az3)9NwDMui zGnul`g+ZE1y{5Z*7Ug;dtZrR_G<`&-D%MQMDul@am{N*cbPGYwoWYP5f&8l_i>L;nAm9~zfqL0 zOKvEeDA4^`oSjqswW;H zo75aItT~l;U69C=z%26&P60Qhlkees+;6E-#;L#1Ww8O|ZQwC_e6t}g^(5`a#ktrF zzPcg4mGj&tH1T|vdjLo~nMYGeaVaj!~hWiGk_+H5pFO)@~}Xl}`QsY}Q=> z#Q5{xsUJo$KtqdL?vsiaTqPI75uLzY{&0UTQ@k`nvla`W9k zlJ}1XH$qDN)7$idD=XJrmP#+2BkTQeM<#VZ*Z9?%XI6_$PNU+@?wm|~sOhcOih#U; zGy)#8z?9BVJ&^Y>*Bfg%GL*Q_nZQ?K%Nu<%tz;RN6yJ0V|1A<$tuOYHe~3Br6_Fk5 z+WY(v>g=PcgCM`Mw_nZwrg8E^wx|}O%3RujrtUPeap4q+8@fw0d^SzNVChcjLHcV= zUs&~Y$qPd)iU}#hRDJA;I37vnAW7v?cTQG7Vu#)GbqZflYG;IwILPlG0MPdwz{c7X ziTTcV@edOwDY)wpF>p^1SKY#D{9r4{oYfCf5XZ)5!zaYA3g6#Txrh5^(x(zHj}s;V z5!QH3wV#~y4=*4>SG@~i$S{8IHILuxwZ%Oz(o}hnw|7S3pl7x+Hg|E&ATDP}qhm?Q z_g;+=6mrp416MXL1=&Q^;MPf*61ZukUccv+ z;(dazXv8^;EtQ11tfNa!c5#3PaK>@X!))mdQ02w4C zUv{_=Gzw-OkAGS9tS+#?NP4KhN8I6v^HU}(k1BM@ig1@p-QO4_XV94mLdP_Z7ht_w zmVg6SzDd5(k(y_J@434xpHim4o6b#%DeJ?xKC`18c1GV{TC&ydaB*=Yii>^Lz+N3R z|KSOFAAh4`@Ksm|uEha$W{3Qz8ItB%?#>}N$U}jgW6dDbGgT$_GbZ>Q&c^Z<$AXmH zOMr{6Zx6Cdj{VNRY|R#zIJe6KkNwWdE*Veox4ALtX$;HsIyHEBZD_)kUmWRnln1us z#G1rrfW#hu^3JeKtc5)5pHo?Ti~4IbSFYjWy$*ee*rZ61&?y*mh5`CuN)-2B*gdk# z9>Q@*h4sKFkjqc~!*G0HRF;J+`ABYMy3{ikrgcCIM)$%HW-l`pD9ER#BD3_F&n@N~ z4Xk;V&|}2i*KeKti6(Bi2KLov)F>BYnCPq{A1yw-I^+rJ8!Q;KBKL7>*)m8a{(OFO zS;Y{o+DI{D4O_b-GIV*y-cV{3R8y=YW|nuq`e>Ss!D6l=#EQx4e|K!qCt&I4*Ly|4 zK1oV=@vbc~j7m<51dhx|r{|>9@_KJ`1%tG`$E7edotdOq`MXbkgz(=#3{TkX$vv!U zW7{61+flAuIn>ufl(1%?4rSxc*E^?dZqRTVM1DFCaw?eSf-;TG0D7d%jMUq62e^8z z7EEI|I`s5KNt{?}7~Dexh`_C|rSks-r2bHY#mRb?M|f78%bIglvvrOs5i`wPy8%Iz ztk#?vPd*ia`#yM&bFK=Qr%1|2Cf4ZfI`^eWO8MyI>?&tkS$SrVrds=KQX*XFQSU>| zsXp}J!$spCCHf`y)tR^ouJgJ72Ub`lq1HzxW*hAl1K0`kW<;UcWCFc<|T0@l#Q@V6B}$2 zAU#EK2Dr-wp*DS8RNAZeMJIleoo)oA2(_mUI*CAn+y@W{B_{%oFd z_;kq3Ht?Md4VU|os0nHFlN5Wvulw?Z-q=_wdvu}=o}jY{823ovb?OfySzjNoS?^eD zP!fLg@3?089*-6#UAKH~L|qC7ebW(pPJZwU&E2fGA0C19W+FJau5hpt{w_V3Qa4V1 z0(cC{-1Efonf31bYw48&uENuai9`1yJ*6%H+FoGL{ z;YEY(HV{?pR*Vk7wO;&!5QyEcd3$U?KQ4b8C@Wm-GqJjg>(cSOjV26Lgd>F8z&EzI z7JN{OFHWvLU}eh!1>uTJOy3!Sq>#)^6jwp)5qMaEpwyI-cT?ZRw7=_ldbZsKQ|gSX zZf%?Tt#!AIQQ+07xrh5c+_!l zCA|Jfb~n^NB9Qglrw;Wx)wMaUFo*WYfoo$vr48=6`b$TQ_YS*5pd&z1Tila)Qkolv zRyG_4>@~-Qy;&BMo0f-$p{!83pkFaMpa-Z+FUrLd`i9-4vSNCi$9{UcJwpU~V&0j@ zp5uTSP~h4f&gCNG-yb_KErS{9qGl~-xxhgL#eh4`^MFQjz>?E%x6@i~nm5uA;3)t+ zU(^<$h*Jd$!jM&JHKB*}$VUIDDtj!($!z%UN1oB>l_x;S zCaXEeMI5GUON`Mqh2hwe%#1SWRLg~?$sV^#r_C1NRBG=rarwV6wL+qxM7b-ZuL!hR z@kp8XX+?W3>H2^b?B{oa{0K5?M~$<2ro!zggN00?;L1g-ze$XF8Mhl?v5?P z*F2L9J&erceti%tHCVTm0er$6lY!Stx|-iDAe<)v&SA(9)P~&YbZ$5*ij*-Gqw8!3 zg+cs*E%2V>Y6fvt%Zy+uac7v=9@68k-4NxuIfByby_`7^ zs%Gq18a8A95wC3^xk3qS@bc?4ZuAOg$6`h3mID2|$e;!a_P#JlAC9ptGKf!l^f%#* zKvnm|SdGm_?Hr9Smwc{2t-LP-f6z;4p^q{hU(av9&%_E{kn|ZFqgDQd1quT*&sf1f z<@i$w12XxMe&W8W>)td~ZKpC9^-P*>>%8F%9YeWjqTbt;?k4 zaTxZ6WrXZ4i+2Jn7H4%|H5<&>Be8FwyayI-I7FMa_DbmqugaQqCzWR*^clhsz>XrC zP;;n)nh8hOTym1Q4xzxGAv+1C=QlsrIN18l=noi`w9kFERh4OGrUM$65T9iBzgGKl z-gGkGOGuh?H$pKeW^#Yr(x#k!$qr+SqZM!;t6;|KM4~V4!SRaKLhd$ThUS(J2Y%

      QWmoRmI7 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 jZhprhrd(5T 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%0As1-^8M4Yi& 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 z zwN=G^&_Ss%uNr?=GSSuNQ})Zi@RG|Q^0j+*>Hp2?b2#&Z7hUmgCV&mD3ep&soec1= z(e)7{O4kPqx!zz`>q?v`9I5!Jo6iSgK=g5?#u6@Xf1Qo)lE7ODw>O0w(LewJb}WiC z1u0nb5^$I4?B9X(Q2_{lq(71fLDb22lNve4ITL62ohy7H;Ea(fww?vX^Ih{!G9*%nDKieY)o&J9sqimPc)@slab#Q!?a!8kIfB#ye`S5An%s_>IyIO zWfCUdB{u6a`=K671fjy|*=OdDg31f``K5%#zB^FNrlboq+%Wz671dyWSzrCGqVrG` zfzMekweN4=#hbyyf9-uPRHkifxDV@qPvkG*f?|_n+&Whe6fLFYRFvQBP|15<>Hyto zZSk1Lafnq^Q95Z;n0Fh)M!<@i|DW#aHFvcVrHSZx4u7gtI~p}KMge68XnoSqU#|xh zgAp!pgmromOsjz}8x9DD_a+l8z)xi_Yw}l%Cngb}MM}c1)++*vbMF6+Da@r1g^z(W zd?60>X)?qG)Fq+b4{Z)3WP|E-4A6_r$dWon)Ojmw)iG@P-5B0%QT_>rjXs=(?186} zQ_cYpYx#{`>V0!}n9icco6Nk{qymJh(hBT=$AUN_Bry6o2D&V`RQN&XiM3Q;rcHsP6Et zLj{`@^v6N`WZWI-wq<9EA=ZD&Da3_w#Tam}mxiLRkOIHWFk^%ZC5Zn%ZKVnp-jtfi z(>0uy8f>1JVVv<6sIx1efBh;f`2q7RrX5FG17|pQ33f`XR$GPppGZ%4`wu9Hs_g>mN-U=?ohf4-25TZ z3U|4q(h$eYTe(pwvu$g7JShDXNp+4e&*ea zM;V!GaXmQ||NJXtI6{I4bjD2~v;R2q9GDOFe1B=Hd@Bp*q~w^xl>x)zq{mMCJ6_xz z9!4QTJ2zpD%4VVX>8HD&)3_CIbrVnWbYHUy zraO2c07l1RkyILK(rxhEL;pIfSDNY-isB^Pq0ZImue3in9ijMZNw@U=gN}BoUE+(* zDr$b1jdJy2EYgQA8z27UeNGOPU1j!YV_0$hf*S)58rq7-e>^nQ>Z-ZFLFNr+X>43G zMCHMhfS&NSX_`Gk4i}10Sr>)bx}Mwd{O9+FfxeGqrPnm6>w9NqQH88TIWI+oPmgO3 z6s1I^FELXde7Cf96kW_8b{$ostvxvTtR7H#bF>vjkP8vBZezF$S8tn+z}c;kj`h`6 zejZxdCfhu%lSOsfV7&7*x4vk-c_;hxSUWZnE%{oJabGvZCchO*+}v3F@$6W9PiH1gKN)rbkZuFPyHyw{etdtmeC~;9Hb@J}ZjIqsy{q+HdUoUrA zf^=_|h0RT`@3Zzx#ebhPdS>wSVqj@5!oQ2dG)yKZ|3Ug$^ZQe2-p+au`~Lw%0bWFF zo=BKUZA&LIMdvg`V9}&iBqL90u~13*q`a4t=h84p9Hygbul$B(Qc@6f({8@~uUUYh zdzc1byw??^ORb(66ER3jhsP(cbGuyzX@|Z3dilEG>PrKyDEZ9~dLb`8d$i+W1h_+e+DnO-abah9u-o6ut_zNrY6xz&*^&`Qbr$vXcx;iMs$6S|WN1e|wJnbiHN~ z6><0gJlkm$8OkGR*tI={x+}Wxm(e`F*IW<#jd$FxZnH_~jaAB9@ye%g;lz?FM%PSj zs+7(d*q=U;073}?ikV|yS&2?l+mj;a9$XwoimjEq6ZZq(bTlBC{ne!QGuEs0)HlN! zZ!-k_4is%)8>&%~Mj~{taMagFFGi$E#wF#tG-xGn+=0qJ)Rc`8jT6!98bwWt7N&ow z61|^ucOoYyb>BmlAHvRjCMH-a*gJ z_%ag*2kr6effwmxlyA+J>jjTuNJ+ol2uUNsex2F$NzH>UyWjbW`GxSy0${fBj+YO$ zVK=F63l8;3xSM90SC5}$S~i>y_M?C@Bdf^41_~G~4pWZw{~2I%K4U^g-K!Mu_W8D9 z)q5md`EFJ*pi1k6nb_|B)@t?PMu~Piofk3qfOi&AMs2nFa%p%#05)Z!XP1Vx<)M|; zvT8^4vFPV*p8cs5gs6Y=q^V>rW7|?3+M|v2A2>=rO zOm^maniDOaGUeVs#M4*4`!c>iKD&*na>f7-_G0t@bc~Z4G2iS4JJP@W)IBM-$u#U^ z%_{(+x2!e1O0nYPERpB3*(c0A@-QtXdN-G^lyXnSBx3WJ^mnq>QsWvJA@$XbOnaaQXJ zhhb;0ZCKAc){`eB`AiVIy;{-zz12c7<)3f^|18T= zl2^-rb@vw1#78!cLI$h}_DU(-*n+56qB7=ibg1{5OOGEAP@SFl($Ahytkl`F{f0^H zu2YDL=&3urmi?kQh03qjfQD3DUZhxJi~;^&s4(y4Df?=VXCc`sWBpg`i?2=aqi6Y>&c}AW zf$y}!$MVqV~U%R(q(0V!SOUs7k3R_%9ue{78$)h)G%M(Mg0Xt-c7O8BHeXXV)3?S)6UY9 zcai?{$&QHd!t<1%ttd7^Od1nXT)pXH-|r!0&`io$#@$CWUvs>{QcYCgC_<;xxhwbE zzLH6Z39G%P$FVzkk4inD(~vq@nz|twd!+QwFbr0PLAUGfcmq{qay!at7r&OajoCEMz1t?)HCJo{#%AO;UEB>YL)HHt`Dgs_FTSnQIFCK+soRsz@DCJfOzi$D;!LCSio!Las4at|scP5ww_ z3rz@qRmyzF@}zXo|19boarV^yxE|5PN-b^Gkoj>}#{QiPuTT-~mZ+{9t5y2mWwZ&&{+aY5MGWXRWLoz19ky>V9sHx+iu<#O6Op zQ>kE6l8GGt3w?UmvQN^8Twrm)z5Hi|Z^6F(52BoF&8++Ph*_rTLEMo9(^9p^jT@dJ z|3OE7_q934Ee^5EvkO@I_#%4^5#M&vsv&yc)41Ed=Wbl4t8yN@#|&7dSZr8NRPloT zcjNonq(d*~DIn74!Q=djns^F6mL(U?60a`lzD{===;AW8b`LfG7CTwJYgzJpCK~4Z z;^ED!yWe`pxhT0`G1d49l{X1Zuh)str2p*~+#eZU_w4^P9Os=7Xj5G7(RTOG3z|&o z5C`zz6>M%|ms|0E)_aTco+KF-eiy#=vk=#IXg&*b4fc%hIp%m&_VkPTF9u>D7>g60 zggRnhB!exiGag1Sfet!dfOy4bFIIEA>&=81{hX!e~% zZimHeDYez2r9Q;#`@}+p$+GXUSa#1vO29BF7X3ELteT6Nv@9h)_ht!_qCe4}8C`e@ zq8K?`aUnWH)`CXueh=o`rB`rKhO>Oa359t(TEeHTVMqA8_|K9S{WA{oCFYrFD5;e} z+~L#S*-zcKzUKX|*sFY0KbtobK}KHsvP2_vQ5{;GtNq%&EytXG&o^!Kx8$e4Z#WbO zpKpau=T3bFEE5Z8cSB+Sj0o&<)4$twni{TETR^tMwmw%`6jOy6YSkiI4wQV~Fb>06 zC>Z1z$|TQP9?jt}`z24Me<+v1-sE#ICDA^0^*0qsVuuwX3g?H|$~OO-3wY5ukm^Fu zoFYHMT-13p-fi;w8bXbdR&oeVmoS1_j@sz7c`2MFO!U(1P#($Sa3**YoVcRZB${A> zw;y)1Ky30vVFON@I=XA!Q{>dQ%+kIG3wBU>$9)0SM#=7>jQ4&FL2*jTz-+ij#HT8Z z$b%^coo1fwSnUcUrRlgYwPi?rYvFs7G{4B&95mI$oy#YY+3y^oX$$TfQ3mRjjhltS ztv+_il`vOO%{whlS9271s@V-?yr+TqHu^B;Y3FkE58B%%AYX+SJp~}bU)TvHdYyua z2NL!Tc*Cg~_cG&r(>ZB~i!0p}Gmp1z5(t{>3TaAC)#2V<)#p32=Jfxe!pRu;++$+) zI&$*|U7z?M!|%xBCRIjc`JleTtIy?n%j1j$3!mr=>(I345ZR#GS)wQdXnl%3rY;E9bJw0c7>Cj)@?_R{z6Mgu>cO?WhKa&<@tp zGv&s;iV)vMavb9lB&?ob_E$88%@5v^-#}m{3JK*O7ZL!=o%T38sW)#U4XHtF7sJP7O?x$ON6SvP4Ze6!8STEz>D2By)?5Op? z&3M|dRx6znO3|d|U02=9lf+V_WWAZmy+$@-Ipa;kgso57vThw3I3LI=6O1*vfYaD) z722%<@yYH|$lU{5u+e%V^LQm%Xe-3J56Uc(`hxqCQj~ML^Sk>He+wT!mr?n z?x2mgqAKM6B){>Yz20)AmZUcZUm110^g-Q%+k%<5GVz)K3#AfK>ITxe%GI&*BvGBo zb=(bCGV?TPraGvv2Y2>Ip}WK#mL8nIA49m$4=eRU?~7i*TIAtNr3$w)n={+o3OaOE z?K;)r#;#&7-u(X9WdaVn7;%E4={*CZ%z<)DVuM`eZT9Nf7lVRCAx519C^2;j(KV83ksad7^Epp7I?^P+c<#Ck5xJPs!)~5bt`BWZR5gN8f$Fu za#0PK?O*3qs(8qxd~L4CyvDi=cG5}B{2)<*js7;Du!(d$t9ks@Lb9WX0uliMwb3E5 z0$zbcoN&`6O2mG-&XKypCR*#?4+pe+)=xerq4*b5JSqQ-gqN1q$A6V=DsB?bW-0sb zupOWr~b|WaJ$!alX=fpK2qZ>Z! z7e3`zuRDesADg!c^3%c0sXwi=I_uw=Jqvc=E1rmv?#Bk4HhkY5@mS9{&pGADSe|Jq zq;}QnDPy_I(B*U3NE0T67A2Bx{{@vv<5kI7AiWh>Sd}xQsx_ure{79@YiMUqc z*z&i!dY$Pw;Yc_*&s8G*!xU-gN`2%+a(g*X+-8ll&F>2Y%x7f^fYoQ=a+w9nZ_aF= zWVb5FMdWrmLNWZZSoBPj!Q5iu+qIHY8u&L;s4=!NFGc}lm1RQ-rwizeZke@CxGN%EYC+&R7mX$ZUB4>KWb)gj`l;X z_U>-8-6`*B@h}VBAvtT>@4H1fYJE|1t&r94U9EmX1yZ+lgQ0#TMfU)F#@Odfn}CFE zgAPmEp09k4t?M$h+&+K?RGv#x3}KH8pU@&o5x;+>BhO>?2h$r3`?gY1tXeQ2(x_-z zdhl}B1+Asu!%iw2C-Nw4 zaZc|z+2FvzewIoZP>KNC_+W&v@%^qG!cW6ZXSwcRRKEZZU}uxCmJ8Qbf85Jy#_yny z?Pu+g;P=uX<25wI75P29$zl}-fgZ4*+Qb6;yCpQiK|^Ei(}hNo(Kl6d-+Qd^H1|LG zC=f1{^OoNAHmEWUsdiAwedjKq7DZ`rA$=on4Ro&sadwau<^d*{9goD+w_a%!ZwHbQ zPtgMQmCMDTZD^&g_^MRTUtT5ow`S|PrycP-d5jGr7nHDNg_vO9WV;DtXt##rizr3S zq8AF;1ra>}8-{`_vizTx8XlH72WyI6E+LVc{s_GZJ7oEtj4+Bi-dSW5HW3PEP5`}J zfeMAG>3WUe1JV;{o?4{x@W%7`^qTC4()er9*x4D}AypU+-PYG}DCOqSHjkdD+pFA7*$NF8cfQxpP*cO6R=2BfHP1U-F(-2z!*cFu(Gn^p4*} zeKuIa{h;gYSHm-&=r5+r8Li!Sw=Oxyf7eBQPq4;P0yh3$2UBHQaRo=yRNo$^*i6!h zeb9mQiTM1jmu<1paQUYx?%fmT*T^fI%0ZFkTTV2XM0**M2^(E3vWX}21wsXc2mx*ihmUr z($vRZ9xBwmgOLr3;B!QB*Mk&xXAw5+?M}BVHb6u|H@yBdi6-%fZ0zb}8QawY_oU=l zoKpW1ryg2=AkdR_Am|B53u4EdUb;EzuN1SyemoLae309K{y|XPa89MrIOl?vO3zt2|cL2pth1xd@(aGv-F_A+hBM0 zrlfn`-aqJ#WeyY0`aIEkR|X^onYUWIFp~S0D*z^Je!!BbRQo0UNYGxkivN%t2Fz}> z7$}Dz2(78oBqo|(?_g3VqJ?DMp4y2|O4Ib0jG{n7;8pNR*4bm?iSX%m7&~>Q%eaNH zn_s2(exz)>$+2BI@8Zx>A(#w&@+Mt(VuD5J%{J4K(uuIksdE4d<3c`7a7yOeKp8zV zBbaxo4<;a=h%RYGv2#Q6uICyKKG9|P(Pm;MlT1qu0-Xhgm=waKHnCp=>8Z#62?4ZXqrx}rJt*{Px(ydvc`Dl+nB=#4_SnRnBE?!QTe#T`Daz4T39+MX4VOi zDL=2UFWYfK6(?bTg^>`Y7O*bUwu<~W_^a{AwK9eV5yUKLn@kqf`S9Y>DC{#yvk?I= zi+8zjgxWyedIhMKKHbV025OfXRHmKYLlKu6rxfis#g6b~;gi@OcUq%yLSmQItbcj`0mlD2ech0HX3wsrj+N!gP?)JNM+y7G(L@ROt){*HhaYIy~h0gvg2U}?y|B!2C z9uJR&;iu=xvgS=6pJh+=Z927iP?$R(@fRQ8co~ekkWu8YJT=J9YRpxRjy4$vOX{`v zhpGHJjh3k?3p@|VPHv5j=YMJNHgVluX@vSUYu>)~O3S-bxp{WLQCu#ZC@&lU-R)FL z>9M360`GLYFC=YExyC_o=gVz?HFldhjQV3IR?2rmYC(_^97*{2XDEE;V*)~k?J1#r zPX#By&u;WBH{oK@&_G_zGn4t928u0rBmB+yWN}}e-T0Zt)E1W>rT$d$p{t8$hAi3zqPD!ya2J z+H%(O181YbqbU89Y*d){JM+kgf{~ZDK7^KS(l3tpLed|8kn!GGUQD^oD8RL^l|!4C z7_4LvO^U-iW#NB0D{{pN6;a~O88!!<%@;^I8oCE0OT0(ZZ(LAK>GdCPQLI9g{+aD; z^tbHcj$``39B3tR?h~mv)ZB=*=@>v-L;HoKg799!i&xn(wj!26fvBaKU8z1xtp4MZ zRzi9@bn;#SU%_?I>1>L*9YVLguSB=Zzr5(VT>TodvMM zulFhx2(PcGMKJSV@)nBM`o0#@fjAq4z?50oiG?*zg=pm{j1H9Z(*J$lN+-gu)-ag; zukZieg{V_OG$@}pz;D#&7*ajI7mVfiUFvzI1>bOGb{_4oIX-;EN_BhF6+?Wzx>E5$ z#$3Rp8-wNQ7t@c=Li~n$n8dRCx@s{5o=NI>p`SUmiqf-en{)1ast!*|R$E$<$nMFy zf0Ays@8pYP9u4mhSa0OoTDRWR)sdkgnh;02uH0KmKQ{BwTfig;7A*VFl5d_Hue53@ z$r*w;RL}n9ii6*PDY;Y>CVKS|-VWb+Y;_pr(19Q$9+TWHjjz6U7)A@edzERx9xAI2 ziAuV|&fP|ZOJF1H+CAjd%kb8>l}9gqk6mNKBh5~o$$}ki+!Rog`IzlMinp2S=gd+| zni1T=6YLQerIO81w>)S%8$b?b8&o%Y!8?O^Y$U(#ylOzVdOg1NY@YVkKTV`C&;~p!i5Qu3 zE)$@P7%n1KzA|Z}SL8wtNvW$&mL!3#5#`^BptAT;*NcIwf%|kbwiD&Fj!98#{b?Gw z8f3LpavEFe*wi*6A0u8N(A;oP6Y5o$w_HJtE5=jp+mPfI(j?4X+w_L(5yZP)BQMs$ z!N-iToT5o~wy>1y!-67kOR8i)(U26X2%%)w;q#(i)u+`o`%H!OkCi_J3jtD zj?O)v>GuEQpBd&jsj10^P-dx|Vh&@-F`2`pgUYEKZe+;$Fhp|CoJ%Z+#E^<2+&T;~ zr*PxGlT&KM%9%(G-`{or{^jxT$9%S3*Zci?J)a*m%x@ITPN@m_ti0%G3tF7Uahs;> z_-R4ZK3|=acGYoF^-8^BMarsr+m4}W@0$HtV{ahK;MQ8XQ`esA^k&BWgU?=amjpQy&#DDitt3N z&-oN>3j>q{Re_%4h_3kjhfJ$JH6v^221di*NhtDLnLYi%qI6iVtH20|rKYd;6u8iPV*LaX7&(`Ye+TDDG@8%E+CaXi`aBZnMg6i>^|K{7S zdRlf~8JDm&+qS7{YAuhzet;BJeqz<_7ufFT> zxvdZD`J{|Aets<*;TXQRgDZ!qRr)F4&$7f?e6f7eWU2!N2^@z&+e{J7dN(=7fkGBY zqVMP)Qg$8xgZ}WbXJG$|lKq@yJJ!0lpwr-L`}Yg`mfGy1KZi14pJbqu-0a!E2~}B1T3!&cH^FNnlpmk9$&i z#)_u?q|yd-`RupzOaFv-er4vZ>B@^8V8-SMju+gQ_XPG00D~rY?0%=Z|5wDBax{;F zP3DHq@@H~LI9Q%@hT24;qY6Y{ZbT54$eph4>GE_;W|EO9h=Yjqws|j+L=~&w%jL-{ ziVisHF3_jF6#2?<5{h`Fuw%Pg#&_~S2wMv(vc58BxXdmq@C<@rP&|i)*{jRk^0QnT z(}GlM7lne?Vg_F?tE6wYkG}aGE2Utz|K-7)<8jDET3DG$Ny>Qylh5e)SK84`;gpl4 zexnoTZv_THY+hRqNF{JFaTqzgPohtUfi5!^Cq2kK^&doG&E^p^|Ehg?{8 zjc%WJaA#6HGrKB&SGu+(vp2Dt>!@L+>DhP^TuA;;pBq@3oVJmMN|ENV*g0i-7_jkH zZW%HiW8YZqsFQ>eU5zpp&K8Vus#=&}OEFsABnC!#yS{k>u~#jX3BQL^1DgZGLIGQdXkWCr zQNAhrd9YAVYKQam%-$b>%A@+LZ;~1JyDCFMILlH#-@VqfQM@-?dLcjPr3TIp!k)uO zW*Fg%WmE+$bDe40D+81ZTja*dqd3dEd1>Qce3-XdxbY-$Y5RU4qBp!swe8TO+o4Vo zYe67Kd)lL+n3dUd0clVU?FJHdeQ5jChjhU?)hT-|9pt5>Cv~=M$S@QA2l# zKA&=|O=cjuhmiT1c>1}KM8Q%;Wyce9XnZ zB)6(hY~HU$wFXV7GjgCLnqQohvNE*7ppsh~$Zw1(Xs_*Q4{#^-n>nzAp+!+F@Ippm z^x4rO6zN9TT=B9##YE>i_pLferJ`q2PxbQ6vbN>~j`Xo#!+6FMsN&~tjKWg6&LKN~ z8+fxA*$BkRE&v1!Zj9q=GUDHDE~tS&m-G)!w|`D0^L>Tjq8X%haz23!ta|%2UMf3b zVu)3-Mu`~uQ?-VkLSW}PVmq(#c;##hv|n#8B#%4GqjLwdPh@$HLTJGEQS|SuMlIW_ z^Bi`%4!?&w2yXUkf2YWUfKhJYi6=GST`l>=QYM+&aqg574A5U#9!A!#GLNIh1n|Y7 zTu`?n2^tgD%UFan<~LkLGLu@m`dMi3^MB4A4dP=y(=04Xf-Hs%hZ~jS6C$@AB$>B} zVEGi3dz0xka00S?ailjOLh)DRjf^vY)*`x#CY2TPk7i1hK>kE?J$q>@Y0ASVJ2X(! z9W1#nraOi4N)1{PPO@vuYJOpKI7#h>lLfYATtCv$(eTFbeWkE<*&LWmL{_)3yt*RY z74{kOz&I2VepXul9Q_1;YQ7TSq#8;ymYoXau(nVznJ)-bs>vE-{CwiL;<1rTK%t=p z?@8tB?1vn?U(L{EA%H${A zpIR{X&j3LI)l7}VA(^0<3Rqgec0VA%SwvFPeN(niXuz~J-)*|?9V-gDZg=<~vss1XKj%(nU9Eed z3U(p9U3HR#K+a68i-KilP;OE zG5cbC3K-h3hLO<9SRaoyPn(lbVHF+M-45?Gfxy6a#Ui4IaVP7Xs;_l+f;J=SR;34@ zG(GVfn?tNpQHp?N)_mgF3P3U!r7S}CD2p--wg1*Hc1fe zlNmKWdY&F{ptFa?+YkmpG5BMneIx&&hcijDpz9U556xL#0WprL$%j!QqMhM4wh*kR zXObEOKs#9_?8wxt$iy3vX-xcf)n^u1E!WNw)#>zG*vg~=8A=dAkcNFo%Q7C-Y*z}C z)N9}1YV+^YwB=?O4mO{Hbo+6pV9u}OrO z&u_p+UIBG}&bV{4Qc;qFq;`Gx`CH{eg52xE(r3OlhU3qmb$|mIdtfr;F>;|4LrpdJ ziV*bxur9V7Fps76lZ=3R^P8g#crp~RxGm;ErD(hrW&;M2<~DgM(q_*2N_ zzzUmZlPBmVgROQ3<0$;VKFzK7(X|q920R8U4gL(&@gMorN(bQ9WqxY~<;;JXty(FT zE;g0+6To4o$%VR2*} z-ZLo0>V}J-rkZ#Q|O=;A(a4F1NFBUb&Zv5SU{FSpo;;RSNJBs2Y~e(a1lXFQ{L3_061o$A&PiyGi}`{#bpEx44tUk#;; z{o5U&yCCYW`027w9adl~`8A^d%eRInx0<7Q<>#-RpsrzL_1vp9HT?nBR|HDW zF4S!JmvuF|@jWmiv2})6Us9jf>PVUUwQL4X>&Ve9rR85AEUWuM4-5^}lv~bV*pM<@w)GzI zg=N8uY6%hj0a5o0>7bFBOTHXSZ zc}F%ju2R|KvLAmPt}{%aX0*?bR1T2Jt+5t2zyQ z!jtbrZ$7gCK7Tx^522WP<^7N;dbMkq9()dw;e8_W1?-4AGhilufed(dMmmf4;~DES zTMz!^(_Tint5{lQ1XdId?=#bYC!3+|nIXmcI!Dcg=kUgL&+}l?=yi;vt>rAJXdC_y zQrnQT4h>!lX<`3%aFxsZ$?B44yLcJEjD0ScjoZ#h6IGlU)WiYDe@*2&qePxI_bQIY z-)ppkfQHWSLaU%IF&W2yu!G7mwkW`upN7vEZhfV}8zEGzlRV*C&Q9AaLe<=_qi+|v z@kQ1JO;>{%Z)!=Rd;bXWdqj*|1Vm!&n?*_@<$S#g#r7^OjxoXk6F|V?c=D*6TZOoAeSj5zPwqv zN0~C&*=<1$YTxhEKLbX>dCA@Xj}j*GTE#_T`LVmCXv4%+^&j>KIn9%n7#P{Vng+Y~Jw^ah zpV8=0Am@0=Sx2I|&a38v^K#4O>+qT1REL?|2!SmO@-s*={9~+x#W+~K0kXW$gPCFX zgc5}!^K~pU>U?9*&!V)F?qFO)7mO9=?P)t=L2We^iEyUZvwW?L> zWULUp7zKTJ{KZFm)uNc^aB>hSaomQE?F~Xw2We=hR}0&3R6-X6!euAx71`JS6p0`x zlx~r)J`4n#{r4o-T$fWe`R7H44B~Amc;s>@Ha6jpp@P_zges z>;Szd3UoUN6v>LLk)iQ@y(^#d?*|?+CV(TbZ-brY>M|G$>rt3e=f#8+6|q&v2+Cm& zhS$nY{+_`lKH22p?qw~r~7K-eYXVAbq>rMgQz$EwDy zJnHD9t+fvIIp1Dy-ZrOIB6c0>KXLgUM#4JHy<=a{=WZre+V~0wAr?hZ7N|k~M@oY3 zGdxTO_FMieSKqonBafQes6HgS-iCg-hld4%K z0Frq!B7)((d0a;8{B!i!Y8v}@Y9M8#%}BjGCB8MFPuDNBSg7+n{sO#VakgO#6NA4l zN(Y?&mRAFor`ldN2q9Ie#8h2!+c?%#r|qubTm!6`ZCqo^^3i9vwIB;Odo~{cqvBu)uy4 z>_AW$>|@#4x_Cf&oDVL{>2N80Z3k;IHwh9XmH(WY@+iY7B?=ZC8yE{Wtb>--jQV+J z+1cH5BmCPGpVzLZDt1(;+y4e=gc~J6225FwY)*<;3NqHo*Lc`tl~tYbKz8!fmS+=Q zKY+I|`Xmq9*dB96q+8SZFsiN#9YGepFAoTDC)J|=odciwU#}InD8~_jCa?tMm%~xwj~ROF;BzVEOa=>%wq>=EyjVFEnX4jN^YP&@;a80+ieQt|>WJ(= z@=)Y(!2tqzdi^|@g*iV1sOcSb$~oyhW%Qd0N{UP3pMgK%C3C2y_d0)p3^5LWZba8o zIz`E2k!e>Uf+&!-r7&`aM{51921TYfx9gHRx%u|E@D8=tL*~K2l+!2Np}QBt7u+l_ z7E&p7=cK4xR1_tBO@Por*umK(aolXj3Ih%83+se)TZ_~!{b0k9L&LO)jzfh}_MhVu z3v-WL7kw$x9kF1nCVkvfQF1li`Yz?!6uD z4}yrkBteA1f%aqbUh*~b$2GRB4q~fb>X>G*YB)coVBw#WC4?OZ$|Eig|WVq9?t-6Hsc3nFA{}7+FNUU{cB}&7hHfTVhP*Av7HO>-XTJxASq~ zalb3XvrN`i37e<`1Ao98{tyFiH(Ha@5%m8cg@+j^9aYT{N85k;x1Ams+-@1+yX^bc zwq@9(!EGxP^!q^s*ilfU2`i}PLl(_$Sx9}AIwNS>u;hxN{z&!dw;y^}FEo~TFd&>= zMg{I0Oom=QZALN_LDGc7eQyLT#;C+N68`F; zrD)DG0Ud#K#W5bKBV?U($?lQaI$M zx?0GWM}EfeC9^L6C|jl={)9QMYs#2|K?X*}^}0 z?UzFjnC9V}u2xHEjr$YesgciO1M;-SaqdAr!J;`StN`JTNXnlFWc3Q$26Kx2s|eCv ztbXK3_S=nx5&K?DDPJy|JDF#E-Un4wK)+F_neO6B9lgsZrW?RY_tj0zF|K*i4coHS zEknSG+fgFn6w!w*@jn=}VVi1J;=Ez5Qd(yDbO)PHKYg#>viky`ng+tQ zpEQ|$^gk%gP7()1;aiTESs%zDRA0{yU4AZI4sZi`pkJv8Ts-iX7DR^L2-?8Ue_*@&4YMZ7=dGGOU^BYYzEwgUw zc}-cYbv8rK(?P)Q^O0#-`|;#CP9x|VFZ*vBuzE#ezdzHT3U+$AiX$G{*`q8A#=*?T z!B8M^7*Ou%p=hmzMnVe|_Mf{_Cn^A(WD|{g9Wb;QvIkk7kHBkJ;V=2QkPkg?T@8Mf zOOhU!AmXGE{3l~zz$X?FKmflA5c-;pZ64Zrowmi^%kdv4LVFabmfx{8zPYjzQ>nkt zHHu=}CIWKQbo*uj>nX8SaY!<)^BD|ABN#}|Th!Yi38F*K%mwuS|I7{T(?1MpC!rBV zmjW(m3yF};Ic4}~dLaE>E-V)FPDG3?3*NEy@PO~e3{+;3Z&+V*Ze}PQI|2MdjhJ0= zfpS7&9I`Mc$y2cw6Qq(zaNyg%S0+PYih01b#I8;uHHQpy4$y=!j@tr60?)qI+vVVF zB0xn>O~2@8$vlFdg8eM+y{(7|nes5Q9WDu-df_3jF?|d1 zZfLzSF0@J;X9qy<_Tr75oG+vyR2EF8$>`sbPF^thuBXZC*dp6_1o{`ud>41b=9p5W+Z#+wyJYrZx8 zcE4<0THUM3;^6!|4!**_30wOy-50u@IKGye35_~2RIGG6r?_Qm83ZX8_Jy(iI(dTO z9IZkh_uj|1pi}iG5i(?JMTSXS(Cy`5Mj+I+D_|)ybp2JaOPpjGoVA=dWFQhEX?`(* z`-(bRvUW`$?P;+JdJRWaJzNSGIA6}6`FrQxd+S+jV^ynRHTmk~dgh}J=<3ugs0`j_ z%IjOfi(-A+rLUNtB7P5_5nZh$T5#YD-D5ztMeb-@xP%!V%7Wk^5~A{NDm^Rg53Q< zJCO547D22s&sX>+xdt2F_-zNrHb~Y%#26n1C;#c6j=yl_Rnb)n=$55%$6;}LrsV4By^Ri=879W_QDD=krnUqyGrp7Wh1q(COj33eSJHPx56vDpBmcLO1$74AI9T2;a()XFMVo z77~ZF{)O3iVUEa^$PHE#|5lzMou?^gRNU?i|HP1C;3<9*_ZRa6K=A1KJ-ed3TgUs1 zY(#v&+Ps)?e)lg;FI&ggM*W+nh zmUjA7r-SG21g)eVR7bOSd@o3bB^Mxq!8tT>lqM~0P*wY5vJCe=3R%~1OshGgLRv}Q zo;P}@V0u;C|3@}SYB(;eJbd9CSUJa&MVk2%&Vr(=pi#dy5+S_?=|>%ERjZ-0=p(? zZ<$+$UA91Lb?Kzsn=Mj}<9@0ba$j%$Ewi?g4pK65ol0WAOI~7%&_cxal&xH7tK5=Vb80_|Qm_(n(C}Gspe+ zMC&rUeuq}29K0S~NyqieS*N7i3aELY5ua0YP+~-*jtap5KXB|z4VsSoD^4%if}Rir zW4Eil8bG{(!~hW~jWs4%wApyohu&#;Mj9}`-xAQJcr!)5#)bSpB7@_3qyrXNR&#{u ze1^A|{k`a!J7lu8H}B39*^t<)5(pxo;o$t6*BGA`@uvGOw7tM4$~5+)(y8Ct592x} ztrIgHZ}`O8(5eNU|D_#qUqm!*Q3BO%M&H1%Cx@LHEcDz?YX~JPv-k>Oda^m zNF04jr>hcAVJEDG8-R>-@9%Q!?}WQ?VH4zI%q5`|v8nxh1N-9c8 z_cAfc6U*jo)|daX^CFKovEkE{EOia&$*a?tVH>`#y!cVFHS@XjF`A;jSmG~BxiSsc zDo5h3o@2+)EkQN?%+a#(GvRR1e~c$%Lg(~CN(pjmzZrEK*Y4|X#Z<|?;VcjES*{56 zWS~yP=1D2EsN2ii*Vh<#E-hHk1Xk#>mrNQS7DNcU299iSQz0kgW~%N22iO>p<3VVQ zSG^J5T)hGQ&f0?`lkzE#9s(~Z7U{bjI=giKutHw<3OTywND3a@RB!CZr!h}mi?-v3 z8uA@|rlMa{QQ$IB`6-x2kY`J77Mec?5YyEl8rVt*+I>|Q$`pNt?U;0}d6ITQ>WrUqubPC^!7b@zl2b?ck9LCiJKXl;6-!%4kp%~` zmf(dgLO>kevIWBkZUfn)QC5aCBqnmecc=I|5pfBM2*u1UuA?hNYEK*qkXYV!d_7>x zAH$ikx#4gb!W9d5fIHm0?E@*9KSMJ3+F!EEk3Zp4XN=6Nl-VWe&NcvnsA`L;fug?c zxLoAz_l}IWZ->vs!?{cQ)eCdv;@nAKy)IcB#=#SQ+a-PzWjM2ZUp&c7c~x=qbyRxm z%h@Q}x1*zf%Nq2p!+hGR4(VIGigGZ2*L;34PSWaR+rIJOkyq*tCQoLBxL2KPxmvIT zF$+)VnY?&QZDr!#f=&Nn!wX`&y&D@9QYNp|2WAOhX_6+Z7I8BUs4ov1;jA~u{Xee; zy)CRu8xq|!v!UHwQh>x?9KQvx`0aQ|ekPJdzScokV>@+TYt7lOgWC!oeJu3l)mBg6 zOkdEUVkv!`&y};cDH!U%#h*9ByCtl1J-irJdU#CmXT#iLai`3TypDy(UZ_8lVVhH4 z{FKxgnN2Sd3x(nfVaJa_*ob08K@GjuyzxfAa``_TFzIKR7Lq{rJKCUeTA46yG-7rVxv=bV4!$s+6Ad;YsUXfPwgx`L zMX#|#z_}-_nS&@ktiUJhsMK#KbtE~y8TvD^ z4`XnAQnx1$|#&h+IXTP zY0@la`pQyvIAuN&T%uG8kcVxeOH-jtgV%S>!(1yi5OQD6J^VU;)Kyv`z}SG=4<6jA zF?c1+RxQTN++9Y@B3D^i3#O@)Un$Q^z447-iogM_E`5qCbuhyYK6vg4Ey0wo-vJr0K*8qRlTLYot z1DVW~fAgnaCo9=C0YGc2$M^>fPSBtac7kk{qpx`j^Aijrlu}RAvQ;Lr%|ICa?%q^} z;fgNGih69K*5b~*zI*lF3WH;$0qggLs;2UCi<*dtNV_RDdfcIaJd}D`YOcX7%l8jF z{uQ~G%mT{KBey-3@j>5mq5NcYt3)xU>_W=U2*>yXbY4zJe2;27 zTF|W-gSR^9BzOa!9lu`D(og)owo?HcR4C?G3nluV&X7O3k6B~SYgd%Wz04wf(DfV< zso-@LBT5=hDjKO~T_?@1v%eN-X!+Bb6!j-hwt54}6C1^KtCkC@1@YUZL-8ch`j0cp z!RlMoC5Og%H_?YLJRp3>W2&JRb^tRr_Q4wXWAtH;xN+LEAie(pmg3w%AI-X38#^kZnksI4 zb9=HlKF5T|nS-D-Slez6uadg)W3*7nAax(I4N@ykJllN>atzWDW5WM^Bw~s=&|n~8 zJs=z}^CI&1Z%SqI_b)MT%#4TD+I6j;cqM%9w1cO2OI`kzF1ub}ay|Y##2L)*dSKA9 z`Iki5=|eqY%_JVU>Y1y4Rsny8Vi0ewqTN7Y1MlmEOvOTmp4a+gF_!GCZ0_MJb!zps zSGbBNW2z$ZRoon#6>G5GFh*lQI0yCT8m@JUu|Dx>i$VT3-;>%runus%6KcN1$H_{- z$~ek2^^E?+21o!&X4>aAa7VhoR6_VP#7mX=qiefNL=O`cRxa(_`z7|OfbcPo>m$ws z;H&z=o(p3HTpS#r9%_H&ZC5wiY`s;TpG<9rg`71+8q|zk30*J{3oG9#^#<>+sKc4I z7phBD06sm{T}yNo)mrfbv>-P3ZlwRr%v8uQT-0CLRncqm#7GVl63WEe`IX(Q%|km; zo)S5QPi$~Wf4`b-m~~imbqa%oc#JwJ`B}o%*LErrx5nyZ+u|4O4YTo6Pwd;v&OG zijI5D5h~7f&EQDF2`G|t8+;BY*<>B z#K+ajvhX5LZ?$gSat%f}XQ<3#Xby2K_XA>z%b2X|ja;$qauQE(Wl7#S54a-3E+XG> zV={N;$ksw*Y>+3fw`z#ovbK!&%$_6SrGlJ8b!2bH;2MSNHJWK&i&2y^+E{jN@JH#d zrEF<}Xnq(RUQBFuv=P4CvnJCGkOstMJrVDqcVUu$SCP$8IJ2HKp`omr#hdNr0FGh9p z`Uevt&g@qduYw0BE}WGQZ_JFyrl&fs_U!ywe_7stVf2yeOz6ESJ`Fu?nYW$c05K+s zAV5FJ(M?!*5C{cYl9-X^P7-{pA$i(V-DC zuRiYd0Ba3tHi99UBuTOf-=O8e|F*Mm2YFZZcIJ-y>%g88}#pN08zTUAN(ocFPhEvo!R(Id$9C?0Vbr zAcS#h8si`S5Tg1ANIjpBu7n9BRqlL#S(8aZD^{REdCwT#b-b%0Pjlviham0fmEKDp zYXQ2b<~yCU(u(MxtV3>f*hYBGkNi7I=`2uRJ}K4W!o7JZ(8;vHV94S)gY#71AaTU* zhGnT7p6k7nq;vGeA%voQ=+{Sd{30FO-bWo}xhT60p^N!%pPg2}F7VOd6nrFBtFm*; zS;pM*@ky=#y7<4x**mO-e=3Sf61hS<8q9Pvlc#^71T)sxG|diJB8=&hlTUU_ea^Kp zR|TL8V{Nj#Qn5J$8m6+t7DkhS&6cyvEV=C2vCSro9pAI1VM_G9UnXT`KYo{c(XSxf&h6S}_Y>TQ8?4NZ2gnRe`Y!3e0iwyGQ7LX2Sdpcj(SiN;QU| zJyq6uyv)H8)z7zVHCuk$33s^-{~q8Uv%h0k60zfx$$UGg(b!UMb=X=gKm(}L&3s2Lg?@0 zY|;4i$lLs4l0oJw3{-c!hQ(^7qB#Z0l6eOj#?!j?EwaN^wG~?yNG%A5BaAXwn#g9-#^Y;mhMxOEHaZBoBx_58e&inIc03!CN+j{X z>!&bzv=co+m$)QB_zoFx->Tg9q9XyG@2b5X2!9rQ;2zZrt%%>REjJD1mG@I59yCF* zb@;UwaP_yz7@d#P4117W!-x!#8_ZBtHL)PL#NpGuawP@c&cUL7!@3^JOrE~m=mb<7 zd{3~A+{}k>bINMojEy@!j5Q=+oNkLhL%QJKA|G-ZE=X|IrtgkI`3fCD!f5+^s_aEj#Cb+`vzH=Ff2B`P zZ-SS-ZC{v|Y+>E>`7nydZ4TkPfKEB$`O}kA(&4&u;l;uilo;nnq7&iDO%;hpI?p38 z`wWY|SaYf31L@YjUr#IDB7T6*HrLL+81@_43W~j2H+`z*crI9LG5{8jhOh|(OM~&K z{UY0ThsK`Ulhe)$Dg_^2MnpQ93zfVq)LbG7@r8LJ&}gXw9mH@LU(O*LS=1oKANN1Jy>iuvOv-42zT2b0CLlX(BF zIe{*Mz(N*3g|yTeW*JCCKyF~);ITQ*(eRBblXJy7D_&@_mxw zkEPNM(y&Z{>(h}AIDKP+bh#8PSF>(WN@?LQJB#saUy23nl;sb0Oo4t>JrgH&iZ4Cb;foK>$63Bn}Uf}tm+ zK4y#jdw`mLFUJodr2X92d-vOA0Z5;(uoPQK9f$;)@+?h-yfqqi!B#|D)ms-6Ie1n9 zpTOSXFhk1){Q~Uls0rXPyLzIw*o0ETUgt!b^AKsJ4Md7=B1Vh(_2)bL9T|)pKWOzQFG!FNo}{bBH^&#T2P;nY#5c&pK{jrO z?a7sH$LvEP1;p$2JG0(Zd`;qid2FdUo>Ni$%vD6s3!?nFTH9inkjF(RvV6UQG&BA% zcA?T2j?_f3wo+Llf>U~Ok?C0Jrm@a;{ZQ_=eHsL*ye13nZ!U#Fad_{a3yJZmVIP=< zk$b4pLT92bqRiV{Pxnxu#`Gy8oomJIdNH?4%%|xqbCHyAm#Jl;ZzV2p&T*0g2aevT zXgm4syEZ*m>y*CnMp@5+%#I)O4x*X{rsqs05cb*yE z1Xtm_3gn@{J_$_l(3T@*!Eg4dMa?p7RR5Jx|D}hQ!+OBU15ejBf9Peg6R8-@QrrA!FGiqXduC7a3An(OHVKh^ZLm>za!lXqr9Y-7&-DOhmzEUjy`bS zeMbIa-!#@3Mnr(`L6kB!q92n=Ri$A7An|Ld^O@01NKO5NG6wutB9X%oH*n?IOib!K z9rEDqIhh1?8~>6!y(Zd*ej)w7g_d8_f>?p3T}uG8Ya~4@4Wu$qpr~6g=htvm)w3)w zbuO!kcTQBgLnar1Nd(ZN#(m=UN_)=jI)Cg+r9KsWrKWMa=e}E*2LdT@B8e{kW5=PD2ft>tf&G z?V0Oe!Mw2nDHHyvd5 zp4R|deUYaRN94jXN&6+)Tt?2n4zKsFStsavu8|D{x9(3?SBk~|g&BZHx1UJlRL=Xb z_v<-YqVW{h4b)fXne&8xvKvWAf`t)_jKK-K^=pXD13mc*p3j01d~`Z|09+XOT$?%; z3v-^LF7wAlHJygZOCITxoy_?)akmX=bO$A!t!m$0bkYv~Pi{PjM#I-IPCoydjVR65 zD6(eBpHH?)2fUl!%ej6#*3zRUM9QEeC3-(QvB#~xS?B3#mw=NaK!9ey@OgC#z(I}x zW9~Q2gXRbD35}navP_SmXZ*P(M&zwhSfome!QZ`z|NXsPyBB>5&7)j{RtAu{-dU0G z^@_*F>CJ_4xlzfUnMx1dKZZ~lxc+EZhl>5E(+eBoMo4j8 za_#{Ib4)f6!A@u1n>dJ>5uV709zI$_QeXp9bb4jyP7VI`;2~aCDH8}$a*xWL+IESv z{=nuE0 zulC?Pc1p#IDD#C zqBruX!mA*OFC_8Y^Jfl@kyVk4twpCk*a+SrgF{&Im%8SF{a!)naS!>|1Szgl)9RYe7eRCX! z5hr5ODA!HH2&QU7WNmn^yy8%;L^L2DlccE2?TKwv7ZrPck++!$`_Va6(F0>dmBe4B7#exDYL+YvBjHFAS(#6d-NAU>q^6Q&0`*O= zhogCp&ptYbcE1Fd1Z!deqFMP&U zj&&dJC>Gl+7D`d~SCZo2#8y#c9(ouzZXoEXK6&?W=0OMok9?%uNeT9nAn%b1J&zw? za?3EYEUmA6uy(j=AT!%IFS8^l)YSQ_x`UP@`dr1zU2&J5zu?MU{n!_lJbU)LSSSDL#9#4C3!E~;FQ$)br&Yvo%6ZSs zrA=z=geD3bH`vq0P|Ffyc>n)VbmoCf|9>3+ z%rLjqWU`H-Y${nQbBv)}iD9Dh%~{De$B_Hjh)T0LOPX0ZhAt{0si~OA@kQT+vYMl% zIp&J+{e6D__!l#uz2C3b^Z9rjCbJ4>jI(5qI-F?~xm+6eD-FqgGV~wFKO{-pf4Izx zeAPHZz|v}M0DH}9loQ<{LaP$PKJn|d(a>wdU`Qaz&f{+7L5s+wDJw%66U(z?H9ojH zK)hN>9sHHUDiG`cKNrDu3}VMDfkFnzC6F z{{eL%iwGHE{`K+CnoBR4Q^MUV-JCLq=%r6!*6oUSMy;BFJNhqXHa|Sw#NpM~pF^^^}lllKe(N z3iRQrQ%@jQb(ohn3w{4K-yYR$`EnDyJI83x%xCqZ6x>6>v1Lb-BEaI?~w6w|3sAA!lb42Y3`ZY8&xIPMO|4PT6JnULUZS7mG(S z;`sqsi9`2h)&@-Pdx3p!o{`VY_saKCR|OE_mKwF}m-9~D1zM3XipVxTYr@VB&=hAm z7VUJG)BV3#WNSos27y{FJDUA@@z5$ndoSZ;aTAoG44D6&f~rxQ4AYsD@zyTw^EgsB z>Mi5eH>Jm{03g&(cJ>-MUM0m1Jhtf*u;+sFA@C}GgPXHwk351O0t7zNQ!?H>tmowP ztmOaN$R82bnj&}X&^O8wN1qk~*?Yg7UoIP5zYyLaLd7CFX@V_4uo7ahb3T)Kd~tos^lop=G% zQ&%G|nnEW)4mdWz$si1F0;`0%hLrPc2PrwKE+64p_iQ|_^+E>|J$eS;#-Lh6T1s8H zJ(j){cj?rfy0LntU0)v{1e)!quFhYmu&s~1+{s+XO59t8Zy!wnkJ|s#4~heDecx~E ze1!-M?LTD|7)z%4h+&wz@81ohXTkKb>+M&8d9EOWQp-H$@Rk6}5}YfY`pSdSV|kCd z;}J4k+aT|lN#tI?aY2NP!x@=V@l#sKHCv-f(!8{>KAnpWKgE*Z7|MedCW^1EQD!7ZzhpPE_T!|DAxH7OE1{~1z>5{caHI8&*85O=Ak2R?gxM*Ii7OH5Js-o86t z5XJatDZAsaDQtb-^~Fuyup4l5g*k_sYg?2*j64^pI>lf1{OVfwf2PBInGtrf=n3YU z42W-^T z@F%OmF?+)-i$w15W778dbU#nW-4|ZyQ58VF4zL~ux}Wylvox~#Ln;C58zV&MzK*6J zW~l~1Ms0J19IDlHN`g%EsB3s==A%9=YY&r*dz8XT-H6HSLL4e^S@>NEC&$Wx_E`L0gXDLoqPhk+ly+m0XZ z^vDlckM#`h+(utq%R;mV*k~!?`pD;rDW20mgCQNeGBn~>TL?8$6W0UBIOu}-Fqefs zN-@mUnF4O{y<%ZM46GWBovf}LKuk$0g|T6f*?#ISoy@NhjZj3j?Dw)n2;V9Ex%uK^ zSv-nD?~{Iz5|FU|I^&T4sZ%t(*kxFYpuA_ygAdZEP*W3^ls}96++mIGN7nB~z*=No zS%PTzY$^5nYu(xNRQUaaIeDQVT=aVE#t2$Yv$y_)rXt2mAYdeZB!m8w6YrJ}LGXxG zd+4Dn&k0csY+XmcY#^G4hu_Fa@z3bNbL7F~42kUV;{CzZVEHhW*^nf2@)KN-=}Ki2 zo@XK484URo2{i}g+xrp%?z(?SYFwtXpK;V^t%${`Ls#PC{AoR@3P9W`&D7Tmeu?hy z++sE5v<-2d-%lxSIVJi&uPKUwlB5r*%r@Ul8+w7JWMnY5!YrVhe@@bMyN z==g=+0Y)QOVSioZ?Uyn;!4uh`VydU<^V3dze`c@`n4X7E=F|<_No4_k?(*l~^Lntc zN})VWQ*I!g#@qB%{hAL@A>XN}?5?FBsV}f2Sb_ z=6ju(`Ca2t)(7KV0{{ArUoQ99^YMUWsv!X=5Svbg*8`C*YHSVLhS6%-Ut_NWxS5xmFTrK5U`cV3x0tN97h@^L{P^o*X zg`TAohTx>-4<~Y9u8h;m9sGXp^Gy&hR|UBn(K9{;dT8Sa~8$6#o-@KD3qGGGyM$!rNWbDIQaRgV@mzPBo!7WkSg6=P2k$3TpDm2r`TYu+fV0v$uzI^)|!BBIjCJ2A@u`lSj^ zuy>2e+o6*`FVh>O-Ez3y@R`aOrW^5I0Xb`ImlfOdvaj&(1X3%jd) zo8F^ns+CfRca%EUOjgV}QDdiSy8iQ^hVI@%bO6{*GNvg^%QV{mSxn$vrquEGqK*0TR_;j zR3PbTAnc*tl>bPc!7-ggKR=2~&PF+;4^-UtDOz{-J7mGMQct6IU#I2YN8fE}shPO9 znr|PR&W2y$^Z=WenPF*1zfKo+m=YX8%q=W(Aavi*rkdl*DeIG_n?D5PU+tO}6(HAx zAqx}Pbew{A+;v^C$1hIOatgy;`Go2l`4ScGNWEh->IHa+LV~?o1i0FyhDDSy2EW_M z-Oy)#U#eut{W6<(vHJQJ92Dq`zN}ki#fY8WLBM8yB^wWiGG4L^fTC%>8^g@qBrHKG z5I!eWDU=*|9KwXOG*gIMRhw9V3|=j}o0(uOxy#d(x~BzvjU*5-Qhg(}axO+@WM`>4 zE=TOFsi!7dthkiRTLVEiN>hZ6@Avc*SA$c2ykEX=5I8akl`t#|swX(3Ubj``mpOpn z7AqZdh44A*|EFgT&DOkGkq9KzxgivWz(H@=u&I(ArOoQ^(l1jY;u}MIJp8_n{>p7w z-SR^q_TKY@utQhU^}l@cn&XOf!nI?H&jh56Qa~s)x}w+$N1TX5;VZW|i8Vc@#U6*= zWxSaJX%ivL$@VX0vHk;D#Dj;!O@e>eqYL-^eyisk>G(|szg6q%FzhR6EmTGxs4skh zOebz(Er|Jt0w(}W2TIv{C(7H;(Df@S$R72JSk_ z>nM-dBc`;fbM*3RJz7VtVH4vdsC>Zc2z?Ism1?}8`t5tpk(rTX8Rwe6(jtsMp?*ji zOEO2O-V5$})_Q(J2AxKOA0o-)YX5{BMf_<2JK$=0HI(L&xoR&ZOW)>cH+JdIHK~m$QS{eO;wQJeY{GQkzR4M zGd5Jn(H$0oxgY4?m`)g=80hCqgro7>Y4YY&dbZu${AmpZiM{`%!t2eTvm$}LR z4gtL@OeY&$eNhf_bz&*iKh0tY$;>NX`;xo{EuXtRcC;CqWr zGVk-Hox;kCKU?FSkAN2ehcBL2i{y#;Hq#>9d1pT*g&TjX+$gQU2(uf(;-u2VRcM&$ zO8IaQMmB0lF&(`X3seMy`p0y=*6&SsHj2_Ivm zgJPGtI=iEKwp9Sfv&$x`vIa|!MA#Xp_f{D2ciKhXC5qBq?8Dx|A&@_uXzsm216RdQ zhpPSzA*E`pP6LqUC+tC>d`A0#&)h}D9HTAUSQ9VYSU~j~P*d_a6%2J26kZG0)UPc= zg#Jo7FGLqW8nn6fu;A4Z)@2TaK?IP2#YeSm5(0{LSQVAL1^fb7nnV8Z9JwE+97RZe z&J9LcsJ?4bK-vB$q>M<_(<#5Ca6B;d2z)(A;q}CopLi>+vba?q)exBFTeP(V-v%gY zOl+M>XJg;VwttTV`w$Mh?fOUT;UX6ea76A2Af}Z6iR;0d+$&`Xe^Z9(*&o1W%>{>7 z=cK_KGbyXzFn%QG*kSpRhDLp6h-1>Tu0TZ{?Zdm4Kr>6uq=>KOv?xBQmmA>!#4vp} zri%0^Cb#uxh;imV@0(|{p2@tweqO6rYZbp(StH{PjZD~L?m@2Q!7Mq;ZnhkKLS_8_etW^)g&9 zk;wLek#)8_-fFY^qwb-O@d>JBL9^}32#w7y^pw&#d2IF0{g^}WQ;|Ktp~1crj#t2B zn3F~gu2n=DmL^+#3 zDbMFSgP|o53i@UdT3h+VZz33CTgMB72rVlMqM-we+=A@Q^m(1Fl5NQJI>>^9e!=s5_3a#uG!F^WxIInN;Im;zgR>A?E;+x4SjD0)fn zhRVh~az6b;JCP&%$|F53B$B-4#!7~lUJ3!$qEy6V<}(sW(wuDmK{ zV7Epz#Q{y2-m&#mlSMQfVl4HU$Aema^btoMS!uU-_ROB<1yYB=y1d@?>jw|OCP1W# z+N?We0RCQh!Ba=|mc>eSP^uX|EyH)8y2mKv^O~D(nnM25Lx3HritI1hn0;shxu$P{ zR<;8xvnPvyWZ~#w8JJT7A5^e3S>yHUk-5(n)xy2Qxi9>2jNj#W?L?}T0oZ4~#8vW= zz4KNHM|kaI-P*C#CSNE3=a3wr-E>hGT_9*R;sl~Deu%h}dLvF(G`6Y`xJ~aixYtC2 zE#QgSfni!Z(E^Q|b|H@r1;9EfLrAh)7nV1i99K!TSWKB?96^XE1*)q0VVx;o1rXjlj311d(g;faj|MSeb6sv z-N5;3=%b-t@D!=9lLP!+RMNh^R9=Rjp6p4bLeLg0rHUGx$S^Hf^WT4iQf>6vkVn5FjLV8Sle^ICq4bXEbL1^9V-N13Jn{L+{O!V zalJuR49Q+PD9F#lM{WX#+=5G=Zi6~xuUsg-gEHFeX2CY>WeV7n5wODKB24=`U}_Qh-CX}#a=+P z8^|(FaH^$OdOKkQk0;z!Z(2Nu2Qd6q_cvYt)BM`nRgo=YqhSHgJld?fI=7py$|kJE z@DuX9IXe0Jx?r3Bd#>$~2oTv5?9rzYgnn>05l7*WQ z_MNN^%Yssjmi8z8aHrc*I)3)P6V`e}Q@0E)`!58nQHn^QVi2X7k=8Yo)Htq2ifaC} zsz6Nrum4Yx1M1}?y6i<)pz;g0fSOp>wd zV25j~y#b9B`3}lx3uQf@0Tlv>`$A4=UtQ1{qg(o%asQHX-%DJc=*wn51I*nlLbI| zA$k$0QI90@EK)qTvET$2vy-Lj9MObWQ_u^8n%MHtnbh4j#?L%XA3bky+dQGv>E<5S zefDgx7Q3T?yCY04!y&-W-Po?AvLVmxJEX-g>sC(m^hT)|Iz3ULZv5SueaCfpZp1BN z`vClEq7eQe#}SqCY*H)Mt~2u4t5fZ`|EC&ZlkHn{pfMKO?pp(6U=# z16ko6QZ=lNj_V!6U#zvU`?VQNdES1NtMzK{B9QK8m$2- ztmeo*xbw|e>4*xf|E^blybS=h#3cruBE-;bysr}*KPq!$wrLhbKEE1!8Mj8dQ+R|e zV@gx%_^qX^RXgH~|CLCRDs(p~3#11WeJi@GUrg+M8by`wh4+!4tX>fW%@en4X2BI; z+WlqMzBM!=BV`;${(_(qn4BtpvA2$IelzGHF2%))!wVQdd0@s#*Oor8k+PC9JHRMB zYxl*#PJ`4MGI2K0}I@R-VobD&Gra9^f5TSV_ah{)P4OA zhzJBF4^@wRyTk81K0E#~l*+vG(8rMkL4S}rs|?_JckXHp+spzVuAQ6pz6o33SpC*+ z;y&xHPwLqKTf8bd64kQ>t0`wv5B$zlG4J16W0DXx>()EbeALVI$0T)ES0~-FrqCsT6(BTWAHwAaS%Aj1-bu_NNRLLVP<*lT3xf=LF!hqK*st#y%oW zUdkn^R}_{M0={1)DzfolRx=qE60aBdH#(vJL`mnvzUepWF;ABxU19$!(zo93f8H)@R~|%T=}V$Ws?v(WT=akB+PE zv2V3U0*MOl|KugrzgY(Ft+07=zeAu~M#rpMXI9;_+j>)Y=yP*7mVeYD9AeV(8w%B> zUVQM%O`i^q?sQH4^M`Ym_+Vw|$&*mhYCEwNl%lJ>fWBTEP=7i5pWdiqwL|8EL53XMqfqnr4?>8{`_x-Va`&X9X!vEKc2_@b^c1C8 zEgJgJ`dN%LdTKo@zq3#)Fr`pUu*A7}9F%xge>)SrpI3>wRP#tB*??5O1wbbB?b1-d zHGs33#G53mtL$SAk|QxnLG#@vVWU;zf75M3A0D`Ur1dE>1)g!6lAoi2jGinGGT&}U zR{7dg4utXqAovW@Qfs z+V4Jx0qRR;OV7oT5*>3hX0xj_T#sQEP=p&8s0Rqb=(qNrE83?ojx?}=W$smns7aj9 z;yU)uy(Z7-{TTwKz{6e;9~)2CFVeA9D>5Dv5=<^DUmJ+|o(sVCi~8Im&|_vbxeRMz zJ=O$^lKhL}#PMUC34a{I+3j|VFU7HnW0VcE>}NjqLe@NNuJo9Zq_);o3B*wL zZ}_iJ!8V$mCPl(R3+oT9<@21qo|zYUCMt6n}645Nf0@?3Bupfbzva>a0>JD8cVh+_E#4lRm* zdo-#PDmQ8<)l_7v^!x|-cHRswcQjh{iCI!V^=7jE!KMT->@g;Wu>P3OHFkXrQ42E(xzn@3M*-+TCN*{&2&&X| zZ}iDaeQECQl!?pyVTvd#f?Y^F*Q7T-Xr8Y81tz)c?J#03&P$eY)Epf%`NCJ%F%A!R zu`DQ=cQ?S$A1TCY8~rek20tioJbn%iHuP9EAQ8u7`grT=RVP2Z1)Wh;UC!*Xhy+2B zd!)k7x!-?_W<^(#>Ja-<*o)1#VjzUZT`XA#Y3POlPx{Q$#^N}z@p?cyflLd!V7^?m zoPC3l+`3utWz|P|I9SR8vJi?8voT&L{dZJ4u85CzcBc5R*u{WjW$*F0CmPyEAidmr zJzfx1_n^`Os9oG$WFW)T17r;xix1v)-1#3+;zd#gQgfZp&NeBl%t*V^i)@!#-KT`@Q5O$xmK+^LE;LHi`%y)tcn4{6wy>H*3 zX%R@s@EWy=_xt9(@WbHUom13SbNjHu?OzqZSHT?vdcE!CctS0weutT{I9Yeo3LQW7 zKaEI*V=@j{#$Kas;kP7#$Y`#3+z7c?>2N-Gr531aPY&LX{i|#O)cUG^vktit+tvHc z_V~?KL88Ye#{bO=VcN*c?F1R8YuB{L-?uB9BU%IN69@NeVMDtM0&`&6*1t*82Av)T zwg;q59%9=m)9y;fz;v$2Z7TT75HdxRBMpkBuKvF2RB$kJn8G(j8K{B8V5ub@ZxI}| zkf41tN^Lgu%LGsxxCPbC>kwK#YGl1`#s1(wd^*K;Qn_9 zHSHy%;0uzh~dFN8Jm<4&qL*}(FQ)-^#4SNDph zZfwQTzdk+qXpK*+b}RXV-Y|_x5mnD>NFFP zN|ceg3h$gp@>VWZZ_0ER%C!@JV5Hp3lr)%NZA$L?UPe(X_#bvLumQTb`K;`NP7^{A z3@?RH?Z2gyIuKILwXRTT#c^s}yX)D)?Sk&+^(-I`x+i^rL7Wyl|23g_WQOi|us{7PuVD0>YCZd2!`B z5sh$3%dNWzaK3>!(VcT+tr*DLenDwB51`&Xc9b8~%eGm6H8^+>Zr}nT*i*z#vX+y? z-jra-*9f-X-6J)I1Y=i2F9@!*!$Z}|=x3w)xtJW!%wqug+=ZeJ{#e%Ep)&H)xgAn0 zPL!ljEOsS()N5v8W?clw_#f<20-b7p!w}VHRt%v?@K-8CTrNEI(S;mA2yWccsMz!= z59X9(;VQQ;sewR*^YipAPtQmr8xZi@HXA@xor~DP84z&b{*cyN;ZKKSmk7+a_M$MOCBy z$!=ZqKrHdqb)QRoKdq7XSzST9f>i(>pfTG=_9s|vM9;*AqZ$vfBJDqcBRNearvmec zQF=@T>1rxiTz4!my$JJl$~`wMcN9sFe!zS1+C-Nl=&w~0yzcShRLJr2A~b#zD-ckN zszbn>6V~(FnHmP9YVH>&Kaut^(ZO1RMa&9eYX zRQHGsJ{|5rIaTjYdHMcZ(u_*+Nf^*6jBSt>GOT^U^r+*VoU#cQoORy85##q_JBP)U z@*YiF)#Vppk|L4Mj`vYYdUmb4L2VJHNeDhD%fBUgT#2tLX;e!AM}W>odLrhn^b>&5 zdy5sRJMAVax4*Nzv8|#8Q;w_#D@Y30b7U>WhP?w%y%Ce zg!w4xY-6524}7nPQLrpPWghnQXg1Y<4xZq^mD;=U0_j2&jVsl}{{rK-KtA1%kTn~) zlWFMH-M(ibtpfeNW$%T+7PPH)I8 zqoo-f?Nk)x>leAi@nE$m8Sv9@X}}Tul1MUwKEi+L!3>#%XTvs9OUnw*fAC^p; z^kF~S7lhSz{8~WSIY?|y%Gs1>->8k~7OaXK-+6hF6N`4bC9Op1hJc<4o%yV6B48jf z^T;j0F7VeH8D_BM)!*B5XrGE9&8pYSq#ZP1NT$;j zgM)BWNoy}>*DWQj3EeK}{2^qm+8V>^3+G&^k?W3p`Wka)x$4JxeT5ozuYrdIl+7=H z)(Yp4&ZuRkl9h7=Fs@+s2$6!H&J%P^8RBT~L*ANl7J* zJN4$(kv#aWQsTy6PCcZ>{qm@)T1->ahPyosc^+Ijg@cT5+@a`>X*9OTpxjaZCuy81IB7|Bu+ zL~{j<%;Iw9t><7O+wF9Lk$!m9cSZ~BoBO+FmK|M<8Px|lQRf{D4Lj~PJFI~&={_XJ zz75sNbWlJ1<~)(K9r31cd8wTE;EF*MtwZc!3+p^mHQlBIUfJz^2A(T7w~h==Wzp4l z2g3AU?Ij}Rw5S#;gYnIg4ua)MxYDoB?Xx0RpBW)l7Fg!U`{z{S1tvZo;5C@GppwS% zr}4F&JSk0HRwjPI5LV{<_FsObPLYpBwY$&-d4VZ2Acyr>k11>fgq-KL={W9LFcJTd zo6;Wa&!24QG=fMp8EN_DoPnJ^c!}YN^1jR z)|L9e9%VWWqOS^kU#2QtzKiLR@3Q(KqoTXN(Afy#%c<-TOP`HX%$Izp>NlN2?g93) z2^6<)1s$qd^K0aP9A8J@G9b$!mMe|hdCszG;285RC=yaLiNDi`+RnC{WtXj5TX+m8 z<`UIr-d-WOBsXdoIy^#Z`)pu;#styw8K&)42In1hSlTXw03g2_MHd#wVJN*|d;tua zD!)S}kk4HYm>|LiKncQX>^G2G1sB-Mz`6z`Rc~H*{!{pw9yslU2N+-qWuf=1WdYUF z(&L#sT9xoep$;B0#%HCff&~{ZY0M>dX^FPMlZ+l%>SPyqE?{8f+Cow>uf^5fIrO->~sp#@$KKy|!xe76x z6|QMO`R#FS*r-Jg40PI%#e8na?LB|YjIz~eOGx4Heg0$+;01mBNXEe_R41MNwE$>) zcg`As^d83k?XM^k)iKUCTO)h#PahPfdtAAyCQ*r7=E(7G>Ojuo+6{E7UK=Xlz`TCLN!sVle0<%hlkom=r-@m)!GxzIWBTM z)Q=n~;d$8v)<8OtOhmm%fdd2E7jcX4TMs$if9J^a0ggFYJnY7dTH||Lj-r}$wW5d$ z9kizA77;)-!sOA)ZI6a*Xp&I);4RZ&QajX)-O&6#5^B@jBw%9^i0$f zBdlm8S!%rz4lK12Rq#6V;u8uM?PrZws_)7*E|}35QCMN5!*uIddg%=41t;c5v?{># zD+yQ;S{LDGXUu<15oZ->7vz?dG5I3Wtpk#};S&IWY7#sBzM-&c>N77Q6}r>T=uK8$ zWBD~Gg5;-%x?y~C;v4XE^8TEH-9WoC$P?T2x55ZWUt*!3n3Wh{wB~9$dkK44(tglL z=BV*+_ov2|xIQHXASVn!CjUzDJf}zBdmZoN_t8i|dl?Ez^k@(uBk@wyomVjQEeYVv z0PL}$P_GImkq5f2T6~L;wJc~Ci1EGk04)9enp++W#yu^yJUv{hvjNTwv!6l!x^_x& zdxxK;udPQV@8_OB<+L`!O}yTygVkGF4^}Bx{n9#5`9!DxA_5oG) zJ5$aUh|8p>)DGVd zD13_Z^_VTqfJ-_IE-AmJ;l z?BqCXclGfEzwgBgofU!lY~vC2y@%q4;Ws->e*kMKzJ*4wJIRczRU+a560a9%Dsm_f zGx+R7>9xUb5iEmuuLc0plX_YfeFnRC+d6lt>a)9wA_~+k6B)14(yFYIEO}GUb{8XmL>Fd3%2vD*|_7$Z-LR3?0_^ZQr6sH#A+B z0hGsJ;UHhQR#YFwJWb)-7@t_|)dPV!2fdMk&4Rf^(5uQq(j!t0@~w6m8i7;<_C{*O zA*H}iYanQSY_o<)*#tuaRsYy2HVM-mI=|zT)pO?tq08UBHPaXhVFF~ z*ilqVuXEHBT-IL=C~mfWifIL*Duo^Tuel*9!t9ckD#(>{vc?VQ63l|!#;^p>l~ItJ zx`^k89COLSBR4R>{xsYG>LM*Gz$nEzaOgbir`vOONs9>l*rf|DFi(enbKYu?cspgP z$j0>m)e5YnhtJqo>j5h|pYjaM?fi#|9~` ztazs_j(M&-6BL3&OQRmUBzQ3Qv@)+lpOW z8(`}4^@MpfC~`j$U=pN)ZRESuTfB)d+!bHs@)ic|^V~IW!Q2IXmiuWWi@ispr=evF z)55XirW(THs`Rpt`vqRmo2nu-lZxz)?AiF4GDFnRmsDDNoJfjnn3ouFyYZncoj%>fFiR1w;fRu`T<=F;V5~ZkqKL4 zq~drsFDqnw_EnCUsI1hD*3v;=6%luyNmNM)sL+X^&_P=9B8c`9P|z?JLL?zrs^QD9 z1Mfdz2iYrPBmzG@be@U3zOe!@3sirsppR){{b=iQ~Pdri}W)O8|34eTA1dHGQoo)*LB5*HQ-bgRU0wZ!!~-m$hmjoO+je; zOz9N7FQznq!rWn9u5|-D|E?OXenb20Akg3V=Pl!-&SfBMoRMCyJ5L7{RY8HJo#{sV z-i7PJ7Vmn``dqlHr|Rq;RGL4)F6lmKirVc(I&C6-fsPT2))ZuOFTm)koy8+5!97t7 zPAvBsEgsCiaEI^d~5$|(-Bv@r+Pw2jzZ9aM6XqDw|8?cw2H$$`xbFRYA`o5l5}AJ6gFLVJlAfekaQ~i z%N%aHpM}d$Q@8ht<{XwfvYrm|zwzyuAMuF0R1nh4p+YB4#*8n*n4Nj}j|CEI6d)>1 zxcC!_WKqCb8&?g{Gh{wvC92LG&DsV4mtj5 zd*w*LD~YB5CkB{tdBzL6lv{V;pQ|1N>RN*QJ&uSs!YsP8?X|+#IxA}RN9ox8jWdz~ zon<)hXz2WmPWDxpE~2Wp>-~E5A#)<@3Q~3eU11s(qC~7at*2A{X3L5LFvYh zupT8Z^iy}hJ6nM_2Po5|(B!i2;fOeBZS|>Ih4hSGXj9dhalU2;cxrUMcI(4go8lWW zXJTD0wid`p({ViMMDqM2(o;%lGarocUCeG?5uGqaNPn+f(I-?haJgX9Q6K-Fa18Q_ zWXh2;3a?@hHtRZBJrgqm^VCJG&Qw^zoXQV~P zy^O($=15y##U#+yU#|@=pFB6Ebsc2}S!%QHLJr;-rlQ8>f;w_f5vLf7S5(a>Ebq9s z?4_l_Y#`j4`$r$Q3*xk$fX5NrNzUo{!x`UVt-fVJ5bvi(`tRl0+k8#G3nuK_A;6PO zb+v3FGrYG~SLAg*yUc&`$Rs8ImleObQhuvi9~Km9+|Fr|{Psji6`$c0A0Y&)u#Gc5#J7i}hhOP8j>6VC%eW3^Y|7@Z~= zsNF@s7u7g_LTv`G0|jNI+plJwJEjlSzxz`|dz?gizoH;~EfF2fp4{T9JTS+RTl4rg z=7w@zq-qy)nzvrfT5m)~<%_a{&qfAAMkk5{f%(Tr7*`q3Rs%c7St^@LxaV0WC&tA9 zNoLoXfCJ}{6fb9*+{H6F2e;qv*tONH5`I9(!>-??t_K6@Ht60fHa`x?*hS_^huQj_ zzfh=mtY^Hr`{=T9%eP7V4bhN7%2bRFx8v} z8C_+-1F{q!EdTX?(CAWoG!gDIcRQ-go-*fg${-;7SIY_#lr-6q1Y%9TRfeSn`c%Yyx_di)K&<>Uq61t+ zuNb7~7V`LER}UZLuSCDUanPMQl3lRm*k&%172ynM=HD70furw_Lk4AI0%6r>i32U*hu=u8-rrh@80^J?j`+-x7 zIw9-)EwR+40BU=N0iR-&)!RQUd_S_Nj+eDqTd87b=_yssT4N&H*PlDCR$F5wYMEsp z*hUXhW{h6??VxYVvo~+lo3{=y+iFZ_R+#1ok1&i(7b|RFT`Uz<*ARr@(oaomj$DZ& za6m5_Wqfkd{FU$bM}teQTVY3NzY`Pt-oAj+XlvlPWY;@Ym0vG{*rkO|r#eQv zvhRa2^to?llwPOkE5>0{6NqKbF-otVKhrmaWO?@UtcN|KeN)vcw*NL=`2(<82QueE zKF~UJ8YV>6Y&ljnJ^P&$Eaf8*z7Hpzb1-gQ^ys~Ad`Sh0fB_7yBNSSnj`Y*$%WLi! z=;OKm@$nie;RodB2*UrB$H=3xJ~H(1fpAWx0^qV*sc!o1_%u=r7*hVYOaC3YhFi(F+!>-aodqm~0pzWDNhK5*gT z;n?vUS*t51Q6qEr_w5>?OZYk}35npyR!)cMyi{p~iElTXLR2SR_np*|HMJOYU+;0$ zp(}wYow`*wqSb+fzau#@v#yH0T|C{2Jzxi9$I%B(h@sbS-P;f)zs+N+@fMI-w{Mo= z#*^A_G^hl#!T9&XFOiVdJ|NJ)@C!(gci+|=X8#3jI#0aSfz3izl5uW%Mz8?mRT5ys zEHK2co4ZR%tp${BHs10r@Fz1Pj6#n58RE!XO8atT$@wy$JLRTQ@C%(>?XYUiNA*?! zUNJp!B8FvQQcs@!n*x7^vZrt9-vTBX9%Yj&_Jq@?|9`c%a{SMCcM)YWt%L3*p!0%f3d6bdO+@2*H7-nMHo24&~??uDo(p| z*V?qm2D!h$^ef#y2d*78okh&FywCVdz&4F)23kD!NpMf%&u(?#0F~R!UxnMAaAUaE zJEgYtA_V``H(+vdUKIeNIZ?&I?@goVgLe|dmA^(iOE6MKU3uKq%N$l9-81`ka&;P! zhp+lz-|0tG0*hcz(SS}&dGIJkKh54brebUYQfKYf7hAnM@`K`f7Ev@z-DP)CSIwU1 zyg>WC@bB%0PG-!n*P`yzcJJ8LeX0wKRmjyyiy%L&V4ms!8@vDmAJ3o1b*;2u>2E(s z>hjmC`&Ek^R9zN7RDYHC__qdC-5k$`TnAq0OMiO8=gA zGjR(jOUUJIgaq8z-iqALLsYtO>}1DY#$@@!6n6+{pXN9a@>8)Lgg8C`8F?Em0)OBX zPpg}EJa72F5TY=L_I7NZ#dVvOJQ)HajFNxaD@>)Ycv)rRq<5P*4C!+?GMWLl08F`< z&Tufbm`e;O_w(BK+DHdYsKHF0(tzf@+ybrvp8SuZGY@3?|Ks>)8zza4smUCnY*M+> z+|%Job4R68Q;wgsA@?z)Lu<@YVwjkr1Er8K=UgFFa)mj+&RpgE{@&le{bT#=^FChB z=kxL0RR(T*z3Pm|Qb}IP*>SNaf}YkI>(O!!8=D z-*JK}d^);rjXe-opotKp7WkUnof)an`qx%O!)$q(CxyA3ZHU!xA*&JX?vy)5r6=e8 zJp5!H)+nnwYoaP)5pNvxR8q7;pZ7uIi!QLcmavI!i<{XQiIiDulM?MsWkOsUOU^1d z#tnNO7N=GNXxGx9fPzUvd@$ShUMX?tjy)K0&Hjw5P-}2EZs&VawkhX}S=9>C2V}p$ ztnT;W-DQJ73`W~Jo%#p$DAKSjgF~^-RY_JXARCIj->Y!8wN>Jicr#VLuMe-eAkuIu zr?WrSBABdvEJKGEiS$F2o4=B2CX6onbb*w^n4<4wKvqjll5}ti4ZGOuy77t&e>!7! z;tv7%6TB2MjOsOy+p<nK|P08$xlYVFx8W zkyP)GXVP^yx?pFh97rq?+HI--5OpIcgPoYwYQKRR9q^cXPnx zjJb(VhYdWR^G4=U0v%-fAxHtU+x@D)5@xlYkezD-8Iia-fztg=!53r@V*9dOQ$Xw7h_fUL8I8Xdy-ScWAAsBEV3EH z@n=&s_ar$v-)k=@8Rh}Bqc(b@GOJQqPrl`cEwMCiAT zmv1xgR@4i?5!u0FjG+#P*EeyH)))1OGj(^p*u3d`AX68Ar< zMZ!Qy75wNS!?_J#_TA5L@x&$jHZ|HNm4skhyxMp=1d6bQTjbTO{MFODIqiXa0(ynp z265i3Ibrc(OG}1vD@Mkrle(u+QP33FQ-=g`{6Ro)rq`#F*$>*U9Rg#nIz z&nm|SslQ53ba{UZh|3MOpt$@pL`9rBx|qLWkT_~D+!_d?_!lqjHqPHo{pR%cUnqe? zOa~W|J@MC%(Fptd)qt5$31nMds~S7UtLHPZcg;zrFZfzuIYKW#sur_Jq=p4%>0qn>dk(^x7DED{0Hqpj^s- zV4D6}CP~J4&Oxwr6FUw+8;mHBgt?6fA{dP+`GDq)JZ`<$S zB8l=6Qj_(esmQXniDIC^Gm(YwQDiXzU?Sl-JL$C z2C^xVbKN7Ec1IwZ&#+qByjF%YBV!`gJ#P{@irN<+xGb*)7})B{IJSNb^YfJi%Bf%ucZR z7TKq(GxhVV8g|Xn(i1F90ezsI>Kj4y&;#{Apm0<(Y{zxa$w_(|2)CJZCeC=-YjG@O z5}_!B=;w(w+lS5C)!F9`8+ZY7x}qo}UbtV!l?@pwB_H^5hQWmOa_q(m$%q2)_u?XH{IYgLjMwj{{khTsoY3(#Z3GCIHr>6^n?)H{m7=^) zd0wKAGeLL-u!Nc(lA^gh)V#$K9bz%MMLaeOK$kLPR+KDrU(9lmZPjVek%bYI(4{uo zcZbaj++;!XjYD9Do1_1>352e*$uAIxADj_)>Uf(g#OKP9D%8)N7?)^%zYNA(r6-nT z^uudXY42u-#EQoapG$Jv|Jq8F>B)!#pAdkmHu6jOM#q?|28pZHHT>9xtmCa_ypO0))EVJuGFxZb{~6j5C--}p7;75A>C$4=#^ z{Tl#gpDbY?Q1jNGteYaB-BY5tJc)}M4V{Ek)c&UU+_2Ja6PJCe8QQ@^)FaX23!lj@<5g8IqP{jYwk+xy+3J-Bz+L`i1F z%|-Tk1Yt)4wKa&I`1=RFJNp49q8*~+QT?K>C2R<%55^XzFGQtFrKveuv#gx2)8(CP z#ROhXz%ol9NuVtzstS;kbTSh>ufi9@5^LM94dmO5n>L9Q@w*C8P>s5_Bq&Z&HrhTc zt)IsqgGhS5xmoU4O_ED54uuLr`sT5$71ZXQABMx$U^x{(XV6`xfhjSJMM1;GzFRnl z_#Ir3Ij5e@ zIFeagy;i60Ozh$+e85k*H*Z!K3PM=H^RkJ+0C-Nn(g6`EoSSv?1~PrPbew738s?=6 zCKZsJ0NH@FIW_Ze4tQg>aB_^eA?I~h_Sw0apI*?UAxO&f=c@lQvJlP(Lr@FPPXfGa z?n4=$!Xl}P*I!6Qfb)x;%(cq~uY=Mf8OB{1ozF{%pkGQsk(no#;nkgoNrlIseoNNR z>k(ism6Vtp2Zq!TwfND}!0}Z`LkbKQcp+` zMnWf>&_ZdoyYJ^mhW+_qc|?AzXN~7+C1?aZeH=F4)ypsHpW>%QMmJ5pn)Ti7|Hxyl zN=Jj39gx|4_3YI7j8sHP5To#GblVkegXHBLZCLXv{*Vb^RGllT?zOB!f6;PqOID$* z(MTHX}D@rOLVhP$p{CQB)(OGNbPLe)SZcACF-(S~f-Zp=R z)*u%61=5K9qza*rFcvw@6C!x821XLujw+7c#5J6?GMeh3fFjABJ`==r3_|F3gYXJ! ztn8A+Pop|lx9jty#Vo1VRx`lC&R8d!nIYgs*H3_W3vqkzkWHd5zaCNw~q9sw^f81&P zb4slF4shglSgaA`DRG9a^B?gAi9S86Y+V<^CLawl@T1OTkXUdzAJ+xBgtWh0q4zeN0@bjjpU6@N7i z#fus0*eid2cZ(Qw51rcpA>O51E@qxbiE$C-{|m*!ejPdEleAGbn_`jfpe@;O;e_PG zB(gKkIZ1^lMTzLrgt8Q9UN1hF6l5mU?C(OdsEd`)9o8lSWN)edjxXo;-jM8-Z>(gxd^1TJmwV^g-i#6hZ|d>rCYldTwkG*A z7O}|Q*|SNtDR%X4{QTd`MisL3%IeK-=j6h(q^`&XF+&CA_mf3dFko^E1vY5&k?gbH zLUW~fgPNpNf5D>CrFkO4=Y2tQR1D-6;))*yM6I_%&=>)slvl4SG87GM;j~CJUzTv; znIc1rAd$FxvJV%tZ<+~Krm1ztj-2BSwhse|me3%XK+#7^K+vMkGR7{G{FB?J(;4W6 z65{KPQx9f@>K}MR+#v^6%!>_!W+T~>=(V!#L}+686AAuGRY4(lnX@RR`-i!_oZWkU z>k^s;)A5qlR}PWb3D7Uy8=>?;n>~x6!?R}Izh93lZhVccO@U4`KHc|i)80IH9CoL+uT7 z0+4iAiCcq-ZtVBy+4mfR`-a^<+6stFCx3PwZ}A6QBB{_+h4qIWVTNhuW_{^FWH60nM4OoQ zmGUdjtHkFgKs9gAFnyvL1P$SNm;~Cxz$z%cw>kZ>Ge~4djn_3wjFhAjCIzw_Zqhg1 z#0@QVX||0r8q{dEKXx{_!7e4j(HqY9IN~F}{y6%W-Zw@IV*cp6i$>7D_PeBaL$Y(Z zjSX0fy;ir}}K)#9pV=7Bt!#GXzpzXx_LpnBxVL+p#4KMZ=Z+jQ>D+7uw6 zC9^_**`xzv){lP8EJbvt(ICT5&}N?6V4_gJgwf$D<>E7^H83s|%YHGlN#wuK+o)nS z!NAKN(k&5d!Tx#UV%B~Bl)pCSM$SY7>zG8H6VLoHg5&Ww5(R@IF8d&{fr>{gw&uW&X!)ustulkcD_57xKi^cxd-LM@s)adr! z>`|ZtAR?x^*`BMUI4iT2_e-nacSdU&{v1(oeasTH|FV`d)lS}s5O!Lr*UU(j`Prs# z*#6hPUMl#T30e_$e|mZ||Gv_OLGkbp$zc<~hyXAx!-wYnmWg76iIAvkrsQVc(C;EL z3#4%#cZ6T-j?q9X6=;8f@N|tvbo&Qf148uP7LG;3arJy>ZFwl#Pp{o?k!*-?>f_vJ zU;L15n4LfockY6zdj8kBHC`3_RNlH+dhykN5}j#5 z{FohuqB4*+fPcGc&skc&LB1UXJsI-Rmo(*oWXwqR;*VS&I!~Hl)ePCz?}dLrZTig^${4nLJaapJs;M&tF5Gc+hfj(7 zT9KtYLmk}2jJi@<%+GZz`;t)?8uZ^d-D$7o#Q7z)nmj|J9vfJBl&uh1lBDY| zDx<+;LnaXog1U1hK&nX)$%4o@oux@ERHNNqVCmt0v6l3*LxS6HFmJx6)nzT59&`|L zZ1`G}(U5(+z1fHUWY${4z`*N4cI}ClzBiCaDOWEvxXb0+EFn@8&^&+2kk0s!?nkO4@0waU_ zdyZ^+Sgp}UgXk&T&4)xq{d2S9jPa*iO~weKYUMIyA?4A97yU68{~vlgvjo4B3uFsI+ktP}X@ zsrd`HJV6V1Cv_iKWjrHznq&N2&K*Pw6tP3#Bl!zY<{SC;p2P${lhgPwr;DO*){Ukk zS!}OlX)OF?ldP(2^igM5SEn#kh9ZtTwdKwqw^EA*4N#Bp&cNt;p;^^|W*6At|FHv) zkWjdT6!r%$Lqc6bLKhpqtE}C&TC*eCl&Aki7qg=13glCl;2;W7ZQMX7P8Ik1zG<^s z1Q^J-$PE=(TCySgf1z7p*DY3GsS8&>C5_Iu*xhBu_mKySNdkNN!xEuEiI8?;d4>C4 zlf?ao{#~fHOA%q#S9C)?ev;&cHev=UuyCX#UlQ42o28&AQS&bp{Nd!2a!hE4DocDM z>*=e)JKRy(%h2;?Lh}KsRD+-Or@rXTqWcc-sHUezS`9Q|WLIfIoAEaWVobe3yC zQIROvK}N}4t6H=s7cOT%6#8}6_EC3aZDfVG$5Z-D5$`{-Vzi+OJCG1tlLU#UvmeTQ z({!E{4I%+ot4HZ7kf1m6Pc4w~DA9yvcIZ2^5{kW{zaD?hb~o$JyN_++mfIf?XDQ_> zvCJ)KBzX~OqaD`&tv*?>32{>8i)=z^t}_aA41vQPk^n&%5&y>5icWW@GDzpjc@f7t z??9o=JL7WP6yTa<%B;}|@7;FICV6 zF0?BD^PN%hZ^oJpyvnHmV8HWM#*@s7-445{`G=SdW z4ci#+h|3*oJjvC(O9Cy?hgcwuaJt8x_>T??=FqT-C3%dh;c$QSaA)7U;IL~lSxNvqL-4PuS>IjHMWjdIbpvP4p<28R9+6*bPFB_p1u*HAGr zk~_=Q|Al;QWxWd!l;u^@5J^clgL zh_+Do+!oRMF7ZT--Zb^kcN*7Bhk)!7W8Yx607^Kb2Nr)vSc=S)f78mkx2pNLNjVmXK!}2%YoAm8Cz}w#ohOJtjx1{$e*Wf^k{R&U01aeX-f z8jVzNEm-@WeR5m#9#4)P5}=*9TSKiq_D{eFRsLUyQh7QoQM#x3_m;=i7!=kX@|Dh) zyTYWt=?5v;g<`L9rAAK*Pl)+7-n;hY1f6O}K|OtvC}x7_jn-zQQg+gyAQ(Z^e^l)b zYe=j+k|62RKf-qId-%tETfd5}X+mYxs2cqPej)q`eF{Ca{%jbbwTw5oDR>^GD68EA zRUJo~Gder2oSOHprO}z-CMjKKT{m`0WBr~a2cD%jAzM3`lAUNH+-r<1K)t#TqtwcP zCDo+#t!RkPbQ3Ded5v1F#9Z%;T6&+Os=F@Y-utsJqoo4E4OZK68j0t{z3`m(ULf&# z;c#TMbd|Z#r9y3>4_IlvR&BiGPx8`VB92Zu1pO}rGHRXaxsRlM+6ViCL}JNn z#y)*9yO5${FBF&AYYuK+_Mz{;9O1`HjV-fJ$X$Q##?NH!a1Q;s$lD3>=4Yfd-HVKO zj%J)g72)GmgTcq>riEQU7B;nQ2NN&hSopHhq$MV#BVu)WVJMO$~xqy-SrW#(EJOV&cU`jZi!m)e|1t7%+O^B<=yMHWr~ON z_Wiw?=G9mAeY2@?Jtf}#=gpWCI0u0xuz$ITsHIi4$57#KIwYo39MsF_(-KPv$ci1& z7qtN+8m<*ODdlcIJADyqb$kl{IEXCG-9C-T(+`kIjQIF*d%GBld8fM9)LXlcE_kT^ zh^3FkF@ngi6OxSvX}QX0vXTy2o;i;W!+3*&AeU#?)#SNqsuR+=uvwK0o4OExF?a9T z+r7HWBa8<@V#p6FBvF%vbg*VlSo7{Ja;&EVrU_a*l>u--VX8Mr^sI-t zI&Px#=|5)E+$KK8KJ=BmXGoHlkQf$jghseQxanUDxeU8X7ra*wADwym4$lo z2&u)^9cN11ClUza4j{`QDytgB^x<*XXJfMd7uq$Q;%7|8Du15y#L!4xoBWb70ACk> zwvnZc4Zw4A)+%pSdbfpLt)$denufmSv*xQVTvG}dSlQ9@6?r46>wNtLN~b6xAbY2Xng!j23zPkzxbXJGwUu^B?Xnwy72xebHA^FmwdH-|>QqmUpeIpVi zq-MhzWh>cE$44JQ8eo8S<-SdkoNfuNP`1X~WI4O$<-|f};TxWWJQ)k$KPh26ml)Cv ze+x+)V~2f;CpOou%D1NhDGB&<&7lLRf@cq#E$~Urln1 zSR&4E_(4}Rf{i;YZWO6TFJ_JY?g_<0zZR3Ye74C^t!{^g{>5{K{usaM7<)(h__1Hn z%PeHBeKU0z=qV|Y+$hd(X_O{xDm#tt=9GZZ6;&l3!;uP#_<`bj*Xn-~-2R{gXXZ_; z+vr9e>eZtE1^i#7;fR5Dvc5jfyR45uN4#sy8_A^VR5EIzQFpjdPi8JYcaDZz3RkeC}8LoC5~dD_tC`M`55hl zlS`0QkaKz!m4%#ZmS{8f`GR*DyYiCnrF^J{7CP9BTwx#Es22|RGyYFb0hzIzQTTpu zNaFYaOO=aM(9a#5mcL_Noc22W4P=prVid}$VZ=S&C@PZt2bNKVjfLrf{qByh${^{i z6bSdW@_*tQEC67~d1p;AZGHoEag(+-Kz74CXCXmE%=O{s2@dK@tGcQitRO?pX=P`z zSe+dMT?n%+*QZpo1HQg{lF+AF9T{fJB!k)WmxH6Tc*OE*Zj%-H^DO&JIe7@i`!Sff z6h{+Z}Oo3wK0-yHW}>8Gl$}D?-G5SQ4x{BJ_BymS-QVL zJIK$*6@C?}jX zcz0{vxgyJ7Tgoc12ePr9(GA)Ybl{|DLW|+?)6>LHA0Mb1G=E{x`)_9I?I{fvym0if zUxAz$5DWGk5~(FO@!%y0fxI1*s6a6^xX)K+ahKk!TR5;9if*@8E|JaGuo zOS{ufbe~lHspm{annNy>-PIZMVv*^b@wNbr>);DUMFyjNRA1TNlLxML`w1+e2?eTn zE=Sd_Z!azU5D^+BMOjN|xB0tPK)M2PC>P%ey0Ses0|$#G28%pWpKV-wN2y-UzKORV z0szs&HR(}O9(tpz%k`ofN$6aw1Z7Wc^jc9TRYeSsOi%9ye1(Ljk=UzQhpWsle2F)e zYyk0})|-CLd%6^T%*r13l6$hPqicLhDwH6;D?X6D6OA?GTi zDdG|JXiBkR3xHj^rm$e&)3ehDLX{1V?HfH)Dt`H*idGVSr5?IK3)Ss1{yrIGSNGOT zMU9>WL1M{AsJllO@W*)Fw#?VT4*7IpX?Gj_>i4zI)WJv=K`TnO%g`Kp_jfWcqI+L= z7arecBw4Sy|7d^2uTEx$@=#bY^h(lDZMF+Vx@+6X#2BmEmFVZ)>c0}E^%lS&3zRzP zOp$$zQZd|_*OzXd!t5>skTy{}fLEKcUWymeo+k=OK==MRhb%-dYeI7|RrTe-qwL$E z7mhvjE|AC8I$~v>9{J!#Mp6({mMwHsdIP5L=d6n?TeWid0}Q0AE-fka9Zc*`>s}B% zlcDA(BN1NSfc#P5Au=Z8_x39{H_gG#PB5^EqxpzBw10Ud<-zGXE%*p^Z0{vunB8Vw zY=zC(V?i$XgETpy{l+ggRyad#NcJ+kF7MBS5j6(ygSu0B(c)@QaLmp3UdJhu_*qN5 zf+UxZC_o8Z?r}R*nC-LO$PrQ&HhhTsn&eX)l180A-=vFGB#0}fphKqR5QqFWx(eYF zauI7bcVeFj#1DY1xG4`Y#xwW(@-;6uivI9}Nnd(Y!3RXnw=FklD1$9!DrM)J7Hexu%W0Q3k|l3I&oW^irdPwmDlRCxy3R{73<5I_3O%_eF*ZZA*_h0i-XL%KF` zSLOiybl(eE+VXWHbN}7@K-(BW4WLTt@*pX0knqen$76GaO~O)j5BkgttX;dT)} z(!VK-K{U#g)$E~&iAf#X$NUEZ>%bh53PbAeIt8}w8$@GnH87?{_+eI1&^l?ZuP9)k z!DL~B{tb(8ze!lm{dJgJDqsbdO|rwTy-zrukvNg3w_#NWeGVBA&&<)lD*DP(F&qK4 zVOaeI?6Ci;_Bvd*TTknzY@I$nujW1%oD3t?9VcKu5%lG9!yuMuLxqpI{}D8OM^@|M z_jCZ-h2+}43>?5W&CZ@L?i8|)H?hsQ?s2uzXlEqaryi0UVdAxgvH+zlV1)x%>i63C zF{I<-Z*kL0TH&SICl8KWl%l^tVto?lanNsu(KOGTQTY$e7vO+e`|S1(Mp9+RUz=W{ zwuHQzwPy8-nc1ofA$O9 z{s|g(4llN-HA)cxYV{!!^z1kq7YPQQhl1>MAB=O4_JC#YnW4t>)A*^ByN8IBcyCM4 zE|;)%afb0VTsa)Q7QFlg(i3bj_SkjbGj13Aa*ojtpoujtqn?x?T556IC+>PcNj-Ba z%7TYsdxpHG>UGn&d#DEtuX`lyTwazgBJAcQ7t~fzJWfLj{>oY4@F3jCozxW^c~N>G>CsxM zbd^qU+UtDe`VZyG?jNTy4OzMT^$x^Z!`y(z`GdMbu+vmZ!eG<~0>Quv;&pN^?UgUD zbXvgkBi5}DAysMnui2J4*=8R-kcv#MbUoI7gT|lk2(#lcbj~!3dF#0L*oT-XyzncG zqn?*-*~G#~2-y>zoNJphwd~Uw;IiS3Mz@&?+@LlH^MVMa zQde>U`6%5uzr8zMywzwyHl}?{Pa9PsVnBQ0b|N(9qGEMq#)U#f%2W;}4rJ|YzieM~ z*M2Zd3pcCih*77>a~@T9!o>&IywWZC3$1s_1m^X7d%V-qE7DCo{w%~prF zhsdl`-gUA&!=m~#r@AkLRIifyc_QS7sZ{7L2$}wC*ep(WA6*#L5E2dTX}bc38bm{d zQ87ykD*@`zovG=+wuIXXvPt;k1jT!~Wfn9(1@LC91lV!TWpWd;MrKh|E;;CS^g~R^ zm__5=ia0F%Twi)xfM!Fllm{iDorB6!e5-4--{MF|NSn7fFtD@_U?xhZ2--u4E=iUc zDk}E!Ra%=VoO)25?=JHVyY?W=Ni1v1!b;2=v`ktaeI^*Fxb=$-X@9qRa9U3oQR8^p**R?HU_dx#4x}xth2QU7lj;O&fC*z`1urtsup9-hy<-i z6e-8e+Pgv0>JVnHiMdPcx5GP&cmmtOYB2nZ}k55ICeLuRpx{K^pyay)XwsLDF z$4AH-Qx~dN=7032QuQ^`4HBat-Ff;eQ(6$x)FN0nVlcliH0@dYUjs}a);vL5!Qk^2 zj!oWy?wchDN7$ScG4Kp&4GvY-&w^~%W0NB(YgU2$TpnbF$RaqXOS7D5V8PuBE1Vlh zd30mn_{Ly*cTB3WLqzvYs%%uLXh>yZKOE^4#V`@ML>*;r;keASzw2V%P`|5kU9R5m zY2x9?w0uiU%H0q@X$?!8V9G23;z>#l^rk8Z9wMs$N;_ZPr}RN%R6umsHs=kbMEt2A zee&#lv>Ic&Bix`{{FCEm-MbA)BPtg797Zqsy;XI{laBot%BP|vUn={7wCZ%dTCYj+ z7hFrB2vMzunzaZ|7osd@>r!{N2u=Xn%RwPwiQk`ILypnNor5o%+7Fqql^26TOx`xLwVG3YF*76b2R-#C5H+J;&rw1fVp zj$kqDMwOPf{*==FwpUA@JKAu$k23t>OuDwrtfZ+nO>(>K)U2(3n6@uFY z7E+y{cQlf}06o0j+;yY)A1EOh3w+8N=}9~8UCBFqALk^9kx5=2iJNO^W3H^AFfu#1 zPGtO~38*4_djB{I+howqj5D2Hw@IshjGt7q5#6^$A?$W>1=&DBBd4gYH`)&+_4Pxs z{J1EC!D8sk+R>;QP}u6jC>9*bL(BQ)wtGj(Jh7RzD${P7M3M-*RCMUUU2%KGD>S^W zU{x*UKwh!0+2pW9a8L(4DA?91pO?_(Kj}UpIke30eNkpI2;9IsG%D!B?>#mvKgg() z!){j5mGM8f-NjUmQNHqNRfhg@GFg}ofl5cEsMrGYhYReMJxz*!UobN&pO>guh^qo~ zy2&u#KEkoLSei8H%-?;+1#Go%X!|DJR%ggK{@rIrQkHDhPhx~Vy5YeG0$ECkZMc4} zZ;xMkKgHS=6U6M!`X7W`(|o!E>W9Y@4cixU3L$4d4v;GNQlIh~91y(>i|eW$twPE| z8@xO4lh^1@>)q~0^Ja^Eg%VAL*Z#I!_^~8FQ`YF}>6Dj$bysEW zFhBrt5om7S7@UA62d(f6bCeYSh2Hn3h^v@1UnyZ_`5gJq*SGA<-6?42yJn1oKNox{ zDci{yuzPwRlk(J*n7uT0iJHH!6~USdOZ*pF)c!#~&BW)}RJZ07?}826z12`D{JRjwGV0(;+~gxoIKY7cLK~ zfwFAu@@@)=OXriDH$}11lx+zq!3lCRpR>5BpVxm;{00>{cEPAE$R_$2oeb&uUI)yh zM@5P^cnFTAc}QI`v0Pl2h%}mx^>{rI(t29LUbdj~wP3$pR6{>WHtp>B(4XQ89BJ6p z`DD6{^fVK$ZcJHO1+Sz;WRZfvkk8btc?420u>JDse9jK;n|(zJ+A0Ru*77b%wE5rX zPEDKcPGeK(OxwRhd)h782Bgz4?yLXFof910s0*nYKrEnh{YEl-VF|6H35)!9VB5(Z zS4xb(Xy){e1{+L4PNAZ2SUGwMk=qs~Yw|CC=rX%=%gx;SDMNSy;Q4a$X znSUX+Ak(+SS@!wD$op{^nZmFJGSka$YP|MPrnZUiVq7Q$|fr zd&|>u%4HvDL701T=dQLZ9A|KYW_&0QsqiQ>JU+SY1Or@gUpG@o8mA~oK+=^7Eq~T= zxwjNIUp2itTdW^;H`x!fpk1$j`7{eqEDn4yk-I4J)$6m78L1`glaATf>>fVTJ9*)~mtA_O30uSWQg2I~VH$J+ z_4uGbir(+ObdTadmGhK#L~j~xi3*$jf%>LP>?fT}-dnJX>3a9%@vYHr7hq0Vi@ov1 zL`L!ImZ~{_fGEEB2C^Xz1r-o=Y~Dhdg;!iT_ofJd-16ZzBJmHYFTz@=zigv;yYici z>KU=nR|Jd>JbbTZhghR2FoP}WNsj(2`%ECDNh!iX&_daJcmT>?&)I`d*jH+md>~vgsBV<=p2^% zZ1zv+)ct4L3Mq*!PyA3+{h^kUYhb8?T${CSBo4t7((wY@EN8oBG06zzU3B(`c%MCM zNe>AFe_2QifjtMn{U#?%G+U_MO5EH>#XHAfIV4io#V_|(90M(UT7C#{nF>nKz$Yv4 z%o#S{qa-!=-ONaF#_vG_aG|-jy z$qP!)7&e1H*HAN5*80km*4~7TMBn`K;nSWq+sDuvWmz@}(rv!;cc3q#Gv{24{G|o* zXHt$w<0e#Kh`b=|mT&`^W&&ovD^#~rw^2^>cQv5Rn zJM%6uI!o%gqL8dV9k&c=Nt*M?U-Z?@FruW`%kBa)p!?gD%Nf)UH-~(w&#U!FXbG9F zzrG`MpZ2ir?gx5E5lcfhq)Sz;$ahQ<1xdhtgD<2MsVKShC}|u~0sqYC87TFEPAwEz zh>9fNG_^$hxtS@+Me3TE-))Ovh)I0v5V&fhUzH@|xc!oeVuF%r%bj%bYs*k3U8_=6 zoGmV+*924cepP}OAdCMCT}zBOn30H~{|nU!;V!EG4os_JLub%jm3}{oBY=j^^~?De zdKb8y=j}L;U^O7wke#l-bGoHr()oibOkBfY83)zow~Iyjly*?(sM>_S+AINqHEoo( zwCE0VBYt*v?r6MZ@i}&^-dLT?6RF&~0A2CUS7UB`yT~0|59)e=G{5^JV~ijcFZAT* zp|;_^zoCMLuFnr7bDh1z+2&pcW=0Ly+o-VhuPVP2e+u93&r+l(!uI$wM26x6k)5w* z1SY^9YH`O{yRXMaIr}=cjo;lNPy`ne-xRPl7l}0%FMeIPrTg;>e(|oX>CEH2et@%^k75PC+9#A^tLp}81pjW5<64%~yi4F=^>~9Z; zdHQlkUak#0-vT(*jEzwXxRFn~uE_0gnB$hxfMY>W&P&&cxUkl-^q@_+-N;hJRMGpu zTYWdF@Fxtg#SGRtK173Z5&Y0?CUntL6pNnt(fc|OYb$KvIXc0%Q-o6*5sSGy#oJ*z z>D}Yje;&zDQ{*lt1YQ)$TU?$vsn-|*UHeRS+vD)ReUYbQjf_Q<)A5FH&Nq-LJSSUO znM*dnO6@$ftXWX0pBW%+wv3uP{d9(`8*CRa=r3bpJ%fd-IJ=1R%1(MY=_!|&NUW9S z{?yr5lm75~CS`B5zUkzXA1LTg?dAr(KlJNha^C~^+aY4Wtc^q)hFXRZ8%c7+km!Ko z3!_q){N5y@7>ag}_eP{|o5WL+jaH2Q7&hZAG`tKZB?OVImsm9Ch(Fxa@VM}5w$rH= zC5Uc1YZ9MPGvEL#w-Pv>N!lm3rZ^QtlOb1Kj=OQ1CnaP=Ps6pIBB7<<6NF6o79r}9 z1`8bYHwd_`aSt>x2{a&0dfbBbYfpi&lhG(W0BCcA%%}#OA5-?mpNmu>d)cFEn>f8p zNtMI80c-C32fPLT%62kJ3#K3m5ZDeIGc%)cLC5q*G$i~*^3ZMH^erpQ>JM@2A!Yd? zWvum#vbJM^V3^Ub|8B{C2Dadr2MJDFe2jPG({*VY_iN(}tW2DM^lX$?OFz*0`sJ8j z8)ztmAb2Mrh{3Cg{@|Q^rEWzd*)T(3Ez^d55%a zC{FR1k|Nm>3bwm1xMotIo%uk>#4B;H!;ZEf*Eqo=6E~t7I>{dQcEl@c;ulSwK< zVn8`yJwpt%d)k8?{Md+q6 zY+2&q14y(RI19UdIl_zN2@t@6o*szASC7KXQAh9UWf+~UDpfeH8j3}d`>D}@iFLz) zaVenR5)^!0c`eG(i{R#w6etbqg2uZw0%OcP!E8!o_xt_f!`fM~d7NAPi?s)S{qQ%M zQKP|tYF97R@r3%>e?^HccvisRn#gh3#FTZRh*1--#Qc3a)z><a>cBFQOe`6JHekvvbiIny4jr2b;4|s)lKM0XZ z`*`OzDpv&BOWX)odxmHblAlno4MWp1Y?NDG9KY^^7l5_trbMmUKGB`2KuiAx2L&kMpQ@t7KgWVFLDR*PB9_OfK-q^qrXKPpZks7SeS>K<>Hu6h~UzDf5tZCP_v zOd~3e$3B^^aN_wUZjdV5CPo$twsRcRh$l#I6Cyag`=ghCnR%1 zJMzEO`ec|x_V$L_);xIXkze{}M0ZuC9W@AWlARlgfYPV`_snWvWJNA4>wm|8jQ$Jl z0IJ>eVnnx%dZ70j@yu?WZgs&%j5K%DN?@+w0LBk^*2NOrGJKaTE|mM9IvzGTqrBTJ z4#-aD{a8DQK51FG_4<|WJCGn^4Z%4Iz3KT= zL+29u{W-?x#ggGkHF37uys!ss=+OdI3rS3bxPEy`h3mG590w@nimOv+S5B^ z?z*p&?kC>)JkYpdY=l|XPnWKyX><+f;gTEK#wM_NCdL2dz+uRMc|2GtioulHX zW1L%5pH?g50bTdgK5ip|=8p<|l2%^n*&z_9m?Q$VL-#meFh_Q49j~7WZ@>H~VO;&r z2Imd2db_5+d%t1EbpT1aR96A-k*L@Oyx+rSiAMKHS) zaH=#7+K7yxi?i}B6CrdhA9HWr{!W~k+@(L#pKk?DfONp@GN(@KM03?YJj8dZ(A`Ad z|0z26N2d2bj(=vDyVBHlY%Wc)b#qH|8KauZaW^@gqr#LplA*b?5tY{5OXae1SJ8!# zWReXDp%Nn+X_fm*BIo=5{sDfm?elrRU$5u$@mO&{l~+rz)n#2m)nzkFix57Z#X6{( zv0;m-$UcyB+f;RAH8;Mo&EyW#rgMs&;~V!jo&psgZ}b2Q=_SY2~pensz_AqFm`po9Z))Vr6b|1{ScD~h9iK*Bts47%7^S%CPgOqBc|d%dYz z1hjWtgksdSkUJZ-KQENy+pK=H7f3YoE1y2nJf?!;6jq6Q{$$mCH-VuYlJBxj(=2HX zF6QnVugtEWJSM(6I(kdX-QLBJ1!_3a?yCg~OjE5OGg>xx0_+CfR(!8ANdFMWVcrM7 z&AQ@ioS@ffm#%vkh!&*s)ZaIp;bG$XyB?Gf8V?<7iPi?Fu(PK(D;@QH8v7}kLFvkQPbv~3~2zO;JjP~z82@Hsb< z60Gw`VHC0;F;9~x%;HVJJTk6jfKdDrap{XEXdI)gS4Gu&(sSnSi~o3#<>KMX-ZwS|qnLd=_NNR(-V zUG7(KlJR&kwWS}ZY7K{{B9YynK-+F9ExW>i0;$;S{`zzNQ<2&JZBkAT^93h-RFZQz+i+Pt6WZB zHdQY7+65mkZ1#Y;UG>Qfi~9pL8Rc6LDRqtL-dq3_3x<3LC=xoyMW`0k%uiNg%zw(GFhwghyeG;}&FYu-62 zMP^LL2m*oz%>GgxH z4Z$&)EWP%-A3r)>cXog5X11t)?`+{ilKH7yJC9mX!ik?P;A9n^C#w_CjKj9w2Y83M z*i$$A#%8`!^HmRS;?I>ZL4n4=o|ZK{Xqwd@2sdHdYmlcTKdND)lrSUmyx5+EIOr_b z^UOodxU0;~4x0)&y&sV^PTwTk7Ha5xX4L*f@V0O%pc!y{uV2-i*q0a4ueua;U8I?! zmA7m6@zeSRd0!9}!Dmr@F7!TiuHqnfc7(moRT-}{!nXT%7a2SArsJZJFl~xlkH#ll zZLqv<<=3KTLqZHwew2fZyv6Ug2mo+zgkL!F0J;=WV}~4I6)+BAXf1!ftH3Y-PJ#bd zAR?$!wsh%88%eHOew;64d%( zli6^V^;?;F@c$9ott9mljL>1A3-L9MT9DR$4q!nBpr@K8p!$8Vh~8Z8+OU6r^O@yn z-A#zcc$Q7?_g%B;a2jzk!H}$GtV`x2x9Y*~BkxLSd&KPNHT!tWbM3KD*gv=?snXp| zlMxcY(4Eqh$8tbMK<@!^p$FE+d!=LmLy1=1;8GGYqrrXFRVgKu=TiiNh9QB70&s7M zU9VC3rp|>9r_tC&Gr|F*h^zv_EKmH(I$G%dAEZ|I{KcKkd1%3q8{BHnc)akjEqUB@ zh+ZSC3?bA|;s%GRZ11*!{h*$Iw3DRr+WgMNG{ge3!%TN+8>&5a@W=X#nNOBLi7U-; zHO{1b%P7-B3yJ9YfsC8hJIz($0b}>E!bIfW{$`Y>8LD&-f7_Ji5Nyj7ra|2A)*4YXCSwnd zL3UxzyFy{37^O@^h?~@Qe;ZsX0VZl8ps`A|ys#KDHjiblVtn&$*^ccZeU^0MAwWS_U zYtD=mcx}mlH@L)w_x}bWJ9XX!J);xMW5~J~<51hgl0y9$$n(-|pCS28PgJvBEh^Ktk$AG2+KHZ71zKVxme8WO(y)Evw@-LOFQi$9$ zyBdJeS+DBS%gQ-%1o<4?_H4F}#BGo=v>U-tHFqV$_bRha%T ztZajWXlW1SbrE2J84b^mT1lX#?pIG_BHi0Sq2TuZHZ$=n<3u7Pk(3)8YYY|O0FK+7 zUQpn%uhz!4u<<=>5CaHf!1OmYOQ@*&czfx?&(_~w1}JHc9Jui>9R0x5m$HqDukHTj zp)}7Yy1#oj!bHXdWFxZ?gMo?6Ay4Vt;Ko?0)zHVECMwc?aY>FK!`wr?CgJp%=)ch?xE ztKScEp%6jpr)J`AHFu^wNGi`4l_qLHy>iI2$Ww8gP*OP0ESc#8MZk~ItBLb}d*Jpo zhZ>IOUr01CFl19xfV0u0_Eoc`i~u>OIzEw9Jdh);W?;&c1DR_NmYdo>{>l^b7uRjf0SQ2&~iS@$CvhhKiOt?lb5XNW25)-_lo zvmZLN-CO&I3G|H?+Q$2Q*djQ!4H5JOPqFT+mu4Cct3Y4$VH4|(z9et)A^P4nT#<4A zxsF3dUWyPU+VgFpM(!zhe#|d_CXWBs`kO?Ay!B@ov$zZ|@L7sY{}->j$#Gu;5(>0H z#)`mRPD<8TP*pNlo$@Z{24lcg!__H`D>G4x8T3i(f}=3hl&HlsZmKBKeNy$l7I88N z1*V4II%-?*Nb@@6Bqg%=Vj6M=-FLEV_0iH&n76u;EYmzCGd6*6(jz_5XAteq^FFNY zo2rfRFIDs3w}&EBk}}*tUOx2a&^hhJS5Cy$T!i(QRUS-9{iudsQ-`H*PJI(xw(J%= zL@CSxKtJu@FvD$UacI3VLwgnYLUG5TCB(IWz!e%;#W)0Al^da&%7x~ae}g5@p(>dc z$Vy4cuGXw()T>iQ6hi6DCyCSz+~@En67&V{6@K@npiI-x&6{2HovYLv&fP>^nRnbq zp!3IF>km&qnRp-_wY^LO7U@^O29hwmw5;`ka>7Zs_OmA(FNdFZzw$Ip#<<7tN-GPA z&Y9R%7qol^Ep}8qBSdryLwAWe#g3Mezn1KUv8u7Pg)i%}RbsX$59}nOhMn!+nN``& z0Ak{KUrpK5sNb)6yIt&JPy4Xa=F=~Reu);8S&ycW)%ac)Iw|J#KeL3idNPvLs9aLN z%YdLFECQWW8$v|}ZB*S@Uk~f$iuzG`=#cjAMxpWQV4B@Q*61QvHoGcKU{#3key?$} z!pZ-tZBMc(P9cc3?ZM3YB3aIu9axL`n#M2*TpSuq%WJo>|9-f121Fkc8yd|?5>)Y*8RP{C{Aa_3#4aJ zx1KG`IUDAoqIMBeAzk5aba znTyxYK0gOO;`p#;ei=V3PAQRErO_;%(OTQ!z@}S%*cgU zg=VNVcFxp8HhW*+&-O-CI1PQp_`Tc}syB^$c;l2@@49A6Q9-O{?)|`%iuFxaL(Ko) zu9bwm?%Lk9uBT-qseE(Qxf^C-t@P$X?xVWw>6edPVswim+!q@k?)~uh_kWDB$woZ- zyJ1yF-;?frK&9|0FKVIeq4`?iK*9aa_C$9oz3Wq^0>v)mV~%!aMF~C2+2_`oHM?8b zFK4RSpl}LF86w|F?oB-VBTh9oKIAWTe|fAGI1m2&XG45A9)a>v`d*5a#&)IlTLBd8=B8kTzo&e6l5$^&rAb#15VxV@#BFMt$o&4j*OrK;pfPTVkxw_W!yL#tY<15Y7$d!BjN5_7C39%~MgL5GAyLH(i*&RW->{h@S zA8iEt{lZZ>sRAr(_tT@|gL!Be*R1e+&v< zkP(Zfo5u5gYDF_NbDvk&oX5;fX#%1~w$Z(;l^~tYT(y$vx!|B}VJf222gghNm?Tw4 z=m;!)lk#mQq~#b$Q2;wA!j%sPpeU~N$jwV0F7&ophe17X?~e9JdLvmWn^qCZ@`<2b zscmO*;0$ptW*r}pa8q40Cd3SM8M+)%-!+Ji z=yJZIimO%b^D;P*{2rw6dN;EW4UR!4dr=9*s{4>eri!rynN|35>GwbchyUw z|4dhcRL9~V3(umHtHs!7Zqa(`$URM%&KCzx*sy@}4R?dcQ>;Ir=|V^{DT;-${i|;I zWPK)_w0O{G22`Ufl=0gohU%n1CA_Q{mxM<0y!{k_ExPdje4#`)Vu{PUIFm;GJ0RfDXOB<7-B^)2S#-r}$|a{{->p zRb_3T*~3}v_x_4w3K(UhvLCyy;fk_F1eIfv!$o+ux2j%N8%BGk3p4*R%K0gpoUM?^jy7^w+xJ z^z1Ng;9BB0tB-QLJ8@7ptven&K-1pW5F8TduazS`0cH>j;b;TZX{W5~8RIhB2H$e! zX_-4kZ!~_=T>_W4k3F9yx|x5xHI^K;{xrb<;`@ULYXdMSIdX^^H|n-88Mc*)_2 zQ!AAxZ%~xg;`2#K@5_-N^jr*wB;4H>DBQ}Z@b-ag(B}12f`0E1A6&gYa+M_L4rygY zR#8gBq^<7+=QqJ$+Ue$h(8a}poB1AYxYZ9hvnhR`Mh2b2Fxcwj#aD`T@gJfC({(*H z=JyniU8o(nnR4a5U~M~d6VtF@v7egWqbs!2V64HuIti=G?7RF{J;PcMK9S(4?sG_7 zx6|~1)8?Thg3gZrpmXoAc3cor^S|E7M_3i*SstQLr}j?atpAqH@(Q@1YdW0s)09&; z5rfOPHV5h3tDji8kh=EN^YKhLP`kfCI3l`r&de~(&y^rB9Q|Fzc}c3lvHXr7p?t)Q zjqX3Wn$+Tz=n9JGp5|#YXu$qffRu4#WUm3<92^U0^s5ay2hTaL+;B zZ|4MeAuNHgHSF>yqd6gYHEw3$o-WHl$rcU<+0_6SM+rBlyUA+LdNN6;bp=-QMCnN6u(RS%6DZ5u7M?DaC z&+&B~ZN`mJ5QuIgwK~$`>!i<*@m0$XNmYMCER|7x9caxYL_N$@^fTeKF6=P>Kd4=^ z?mx(Eu|723UdKo77Gn+0Bd*vbrlHGv+f+NhG< zD?gJ>GPGeF8ddaTK`KupD~J7^szg})>olFxnU%)XIE9R4IRtT{f2-}47a}Ou^L3Zh z4lOg1_4BNx^WOzhIiKu=R!91zlN_Zwj|SKk*kJlad?_*iGNv442A#5l*LWb#qj`Fx0H>=Bo$He61Y=Qf9_uHB-c71*{yK zHeZl{e`tU6X}yO~L`pRfam5a(9Y0`0Zqj!-ji=DF@9G`?(7iI9Hlk|s!j67^X0h_w z0bHYLiAu17%yB_t|i| zivW!~jTyA;?A|Gy+w-mrQd^98zEFLHRqudV&T$|V#8)T}7CS~rkDFQnM%!VF<)sM) z)YcQ%D$73Y8Af-O*ZtgppueHuRE)z_@N&43e>J|b_l=0QQM;-P`^Nd7RN-aSFw~c2+w~UYpTtRTv~hE3&R^6y-wfi<=%1k6SRxvo}Q)G51;w zd8B5dGNjKTr!lqFpk)U&7yG}c$aDsgHt+TQN0?auO9w+fw4M#|ye#X>WkP5Z z*yhy?o2-EXE036IyU?MEkb_DQMbY2O^?GJ1UXc}IM$A1O;F@8-{BK@qF$08+>r8`h zvl-n?ozYKPx-$NvDbYaI(RZ6oVJBL|9-|K1|IC)%c1u$3s(sbYU+UK9I!JEg9rGAgKbXlhbQCH7g zscuKL$1Mbzulbh`CoAlmuEgSvDkI3 z{gWj?Wi$`@dAG*i+1F!QyHKPIP;x&PouPn0ka2zFfIl{)t73Ixp;Wvq(F5fJFDD$_ z$|re;fZq4jYsA#K)#@9DWB%Ka3|nh%Ug2&T)k>AVN?S_BD#M~XL10q3&z7v2YsXZi z)y_Bw=qzX0Mcy$kn6N^VJ=`B6%MccPSck% z-u`M=bxj9W;23HPw*Gr_Qw^87-pcGBrSx?oZ(|n1x2v=ySa`r6)t+#SlkQ)kLe}Jm>kScVvNdLf+eq% z$@1{yrN08F`^sEOvnxHPaTt%B`adVICF!-#D5LlZ36HBNUFy&fid4yig+B-kjX|xS z7LtVydIM$IMyPPdl^-3@ewtQ$wyVhih6aUS*DBji%rj+WtEiX*TXs;` z*QKk9L$O|I!u)TlpYZ4BG>{#mdBuEutRVr#}^!{ET(7&6=Bd>qFxJup`{ ztlv7n#wdcXOm4oY&r=hyKwRzQ*qnk-5jBaO zj@=y>)kAm#OJPKkHXIDX*7) zc_nbytHV_5_2H-FF#yIKO|;ygrYPCD1lhSnV=I;Gb0Lkhu@JZ>^SX$@uw&4+q68Vg zE63+J^>(X!TNbE1_3X*Ytbuu17T<%&uVt+Mwmx3enrf}zn6-Kkc=qrbv`rcXm`Wec z*g{bAbs}O~B3J^2S?SfpkeI$(qV(J+PecGoef!*)wuja1esse(U6z=r%qxLSVQD>*eyxiDRjZgX^8lIF0=xr zncF0Q05II>p9Vx3K`WE#{co5uv{xQSgy3vXd7cP873Z0k_!$BDCQ{#n3v7Gs5?B5o z)DG%G?BE~v?Q%96f?$S=ygzXU89J7B^29x8e@fo)o#waMThtOoK^hUo{447RuD;kJ zp0)3NxeU8XRMZ-l@ltx{V}$G?(F zUupe)q71S;W7gJ&T;!9gT!8GsQ0$}|kq*W6ASY%%6YkG^3Rxe|GZ2=Xqmakxom?3U zdYZM(c+n=#8_bm!TM=sB{zQ1H9`P$kwVs?_noXb8aA*&_=YBCYC;0<@1Rhy68j>aH z!(pp*eFv~Y2~SK`Gn@%JQ#>0-RZZJnZBWr#Z-M5=pnek$>uDH%K>y&%*j?!rBMouy zP?b?3J1FmV8%P!9cKzRv?1KN&*bZ%?Epin%m%mPJGh2P&9tQK{=@mcER-?`yFDJY);Xev4&*Db@Yji7HyrT zDcakcauz={qm(`s(ZY_VD5)eoAgg%XKD;l71*ZDFA4j)w==RNt{tp?m{ej%766c3f z8lR3krb7XDc3-T?SL`41Q+LG_6}u290lQykCmwg0b<4oWTqtHSa%dkE)JXXTq%bK^@eHxarDt2|gHT1BsAcd2hx%>RqRku^QQ^^pKYnC>HwOIL4%7bMr z(ky>@u*0{p*vz1NniS)%kIYXygeX}jqwh262bs12tKqM@V~Z}4Y+QtQevxzbbjjxP zU+7)3$#%5Nh$W6ZAMbVFJ8U(fs+uiz=NwLA690Y_2s=`H{2Yr)2ClcC!=)R&sCj)O zvNSNXKP(0`8DY&$D3Mt&sj9D~q!SfNYAm0+c5Dn$W^rrBlW^n1yc17&w4(fSJPC&T zeM4O#rSs&ha6qlm$=9fOAdeYaJvWx|wy;lH0+1K&$uD`cuT1W{7jadX?!GdedT!RbqSgT#_{V-Bjz5O<{Nn?EZW)K;RwC2PF58l_wWe$ukIza z$HTm@LN5oOP@QL=iLc<5W+E&i)<-$n6q1Vm4hH=yt$WRf+G+5HYLK@|5Y)O1b7fC7 zUl}i~gxPB}uC-99cRME^nl8Gq^bRu;n&2!>o=-TV!8I5PeXDDrLDl@eeI`>XPhb-6 z`7cB4#MgM-53rhgn`ecpBwke$9FqW>bpXM9^921DA^B_fK=xF*&oXu~!!epCU9dRp zaegUtwJ?GS&DwaoHO{;PwwEp20*!p3I9ly0a_O7BFA#<%9$9PB9^Ck3FK}{$OOsU4_H)66Cu-7b}DhAU5hsFpP?U*fRp%b0W|Z*r<+Y zQr7IWCA_|~0I5jF+z6gU_r;_zKrkE$*B zT)z9(lHJUJ-@*wuc&A58a_zz(&GtlSqCfGK*|i`7a8mk-``{qgzzZpC$9ybsPxKzQ zenNj+;)&Y1UnuL)_36gc?vpJD&@`_bFlyEfO!HB*vk|+qQl$%gef@J7-mI>v8y?8Q ziWKlQ3mi*+k<tv%-^a5|KPwau zM{#8M6_crZ-NJ+<*?r)HSZ0}3*W_CtC z&=_6tua=qQ7~6ic{QY{~CKC2fqAYm)%Py7v%5ZfI8wXBfQEmP9+{p13jdv+7`cHSt zjhOet9niCNDpqxyi*KSWRq##d-^LzlS(B77&?hiIw6=3lUpTO@dm92$Gn0r{{c}?K z6HQPr<0~0Oautyw5E%i$o>wjqC6!%=M70=dYB)AC0N++wPHuJ?KMm_KgD{#Y4ani8 z8kcD6GIM4P>A za3!I~9yG&08~zTua9>n8D|X0!brn;TFHW}w=dq;A9Abz3EFZ5fFTyQWOzfJ~e)uaL z3hNTW^xj!X%=I*V(P9soy*IB_{G|Hm3u=MwW^c!2;)ycVrf{YbCoFm@>6h4S$Mt3j z$Y}>>5(=*Mt&y1EY54~Qeb6XjJorpWY$p+y5ggc9@z69@U<{S2*X31*P@Lb(wL&t-v&8yUZv-wVew>P}D%b;oN zJSI1Yp^vh;e@ZrKNrK@S;i?q1rw${OOSP;Wu=?^m$+CeO;?18R z$K`dA`Tt2~%vlAynRm$M^h_#~&ihf;DSh7J!G~ug{7D;)8j7fa9UJQg`zl=dblXmP zF_WZ<{FEscbf_3FfVF9`_79}P9kNOHWOoz=MBq#iBz(jK{9 z&B!4m?caC#{HV&-_1LMJit!BK=}=8AG?Vkj#%z5d!~k=NR=HxgX`#`tV(S?qs!2X5FJInO<2J#572O zRzm7K^txsL;YupQ_S>fEDe`#YbeONe46`6(rt%Rc?nI6~-BjojqsRI)ljGNo_BQiR z2x^Hvw^G(VdnJ6^wAh6}UgJJczfP8S&yF^!MkGpl9`98tYj=k8&jz={EunyB2u<6|BzeqU?i^CCn=Xq{5n zUa7leQwuYmHHY9pdB08ijAijgLz&Kz5lq5(^6ink!%0uf`{m-T1DA2vbAk(eqogjd z`E7EO7hc-CYB(sA+@I~()mbT3`>WSiuWCeRH(@ZlT_lUMb1417TI>F z?e})nC7mpY)SiigPoq#;CmiKN?lgzO)(u^S)g%>);lS;TR3!vFqfAf*gRGmc6 z2q$wNAp^T0`e%ade^AB+4TcEN;2sh@5`Dc?2$jKj66>wc3T0Yq?R3R*p?)~YD^hVdUR zL(+S{d%y(fJ2(dY%4JUR->ldviNNeL{$QFy*Ro2A(2Myn5OEg$v78X0xfIQ}8@PQ= z0|ny%A<*}{2DNs*P}panqMALpuA9}*sGLi*UrO1tZYH`B8>)Iq_SH+k0_q8u(u9X6 zDUg%?d$(3PRUlEzdCuLqRdlo-zUvyg?EOGcavIkkFi#b`L1SqH-a;6 zp4lD~zEw@>!Dk@F5b4RU{!)Pah${kQxSS2K-mz8Q ziMQP3{c2{w4^nr)si-u85ac%wsrhnjCB0U;tK?G-794XAmBiyOwiG-0=d%OO`QDp; zOb!X4OT-a%$H1RCBtflp^On zJN?!00Vq0C#$J6mB=gGqu1@Y^2T{k1U^cT<-b}gf9pbCbAo^Gp| z$%5N6*AoN9O?EwrzE9~Rm$|!sVFuE$h+0QEnI9c1uE93B@!OXw?vYg+PvD!x9=kp6 zDh;IC`G%2X4jZiw2kE{@NkxgkhmwwYnSpQqZdEq`%ltDn`q!30u_Hwlqu|__Nn$59{NJi6_bLgzPG=r{tj(u{P%Vk>#8sRYP7cxKx2(_MB>%7==w z!=@7kPd6WBPWy7%8QgLwm*43^@3ZkINxiJwX_?x@37kAH zB6bZ$A-Sx<6i~i5N*~?ftAR!e?@WbC?-P5C7#u`XTtfy$S4=0P`^LHQ@99OdeE7ey z8-?bcXdIp+C%GeK@C6EoMCBC3w43_U=vgf$7qsb@(^X*OW7U+-DTPxiW&pYTyusp< zr0T%FF=;CB_PS_LXCRIQCjBMrOjgAF5mBDIbSS*`?~IzsjNBh4$W^$?vs~z>AV0jB zV!p4OAhZ4GvvaG%1%YLb)vS~)DJhv2L!k$qJ`hr|a$E!&cStuShfQm$e7^J#x>t7m zdBOX(=Mt?MWc6KP;Aw0GSz)X5@P$Q+SD|9>;nm7Ps4M`abX2j0Ey!GL}dLm!-wGvZPfml6P`L#rd)q*PbXYk0kRcX>cdgxIDUnODi#PB0|26F za3GT<=~D#zbBESSXwB0VPFnLcH4H;0eBe>rgGBcr#qQAg4|h*TvG*k>|@x= zYJ6(^tzN^z7iH6)f|GWmn7qP<|Isnw;W~KLaBNlEzp>XAH(>PDZLIJ%KD`TyDWlUKQ z_3IqB=b|pX6YLb%CNvQhSXojvpyQ0WDNn_h+(*s-^axdXzQ5FeG$|}KV<5T7{&HGQ z{81lC#jd^I)NHW!rJa@{h*7>GcUu2=O`APG8oTJQ*Wbf4)6kQZaV-@iH9nO7Ra;*} z8xyzL<~kZ*cV4++4uKB4LNq! zvv%zfgNPJKS;DnA^j{%E0YyR77oniRWgIj?mbrhplcmpnAmK z=Ocns%yL>m6yTnLL0i>H3)@PYL9vrrpQNg6>E~agS;L+RTe{D2<&smn)1x6sYEe9r zwi@YX;e8jt@bLUpa&W zDt7t9$4BEhq*g-gFO@v$^Osg)^-sKI{t>%5gEv&Mn{NMtFsIk*csfwUR`r@zEK_$k zbsv18^6}Ljjkn@?4u09P5LY!<0`7ncsyzs+7JTYIovublPO=xXIuTl_#5rHvOyHtZ zbwoV^HzWZP1~;!7hD~{tJj95S4T62M9Kh6F%?l@d0n4=hH3WS(Ox-Q}Q8jUh@1;B87xds0aSY6K67)ZCiZ`m| zr?;8}#_y9O?ne_MSbTaqV{-eI3(!iX0HgXm`GV3yY^+D}HllmZP&& zJoQ{=HdcRO6qzer-STuBPO(T|%5HV=rCUT(gqTUO!#;4msnEPO!`eu|U%~zJ>;)q3 zJ8|uHQJb*Tna$mZgkF`LHk!~n>lpE*dg{k#{LzEE$R)Z%+UlpgQGC!8kU6RRvVc3~ zadJ}}Ol<#`l)4;dgR0D&0(bJt^OK+WqAvKr&3!$?lXRxOT2^C004(||*94Y zRQa>^os(DE!ptTVY+0R9aqf3Ga@{VO20v>vOP1gCvfN&wwYMVghQk5PMt*R<#$!>k z3fpY6Pg9e9$m-qb-(vvDI6uQA4NZ*wWOZ;Sqs+dyYZq9J@ zeqDC@->EhS0hEEE zd#(dSP>7|!EjvAVh4JWu$oh(@HDv4?*$*PDd(ps!1qgGj`bJmrRwO2TIN^BPv z-2v^L(ne0vIQsm=|DZ&IdpNWU1=ou7FY!QHQT;B2@|jvWOI2F?T%X@rKwM49SRT0D zbvD1%C8a{_$)2?5O1oLP5vMpHk?wZ)LAT=e;%l|)0m)I=XE*;L{WRO~=c)x-7Ppr{ z_7{7v)KlI}&DLcc=~&gpFDzhIh0Q}6M=6eHPe*w8{b}0 zS&EzA=Wjp)t>6#2=fDEKsN`0~)-%_?#KN2{Y`VSxA-$Dt@reN@_L{-=2TIJ|YMw=A`9nD_*sT#zb*p7bmJ|=~kzF@{sUmJ)%JRM+fCE-}^k!8jG)n zP?|$mc)H(vy{&S2J}MwS#rbUDxRDE;L817A?~r%0`f5=o`cOd;eISpT@c+$0o?@mf z>B2p2ixdCSP*Vydn~ygeq<{1!1w%QxK9pxnCC{!CPZ4@-{}KcW3!wz}@D^c>eJ;QC zVJ)$Xvo2buFp63yMhtkiX+xm`Ozodd4!&U;SVLam&<$jMns{g_K^lL&&HA_SqW zsoK)XV+KYEmC)|3Hd-ip`mwT`c#cKUaAmS#<~9+DRDJ0EAI$cs+F&Rs;`vK~RROh7 z6-yVOE0fc*IMIsFe^DRMm!6?G`9NT3eTr}gC+%S|Q~Ap);3H{xX0)Hmyp)3<%qsS! z|HiYz?8;TA$qHfCdHX`*X1=C}vsguiNd%YD2jBT5W3uW|O0OM`C3cs3ir1QS95%dU zr|@+1_%#hCj#IG0m0jrZy3kdWI{|ZV3rYSQR-) zGrttIECrG+V^vmPLKLrB<-&Ak3VcuH66Q71yl)B0YzJa?Wgj>ry1|&OsmQz)gRPW` zx^XmsrcwN8Lh8aZ#5)W%fRCgz${3@%pb zv8eubh(Y8avjm~_tzSA|1|=FO_=|8KwIdC90Wx|Ngf(_9g~}FiEQDC*%0gi%#=OTU z2g^uFY0PmL0L3BlsdVSgl5%|rvwq8V0*vt^J^#jW6~jjpZ*XiyDID~MA(fe7 zY9+L!T4rge7G847z^bl;{~I{ua+Sg16KzQwU}AdE4>;$2J!%#Ug*p9hV6Y6-4fKMl zJ}D-gwXv}AhmoQz&!Z)EKWu7czlrl7Gll_NfZOf)_LFZY^z`wIr5F4WoSEpi6l%%g zx$7u=)YZtTnRkSOw=^mR%rGrHFMU|MJB$5i*b|vK!9jtWNV6Gl9z5rieE0UtjwcbK z^HR1=%)Gt*UEI)uyQ3Z;jh8<2OLaLNx}I@;`Sy3BS(%xhG_7BOvGh-Yf5}>_Vdzg3 zR|aQhYjwOpQc9$!bf6M^b?Q$n13gO0s+o|%~Jk9w5Jl}O4?jTERh zk1#c#%3AM@$Z~$Z`X47=PaOSbv-T zwoAEMcT z_sdP<9%bYzMDNHAT;?9PRgwYV`chbw@+vaD#H<%&IF!giDq$9DZkh+X2|4#Sm1J7{ zp-?z^$&IWP)v}jNy2R5~NzQlBn}V|A7G$J!_4ICJM5!5CY9rKjj<_9A0+}p6{0#pS zZ>C%yw%SdzJYX|kjE*jq4xr7`9UhzbNc;RCi8Y9p;IrDvh>9@&z49f9t2T_9WycM~ zJT#Jf8HUgIg5!vmac*!<#QD|7H;$kMPX0OmC80;!_+fYelw*8is;fkQ4)S{X>~b?g zcPRec45`}d@W~O4e^s7IphAQ4cVLuwx)@#@&b?w!`td)$xGHAd0{R4}y zED2Np-81J>hKU(E zsR-#X#3&(Da%v1ChjPyG{$2O){~nKQk8PjpdcR+<=kpNzu%nu6jc^`a6dI4?{|l*; zwx52mnjN!DZL*6iNDDMyjEgF&RKrpXe(lG5UY-Ol(x%oQn#LQ6itc0W`jeCP=^lk# zQ*+QvTGly;5(BXiHC5`LNjkN@1V|_26=(v3pHOhis$)dvC}PY7eGO5usk2L;F3(kt z$$}X{*SR>0+gI@iHbMuG=?M_P`XS9GY!Xzm*fwo$f?%x6b>nT-fg%tpwd4e}FQFNlbntq}-P+H0 z%IRlPnNA4W<@MKsC*g&nMA}qxI!TF|I_aEU-!dCQ0(%qmLcz%Lq+Nw-)*`NO(%}gB zednmSDo2Cw#KU>si!qEvL>f~UVRnPvaXzOsH0>t1ssEG0<*PdSQ#B`@GYsj$p-p5x zr^`>I{NTHzb?}ukgCW#z4rq{M$~K#OwMCZ+z-~wTfR2c1Si&71`5sQEzZr1x2Dg(E z#e*X$=}pG>veR&xn?vDfSO6yp{_=C_P$aBjq_pKU&C1+5&|d>)a@oAtt(+Y*Hxr8~#??sF z(EX>oSRRMV&M^NOQkIXzlDy>n;jg>%I9HNq7tsnA@ zsAR$o*|FFLh9d{9j~tcpU|3UAgFetynO=4avKtenVKO&~uUx;4H>+}-yPx2B=S`gu zFFFVtS6&Bby{<4rbfwYL2m~{Uo2axl(IJ2`-Y3*%*aUuO4;U#pJV>{B>hOace4Yy8 zkp2!aL0$PC2|Pz~R`U&S$JU?zYIHp;$Zm=+NWapbA%|9H@9RfYa3UaxH+8~dH@)CZ zvme}YWupYaqNI-5k6u%X7BM!Gu8aFc(zm@~TS)#5;3$`s!qt-h{#*5+iEE2^55-tz zNj^}W{2K+5UncnV=O22781@Etaj`U$it}em`N#C91mI((G zn*YHqaTGz9_7@jH>+omWO(h^dY_0P=tKPhFg!Pm-nV5s$n!UNrF>091d|C*$lc;T# z6m+!Co(%oEKhd9vsh?iz>KY&T@lsR^_8mtr<4$O`qh}|=q3caHRiWKiR3qrNwjH>a zU|cuJfSJMmxFlgjBIJ1rGRA!p^#AWd15><6!g;O2ZP+(I4A;yQJkKt_u@Nu2-CEq zS_IxNgggnN|8wE5L)$y=r$f%wPdQZ(9+B7oDmIM$quLLLDPiDg!6gOhd9M$~T9V`t z84^ps$fx@yBBZh}sO@#z?8{KA-)8q?wi9`8G(UkY`Cf}KTqAjfE-EVCEPC?My-sc~BKz$8t?p!7nTQRxUx z=}x+>C5_O^5eX>eytR&?o>2Bkttznm!E|G2-t3wX!K5|FqM}-(7K$q_z-WwWxl?+)K zQ5jjm+Fbfm>g6Ge00p zFyIsg-9>2#nN(*AtMy-KSC(p)zOKr~blcWMijsqJ~%a{K@; zx{-!&;rY`?>`r||(u`-0(WrtT&=Syxq;!GNGVk?`(zy+fwM+j%J)-JyO!=<`t*+_$ zKN7WYX(VBCkj-k645QLRbXtN$d?gWk=ehSlzRC817&rK>guDSsP)Al0Go06>=4W~2 zd#?)o)ZJ2FYxlppO7L{|X}Tcvd>Z{mhqZ|>5&F{1p1`}?un zb0LOW>fr?92`Rf&+$e60YhL-R{N_cSuQ{IFkKiPx~NEUmNZ zG3QsGI<*};Pn~qx=M}l@*j1Vm^V&+8;$5QQXmsCpQFL@&k8$`&wpUi$>K?LGE|7-=P^C-9WUkI!coo^D{i8N)gLVD9KNmr#AUa1LoIV{l z|C|QQvAZC=HRSitonMP3FHoU-4HG(}wQZa$DL?({xhi>D;$pQz&M?SeDTJ6_yT3QWS#O&XJG@h%guC?dI@NpKPqUI7Y0PqUMuZ8w^<( zk`U;pqR{GX)kqwti{XX+@oJF%48tBvQqBLv!5>LIl&`Zto04!p@Fd(Ax7w_`gMC!} zMxrJvXxK%UzR@nmoiK5;A9t(?&d<(F+ur+5UvxB9eCr6j$Y-{!Q)Ekp_f&DiKjz0_ z&5s+~^WIqUC7`1VGNX%4c8YY|-+Fbal7reg#5JFEHhk~tyLbR>aLbYP_886zP?io& zuG}59FFi4aL<}!6JC0c;C_}}kzH_fWUt2DR%iS>iqNp}PcX&DmhqbgvO629;NIJT0 ztFt62RI3$rI7j}M*fibT#iCv3(Gdyqb=2cCnfrDBtj2aIcq%_45j3j;WN_cB$In0h z%6vBVF<2hq_bY#EC~Jo^ji*RJPnR!DI`B1eGZBiY>aJovo{suSzEo^O5yNTP@G0cA z?lwZm*5~2WV$bAM;G9HH=OU{A#JGD(K10owC5ZeBdDhwZL~iOl#HZQPHlEhw66ii@ z()YDo#bwn~H6mTWrWWPch+YZOO(;l{{+b`Rn@^v+-zj!?f1@(6Xzt*8Qs~_)E&3JL zm)o^h#GcfpTYxo-Fy(DdlT{eJ*1Lui6;+areiI`b_2$p`quS)yuyPPug4M^JV4F&R`i`>2?{K35-*o*>uL)7k1>T1++e0&vwn|ROY`82?HVGLDmGuPkE z8JzloSwuYTqNxJhM|D^3XwXHqi#8fAfrOTc$nNyPBO(M8un@-TTxq0C{-IhPR50?+ z;YVLFe9n|*0NT;9Yz?WLDVJv=A;qC_6=7`TA(+(WXD5F--ErUZcJ|jW;8z_i*sT{Ro}usZ;P2fcu{U_+^0Q-#%4-rCJLb18 z8o*rO@XG$T0rghP3YY8yS8#{TdrLmO(rI>7OM}y|O?G#)PkF?pU0mq&ii}+JG=6(*>{7hiZ)t2o7D6K4CzKtEA}w8YUVM12N|P)zX=%{yY6NE)%c9pI6Vc?j&t z3H`G%?x&fyMc#z}%C(d#P@yOvO?gev>~Tvd(fSVf!h7Y8RmXHaiIDAdKeS&m7-dR( z$O<@R1>?5s6kd@L#b@(FXGqdVYNd1RH8yIni$zzE+M_DBOQI*76pzRmrvF%VrNV2J zfOhv^h{l37QkgO)2c#?^LAQ_wXQYJY(~HjtQj zRJmW1=pa4p5>(%;hc6(fCax~?tIt4A#lh6nulH{Xs_bZ?Jj7%7D@G=Xfjc>mp|b}h zsk4;saskuTN-sMZ&RdgKjP{)wTnK+ z4lOI&JkkCc9Jx_+;E&rSQaJ}HO1RKWJ9zWC?Y4wO9!}A}l;RTA;DDxJc!#~L-%k^` zO0Py9cy(dwr}7iP{W4mYs69o~E%G}obz?^#L3#2gIlxEnZ5A|`8$;PRhj-W>Un8_& zE3IUF=Lc(xP7nLRrj4X?=A}O}vX$x>jvC9HZ0yb0O@G=G;LH)H(<*MKwAD6ADygck zLZhnwPogTo3lvJ6WcRfX&s(D$dSI$KMKo>Ju=P!0s(+;9Q`{W-#{v4;zm!fu$I;20 z>)%l(!Z^`Jt|UTRKis6De1bm5KV&d_F3e!KIzXkiDe^>>hqIn zHkhSC(l#1C^BXuHiWyFO`btWu>^LS_tQ%;alyM|J0o9#+Y`>^DoCbfL!W&01ovX{v zXT2A3CH#!+YWO7dGLqC4fz;gv#4=q|=B1L05T4mL-ZSUuJ6v!D8`x5=Eh%dOF;>%vt_B}!xF6}jEhLT!rT11-#t8RZ*pP$01YN=$=wAyELCLMQ*$&Vq; zNt4Ze;(q?sIi5NIQg-Fh`sfOm(>9|~thtSzK`hIF<2z7mPIfZJJ`dC66PC(=pEd9M zNP6f30fTs={jnL? zYaegy0y!cxlkT;Z!>Uu0EiXu0T>o*#>9hLDY(Qfm6)vn;jV=kgin1?Ayuo(>ia@xN zhY;DiIn+Q)*DLj$#a<>%p0L6h^V$F=OH3s0VzV(?Bwa6y@M9s4*WJfb)e5*ZP5DuE z*x5A^qu9FEO)q^|lK|RIr{(Uc`}MaG`e5}6s+lqu%mMDl!tyA7dw$gXRb?x|A}4j( zdPh9US|h76C2l8z47lG=Ua4~c^LBi{S77_H0L02g+S78 z0D{pwvQs$)mK7qdfOpK1zMF_JXjNeB3|}<`|G@d!>)&D7^^^VYCS6+Cm#(W`hi^S7 zIu-u?^^3~qGs@+JJ0wnVE(`qMFs*kD7UX}z!-iN(+%<{F5w)oF%6!gGh_9UBmr-h4Dp}ux@r>GG ze+RJ+2=T2e?dA9c;TK6VJvMyXQ~RhlrG8BBdo;z#N$a-SO96ur`f**%DUpaxEoiW6 zfxcW6)QxEt*`3%v9nq8iAUi}%32IpE=%V4&^uKgm|8AO01k-ho?Z_qZyBJA4AmP)u(G8Il zR`IH%J*7muZk`mVYF^7_fY zkeXA`x4wL5UHu-=T!4GcRZm=DF91T+cY|`A`=E+#Ah@^c7|b2|m@-IwMv~RlanG|O zCaMjS^EdI1%pl8eqe`K+Ef3*xWZKP7kUEfAz zlR(?x490ux)fg`r3K*}nRB}|_-DdB@dOeK@=STn8s5YL@l^|;eMG>sVrvc zK%`Xsz4=nu&O+g&i?qWZK;o#kCus&!f7}mF$2s}Zjg%dqdWoE(XAjmTs-`vBKhzh- zRT;OkM3-Xk1=qck_IJ6d9#ilaOOVPLZov*SDHx_ zE%f5de5ht?=nk_WS=yP ziuukqt=Zl&&)MNLYHlK#>|ef5h@309>V$ayUVb2K@_1Y~7Tjfg_+oz{3+#KmveyTy zqo^d=P4K(unh~}}bv0%f_TBQ0=Iamwc$o|H;+h+u5qp^^VlPyL67qk5e8KbC-Wufc9;^w&TMI<=xUO%a6)^|F0mdkLfwT4@fQ1C z?ZP%YxtR5#9$U`;@Z9r5mFWU87B&)$;x{-LvqOsJ@k}v+1XuM#+LCs2XRL{nTV~~N zQDP#bud0t&aYWCQqb0p!osTDWm`R}dqCq)A%!&a_t@p2XK^o+|#O|GC<4i3P1|og8 z-U4LK{R9nDJpURn6sI+gAp=ZphV2;m{LuUEipDeKj}?5c-}q!mHf&?M@FkPKShgp) zv8_L8Q5o+ngYO9XkhvfKl_rzjS}&x#kv4{3d^ehP z`=X~d&kUd~boFX|fXw(7dMj8@%UbvMKDu0(zs77I7(V-}_t~^o$^6q3iE(3FhxM{h?rCav)aD+9W2P`KVa?JnB4A z`!zNIyumnZ;H-^ir|VZAc^RybktbqswHYJ728rlvtDy5a0GAXl`C4FJxe{EY+~G~0 zNFH**KK;fv`k&USVVSa#iWcmn>J7ju6*<`5d7UG99iG!hjq9TA5(^r(AUlc9aKq|L zQr~La!f+D5qbn7wMnd!#9rlZjBMAaal8&I+r^dIO>X8o2g6Sfy`W6529ka2QVy>^b>ShF7LX8>o{v=$ zVOw`lYt^NA*Or$V>6dh^9fC{Mfp2BO&}n5don_y=dc4C5nH z|8n-KBp@6pw{aQx9;b2AZNBgUan~-&2&6R5ki!z4vwUy>2YU~U=FJk_{GVX zrvWs6cmJYe6K1tO%tBOPjkB8lE0?*XZgbTw0ah_+^OOvU^-;flL$?P*qm%;wKr8-b zq)L1N{rV!n`<+768cZ-W24-&cg%_i+#yk+{H@U_Vp|qbGSKKHYB$TerO+D?CSCP&veCQ(gTV0|T@ry;!Ghgo1=ZCz9e#Vt{MK)iIhR9{7}`x9V1LP; z4R*rJf$=hUgP!5WCudHgw@-6MuTuYfiERrpb!)l_XfOG0+J~`1+{&8&j#{PWKR*(zeWLy`!6L1i)xGhHKa6- zX;^cDWnV~-$REloTF*fmQS2KwmyuzDuemjrb!Vc4 zHF_(S?3*sUWDSprC3m8PtHOCs>9K%6ifV9bJ5hhq78S<*B-JZGLn996=g)r4CILVv zTMefO-V=IC{X_!|+f;!#q)cPeQxcN>wH5UYk4T@-GWw9?48B{YX(WKGb2BmDfP;24 zquU{}I{)4wN*h+`K&9jhNm zKq28*Y`kJ`#h}OBoGY~yjrY>F_hYozyxg9+18@SXe3~WamQEH6?f4C{Zq0gay5+Tl zya@~GF;_?_y;m?_`ZjwvlaU44D2WbmMM{#6r4L|*i221b_vh=1}b2T*irWY^FiXPoZXG)4R zM|7J9<|x^AjFF_}tcq1E+dt1F(=)^~T$Imt_vIVrY&l62CsTTcZ72Hy+=}%(bmPd_ za;Yt1j7U62z>a2it0qc5ax>;`O)RrSM;SFL@x@4)XIB*|TPKb-9!$K;jDegJua=>d zL%@puNnLoy@XQI^6`q5R4Gx4Xwt8}qlu{Pb@g9vIL1E+I@Aic_A`r>SVz{6|9{R0M zbG`@mDfs3%0Eg7oXzk;W&0)DZ8IN?j0C;O7X!;$%hPhdBb2@a=aezgW>h4!i3|Ivx zc1PC4O#y2|+nS(BybY&mT&2s{bY-d*ER_VF+7A=SgxxN&wwXNsinddvqC9M^>j`(z z#3c~ATxL*w3wkD@1wVFI^1fEI{ z^hZ4W3#>uiSTt*&q@E;y*HwH_lz?WQElUrSq78>nH9-y%*)0=}=d->NxXmbsD-UV< zbOF;Pr6ZG8D-3|N>V3+C;q%7~ZJmEN>hMDsIhTXXB7JhEw}EzyOaQ@{JE6@_l)x-@ zm_JAhIEc=-#mgP*uaS$M zfYd4HezoJ{Hum1rc&a5va7V#n%Vw`^n@zp47Uvu|RpBKg>Ia)k$|`UALIWTRot8Gv zOPE39TRTV-0r-Igkyf=}0TVp*&9Jf=F@ex>ks`+8;C6ke^`(BpAyD4AE;KJlgpA|g zqrFD+QRlN7GxL%mN=sm6ja4I10^9X}GtZjn(uHnoJj7;p43lILuTx%!7Cg3h{I~$& zS6z0v7|GyWysZ&yn|%;XML2aly=Jd|U3b-X86^L=HFeU#@^-tfX@NiBESm_hR9oRn zLZNfKwRXL%XwM{5P|?9YC<2jSCkF?fh)wG|Z12W`-D6?omI7{}GWshPHmwCGw0KR$ zr3^&g&v`POFu%Omq$~Rk{8Tp`(|J+R=zF~h(p+m^HIWqJs{P&EN$<5<>l+xMeGf?I zeiL}8bTwi*RoTHkMzAGmX zAsMmM1R;Zishc`RR&DqOhDUNZx82yHfv8eS0 zQsRd0+tF?&j4>?ky`V?rzp2osxH6y3&?OX^ys-qXkaO6K9V%z1uYXG> zqUmvc_trnPAgWBECmYxKE;2>{Oa!EDEEy=!yfQ)gPY3y=n%Cu+@D8?;N5bS(A59~@ zNGHkSHNN1z+iA%d=XPq`)bR?%8|ASdb!%s-f83J8Lhza3+>1b+Jb4=tNhvdZ_I-Nm&IT2HZ%|ZOt~dnY#`z z{3ug9%7^fd^Bp3hT|aK3st!8I$ji@i&165}j|U)E79ZHpba+Z-_3qFu^{8|+kO-B5kiNQcALTvd#Y4xI9zl`sjd2c$%ne0m)31H@$+S(}9k zD$2--X%*+{vSTH@Qm-aTuY?yb%lH2KdA-)d+}h-tO6Aw^Kj&@C=DJm~{)Muw_;WzV zt0OMomNuG*4S78(u_XBsUxLbUlimD9ew<|E!!@)~`ErrFy=JkQ+V?QCHa9M=D}glj zcW6fBNbx=;nRap~z3pvd1$ziGwOx%!hHLm+UT|p0n|Li5t0RpASFNlPW5E8aBg)$M2WS{Z4BiYRNs{j zd_!yhbBfmyU{t16Aa3_3FiZkwT*WV^?#9tJRK49_2J9iNTKk@^BX3T*$PPMmGyLFsq4Ueds15BlLUZ(F%`!_o zd*`2L3)K7G^VU|?gM3L>=);oPR#u^-s(mLi@owP7$zG|-=5vFt648E2BkJ9OHYW!0 zKR{{TKA*aehNdY0j_gD#-{e?V-254b+=To%^=@G7uKyXYe;Swx{FcPB8fc znT~>2Dcf{zb)m4J! zA0#du4PAQaRUG-%>*x-H-a*oq%J(v}FG2TD)V=(TC;Oaeq^{a{J6C_iiJGO)&z*@* z!@9y8S4uTmrEH&g;HB48~)xQP^tUtqpS3n=k&I!ToqeHORBBf zdZPjmkNtAwFkJ-exej5N|pYfQxW)c`v|G&hJArmjg%kN8%O#_(E14Tf`;_2bedbJuU z`l+bPBKVF~g@qq~zt#D<)^?{aHDRWqpM=q%7jCqRI&!?fR=?fl|90<}U#hO(M*8opqjxnoc@wd<}QACX32iFY3CW(a=&u@X)$SytUHUgaOs7G3V8UF_Qb^ns>2ScOS{lFXdJ#X;UC1!Sc#J>4+r!|b*Bie zd};sm2VSD%t!Sv8DZ|8qX3z4(ft81O{r^G^gc1?;=bT?LR{4zwvcb^s?4Qv2l?!K_ z$C6B~&#tvnp!L!?K7s_nuulVYHqwB zMNh!3Le*|u7`(O`k=dUd-Nnlazl#V{ors7nVB1sNPu`JFbQ1k>gh}lxC(l3MakauZ zt!QI}27j0_IO(IVaS+ z=q>Cutc%QZuWHN`N&Y}1XcQs#Nf%7mSh~MIK6cyb6mWcWuZA9(5eBc?g19@Gx)8sr zmagcjFkwhn9T$OY(yP1g2U6P|@O0O~oq_VEFA5r%Vh*Gh9vMmr7T3`|TgI6M#2Dia zw)!OtBgIK)I%E`j9|}E^1-Ho6tQg6ix2#DVp#GUVxid^ps)PLKhjxHaBfTBC<6akT zSzAea+ZHijno!V%q|JpJe5u8{WJa*~3=mUpOLaVxr8`7pKpPH_fJ3IZY6vQh;v_yJc~-Bv^4#c{ou|@ z1=-dPdeH#;&XT?(e-NQFxA@RkPv06MGAy!B&c6%)NpNS0v^&hl+PfW)-l*&gdnSCV z^AUOBZ3GrNX5Fj#KfHM}O_BMeWy|45;t6;o4tdis5rb0wS{OCMC8Dq{af$9k{8l(9 z_MMuaSK{DmIPx}GEFoh1>YQEoW5^Mie>Bjsy-P)ZXP`ZwcxVG_5CqXH=68dd8XJzOxea(QjCUIqEiG@B_P(ZU zXu$(EqM(I z$3zTrA)zO3OJNti+7qZ1vOfl(ELyq>t!gdfn9<-a&~5e%^y8}MOFMPwhmL%LY&O7w zSQ0IS)?J2MwFVfy9BOwLP3i`MM%eH_dhu^_cU23^N%A|R19@+&B*sKhf#WolJxd_T=$XC@0U|qqoU&c8;Lcy(vDh-*F^0k zeJNMP%W8m0`CRnN;ICBwK;q3sPF8<)aNnnmvgtb2kAn-cfSVTZ^cxc-eHX;8tA{e6 zrD9kTkyKI$OUMT?m9eyzxR(_jJ{A(9z4IQvVHh^Uj*=N61K<3j^7dV#8Cnc5Zr*UG zNZb1&!rG}0&31yRJ?4Nhp z_~(#%h&WoNnV(mGQ<1-^WBD2nFiX#|<TUSRqJ4RTd z&C4q_QT_TLsqM(ao&J&&gW%GS zy5MQ!Vy6>0p9~gXsUK(>Q%l7^qh2RRtcF9fJZ1mqGzgMI*)t2?--qso%=TA~N>Uxn zB`QpupFFt<@!O+tuNu4(=2|1xVS_IIU{!U`eCMyQ~FuDkrCnPC|cBkgh ze-Gu9g{sWf-TuAq!;I-bn`Xc0)e^GtNhF;j)DwUSz*+p3I-(M7o=ts1@msDuhmz!c z>+g;5$sKEuUkS)|is+H({|@jPF!3y7l{3$q-w>K$xsrxyMC!>)NSWMsFsJyi?4KqP zAe6Fh@#SC${=|B@IHbai)%lyYZNWFTM%;pZ0&Fy@Ah}hR=sz$ULg6YG5!c<9F10lD zkg1aO2yWN_G7Cp{j%T7E!JNU0shcmoVA6pRyFWm?j)?DKwPu`>^LhY5DkU@xl$W{# zwUe=gJ?|HF{p6Orfggr|l*>c0(0Z%kYH|NU-&jaHn?Z{kUD@|fszG(O^-E1Q)mH?V zHJ4^K(<=m2Rw2}#I-4WS_+A&56%B&(?^|DBR^CqJQ`mB%z;#uGhIAfo?|;tq_G|xK zyGkT*ydVXeL3Et$#dVe{_*h*j{Jc;VrxQ%=@BQ39E27>013+~?YFxNM?^f~|d$wSN zn6O}5)z}PH8dZ_!R_m>GPcauK+bzhDk5mFPIU9l1ZMG~4HorKlZ3qgA$QSzp+QKzr z&<)=k_>wn3=8dHhO<-N;`9oIEjkZ;*RAyWqIKUginKz<`83}(<$H>8^QaLPfS;;4* z4lrdZx9QZN8qgcQz>Fjvv~CkjI-K+zj%#30r%2KysMvV0wZoxu-X z^mJ(ZECFCZKI)pr7L0&7 zEWf=G1#lMj?epbtP;D{sG!1*Xw)bkPW$21b&0qTS@zj|Ux4kk$=L;HidQvgzQS4P{ zQD6X5`SSB79gKNedV~y73v%YzWwlMd9#Q0oVwh7G^cVmeuFXePyf?c1^cg!n##?SK zKXk_WPi9a~um@jiwdCVMYppd}5=N5$Fn8=l8}=IHdOG;HB&-|3HVWml5P?IRS12U( zEMLVBR@?Xf+MyacEijQQM53x=bgxUx48UwtkSSJrj$Oj+X2Evz8gGneNqNR!_Po5Cb2qy1>!Uldfk$5U=z{-k|whol+ndoT;rBl53#abwnktdVI(hG zjV@I7gVkBhTmN$Ohv$=cSdcDd1*)HVhnYOF|5=%&bn6gJRmJ7p#&2Exl(PbuFlLxY zKQ<0klTN9f%qMV^-yo=KolqM^aAiXp(U-%naZTbmccVGTG}N~KNh{i^P|(7k0!Y^o z^Q_l^!DG{AIb&P4`-x}#V3x~eWA_bE(oGJj^$akRh``L(oxCXFQdaetCMLmmyH*E$h#JpWW0 zwUxrFP}p7E(Qd6o@C?xwb-%qr`t_A2U6+|=P5qh^POXSHTmYETl8v{$K6qY4dX0u` zLVivYWR&pjH##A6ku&@@3~>vwx9C#Cu*sYy_I~PWv^M#r-p)TXP|n)Wt~rJAW_BkG zhp~jLMGQ-{@L~ucAR-DTyVy~!Y9X6w>AU@ln>xr#K8Pn>4)|&F{HlWrArAqc){>_Y zEn*}Uc1sX+216HtXFG=@`8N!piTafLVk z?(|N{(C+>za-jl{L*ZvqA46(NFsJurd`ZCZ+<8ZohYYsmk*{W~Qe+Q~Q@&M{8K+zJ zzet8MjKk;@^TqG?G*b-8I1`bUL!DOiE7*w6{R< z1l+Z4g3e26|4kolJ{7brf06GlHeoc^5fS-Ny^+%CL)$spu)O~!qN4QKn})GkFa&5E zH&%{t5ec)XBh-Umgn}2k2Xs^igJHA&8cX|{ftq<$(O5FNw&|4k-Uh{$y%CEWI=;x8 z#)D~Sx};meW!T#ZGpc=W+*{{3Mooz--ZtIXbwh!4_7cM^t#-}LRFEy6n1rE>fh~tn zr3dYli*s(m(hmDJLIuaOYpupunKKt0y^~Lp4x2ltk%5-|!Fguuh~|)CSE6%a*8%<7Dzat=OxAm z?>Dg1k4LW9bJJ{w{&5Ah%~?RKh&J(Zc{#>M+@0!2f2LFR(v<0-R`AO{2AXkfKb0>; z({$5D^6Yvc~((oC$QYXRK`f3S_A)a8FP>TofLbGn=CJ|)gdf`qyZ#j z4Qs(Vf5S|exq9P^Oskcayc#RbD|=0i7-jB$|W9F{re(cIw4ixr-B$3flm%V(Z?^0+U2}c@4^5v*Nv*Tj99MmB zI~vwx7O)-A4FGQhEmV+aKH148Yu}Oq!xgY|9aZ3=XWkgjCDKTV8Y8cUg$ne6Z@lffg-yeMA|wjX6bQl4 zf*U$HL!J@qBUuPAW!%adiOh#h5OoZaj)koM=CD}edQ`CdbeZesU|smve=~J?H^FlvMp#E@St>M(ac?Hw}a%4lpQLa(fBnj!1%JoX2kzdbT0l(?|&TsZo^m_ zYHBi_ zoT2cm)887}S1>RIg-~Yn2Fe{kM>hR`t%?+?^@~fIZ-7_}6mijNhKu=noZyGtesZIx zLDmVseiyo>C81!GwgbA4&hc+0u#aXOG! zXyN@fOY*q@6W1s{Wh=J)spe^W1v5@N1SnB(*X+x7jpKhjF^Pf4^?yz8&)T{AJjz?4 zKMC7HquU`A{*Vw?4A2G+G(cQaM#w$0)mN6_5y1_m*s>r32|$LKq1ApGZ@5r8;~?#P z;oaM((=*-sWrNx*^f&RH;n14}Kn+?;n@sFg$kr_PfcA+5`@BsURDA*(4bp|%mzk9H z6zC)_BLbXWTAExad+n`MO#uC1EB4#vaTyC|cdiIkJdj=!Gp~T3YgG>zY6R-9bJ&Bg zW1VPpaP`lm+638k(Z!?e5QNWEqYy4~q4a=y<%doDqxYM9?@-Tq0QmR(G?a6-<<6yC zhypm?=tDJ>Z_rjvQCU0W=H#7B>{VV1EgPSosFGDkg2?t$o8M9wHk+HGJO>@{#Xsm2 zFz8-*CrX@ifRqi72CP%;sQNt-*zz~Rgw6Y$t(|RGVUh`9D+hYwdoc+o8&I&h#6G8o zYR4~UF})+jQtJ`>QP59+ohxF>K{;aq z(w&{4x&0LNABnas&F}Hz4sn?wFrYv=S<^1Eeoj6q)G3l~Unb=Yz|Zv7V`BB;?5`be0=V?}@@~jmTzx z)CP~l;gY~WKv1&#v8cioxdw$d<`2C~;h9&JeQZCCtg1nI5(J zd~i3_U<*!#kcTq1BXHu&3`2)98UOF*0>us9(LiN{JSbM|vlC2VM>kDs=H6kSG4J%m z?{RCx2)QqiSdC#B0CWu2&?d3S%$Prr2&M>p_OXle2y z6voINKqK$psG^H|D$`Cm54RbFmEV->mHBcHJJQQS2OSuI^-lS#k8Ch%kyz|T?fq*i z7lR{x8W=Lky6dsT3MA!V5iF4dG7{t^HE3*6(i7)dj9(f@@Agr6@>0>2Whl|fN^fd# zmQ6MQi&mSoWT{8@Z9f`XfUz>Y@Nie+it%yd2v>zpnvP1ZjMo{inrPrRlLv(z_SI2R zydi4Yl`~oCFMb73c@O>qih%~X6Wq_jN>>Z7=7dH5NVSQoTe2W3l$Cj#Q$4u{0^VJe3PEFJ`lWJ!VXUObT~{fln>{mDSi~dHRR9#VM7iTS79!D3j4MO$T*Q`c z5A50QjQz}Gz4~Ct!6ZChn#K*_@2q`Fd7A5)CpIJko?$mvwzEDQG;-T-`+n>JvS9DsMnc%qbW}Y6; zbXn<&`43VYQ0%EC@; znn87n1d8KK`j*Zgcda|eCaV8b!D9aCb z&dj8EZ+OL;?tyMQ|LcWwY|t?O{i{@o>E>wSW?2jAe{%cLZMkRX-rzU@1ui9ww7#~v zGislAov9{!Yo_Hl*mE=bBENy$x2#zRXaSkO+GlE~7S?t6iK`vr%rm*hAw#EXNNHMB zLL=7LXUZa6FvUIhZ>Yn4vkoB&Y5UEe<|D!wt-5i|a6>@aZPI0F5?fJon`gN0q#cGk z?j3a#ELDIk4s1G|Z1Pef%H74o(>}8;whaFEQN`IR+vpDt;X(Pa!WYsmhXumUmzPO& z?WJo-N2frMOp#QnJ7TL@6g$mGFP|Vxb&tBmM76c^JE0R&V`k0jjq-_`DQPAjh9V}n zYE{TnntW-bis!KOPMuyu=~LwenM8%d6AnWCdr<}=NAi?1_m6FGjzrSD$3~;0DCRde zd-Yw2?svoCMm0`yQ)S@O9f)x$1U(IV}TEWo)U*^sriBRw%dF z!OhsyEx`x~rP#m6wF?7rp2n!o8M)R-YOdT6Oax~T2fT*;ffk`d4H3gBCr9;>|h zdi_hnBP~&coF?#^uaO?5jMaXPJCwuSeNnOQy^h$q{tszu&%~3U#F<{Dmu9|`S{`<@ zi5s;$TuvjJV=nVA*qk`?Xhlu6;icLuukPBIH;l8nUQ5woPcq~1XCr>TIsEtDW1BB+ zi^y!$$!>XzaD~H$W^&qdmrCn*U-GzJY1>z!)y?!@-+&HG#^3(EXE$B>)cFnbBd>U) z8CFMc&p+X%dd|3F@A^tTHw?-?bl^<+g2p!Tu881mI}hJEWHEzT8eYBD8Y@>E;jR;V zto_*$o>c`>4$gp{P`7scv-pigYg_kToNRV! zZyu`o50c;?5ZB!s`=AN z_q;D-DSrgR#ZgsRw(y&F?<%9zCZg^B9B%$*svfdQPu!TE@7pcY{5|q9)%#$R%ha&F zMboWq&EK^9KClP*ZcmDjYJ9v#NCoJ;5}}(iyEAL4Gj_zz&BAQpbBX%ZJ8hxO8l_^O z*3OQ$NW=`Sp!3lVGNSlsi@?ZASE{7#r1D>fLGVqoO=@U{-X~bp3-qq|R-izNDOznvYQ%lH6epT8u`~ z0`^am^q@W#yN$cQs69tiaQ{ai#U8I^73O9kA+3S7;8VUu%#gNc{+zR?3Loz*Fsmz| zv91Fzv2Mb|up)^6LHo6cGe<2NWIEtXs8>ZYR^5{$0NVDBL$y%?lNQF#Y10Tw9ZNH4 z_sq%AWf#QM@c2h6b}5n;F$BKhhYUbA@bZvjpphpK6_8VrjKa-Dk_0YvZpPk!q+5B1 z83d!zQf;yX^DD^5$1}w}(}GB#SC86kZdQ4+TCUwR@X~{f(fCN#ua0=pt9CAy-Fomq=^OaU=0k&uBn4D>O4%_-E_s`PEs$%b|Mi+v(D`O;~1$bvt~)ci$C-G`_WW>1sadb()eQ0M@S2f;72*-NA>%; zsEcAFV>~o#*6RzIeqP=Du8+DUYMYq)*0IOZufImL>flt{RWl*&J)KPkpY_3;^8vK?1hzQ=Bq-PZDJ3vRb&fg1Mh;a+JGLVujGv^F&}vjc%rp*>cZ4sPea#C*3N?Mm!R+uuH-G zU-m-Gr=-r2Je9WeY{7?8gRC`iqr)hJW-<+Z)_Re(DD_?D~rkxWSJHV4N(k1m{f; zi1S+XEtIG9IlU+2Sy{!>`!(x-YBv60SaIeU5`n(ZzaipM9Uw1|s($~>o%R19)+n;p z$U;n}SAMW!V{umd|E&?Rtt%b!H6L6No36oROk(ot@6sSNnha`~j~=gT#^sk+R(F0& z?c4}0$NUl!wli=#ScV<|Zw#zjY*WNhT3sP3jE~@a$slcN8XNRiWQ<)AtgwZ}^$sAG zDlKAt!eczID%(YGC6ODTk zG3R(EoWS%vNd5@77-hHEnPaN>@GCu%fIoaSSF;EDl&K7aSLl*WP?meXqkCCOC{ z^OSL6(nw~*Mm}0t{at^h#KMaFfFSLD6J1vrvR*Djy9l9fbc!Q;Yl0(YPKPw+gzL{5 ztIJ>iji_eBbvoK0?o#oNT_aB74<$`GZ9^jKlD8%ODZ&J*!_AQyS>b>1pDAS-t* z^$B*R^+Zj*Es4($EgN;ksoH}SJ3?PJa)KV35t1Bd&3YJRZ*df4k8;3biDF8 zYGuy%UyD_P2}NJH6lPgpEPk(D6+5#ct-MA7mQS|GU7Pfmj?nK_Hl!)8tERF*EHMz@ z-R#H2g<=-|bT}pt+tqo9C9Wo0&5?F;Rp&obM+>s#TOMrfKlORYU_BN;=8@D=ITD81 z{z%iTW6n(cI*!f?ijWS?i%Gc0?fzitdjo~Q^I0oT8;@B!4H3t&Ap@#FerIgE{aP1%R!-P~q>`lA>RGS*b9{iF6i*7enUzu-ogge3U`Vs4>?!xU6FbP9k9CH~jeDaoMOVRGEhQ zt`{rQ0JrUxd@4nW^ftX<)z<@glnz8k72oIf$d?)$dQg>4JI>iu$GkH>4iGBH=Pdk2 zp@v0pM>C>Yt_*g2sgg7^=pe4y`3rPOiO<3||Kb}!bvK+XWXzc{Q}&rlv=R4)77Qr% z)=O%rrbZ51SOA3ZyyWQtRQ%}13#WbAu#wT@&>8p1iLBiST=bqO;k=YN;;clmg-RN? zI{BkftgvXtS~~DVV^sk3^303E+UMx;3Hw(IqY-k1)94Q|%7MMO6>Q1c$m(KbzzSLFQSv?&BbDY7o|d!@ z?Oy(x9l)^(5b-g$?H?QYH&>Fb|WEa%7#iL1z$e|%->pPf_cLOOj)x^U2YO3OZwiWc!?5te zFp7;t%!cD&%NJbGA@VPz_rt? zI(qRf^*FJuDSvTb^FiJQM}(IM?kJxgCtXJ)z~RGqN4Skgx+Wk41YqA59+(pli&oc3 zcQ(tmGNPPlQZ*KaAUg{rri|^ThREca^_&tmTXR|_?NA(H{LRSA|6ZBjYMq+x`OP$? zkZ9->ghZ*qXpAW{EO^$|9zOaEi+Cv%<#}MH|L$X|qyW)R6~ESjTP?P)HD6gRlHa5+ zfM5!aN{$0>JARtj50-JO4qpI>5E81YAkB<7!!5SO8$jo7XXhmX&>-f~liu8U$_7;F7U#FI9-Db!3;~%~H3x=K*G;5WCM}sF} zv!_5rkXfhSeOSLMgpmm1!8&fjfjN7l`ViT-ggi@+TB@Uau6yc~KMNY2>1X~(tbbw* zp5kTqcLw5qmGXDitQeOa=Nx#3{b}1g%Anc_scSVlIBO@_bINrS5|qyW^pd2^Y+(XZ zBmNEVi8@>+2h^)A-2p18^6uXxY>8~qXFb|IQD6}{4Y`GvCwq>n40avnt3OAs{Tr&P zJVaH^&WHuUQqYTZ)190M8FZ+$KZE%BtL&4Z#U&N= zagC9QRM{xcmyq$99rtgci0h7|EzHHz`eHp9P&n#O@7&+lT>~g(IOxjf48oeY!yL9t zZnO>mOsi7anA>MZ!lE<@pb_R7H2Ueu)Jd1j(5^iTB%#0f@68@=yAO^^R28Gz%@af{ ztS~T1*=m+1eo+5A%otfLu4(4yi5Y!V*aLo6g~qXwW8KS)ZNglmIA#!D(}{XsrleqW z$5VOcR$gf(R{8MW=U1qbZt09LmbL>k(w76bCCOEvN)KxbdqTFsCR9&QXq!3^bvs9g zPD>RE#r&3PdpsrAc_SlwK>5xL_0b#QTLwtCH=Eg z=w`X+-YmZ#tW!cq+;OC1l!`Qd2A5qDm|{&?x--Md`a2s;xqIU)*2(#EA~#BiT$6bn zw-N1hQqK8=XC-0A;Xwyh+=4S|HLFIE(LY(bVfjk!K=7e%D$VG%4#zdse_nT=QZ=>lVO$N8%}xhgYE zu$?eD!q`nMvO|1+&I~R74pZcTfgYo66`T68AO>b0pda3{dciTqFur&!k%c?g*E;+$ui82H4X z7|*ZvJqC6{ufxSl@3*N%;;P3#$vsE;&i`1oh`RgFntND<|F`AYov4H-A!xtuqcSs0=FQ|E(B5ZTU?h6V zM3#c87r68So9u!87~RclM^K3wVsq&Zm!GA9XRa!u-p{-L9t&m~K9n_oAa!D;==Rr} zX}21|4kL#yPwB;s4*%iS;%{g1Sz^5tj+UY-Ny@A&m;#K#+;C8rwy$TdU>X!c7i;+a zb+%#5kdIW^)zp#U??}oCDg|`v`4T1gVXHS%ticsF>btF=7Xsvl&yF2j6IRXNhdF-N zwzB$PRwwrg*}>=O%Dd>*0y(12h{Nml#_z__4&HLs>eDEvP{AvM(5)<(QWXMOY}J#b zwR_Onb&=*+Dx*68g{s`9Z^Wx(G7KrRYO08-=H7333qm`9+rkEax5Mvhy+z+(X7;De z4v`l^x|QKBfr|3EY~(KW8*XdK_-WsE^W_FOWscN8d_l)q{Qg`_}cOmFO^A7(?k ziOgyar-ul(bci)4|ISB#5xq8-a$|XnH%E*(MmvaY!bd(=C&bxvO1w?pNGtLAo<`14 zd)o(ue(R0|E1+CVzM>DNIK4EHP46l;sx=zVjTxXOOg&FMCxU=A2ihF(+@2C))Q1>+ z_0Ga7fKdO~a=BhySK+8bK$~c3#eBQ{r%aN#EK+}Z-GQHWUJ*8yHP;g%;0@)`sYL-D z-~#^a0O4pOyaYZ=P={x`$-Q__mvl_Vz_2P{Li&4-Y+rB0&$QYdc0$wcMfHrW{jRxp zpXE}PNhs0j$`IaAW|zv2#_@uF7FEpXX_WX^dV(dyMKpexWKX3B*OT3;cMLjW$)I6|Rj4Wf*)97ft+3~+2Fa@tpa zS4_B2L`Wy#=D2tX*YK^-1{0fWD)PjYFImt#EOgdPW*+uq4cLYL^(c2M(2jYTbV8{@ z?%q?PLN=BsoeO^!Zkhm0+Jk+1w~*+80;lOry6)- zK>)?3Ksos|A77GSDbwaN5iVJVv<-1U1Y1ucW(^#)o_;lgzoq;CAakaP?Sch1|4H|z z(WD*1nxWg0KUXEiJ!&&o8_^|i7+#2zo@rHQ73YR_Oh1NHN4+wR_aOU1*2DgTemUmd zib;b^dkR0}61O)C0?>esoz2BSeGI`*_?uLlbPIze3d0a}wP#@zv_Ph%=7fIrcFmE5 z=wJ4$e&ukaQ38bT?@8XfN{@X5h)qRGw`Io~C9(PcFA2nVBO3K36=AeeTG{=XIB2ku zK9qdfM<$(g+Ev1nB*q$v#i!O##kf^JxNGYUfBTH_Jm6%5Y|WT4-ubGvTr2g@y(H@iscIa+J%D_6=w$ z5^bBFJJR;uQd#bhdyR6;p8$8S%o972!=0KI!X_#^+Kn-ecG`&c=JrXrzM!;HLO%P7 zrn|X70l!9mvId^sY4zw!2_Nv;AE>EQy%sAv3C91{8&(`-a5qyRqp!!*BTdKVeL8LX z&J|3)?K~f-s-Wjiwi>nm+zXU6(2;CA@ul;{W*J(Xxnak=%|hy}z4Mh?uXCi4cjD|- zow;k^c|EntY@GW8Py@dn?syb;#m+rC%E1q&6}6QGwSSTcVMvUY)P=jDOG|yV>6xHj z-C|%dlKhp5bwx|KqSCB$Pn(|Za=c4~o%WmiMzNnr)M{_S;-u#ZZKf#5dY{pQki>!C zrIC5my=~U5n$);&n@N^c@!@h$k3%PAoc!d-QJ!;GdW-S)*$x!Obw^o6$(JG2t8izJ zM~_}e^{v|-o&PK;G)Ei>(*6a3S8m9x^QCiF$E)*^wt4fG7s1~X{*w{R@v<+T|YVBCeapk_RNXb z+m>0HA&iHDmEX+K43hI3@SraQ{Vg|*^$%?As z#!v9SY|WlpbxS)x;drS*Itn*LrmIvpR@@=QgKq}0r3Uf;8@`+aQvk&#nwjyMhKu5 zD_?WZx@^#oNSy9Vh?fFVv4U>rkp=)S85BpK7mxDnXFW#u6=p=G+PIiK!!wXwKS`2L zA4Q0oL5>NunkN@a7`g4!<)z}k1g8BJig<3I&DDLP+ZkD#31R`cK-PC4!O$5Rd0wBJ z0?h#rqvh9vEN^-hF0^dQa<48^9e(PV%H{gZiX6qmmBLpL%zvp(HxTTV;#=@t9UK2a z#ix@mJMaB7lj!m;+Sb^2jhchnz3mV90`97($jETy@c!+h@4yN_sBpl^#f9MWTl>QE zDW_d1lSOrHK#qdL+fIxhv`NZIb{4Qs`JSjbHECcJER`k~HcgFKkCQvVmyn6^|MWt3 zai`<1?@AleEmbL3_JvEDTr@U_cIw#pXY}I8+l8wX!uE}}3`gof=``gL&zh@7DC%Qo@f}bCnNqc`3g-?w=m( z7fhM9Ua-4+x39aE8{Cw<#A<{_Uot7Q3qSMl?+zqRXS545V&Ea*6 z7rP=%{z-Tja~qgB?^v$Jr@VOgM#|cv|J$_*p8<#ITa%|h;R}aM%9S34+xtU1KN&5a zC2U^$xYB)Y*q(PUB5`kF`miVKMG{xK{K@xS5)V=j#eBSTs=Wax&y+f2B1A@O)M@-0 zb~i$*y_e533V*_iD2UEbtu3lIc6kF5wAU`sbAF~9MluHV^^LVz&+tBFI=cCg;oHWJ*Mi%g#R*Fodg#QiAT<4#MWCPbuq%`Qr%( zH+P3f4ls{LitZf;mp`nJk~CY0_=Gs}&CR#_lwS4MFP_Jbj+)eD>%RIh89FocVCnPL zL^G)L?;IZSdtPVwMKy8GAN=a^n5jIPZ41?E^B*&7`}Vcy zRNvm8Eue9Er4Cl1H;Z7z+c;=)jbY`I_!z4&I^~BQwe^)_(hPw6iRga4Ye6=l9>PO0 zgWn_s<_Rv5*xrRcc-2(MCn9t=1lge&)5Y{ifAR8m)38XUYVh-F$Wze{dPqkUT=Y4o zC-zl)%PEPVI;P_J7)v||8#HkR1$1x+BaF*sKP|M{V6?QBfr{~=&LtgJErvD;gbUTR z-roQM#fIW#*TgjK0Tg{cYzMKqO;Zi#3R(%c@Ym#s1?B9Q9?bS~(2Nq)lTOo{_P}!xz_Nsmux!4e} zX(|K0p98!VwovRN{$csQuhr?|5B2P*shvebV1U4n-f~K@DQpuF(}C?t#M(Fan%V?; z)-bjoeE(b`OM}vP_m0dY7Eimkluc!J;@Q*uMBxB(%@U z*oo;W_pRqm`U>}4%uT&Q9q+2%veNd&XS27DxkZJSH%M1!7JwzM5Q1v*V&E|kMVw3V z6gDN8hB}atSM5T&H8XD))|yf^O=0A-MlUwmfE)h~#vnVU{QFP&vIowgoMRHC9DdTN zOQZi`{bZXO9NJbTD4XPAnRR19phj_gEm7z~q3V-b^@@NC0=gYE?4@+Z!o*b~>UPtl z+hJd8-HNC%Y$;}2Qa}ipQMA7{4QiP1Q95>saAqmUva0xsVVy{uAxPpMt9%p`_nYts z1zB2XJ=?Vg7$sXyuS1jMY(?6p6V#Y=2yiplW#)^lP)^P)( z0O*lQNrcnuyUEy zPgn?*dVQD+FB-zRNAvl8LWisKT@UH3v>MXA*{;)7UvjSE>L=CULOxHORVG=+73L+z zWp4wG+(KJTiAoLzVVI}nZIH5SW>5U{SoJKbySL?MUP=O>{TZtB6UozZJ`&w&A*nWQ z#V`!Lhg)XQL9-aDC z4wDV%yHS8%O#d_ybS*rl1_Jf%9p>dEj-I+$zK8WUwhY!Fp!MhMwL$&jTLsW%y6txy|eox^`OerxP|;e?``&n z3AYDj=2nWFhzO8sZOg*GyRvtc)~-Yq2{z-jMgJ~UkiCz80?Xu(rrjH&3P~I8^#!&pb;U%6*&QWDzkp*nh*R>)HyY zszcF2d^kMxHwNmE@f>d0nYcE+iC5jGUS{?-#wiu+-xPra*sk-^&WV}N^g-2L^q#cH z`%ggI8u1S4qiWQQ+^wYzDE}T?6K;Q_D z?3!p$uQR?1+lXf5FP;n+u|q-&h91Q}lE=pEn!l569!*mw;(kHs;3tD&aHd|7hxYKt zq>FKviuGc~d`4isW&j80iuhD(tisTDPMJT@qkia}Eb6shRD4ee?Jkr|sx*K74ta8& z*U|pF4FtgzWq|n1)v(H*x*a-|J|MYGPiCcQD1<;tjlm6Gq;@8p6T?pK zpY?u83ZD*K_`-_wFIuqlbrVjWFXas-JUZxB2Ie`SN2`9;`XGgiWI81E#-O&ryHUSR zdh^onicP63F%6RPf{_P(k4WsO;^y^YzohN8Hbo!T&#T&vylPygMswX+AApW_8dr1m zG`dz6;bBFbF1AWkWdY7cgDVTza+9ii#Pt8FTSD>#W}JC$sUJ0yX0}U`$xK{g4SaGV zd?o{kPTVX3Mw=`smNA6UcQ#Sgwry9Z)_p`mL8dLa){5}ROE!_)uvD_;Y@ zdCxASX{GFZnB6rSS8q^_g(3pSZa}d}8;9X>2$qCtesh3o;@F@6W(AAe1O0oI+iAMq z#u~n>iHQ09V=P&1Do+Gvgz_zTgMkr)DF8|&^5uMLuENEE8|k%{`?CUMh(ky~QPf?T zlqdsSv|RkMt|#bz-P#S;of?UG)s|tHA-bkrv&c%Os%UcS-FjU9-0;;q=%?L08(V%W zeE+J5CPFXJ=DMQnO?@S}#d8gs@<<2Q+aL z0P+-f_J%!xW-;zNNfpHVdR}qBRZ5fPfs97Gr&AGz*53REKd52WMrl8?cWr={M%?=< zOUMo_Xg88@CvUuE+>n#-MS7ezMlGjaRBx2EycA^zaa6;f)GCIl(E2=C1H!i;4=opD zKdtExS)YT+lXV`ZhqP*DOGvplnss1Aqo1X>Ohe*_iPsCY`Z z)~fJES?uA4A9F(`S9VyvDrhx}s9!rFA6^bEFQqdqUlG?G{4G%J!nmPD#fDcE>$ zFM z>p--KvWwMjJ@$F%k%9NG()is0U@CvlD9S+%{QhUG#2~5}oIYnvA?<+lg_yrr?w`F> zt}J&t7mJoKBl(X5Fg5Z58$CTn<5AYH#oxmBZ7bhR_MX!%c{5PiB^4dZ{gSFYm7JIdPWnU}QhvER?ayA`q-Z_=B;JfKIC zzwQ-a50G|Yr0sC?fQ5T&w7Op5udkP%g;}wRXF3VKxU42eup#o9>FbVG?@l#AtX=6= zhpPTgUAzjLs3Ht83gz%cG3;w|WCRxE8Kj--DQ)io_Q_y5klcQYpgDoLSO3ZD^nj2l0#u7SbEyvn9+`vn=1AWY2Y-qwIB!-P9+f=lWmqwfi4tpO!r%B7fb>u_!BG7&Yho&A1GJ;C-237grlUE1eI4|_wq>B1cT^o zi5%`SH!3>Kf_LhK3}W%Y zOLtc0I2af%;Ou|UONVLVEYcJrn|%vTS&Y#lZlE{zcjV=^ODV#He@~{TVO;jpH#aVNpo$@~UB`ZHTJ2pxYbWPG^T#uVLHB!g5IwhW9qzP$LG8y$!rT-YV==ERBWoMU)%iVSCg&6fDzIjgjvS64#iM-93Wo;9DUmN6P~)@_ z6&yS$x9<2U zU;#&E1K}e~_Mn8Sd}1-;AZ46Yd(d~6;w%T>D{?Q*U_|+Zk<<>lNbWDU{Q@a?3Yd(;%Xo$#_e++$=E@u z@$y`AvcJuVEEI~Otdv_KzFx)_wbXAfc#{J8#4HeD)#+B`DIT~lbti%h?K93Z(Bm(` zXZRzI^Zxy2^$Ee&Gby>ZKg;IAqeD4m=d7_BOS;@N;_ zxrV|ix!hohy|@w4jUT*E;(OdBsg}3-+z6xC&SLCZiS`{8Fe-S~4=iwvZogvj9WiYx zV*5c>lZza5x`Ci|L+9v$wuQzoD@6P|l~XIDewX|mBMc>2z}*rebzuL<#;vLrpElP{ zH4m{p#a+E>vc}&)xs5<>B0MIL(b<51cfL{uBT>QTANM}I474HySRZE&j|q67P${Bv zG0CibEm=Z-e5)c$NwiBa7^|)o?SutOH*@HmeXl- zJWvcsHWqE4vk&ROrT5?`lAV2C1h_rI-fwP&)D$$=e2)!^@VGdqOKQzOnR7o=f)uGE z!BHs4Zd;+wiQ1jG{y5eb`Y+*|0@_e+2o*AXZ39(X75R^9^u2kyWQxWw-pIUt?_O$C zpXU(!WX{mEa0rXQ^#gxiA7-(;>Ua6$2lhIFn?@6-j`Grf3>Dw{-N7hC{@*onXu#u$ z%ZTlnWI*5M$=9BxDQH9q6t8VL{rUX3&1qu^wiWteT7_lRLym$@`t#Ahh=FMunxN>y z5-U#Iq$Z{Vb9;iO;k2pE@lZeMZ-$PTx%R+ZNz?TeY8loxkqy2<<_dq}P!49e3`5E{ zHH{Q%dNbbxph%hMAY?71Qvqm9%cYfsl#@%=0G-H3+s?)whmIT@?h!q}!1rq3XjNK3LP# zpm0dy+@q(=WLx}MxzBej)-sQVIQqJ)`V!(|o+X8z#-PpcXRlJ|B^JyR`tg z3I1$q~EP_@9GzdedL^vCXS&B@Ju%s$M%B; zxIJMU3t3g9j@n+!KwlCef9)5xNN5t@QZE07CyiQM)e0GZtbFTax{(cLHK3vNk#FK^ zjD#%!F?-=cOB!&AEF^GUKgbAKcf5rF$nWl}!d}jfOUrHAGqy6u&qI$WIybNUzQ5~a z%mxKq-54m*hy@a!o=X*shK|N%@$G(>=}Et@*)Uay_sYA)t($PYV>b5+)`!p zg@jFzzBKlB6`T>$%M;148V)A-SF_vRw?Z1kmF8kQLT74QK^tjWD7+-Y89Ubtb~#BM zDu>}z2LBM*ix4D*PSc zS)Dd3QF`~gXx?82@{hxg2$0UAf-!B0UX&xCPDJ|se@0t`X!Nkza#ph=B2sPtgKk5L ze#A8Zw&fCy%{=t(44N zeV-3gWd?wuGD&K&>Ohz@;aj2*;X6P-hBd|!X!NK8-yE%keYfk{i=>S;Edk)5HTdDD zI$_y_{r%U|Iju*+E%sPW-AhcNTns}LkbR-RcNUbCpq|mrrdxc}sloWeSOmlJQfaL< zBR>2S1_l#%3T$EhnRMU_bEZdlzp2pe`sL<1GItW$Pd#vRux=+4ZVU7~r+=vP}l~& z@bnQV-5c?)w;geO(4~3@yZW0`LXEr_t9_O_3t7vp_mL)27ZUqfBDMw;M$J2aRh2p- zxS$s{{W)#%>VZPu!zq~oOVFgCv;=<-Am`(ppg&(MP$M}PUnP_b*H6j$N-v9i7$Y!9 zB^?J&)a_lWj0VBWW_@lw=B2G=;5!r@qc4_TB`EN{l$U%J#_>$=HoQ7-wf`>K&gZ@(3g)7HVQsN?~A)Lfppb^TNv9iR<;b*rifqt)=ws?iV3lzmXMr&CZpKWw@>uTXsyS8(49o1f#I+W?M%kiOBts)LB!&r z3pX0te8e_N{~OqNk-<%`S1#70xHDSrxOOOpe;2k){9qgVZ~)%oKTpQ_&)IkE4TkGF zQBp1xY0P@d`PgZogS5M$Bmbl5%mbPJ|2Y1cVG@&?Z-l^j5EaWl1xM!2Cw6H6JoF1adIN><1ny4=%B+239^unKVOQ+p5V&$-=b2!sPKx{-v>> z+%HKGMPZZlZXz^qBEd%aUR`W}v8YF>GIndaMC}Qa!3N|F^_ZU#2XM&mtZ82yVnx0) zt{{G4=VbHPHoolkszyPcBmXk?xA=TRJ%x{yrH`l!AC!-o!z_oYu z#lD`8+aJ&1;U|x`alHi{eMxbaOhkCl9*p8{T0C8~v9ly;2|c8~vAn`^C=Sa@8K9~Ub~&Sx9g5)@_wgL*h$HQ}YU0F2Nu)grx)`elbIi#Hne^-)9x;X?137X-Ow5 zh`n0y;z}LKgfxD^6J*5|qQ43l2!Tuh-ONMM7NcXYZ!4JgqS9~33TZe;qiCF-_J%WA zT2}i-5iG-U%@x^fS$$i0%7>s0d+I$=_U;kX?OnQXOepIJU9=A_IVK;G8$UFV$L_TC z%&lpZ#q&(go>OBP{Q4PhvvE}bzZCmfOuob8p7Xk(+Q#G-BcA464Qa|D1hT(6H5mX5 z31K9FS@r3+ozFb`Peq$5+B0rR9-7NXH zy+w&(t#6q@z6n93&W>m0-h1TB8x=L@U&Dn1DZUO(N|Lhxb}Go*IGZi^)wwNbu35HR z&{%s?y6C}Da|q_w9Js=dn*@FadB>=7{znuoG`f$qT59QRP?H5$HN>4mr5$%(LJ(9S z+sRaj-@H~VCVJ1xb7C;0?10&ji$HBD?0x4lo%|29`1X^-q1)aVcwXL{^3Q>=Ej=lk!0^qHhFyXIT3f8Xa9yJt=5!;BUUOpz&*E7uDTa?@vDiF$Y_b4!xGIq z%D>Ns3m#9uT5zE>f{OL{u` z`J?$htk~U&lN=`_%@+d&$4Z;tMppI=%zcqh2xPY%jQkJc?drWRFFHG_2^%m@@cjMk zi2laGK^}SSvNU{9hqRIFuRPqF&7UwW1Ru4%LRix}}I>$!lcrI$xt3$&QM#uc*97*_mLtdof);n!d<+y3sZMqi%du{v3*FT-4IYwyZ=YC>Ml<4p7 zpwQh{|IAC%-0GBNZu4sJ|3L@ert}+F9{W|>koIciW!}w{20#{XJj5UKwtxOv@bjsT zLn#IkGyIA-F?)Z<@9cegV5Id=Ze8|bmMvXd^}V5u&o7P9-W=EN+~2t;j)tf4`x=sN zXqd*>aEk4%7UrPuq=C##K%!cHX0HX+`eQ9-xns^S%Nv;l=#URP2IGz*hsW zK0zzXL)sWf0`(s>_s6j{Dtx31MiQR7CL=u;-^>)br7Wc#24|LU?n14qOqtHOOa*kjGOV{thqN_;P5Ci?@n! zydAg@wi~RCjlS7jnzFckNm<{NG4>-Is}@SPT~3>~!u}he9{@%x(;7GTh8g1QwC#fO z?^laXpPELs>(k>H*6JdhbsjeX&Znc^G+~KOE{#Zoe?ivSjwFPbAu_D8B}|+)Ubx>0<2M<yB68oyh!k@*;ZZochs(_^e| z3-}0_p;bJ`V35Y5FI=7ra&%b5CoeXkAy^!4&dyu^l%n7-rqB(sjtI_VKS!>?t^+?u zSDCVa=Pv!L4(X+;Un?IvbSaf6TWRlm|F;vKB_-N)gT2ZWEqFc@YKUJ{gh);JP0H#dtqf#E44>xp(O&Z)$MBJazmJY z9C_=jmz6W+*Sj@89HGNT$w@^`x?=;_4g1vMupi|9Tv9mARD>;m#L;c5JLR>W$6bo? z-&|}C)ET`{Imc+BarO!a1VVh)URqQeLJ;hjC3VFfudKY;^vIVKugzF_rhctR#qGh^ zJU}3rIJ0eH;v~nj0Skz_Z2UqRXzrVWQ>{5~PbC zo;GkpmrfKDcRGNvGv{u4e`OZ~oB=5j$?yDsuz-h_H*GMRD&u5rPRvsr{$zYdxNshiVaD?>Q_rjLvL5dsX_fH|Eu{cmHxdD@Iv*rdzIwWyyC^Am^8j(wIF2O|8teT~8Unxu(Z}cg9_eyFlRzLQjs`K8UcKr838YF|AHgJgdlzE-fC1pto zZTe#?Q7Qx^kR8p!gQYt7bGDydr*#0{E44-7XH~hlXj%h>@S{0 z?(^m*1G|7jx?^BK7n(9dSw9iOzg~^>brUKVLXqc6@ThWAFZIYV{zzGscmY^QD-^wX{z+(B%o1zRoac5ZuRHNWlC!lfYzmG^`z3|-vJkXs{BlP zJUF?wa{zLi$XEpk@{+UqVa8cHnExZJ%tQSzHb8)tH03-M5&7xLL$SwIvMgyZ^vyB- zU=0D)o0T({Ca{$OTnh-^grcD^Lb}vNqyEI%4mN;L{0F(>+5HdJquGF6@|g)ARF(b# zE9}158tO1N4A#n{Y>1p@fopcn@1dX$cf3;6CqhWPp|FpWZi=@HHG|LO&0F;#3`C)X ztOs3_@!N)K79L&hbxP?r-z;rxKUfb?M}{e~dF5vzGrJMiH!Be$w3^a1kR(2#qHO3? zS&*t|#C-Qrm-5o>f zJor{i)GBMGbqPT!Qx2V%ZKE>n4L3pPUb5lXOApzi&~_m+QD3*Qs7mUb!~UZJ89Thc z`)?>AYeCr`VmVy_Zrh^e^+vtZam6NPJ+UOL^7VUT;PijL3<0Obsp)8l7h4NQ$nk&P z7uH}+Nq3aq@Aic>n9B^Ntzc25?=x6&pvBZ}x%LN?TP$miL;R8ajAuZrqMxpAfKx`~3V`Bg$dD>5U^aZIk;Bbj%LGDgSc zcWFUwM^T82wevPvAVqxkZ7U$L|!XmKzWJBvk`t|l_)(U z-K{gN9JnN53znx>ysXMO-2O-QfieZ)FT;MAqeKh!O9+4)?_QN11wFlZc-ha9Y9xDc zhF)7Fioli`^uanS4fe)nA*ZlM_mhDl;CmWX$YMHsw6Yft#?Zs_lPlb_iisMkc^13* zO*}i`VNH=CF40w+yfEAfe*g`HGc;*-&C>Xy;Yg4BVxcb~s9gmT`(fUvoz|a?uI$1< zVQf;wYp$ULLBc25;~ni()Z4gt+~lHf0vG_>HN%p!3~|=8>MSKP+ebTh!z~V%L9c>( zEcC;Q6+Hj_WjtCY4MKXsC zRFKHFxKYQulmakY+aTvV09N;Tydr*NtE?+sc%nX6tRE6Sh4C)7h!pb%^Lz6PLgeOS z2~7ogc@MIq%GIG?Wty8W1S&@|nr6iv?Ue|&8FYzi$hxRxY#ZS|o>Q4{1!Uq)Y^+pu z1-+L4Cc7JyuGlC~rakC2;%+y%~JGX&hW=DtYd$w%CX;Jfc z@9Ra4Z;fZXcM5=0>Usf<@d=e&xl$(>tTj94A4z%Sc4yWt|EDb+ z3dx9tJkek$48ID|2kBzUo}M5xKq=4zAmX$eGIhU72g?~jNomN>5K`|z`ixlFRMgY7 z-`^=mc%$kp`cUDAG;?!9RrWK81DMWYo=ReX6~`2YXVkhyMU%Sd7~)$J^e;7wiwQodDpD@(9IYCE4G+3-$)&lTa#>7qTY{rOwH9-% zHug`s$@?b2iEzzt1ts+*6hHMH{TualBi8CgF-ReB>txs+XOSw-%c2as%$2-&w| zW#oIqg=quB$(<96z$0KaRpXWb6w@b;tjZN8Io@87P|!D-y0ucg5wl1{-em8s?464m#D`&cgO82G?RfsVyufAvVQ8{a8%hxN}HJZolD zCBXN*qhK-7*D9a52V|?&ZV6e8md%DscSDEwcl8iI2pe`EWUBu(II{0I>`dk^w3jEk z-S{h-^*5)5iIliBMG#%=eg6Po9j zYDm3KUZ>(xds>Lsi7_ZvEkH28o+iTfjF?}IlZo;Pza4#MB-PY3Gl(T}h%{ekCr zN%;8wO?tSx5>FF_GQU04j}r^l;%^T>aW~iBgD>HUr;VT}4B%3S*3iZ(Gg2<9W2;eb zo7T(DH%-;DSw1Q78f#`BdG&}5)2iht5|Uj$JzWqOpDPCVw$L&-0px0%a+$0IGcoG`{cWFv2Ho}M zhO^MIjGG+fUwO0u>r=>E)heR75=<5l(GN8CQ}*EW3uOuXV*AJKqq(7T_NEW)J9V+r zd;zczvVEfoSUJd^kMXo$3L&Ub@U)tXoVJuVY5tSs{Png{%6-}u3P#Vamt^1i!BNP> zxOHM=>3dFhociwAdV+)mFJ+#D7*H6z+6JN-Y3X_cpVA6fA$+?jK)B(VqY~>8u>ObZ z`u@EpHt*9l!magER+Iki*e`Y}64E4y?$iO9(PvoF_Pd#piG2?_n=7j4vtGzk>DY63Fst|=);HQF-I94WjwmOxZI zbUUVE09CN20tNLQ*ddM0H4q!ng4 z^7%f5(VfA7mS3pB@?r^<=8f@2NlCWqis_}0Y*}zb%0GD9puT|@61)3sEwZ^81FSd4 zcS-AVL3c-=Y}1V9u7V0yLZAr{y`3o-e6-ZqNoPwRWK4xg(#Qk}OV5O@cACYgSk3kR z?1sZgW1AJ#$8`R*Cj)P*L68L&+b`AXxzU|2lirQR3b40@AWnMIbM-jDjb>#g?#*i2 zk&kjT`ySTik1Y@k)-8EE^Yz|_RD@hzDZy}BJP~4Y{Is_7wP8KFTWTk`4(T9l(O^F# zWWo(G_i1v)tpoh?7Vs4Bu$fk@Hwg4g$;x zxomDRTpIGC4i02x#;2nA@}$tN_VH-oazmA1EWgMfGV8%_mFqflO68Z-aw(C^Nzel< zU5g-M5K>w+Qa{O`J43s@>Cd6ZWXorv{ocB_TTWACQts!3TER&Aenst{o0)w9{-NZY zv){te>|!0+7XSi8x76520}tj0w>fsP+GK&3?#O^#)j$s(?7;6MWE`e20V)C~!}m>( zc3AE>MtulmA7i{_4kSI-x5jT@0|D!iCFU+;5-iO{s(p;5G;oc@LP15Z#)=l(RGI}I z*191xms4H~L9zjcdLG5Mj}(&g5)0dpEu3mO_2R?>cK1lNq8l0m0-t~PpH|AHzkxs~&U~aDMYBa( zkGjFSMdkf%q-Ry&7=H6lf=E+ZRYsyfk<8wcjJD8{jga=d5sSGkp-lJBU=?(JcRL2v!Y?=;4YfnCPnf6#t+NBHupSgeE%$&AC_ zEUbB|{DH)DlO&qVlbRR^scg}NS3%8f#|aK&uSElfos>)G>_`)Dpr~4_oIV8X`3y~J z?q`l|7<+I~b%lq`l77F1FB5h~Kr3$~-duqm|Ez|wU~!XI9R&Cmf)`h{e#e`b@& z{O4R+%-p1{02_P!KS=e}8Jmn)ljbM`>Rz1LC9!JHh2|0gvtq|cFq z*?J3LLN#&WsPOad2lvtAwHo}<(sJ9SaDS;%50z4LX>b)yDCx)Qg z4x6*tokpcSJ=Hh43^-@Q^9qBodw=$&wJ^pX6yuxzfNw3=Rseq}g;i`A-o6;m zEO`zG;WT~UpTm^H;tI;wyGE8uD!OYB8Rle$IZ>cUcwA|td1l}}oUeKfI8lt$$fHSlLZTek<7)f4I6Um$Z=jiMvR$Z{*0Y-Qw5 zhOV*78&;2tj|zGlyw2J3|QVIGMBqCGgmnh z)ZkMrJG8)bf5c{Li$1*atmyqa}{N8uP~a^nW7t!sVx zytbp%0DQB72SrgLmEv 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

      %I#?uaqFmV$}^x1m_RmX&bQ! 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%0DtkAw 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%0D9wOA@9|e7 z@kiqah5izFI`74PC$*fU42c|2kDgbM97dpl%VPla74+;{MT8SFY>n6M;E$Kvo}Z;x z)qEGB>e@ZVovG>eTCJ?Dm$bcsC%0g{jmY4x2hy%GN$QLC$!>mT+y2p7XT}>8mrKwN zoT|ZyxRE7s8ua^^1K*1JJK=TR>Remi!vetUjG>c&%iE`=eG{g9E%0$`rRuM5 zq-pn2%X4Doq(wbCkJ7(EweJK^Jd#>z(tVmaqID9Yjq$M<1OxKqeJkco7xqB8(k>;r zn_WxUCVlNBiHC1v*1hZ&Gucp;26+-xYE@NJA@C5oiry3I0^-JS`UHl43GBbkAsu6?kC#3-?Vp5wJuvG zeCOiLF|_?b+kl(6!2TZHJ-gzt#GAkv;=TU>$6pLJ?M_6KM2a~==ODaSS_k?AJ4P`bgg}Km!N007^(^7|6isPH6~DfZ+8s!L*f4r+4HrNWgHt zk6hER3A=1@?qFE7ZEI`zdOd0_6@z~FI66^QiqrC=sV!>eN>9V##ij1iJ3jhZwd zjz%hJavSO>0wg%j&i!-S=}%C^0@%-gr9~Ml^2VcL^(|AWVnE<1>L>sM9X~n%&suw9 zZsXIXAPXKy2Q&d5Uw+Uz13y7P`LGXq8*>)-@9j+|=J|L~Fa-cTINUmrK3>9%^UX6o zslYEC=mJcfjCM5Yi#&w@oca$+dh|Zj0G!}p;|H}nclWu+K~4Ed!uO{UfOyHE1O$>Y za4J!Za(MNqhXand{3)-3%6R-J0Z$G1Q^r3kVdVWOLFXRS0VZ?T6(4`;N{SfZbrm5S z{%mq60xlR}_Qw?X*hbqxKQI^+oc{m_9FbBpBYyR;p?C&>7<#g|3@N9N;oHw@aq37r ziQ_bw!mnUPbLl_{^JDKHPr{dR3&&B~fI50o;~3~O`cMP8+BajK)SPYpRNpY}1wg>3 z?))>w069i@JY$S@6r_Ry7#QN1MhR1#L@fNK%sq2Ce;jffTEkYu79N`;feq_!ThNSAdY$IMmXcGE&$^c8HPFPezfsM zKA%cDdI}8(4t`uxD@H$eo`Fr1dA-WO804W0l_4-m389tqoy2`>4N- z1du*%ia_~#^Zx+qr(lY2JTKi*K<*jJkO1q)ts8!A$EQ#;NtNe}4E{A9)90+EfK=jw z(IPAYU>%BY89Dp3-OsVSvYF>=W3?&T%Hk!-IP2b{4I;4$qa%z^1m%LNmmu`%+wi7? zk-#7>NcE_ShGj;=4hbTrlgdHI-5hbwMF1}2w*dF;Oe5BuyEgfdlECK!rYUe#0D(`g z-%3`TCREfF%JS-=CbEVNX%OAJVI&yX25ZmK*}aVubl7VLP)i0F#{XJ5{6o z;m9L_Kn+|eCmnk8Nw|)3O8Ryb)!=R7o1dMPcnkSZ1B-!;yyw5QIf3WP10-YGqsUww zWDZR@F6Jy757pg))gPs*LVxC0o+ABq08NE{5P=kx>VQU`9#2iB{Y2Q)%3rC)h$5FJ66Xi}B}-;P5S%_LPyl?98Ym7~_to+vsX#QAJ&sPMoSqLK~gSLwXk?7U!T} zn~$KX@xyZOv&mq6#?kuMW8pcpj}~dRx~GSAI}5dVR!f^`E+Tm?%MKOQ9g6<|z_ICF zlp1uG(Rq;ln`BLlEQ;hbd>^_n2>RE?<2cHd8FE4=(_#2(ZC;~1<{t~|S8^Kdr;B*TjB{WEp(3%q6Hc9og?`(*a+KyF9}!$Q{v}w?&G|ncm3-zSjV3)`z^f4;D`z~56{4WGhq z4%*0#sJz#y3gCIZ4%!{G@_eeEx4+1PQt?N_O)l4NjA6Nvn{oR# zWf}A*l?U53hi~x$;iFd4^cjfVx8{fiJqP!IKb3mTkA!?V4128Xt&_{?wk1-lTTtn` zMZ9}=BC7uY2mx2}>0T%L$&Y)o6fh86stoXLTHjgKt-jp$4-^pwm78YXIL`y22vx>?K9zjSpqyIVRT*O3WZ-AmbRUII8)6-+ z)X{XGW<`@9D{<~A6&Q?@^b~UlBRRM`SLNHbt-O~5F~WeT`~Lv$k=Cgzm3}^+m5bvG zJ#z0xxQoNg!s>M^@~~1!Q-Cw>0H%QWBlf{byaBCR>Q>kC6uF3b@P;bUmjoh(_8x!^ zdROMIq2*iL%d5jFc_w2f2P~(cudM$7Xw4tTz9-ivZyuG0QW5>6L&^!fuaJ3Rat3jp zFf(5lN^e@(p@@$UK@92+_pN6KJQG^eA(k~ z-Z(jrpcRASy=Ct_yC~sk8eC>Y=v38{rW={9?yaL>ueWh^$j6|q-Cs+RM^exoyF#HO z7$UNe>~aw6OX15v+Hxu|QnE<+BThMP zTZz#a73eVDr#-9b`@aupk=n)f36e6y0}YI0(-r07tMZ*x;(WEF_&ZzB??1C_vok(h zE65*TO7!>|^Fz0a&rr09XLjRoCj-}xwcjLg=(n+32lJj@OOEOF?N(b#ZxP?cZva+~ zHp{R)@$czgRZ5y%?1VHtA6K}y@a^=sw~$I?yax;0o&o$T4@pa#i~Z6u`!s(ywg*vP zLHPdw;XbRVq?)Tp4YryLg&gf~ET5Mct`AH2f2?YnJ8F^SK&&B(HQ<&fnjuv+pyftL z!j?94S#;?0D&d>CWPjl2h8^|EIQO^2r5VT;=Xp$wW)M% zvs<}hq-@6@g=~16#@9Y6hT7KhWil!M09L=l{?Fn4E0(4bPNzC5FGF`sXrQ0%aLS@W z-zd&@{vEMiw-f!lLb$t@Mr)Z=p#K1Gj8}#DbHW;p{mf|R%8kBZgVAg13k@>E&a#R$ z+?J>i2k3q4&&0I}Xl{J*rs$XPwAQyV>@u7nBY?iO6nZbwlQBf=$bTA!6cV5d2qIVgdWw+TzJ1!pHj86)@FHZ?T3{a^pAi)DvMn4 zrJF{!ntC0OAD3^-och+ZsL6Sbv*t>|+*(;JjMr87)hW=Dw6hi#x_Z~*K1R`U2#^Hq~y)TfIz39sRYT}7Dz+_7VhN8Zgc4-GDdEOK1N zvjU+@FylS;`ikwJ!qRw+ZSO4r5a2}~2g=^O*N=#+P3(=-OifQy)3$x4(nRv2$nx=w zA8N>#Rx{cQxzVFY)NI?vYAde+>M`pxLi0!E#`zl$%6+QCw9?-#g~UQQ(`vAO1_z~L z((GtxX}6Cy(DBH@(5?W<0~}(#Q%SOWO%Wt4-eYZW7*$OU2y{6kp5YX$E`(Ce*EHfYoY-JqBfbOAnhM8A4==>{{R^IntXX6r_1t%=N03U z+uFXYE_araWAl8x52bcCS{|dXOpygKB9XdA9Bm$zjab-cMWU>?*COyk-4tBcUVdT{YE=cdU^W^1y$*1~~VxFtyU|H1?8tCq8O!^7FwMscd{p zeD-V!W|{t7+2B<20dvJRI<)f1qs6*QY?njF0D7A7c0`Wk!G>L@0grM$4SNoat+baD z!*`I|7$>V7dRLvmtpmv|;)P=?V}DG03hbkzM6_r}u8TWp%ESo@e8%qB>0Ir$lV^Bm z)#Kf}8`v=WquQXJ^4{KgH1Q~(E1j#@*5-+I16ntiDBOo*uVJ2oy9RlRUm)=trbxF; z{NKdK91K?GvEq-hXmN#$GH34`Wq%5}sOUHPzO?D22)w^9e&9z?I&ocxf_@xBf2G{Z z;;VQV$a%r|IQfQPQKoQ#+ z$*(+@MAR)}TU`j0hCi5`<0?C1x(z1m?TXsrasBmW&TEQtyt$*XoQ`kA8mwAn~!m;7Fv9r-i zY16aLcV+v8^sOm@PsHC3wM+Z2?N1NI3|98b6k;@7ZB**V1Df=m1Hy@}TPB5fa0-V>l8c0Saq&Dlq= z6mR?~J+6%wlM_GL;A6eW``&{U#cMtiOH&2pSXnq5SFhI<=@xp$-n9g?A;QML@D0_& zT+efLeHHcFpCxhz-i?n+#vI0nLvi3#lf&`LZy}c8;z5y&8uL5*8=Gki6VI6k-wV>c z-rHH89}Y(b=)~oY)qV(0)#P3x(lx2(HzQ$zm-o9kY*x@fQ1H|`-l?j>nl}B>gO&q~ zcCP8+)FGY;wH0E~%kv(a$m}XFhkB$M9n6YYL@sax5y;us9@Xpj@WbLT07(3?^C^$M zf30Ibh#+!n7N_Ea93Xz^?F<3?pj20yWSRs*-sxK#{!-m``&U5@nA%cH6^JpvQp|X& zTAlN1+I(_cIGN!rjKlas*0gDJn#A7lpNPCKX`^1=%JN8vRa+={W$Y_o;eW*62>44; zmgio-OLi{T5VPAEi*x?1SOfE5=jIsWitsxdX45>lS)ITE`VzG$|O^Gxxr=i6mN++WBjBx<(s=1KZNL@qaPAV1_9To)a_RN#M~TKUEHV?9qw`eWe* zgSWu%9qX~6Q2@G&cW}tLso(=b$j~>8Ytk1 zNfWr+^DjqH)k^b&)ON0~z*kyUv*DXvM_-ypxm3e~e|FI? z$EWFc3?!K&j}kjBFsyn2J+YeMjit2l>RM)%BP=jFl*a`F9B?{g`A{?5wGC^+Q$ufW zJ=&itP(*QzjIU3i#d*G~;=Lg}O>cSOn-Om+Mp5QXqXY7)UK8-EYFdo?J*@u#x&anx z-7-h}Bhs#1cuQE*wfVHWHdvvFK55xb4(>Lu9cULRhb`Zab!&-Ww!dpw3$|9&8*?mN7{+=vPcb$+ zX3%vR_i2|}u@OoLZzy$-)czGk{5#=|Cq%fkCL&TcF_ZqWSpD36YYXB9gXs45V#e<1 z%Od$NgSA)@jw_VWVtY&2ZOgUHp^@B3+lR}}DCP?jXqq0Wt4wY+i14sR?BJXalw==4 zUcca&8^tyP?&jm{_P!mqWr2qqrDK!Hjw&m?E)7k!JD)pHk`tKYUWYv}G5u)!cDwN! z@$_3*; zdeg*rmfF^sBDcM{;%K8IC-{1L3iRDh#yBl)?sZK{VzR#1jY$J`G6D3gJy7ZXBe{c2 zx3tUI5Z+_P0U(d*RApnm(!MEQ&uf1MnH)ANd=fX55-}fg7pFDmJ|p;t_AALPCb@az zia#m^=-Z#D1Jb+e{{RhXdN!Q0>$-~Rkzj624hPb_bHrDk50}L{e7ZSHyI6>9&?yG`el2rpRVijPCoVJ#apluK|a~H+sgc zZ>a0Qd0Jy`w_*3yS%>F=UX!YPNn6NFI%c18(0=embFhKOR_Tln#<8gS9TbtoX^j*f zCb;nZ!bKg8u?Y&YVN?;&el@$QcqB)695+)Xyi+==#S`URH`k?b-XFSy#JZj2GMS#@ z^ATIhKsc0h$7;VPhjqmBFYo4?PkegRuM+>J&x6sSz~i?CEBpQxXF+f+yVS6gVpZ5V|`%->&W)nTD}|1Y_a1RW*k<} zgS9USS=&vyO$%aW1FyE%a!e?8TpbT+LlhC|A`qzkcC~S1-R?f`KUR*Z7LFx`TJvvvmX>!G=M4C>edMzQ| zBO6EFjd>q*51{m}PR~ZtG*5*~;?sFQ+iq?lwT3vAa}!JmAg}Rc3QY^azA@7vvbxkQ z#L(SDWQ>=?71Ot&-vvmy*ru7d9d@0lPxYEM*SuUoBc49b2^aXm?$UY(P^IF}@ zKA5aTtlugA7xc$U)bW10@#~)+{`TU$ zHhOVfQ1@rK*$RH)gYbh=wT8}pHvOWG>khtOMlu!mt`A7@jmCnvnqH-AEB%y6e}7Mg8WzZx$XdH*|2g7?mTnvUG0IiyoO7(SGv8v3n6ZpUi=<0UYt4{l@0#@ z5BR>vUcHX)&UQq60*Jpa1E$l{9+ji2c$33czAv+iFD_XoAAMK&)O5!{O?kD}gL5~D zblV*kKd?hD?+m~dP2P*{Ydgoy*Pd?n%oTRhS+WsiD3%TCt z+g(Mu#53@rM=ApM_OCY6Kecs_^sQdrS!TVRynsi_6m-DsE2-4x@CmY?S=V(Wxzr{i zIMxXPk#Kkf4l#<*(tKdripLg*XB4APz>TIj11A{3U;OB+VwBa3iu4T6te|V1d(D-^=zY*&5YCa>5C?4D>hB(Ix zaq^MvUUlPdiCUG0u6!$|F-3>xnq}iEKe~NA=;bETm%4gZwWIiA`^51^T_d>M^2=_m zlK%kRW5;^-Z-n|~maXHR6GVm-xQ<(t-y0AH$hkNNsQ_ml)$-4TF7&&7P-+azKB1|^ z0FOU&>;2P@O7<@XiH-F0KB{aC67RQ`)BS3)atfZur{!2;w4*OWqYF>>iYM&mqiLs4 zjV49hjE7(=h4jbaUL)dv14*U9_L~{e=VI7__y#aCarFE}c_+htd*Y9X^q6n0yiEFq zsvKLLMkv{lN6WwE3RqxqlA!g-u14$PAB{Xiu3dOrSvFR4L%FW?2SWr=#Dom(EZ;L_ za04C>9SwXXM|ZLG(8F@<&r;HU8vHi+p9RncJ0MLFvtWmGJjf z_04erOsn5`Cat&FK};l*%&7kpde4}{vZ6L=p}UpDGRdwovX zMhi>w$q?hqAYh(DazL-pj{)fR`j>;WyPMG*mvh;}b8{hB&z2YtdJHK!#xOYPP~&BD zPD?){b@HA)vlc+ZEJ09X(#$jpSq0`Bfdxn^{G(%F3hH0#B{67|gnO_bcOHk|s9bNW|2*4Elhlu`If z+fLN(+=jS<^;gT3`xOD}$vz->KTq&NzPVy0FlrO5R<_<^?OgifkO$JbtsnMa_{rki z2ru+M6It6^$UNnX&D;S!m4~HtST1^x#Y=0S4QVO4yi5PB$8>HYKYr7JH5XQRd0y@00Mt#%>%qjF(18)2P-CA;jc2+#M;wOc5Pandu_va! z!|M%4PL}TO_Fq22;0c6;ly1LsrynV=x4&l(9(Z#5`%}Yr(MJQii3IlwsU)K$W0Q;l zjxuYVvG{ZFmsG0R8QwIpKqu4p%q}lmi}>=XPEU*G`lLmbHBi&Dw~aZf+gX@<+%=KAd22 zTPYc;dR+9M_({BTtmx?eAHS1CxoH4Lx0ooH4w(Q~(LWFGbf`Q&4~?~3i}|BS_s1h; z3-gx*oS6D|?Ztfm0Bi8W#J&`?j^pApta^M=GTVzOeA6tT;|u^@qa5e9E7W{X;M+v- z9*&+9GBmPAuX%YhVL9aF_8W=CLr7+?ithF8X8tSR1Q{h&Z!H*&!GjK0gS9{&ovIC6 zP4P#D>|me8H;@L95V6|>jqEuCK7)^~Rq$*vd^hm4*HUW`+#*fqf?0lfTO23{j(U4n z2l21srT)3$`w6t=w>pFpJWiacP3!l<^>1uc)2Htl)Tzr8i}9btq&^kZJR5PL!Fcy^ zm5N!ImsZFt_d=YG+~YXN;=U%EPS$m`NaVMYDXrT8InT;S>0bR8fxaU6mckDZSZUIT zkZ;Qnf=B-VV|F)w6^=X&@m|L6OV`on2XJMTKz3Yo$X2g%n@L*7hf+)8h!*2r)2;kL;poAZ2zN+>@37!w>s+?6@gw7H_lFz8 z+P0B(HItw8hP$^3#{fE>97*!8ISYm5Tehc!d`%CB?Hbm2CIp~6O7th6!yc7R%*`EE zlXYo*;0Y}r7Kc$`!m#6VaB8VQ3;rGOag&U0Q9q3V7l zy788$t6Q?b732qc@5n93>0L&psf(RD!&6Dy%b&~n0Kf{%k<>tvC1w7b>B+B&7H^ROOYwbg3s?yx1^70)0><(*h!+LyA zcYAYo6*oEaByIrgYqim}Z7ai?fOnEPK+0|><=fhUoejT(?d=s3%E}u^B`V4hcI16J zSI)jU(#)PL)h9h1q;W>S$G47sE9fm#$572}CEPQ{fbxppDGTf?w}!2NZQb1;+mXi9Q-sw|QFX{XygI z066_?^>X3I&yZBcMV;;zh zyKa6u7XJY2SH@?r_o*J{T)o4an%)goVF6$fI+p2K(&!d;mtl(|A`#9@E?eNCh+aoi*!E^Sls#Z$$P$N zL$8(PFWw_-ZX|R#7#wrPE88uu&-O@LSUkAF+JQb|mErogz@G=$YYndWe@l3E7@sQf z%*ShShAMjCjDhQ25BA2trQ7|D?+V;Ug$<5Q0IsC$Y~yn);*PO*E{_}Ch9PdEkDh=r z{&jCewzso=kIY4ve4PPIdv_Iw$P#m;WB)mE-T@92(vRbv^@kUhwUcS&L|)#3E2ie|H^#uZ8?mZT6ptUL}_2n`o{SBIgPf zkP(lduh5NfSn4yrpKE%O2U8@hr31BWsM~gU3u_ zx+&P_f$CldmrQRKY4*3sl35TV@}yAlmc~A1YWj(MA>k#|AfNjV+(&e-9KjGygCBKk z;qMCDJ?Ds^SmxUrNC;8#oUb`r{S?zKUzcua9&O_(nWU zr(Sqw-XgzeDj{s(A5mXD>$*>h^&8Q3eQ^C+V4UqzKZDx6qvH>VE-W=0SWq)xNw>(}+&INy>OLMaw~-li zX_TLo0VQ5t!q}ekOa%{IPK|OfYceSyqQolN;xCHu&737oOp-C9&WEL&AwNekN6d8iC~^6 zOiUUbzkeW}dW;WB@{fp6Md6JXSn;N@5gKiY-q>tq3kBgo^(`?Dmzgub z$j2P|QZzHu#(JY!rJRD?$BcP+$-wun6XIuwul#wYY4cc1BrjnixrILC6~O}op~%L1 z4An2}%axcUJHBo=SEbk^>DqcU=p+xo=NTg$&{K+A9L2m|A+?G-X>9k20P~7J$`7!v zH&?N|OX*U0ias)>7l1ys?zVcmHWoO-I%9|A0a#N-X&lqYc1a}pKR+OSDCZ>kdsCd) z0R_Sx@_pP6KMKaQWWBw$vHM(>MoCx9xjFe1dg8u{)-)8nzm6#5Nz_GH{o6rtac}0p@(`*?W?T%g>9^Yz^S6riyQ%b;ZtSF0 zww1Hy5rHXA84;FZq&*C47bgvQkvL52SZ&H;cZP6Z5tfcv#ng-X*X6cv@1WDrap%Pxve8qyP63W7)#92 z2*>+46@lU%R_98-8bop7cHp1K6-Pz!1eP~{y+>q;y2szzy(nyQNbP(VX>*}Xb8~)n z+!kLb6$2z!3FA9RZ+uTA^GCE?eC!7pHR^}NmRigJKr!U6?-;H&f!@4t#oF$hbAF=V z=Mmr+6|ECFYwASqU4qk-$EcsitX=NM2Z>3ROsqp2XJPtol;CQ!?)| z4h}i0FLe)__GKm|I6p6X>x$6jkjX4s-gS;mtrOrkpdR(9V(Vb74wWLt-18q$J*%0P zZS#@#g1c}42ZBB8q|)v!Vq`e;9k{^n^r|yEI6PabuZQ1ExAP6z+J|{2J-u_9@jH(S zc)Luvz40Z;LkyC6#$=E&QhE-R^)8vE>Hbij^J2v5xfk`tH&nRM{{Z11yoDf3yLWZ- z6CpyP4CaIflK4~OSBiW)qD5nUYjJyS7)5X97hf!Yyf`4%ca8ohYF;7IE?`3Xb>aDO z0V6B@)gzK?vhhx@@b>=z!{bd!QpV$Aq)>yjsr9d!bj=!h{Au=Br7v!*KYCk#&FZ+V zDbq{eF&+b)?_S>9-{_jFN+(&NIbx8lQ$kw35!w0x8CN zsH8Es{xX zG&60CrWkp0GN0k+isfGzkBa;$qFO7~k0}=xb68rs{`HzZSEc}`+-pk|NY?RTBI9ce=DFP?O1rg+Xqk!IwPSW4$a+-w z(S4H0L{+7dSK}U|`d6jx6^>~{AH_F%f{4=Hc_6X$H4V3kZtSmDb-J+tf_v8a@P@Hx z5AL8IUeN6Q>mq#;>HcSrV-82D6}(PqT*dKy^J>;WTq?fj!5HHQ+O|9+qFIdwFp(&Z zMsLGyd2QCSaW(sC`v`QAhc)dU8{H0t8^{!4wzBqdvD z7Pl)TLv98Rc*R(9n}vaOCb|Cr5q+8&pilNoR>x?oiUdga zuRJRdzzh6TkpB93)j1^e9@Uv=2b>vHkTG2*jbOKOt@h^sS$=W1_Z!JJ&;PmTXDt!^qctcnJ0EDYekHix2kxub}-vgCD zTIzLp3|9>VlJh1w>6{KTUKQ}4Qb=Ugyf0-q-(@$OBKF8TPCdAQhsKx1H`)Cr=kXDoe0_rMh9NQk80%X zyh-AHGUD%Tgtsd?j7!6XC!e}Xk7^2xEPY`5fRZ1wLUY23qV{gn?`ObXFm5pg3QleQ1OF~w#xwY+4vNaiY8dI675 z>0cduQ`BUi#kWyMz=NEq+qH<}@~@}7Pvflu$qW}Pt#VMh#G~X@>Y~0l@gAg_wx@Nh zG-M^;AY%j5ZD~y!Q$D8nd#bjjqgm<~605w3s^hl<82qYzYQ?Pe`#alWcIW2DOm-iY zcyGczMj>+gH1q9eQ#>o5<6a8?0N*wBKG-C%ib9fwY2kzYxV@Kzn$IW1hQNfMNImE7E=vqD!P}kU0P>-fzr) zQH3Y}0IgnO;N56xzBSivk;~h<+(jw>0CA4d`eX60TKGHmWYhdXaeBD7-xw?WSSZ|n zRogvab;omm;hv?4yiaTMZMe9F)Gzm$Ty3vQ_(Z}V7G7G)HVNS%1JE*OIsHE>^G}4a zTSchrS8e{TIpSas`ylQ8Fe}#l0-kSFIClaeS;zmHL8YJFNi?ti1Pu;XZ&V4X2YdgcgESl23RPT1@ zr_Eezb4S$t-0{?lAC9$4VT>!I9DAtGO0SXg>Kh`aT=@F!VlC75qkDms2I1%#4LS4tV^lGE*B9I*cpz#by1Z zZZB|7Pe6aATZRXj02x*EBbwd5$2rni6c(Q^PR6B}e50QI1vb_Og%&Z4alxfwzDzj* zeW?LTc-C8+R5$=J-Sn?=_;+j_yhtNIbz)!m56xaNbp&Z~10gsKwEi{jpADsoIQ&Kq z5W2_6^i9?0W{iHec#($l0 zzXk0h{{Vz1#0eNKA5(S_kM4wD>0R%_cY7}j>I*7tLvZp1A9yc8Un__`%3lG!;9!NX zqG7f$?AuTNJ6(2~kPE3JTy1Wn+}8u)8KAnB^(}H4Co07E2Da=PL#oaL9HV@odvvZN zQd4OM*!4tST^Orpu*G}Ut+N^jr?ps64FX+~B!K=q`jrYhS9XPK``_k@JVsq1_dE_xPcMvdOH*zu9S6c=9 zPdG^lP&xbsWj)QIvF2K=XZ{nXm!gDFan~dfUen48-I0-jHXmLf7@ zMhtxpO;%Gq=Z7w=)prrQ@EEKtbR18N%#vAK%W;M%Hi7*`eEqF(!8>G}dYbx6#BsuO z>v!9`WITRV^CyWWG00Lh;wSl!s3NrfA!cYb_f?2Daj^RRpry%-zb*-o_ zZEy716aIQ+IP?RG=i^x7l=*)$DZu&;E7Xi^dBxdPTpaZsDkq9KtYibO4N4sHNT~0F zM`Z2?KyzE54~A>z+(Bcl#uCuX(lR$3(*nE4JnS=^=pqE5SY+MayiuY|k+`**jQ^=%9Wy^c6)&jXP9S({+9R{L@{t`>3&&rCwDD@my8{!Lhdl?+A z9Sa_Nt#>z2T{f>Z!$1#=eYmTskvzK>yJo1*6oM$%>(2h8-nf!Stovn}E?fFf5SS`+MM#$%_z*{vZ z-ivn4!>aZJibzOkytDU5K}jTr5+p_ErfbnSPolgpV&B*{g}^v?q%1u)h8%hmUisns zOGbIjt{Q6q7&9*GSSN;MqxAd=|{2j1e+({Dvt8bIMe4&@_gI;}Q z?;SMGO7yI7TqH=l`T$29*AJ=!2E+H1WAGKxYW7!>MA!R?%O8|_4zxznRDgoug*Nz8j;X6)7+k34pVG9*_ z<8Ds_1#$e1e37QBOF6iWc7rp8=cisj3i}UO(A}Z(*8nhL8=%hI5&GA{`W~$R0NZ-L zp2@Xfx?rk0bvei7UbYWw9%eH`sy1XPGoRiQlaAGGWK@YnaVa2R7VlKc6 z<`^U!6RBR*0i`R#XUg-B(;aJG%ta;iM)3nc%0|KNFe@=3`!tcApp(gC`Bul76f?&@ zMj{}be+~^Pd?u9lKE;DcyR`83o)kBfw(+qnJN;`ee=g<~iXhD6CA$DP#tnK_uc-e3 z#Ul@tz(*~z?e_{e!1`C4X-_@eF+STfkUox?x8eBWOW3WqVOs^U!014( z=H+Db%K@}DI0vQ%D-I6_-B~a8oYE3uV5yF!y|MULM<@aL;jl72IIq&UJ^ui+NgoBp zQMGu#BD&?62J6`RP@wMlfCKr`0qfH=pp&;~&N};7*(2ofCJpD_B0?Jd+X+uI+WJ68+w5dEjY*NRRNGUM2&IQ?sz z8T<(wVZV(JQ{(+F_iHd6OOko?JXaa6dGUCb0*&Qvngq@=04yuEg4fBHmfQ|-F^c1S zR~s$Vb13U7C>iu3zCw@0eRWNrq4jshR6p99G_f7s&#qo}*M7AxmIK3~Tll~=d%4TZFiJ7jL-0B4`lwf-FV zJb2&5R@yeLaAUP{!buCN1>@!9@yW;ND?{RM!n@ChnzWG4vYRGwA$cPz8zkds^uVlL zO?gIenw9a?qI-v3xd7+uR&?m}>rFA*kyPw#l6@($>5gStXZc1tRjDjmIe&7c@;IOj-y}SnLEG+qt6tjHDVZT8 zIU7^ksHx-d-mP~ceUj2iUGNkr{{SMpD}RH(60ceaEcE3^cT>!$3Icxf`Y7U@>qeTq znNfq2vOihAAAB?LM}aKuuY4_NEsfQ*StRczi20i*oF2oqc3vjdV9+$iySY-)MmY=j zy>bBS(!75{@qVqQXtvfdy+|!=NL2L0hSiCVxwjnLp<@navh5-HQ`3p+X{8ORZi@y=;g8tGm`@)vuHY&Y|#hFo&2@i z<*w33&M-OWisywz_KmT5eMu$tSYOcF_>J*8iuAZ6D@E!vdp9^=Uq1p|J4S|Rb3&xiFx z_T`aJmI7q(6jz^JTj>GC#g6Af2P;_(tm(1o^DNe`S+d(3ihhx*Tm6C+k>P|nBg;R+ z4SCY3%`@GjhH-|5wVPVQa|+vD7#v}@VSoqHyNLBIDoLe|3x>S;K*S134t;B#g4<2I z$NE|qz;Bmm9XYOZz%a*a;yr#F3xqKrEhXjYYNNm}eL$fDw^c_fBqX zz57!}~w+J}klL5ED$Wr74eL;z*{6@ka$TDKb4 zh-Wd$d3z?rPzV43aom70lUhCSEWWgA`&BIt_R~m9EKFw+xg+KSox`E}dsPj4 z#{dyQ?!FdY9<&X4aUNM%24(pRsNfUPbK0@2{A~$|ZEr1_OmV+BC-CEs#zNP$6d&nY1H>2lYz|>DoG;6`^!i{>pDCqm zH7e1(R_A|v;_;YXOG!U@Ka$8>l=sDS{{T8JaJcv8zIe0o43{?}P%wVfL!6ggBPb}i@5n?izz@~UuYw-(oe;@Vx2kG&UP*Z%;m zSrPc-M)Fs2k`Op5$JTWsZvdrr`0REM%D!DEB1sif*5;X!@vm zwA+a9B2$g;$QKysqK{YfqH@~v<`6!gojbHe7%#@+5EX;2V@EEBzb zeh-Q3RH&m>B#$blUr8@JkF9i{@Pv4o-^sGmr+9|~Lkq3| z8vL4&~O9XeOoQ^iuAk&--#(42Y{u&aTb@z>U!vv}Ni zQQDf4CNkp`MB`!OBhtDINmUgx;Bovt=$<0rNW=vL=}``t#xvTG>?b`x8qfzvkKpM~ z7z7`~@usfri@5RIihkYQI6swU&L^{{U4pC*FV= zw`mKU3Q(XPx%Z$BtJEH7$s`59#Q;0paZ8eRfB@%{O&pS^sOKJ((8D+fBRHT5O8}e7 zk-LhJ3<0-_YUi&4mm>gl#&UgV6GD1m@((%m_N85-K-l1Q6$@lGR+SldZO%y)3LsdP zBN*FAbHyybDs=Q1A4(Mz9OEa{_CDT}6e|3xK<~{+zb<-w{Y^8c9COD#s#WBXj1Gc; z4i}T3Kt(E!8zVRsE89y3*N|;f)83nmN4bsxpaviSeBXryc-x*wTvCom1EmM~Pyz)2 z{Ip=?5%|%!f_fTV{BhIu;(!nC?jDAaKK;R$7&sq=J3HAJH^@|iJ!k+a2Yz_S9+Uv2 z908wtGqv9%8+qI8Y2fm|F6{7601xx+Nw^c~+JG8ZCknh`kY$E8=e-Py2GV|%^~$K{ zfj|neks7-KrMd%Aqit?S2Z{-puxEYC(0fov9QNXX6ytGo#(JM>H!Ebv_j*tW+qaAp z%}s=C7EA}gz@Q48Ajh|@D*jlhN(CDm1dmE!JAParo7#XI^7Q`q0;F81!*-^31auVS z;GNw~1jr6Y%s9v8`BjpzIowFd9PR1(R7ewk=U@ijhpi$7>DwGoQ6XaPOAVlP1CF#L zY6%^8dYXU&q!u8t>xyx2Equoz6?^9$Xfq}$^B+Pu`qXTS*aQp;Ln9WrGjB=v1Gl zAC){7{tgBz7&okDIkvy|k3whyPEd{9?&*pcs{&I4Z*QeWRZ}52AHzx%F5Gn#0Vk5& zGd9-GLFrN;D;NO(0QIQ=4U#+KKT%G=$I3kj$7%pa002~y0}sZdELgB%@}8Vjpc8_A z==pFxX+X*S*52egR@x8dJ*Y+7kgc@ih3!&jb9?(za5{DLphy4L`@0zEKb1yK z-58)=NTpH31|uhm&z0mu_gIhiMRfBn;cp^yD@;ps_|)!UQ?@nF0;vXdW?2-k z6*4yF+tQaX*sisJ;gsDjz%e_-c6gs0(}6c z;Hq|`mEfOhMGW_iy9r)mSSGdFB=~CKh{MBH;rR#xWxl-rnCo;agDn2jiZN z5Sv2ym#S&na64nRy(@Jg1B@YX!4!51M-}u{mA0i8sU6M4Qb!tm*yH+FN2%CcU&4~k zIaL1uQN~7l=NwnbNhWuDd7m#GFZP!vBW3XyWxPae^KAvhjsEjY?Cd=UAa)fg)_-Ze zIJ_U)`hKRV{{TOhijgt*^2!pwQY+{~;qr>4JEs{d)DLX+{Dng`l=4Ltv{5pyf4oS? zy(I;;#H+vMUvcC*U&pVB-Waw&@R#^K^@mbEZ95j|GllsB?hL-$sXS5pQ)>ElllJ>B zhBx<3CKddfrAZ?UI3SpRlA83j<7`nCX$$Raj9?F?R}sN!Ge_iwVbhKO0FeIx3e{0V zl{!+FGl$)w!1ycnmiSwvSuUTicw1G|Z)g7iNR=)lH(Ag9Hz9YQX4_T#H~VvZ4!yp) zw$yw-t$215F@igpblfGvslX#<9dp|&k9zc(v?vO}EVdBI&&lQ}d=u9M^rX7*j)AbY zp{Lti8Mp@KBxOu@UBiR)#dcD~)}y61V>})jPV$TU*`a0e&)}}PKic#w8<&zSW!FxU z+>gRdoY!3bJNRUXbXP1=Df>N@ZFqgZ{^xVA$7*+R7Rs7yK&8Q+HQek zEs_O}N16rP21|Z@1$3;_8T`jI@EAYke|tLnZxwtgxsbGx#JR>Wt}~zZc*o^jUySq% z7%soGbSy2btQasnX9K6DUeYw(BUg{i@`Q3{l~K@EKB*P!%k~&Ic_=azWPZ7?p~$nm zRXXe1OGC)aa+(sR{hBi(wl5hs7-e6&J?YB|s`|O>=~ZKi*FI=v0B0wmrXdsTEO^ct zM{!@QQmYxoN+-e9rR?R(SqbJlI<6FBpQUKq+Y7gb)PJlExp~GgJ*ztsM=^6Ugd7O+ z7X$iq^{)l^$MHtvz}j-hX|f6LPx?K~R|Dokxyi>Pr?3^h?5<^F%fD)W1J8GKn%v=7 zY0(u|PO9p}h3E8MScC4bT|N4%O4O$qM9lcHTI-};!Lj0kjDo;-&&dAsn1yt z+BLE6HlG}j&a98d)K6V4fxODy)(g=IxmQkBE5w+e6h0`a1PQsf!7C- zUN_=Thw{Ffl6X-0PzcgDigqPaZ&0k?%e8P`9@6E}rJ0KTvUmt$pp1}CKMYq7vw}K3 ztczO4t1rY&a`yL0fXZHZUI^q+n7v zOUN~g3sthW^20PkfxPffHE+gtT0WC%d_`>2&lp4!&N&lvxY@fn9C6KhR=46?i)3MDc1lJ72ZOiN`d7;uJQtt4 z7Oj&hV2U{D-o4XD(WaW(IPTw>Qg>7nH9*Rk0#$|SV$jo^ozXH8;z!tW4(90Q&$0tGn z17fdX>6-KERZx$*X?q?WdGNnjxPj!cD16>F$@1YxTJp$j-%VSHF19cd6yuzgIKZ#E zd|Q7Vu8Ve>cJDfPu#2}L3kvw!<4A9`wE6QFZu5?zk6tUM1B`OfnKO=uWLo@4nK8r^ z;B$fPUd^uQ)^~AReWGl}VH zf%0R6o}Z}?wGxuZHph>Y;~14O zQ%2i5!@tbj;X`*pin=mFlttEjNaDdGw~(2cxMn#)k4mo~yLjTdl14HR52pgN?ljTn zrM}g4TnNGAk<^ONIyJ=TRNRH~!6kbSYUzBT7HHYSJ@=ZH@w0gtZ2AH8uRyi&{rnKc zq(r`PjBahmX#@WNtyX>G%rSxYi`K{pGACc^~A7 z2V8wB0L0Zi>lveFJ4kJ(Z+gd+Ufjo4W?WBO=?jVZ6Ce-5_Cq*t7uHW)2nDF(MtKw};$8RfJ*~&q1#{x`OAAPH8 z7uWv)W{OrU`%ofsHva(ntLUp+3oA`7*ue@$&k)_T;e&SiSED$4D0-Qlw}pH&CXucciv%sT zM(*|RIqt2&QDsyds|y5?yYRu zOi@C|f3tMObjDG7BQq9L5uI(~lXRoyM8{0~*RWmNqG=v&i(W4A zB+22Z1ncBUd{tDAI(_Wdm^=-q**Kk>Y^l8wc+Pv8-1wKQTTNr5Ti|7)GXx*5O>od_ zjd$jGv4OHZ+p~~B{v21ag@TL?qZ6vwvivmrSU|?-Qu5Y6;V&BGeq9Apg2Gg`hC8T| zITZk5j#T=4aYgTl@2&n6XeJleXJY~3FvFB*5|hp7y=d?41w+a zE0)p4!SMuIb4|j7itMlS$97cnaPoY=iQ^T|CUhT0=_=Z9?45424W?ViMmXpmUJZCZ ziE%HB^68S6w&)4|50@46eyeQO-?I&#g(Cqh*HCTGRm7sa7sS>P#o{JoF72+dWBbJb z$KhPCW`{761=Z$MP;iR9I^wL_N48n6t`LbfVMn$q{QhJ*gi(ue8$a>-j8nCSpY1Tg z0K`}&ny3ys`e(S1T1UDS^Av6e3`ZZ8eKX+QS60&g0(g%~vTzdedC4RGS}PC^euw3+ znyziLa@XO{nbI{q2S1l;`bS40J_FBv8Xb!~*e?winv|neq@eDe1*$y_WS!E#l4lrv14QN{F zup9MMg&z^CV;NuRTB-3DPt;+1atRxhZBPbV*mwLZjh(dLx^=oIg)Y2hp?_=YlQpbS zZ(xAo{$8GkIPF`ye109%G`OyjN$~+S zy?R?MFrzz-sVnd|FR4FvxV=ML*K}Qa^GJ%vbT)|1AtwPxs`_zWjcMS&4u54>7-Rvj zBKuKs^EutyBA^d6)l*M{S-6v5!pj@{z%VR9&8X;_Z`!Ve<6;*g zN5JP8;03FGFVj3Mkyz=vTq1B+ZJ>dZ>&G?Gc!t{BMb)h4mhe0lVIEA7H596 zS*%`}hUi^^9GrKqYU9F9rrTY@*RrkbF@=yfWNs_f#=GHr9}cFQt;r?c+W`{B2L^0$ zKptzQ{7TXMMdP^q8Kp-dU$ZbO=aSlE#uH)ySIUn3$?^* zqG+S(`?7fr?_PD`O%x9l+gwX%*73go0N<4g#c`fL99N=T=~lKkH+S~4%jXe|@*UrI z_(n$*0nPj-@Z8t_5|>@^p0Pd7pl`lGc>9$ih~NO8;=M;+lHdDH^~)t#Px`Fw+5)J+ z`F$~5rGz?Wuwc}0XJ~G;^%40or|#tm{6r2iO;glv{9~?7CGMYK%VviLYmbpY`?>m4 z0sjCMJUyrQi$$@5JT=U&46=^f%7&^jr=GDSj2-T5C(H>YB?Cv9>Lx#(b~`3yR*EpE=j+SAHkA@T+P!@y84( zsIjg_Tl?Mk!1V*AeAP6oec~&vOUx{gqdRRGA28{P_Ae8`H^fQd@SdNnrk@V|k8v># z5{2s9eX++NSB7|}!ccfiUV_8J-X(`xvoI*QmIVr?Ko84+$Dja`IOn}+d9@{L9_jGb z4LehdSJXA@JA0V^$|H&(yvH&5k-ocY(lpf*tD)k-edBd`vvJ;Mc=~cucR8RI;@t`MTehn8B_BzkHWEhL$$r|_+!#=N(M z&@^&S9@}?dIUu$UeK@KuW2ktRSnVxg^5jse%ts)R)PalvUYp|`Ls0Pz%<}3|kF(lh z8#^$*UzCge?tmY{v^*mEFNQR0jZ)@FWVyI}82Y%69da>%C>JNZXlWh~GJTg()+T~0 zJuci8gpV*hk^R>SINYbDcU}VU=frOv>9_tU(d35aIKhrDI^-wrQ*gp$g&P9kj=qAq zEhFLwf-ImnnxvO9d11s>YBwyc$k@w(yPJ$|Aw_z`9y_r64UhH?k0G{-MiPypC0La~ zU7=g%4Y=}1>0G#(w5*QGQPla%#dmjh=GqN&Olf6FJm{Prg)%ZSGsmSWYyK*`vAK%F zP?*6O4osjhkJM+3a6X(@x!?HXz}mlvZKBpR{6!pZhIm8a$R8q%@_h#azHs=<<6jQj zT>k)O_+`pk-Q}c?Kiz}QKIj8(?&CZRj`hV)dz~|ORu@Rod>^Xnd;C$W+ll5XLBRX{ zMnU4b%Zn+_v-Up@xxTh&&eo4;D5K?E{yi(_eM{lp_PrIZwLITvN90>0g08E;;B%Y` z_pgUKgevz|@a==;PNa1~)7W5Fs|oCR^$wH7UJt#OK})Oa$!*4$<*LG?Jd=*y@m%J; zsOVlL@RZhiyfD0RAqujLxY^MAWYfHB<2WqzsV&~;bQ5Ju#NWr94Ah?t{4e1D025eV z4PxR;d1a0KwqvyfolukLYh#@APYQf9@J02C>lcMsTbv!QwlV$CMRnG*_*cVNx3iKn zG`u8eLpjf3R5ZVb=E^I(n`tC_DQDWTc9Uq}?WM8seu<-NP)^G2sL%VwB$Ba@WuOTy zVb`^*&nngBwYSDeRodM2u3mqJ`gOmHzqYkKLTy391eO`OuWpKcTGGZ_nAZy)0VRHI zwZK?vFzRo0cuwXLkj&h2C@-EzGpl?)*Y!^l+G`pus@hqZAwuym3xe1Hs`kZwVd0Ml zv-q=1(e%_oBVEP06?k!-roM8%)UM*5-r~;kP01k42u{)f^jZTtPLCz3p|>?`GMbH|dQB zb0mMgRy|@RTcE~J9C!RVkB8dl?A7Bv1H?WSisMYV{?(FM8E#@iVtim2ivm@bJY)gy zUl5t~X!4C?z5}tI)n3{nld2ZAgtA2}V4w9@ z46fMR-(D-|uNHhL(ENKJ*>3f@?Bi!v@?v#dh5qTu81|=g3D)IyX!+Xn;dTE2jx@1# zH;FDKnW8A4ZbDFY7$cAe(Bi%)*8UZEufV#s_JsO`7EfU?S#XRA1Q>+G%soVRVTqz*zo%Pi-$Yk^zCR zsmMP{^qnIA0KyuCW*IFZe8nG{@G75|7y($0F^-iEHq^_JM`U#RN5ri^!kQGG9K6#R z?(f|r*%KCth+K{A335G<3iN-4J{a(xv98_N{9U=9PPG<>;4Q|*gsYvSU@H4Ccviu| z9XaEd&@?ZHdM+ln%O+QNWeqezk0vrQxvxjmd@rQREp=}TYb|hQjH^L*1geoC3(New zMtUya#+qQ!;$Is+ALv?7jBK=j4qprF3(FBIT);<`M&dD%(5@?~_<#F0YkH4{t^8T1 z_=Z>-#^|f!%r66YIasSz1v37GRo;VAV<$nmp?Zg z3T~gH{7LY4#Ebn|^JD?N;GP$1BsddL-KCiFCgbZo0gN>&Zn~@fnB* z+CE->_S|+o=#1CQ;m-^tQfm;)XeA%IX(D5Q-pVpRD*03PoA{OCEqlYz-D#SsntOalYi+QP zH5tHSGJ5PeJvbE@et&GQvCm)Nxc>lzUL>%$@Rh6@w)Zja3zz7=g1gW7N>cja;pJvsFkuSk?)DWG&7;Boj+Soe7|R}*uJ6MWo$)Ndl~l?h7!B=Nnkd+o%i-;e zHw!iSGk^#S=zR@3@ihGw;6*HH75d7O$+y zZ9B%I6e@QdESFbcNVZbflmJbnbmmX(z(wEzlSaD z?`|(;43_Fw%3r(eYL2Jk_<(qH`)o!+g~z2iAs*-O(p?Kq@wJ=A_+t~H8RKc{N6=!v zxw_Mq#W$tPuHYot8*dzQUj_USu)5d&AX!+l{LcjJ!)`E~6ZF8Z(b;sN6`XP0!enC* zNX~M0s2BtBuZ_SESo%vqIl%wY-+?wqvgf zN2opPOG|`De)hW-8Fq(a2W)Zp*O`1-)W?A!ves-v&2y>VrMZl`3xGatpm(nj^iG-e z8~qMxH9b%l+l+zlUN7Pw5!~x~z`t8vmiCS|st=xW-M)gaN%2F(@@dx+O$EG?lCj2& znJS*A*10_*?WLM~+tk`4UzJqhcN*W2(BIVV?Ba{#sILAI#CLLywpH-t~N-X^Vz1 zA}&$8u;&NU6>m$AZnbP@U~{=abAWxb+Oq9@OX15q!(nlFs>G<_dXeu^>!}8zb7}pT ztC$O~07bZhJK~*y>UAwqE$$<2Fp(@o2O}VH+niUQ_@_j){>$Go`HLC}5FfplJ^9b! zUYDkL1I72DukSD8yYt^{Y|G_>02pqV=DDvQT5Dbi(cf5}$!=pwQU{hPKIZO+0CG63 zBPVfK^A8VrQICu4-%M+W@d%hEar3Vy@Wp*Y;Xe`ICEDrm+%txeRaMXMvBoRFM!T(A z>bhp7rkuQq<){nyP_HBMuUGIKHfiE3O+x8gAn*q`DbtUwRP{1w={_)9n-39b(8n6w zTr^>rkTMTY0qikc2Dhj^{{V>X^k^=lb#t==94O-)eJj#FJl;(nzop$GfQfADk=Jp+ z41L9X@1$w=I(@@kd7Exq?zv|38+Z3#T7rp2k~32c)rh|of( zXwGqpExaWn+dtb|5y^~mo;_-7KLhDE7IMpENmP`1iPIj{pdU~8N?$WY)AmKRXS7!z zKr3=ZoVE__iYvf$-E#B8lNmQlFjU(F3nvQQusthl!P>u!uSLbjh~gIO{{So$bmhKZ z$X7I@shy8W)YRKS=4{KiM)X?a+gOYOqA(SB0QEJyuIm?z5m{r*O1LBr)t)ryFSNfh zBD=^14?~JvploP@3!s-|WdXny(Bd131ZVd^^!isl;p?butlHk;GOXAIX>T<|-{o7u zBRqWw>S*Nyo%qF}LE;|<&*3>-c{+o~8%d6cjkx3A<*$=2{t{Vua0?3yND83bmkI(o z@3`^vSJFDo)~I6Je+|sDdAVPdx5@M!1#=pvvNXoGywvS3#i}V%=?P^Y?`LmAUDREX z5|K`z85voa ztYmOcKuYuYSE%>{M6}ZUEDoOz^?8{ej1t5A4;3}0xoj3W87-}%zT0eF3_p8!da&}% zdO`;QPXp^+4dj*r`Z*_5PB1Lg1Fpy9V`kG;IQ)2@=-+p%()-Hpl%b^w1$ z<2-5N`8+wMeX{3$$t)9QHmYQG3xE#V_kZm>c#6q2qHZhEzl3(=isigSz7+8UpJ3MX z_$9J(H^(nY8~u!6{#4?%Kzw;^@kdL%o@mRww&>VrDps!EMiqr8Ah&(;0Y1Y

      YXH#U`0`z9)Z_zf=R#yWIxT^6;YENIa)M>ks#jd{(wIJe$NqouKOcf))@&B#WoBkAv_*k{d)J=b>at&3%M?c& zNme~GyQOzt9M+q|x^0_JF$&AIlnj%K(HMew9&4M8w;9=J3V?BfYTdVl?d6+es2dIr zPeJWef8k=<>9^PlmQ0bL^Bp(g|fa zVeidyekkxfu&i=u_j0YmDJ5S4NFJ5Hd9Fo&sePg=y|92h#pi?TT&Ahw2(E9#SlpQ+ zQ-umgIP09&hGsUNz9X`Z2U8;}ecbbsdjVdvsCZN21^)nscf|~52@s{p-Lq<*aDNKx zyeF=BHu_s@8;K(OLq;7Nr#&!5de4b(G}|u=oj%&{63Zs{UBjRlR9U{|P@cSjsrEKs*S9ELuU~mBd9UWej68VKZM^TaAf*2!HvYmIgC*^p^-k59j!?9lnrt2l0e4r|K%e2~edqdJ#9YPy0e zVLWYo(DNEdBLrQEmcSYT9A+t_1mbGK4Y4XG-pCzI`66wZ2x@>}l-yqclE^8&cz8-Dd|+d*?|gUn_p z7{+nMa{9N9uPr=JZD#5`hxtLSrPdrxew&u=Ujzw&Yiq_J! z_g3aZksB!6{uS-oEQ_aU$rBHew-7(OUpdQr4W^+KEc;u`7(SfWzr>deo235$R#bjG zcB>g^95XQ>Wal2$rw+1h3QIQ89AobKisqI6e=bfl-`bk-J;H+&Z801GJu5Ie<<+fq zn^`a6`QZl!Ftw8{^n-1+qVJyPFKv3oRMEVm^>^sJu?-(FumM{K(61axw8e9~@nz%>@vcJeOd6GlQrxH9IK_Q+`!W0=xA7;2b!|pzSVk{Rs{l9- ziV48&!w<^5yw%!?=;hkfvD*A7@J*MC=f2f-TX{T~kaktA@yyHs}hdK2$SHT!03i-+=2IXL^=bgz`>J=X1_ z*!b7rwuN^dz2XbGm?LS|2FZ|e?%iY`MZo91eKl#}&3^dE)`%4c8{PJddvva9*H5ys z)Gn_yD5Hv9Msqx@pTy*3pKg`kcvr=0_dnS;vJK7{ZRwnUE-OaJ>vQ8TjaK^ihkRdU zcXC{x0}U;olKNu+JUPaKm#( z=O-O=o-tP$*v1n_gnT52M!MJj*6|mXILKD*hRz5cpyIx%xVx1hi(~T|fKxqj-n{3* zzX^059`aA@S?)Ba+MIrTt_Y9I^0uAF_t$`sLyfbxAm_h@Z^#I0K#kH zh@*erKb+{Np-|-G@abNq@D*gA!=5dSH}9jl^Ev7B1AspY?5X@Sx;vw>_*-Blxz}1O zvq11R(fl$-jHCQ()4m^si^bZ{_oTMBcL%=>n(_~Y`mNrbABp^-zGszVlRR}+!TdT` zw0H*U)(vj{=#`Phl7=I$_Q(VN1Jb;T=W)4bX(j&vimt5fj@3(LIUNeA{{RYPA)~d| zBN$ggn@Qsxs%;KQExcIngpIb?Z-1JuOsyWhs@z=0Jc;4~NBdiHqaRw~j^!VkKNan! zwD^^)eW5(FGb?P*Oe)t8b7u^L?HIuCUFXKA{?GAeSVkp@WNv$84nI2KWmc3bqiq%X zCJ*=!^gd$}zj(!h($pYiUBr&3(yWLh4Z9zApcLKiiHzV1j@o}Wagn(PjCxl=$X-2o z9P#)Ht0;tST<%gi9@MQgj-z7iImh5C!rR9#9r$C6iU7_ND_y{?@{IBI#w*>t4Y4QJ z<3Yf;TzVEQkL6woG-4}=S$PWVKQW5;Ujp2QzVQvP8&NH?nCf4pdD(};cHwtD$KdVk ztKc6J`E9mn^#pVy(89mW=Dj=N;4PruG`%HvB!74KLjM53zV&#w!aMc2@LsKJZyqE| z$qC5&$q?#&c7SnSo$%{Zx|=|Fp@`w+mwC@jF$g`4e64-Yc9Qo_o4`(=+Io$eede3x zKbsop^i|)l$c{FKZ=30g;k*jPH9bY*A2f5FzT>5J`c=Y5txVGKy^b;Yir{;jo3^DH z?~CM>EQ( z9s#(PPYS~oN!1AqLW&X}xfHo1vKT7%6#1aUh zxsFu<+o$`aSJ9fpQOBn|hzIV>iU;G2*UtVRkIa?E(0)<*pXpuLUD1tm%e4K_!0d1c z$lLX)Apl2#*A=E=B>_|bWd1doAb80@2g}p)uUm7?9$zCHyY{O0=3@&gu?SF{{X0|b zh76eGjB!@yXynr_0}r~Dq5_Y@>4dJT(g?qIaf9FG0~Pdsm8sZWXc`K<*a7#soc*JAKnH4l~o-vitKd{4vS4}#z`bbryjs!xC_?Bl+H#l&G=R{_Z+r7 zmB5DNj<_WKMOL_1ov{x94o9U~y$Ua#R~tHFqj9^Y6+q`6!o4N2!py0nG1|X&uUYU8 z7s{Cb00a_#ul^O~Q%IsV1LoQ*)qWl#IgNLGt!*N&{q@aNO@SW9jk`y)Dli&lBR#mS zi@Qd-)!Yxe99bTKZR=e8lO%dAn-jZi$^iH2nsw#X5TD;@*RIwX10PmY~m%_UA;)?D=3@4gz}FY#rCZ+?W1A=Yz%RMUVAOP z4{L87(f!<5&N`AS&^%W=#ia&OyKx({!4<=ZvVa~(Vfa_4OW-)Fd`G!>C(4V%(Zd3b zs<B(65&W^L z@U?`#BRIzAA0u5vMa1pplpuv2g?oOJuU(rGx2(>a6vpg%1JGBP%Wo9df>-5R04HqM zs6C`#*^m^CKum7QuRj*Kc`lOwq8ACzJ-@*zcO?0FLdRX-4PRP%ow^8P8qbo2R&s%~2Fc#BtD{ zO89jw64zI`oF~rHN=`fPZV0ckHCs4f(k7M#Vnh<>{s1%mYvbr+mOG&&hZ!IYo`a@; zTJ|spla1KCgUER9Wn4zBf)Ax`n~PcCNn&j7;41XRbDG5a?B#|QF6Jf}Us}rWMdkRk zme%Uo{{VKaw6|LH4il=>_<{BULBQa9S1sY45$q+nx<4##qn~{GR+3(7m$xr&Rbq)o z57brl)5MOknTS)#QO8OEhT>B-&duOPxHU#wrTNi8C~z}cCdw2$AMX*I)gQAgbEJEK zLiwdHgd@53tdrjAo*A)ANate>xFd|^+o1R2vmu{V()_2mN46tweqXv5uhZqPYWQfv zKL=@1%Z=vU9e5m${{T)nt3D_2^|q@In2+VR@pJxjUnM1J$sbKi;YABi5sgaDD4;x& zg}LfQN>nVaIbudh&wAp1!gPDfI9GC(l?YsR9jm#W#BazWaL-PjmHHnB{{RJ_4aI-O zh|S>gDpcV~s^zkCM@(YA-5(-}at9ui^ik#KAhU6gK~SV;mjL3WR4ARY!xRu$ia{DS z@8RfvxUM_LYq!90DpLn~`PUi`JI|%<|D!{smmv&)`Vv z!+#ncr_FDto0(#Gjudmq;MbpcvIe!DRFi*{QMJ@GpFCGfX|Z!TrsBvz{*mODqZV~X)R-w?$iSZvjSVT0*h z?E1aVy3k2Dk-p6eLW+Lq2)>oj>GmXfK zd2p9UcKD*`Q=S|6e+q|F@ehi;O*}Vx{q5|@9(kaBSnbEl8e|BrFHgR3%p&oce0@4 z{ZJjNE)7WNZtIPkN8e#scRoFtryC}BQT@?X%m=J$dRB*~=`X8lH$*g1ow4L_z;XCj zg?K;W96m7BE-WELhwMy46UI~?4O8((w|T8;azPAoF7C1u+i%^)c^|_KI!j$cQZomS zkCghH`uo;=_Btukk1Otdt6}4|(Jv$NBu$^jSmS74Kso#?=>Gr$d|>dj*YXK2;fdym z5Yo02DaJYFde`T)+F6x6(hdh-Q|L1QB|+N0UY+op!LxXWRJ)cob>dpABO%Xx7Bnp zsp2`@yR3m_R0HN9W2oo>?O!XAq+DxXX13EOb7mF@p52IK3!dY*C-JUJ;rEB{yhSzj zz1N4eZ7@eO1ltRk$|36Sv11>XHS*OZXLITPtqWNF4Aga9Kl>(GC0(();{lcN_2dfp z*73Y0ajVGwTlr;)1Z8p$@eC7=m4oBI2>7zf&dWvc{5Mj?dRgbrLPU$e`3Fu*yh4qPwM*8lcV~gf4X585N;Aio#Q?}8s@9fuhyKwPF zxCUYrf;2Oe+thxdApm3Gg<8cvM!T}2tVbY zoo)oD^s7$9I9&F-iR456ps2=pZ|Pa`PkE_N&i?>sQS4d5u6?tgYHn$Zk)1qV8N7v^*7joA z>mdvY_5-C_)BgbBEwt1iig&ay2FWdxCy_fx3t6(3_s>R|vD}c!hAw>J^$0I)2slT;W zNWnJj6Zl+x(mxtp<|jLK@gq>vZsXJS&jjlc6Zan7Qgkcpf!p4#*?d*--Obq2Uf$}` z;#FY;Ce@YQ$2bI%G6!nztvo@d7`&^N1)~{_26+H`4mx+QCzHe1ek1sbz9koe($)kE z6dgifV>rO%{uI>1mOYNv{{H~OI;NKPnzoU9<}&SPcq3#XfCP0I&rfQ<@FL0`1H#v~ zS0$i^JNZSta*@O(iCkyfis%NVqG>vF*v+=%aoSjs^8Q>`5p$~8UE4^OGI)GpHL z5oEaYqu9_h@ICqCj^6mLj22_;>PBW*jJ4~p;C#?vjyq+MSTh0leJZ-nxBz^o(!0g* zhlwuBf1&wtgMy%f)Uo&)>M&B~CyzgL5DBl-De(>o{j_}C@~Yh4>NsHPY1PzR_+o2t zSITX@mDA=wMaF9ieFsv7z*Ln`bzCqY9)$7Sd)J{1(+?$eByvv!RxZ{n@4y4njp#wi z#%oe70{-e%vA0%`sN4i&dFR*yPv9#O^2boMkfDO%it(|bb#?l#-YZCBDNAN%@U<4` zohDB=gxWEM`q3M^yPwbTq_(uWE?z{$YP+&js{lQ_Rm8QvD6X){3{#v!@c>Xu^8H^o!vMK)c&;PSc7#Wo`Ja^hH3HGTr)Dinez2JFu$!vl0vM*a*~`D zJTKvzJ+wQAu&LNdP%8qUgY@E>pyL?N@~e!{Dl1OHAl(BTR1fwb%HCif?;I^2+8x8# zRO~c=oKj|-S|Zz4VaUKM(38eEs9q*S!sB*(oD6@Sl}d5$M0BgNFjD_{!dVlq)tmvJ3o`6sUo>|EAK=l~yP6x3j zrXZcU>cXMN%fT5PMF2Y|BmD76oDls-@}`0F05}yRs(>)vdr$*+KI|Tp{*>Gur=U3J zG;`DWPy(E?f`?~4{XHmTh>o9?DL7x0a5(4Iko5$C#Q-Q@-YY31%v=HPDT=&n2!a(EJF)!e4Z$aqoQ!{-)hY7StF~}+&}0rO1@@q} zhY)G3PV6skX+b3X-4~@8B+xQea=;9n4ujH|=PR|o@1-!a1X_&NgN`sFgyCvHt5a^0$22;j77iaz{YX)sS2pe z-~e%)&;&W><~jOM4<5kNju)Pun5jArc-lDPfFR@V4xW^t^T<5(;-32e+@p+V@Td+% zYDVCC{RIF36DdNc3b_>^#xgs0sUl#xjGUgookogt^W=p2Shc zIOmQyryZ@dJ{41-q%u1=cH5u2HuS{+85>E?4srNUqhK2VOmwFr7FG&Am z{nLd!axujKJUK@H0A%&Y=|~Ig0lD=*%AFq1otuOmDZC8lspxx9BmdC*f5D#{J{nut zwx979NNhDpoOx#Gh>}cyc2?S{_^_{k(U;+mi_$xP59)R^xf}eeYlx+oj>H9KVm}Jv zd{g^4{2=j?<6iLmH%y}lJl8?=>TBk0fA%)`J*QtZI%K+@jW7Da6_xC<0NLYV91LTw ze+v9&S zlF&TA>LGFKAMv-oNv90^9Sxu2Pxc-jUuk{E-LLSW?a=ubj(e&qsTe&!in+;t8EQ)* zmf0VW0WyGxk3{QVHfgW>T6l8BZ0$ZHMXgC0^V-(KYYe3s{AWVQe_*O0Q?G4%b~f=+t_-n(PPxrB62^8WyUVEA&MUSG)fSMUb5Ap+e(f!BLr zXVVzS%BD$Vguc~Lo~~Jd>F7_jZ%>P{y?-MqaK$&ZzEA!E z+s)z4e#>$jW;?J0vapY)cwnR+Dw^mTnzFUZl#e<6-f~Cc1_gQV{58Lh1eYeqz>rO8 z6Dljkeqf`(${NN}46qejQCAbbUvI{F>Cv3-D^ke2f#Nr zQ@Z75p5Z2eM`FS?2k-{4^)HCNKJhqn9n2Qd2Kf@sFDX=Zz-;4>YUqy^H~dKb#x(L4 zyoPE%AHCQ9BY1A^4bWS~B0@}`FC?7*080B=tW<#+0J8Cs#eQt+J|^+38l0EQs81Z0 zQZCszz-};lZSPTDe$yWi6fY@I@G}jLzyjWo~+C`Z!UNrx+<( z$LVO%V4SME6+d0St~jjgtq<(;1rEY29y|VLwSHb({?NY~G_6@~U&NO)+if{XB8>Iy zK28N~OZ!WFTAYdR{6Pe^t-*>r6oysl$C$rPzomH#E2>m!Rpws$vHBojY`PR8O1^t;kV;xj+rNpqX0LD4ziZt!BN5+e$YMY@ zO*48gHBT-quTD zC<;bZRL8LY0OQnuXV>gy2~>N@A4SdK>9(kzWHJ8$5BI7IuL#Yn2$Aj&mkG&Hz{k_p zzHadU0PT(N`t-Q*+r_1#e7|ajC-U3SjoBkUoEqD2+VkO^#O0H;tja%Zkis!hLUj3@t*?)L`MO-oL zz;f8_ThR9!niHofM$X5kPhqItl*&pXasfMeKEQqz&uZ*#?CyoEd!>pOlt!lz z(HG5wCYm= zL>-wv>tr97Ja@0svRvhI@=W+#%K+Q%^+aF%HZwpUHX+oQiEmIF29 zJ}=c{xFjp&MS+F+a!yAabjMN9*4UiI%S7}zmKw`bo|{s(Y0Q@FB$N%OpH9D}a+>C& zZK_I$ z6LrMO6!Ft{@~kV%kg90%>wPp@*cG@!=vxhw^Kt21i(D;}PZT{|vLYzU;P&MPe5$98KMLt=VYaZiI)se#$jBLE>C62qfz^CZX{pT+ zMDkS%h?f~1F?_g3V*Q%2%P5{! z+C&zOm{pZ}DQu9W^*s7k9ohkIA&EhCW4Pz$BaXH7E$)$~Nb75MKF@9tvp*P<1L@P! zye9Q5;=eJ#-?~>|531*ndiL#PSodyum<1W<*bW7K3$8Yq zZ4wJRxQxrwU<5a8@!R~0`1x)CxGV#r77LKudXBsbzPiS!-{>++BfuC0QpfsYvBcor zN6eW~c0Q)FwwCtIwG$@&zjOcrJa(?H!%uUhXmVY$iKn_aSXlha?~kQ;{{VyhMJ|;P zj_WhUAp4l;Pi)oO@#5B2n@H&H6p}PawSoSBm06R=H!)0&qN_zBzXzs5)-JPX znog;5vAe2V6Daw41E3XwYjU6blx}3=dv)iI^_@b(8O(?81(ibl zpw-O+=Kk^S5y$#Jm(=r;MRK|d!G4y~Or$HZ-5BYddRM61SuLEbH0Jq!_QW9Kyvngk zS`5R}v`dRew`+@Lf8r#Mk#X(c>r!0!N5mc>)e`4LjA1!dRx6&I2H*qjnz5*Ov-=A7 z$-bQKRpB-UQPB0zIR3TY{4e;e;XN}}`%bBO4V-drc}$>!0`=N{;3u#r=~&7#w#Kxr z)aG@)Q^Yq~d_Ec0*qK&E-iMu{xY_i0;?-X0Gc;Ana=^9&>Z3M>eFbu&^zF`+E;c)wh^QEQt-aP>?y} zch}mzi^IMa)BHfu+)82l3=CC-V-f>V>e^kWhA-!2wey7hDhwTq*qT)<*p*D#@V<$2 zZKg{&k1|~ii-yiI#~$^fbirkR1n~hJvSKy_^~W8mC_F^*=^AyWn`ZH0h-sgu)9veA zW!9yu-sVY+irRLXZ!J(O05OVUYC4{W{{Rxw8IhSvfB~%-{vK)?i#64~&{k5rNK@XW zxbU_1op%~)GP4d8WpD`|m7g*J+C&g7AVF^)$S-?p1?WZr8@8tfdE#{Bi` zT%N7}01}NC?e^UHgsSb}ji()J&U|I!pX}`#(l$kVi;d5pGv>xI(zT_B_L4I?&lGs) zP1Nt2%FYa}vV{)ccX;&2TJo)TUDP!z=xm;4jm%_!z&*3lxIwF3y9pN|hIl;yA4;b^ z#oflBmwrnF#@v4w=U&w;B8VL(jid;*iD!@I@|Uk+jySJJu+;wmvF$catt69U1-Szi zPs5rnWv2$3_5RNgRao=#t8VLB5qvoC_N8k6D}h!^f3kn7M$5Am`@*=-iJleLbzcp{ zKodt~;oI4JVzj;x++Ex0H=2I4DTdxMs*J~=$K4e?sucP9f$5(P^!sfVDD9_(8aa`b z!;Qf1uMqglrd#-X#Be==3wW;6IA6Nh?O#Z<=!mh69_Yx%Kb0I~X*Kh&#Y3!XdX1fx z%w*Zyj0sBMWc9(R!c8iQ=4X~!3ypJBgGSPJqf57Qo{BryvTB!_W|tH?Y;r7<#fapY zc{{7lH06%K?bC;rBO83h>yNE%XjXb@dGB>+UnmchXXk8mHQid$YQS{*E|vDHvZ2dh z?%kigp4GEp^7wxK@Z2`reyALLg^yuewu?N)%+_I1BVqy*^K2F0K`a{FiE2!59AnIN zBPWhAT-6N{Gi|i{`J0(;jj;x?XZ3u$C*tWp3_@mo_G7sj^oxzS@q&-xcr(`l@>vA6pi z@H6sC48{{Sx5Z(P^4PvAC*+IW{o zhHnYzFwZxY6C|$a-2;KpeQTWYO{`b)TFDvn8VhLQC^`;0kzI$3t-ReU!SE6vFdKpo z0db6H>sWf66E>$Tu`VL{equJM`FnpV)T2uLc{*$=fZz~?2evU=9wrv?!=+eCHmnf& zqdf_e{3?VHE&R)GDmL`XD)jpPRjK3XWwg{Zi)j;R`x-wy< z+|MVz21RY^SCL6PArv8JT%SNs2C}SGf3&7ceTQshu=LJ3rs@{$DcvK1gPnt~9V?zp z=ttMyDU#k#g!+6uF!OCe$ENJp&AQyXb)Pkpd&K7ibiwUkPHXx$eh}Fkbz^XoTK@0- zfVn2VXPP-%T$|1eo>S#P9245PX*~@QR_fwiS6f3c^5e4Qv&YRwr{~W)w(x;hgV&1E zduSzDg5~Jt$?RwAyUA|WsTeB9>b-5N#VI{+xB+3jvRT> z-tPH^KJ#|3m*Pi;-*uk}CID|z+*i8UT#@jVZQ@{?ZW1;lkKQYBT=lvYBa?*vlTnGJ z`PNv57ofl%m0mmPR%y#R#~Wm*^&XYR-rQ>U9wdg_V+ifOV*dccjB+cfHkW#s6Tu3E zgka~TODNUTZ4yQEB#;+X;d}F4eur-~_VQc9{{SBf*^Ac$sIM}&7cpJS6lCsI0ncId zuS3wFx;|a_W{M(lpQUFYIv)pkd3Eh-)jUfvFg3#lMc`paL*E9yqgB$pA*Njyw6u!J zVT8*XL^hqn)C`_$&2$|a$Xnmu>33`-+zwpu3G27Gu7ktABJll-O=GL6y)2we!*?UM zsIDfCnsU(5n@!fWlzn>WTiV*i5+qSM0p$(dcKT9Vc=2@0=&kGobNz|1*!e>oa5LW( zpW_W~_UA{9bbDb6gSB2RaHpm-TyBwPV*(}3=I6MK{Mk5DpHbeGi;F!d%O%Cet>P_S z?%hT72XGJa#+{?jpsq{97k3g1dpmMpX+JuA%dqqd=~-5mwzn6y*6nQ9kVh*?FBy-H zi;C@S&Zhd?-)Q<-v$b>)d1rt>+6&sDqeDYf@sET2DW^|8$D40)KKNs40b?_-_i@7R zu1i4iABlDNPMxG_ZEP+Sd6N|%A|K&n-!-G-O&3ws<+Zjl#>GdOw4f@bdJ&Gbso`y3 zRMIrYmPpW@F-Q&)9TrFr%ktK*y9 zb5*!aKHVmk=|p=R3<5jmvb<05`@~Xsa@y-nxXr|pC}@KyMD_-$FfvyDC)Es^;a6h6 zFarVe>IGbz#v&b6A<(pCFhid(v}dl|4Va|S{ugUj7OSgX-I;FFl7WYoqd4emx6!RN zZwhHzmbrB3AzXahM+MIVnxGoG#8>vw+-pC$mNU6|!2CU_{{U>$brC&{jAlR-JF=(C z{{ZW(>w8G`9XefGR56Bd%p#A1tNg1!!rF#|rCQ!zPb(|#8*SA~nOE3Q1LyH%dR?Rm zX{1MR>~;=>k;k?<_N={A#hxkEwCQc4lxge>!+fr-$KF45jxmh&sWp#-wx?OR8h)d9r)bUrj@%9JBw%B66$+z1wJ*Zo6zX`I z!(I&zrz2qu!zyAc@+kle73ZD@HRxKu#EEPYTWM}>;D*q7WDu+yZyXVlyn9tQCGe1Z z=i)yG=)N7YmK{G)Xv<(l<_sU3*S2fJqwuc3Wp*D-x{2LgRyJ?FC_Q%e&3z%SYZ@oS zJ0qj%F_>;-kzPs2$&g3aVC!BnuXsnr9v^AEMHQXYw!nz3?k4$S&rBlq-CZy|y8i$f zTH?cBvDEF_^7<$HC@jjL@W-Izit4n_9bRcOTHEU}$hOx5JJ7T49>8NiL0(tk*S?p; zZ*OvgW$OIWZf5@gzH8rXd{5zBBf<;eyL1|ct2C_J=jC80XaR6PyOKHLsz_9%cXs+e zfvvQAYs)A|zqlH5sW0gQhIrLiduO90*k?A&;@<`AdiHbeDjj}r9rae7tIxh=& z;n_S#q21ZTJTI6Ya!M}WyYecqJoM>`>NL-Un%9eUJB@S3*RsQQ@RI_=BFlm~ZJ_c2 z9OHw^&zGi|EaN~xSkGX3A8Pa+BU#n#;}=j}NhEg&R_a657d(%~ zysulau+ThDbD%{u*LR2xWFK^K(APpWi9g{Jdu={5m*(wsMnsbq>bc#5#Od z*9Bl%qEa@ajC|g?HP~o-bv+teyZF43cu;K!z1sKDv_vy3m+u{-H|$J74+82mLBuW6y^-U`u#kyzWt zZsmqQEP0Fl_8=1d*q+#|Ein93@L7sof5O-D>1+Ghr%4ebNK*sl3t z@y@*-iKa_!WClj}I}j-J=lSNouF}2{{7Jsj4cz+0jn$3heo99qk0SYa=m7u%IpI%k zwdG>54QS6sl{4gxPgwB(0ElnrYc;vIhV8dy&}Z9)$Xf89h`J;WHtBGE)>YneNn_V> z3ty)ihr zQ(k}Za?{3MB=I$u_HNgUekAfTPQ*Me#RUAk*Gb@?2HAL?X`14Dh%9W7M9?AG<~hor zpB~lfLQ!_JII6?lv8Cdew7qd`t#nEJ$Aaii;Z#YqA^suLZ6>3yUFiO0*P8^$h+h`z zwj;(d^#Z-a!TMH(;hVc{A57EX`z)spvwY4$>Pwz#FB<$3EvZkgX$n8Gq#k9(q>ihG z!N|$reihLftJ$2~nho$5h<~&+n@MfhXKvhdQ}6Vu+PHaW(w3t{$2F?yif4znJ zR}%Ua=Y_OEJ-o3%0*$uF`H+G)FCR+bY`i;X<84;TR=m23Yry_a!G)ER?;@X3Rx{ST zL$Cd|2=uQHnF_u<$rK%=9>>rH_sfig!4DD?NuJxz^Zy*j{Fy(c&5_S-$`vLbBmi8OwSafnAjv^bCAFt ztJfIFuO#u-pYeL*Mf-n>bqi|^DP%6zw#|v2Fue&F;a3A@M_T3n7i#_*pTycWxo9O= z;<<#6Grq?8i)Z@d=~!YCblNqboFB_FNt_Uy`$GzAf<2k08^u z4-@KYBe^RuOQv-F+vA}u2yAiGb6=&O5F_yq_C3{<^4#3%voJ4hXDRaI!BECrw=8ka z0QzxWQKftX@b8GUYi($0sRWbA%#w}EC=n8;rWApWL0ajfXk4`A_L;XXrQ>~XL51M) zt^S*A@E3b=aMBhhjhpn6+&q;_r-Xzp`!oLiXR;7f$faa0yAv3>9LaNHLBu z03NmOUO)I*{{RS;zlS_YXR6$+8pg8*iVLdYCv_~cZS>j+$9@G%<3EJHBlt_=foXZK zT-;dRBD_~`4%CuI`>F>jGx!1PRIHuii;L`dKZX1?@jpquL*k8JPm0lT8wdlgJkR1* zlK>j@kBXWXjl2utGpxs`wcVBC7^IVF4Q`pjHaZ>0ry1j=aXQ4m5Uy^L_G>6Soi<@O z%K&6#?!e%1GB5!Z+h6NmJMrV&&!}D5oe5E9n#L7nXh9j(NYs4$+tR^p zRN`P zbE?BLKKNhB^20aqC@MZ)=NwmU9)Y0!g5&LajFM0Hk@w_?hBJ^)LD2N9$hq?b`hJIc zw{mJ4aJ{;UKQW7PeBb{7U3wS5eLGM;X&PPariF2FBPyBX@^KpW4an!W6}{nAi~bgJ z_$lp{`Y93aVs}%y)faa_7$0CqHPn1$@E(!jJrX@r!_OVfz1_?Z%K-UAFDC9|Zg(jl z4l&o#x-W8B=>Gr=d~@Pe@vft-#U;Jkcy7u|d70!pW^PLTz%i8#^Yu6Y_OF%y0O2oP zb6M3UeQelEb8{^6!m)XtQ!^4mzwr83E3SBl;>CuLQrN*^r7z7qT6x(qk2%DcUT`zV zZ%Q#ElMp#w3x0w#_G9dyZO&Ne7WsX)t!iH$JLr% zkKi8==#yK$)LM+NF@#E8m^mC0ojCO4iugO?$Af3nHQ6J+h#N)9+mKGe2TUHFEA9&` zjSIons@Fap)9x;z0yeykVz^9ltBWlMNQZT@%P#zw+Z%Rw{VH!4cy=ud`!nJXh7f;X72l}9WAi+w ze%ziA>#nXQ5TlDX$MwAox{?;r~R2cRia$!_c|wtE+P99ZFY_E zjrkZDY=+!FhP_^wJd=;{hOzL|#eWZMHOu%dQEtX?gUXk3HZdPe;DS0;oeuuO1FGV;!$MavuPdG{uG{#N#eWdw)FHW@EnQ)_5eFn?MBSK6}{=ZpyDAO{2vYme~Ot7R3`wsJDdf?YG&^TDrF;5na+ z$vj>!(fny2+?0srP&mf}pP~L$?;aMnn^gNX)~hLvrCj-H!0rHYI{FIok00CKc$31- zZDgzF4=~5{KzJX_eJXEvKv_Ucj^2Rx`c@THplGIb7upQdBU-f1(a1BoIGZF;yg{klM=zHia;vpU{+~=&=f~{JJ*s>~4|h59 z9@2SYUsfxOEq%eO={mAriLB;7W?&0O-+c#Dk6QSA=l$d4eJ)-6BBFh&EoRzVmmxm% zj174Q?Hj5Y?K~}I5m!IjQom5YDktvpea{u?_xcvUFvK#p*>R2B5IT-H-eA2nyW3Op78)sn&RbIGHn;x9jmY=IgEE~_a zV#J(--2E%g6U29@sS{~e3_%$3j#rQ8SFOBBb0~Py(q${uy8eQ?xd7;r>RYxZ?gfiI z4mrTAyXhv3@3ns{C?gobH0RZlb@LQBkgnaNWAv&wT8gc)ns;B5DpNd+R&ql$ zt>=er?{6(*mwtCJU*>D9O&7zBE8IhDR$Kx5zm>7|t3L;zHyRue+zdxP;t`kkd99xq zTH5$t?PQYXKPKSvVjGNp#8jE{nP1u(g}Fg(b2Ld91rfer1~GwDZ#0YF7U&lmMAFQb zw~VGz>&h6tWhJf2Clhg+>|@ifCDJ91 zWL1HbJ3BWEkw6*07WL_TUE(`Ctv=R7vKGn|h0YkA#2vh3ecnAQ%wFDDjAl`^6ONs6 z{nN)v`p?1IzlZcs4qMvY%#+JHv`ZMk=ze34qa1boD>q8g{40GO%-V~_UCV8bL<6pI zh3mxwPRhrJ=-2mAui0(_?PI%^=19#C0drHH+e33EJ5#SGF*@wsEks z@N@L8J57%I%TQ~3be=eY0h>R?^r}opq-x#@zk9^hpaotw1p>E!rFQyt<@~YvcQ9=+ z;d$gSu769o)>dfVc{#??&EN2=x4NFCWUlJGeb7MXHJpiL+UByhLu;v-kKRCPosWwm zo*yPVUn&0XKiRHP?ImXOCU)fSKDE(kf(tL+N&~E%oQ`Tn_B&g9sn!53&@jNpeQKq~ zvwNl|nAYtyuOLsCu&rBtLK~~3wuUW;7ohGbVY-T4N!ojM5vR(acf|%0HQ+^-A$UpN z;BF1~Qlz=Dx4kk!B6*h501A)d{3}@M8h_bL1Z>_pTz%0`iS)FI&zLfpA-VxU&CGIf zX))V=>MK}0f_Cll)Gpp~G1|Tu_=n*M;PHN^HLd)Rp}Z_D-uX4~zr-CcS#J^QI*bwzDoGiG4C9^^1#1}{czB!M5AeI)>BX*fi<@YG0dm{K zY~G8-dPafcUlsg6w7Ss^)K|8!vpgPp{{Z8}*Uh>Ij4$J3ZKx@Tq1ZBR1|RC5kYDT9 z6>gLcc`FW&<6nbyN0_~p+DC3k+>wSS9;2KO&bm7fiGL1m65itSU$VnCe6unTGw8)t zfc&cl=F39S?CqpBsU5w`g_~#rcHo>4Jvvn_M#JIWzxI1ORf1$q&9`ng{{ZMUoRWz= zr$he$3CD%}L9V8YqifcQX~XW0LJ|Ii;~z?+@dL)%Cxl`*Z#gM%g;NmTU)%tA`qzrx z_#49-9n|sfjaE_!c$IR##DQ5pCDQb^(qxX_?m4!BkTLTQLJcZyb`Dd}JUQ`S{u8}v zY&3b~lF119nFd(@0Czm+zkVy*bsZYY_e)znLHvpE&mVHQuavwEtN4E6!rW<>_STIA z{#*HEM#}lyjlD-swe^gaD}UiR{6nWHo_iP_)d|Pl2N?R|w31537P0Xc#m|W&!Pmz@ zzP*y>W3keq1D{HMmZNyRx+LwpC zTYFYfVl96HvZmQJPD?=y5Cdb-aactR}}>q*@Ji3G(GJbmTCIp{g|uOHCI}O3)UqVA*4}5XyU9XFNIo5KCxPwXD~SQvz!2LwT#h^74%Gde zuXVAJ>0T_+ydgh@;#(1JpV{$dMr?V`$EMyoSIk;wo@c*nH%+16o}YB|+gHEgHj!@1 z-3;VoYkvo|YFTT#Y`TSu4T_BWUP0Asphuy}`#N4~ULKO-#`MKJV7XM3pk*VYZBj`e z-5CbF%T)Le;;#!?+iHSzczZHBlro1*~qJ>-o9zoydz-RwbL!IUD6gI4^BE@SA8nH@i^s7 z^KSuo?092UyouF-o==&{Bm_Q!y=vd$PK{-$E~Ts9Fk-B`6^=07K3{6YvhYkgrmY34 z#|&h+$=C_fpcdy)EvpE(2`?OKi{!M<+@6`@ zpW+V+_?%czV3IZDOqmf-JM3U(ft2&b|xHJ>SDEG8r7b%wq$8u&&nW9vgWy+qpu^ zHwweBJfF(E%D)-cO!CRKi-=%0k-DjJra%yJ?Ob1qJYf!>;ft+q+GzK}rW6eu4b6^J zV;DS+dRJvPhVNS8z>+eXK~@?0fa1J6;@+qIk>RJXn$@S0@xIS*u?q#?)ZlvXYUsst zYH3^HvMT&2_=tR3B!>P(U5&Ov&GR;T9CjRHy}ssq86-=4RYs8T03hbRJNSR_-Kp^QogS$mmt@gQ4ik(Mo-jvmrFU|!ha%d? zS#hNaWryyDiT-dsD^662l&~1+Fa~N(U4%EXGpCa=m4n7Pz!gs7>1~mC+)q$A;+dJ| z9w6`zk9V$FYSS;4ux>vn!j|okUQO|D!qe*(Fxy){8Tq6|#@|d=)LY|{+^epCyWI0$ zALFa#)8>NOX#{9kk(1Q>S6wN{<*f*w1>w&LU1?HD37SBpWMidtDq1EHjBs#$Yqb-^ z*5-9yqm8x6po}v=%1AjR*P#gCqmbye|PKs-@`^i@&eJguR5L;V^ zhywiuLlH)VAUq=CpK6@2jc|jS4F=n2mh)a4tBgB2C5GG&rbSI9t&OabylSYq`>Fs@ z^c7$^9XeHei)g1HjOKw@tztolFeTavI?Oht$!Y%O$-L-fg^#1^|z<>t}yBt!J z6bZFP3t%oQLJaY5kT}P&^{Te^Tdr9j7-RCD)ich<=NaK~&uX&;%e~J1oM+_#Pz8yQ zTf_hv3VVB3=uhlvaKG@a^#db@l6`LDkEBum0QLU>D*X4?Wq%`dOaWy8@!uT&Rra6k zg{pm*z*jM`+UHb~LI+)?R~Y;&$j*O&dRcGA&#A9&qK{IZ*Z>t=sKg{(lYr1=5Uiz4+287%qs$WisKFX0b_JW1h=T1C57gY8Hh z#CiF81IJ8ew}eXE-A zyzyRL&v26~&u_LOM|C5L?IPP7AD`zXa=x62OU2uj%iR!zFBq@AnZ}Y9@#$Ca#@3^oHlk02vu>sx1si?fgh9>mY>=G026#> z0*$s(&KM4(a}kf$y?5XQAMq;jTgS;4Q4$YERZ^n7vq^^IQ~1f_@fn#KZbWlbaXxuwcj_3B!xh0X(N>5`kXoC&Ryb1!E1tS_-or1-;ZGJmdv znzwVMT{Y~ohyCj=7<#Yp*POQ-KRCWP$0XksbxAAb?HD+mJKP++aKoqWW3{ak#%KdBBJP9E; zy6a;N8Y>U zYQOf?OB(Gy58cW3ZGCqTt1LJjfk4@=2jJYunkK&_}Xwj z@6xv~q}ahvOz;I}CL4BeaC!Exr-sLlW!a;?scOW0sU}C^UjG1W{$TRgpaA`IUM&*2 zx{u5GPH~^Ddab-}kw(Dfml!^{u3F1dp|R%r&>!%d#mCQVG2)2#VODl# z_9ZgBdlC9qifbo-j%;nh9GFWSa(+yK(0k^+XW{&Ja`=D5R`Cxi<)>Lkp*Y6ed*>9T z@ESz+&xW_xC*gE@bYT!%O(=8UX~{qM@x^x^4#l|eRkTmW$CJ5$AS(zu+sE@Y}j-lBoXxk7=bGdo65vg3Df#&NkxUa6OM&;}ba@XKLy5!p((g zTnzO!^R}{odhz!ozd?%k-xS9r7P7~Y^3KO6wrjz4b@Em28=RZ~d)IasbYooMZ<(#r zC6ompH{o2xtp0pvSr~F_R_fpFa5P~2xnjn$Jc#YpV^NQniuUR3d8OniIUHh{bo*>) zJ(&on+b7HOk7})U@%@V72LvuL^s4Fx_roDRy6k< zwmcT`m+fXYTsX!^tjoMda-bi)I#rv=8a-siw{T;*y{fhAr`rxV>C>>US!{XFas#)? zm4Atry$it8rM!uU-~hTnMZeq2oxMTG1NjQ`sj$Nea8G*m?*Zx7tSlvAlHzTnp~&bz zN{XKd;&*y%=sYt7)AGVlI2pk{wbhC3q}45E&Rt;uj)Q@UT{1+E!`h9Nv=IQ({Mj6h zjgBfAtt@e4aO8HO%oR5ARAjAZ*%YavYcQ`7LTSl~XJ@FWIL3)`m!gpq9g7@GPo!_yVjZ{Uf9 zY;ACiKiw7c&%=aC?twcCAN{!k=aLTh#S9z z^8WxB#_8d^&%DJ`a<`!sxV^Gzt^phXp!-+1YZ0~Qho_700+`2q*P3atLv3dJ zI&?T6bPDw;d?yu8i1y!xGmDQ7O}w4SKbOZ~gDYN{KGz29w=x_B^gLIO{35-^iK+$w z2=5fH(W4yKtTx?*jum;&*Bn7u{RN~Maa%8z18j?`!*|hB*x$aeJhBL;s_a6 z%j$EQ=+fD>5+vRGvD&z*#^+@zBy~Or1=?uI<7(~Cpy~QkteQme4cU|Af#f(cafQdA ztNt36+6_kJrogepx!oW^!0Y)}D=&+@Fa4!;bN1Dj2Y%?j=F!G0jng}0IEkkvyn4m^ zS_E8C4^iUExW?ZEn@ON~B|USFo>xp|M3XNi!DmWOVk~oDZda^{eVyd@7bJ zaRF?(Nb;i@@9U1$`KPG(sWdMhUgXvh#&$aSJc8I2A5raInmA6%Mu~Q- z5QUBxjO6|m7U)E%8HdTq_V)cN%e-@}>apmFa|*S*zF-?v;NXMbijUyz`jzFy%v#mP z_+bKO4sv+s9RC2aF^axH9+Q1^ETu9}6!EmXe595(3-b);al-!qz(KB~L+}rbHN7Fc zLt|v}S^1_VZU@c|+-*NG!9~pQuJttPPgot4IM$jWhkNAg9ab6Rnd}7pX ztRT=lHEIgmmx|gr+iPy$)Q?PetYs58PgC#z01NmoOMee(Q%5(J(AdG0Va7s^{{T_x zR%g?$tV+po_X*=80lh2YKLdPQ@t=vjXKUe|Q&hOIf_auLP0_YR1R!9uaj|-J9c$?= zFI(}xt*u_!>-YBeI&HHtv}r*hYwje*wXR6mz;F_nD}J5 zKyk(ZsijQInR4Ba9@UBB9TQxJ2(CWX7ZV29-!~nrsc$^lh9ygopySrQ*Mz6ZPD!67 z#QyZ+W|Usks|NG(zCC@amb>B&6T|bzZFh2_R$TBpdw!M9-F!*#&4fEtw6eD=um;a> z;m`6MeJkutGUpvjklKr z{{R$;g*f9pGZWLLV_f+9_TE_h>5>H)7-HdYJ;PQq%;>JCO3P|9-Bekx&oABn^>`1) zeOlX9I!=?PPP;ASd1V;|i(_hzJqJIJwPx#{K1+uXB(9K@s|j!XdIS z%gH(Cp2wQl@mZiEVFnC7qyM%hzb*KU%=H zk}Wc3ySb38hJNHGy;EtI-*X z&0$q+4E10=v0Uc2;oBQ&zS(~%mD?w1=s!Ly6CQBQw0lrsWDMYa1svhZb-&uOYgvw9 z@+jjt#!YEh>E|9yVNsvu!R#u|lVKgMmJEu#+ z?5!?!58q23(U#*ExAxg1xHXp#7e-tDfnG8tU|0IcPdd-MG(+w65;59!(m zo8k>Z8#ttGvE5y+sMWb$~$}3ZPuTrww-fww-c}n zjH_+NeRJNmlH$f_7V6sKJBUan9wy#|eOJ_Uq`tJ8Zw>0f2@^H3`#8WmSpD1&TGGck z=VL&N>|5u$oFe}KvJGh1=oT};T_usq;|>lppK5o2HLD*L_*d)`N(P~9!W)Gn3|tPN zao3UTewEeQ=x=PlXSCr3Qb8$L#s2_=COeyUNv;bIydr3U=hW6TUkRU5NfyFeIpzzM zj^f`SpF!zf%Cb3HXQB8ucb0MHq`Oll1H>3&MJao^5Ub%%bS;oJZ&N_(nF!00;Vukg{a7WJ^XWkO&yub53(Hwj^50OJ0^F>d zSTP?_#cL(MiyWV@_=f30&KlrN^vXv<%qEK&g@b&{fT8=>9VJsipkC+Xmt(1~v_<{Ps)*KdpMd zjI@hsZK4RQe}9#10E!Q6V-?W&e$i6NEJQ0KGjY9FjDI0oe2490*yJPe=fx+{yuCQ- z=2VebwC9o(^uYuZ`D3xJX8Yn-#dc37T`Np8z@>pq?R@phsoH-IeXH9i(KP+CO7O%y zp`3&R`By2ZcuL;>^49VzWH14?TzrIdr_JOiDt(L{3*&Ez?{sIfmqmgdQXQ<11294d z3^uVWKbN&z@el18bD-&x8{Z4GmkOVKZVC+h{Gq=r;<}AD;qQlSE)Jldb}^Emp1rx_ zrE^~pyeZ*LTTNrA#KAI=ovnhao~zfKRnwNb>?JC9O2?XbL-vpHKC^oI%6K&`;v_2= z?&M-X-~~H5Z}<&*Hn00h*jULeuA$+bMFfH=Ap+rBViozfmPKH4e}zcLaa_)e;JqhA zzJ|w5oz~yW634#|!#yx?Ju4?(@I9`#s;f_^&mWc#nXy4Q=m+DE(zbGk*+ohep6KReyhA;Wq-Yi6C;~3ss@uycUA|Z(Hh!3| zob3D;uiTj~t-L>HsKFbAbZd{Z?DRY-E%e25emeMD<1I!e9v!f@(kB6C`K6LUfyo*7 z$EH4&KGI#u`n4{{(w+(N=Yy=LmPj=Vb1`56l0gx`{uBh@;=Ojy#~LoQlUpswSJ{|J zaKW?Palz@*z7X)Pi+yRK0k7#nZW(^`WC8{;oB_sbUr_MYn-7<9W^S$Baq}Y;C5?0} zT#RLbq|dJP9|Krid77QY@1Es8=>Q@0$8W;2^i4_Z7EL*2h2nv75y;&TAKYHK{Oja3 z@ZI&s;B{?vHs=a%r1`zLZMYq{t8(~S)-982dX4Ox)j(+&$bC7jo?|z;pZ0WnpI7SI zcAKqex3+f9B9>ce0-oD;-KFWi9u)U8Gk>2g5xO63wX19{wXob-*5&z^|A5 zPcOzl58cOhH3Yd?lrWOyIt2ra74<&6RqZpzzZ9<_j?V7>*6qRb3PlnCo|}mqi2neA zeigdR@f-6J@G#k<=^KxQ@kF_^*33%0h{w&3sSE)8s2MJVVl&9&6x@E5Awmz$*RJZ1 zp4b3&panQ8dHT`;>Njg!U=-+i=AH7AGt>-Y=}%LK z^BbUE1u%O0&;x{E#s+!d3{{^b`D%)OMLd?{lThsojmH`MIj9f%vmAtl2R^g`pcx`< zq<~Z&KiR4U)VAf|H*VOV7=YavCyaAQ*x^9nbj1KXa=TZdJ?Yyx_o(y7Ps7rz4$Qx; z07O@u5y9s^lz~7yhb%@3sY>U+$^|L{4^F?3paox*eW^3Y^Y)@olz@NzRK@q82V>?| z^zBQ5%MZ$xNAl@WV3G9CA4&i*j(X(cj-2)Orwjv%KnPrVngErF3<$>1m>*o`ntB`z zw`xp*NLv&D^1zkHpcLW(0fT#DqEdU(t}s-d{U`wsA1LZ-LB`Yv^u*p1+(&n8TF=sk&VXy4mwZ-rO-q+ugrKqN@ET- zu*OH^DBiq|dFV%_Fq6AEGypSjp?>JbDpIHkE1Y8rP_(Fb>u1JCjMgGK6(GKYKkW03DBCN?h*Xj`Yqt9^RhR z?a_x=`P_L?Ko4Vv1$kc8AE-ThVwWSo&!1bmt&7G^2>}k<3 zTp2P{9jd)DKmAmS*#`iw+;tcjpaefI0N{_5RPv4gk-vr}>T* z^2CSic*OuhUj&H89#540DcJ<$wm({PA;E5?dM!1V1El~lRP%xIpVJiLr)F{adsLBS z7jWm-@uk7&#{;+HKnB(r4avrHLIczuKcy!{$nB15SLBsO$4-CQpaEI3yQA6xJ$(mC zS(QrsxESZ~6q(PyX@EFz4mS3nNB`0Nnb-jhoMS(wcs9GJ+uv*VK3tzX94ccu$9_e7 zGHUuMjhyOMn+p{TW=){uft>nR2_JyGHx{Elr*o*mzH(X9&y1(cdK{71abJSS{WlEx zZ_KP>>5ww$Q|brzZH#TN7kTuv{p@h=fxeuLJ@LykD0xNdgp~>iY-1kNcq0@NXG2* z&%JZ^J`Yrk-O08DNXwVw2o!zhQ)+e)>p^i&9+E{jl zU$|VVo^#6a+O0-X*%4lR^q(R36Ivj1CNaT3m3(>oM|l4L$Nmkln@`f>cr-0|$7v3s zZyw-`tNXyrszgl0@wkFQF#`*Vvj^?F@JCa%x)&!?w7FYaBRbRxb4y_5E1%e++nIP1C#| z4b`Q@S1;y)a8+9@{>K;?73Q8TlE+rmQ$w-4gcwUU2hMUq;QC^`_euEvo)*&WtuO8& zxB%Da{l{{T5*)Dh}G8uaO5-`YJFi&nLd zK+$#I6Aftidr2|*)4!1C8;DSG#yDE{%~wyIZyE@vkhBpe+FCP&-;Qtw1$c+-yWzcC zR@QZ25Z$4Z%Mn1A5@U%uW+$hn1%1@s71Ja}dAz?f48)@Y*XVytRyA!ISjU>@#Tu*J zL#(~5m#)xdL*#*xj+|EKhx{G=v#r~@WvxQ*JQevz(z@^XSLvvDnp?Z6huHU%w~!nT zz?%A_!Fs2FJU3}^X?CN`a1tesFvW5|zIs+prHX9$>*8*QXW`8aRgj6UoFq)68+P-L zVUNnbd4hdH<7K6_vr9B%d$RPv`Y&qwL-vjFW{IfkdUlpyZa$UI_$bht{80e0X8A4Mi$%c3Rbx;FD(#_6iurfJek<_}rj381>66Q88r)2Lv~7Se;{=ad_Z?s2zNd2!_Eh#pGF>EqnMQCA zBkAd1KX{HyzYkenNQFszgL8=b{_~O!IIdVeg(oXE&O253uLhBG{g0~ZFFUY4V!W(Z zAKlN^xi5*j=fSUtUK)buK_)GB)m2_eBi-f^!Hu)QTJ!sV4(J;H0QRP-dQaP~l1U+t zjAuLyo`Ss#M)+yrty{rKsdyy}lIX+jchKPFiv9B0>bb8{l-wnAf_$<~GvfaM9{ewZ zNws}W-u4;EkS56b#7_lIE5@}=AV+m>lSZKk!Zt?!Kaj7s@1MiAZ*@MeXXJ~Nl3>~S z6{O%`cg1`&<2^zlc*YoC8(9M%;tF_S^{-Bpo6zy=(@E%i9;x8H7SF+{d5y+G7?1!Q zE<0Dsy8e!I+4mFXtc*%ylk<9dS78T@{6QtB_F=jI07X^8$Nki=EY|!*75(A0fy~IC zCjS7sNgaiI7)Z)moE7b2){$`V{@}`1OqRlT2ECg}xSsyX0TT%bZLSHyDo3Zac}ANB zovxZBRQ>#F+l!t7^sP?~>L|AY@>`hgL`UXa}4~ipINi8ghd_7hE+N4dF(5t_*Mo-ic#dU z9X$_u)-zuxIyJzPDGk7#>WjWxdsU+7tPD|o>fvCx1zSBdFwWn#~5 z4aVtae=sTS?N8UW8*5Ouiii6450w5bUS4RHb~+LHCYmuhexD%# z0rVB&mJx@!Pd(HQPtDM<91m~uE8o9qjW$gO;vBja)X#9Xb}^;C;l z&cOqmGvI(Q04z^z04wV9=r5}&qnfqhE>@1RSTd@aK_NeTAIwuNBTIQ$$cZ$gqh|x~ z72kL_!v6qjF~g}SaKq({{o(aBui{?~Y1(he00}r=IQd88Q7lw>xdJ9{hYY%mww7@0 zjjkj+U60)$V-@MXBZpn^yTG$uI*^LMso-(ayeh|6hfez=7>hg(8{|KG=C7l*-9u0D z-kO?@oiK_;h#-ufj+||;D;ZDT<~A>Qay#D<=~L>r5|y3|l^DTv`d1}kqAi}Gb#P?n zL%9iDVE#Up*nBPVG}?Zn7L{~~{-~ppIQctPhsHfeL7qEHoeCiYsUs!8-N(#2;8&iU zxr;m};*?g9XvuV{KGN=i9eR7$hVS#`Q6!tj31T`ArFzebEF`|OXO>SkDA{(7!1op9 zl3KmAj4hJ|cV!!*j>f)|1^fncNcYc%@x`m?o>VHk?bnmL=025ve>YFKc-BT!BXkGl z_pc@Jwa%qtRW#tr@*Ew#{VSxJ!&bSLN$*Uh5M+h@YlgMCiZc9PZKx9oxZ5afjr*{0 zI@cKlEpP&<3mj+aeXH8#@V(97g@3lm*kO|)BpDvnlcebI1|miCBxT$XF4f8EewA>p zp#h|Ho)WXPxUjc|34FQ!?1D})QYIc$%$gd;x9YJr#uHW8XTg7YP%?b^(ZOh7|CkL)QE1FI{O_Dle zf8tF+!=!O4#7@9~Wc_Jl)|%f?g3{wk^CSZ<*!fEzdfu>t%S*Ah6S?ylG49RpSn_N0 zTC}mai0sdnxaaetI)%w1)3hsDq||3nF63{K4^*pmFQuj18KV-b)@xz#WTb_9cg8Et!asPo_tEmWQ=eQIm2VM zcYY%gU3h|11(Y!$a$#6`7#w1&cz;buG_s?hUUPmiuHkVfx<)_D7oWqqr;2F|VTfS3H)ZMwRBTbvk{T2L?9I8N24LX-u{dzS3IZalCgTuyr)F z5L;VCCr0O2TRT-m-h*Nx`3nzkTH5eD7Fy=DBsUvE3}BmZV3@y?~Ld0s=g4` zQrHV$v*2w9be#O)WRYDbitnM;{68h-qZ45?1NJ zVm+(UjecI26^=i_+6JJo%X_dDOLb6xyxx^Rh9rwgyuOxQk#Pu*c&fMl0bjKu_s zh*#!bfQs;ua(u;zLy0qzPf{zDfD&ICl_$aVo;=jPC?IV z$MHUmKBc9Ls0PrW5!0r73hh4Jsbdw8*(8Smhg^_8mDws=CW<6zmFA0~AYgtKg0IS~ z2=Ff#ExpdOZ6vNG#iStM<1C}N_N=1OAr~e+@s0pLcR%4?h2za4=T;G4Xm+Y6NWo$h z{QkWw$~85+u(yayCf8{KvSa#JxrVJ56J+`wpN#xfZgp)Q(k(sYZ?Z=c#>4Ka^dR@e zbABfAHO=+>R#p*(TQ(8yKyf1hkPysDxrMdSjc*hO6fDA>1Cph@nLivq+@aXO;v|qf?amn-8qYH2_qxstmUz? zKBRva>3$mU^cvOL3+qy`*?Aqe#JKP4T#TO+eh}(Q=IZ(_%yR+qD1gYm-*+7<-^ANZ zKGVW>I(51T-dR@QD)J5&=KQPXOKn2ZNeW92HXXSfkLlLAsl!7=eHwg8`#)i?+Ui6? zqx}=?(gspJaHM_=LH4X^^uL2XAiPNJwQ^c~ZI5YD7-7fWQ~Q0Q&hUqJ2_97c z0JpSy3iO%27-}~E01lJDfnpc!d@g*)A1bd-3Vq|>10&wJtxHn5(|=~q57=9o16}H- zZOBToPoE=#I&oeHQ8WInM7&jsL4=IYO9R$4-Q)2U0&R8 zwU8{B%CPTVn)cFK_;AGeQYS#Zn5Wz&^f&i5cAvQN=54{pBOR+|<42zE#wqTu5f7Py zvGO?YQ6n<1fh^W}uOz&i%Zl1IAZLxorYfh2Y^^l*id$D;Zc}&|$jx>dZ-?O0;}>!_ z?pRi{`LksRJ~U^ocMy73c71wwffUZZ)qmJZ>r&=Zfnf)ik8l z?JkyBt`<1+Iide(L|HGkm|)ooQ0`fbWTdA-{p4)w&XoEn2P z+Kt03Ng>(*{t?H^=qq~h^$VzEY4sB7qhcm72enjdT|NsL8hebgDvg7T=e1WT6Y08+ zg{EH1_6tc`5TQeb<&AU_Yr3@m0O&S0JSWb|&9@op^sawH)$S$&($dj#lLw6Vv zuTsw1HB2Nifbtm5R0{K5A6>q@FJjx5jm-JTz#Ry#_e9V%_%W($SMj_~7_30#^!Y^q zMGc+mX*TiMTz#RXD-jKWx3CAC3bTLUi{A^%bz3{wMxzsML|>Z(j+o=MR`G9&?W|(o z;ma1?0T^YBGOG+@c1Ah+S6Qc}<=VmGZxm`tEYrujZ?pjvKrafYM}J@_1I+cG7uv0~ zcOE63u5P3zHzjZpalpu}9}DTaCZLIOu=&%@RKoMWnf7tmh4igY5NW;#)-PSP38S|} zaG^q%-RuD3pQFcMt#smFv8-yM6;J^HcjMZ$Mhstx9vAUmo2^=FG3z#oq+dB-vya`s z$h-pB+q;Ypm~aoJeCw}nFv#++?^5NySs&(`ZF)`anA+EiF7#bfSG>5=;Dv75V&nkJ z#{eCRg}~uQQ;xOI&G5g#_d31HTWhkau-yfMtddI_;9*o{R0`0_MQsB6Ub)jQwY>=v z$Xi6H#j(HT?T>L&__xQpr;7AQ?5}mHBU@PcjC`eJ$6R~XEv}t&;olKjX^$k5*hu0@ zm4_P#T-KMw>u(0#-9>qzjk(&ABzOaVZ_=uf#ZlhJ38%-l>dq@>b&^Y(%L%+Cv zKM@PZ-uN4Fj`g|EPF$zb);hMIrfG9&w{I-hTiIfb7zpybe8{!?guwuUGJP>#HuKKb$5m-Ek^IGd2hzIjGsB7E%P1}MS>}CG>@!Etl&FAY zo!`TO*V2`ag;wTvv#Z-_`qV7eTF&Gno&rdQ^7t>Yf+yJYb_db;<+rwHhovL`6G`fS#a;YiGuFe;7{n9#dU6u1{5P0hQOz^aE z+1m?^sd9s82s$c()2(q;*F<`BW1;pR!k>hH3~hCrFSBVetf5OR(vs&Z$m4Oi4bc)@htIO+;UquE3ha` zkHfF!?TXUzKB@5!R=9?565ma#OJM$VXwZNhw_aDAao;$vov%txTC>-ptc#jQ#J`QU zFbj_ny{4gJr^$*Z-3+L4fXd6-yhFtw8@y#{;>aYw(=6FzKW71f^2t3LC#kNg>*E5Q zL+n#oDY!$4Bk6SM(BGupu> zB$UOR4eSpJzLke#aXph=USBjjrIp_ij03pmIKUkG@mYQyo?Tl_`vjOtBSIsU4%Q3K z0l+;f{{Y1whBw{-(KJ0y%UJtGoZJ4>D-8btwx=73z+5k0dt;?{QPX3JwUNpH0K!+P z+-oYaVj$a)cjG?2t3Snm81)+s0!`i0Azpw#yP_0917WQVj8i9uU_~<;_5qVNSgCgUQ@d5{{U*JO9+QviotAu)8dXh zfir#8^d95dvh;Y!uzQU@)?1RyN7^3>yFR0*(zf)AOZjh?SGk>1=tig%<%=Nupo(PJ z?{4%f%~ly(#8;;5%8R`eh|_Os=X8Ao!TLX!7Lx=j-gwy_H#+6MW9Vy1w9gUvpHvaO z)K+$D%#9Kd0u#ch9c#PzQ{Zn0UHn3`(DkVL`JfC(m075fLJNto=2b_)#V!J!CwOCT1KUQk-ePOmhUuvUCT5w zag_|Gji&>ViuUW@*{9*PdO zal99>n`E9>!^Bh^9N>&#^V5p>X{jk(`nqybiSZ|gyan+i#@ai0yTD#9`v#vjQS|vF zGQ*h8F}GpQ7(X#12a50f0c-IOL0hc@SMfL5H9K39yD&|$&N1_3k@ziiz6bbe@ekon zg9nChVz9Zg^Q7A}Y{Zl}z+x~st12vhH2~06q^!Vh5=>HT5@&KWLu_d`M zUB0<2X%@(>_aaCEUoEVG>PZ-Ra$Y8LOLcxzY|a9jeHHj^9` zQS%Ze3dJ{L88{ug@pHqU2fR-H5|HYe%+pP5S=FJGFatkzB*N~%`e5;2Me2S(&?VAz zZ97o6is72oW0@i#?R5Luzyvn$Uf8dlq_+5zp&9SAm~SGmy||g7w%()&i7cU^4f5bu zQk>gespGNwS2?bDYWu_5YhT&RBiXqq zqE0b^(MRzU^c}0vJ_lTBy640TJtxQTCXS}wR*K+&i*qWB2>HT;`TZ-e{irT9FNbzI zPMM^;U0Uk563FnY$0)b*6cu2>RDqWvlrbC*Pi}sHf0D*`A^3OuK72j#_k}DxL$6J9 zr`+Ft$?Wbv&J~C7GK?#o!18`?O7H#{d=c=2YMPCgh&B83ErkA55lb*+o)Qnt;c(-p zC~`CT4~Oi0P2xMvGy5A#)vi**81h|;2*VP`3OQV!PTmiHZ0k=CTWQ*@h32KHU0g*q z!ikZjBXIu!3a3L`+?yX&_}k!SiLLxX@eY-u_`CZeSfhmL-b90fMoLGY);&-ho@9w^d6 zOQ>4gB(~U;nN>k6k_I!3dsmM5bM{zWSHn7Ihw#T?bfNzFJcW3f!dyvdEzmpT0-%)Tqv?%}z)-y0>K$c$>B23ej? zMh_b{WaF)TPw^kZiQzp%`y)lTH^*U?X8ZCe>9w))uBCOK6yWRw2N*Ms=y#@Bki{noEN!al2a6m25;OA&VH-ztDNHa9WuNj}x+ z;IwC(i}+7e@fU^c^?wH1Yf$NdH{0#PCNK!-1^@@zzH0EF!#@>jTJ^SvqE6Af%66BL zlm*?KkiXp(_2+{8TJ!uok4Lsz&F!$`lxm5j+geB@^3XQU ziZRXyu&kN1Pe<4M59PUN?%I2JqsB^bGuMIWE8*`Q_@~4=J=>i=L-sd+D$-@*G6x&K z9y-_Q=Af|vBt;1m$A$-$KU(=q;?{+4;?D)kr)j=b!dYKKzDSi+#8t8tMmmzX+NU+q zN!jRQQD|~n7lap6@WqYol21pj8qV4)PY_x(fFxq^pl@}@rF;H|YIN-bWaoF; z;Q5dYV++>4YSpeH(`g1JA3 z5}yrt_gwIE$kAG|3+r_t1W_jAwK33Uy#g;A>GLLqYh@Xj4bsTUoP6W%xosT~=$q+(bT6 z#ye)Y*&EJ`B>S5$z(c^tYUGS8bn=(AOHCQ=2G$5jP|Cdl6;4ZocE-(jG)k(Yj9^xE z(?w~1qUAP?oG(%BRwUJ~k|Nq&p?MGnCm$~qNPI{c%BUrsCZf(x6O zV8QA!&N}3OO85-=Ru)E$o;OCrYwRxwC{B;Rw;oaxW6EB#EepDFcTRrQu_!Vyc zHPdx@rQc_6)BKtHpD5sS#Xo2EjSsARF8&?VY=pX8A7*45LLk87(xcV9BcSShT|C}< zsl($SR}-UnC&V5fy#D||yYnq^l~O@9+*sIa@I0@3i3*W|7oa}1jf~GB)V><{(?eN* zur=dzZvOx~iK9@!j>8=Vb2fTU#97kh-ZV<_#rvhtn4tQcbQSbgp{QKltD&`#-y2Is zfHU}xmFL#Fwf32PJTcqLBrcg~f!cWW&PFPcNt`S;-YwLuBec{NrI~)=8Q8x{yB)S6 zw$inScp;7RJAhmdps!P3605_MvrrUc3V!WoTnJ@5{>?7pHxfoMOrxJq0oYt!!>f2! z?fkKfth`_f-M8>NCZ#^5=9ZJnEIy*TpAA@A{{UwfMmtQMI%EF;txwj{=F$gyLxw~- z=Zt@aW(IZaTeRrmAiAK>$TRs@4R332B(hx(lrQifmALO(){U!bHq9uz@_euY;BC%* zs+^t|nqB4Z3uJN-as>cMr|OonT{oKFyH1DupjGA8Vi!i-LnXvzl*cObfO}RppW%5l z{aWQ>W|9?E+8dnatWV*+X5v#ei!4zhoyHj(1(X_xWM zE}b+tDGTg#8v~E7D6!2X%Vpw~@#V6S(DbN&%>$_oou`9>Dtm2KE148|dlwl5E^}6V z*cf4Tll?d zSnOgQJi^9l zw+_CTu88>i#MU~KTQ-#vx82_xFk%gTGPZWn+8FGijifv->~Z)S;O6ib+NS$#{M=*a zH~@YXUs{i2H+Fdzv#$7uTM)-{WYNIAKqm+5jw_bA)a~uA%ua?V;u-J9(-rj$ehz?I zrM!!Q(YL9~{V`0`z8C11q{Ah)RhJu%2j&lYn16IVsy`Q>!y324?MObK12hkETV%kMWDSrT+ZFl);ExjA>wXuw z)vk)$7~u{gS36r_zyWyReK{5Gx|f7BT}D*6)GcA1x;E(5g5tb(^GI8J`{SltkYSL8 zKrp*k)O5!cyr+8^*-K;KKN8++n*RWd$A@&pY|k{SBQIcB@x}lEbM&us)BX<~6-Ju_ zHN?eNd+r`sIOSB}ci;?HQ6Ix^46dvFyL{8y-#IR1h0JGhM+gRxrT3y6S%Bs=E(jb1vk?DYVuakU3ronY}t=mXM_Uew(w3xv;B=i~MiuCC_qn=3W zw66ujevBfFqc%3Qi}HoT@q>-P=cg6ZTl`1Wt>f~aOfo93&*erN z0ChZ9JEr_l`!|RNqAbAsM4nqeMn&zwtxQeN_*a&;mr_j}YHn^E?%bP(?lXbfyD0t; z=~sF_HAp_nkw(oF@hB2V6mr)s6Uyk1n z{8!=qLepEgg3|un6|jON`OgGlx&WPt>(2tQsOo)`2f^^)>vj?yJ50EgK^4S{69do7 zUZpOx;;#_ttz{+L?1%x|A>gu%a68u>qFSZZ%f)U`v&ixdyyq3_c2b=hNX^24(L`J5 zNY6^@Np>?hzXvX(rTB{8;^E0Lp_PW;x!V}8rtO>JRlT!nx<%U06!3?TNSn5&VS!&U zT5Iv$_^Z#0ki+Le(TVIwrG3Tl=f*a7-W|NtEl=5UQEbLV3MkcI^cGyx;Mn#Ys1&jU&rC=b27F=#kgR1&#im^0K`uXCDpKNbdFiz zEbTJ33PgRo*Mmpmj}O{hTHES#?U{}k?ETnL$3C1@Q(Vylqw!b8Tm65?vb?jBHAnM^ z5rsf~jd2jQ&DG;y&W03ooa5!ku&&TwX}Z>>6WOPm<&vD^$^-qO+P#2jR=U52h_H@0 zWPwOsfloi}dwN!ie1>O@ctgwn*aMc4NGjlPKQxa%(FQ}>DzK>&ZU zIq6=d;C%|}(_A-N&_uR|2KhMQhdJZvUYFv}4R|}ndQ&vk5Z;$u24xD|{{VISeKU_* zpJ{QreNUY)Z*;rOFx=Xr#DGT(YP@ngkZSebs<3IFVTI$4O{?bNhYRj&bHQH@A-dCU zEcNB`6=!y}7zOz0&u}XX#2*B#@5W`jyArFNj}*IOf5CdVnxZnw9@%v5(__1(!9#Q z#5(Dk*3(S}cJqW_dK$x?*56jsB98XmF$-oF$41Rl@g}`(Z)Rg~>GB-)8OZI5#FM5$9K`|ag!YG zJfV-{Ju89nZ^cbE&g#a~%-=L`mx%%MLFs}$D{B7q>+suZ65FU}Xu1!W1@-i<_@<6C z*|jZ39bZ(JQ$+ws-*kGK%fCdPBefFt=5JUM=CU1Yg;lQa7J-nYpZE@F(m&0W9mm0>F~G7BqVU$ z^V+$4+2ImQxg#7L^sdS>Ij0lI^u0#@*HE#s3$=^<{{FwpzOK?)uQce)W9E@}G4$vE z0IgptYSJ`*Bet460p<_FzN7H^%MP7w27W-hN%a}xx=wRqJAWrE+@C>Ln3&@Uj1x_d zXU~E6am`qnRAIBv81}5qxk|1~NLUP!#wwUuS^n`+*A;l}@|d^Qu>RRQ&+?E5Ojd-N zeoU@c2b0&eXWs3ObP~8Mdv+Cf60|IGK|L{8M@!Uhq*L2HYLwADy@;f2$Z$9Z*A=~K zAXwT(1CfEWW{A8pnJsZ4C_g;cUuUACTa|=iaol6_6%wkAVM(5Ss>si5Q3hL@`!Dum zv%j|Rjr_?U%Ov=Sj-v^;`q$0VX$kiL{pY9^`Z@bPcw*nfo(I!gP~usX$+fs2Gi0~m zF^c*8>ll?TTOP&(4Xb6P@Q$TzANHJ=CP@>V73R5JcK$cHgj}qff|UwJ6dL-t!57Wv z?L_0y{JpCwyg8;#cjr&AqaE91LC2+hv@tKS=~^eu{{Y(Ubzqjewxnc|Hh?Ooo`zH_ z49urIk-!4Jh4Bx9^a-q|XRwEIjG#~5n)BrFwS~MOTB%I+P}#+8_1J9CLJ90;YL?d0 z+FM8+S8oj7wbOWKQHncRe7RK>2HfuJOuF!@J-Wv74W3@?d)Gsy{4ZgrsTWE&jpS|Z zS^H%6B2nb{j|}*hkQ-y-3xZ{y+GvDsPu&^k9)i6G!@B;Tdvy+{ad8}Ku>pcW7{}{W z{v&)S*LCd+`xi&K0Lv<6`YI~>*AZv%Z(q^kj@wq4U2Xfa7T^leO(bZPTF~TvD&5|A z&tH2z6=ZlVAt99;E1z6D!(w$$u(JCgI6 z)yp^c6m1``YWl)0Le$K6@gndD>Cd%!R)u+{L1>nD_OV6eNTmX%#>xT%V0PNwJ!@rr zZ{S}y$e&iVwYYZj-4W+_zHJm<`9c2mReMNd5y0!ZS-Q#n-Mxi!4E);tr=wW@CqoomDrwP%{{U#` zKi0fI_#-}*^pEXZU~N2UqG}NgB>HoPZl5|!gZ#k!E9R#2yrh5OHToV^{_PXO#{U2i zuuy&CdUmK(r&GoaR!_X#o+{vrhH;JuO7ufE0%lTbU&pDh>$?~1LaT|LBX(kGU} zM^e3Uv5NlyO1*>)=3=t~oy@;HX)}D^!(PweL^A67&ARk!Opm|<2jiOYTeMSq48(oa z0D61>04nyshT=IjomCuy-`VAk2;h#N(zx-T0n>%}k5KqK9xQx8D{-}>C)t&7YtX(F z#5|2^T4^C-!VBKjdjqG90ePz=y>e2Z>TI9losdN(SHmMmMx(fEM15LM1@d%a@(#ayt8D81zUK`?jcY{{8 z2-}C2%ujrbSJ6KQ;(NU_T9jer!m#!cug&?2&Z_;{aoqIZg?c!;@D1!ckI6ij89t>! zuT$`}D{-X>rd_az!p5V%2U_#5hm9=$0@Y)+${A#CoNYz}`d6;_P}`@6e4OEu0EwR7 zmEl+Tk3v5Q&3Jm<;M65$2g?uN-miUb8we3TEKTG zJS}%&cScqI6Q9~z*<{;=eznL+{BcMCq3(ak=f(FRwKupEZL7j~^+mNJm5P#x1&txE)Qc$WO(E zd%%+(9@F7b_h!f9c8c*2hM@WJ9CeO#{4tvMduT&wHWO!oBDeB2%ZNKDo4U`L{jX)8 zlnBPo-G(d8d_{w8b>?;4#Ao~e07~^A5z7nshQyZOM89{~3iD49#;I$1WL)i(vifB7 z;<2Z=<+1a=yvEm15`ptb7x1jTgbU&6QiM;gnigCOB!1lK^L0R0c?UrzW;GI*-iRFiM++@AZm#yzXd#BO#{*osiI+g(PZYK`3c3h^yv zr8d&f5^#3LK7zfhm5M9480A1=oOiD?)nbLL1Yi-C8LoO}$$O`r&WZh*JW+h7%Y1!t zUPTNSV#TF{ZvL3BX}^oFH zD{^?l9y^230l*YWo!!n}W21deS?;6LY-4idkO9XF{HhQ5Otp(Rq|>eEjx=1W766b% zaB1L=99-MQ{h_Tc9PVhsZSwuQ8tCBob!`k{DP?I{xIZ@;_2Q{grX0+td8}JZ2imTr zW;_swcr@s&uMM7b$QD9-NC2*yEsgWRG#elU=uj{9oYvc;>a1 z@*_Hbc5vi z?QyzyB0f*>4t`qS4Eao}FLd)5(QYl}j_Z|WKO=PGrE~V0^j4xfJ9~KY9}kQUJ^q!q z0c)brDmL&k0UJsBde?_vd_4HAt9Y!P2FgTPpDVexra8+o;Bq+Py=b$9^nZwvM7lM% zlwA+U}EUVS9eIv&0wA*@<@G zei$R`TDk|oEfYub9`jn7^u*!Y%K|Q)fcd|jTalBOLoZspnS4BKqug^Q+^O11`f*jf zFQ@8yWbt2V5bn6fK`0xi*1m`y4zRb=X1|K@e7I9EAdPp7e+kJv{RT(1E`fRBJwDs* z8if9I6R{D*+22OGNe?Ow^Gc=uSa znrZFya%LM<1iUJ!>7IG%jw_73@vfANqSwldsK-3<_+u5FeepKJD8x|)GUEiG{$0Jg zn!fj-IRvlSt7 z?nwZjO6YC$#k^Q1frLt9JdVv>GOYTT!kUS%apM_MY(p85FgB}vxjwvCJ*jxNSi5l| zh~n*m^VJwEo_kBV%WY^_rt#D8tRD}?_qMYviRQ{2s*ac*wKqCZrZ06H!~4sJY;@Vi zDPp#kX*{r{+q)CZbe5W0N2hNN6dt0b(5z9fWZkz4I2q!Bo_!^y_3Y&$AtFysE27gN zF+rF4ocx>&)Y^`ld2ewrP8FNwBY|B7g^$_vq}UEKmtod`IeT3aPqsT_8LeOJse_z_ z>4A=dyZtK7rqlfB_H03%5y`Au%~wLPxnXyA3?yMnGpKFein+@lr7MAn6^n#OAYU+? z^V1c#rW@@xIT0euaez-s*TV?b;TQKL0ik{avH8?q%q8VP$HF`l8PA`qns`$uTzV zzF6lwd;T?}XW~m;rx-_ z_?A?%wT@sUxs&c~Cutl5)Sf<-@v)81pe<@rSx0_hV6jL57(CWoz7Ny9SpIIY093UF zV>#u)_8mG^yH6JUKJj#`sd#fxw!Dr=!b9XREKjLZ^L9OlO6;wpj@C7bS+kz)+LMik zc5#q+FT-%yn>$-JiaonaAo;&K=kGolcy8xPp2{_l$j5YU9IFghug`0zft8eu4E%>V z{3|^zY#u;ja=VkRar#v9q4Trz%i|7{@oT`J5cIzdcn`$a`aYj7z57%65#v7^_#;Wve1GC;wfSHkW32J4az^YigpjEOpx_<2)JDU1} z^7BiIAg?qjA?1H~IX}G6QF>GFAEGCpOikm0Eo(#9v_DKD#BF?;dv8K@Ic_GC1_6 zQ)W!wDEN!wOF6WgJr>_ez4G=Ogw#Cbh%ws00T?5XOx8?a5bwSk=p#qhydig}7u?A% zj?qkJnL$6i^W1D!Y;Kc3FCQVU@8S1`be4thZB5Mb$1{Lm(O6 zpnR4RWYaCV@fk=daG+O}|RtviO1F zTU|bFRXjbeM>3R+wrR4KB=$hNf~fxSz^>}^;r54Z;e!O0c2T$5R!=_GFpNue$=VJM zD@xAi#gl7OY4+>0O7f#I-7yV?#T)6eGTbdVuEJxI)~gJ zH6x(e>QLO=9O5w}QVb&-O;j#H=4H$3EEYLxNiv%`S&w;*Ss5+Ue5GX3mkL zFAdp$z4Wf5z;-$X)s%MfxsW7bGI68oz9Hw zVsk5k03-!nqpp7{rD`{-t;4Zn)v?h)9c$vBkKYo0GI$HddM&Sm_1mirGg8{I#m)cjwWALX`w1rk^yx8vJknF*adSzKhC!rmW71(RK zMwxMEo7sHKFjL=YCmfy!Zq0jLR;Pb$(Dci1>!dhM$4YFBz+g`t8c-x9=|Lv;<0m-46S-WJt$EjnE`()VIA z7~j(#)l)_A-S&-aY&Ch7~nxvRb_)drWR%4Bu@ z_Y6<)pG;RgHG9n(&F<`>JI=*Woq?_w#afm9%+Sq$6UnrKu^{D+JBkQ}u5{W>#fAJ3 z%s`a_;I=XORfw-NX%(&Z{D@9+JNCt5_+nj2tcqM(v=I(s7{S5on$Wtkx=Tfp)<2qA z2RQVgw`-Fa?HREWe7?NZsr4%uEeSqV#PKi-53W9#&1T%kJ+rQ#<>qUEHh*+_oc69a z$6h7V{vYUfz9IWE6Q{-IVb=i22g(LNylYBI^06)UIw$d0!wYGIcQ(;jxs*ogQ)(=y zgO>C?xUW=_OIfUAI!hz&QN3crC|;^~;F|btej<2F;^vH+j-Lw0tGX<=k;T#`=m2lx z2kBnp@Py5#X+p`%t;CWvpL^!VU~|ahrxnpsoryi4RnzQmuy4$7N7)Oq1dD#wjSYE<~(B+?CD{q+X-Q` z5yGA0QGvR=6UBErzJ-05WZM(B$%F>2R4b6}d_7@gve1@Dz3Al4e_I%w#F2q z*4#avvVqTTI(MqnT&gAWg+Fyrf8(N>tgJp>fa1Su!9ps8IafpT3|!x}cNZhAG^_Aa z1mtw|KjBW>$2A)%D$1nCk$}Uu)3+7aa*lOmc2aUhF;@d>oM-v_RE!jKOu~ll_nx7xSW!4iU7x6hL>vK1zrKo04dsVsxT?a18{f)r9i~940b&IJ*q>J zHjV-QQ~-&S!6PHEr|oGD(bI~Hf<9b!IUVXqo#Voe{{W=`O3us#WRH|!`_y1%c^r2Y z3ElUbtw>6!+~i;klj%SR89+SpItq9yN6E*nHU&ptl<+!Jih;o6+JGgGW=}Z4=N+m4 z0J}dvGTpo4t0^i^p~gqjl*qU;G7zhrFH`m6fC+d!_Wl}rDcBqI?@=_LF_DJQR0@z_ z^Yowry*m9mQpW!PCf3d)??WkG5qPC#3Vv1uAK{<~-4L>|#D^JNj+EX?)SPzhNyPw1 z^KrD`Qm@`%rzBB<)};E10071tsWhc`DfAqlYC=iCJY%Ii2?7!KcX9Qg2P>`yc*(^$ zHVII8sP>Jjx#)9E&JGw8+JF>9?A(3P-lab`%jw>uAot*O#XJoBqx|B46rzj~oa3I@ zKmM=qq}du|DJ7hY{RJ8ALTy}=*R=p2#8)}=q%4DI$FMaa%A8;Wj%mF}2d6}q4$RsZ`12vZ)y-^r0B}cz>l0^A125 z{*(bO=8=b){3H2PP8bcmfIU4aUD=~3xX;tIAbrW{o+tt^axi}{YOt=-5HDRqEJh>2!#IHIR1q4CmHj9iwt>_NL<0mbu73(}2jxi4Tlr7}Pf`aQ zQxq}fhA?|~6!#lW4+L;&Qat3A+CPSX8bK%6bOVY|ykm@0W&}DS^d7zHMNgN>U9PksRXJ5wK=HU|rX+Lvwz94=`N2T|=n1Z%Z@H+J?E*%Nw&^liiGPcF-p zf0;=6ew3Iw%XSz7fEt^K3(yXoxT#lzyW14iqcK_T=AZrC;@ho-!3@k2a0mL z?dSm~^rnVwqjv?fQEnaY(RX=whLTep7FYrQ1%&_YA z2&&lzNmU3Zp!v3(eF3k+{h9i=Iy`Sd@N8CEvwvmy(mQx;SM5>51<#WhUVYRM(RZI0h6lpyie zz0MDb{u1zq!>b{8eHJw9Yj_L1h=NZg03}H$JPz5c=SlsPa%K>9V53ia{ssr_AMqhP zAKo~l+z11K zjNo7Z0O? z`Av*S!Uv2ASoAnN55uq0w>(Lt>Kb+8_%p+iB59EYja+=$&jjbW$g9iXhOU&yJUyjpx^>OE zOj>B4<&N4v?^n5aqT@!=uc5coqLOKD`mpGy7#*ui;r{^a_pW%CP`B|CPbHi&$-B)d zyCh+RXgz&+!2GKHvR@G%#5^~z`1iwBlj!~e@XhqILho@a1V&cwNkfsxMatJNs(#U) zCD+;Kd#hbKOL&Y;Z);>yO~cnX0OzmE#dN+r_?7!Z{1nt<8hmMXT0v(G@=x~8a z{{VG|Zq?>q2l#`f&#qkRJ~+{BVLF7*a?&h$3p?bDdSvt*{v2nW&MsCrj8%??4Ljm4 zzouL2@%Vw(JCT(|QyWGH@SYFj{VUym5%?Qb)RN~>*R_AA2O%mRtNX(k^do^~qDqvA1FtFhAB~ux^#f_`3H~*REw( zyhQStg-FKUTd)GXvqSK=jR%D^`y0ztg3c&ajEuk*&rX!nTTUbN(T|O<4=k7)Z z)9>=vX`txyj9y3B#L(t^&Jgy8lH{fyE|wt^r=x_ftA4{+~c)!+J=?li`j;o zscV;Vrbc6o>`;FWzSMJ=Gaupqtobjz^1hOHcylETio7VJ1YbBx!{{vy!z&2A_(=q;Z&n3XNzQpLeN zvBi1bv+(D}dS;@wO=mrovh5N?&GX0gUrO}dG5H+mfc{@>eiiY@ zi7s#SjY3G8M3?MjEC_iDp>xf4;b6KLPEV+wDDY>7^e+!FRn5vmKykol#eBh|=%Mb~ z=!Jc(c4vU6*1a20_=T$K7ENt?XreY|L~+r*I@T-~>8TiOENwPQynRa!pPhQNB`9cl zb=~$dSiJeQd;|AV@<;InL3}!;#GV}-is_a`$wVHH$>v1Eg$OQbnRGOZj6I$CjhiU?NUNPzTSDzY< z7rBspE}C6~-PofEfGjt1G3{P?EO)ZNZY5VfN%@KC&3ii#kehiW+}H?+4*(x}<*w{r zHTwqA(YP-n^xNsrrCcjDJws#5?;1HGN8mDL!N>6qmFiv=)W)G5ye|&hhX{p;<*{C0 zcVi;VBeqw3$VS|DCyMni?74h37L}+I$YsDAKJWoaAD0#7 znmv`Li6J-p)6NpH5rcxv7oZi)c;3csN*B{n*PtyR=aJirl}a;wvNfkw(tOc8!{f)q z%`@W9#Eah+X%;VIXEbRPHtfNe1>An{03KV=am7*aSA@T`W{&G{i6A?rF1P`4{66)_ z&EZ`_-}mlOSV@#pahS(*jy-^{Ztz-PtWk|YLfgd}#k;2OGp}Gc1Xt45t4@^&)1$ID z=H)3lOzd<4rb~ABQLy_o3QDlLn`pN z>0VuTjb`HF;t2>2*it`$bj5j8ed?DS5y329=_W}RY9py(UaR5DSTyNiOJYoON@U}< zdsmypgkL>~AZ~ma8`ixBJEhYiwX(LI9%PgkaogIuaWT3m=)6Uzx^BDE^BmHAj={DP zN2V()z@8Dk@qV(_Gv4fSLiv|D*sRCXAYnixf!4j7P1n91Y5^@KbdvN$oHHo-@sq|o z9-NBhX4dR{IpUz2PnOV!Bw;^`7&#qr&#igVO)DcRf zMH8%!*kq9Me+r`u+uhyIZ3Mo41^9w3R_(moMJ6eZGq*i4T$Lv{opjVBj~wwH zlj5HZ>QLxDAQ`)cFcv6&V8XWa60fNXYvc;j#tZw7d;#_}uKBuw!u zERz2K6CS{hl~Z1iOVJYE`r6PP#O-1C{)07_JKc`fIBWj^3tLR^3sPc;sY}QfilX8WxamG{^_r9l(sR+*k0d z*Sx^Q@eS6eHRL*S{HFo8D8|(l#NN$yJf#{!cDBKSGHKRYj=wGS)!w2SNhA!c*!f2t z2c=+X@b0)iXe!8awY%4JV2*aprL-4MC9T8mRl=TW_f~&olr^&y34j~?DLnd`#1v4Uuwg; z((dJGrl00zL20CARR`|=b=yu5>}G7*_=(VYdVUHjfKk_PUr(iV zkZL+j#guoKQ#(r(pS)l?k<%W+si(tzR@&A(wg96-Kh>S-gU|!(TV4n74zYb4tE(dE z*0FAA+D=`u{2*2pDp3O>;%N0bgWH19{nb8$+*SP=;@?iZ-!tqXh#28V9ZhK^rOaB0 zhC-1?BP>H=@}oV+t#@8M_)~1Qur`l$(md&wLNGxisrIf3)q$cecn0p)E3~?fK*=ui zyQj*-0OQ)dYf8A%uQe66zl2;yyMltdhf3i75%_M)O1IVR@8wCO77Z8#;DghQ^z14v zdtKN3J!GHRi3`aqaO#A#Yn})_GsmTQm0jhb)fb_?d#CB`<4JToFi=2IomZlh)K(wF z+2_*Yk4(}?3J|*m91z~M&iFD-O6$ZAs$I__+{&fpW;~PcU0;jzyIHQIxw)ByvV4t! z#>{?IFhJ4amU_X{qikE5q>T##gXIV5+M&`$rKx|XMB4`Jlmj^b01Eaqrg#TVu=6Zu zlH%!(*9b+C^(>TC4)r9qHye zuJC(v+O>Q`qeF=0WVfgF3}}3r3&~{{a1JsDWFsq!j~! zU9X4q_^d4hvkx`K@s5J9X0p_s%m0Ar`6bT?A@6Gbi5xne+0 zMncz}J?sd#rM#iU5ky2Brbk@=07{bo0K@hc7SdkHZW;5xbL}8|b4xa-bspP$e0gMo z&f_1IUe&B;)byR(ywDw3qV&h5T^gh3yewjxYxvzSRE!49hZUI{nkgNrvAzZ$|5i)0auN-yl|Ij@?v{ z-3wx|^f+c3M!y*)S<@d>J*#NVbQ$MDH{l;O=G6=F3|vsBS!$g`;%)y#Y8pk5O zV*|h8T~~!}p!y4!7GaQa>0M8TZ}lYcHLNzH&0-mX zcK`~LE<~h%h`7M(n?TuEwb$||C% z#t0m7S@N4-LiF+8*jj&T-@-&?wlF7YIQFg0BT(?&#gT!a@}1W%%rY_QUU%ZZ5Klgq z4ftm}cwWJeAlC)q-Fsd0g}j?e79V_I5PMO`OOe%h%Sx8U?pUpiqDkL;TbF|w^!CMa z+Dy97_M$8i$diTG8F>T>?YvXs8_UDKIfKV(07#jKA;)3uTppRLYc}dG^@u* z=~{9bbDo>_-Bwu2UD`7F7%bS}55pDK>Gx3THm|8p>XAS~1>J*>p{@oW6EM+U3xXt; z>ArpK&PSzEw9!0KtIBM^TUai+Y<#0&>5Niz&WKF(y=CmJqZ4V$v#Y9}xdE$;znxvs zx}45-h`{Q9!nO42biWE(O<{2ylB&t&eB7_KXpa*3Kx~?8c|%6LL>G5H-jzIsrdP7J z)$A0AE!8E!l}>OGN2Orvn&zWDybmkJ4Dyll{{Rl(;x&5XP`&X!t>jyy+s7hu8|A_; zLG4+dJ<-!c&@|PI{iZ_12**$#)Y7p=_kuKS8hNE}5L_u#L!T+ccn#=BYN2-ql`ZF! zqO_MAB^b%`10eLQIs6N4r$K0LwT2SiGAxlIZ2@u7PjOx4rl+I$V_c6#(i3@GWg<9+ zNe$GsW@veR=ZPCuo^2u|mIz{eIRJr`{#6dMsf%cZwxw|+4=)KBZ=0V%-n$EL64*zq zU&m{v<|rpEGhhLae_GSHo4`IJxqWK(7~^0RN4dIf^c|=(JeK!Yw9$0fF5VK;NCQU; z1GqQ2=szm<-wymV*L-1PZ>@N{SBFc|WPxRCOKCRAjC{P{3?IjzmjbhO+ubf1;k!Ce zo)}{Z1mRby90QSqT|bEYN1|BUE|;PiZtkQ-S>7ZeQaJ!UvNAKk?fFm!Ka6Dfb)jjJ z+4z1rS5uS7wr4H5WQ7~%Z@>?wah^T#ExdZpnSbFcf3kV0us+|L%L)TOz@rQ=|F{61<>Gy#Bnl1BlyUcOZ@voum{vt);+hL+<_Hm{2fdrA9bt}i_ zE98F^Kp@p4v$%w$*D^HQdkv@gR@9CROnF*5o9zz5>%q}@gUcvm+!ddrhOaWWwim_= zRKS}6=NJSE^$SbKzR{)8*oiGw8G!WTf%qEoTj*}Id;48NHe?E+SyR;Y$@i_!J091j z+i99!ogvjMQezPEn~#+hha`&H@Gpw|FQVIDTi7udH*honI{n1&gXvy-4y~uQm3*?@ zv0I>^#Ch_-^{jgrW=QQ|hsZ63j^upJ89o01Dn^i2Hy=v9yw#1ip?Fd!CQmzl-jBWMZA+m= zWv6NJX|D2HUn7F#0WS2f^&3wV#l zo+Wz-ZVXKT-*YZ-ik|rFdSbilABR`6Y0#MM;Hyao)x>lj!jTsTWQV7kcNLO^gLtouU7EBt>S5XEQ_h!>K6WB^H9pCVGZbWj@9J8 zGS#%%bs3%S66V(U#%3um%_~LxP5lLU^*${RMh)2Kv|WG0ciMiTbv3MVPkAJNzY&2V zg+DNF;>BfH_?uktoz2jPYsQ8Mv>%W8CeiM+%k`!XwFEcrTp8Q9(&=t2&`oLTrNvqCQ3$e8W!h@ z=X_n_O;>l>b!*A5Y@k9Rf=0?l4;)o31H{)*Y3pfWqtAVH66|Jwl|Ta-t-TV@Q`O_S zlUCBicv7G++zB14x{=LL@!RbS`&Ugv49RY0b=kCV6;G#QiuEhokL)G5eagcV5^aHuB&N#o}B+~4yFJ%zLWsUm~7UcBDV_i{a zGe?>(oAD1=u!b!vYi%|eNRg#x-72W+F^0iBV0N!a(L5KTeUHx9fVsJ5P|oBw?Y+7G z01CBonr(!#c^5LXpz^^y00+~ra>ucq|2=vxeR~_s@ zE#zn(7zZFY^%X}!wDCGxLnza3z3PXE$9AWLGF%yBDt$OaA zs%hGOsV&^-(FFw|f0!oD{PeGl#A!3>Y3Usg7rE568yg$xwaa<5^tOqa{Mi2hbsnR%qWtkNI3ww>kD)cse%Aggv+)nZ-8aJeJ;Zx8ja~>R zXqgy98CQaerDJRkIq&&Xt*?GI=2ca>6I(Poq*5Zs_E^{NF#ZvzO zg_Yw?OHhNuz97;T&U-7^ZY7xKdGfb>i-Up=dV}~^sr+5|x32is!$Hz?-59mKzOI)y zN~(8+f-{faha7YFHVo0tBuU12*T7l^jU}F^sM*Oap>_v7yCioBV z*IMv%c&AU(ZZBP8^R6ZH8heSMBLwn(>h>F2to%#(%cfuWa!Y7*$&%m5@0ALeCLkdHY;kvKE;6pjAPq59jl+T(0m6BSC-oAGh0M|a3zx`;)v~PKs|ss(e)O&E}ipjX!3Upuj%M<~zu* z7{aqk;Z(GoVEnipJ5;t_75H{^xvg}+CR~lcETE7FV5`tq&=Gjs!J2o6y)-;$FhN53-KHFht;&3)zG{xZEh^sA$gr$WNpWv-LPB%fH@dGmDfrsnADYz zcf4IcP}ePVNa2Z+AKhCCqw~LbI(+qS#J>-1^y?%#{)KN9_V3;!TZVru{nk);AC-BO zUm1J@ZQ+DQ(V09%Rc=>MM)McVL6u@1fg4XiJ9_btt2`a?%J1S|!+R@@ZW}YG++Xc- zh!e@PhCP5UbwwbmhAiP!Wseoom9{wMd47Z7T`o9VNYZ}8rpr0m^28!$2k-+PwdG$E zJ{tIO<%$_%iVMh2-`r+cr(xBU{{R5>+h1yHUK+R5itoRSUlznNcaP9#183o1F?>My zaq$;RXF6>5*EX_C*MiZrdS~VY#}hfX-GzY%yJ;y;9RThA5TJQuKCK_qh& z+^rB8&&quVp~up`kh2cXS$IT>2V#U3W{Z^RD@>N8tI zt7;R)E>*)YkN~Fx8-d0viigF&5te1Nv31#ctGyCEyN+@R87f?VdmMJfeIer=D$e5h zMA$o6u1~jKJ61iGm#5iH_P7wUC$kxU4ciIJD%CB{{ZaG zLg}P8GRy$&pOpP815)t%TIur3ESpB~G3wrxhc&~L_n&|a*MAZ8huU3I*65)00xm1= zd#R)_in22!4z)SA1sTE0y|fG@dsQ@ zY8f?EcD#2aDuIoPD~hy_&d}~PGsLSG5#uMOE7qm%#Df<__#dEX+C=)D#pTSh-anYc zON1NGO|{f`UR^`s{f*2T6~tl|l*(dt`3Ni4yB`Hve{A?}4P#Vyk~U4Y>YcWpaw|hp z@Ws5V6zO#g5S7BQUQZn4R;Fh^Z}BI`vLsg%LvJEV+e1SuM~r`kcGrKjOr8#kA*ktB zT8P?w<+j>9vD5xqU>|O4d%zwS(sg#Zw3=v{VrIZ%6di**@r~H@#dsgYz?xT!uk`ui zNo`G{!xwNznpWh)-3Z~I_;F1@);J?wRRNn`-;ytGY#`U4b?k?ub#&eXm) z_*VYmlLSLxGNA#tal`t40=`+Bz?xmn-h=*(b9E-o%69iBr+x=&_MZ}bHHyZ~ z8uAv35WZ#tMJQH-5^24dy#*!}dmTBTuljsZQ6|)D#Sme5q zG-)iaurTV5Ixl>Ja4X}@OT*d)){l56jTLO-F93DI?osXd4wcb(AHrG&r=T=`N~+AN z>Z;f(!-95>Ijo(Lykm3hO)tcjcMzMY@eC!h8aB!d*4^#>jM{NAP9-yrhp?}f^u0@1 z@aB;=nQWp+fQeU8qxB+*h0or9Vv5%UK=E?Tn#j5F%y8-#T4eT(v&<>GJdsxI{C@;fEKHAY z4glP%oB=={#?#t7{#1aOV;o>)0qb5*<53Q!rM{13n-Xbu%*Zxp-xboq;>|KgS)#j% znUo*^?IfPtYmxDTS!scFE6JJ&)?j3F#A7|PL79)Kd^ppilG^gt++4J2h6{iP;G;F? z-YL@l!D%&`LiWMV@TI;&ewnYNJUQZxEzn)*w^r9XhbtVbCI`4eYn%WhLEOIaZN87L z-A8j7w}NFEEW{{3fCjXMU_Mb>J!4t2eLBKv;+6yjOiV`uupiy4mvQ_-(ey~>O$GbIIi1K@K%qgXc7tT7AQo2c|wzg^kc%R6KncS`uLaa7g8?RpqQvD@{UICtlqh<(@$My;`U!A>E(tJ(RqJ#hZX7{ z3)4)ru$NDPcEY$sY-c4w#(g-&a#s3H&V}Op_~qm6l6mTzzEIe~BkRRuHo6$S&l>oT z@h`>x2fonsEh|ljRJ+zBm3+CkDyG0T<&cklxvn=|_{-uw4WVssL$rbAT;e&JVY}ZT z5$#^<LopzC&&Ur?O5&_E z{Q^iuyiK;^CR{E-0DBB`Uioj}y%S&2f1B`ZD;{%}frBXEF)`dprIUmOl zhj)^wpHnv5z&|`icArCx*QQ%|ufrDh5nf(i2w|N!2`0iJU-y`SUkP~Y;p%AG{mGn@LwB|@g<~z^G6#9~Qu1fF1 zzB-Ff+x?>@*z-eqcrk;IaBI$dN2PpAipF@Mo6Lsom1K@N2myb)$*n1n&Ns%k@oSo{ zr+TPDTd-9ljmO*CzFYW;`j>}(&2TLNjnuP|&@bU%P+I6dGM?gSwfkqZwumnE=y!Jf zE6e;{VlF=42Coo~IL`;MUf8cs4?7&yQOf)=o-Iz+Lpk#0nOkrj3i^I^%W8fWwz0mr z^6g0f;FFP_oK)MjR2y|^CYm`$#%ACQ@xk`5akS7{O-@Ve=r=s1 z6yrZH@)e^mhb%Q%UNwiyjwUVd^r%&$9?bc8_-xy1Z#AvMi2hbqCqCQ}UGAT)c!x#Q z7W&@h_NoOTcv1%$YIdn%J%*&v#DuSyHm-UK>TO_-<4B%2L*@+aDl4LPXgLm}RPlDT zsd#tH(?^%NSI#POYv)P)JK`Nm_U}=O-Q`wo%l+eDL3lH6ou=Kvc6O|!9!EF=mrjvQ z?D5-2yf{8ugN~Jw&|HUxX}&Vl{0ZgQU0TZx!hfs|0W627OxM2X9}_iLG{t*eHhXlq zK5G+iyCn1={{Z!?<{yYU$NW`x^WW+6e(Pe%6@5kFUlHhbo)Nx^%F(a2d$1w4jyyB#xauDVQ>rtMQ7(1KGtg#_B(KyKwpAjt?Dq_4clw*WwM#S~M4zY|U=b zrr41^d-3>JjeIfqNvdi3z1N65X9`LslV{n9^9uQml4J+dkO0m;mG{<{;hzLtf1wRB z(`ZFiU4Vd?z{nWS1dWE@N1uU9A>zChpu0E72gGHMona?DBxx z>5{+>xF1U9waua*&3w(Q>ApGfwVl<6i8nzma5pNYyRbb{K0@P; zmC&bTPbu7dFuu3F@K%`dmL6Pd=I=s-djN5gFitU?dsm{`ug~+~?fJJ1R~O-b4)~8l z&@J?cE@GV`k7~N6(%X0+DJLJDW6a+X?e7y7$#HMg6*vHn#BeyS8Cp^|hR3O0*;(C0 z_ZMw|h(`JZFk`|gQ@uJc#=p2YKxo=yvgn>yt315?O~P} zZ4r_%6^_+8W871GbMXg5&^)lfvuzkvOtE8HUKZ7(*8Delt62=8jXq{j2+8UPwRH0{ zjKjLoA)N1n_igAn3Vo}I)^thiwmkE*^kS9U>-xo?h3+G_)Mi^ZWmW=zmpT6Kde=KW z=A3OM)u+6QNU|_|%x?BM;cHkKo_%oeTTdjBp$)e?yNp%4Z9T5+mhL9pTY^1Es`};K zjFvM`3KFWB!0EFU&v-w^8e3W}pKk2(6UzSpbdJBJbs5N(_e{LD3g8?u#w&%@aJM)? zgPwm1_I*O_V2FtqEXU;)<=VVCeZesKu9_zuQ_LRT-Sz89?igU)DA;;qJlE4UpSaRs z@`z=|;Cpi13i(UK3W==Pd6E?#XbPjN8v1iWv(@#xTRk=bk3%-xDv)du^{y()=^0X*zO2AuzZZE8P8RJG-9_+d#%$j{COcxIjNX zwaF=+N}1--*~v6OHhJxe)rUg2g+?PR&FCvtwZ9D6!16q*^8Ww`9+itfj`X#JwW={a zxTVb^c?~Ia!4zTUP#3mp75fg)m;{sQ^5VSO{{Y0^BfpTeW6O=WA20N*xUKbji1BlF zVvjuwR*{PfqWm1E-#XHi3SGBR8_T!}I}V>mU!>7NpO zM8I5M*-Z*AI6?p;>)yMoe~Efk%wpzCX@)=pbU=)B>t8SI>Lb-k1(xxZ-Lrk4R3YJz zh29Q$_2;EY4~lf#XrzuSl$tO=QsWrUZYrAix4{~tn=9*^cs^hnIX0_(Iq6Z=t`OHtBlx+G@$v(!Muo4K3QmHj19X~hG2e`tKpA{_Iky!(*!2j ztg+Ua7f)t})@P7S^D$Da0Q@M2KVu4%;VsWo zlU%d4U><$rA1Kcr)sWiVjq-l*s4Cp&m9Hqg)I2R^a<+2cPv(wQ9CXiW-h)S5^~I&b zciKllKdoQAV>nTaO}qH)=Q)N~NjDwX=vTHq1#@ue8+8kNo5u5_L-#nxwQ3CmP_spY z?Pc-M?gy{6VQY3iCbC~D9Ln29KJN$mRBCG!ncUxaL&IA9az%9%Gx@+Nj#2XtJ8d9} z^NSzZ>*3X{*_zu=^QGQF7cOPn^xvL6DmyFR6j>%-$jOd!SgR9^aki{O@d^ArtH7G1 zZ3&V;F_Ws5?ei1V9@wU)XD(&2>$d(5(sbmvw}Q%#Y5 z5b;i>@nc63%NC{OTi$Nx$dnzqTy~Lmf%LDKbf1a-DDb*XeWhw^ZjzC{ErFtJbmOjh z^{=C$4{uA|GoS9|W_{W4(?=5DU*27nZ=OV5xeThifCHv*PwQQmgj7Dge_>;_qK-c@ zKu$K8&jbUE;FG|wKK-BkUEy1w1xMl!7~lEYz3t5Iw(y~LnYWZBVo}aY0qtJEo;mQS z)uXqY!y1-=Cx0#-M^m&m*4GktRCCBDw(yz7c-V>(Qq=3GQtRDAZ==)>wF0?6yJN^W z0AjW-E)rdS(j{%E5UZZJJ9^a8-)Is`i0?ev^S29w$UQ4QZ6)WuGsNI;_Q$p>j>hN2 zU$y{SDo5q*U!*@D{tRos5^c2WttS2$ zUr#O`8B~DV`>PD&++(LbtK}I#WxtFHGi7gMaHD`0@GeKPvJdB9VU^=(!h(#Rr;Cll z&QrWk9F9P-?E@L=Xxy0K*P?1)0X{P57tn<6ZQpMmjg7yCN40vZ7e-n}M--?|Jql6bWBFE`s9AaGn!^{;!T`7p4oO|C zFmf@*F;cd%1W3oIUc8PgNXb2nR9Y@yvWYF10~@*e4A-svGIWQ;T9=pu`SwLm>5t03 zd7oGpSBZrxtKZkIE8D&v%8_`2>Nu<{&9$Cp; zH|1TRv|C%&c6@xmfAy=(dzzLtX=j@3MyHt<r-zp zP=-#RD{<{#D126RO=Txl+$2XreR1BsEVtrkHYeabZ&T840Q*V9Ct^ESF(#ioq-Hi4 zZof+JX1LuFnK}=UW2ZICvD;PtvkV{ z8@HYrqyGR^I|k2s>%6;vw~~qm0aHW6F$L5pHpi2XpsZoJQrP+HSuOU4 z-`%nJR({2ZDJnVZTRO`malHRP9ZF7Qta{m?7J{wO<4w#B)_v*h;UrF!Rv)cvYh zW*>c9Irh&=^AC!t9C~zeH!>Faap_$+Mf=2Ki1<$#w`649fw=o|S|VR13o#pr^y0B? zgrLaTVUKox)m3>X&v-W*{)>mGTf(QHupXXmL z_z(%SXqkEpAJhu^THf|@*1>SQkf%ZElt~l4L6zgOgr$uG>J66@~vsw3rRe+%WWqgg?K@0=R)C? zMtJ(y&=;0ZdkxQ)zz52YVO)Kmf$dq9XOk#7BE4)k!gl9YW1-CX7oXFm2iXm9dchd&b&* zov-$QhIbLJHmVYSp4G=`elPK6yQs%Kj*y9`I{yI6R{8$``qk=swxOp*qF+IM<=d(* zaxum`S1qIXlR>z&gjhcH3xXp6bgaO)e?N$><6CJahS5|F!V%V}NuXXB)XOoOBy#8a zR<-84Y>}8Dx8ErsC<36G`%`?zijm+9A4LU1>GSEEiRp3iu^@m`5(BQ?F~Y32Ef zBJLl7>0Fkh<2&1p%M@%IIaVJi$G$7iygb)lA+$GoZNJ&0-SQd62p-^ZQO~4n&2Zmo zyIC>WFsKK%E1>6S>i+=YFYyBHf>%_AUza2dCj6%T@ub)ox^}A17_60t!eW|XbPwR4{GYP+bLqRhA4;4 z5a&JVG@Dp7_=;OcwRd;#T1fYDdAM~#N6I}YGcmNwc1;IWg_TlIGmQTLwO)VW0+!P1 zDLV!7jt@V|y36f5R9l$RTY=@t^A#Lt70+oJ9irUa&33@=eg=B`R)r>Y@Lb!=qil!w zj5q*w;-j^>I($;f(GVAxYE@Zv? zQ_4O>P*8eq=~}vKw6^jlaSSR)O6a33=OpK)W9V^wRU6$&+23H(ou*?*oh>$%(6EDhuu+F7gJhK5?qzqpLtkyHOO4+S1qdB z>Grn2x_`XQ{Qi^~p0t{kwXg|nqvz_!o;y}e&Y+hUK3t^(AnrdQS=R90++KM=?2SOn zah%hWNw!HOmf_k{lhArrfNR4fXuf^Ks)@4J)rZ>UwUke{tp7TnOPvvRA+V0IGmTQxqC(F|*t^nCv#^rVV;0 z!HfGXBjRqE9llyux0)P)4#Oq_bzE!Vjk6FoXzql~vglPEHlLAoS<8cG7sW!k7A!X*zzQlUzZ!%vjDs#x z@MZKC@aR^>WOez3tH>j_agWRCTDP7P(On(-7ApQG`r0;lk9e@8)Oy8=sTKo zs^sq?r7M|w=Ycf88r#SvouDxsGQ&GWxbz`w0e&B9`X!uAqFyjdbA>?VhCP0I>L1I} z{OxAp@Y@2is5^Ih)$0!x-ruK}h52v>a5L-$WJ%+`Fz|k;n$DZzAuRVYMus$9*fE@Z z)zNr!;pDy`)6S=;USC;Vj7FOX17&w|+G?7<^%5BNCQ~>AJ?dDZ*DW;pVMkK`#;Wjn@Ths`-l%7lkB{(tHJeb7Wi`BY2&+%o-29n%xaQMINRDWjd8z4+ohsjiG$G;74_kO@2P~H5hFA_k!R>+8f!+(D^7oBD zXbo3d@V(-Af5R8>>Q>Ukv%u&PK@G@4sCQ!>ep>9j6Y)1!*E}(A{jcGTQr`KG`d5){ z`>4M@2+>&lr-PrZY0j-{ z6zVHl$BJrRE!6b5mS}YA$?c+2(k;AYq#lH4`5N+{7W{1S9l5ZN!rl|sE=I=)nnAOEopSv1MXOS>4b$>*%YAs>iHsSeS3f6 zsAuukpW!QOZW;%i$_QYEJ65K#c|MyxvXX@*lWQw>2fbi;cj2C;;p=#}O$3)Pp+P1N z^Pl$XUS9?4I+UV)PGKyFFcp4O8R<|*x@q{P+f2Ifw3hdq0^HlUWgRy5uOIM!vu)v& zwKomsLpIxFZlwU}#dmtogteKizQ;D{L`Y0PH}Lv#T#kw1eO050bsIIsyAv9#XE^qt zS4Xi8O3O}WYl&5X+CEnMwd0>0JWHb8%i$jjEL-oj4M02t%MMgVI*<3b;CfeCbKpz6 zs|QPXUd%D`TMP^1@C0MhxnB@`EV%I^S+(q!D<+>h+(Rr4vPCP?3@}$7)Zw7xq26e| zA=Kv6T6D7Vytx%oI}^8_J68{>Ynrp!>JuvYCDGN+IuJM+uSK`hwM$zonLcNdKi+)n zwR%+PWV()p9mt7ZR{Qa6zy}_k=s=)S7+nX<46zMkX`+%FgY*l^8IV|Ur&PL zSn&0i+Z4e&#HHdKVSvdV)#i)v>S?u0Yuz=)qQLCtGt<`@uVK<2Wr-H;L{c{3LHU0# z!nMRy=0Iramgh>cZ=2>tuP(dsRfe(RDZD)yd9NdIWHFDGH*tpl0P9zKbK*TN%TLs9 zZ(j>*8%V)MPQ@7{eJjhp9(adI*YEE|M|Uf)6|^olc9%;FY4<4~c|5U?VNbsCZH>ti zDzdRSDpYjuQe_nGa$0tutFD%wX~S(GsXsThFZPw(NgbDxSfR%}Rm(pTX!@1U*=!_s zal;1fR338rr;#q=$Uf=*bQad8j9Qze>^4T*d+j580gU6OdsokYv>$@JcjMg!G>r<; zJj;*11o7Lzik-_b$vNl%JuB$&(A-T7CgLa>MlrSL?D_b{{WWCzb$;t@h{=L{xkTKpu;qW?Ds0l z;ZDU=OdfIVk@dxO)R#NE3U-sT(ChqpV|l1)w%#DpWLARuW%8ws@C+x^3ag_-ccGJg zdfzi_5s**HE9gC2z_u55Hd=kErLDf4Kvh$P*u97qbYx<=&18$AATTET?cI?;K*Y%vT2y zmCjE}=)-%nMm4rPFH%u$b`+9HW4*hR$MUNK5yq0i6xT6lOh*!;g48&;AP2~6(iCp>nifD2{5@3&fru*i(`;B(fc%YATr z_O7FtRlwkJNrDd00OzeCB<7^t%r^1ziU4xq*B`~`DR5V}HCc(tBaDi$RNJ2=Ngx15 zdh#k@Ak5@jwcoaZA#hoEm;ZN9D=ST%TG16MhR3kST+w zIOnx083L5f1vfv!-KYUTDsniaOf;W6V>G9n5&ShD82WUe378Z(KX_-4Y6dVdP;v*k z=~pnQHUbXX0BmMIFc)5X9@S<-y9;BU-%78J27mh0g^3_~Py~onseb45rtDvqLU|*Q zDG|U5p@%f`yIA0MpawVI!ttJYrsJvW&N!nO>&d4l$~fR+fD@7jL61sN$;UVp@};ml zk=wO7SwJJueslnUbmQstr9AigP+RWjBaS|l22wt3k58olGEKPK&QBEd+z#Q6DBy)v z#(L9v`=ca^09Rs2Bxe+$`%_d5;B_B*m7K29qlWz`0i~s7*iJE=alj`TKcJ^{7^gKv z=V@FH4|)KXauKtV)W0w*&|p+c^Eh6BbCFXweZ9I+14rG*zdrPvWO4>S`qbbD0CGh= ziwqDt_x7L)tH9!=P+RVBC}V@j`8s5ErCp{y%luqt=|By`DLKNPMIgvf8>);SN`C-> zoy1UhJv-0?bAg_ERI079PXl)x({|@PjB~{*q)I+z1P*!aKnag-I(=zW6;Oj4cYajz zs0iBG&py=Cz!?}M&;h$|DnI(v)!ILH2kyY<+|uCn^`uZiZ22S08;d>4#j8k|3 zf${(pamwR7Q)$cB=AZ=5eF5W+)hd->OM#W|>M5nVAOLZig#?IpKhRJF+nc@s9RQ?m zap*YuQ$WuLflA7`AKg7D01b|uPzg@_A8Jslr*QyN80;H}&#)8#!PJDw@4#sK@j<4WH;s(iz_rZ-cJ3IIh?tIsDt zl`k=ow18fdbboOrVjE7XM;*9 z%Gu?h3H%@)mCM>&c$-;({{X^8dPBu7*lnPFsTn+O!u79Y_y1lK9t-YnZQrk+Z zT!iYQ(;e&2{wTw#>NDv{1*OE+@WK?uxRye`-j((Ti*);l9@|gSbqJbBBLS_{1!BIS zdRLS9hVla``x{3*@FS#~K5ecCLyq+~CI`=d4)3izKd-g#i*2sj0~rv*1AtGaMRw3y zcyep&?L$qun#pe8cE&qdbJ0#KA4k*du62*L>k)w#@KKW;I@he<+9sgW%c9!HaF+_L zv;d@bsh7lsBg{4JLQNLQwV1!wBEQYo8+s95OW@xXc$Zs{Yg(PtOTJK;ZZ@wyE4BEw zcdTieVX;(Lp=h?to~j2>IIb7rxrb1)7MgQqi>}pW;2&D;r*1(V&GxmaMdBMRM^DqF zx`x;&V9Uc0cDsO3zK`Jz{{Uh6XKA->LccExjxpP~>0M@#;Qdz8 z+}*Tw=#9`)ky<3AbrdM#S>Oz`!+{kT?|RhBag+&A%IwzC(^jfG?K8yC=ri3Lbb`hhF+9VJ^=15MAo;uDFNAOWbK*Gs zL9Ha3eTAfkTx}|@z>)wbuO}7vL9vSCPg_-wdczJCtCq9Wejn*^wVe8mow^kbmMW31 z-kBti&{YecjXoHQMAYmw8RC-Xh+v&lDA@-rr-R3A1MAwcs;*@_xoBL2O@hcI$IOyK zeq~XR2eoWo$EU-meW4*#4mS*pF~?k!UIl9}#98)BZu9M#K0*#Lj+k2AI!BLnI|PpY z;0B0o%&+qt`wGdc7O5R<-YHvK8RWjXOGutP>;y)~9{JDZUNvcR4y`Pcqlplbc<2XU zDyFI7=xy%4$>LpH+(_T*g5}W^^%>_MrD6-bk#eOfpYbhJ-s~mT3 z6?QJ{E;#1A&Mji%T~^A*%g%ECSZL)^M;*5MS9CColbq}Nva$LGxAykF5?y~-kIRwJ zEK!0o*&K1-H0?{pT85wD1hd5s{j7dvz~>{{ovV0n#6Bv}ZSOS;kp zKs>_4?BR)HS9E9&lcS54b!qa%BObh03vcl+OEwY0M3Kx!8IRq?b2`V1V0%RL~awaZOfEndaiH?WYjOmJfiI3FoJKf=1-4EV=V_@UxWRBDIK zmPllm_iMBpj)3;U`(W43ns&2pkbRmt_RA)B6Z!V5Hohml@N~xOO4NSIF(>!2;hSmo z1Q18ID{o-hB~<0;d%mgSUlI69!s|$DsjVWpLztpFM1#K`)$(4ocO=VmbLQ@ecOH3m zC#84VuZ(VfBkC42G~k&30Cm6X)Z(!`cj4%Ce88?I5h^j;@`levt*FxFGOb$Z@VmIR zYlQnUp=V_n1aPC;y)VI57G58=7q@G=;!+7uyu%)qpugGcq$a1aR(AP#?7vEuU1B?1 z1iKJzZj1asDDPc7#{-d<;yow+5?xGO+MgunEEw~FT;8?d+c&g2eW?jHcO;nm#~g}% z&x=VS;>6{HU~#koUX$Q^sP)*_P}D$1h_>FGg&gry?d1)LNbtenQ*IzK!RN~}tZ19D z(DkoPxbQ4mebu9cXyI7HI!DIW9`)5Wv!f=Z6j8;TzD7q(9@VF=eX@JF?Yya)2{0AM z3zJ;)#Y$V6Bzdohwb&uB7P@?Ue#$}?Jwfhks?qMQFLaw}t}!Dz{Gmp20OFv!@J?k$ zxpYX2mXv>c&{t2V>DO9hNcu$ayDH!z7z^#`SbJ+|J02I}xpiTxp;>VZUnv;J%zZwU zdf)AnKxHh-4=uR-#4ll0JacQW8`dW&9L?s5c7E+h>Nu%%d+*$&MRzP*v*VI|tI$?( z3mcjxf=sgGtnS+NAPboAkdyMS)Yk*8 zc=J??Qu1xxkr)PVPr%fB8B0isXnOaAt>o}!!(4rg-yp)MZWT|hT=A}}apOyryN=Jx znmmRIIN)O-n!)&S;yce3UA~|z;wMr#tD48#3%#fa`jEUtJG|D2yR^uo^By*1Ucnb z>0K45$r;Gh*FhGZZNsWsr~1xull1qm4Lbexg~XC+@T!TQBrn|nde@}#NnDcI4TJM_ z{41=|G^?FQPTV9faK~aSd^>-Qd9|}G_3(R~?Kw~vfyY2StJ(Y=sL$d5050`MmQ-Of zyNJj4MQx9QgcC-TwKVkq0Ehl1&{1`5UMG!rfPud8&#!D_-n%@oZUR-k3R1xgOoRSJW5( z03I}mJQqE^mazlgNfGkdRfCp1W98@NKEQPJ82Oi2_?aHQ_I6Xq_XgPnYOM;Qg+83; z^R5_1qixLZa;F5j4s_^EE~f{OOr>zh$Z@x6?kn1LKep-`MZEGz%^kad+2<9Brfc3E z(3W|wZT|q$Crn0EZYn#9>1}T9{7K=Khd>ROANPvG2Ng4kmob+fv8glpjT(z{gOu9v^sfZ*KZ-3E zUVFz974sCk5!Jl_9+lZfGLkcy^d#0A9e|F)FC^Sdi*n?y#yK1SYmuMA=Ic>SRtfy4 z{_8gW1!s7pRvOjLhp6d0kehXnc<+yIrF8R0BI(VkTW%g#-rwjw1!q+_voeK=wb1S* zy$^#na;!0ys+z6dpR5#JMb*RMP#@p}(zQHcYz~K}h!`2JB;H0oUPjh*2wnJnt3Jt?=2d@?FE7ZI_cyyl)TIxlLpE-m} zjMu4+p=xWCnrGGecZZhGOFB%m8>k)Chs}%yt6Kh>X>8EOkNdl15=4r2{MGZOoAEO8 zT~ao@xFS5`&<@=Ndx0;1r~d$G`M!I~aQ^@>%Ekv_UoBdTq}9%(d9J-P!>Gd1K-=Vf zBaS z{L5Il{i4zBz67$<=kWHcb#)O9brgg->yy}5n`wLJwh01~!0ae`@Nru{7V#bBo}Uex z4>H|JToKb9>&?6gsn4wV*7n-&;6dlyOXMiy5rf5M;ndzP$75-0tXt}mq|lWofxHD# z&lssZdvMlv5Q0O?aBy3?99PiNX$yU9Be;k&#sNmgIQ13tmyGl)>)ZCXwdURlS)_K) zeuAAQwPig~=K58fv)n+r2MimN&<>`%pAlSH-^CuA6#GnjcRC(l9)hq|#_LOH&Z3i*^>yOQyQJCx3~hjVIE^Aq3OC4X&xSh#-VU!iIgiV9suuH z9wUDW-9o9P?eY|F482QwR}rjbB5gi-qgHdzJmB`K+Fh&?T&0{6`D+sLdt#pGiB9py1A$F9_Qt=;*`DjPy=OKIXX(5$e+2>Iq?E17_TjBlDb!>U6&nS|#-HT+7gn z$_LCy^sYwlP`GQ^=eLPg+_N_4A2VjLaWy?FN`^cA8Wo*3NSNVx01s;DB)NjvFW9rc z7;eJ3Z3g1h+M>wEaZF(F0Q%NUQ%!ZM$hO&N;*%f`yMbA_0o9)nMWy-AeHkT>8T-G5 zR)fX5Zl@u(wg5->*?yHDi*MqUV)NsTw#S8xFC~w9;WUpAHMXEN3x-$`*Y5uS^{Drf zRs+}?#?w(>-7!Ns1d=-_>0CwSx>)I6AeIrIF;x|@&lT8-yqibz**2~K;1X%yGq}u$&>v51Ry?IfR*ADQHdjfo zD@di6XR#Q~dMCp#CrH;Pyu1D5{hmfi5AYUVmFCfTP~6(S-RjGbPf}~qyar&@b(@yE zAt8<+&*)dBbJZwIjb6qnrM$TP<3bB$pPMJtRgWiH@kW?Ng#ZBK9PQ`&Rogue!-8v& zfsB(D3eEEY^sR3P?*7}KO46>@D1u?xmmoLOwPFV)q}uCR4dj;IAd&2uSB?B0dgIo+ zeLBZLk569^T_axHhTo9g6m&depv@>9@Vwt9}`$FJ^6Zm5KFZ7EkW-Zra5UIDP70O3rV|8zFsYP@lF_j<{=nrbt zu)ot2N|k4{f3`TH zGVUu|mQ_(6;C-ucwap~O{h6i5=G-%2lh_L3HQNi#OIX6AN#w)8`c}x!W$P=A688M0 z)9ixWf*+=9)YHb%BtK=-qG@CR0K=xyUo{;UR{Jy--bpb`!KA}{z*nzm_f|4_I%#ya zXmFxky$8K?av8#KD90ep49H_^-Fv9X0hf{LlQ^J zTC1X6>o(U{dX>U?_5c`HIRJZlSCHvGF}2f2*x+@2r#p!I-qmIPBFG-*)ooTe88IU7 zJ4#j#k+d;A4?^-Z{Y%MhMsm`?!{kw)o46S1Th{@bX#W@CL6cQG;h(d)T;{Fy75k>cm&pPg@<~u7|wk%JJttEGHrA(6?lhO)UP10 z7O~FEb~|iOo46Ho!}<<~;D~OU#Qs#WyJjSOV0|%BYMvqS1IrdtcPG|y~T zIQk}|I}3}p`&Ki)Ryi5;0<#&?>b^3!)#Zas)2-d@VRb(@0H6M~dh{M7(KLSzrkiDL z7oTzt{{Y=(w+`gjmiR{6C};ETEmz2k7zd8Eqp$dfOcFd0+xfF@5NlGW{$bx z?P}H=olub-nnD~#$DDT@b*>iUQ1J$};ghLF3~3&lb)PWsUNF0MkD;w^_)fe)lP#X4 zs<9aM6)TXa-zd-FTxW>(`LLbR+)dZ#ld#83RlrmCO^s7lwua8v#hR3m z3z-ujApPJ9Fim*|sduF6nw_7B?=Iw#Jf=v|22bN#_p#~Mz8n zX}%s<;dNQjK0xONw~TF~Jlf68-JHFPT3%{W#iUB{+8@2<931}u`s;4y$VI0MIlw#L zCt&P74RUQPT1A{N#Jkqz{{T_X2hy~>Q{qcaDm8}CdC)q<$Op_sjrV}|6{*d!sWrWq z*x6)&2{D+;;{i;0tSMF09SD@_EdRrPzbW>z;d8h1uFobuOoOEXQ;b%7~cUtWe-_>x%Uc0(b|& zTD`@E-1=hbI;*mzfcbz0CxOA+&2v=v4!UacKB0s5gwZ}E_$|C4;oT>lJ3UN z4-e~pOV1nHMgs`p9$^4+vjlv{pd8}9DAs%(adE6qtLf7Qp6Yiec))z0U*%p*C21bg zim}ApMXG6f?Ym8N5HanNGCO0iuTR$gGkA)9DfCO&ZKU%Q1(GQ+eL8yLxL*-?KILPN zQD@AyY8GTCga^1i>&m2CIDAWJw~~YAHWY^)dvRLIDZ7|7dtQmEX_oCY_s<$Xk+mXj z0=K!ma-R0vmJms5Fb85?yOD z!>e1|Y4F@c9w0^;hp7kpQ>?s6plKRijlG?bVjW&dHsN<3q~KR<+Lo!}ZBX55Pf@ z_f;a+c`YDoqqP`-SZAwo>0BlndlZbminiO zuJ7$+Nkjv3G8|*r9)`JnTT;Ed)*54&gipqPUE6<3(eRb;hddZ>ZH4n)%RT^5pCKO2 z(Q9*7i^1~TgQ=v2%pz4LO}lscH{CQDoR+QP83YS9r+6TXBj$~M_qBE!S~dNxj;(5i zV4aZ=$U3h;K&N<*!M+x}@bniq7awMaYRwv-x(Bsv*=rgNwuh#RNqopO;s#0Oz&|e) zm0yIqd!L{_3HU|gpAL9#*ZU^^-KUjB#Iee)wTyrex%M8_fh3<2^efAaKg8Z0xz#l5 zhIM0L=^#)?%5coTC^*hAKt6>_a+IGj?a{AQ%h~d)A1!=V_$Q|wD$iTfbc@;bI7~Nb6a}PPa-bv!-bT~T zJczl*ThRS0fzmZbwAG`wl4Y0AFShG`N6tQA-Nyq1uNf5L&q6+D%i34P4GQ+^G3HNg z4aR(_o)a2;rx+)%rOAozl0h1R zk}Cc36by_EV0Ip$8u*_2)*EjC>AK6zme*I(tZf``<;m5Cark!Wn(2qUQS|14@MiDg zmCT+gw!VhdtXSEbew(m2tMvQ1WA(*xn*HyFejVypIuDC4mffw`ZzvhK^~mmhtAy}J zi}eqNmeXocYuC+e$(Mzji4Q+_pWx40t$*=n;TMcv=Tz~#%5^2?10*c7OaQ`dXJ>tOI-O_Yufjb~MmkoJbS^I(#}&GqtF*E(KnRm)Rp*>!`U>~23;1R& zDV6m*3prx6RE$L=YUvOoXhg{W06)v~*4A$b>OMM(Z6X6KPl>I~!YW9Nyn~iF#z$KE zmMv!L)(LdEuUZS8L2|3-sb$6i7|&if?dWK9?7;C)99Z~9)8gK>;r%5L=@CH<%Ge1T zV%%IPEzslzU`Jj7uAF7g`zTLa#+l&l3WiT?l;t!;ccG1RnQ z>}_2XeVX6w#@}>@+V`$_jr)<}>d_K6B#XcL+d_}28ED~MYBy3qg0OK5-bjKTe zQ~on+ULDbX4{G}5<&~uVWRTliMJ#INUC%p1XKvnbdhy09mH0vNJ_tM|raH^!Ez0am zeaqy=R{)G3yMi%{fJP5|4CgDyLphV`8k8Op@nL(bd0S4}V*)h>-a*sm9<|2!+rvK# zejvBl?sVHhByax!F0m@gquArEd-kUVkBPMQOV@jnwL6^68}ob&_*r=crk@^;84^6REQMuJoNhSd@FKoi@hyhE z;E##0_-8}4krv%Y*(QLNkjM_wxMD$EbBtHj+9v?kKq>h4Y0*w3AA2W{ z{{U5SUlRN|WZIR7h~jmE^j$wMF3%2ApI+EQSiryudLH+D9C#k1ZwZA{8U%P&m&Xpw~&@uZbQv z{{V!3-YK++t}U%%NWRiOWed?&cAR7Z*V?>W;!lG0Zv}Y6Rf_U7jyP`E#)x+U81Mlc z9-T)O_3yx)LPzki(rtA7Tgrk-?j-8Y2;mnzDCju)8uhD1Mh7{^c!yQEMz*-rtmm|j z;BHnba@%_C$Xe!ayltn+D@8DD3@+I5^8xF)uS)ut#G=c@78e?4*-`wI>nif68N%nL zew{1iZBxKg%cwAi62w=j7$ZH8xU0cUY|LvW)`yi`>bHI?@yw}h8=DJoLZbfw6LcBH zeI4Mv0&P1*vs>3IJd9+<1{CKR{HvJo--h7OzS34Wc$V8$hCRt5e9n0s^u>Ku z;2Zen@TzIWf7eBp`d5#5t53FV5#zE!Gf5j57;*p|Yq$7UcRlxq4Z@h>@?kMZ8?INT zD_m#7Iv)|Kcd4XOD7bY2C0ve}{{Zz@qYsE0C5&cx-_Jz@YDXUSI2_jwJPl=ad2^^u zDYy>%Q3u^8y?PFbrfJ$}@}#qkBin(F)#FcN(mbPJn`wAo)yjGwan?H+mKu&nK3+r<76)-5Nn zi_C3H%#KjsbmzTAcWZf~+e`hgZtk+HGaT+1uR6zFjE2-(T8PW1+eK>}W1{joti4Lb z>NG8%tPOMYBo|@h;JfR(`3jX}TT#y@aW8JM;Ao+oKUmP40(~9~h#y&jI7s8)mns^dd zK2$;CWRgY6JZ{H9Us_&TF0Z1r41d=TnRp=Qw;xK!@ZX1RG;KEKONdd@VxgSjx9!f* zK^ZvDL-w?tcLmL>yt z%D*jskX-n4!!l{!MfQ(nBT7IB&?pB#?tpq%AE$g3_<4NpPls*ogJ+1D)St<*S=ip5 zDly#n%JuFh)6L|myLfDK)ZlUWSJ8SVzOUh{3878*9$Jqq^w05E5%H73<3#Z^J|FP= zh^->Bj!=Yh2_zHxR{oE8nkR+q?n%!n?bv;=BF;N1^tw4wFRj z^V%#{HWA4jr{?n{Wqhx-Z7+)cB1F;H-e_XcAs$;ad6Do3aX?PTu=oZKhn@JI;#pc>AV&}%yz@X@dQ|fq^KY@^ znsWM&1uiC#1MSJ#mJoTfaVxVa^A3B^>NK`;hIDWAHd+O>?_N6dT^ZSd>jKAo*K z*wC5PMje(&_VMYK13sKrrs%KY?FHhN{{T;&qC>htkj#L4FZ8dYB@+3PGzvEb^{+bC zwM(C|Y`9{+RD}fBCGDmF^N~5zX0r*!qx`G%4u!MDSwC))r1ZSrer)PNAH;Cc9l$8A6@EXOt znPjtFd_h0LJ7-it9Q=LK0MPKf8}=zhf=#Z6oLphuS=P zEEf?7(M+?mfsejVt$H)uUq%{26Kb#BubVXAh#n!+VsiEiaIAjlZ!ClAE88tKJIz;2 zj$J|%1GraRyq(^Lmp4P6Mkk0hT}txg7ILxY04V8Cgrs;e<=BCoj)&H)U+L2be$@;6eDL0b5u$%PZUvkvdo4-DN;B6+=}@};?|osyW)s+EgB^#_-UAM ztN#Gjuc~eJ`%9xH<^9}w8E%|*72tmnn?}<-K?bNU65bn|cHBBK$E9{qsbe{#9^b;+ zCW)f`p7o)QS$3>yytW6>SIM3<)7IZwy>Yu_V*@_Cf&8oO-4DZF9+OYE*Nx&6a~5CD zJDC~y1g{ta74w&ld_M610BO5Ab0bUB_&Tl*JuA|~)zs#kI~+g4O)k?`@f06wxBEhw zH!}9X?T z`b~W_bLmzxulmIvTj%crzux^TEM%q4?u95HFZkL4;FE76W=JMs6kCQz=k3K%)fVGN zu(M=^O5Qq$&jq*OWP1WeYuUaecxo+wLAEe5quXS*;m+<3N99-=riOJ*8%K#iS#2%$ z20y^uWwG=hm1RzLMykm1e~5nxwXY88&92=|6K&dzGqmo1Po;S7nQ^LG$>b%mc-uK{ zfpNutm+F299x(9SHX7Lt6sRWi)aRTJ^@fMfh&ktH^x)+75boP|R z=1Xe3Wnl>2hW6cF^Qv7l+ZUf}Mi&AwgPikR@7Q!*P5}+v3i)64avY&i$N`5+=Y}hk zr-tU(`D)MOJYta3g+9>9UHX^8C%OgH|1ta_` z&8PT9;QOKWkLdv>j9ei~>xq{cgVr?Pece&$jF*(efxLM=^xCzaxiZ5F;wYr@!FAj7U=Qx|)Q*+&kA!u5?K{R- z)~8Sx^GfCkjy~xJx27vuM(aZ}=vx?GCR=rg?HFT&-lx?dU$?;&OSQHU*LHJJTisk= z%Pcm)d9e&-hgw^`VjUWLVRsYE`wm?OcC~YIY6QEYOQe7ySrInwQ-Qm^ayslVTHM>s z_H!ic+fXUm2tM`1YaTSeveu)ObnCW;=p3EAfIS5=_r{;wFg*7$8(*`s`EkkqvmUsv zsKClh@3oCC!s0diRjg)5D(b95lg0q)+O?S?(L5Edv zJNsEQ@Ukmg5#`Fm`0@8^=r}d&ThE8u#-M&-_5yMTJD68WMhDIsu802s37in$>vG9? zHLOvjQcC5S5;X{@xy}Np0DD&_sCW>@h#-<>Bawq%mEmnh%KJru;UE@v0e22@`E{-P z#dzWQ#xT3Lf3sVt^aIGI)Ab8&E$y!4lYEJ_Sb82SCr8jf;TAC%Rb~@?`41eL^qYIB z^*7x<0wCKT9YuN1#M|quA*X5f#38tBg1lzB6bvM8Uh7wfF-m;Gi}JT@R|TnfoJ$;u z0uv%vMfO{$bZF2W&cg)P1$%9AZz+m6d13RK>ZhT}G$(>QD`(=57Phai-MF{4+EO6D z>pej974@WkIkeFB+38Uic=Pk@#{hhvm3e=HbX_A#(@wFf5)7%i$KCRgdmnRNo8i4< zz?zU332fogLNMHn9+axHN<{ZQB-by4PRPo#0l5O#4XE1Q-&};gm&#JvOpI->Y1Dj6 z;rQWL?BY^efu6>^+Wl?yE7Z8uPSqTFVB?C)D7M6Td@ZNhL~bt<<(Kb;0Mu7LCGfcb zT0<;=46jTI&%e_&m5z6{g%aLAcp1%cu*BD3y{syVPs%;3rWB%KDwaAcuMoA%u(q}k zq5HY-S$PYnO49As)pm?< zM^>zxpBCF~+2u&;2dCYw1-7@8@0<8K1JF`PG??KaqC2;zYFwjIXQ+HM@#AZnzLlm; zY{?b0s>>!mZU#vFg?-vht;EX^WD!US$MA~yOW^jip~bA+SzO2dkmyWIM$}W>=h;F0 zE7|1ug9V166^XwR4Z(H=UWXiHu*H1NWl2hWr@exx)Du3OD{pCTyHu5R!tLl+=~wMx zSmyH@EP1M{laca{*y&y^XYofyOO3N?mTVKOF5nbBhAXwvekJI4`iRlzxwaFGZ60QL zZk!76r$MccUKNqb{B-zXY2%NF+SEFHL;F`wfv+HxVlq-OnIql6`O`ceIIlhZnl!y5 zT=;)3wKb}X%WH#ZAHLYsGX7_ijdUU#Jv>;ZUO^q2O0VDlOB|747u0KCfLiD4J(6=V05B(*~#01$Ze6xqDL*%itXUi;1F$w7AqeFjxq&uSUJugTaJ6nRC}2s zV9&F9rd%=nIjrq0{6o=v`1HMA-dLOWktNIw#dh=q<`^Ee-I#(qk1J>g?p24qOUP9t znM1~fHxB*3N-Tvb*!kC7_|NgDL)6mF`qN0ck&}m1nlQ`t+-m;-hQ2d=O4dw<=Rvf& zSllBUIoURSat>>@@eYEQ_e=JumS|()*>Dfj+PPl{Xc}&a`lNQq=@haD+ac(Eh@;uV zu}ZJHbTa&I)-;)S>Y7E|DCY<4tQ;;Yf5RUad@juzPdppNaY}hrCJf{{H~Nu-qcgsyLDt&g?u~ z_WFL6@DIcvffrs0@Ri4i@3l|1%Ovq42!2S?EPUBaXK=v4&3=JuHhO$ojlI-Rt39kP z7_U4L>FdF+JH@&VmEvy=U0dolhHGVtS<*bRubUbdQMpL&x%zQkSPGJ&)H)bfYG=xS z2Yx;HhvAol$A>h1F2+@gX&rCaVq8gv*^Kh4c>||B=DyzeP2=5n;;)7-ul!|c0kgWD ztkposX%J+umxF)-9QW;vSLD8t_KARy#AA_pRtE~e^x%39E9l>c{{XaY@58MW_-e}9 zE9l^wN&N8m{p_7VPzG_wYgRgkB!BGL-w1NNAg&* zouC46dUolW>vazbU+TJm@h*nRVRU2poj6HPqpumqPT1{VJ6fBBxmoDbmC@@Y?%fQ% z>pVd;GVg)H$LU^mr})x!xJ@U;maV61C_*EqO}yi?D-*%?HQlwH<;-SiX2Kj}9V?l^ zmL=Y?r;DVu)nj)bz}uM@pL8mJ4wY)+{{X`i+B8y63&p@Nmdc-O9)F!fK9;vId3OL4 z$33gfrtnpa*Ckd^BUjymGmob@{VQr@8&}>4_*JjkJ-(}_X{0#De5n3a^aNLoYTpQc z1;%0g>*)> zNc=3t(~I37GB50_@bYVj?lh^ksOM=J+vox6D{jN~b@2X?cXNGVeKELrwv^80Pxu$z zAB}rPuQm6FEk4yc#9~+40ORRgzN4yY+MTO^XGmjNh7V%5<3N*{@N_+iJ%gh&XgoyOq*(Clz*77E>mUHRP zY}+S;VIRS{tD^8-fY7vfrNj)nnmupk13d+ci*GANI{c=Mp;wXk0y=v{- zN+&Gq@;BXK-nvPlha~yl{{TOwW#6o8WFtpRXLr}>T(&6~8ja!^?bpg_8Hrqun8ke0 z@m?YQrk3!F}^uj5=r-@+D#UAI?j z8y;6^;C*Y~r;Mj#&7C{z81Y3h3C!b_>{ejDA-E@WoBy39$~;3&ZK=DV+lpD%{xoxv?6+jjO{ zzy7-6z6zzyw}N#uIsqIPvVdEL`In4WVc^YRFNW`CS5{~yX7a%KuzBEqBD@NU=X5kW zp9%S5Yo(1gvd_zUis`Om^L1rpEr|YH@!q&k1L~=$-pFDj$p?{+x%92=M)j<3)mY^T zExY@mbgqA9YQ)z>Qpc&lm}hwMPp}>9{H zezoHIxelu;^f^!mTvwrmT(&W&j!NoK<6;e?a3A;0a~hY~pmujSbKC1%y0WdJoxd*8 zxPCRrGOf#bvtjrZ>csOTJMA`+M1;RRHi5{hH;$56%ol>g0ArdS-Z+)!Sn=QKRNR?Y zcSRj5Lo=)Rc*ZSO-PHW%8McppYuNOecjz$e`J2pOeYgYqSBm%v^Q>9OP5_Q^{uS!p zACgzn+b3X2kNx$ykLgiZ>!NxE_|4UheE}a%D~;E&HTBeF{DF5@Uv|>Pj zVrSX_13Xu;PvJ+KKZwY>Il5StzF(AnHS|}3;)unS4NMy(r2 z8*VexrFUWJxVxBDoz;(#;g06$c~-mMXvtr?G5A*Yli?2%YD&`CSV`r7&r&{5p!Gh& zzOd2s`x`K;ZEFR(e-6mhALU&VMQbFahY@j(2U0&O?{cxjV}tN6i>c|FG!R~G4Id5% zTJ`HaW;m{6X>bxg2jyJS3n)p8c_Xbv(uQH>$C1Y;tz$LJY^P(Y*8FKFmE~KzpeOxi z?w-I`2Y;%eCTppJ3}*-LKi015Gb~o6mfais%zBTdaI+<~{!PK&oicilVN*_wNu5_> z(D81RmkVr+PX3`s0-d(>RBG(^0(Y^6}f&l#MR>Q>_hJyL9w)md1O(VhfZOF-H44^S&EMRQdvBZqs*A%7}IW5>)ZQ$o~XzPOg&5Utl)0ackZaf>I%>!Nu5u^%m7-qck)5CfL zNPgLA46M#^h1-h1apHyhE1MYH<*<8VmeH0!z31IXL@+@~vZe8Mb=V$)ws^ zdDC3rE&yEMW|2Ho;rnZB!zSqz;ewpx{uSWLw-Th0Tr)C`S8*rwuR!>D4&v8S!jeRd zles_)M{224u!Wyiy}F)ht?h~iISPxMS685EvVEJ*)DWc2&>pxov2XS{uUV0I;2wi$ zz@i*oT$r-TLwvaBk4lg(KiKW9S~)>s&IUN*y!zf|xYVv>wm{75jmMw^wR$DRzVOks zd|-i*T;7|bv~x(PGNU|D1N7*w=YxE#7Xt$Wr?pr6LASUnBP>Tz+PWK0E;ZX23Nl79 zRAOmYbdkrqX*?eE0ngt3qV3ChZn;u22i>e~D@~BU}k zUEf$)Tr_azMq`}z&-ART4OS)8CuEB)DOK94I6mjK0BPw~_SVh4xA~4aLcP9~W*hl! z46LWiNl65HR!ZtO5$aMU&lqi|{g7%~nJtw(*O^ppINm>%besh>>1LGyKwH<|oj0r`mXe7k#&2Mo-)oq;*SU{-!24IOnEl16xhAwu;_IE0!mM zY6BEetiD+Jky)!MZEoh#46xXl{UZ((pTiaB7XJVcZ*?tVO)Be8{?B-qaCdF_=e7cm z=T?v&gd}MpP|JnS9gb-&E=9H2K#FoRpGu;a5?p1b&gk*<&0n@?ZEjR!&1o^X{b_-v zHRM*nHNo1fdYa0g#PM4ehTbxFjiI|$j}pLTvl1>CA-*~25t8Of-v?76=cdZQ>Vm>L;7-duY(2Zpp*AbZm4HS&zy)WOu4p))3u5QUyOS$N+I)3erc=Bx1|)1H~4yLtwX<66cUQS84sR zsn2I;_NPadPrljgdsmfe+FLc;GDe}C4=;`@)$FvL_S$=0IEi4|+#dMHHH}1Qk*BM8 zeJ?E*Ii(v|@&~nZ(Rfx!KY48~cAW9o0=*9A6r3Ui*hkE)IvS>lC8y840tX)TnMZ~E zM)ng}*r-bBzKV7oSqll89NW2Q)*J-M$z(c$nvhxF#NvGDb@R`~@ZNP>g|p%??dy)t=VdJyrihp&rlyNUvX zJDX_T>^)DVSGmw3MV?cJisY|@g) zK6GcIiu27&`)1lneEWt=bYGE+U~}v5Ubmyi4~DE0!_h-CtTCY7Dco2n^{!*ao)b?J z=#puS&up_YzV#TvA4;Pr?s;~S-XZ%f)b>-PnFMTeoHu4)di2i-_mHmWx+MR)_407DcyX`agXkfovY<<9r(xN1Xr3(mxHxf zVJyzq0_p_0+N*#GNfh)ym3wD~bzc--+d%rP$n(a4Ni=bUSA24I^cg+7RPu?!$4{w4 zt3(#%BUg<*Ij(xz?^U*Aac>Gf0c1tNW9%!ZxYur?J0oNOua?JeB2JuF#uNU~KN9SG zWZEW!py^k#3$L+-nn@zuOKniaPbWU2g%r~dl~?;yQhRvK{1C%=fF!q4WCOlSH(&6qFBEu>Qqc4(jZ!;! zZVU*{djP63cpk!}gKrlyy2e$4*9)rZce;DrTiM!3AuY5K_ltUp;JhLGO=-R&@nxrl zWAL7}9G9{DmlKE)VjSU~Fyxivs^+?{6!@pb`bUU=v-Le1GpAj)*sg6{yo@o%@^FZ} z_7oKe%c-BIYC8R`=#8ydFwajjhM+F-vfoscs{G~a>v5nHq!hf zduMko_MqSh)qi$3blZ;OJc{}oQ~v;04YR^R`CIayy)pVwXyaqgEzB2}!qRBi+cYLQ zH!loLb-Gp3Y4$?K#@Zx-I0b%Pp?#`oZtbk+A8CuA$t}faYTAVQi(J|GXJn=n-!zK3 zF=w_YB)P2kqf3pn{XW6G!!CCaesFvJ1!Z4qYZ;AEN0G=UqY^zU%XEzr^G)%Eq}Lg^ zgJXX6x)6G9^flbx+${HoJ5>^-OSG}$X!I4EMyVTq8ve?H@$O<@E?GxXazXmnq>Ft% zW@k;lZr$B-NUt04o};I}r1nX13o`Mso6@~j!K|L`_MuHP_liUkIBHzxkb(X|~u z<3-kNbS9Nkp<%nOGl9)~t@}x8`nk{sk7;mHHVD#fJnm9dgXl+U z>B9U)Q(D;j4mee`J2XJa9I!@lo_3MNV60K4`WH@N$wRpg!*!!*5k$3j03!ltH^XF6JzZf1IbK0k4BQRCLZ%=Bm60On)1%hT@GetZ3aRZPC(v_i|rc%R!)6*4j z_>nW%@*f|{B-Wh>3RPm{cf!{%7Sk5tj49{X*7uIlW4{+%k2NrWbopzMu>nKw83gVC zcQyNlPb=W5`X8C*F|~ObUDb#gT=P`d<{8faZ;(!&Y#2ja#qLxP7iyDk|1p9WN1Xd-0{{Zz=xnM{^f=5b- zZ36@NN8y@w{FDWLW*;#f1prC6fu5j#6wU}Ev8hx54qLD3P%9$_DbCMsv;gdr`cObE zmFe$I-NtFk*?ofxxTh)k zjz(Jc>(`1;VN3L+=shR`RpfEOpsoq`rUoEjVxAazV{&}W!q5U_ zag&@=PrVy5+gZG^k@I%{0QG$aeJV9FD0K&&*#z}80ct3v3B85^;eCFcDgnEp<27nR zjq`@IJdJGCe z!MW#=K;4DL201hU4k_px?^8KHJ}{@J;ZFbqwR6bb{XT=IK|m5@dQ(mdZuZ3#yHsEg zUY&sS6adgN3jY8J?MeU&6m%4s+m*&mI2?_nV2S`}9OP2a*;e$(rj5kpvA`WT{&WCy zla8Z`a6P!Kn({SDZp_^ z2hERaRXhp+e*>>h)Zdr*dSj&rBOs1PLG4Uj{GblB0H?VhbOA!Q+enKtcr1wxA33`>{U`^JOP3`P`gus)Agk|#xcpHNWk1rKsXct?pX2{fyO(~rNiX+ z;{&xX@cJB6ko?&o0gMU&Bxy+lflL8786bO8ra;3z)OMz0Dgp&8WY%DnGifWDD zdkQ^GHJ5Q#Ic=vRoAVG#sAm2Z=s!FkY$xPlw~W<|o0NvfKixUw^5UZVzbf|bde8$=GU}{yaB1QJD!JeHdk)mU zGV(g&h)9e`6O0Z=tpGn_CmGrYIQr9Aow&ys&VH34P+6SyZU^B_$79F%Py-_+lo9uO zkxD>6P%Jv|4t0zd!M?{vQq+^@t4#l6>%@+&H~%zVG@j+N_Lp0(o- zC2Z_`M7FIU+OZpa{y7~h!F&zkjX%VGKATk+mNt`!oD^mYxv|hMYO8zW>*#gch~>6K z02Dq%xZUrQ(!Ue2`rVB09Qa4Xjc+vZ>yLGH8}5=;I~#9sxUM@%()9}{R@&ZqO0thK zOb`xx5njEh_@2tmcQjsFAPpw$7SE<@xA4sV9oHp>c;t*jjJ$8bE$OsYHj$=>i|Y|s z_-jLJ=$WUu8&_*Gvavr-mCtx@Q}M0ThUOXC&1E|RjxvL_dVj>F@b;G^zHgQw1%6o0 zPvgg04{J4n07`@^>tv}v;$Zf$CsT)rdIOd8H)Yz%pvwt82N zcoR;O!TvC59Xz`mX_ypa_ki>j?RPiUbC9rJB!NfV+z%jocCVVeW#Vi3wVTULA;K9L zs_s1sI(9QGSeJXfLI_)k>VU|4RoS>;aneX+5}b*~-O zG>;T(W@)tfQrpWM5^=jd@$FN1TS4)jk)_FTHmEKnl0m!og}y}e&jPdqY99nz#jQnc zs>CLb&+@VSEsFH}&kOidMV8iUO9YQ=U~C--?_6H-eW+L;J;{neG05O&y?4GPzqR{S zyho{IHg5+UvGFW{oD=l|axv?!Ic#YQ)gdDQ_`c_V)miKwM zF=NT%C4LsH*=Rl>niwvjPbwKYeAxMYg=Pj0yW#ttM@u)-D#39h?2QP{G4E9^d^Kji z9$hC>l*t}Rkw;E`mFn8IgKzd^fSDY@7nv^O@{Cp^CYfhy&`kmInFDXm7oMEfRyK<~ zyI1gTl?8+`O2XpaX-3O-QGy3J@7lY`d@14E+nXb4qS-^JTdyo4K-<6^d6>=@9@Xdn z01`Dl6H33*ZR6E#V)BS2$uL!3JqR5^#bx;K!Y$PY7 zyK+%ih35mF--Ug7;6IBV8P;sCH4S@5wtY(E$>t#8y-|Q82O}N0>}$_{IA8c1SMc1B zxCc@ZDzBHfG55m}jyiU)M+-}po-Qt2(LX+PtldnXXpEF2Yn9=b=~_C*jXkZCUqNjv z+XA34Qff{lWwt_Q7N)pg5TJwos7-dv(-9IFnT_CZ|y zx`YgipJHxA?h05Y-eBe zjmw`yn&PkZiSA(u6h2EJB@bV2D|f;=YKfyWDu$5cJFa+IxzmDy$L%h9)uxjr#)M(p z^2PIx+>d(Tb+5FGR1%>oPT})o3_Yu?pI6l*hFv>M8V78zFqGnd%9w3A{OR5sOZomGdJH zlgS+`r_m!_HKZIsR17&eEIn%(`WBgfdkZZe7m_F}yNA$LUx$24;!Q&C;9IGZJRPXY zPQW@5+O(o%)=bdv-5-|UGyUIcm%|=BwD7fr`b4h_N_QhR(TsK(tT`{TElC{*gJRV+ z8~L7AGF#!lc*7xE9+h%Szp}KtdZ1}HeecJvD>3|g7MWo!#+4K<(y2_VVGv`kE6+R- zHE$Dmki?Vz@=VBG&l>^g2c;iXXO7~jWQIi0N# zx#t%i4Dm431KioP*2$1CK~SJ|IId1F3&*J6N?3fWm1Qf9qO+a+*K^(YBT?O_yn<4=!Z!td#Z_HH zSn&kH<5HGMA%#9genRf*0PR-Z>hHu?Dw3v1AKd6M+O%V|mMcSPYCOh2DbH2Kdi?2h z)Wwq9>-QcQ^5k*Esknt0!jp^&=)6^{+FNOsS6hL5kX>Bhwmtrp!1#vW?H2J3#F&WO zPeI25xj^^2l#pAvd832{MPY%DYPisZpEDKBl#1(Lltp5}=Ex_@`A6ejWtNYv+cG3f z-eNB+w+a9~GfmJe8p`QDK@XOsw;1d1?OvufOra#3CAd(BrUr6rmbFyhBmm>|xtb#| z)utmkRE+X?{#mal@r8xGwftU6l=D+@U*QL}clzG92AQcvXtusg82x^xlpsKauk}BY}>bSJ!?5@kQ!r>81b*OBt10Zr#JT(-p^?)OvE7Qqc5Y z40uyPvDC!ZHu1?g8~1I%2ZbPkUOVxFL3Q|svsfP@&Q(bz`F=zk46ZBJygjX~lAAyE za!;7Ym~qP=TBqY*GS+#t`?y22kRT7(1sUMi&OypD^)|8QekJgwt=^V(jS}q|-O&IT z<9hm6m84geqwKeyV3mdx{n3wV?eyp_qrU#dhU51NOo}sv-RLV}UKDI=NT)1N9Aw~n zS8NPOH17}%KFO@v(m2{bD1`2<&2xHZgfy*VQ=d|Mu?&wN?!u?x)~ek>WpQ;ZQL^p_ zFrjao1E&?jH;T2r4^~@ioGcsm^x!G2Ax={GO%ds{_*Umef!b&=9e_y(S02?v#n*Nk zJTctqP;a`L58f;Mp*kCg2crx?hxqG{a+F2~x6Y}jMM^m-EfcEFozdogD zZ>4!8o6XFmBQukg<~YF!YqA?`&;V#VrqY()CXcU+DH%5kThYp;)dP_)(8>TIqj# z;Z0HteI8LIxx*Ooo%!{zHSnjArKG7dlQWQrhrhTL>>eMmn%3=auH)VxZVU7S+PP}P zl+K3mJes7jL4-*H$l*o++&WZN-VmPgUg9Z3x*YB9eKAmG;^V|7bai;Z`NALJ>5A4_ z3+nSrVIfE@quLZ4WxcDEyPU?q;i+`}K6}X8C3Xi2Ph-};a$8v>W;dy|nopGWHSYSf z*Kcufw;`Gg=M34#dsmL@6Wh87pvt>GGuRdFiuG`iv`i+?Nboe~dx%Pw<}AC55DxSLWYPlXsZDWNORuggqn!1H|qduw~=j!?*xXKVG(t#y)5Y;@_oxqe)oryQQyt!wWL?vg*VpoAb{8iCb) zs}4OH?%u*yx{adG-QC=Og>c{On;w&8s_C$JDjO)&3x$3g+a9&ynl7ClnXSjJLvmG? zUB^DhkSox9JFDA8ELQr2K*JH`K>2agA6oRwUj}$>k+kt|P)95^nrkeRpMP1|HxI*c|iQ@D<}8Jn+`7V|R5N z@Q3ow{k_0Fu~~isztt?Kd+P#iL_?QR$RpCa<3>Kp=+)Fn`b)>!RDK&4ZDAWrGa-3L zaD6ME)8@O>>>@~?%85VL4DzSx=~xy&5~T5-qSiNReE1XZxZ%j+xhd|oeJfZm=IxF0 zpaX;}>P0R_wlemYJI#N?I(^-w*DS?mjy$e9wQyPs+uJh*bY}~Vg#7;ije6FdC-$5^ zRmo8p<(Tk43h>Eevx8W<`$FvUeouG3oZ zd)!Jc_bbhA0NQ@;2WsPVoiWo;n(xZo(PM`DqKn4X1EJGrlKNQU-qE%II6PNpp<3Na zXR!{e6hww6xvq1&u8ZNeoqRk`q+BsEL}z!A$malduG>NIjh3EgXZ`fD^DCZmE4I-s z?QJJnVTcbW?)_`4>#9*VM?LXhO|+N9zi+ya<@+pQH+ts0y7tQ2&r17L1sJDqKzmoD z_@>tD#CnvkGZt~cL)b4$^1X7_eInK)JY|=6Be50PhLzE(FoLXsZezmbzEtb_b`_(d z-|92!I(~-|g|&+B&3s^QJCqEbKJGXj22KFYbFk_sbH#5645X>u$N>9$R=$C7C-FXo z7u@qT7*w+KZbc<)Pv<6X9zaw-A;06g+KdUUTE(HcvO$)yUd z3^5Vqj?6j(UYGktUr3)5o*}R_HfR9sRf)hqOjn!uPwlZ=-m9!}7m;P%_2Y`neG%MP zYZiAGsT}tHS&B7Kx%;R80M}lv;VZo=?RD#zAVVdku-drmzrWxGeA8njqUX-JQRbI! zbNnmFuT#@JNcv}oHQ8*fn6!|rO2Bm8$MURa5|b?IpAoFQIczla)BfA``Fx=2-dTxA z&jf?>bBtoO?h{tF`zmR23wfP)A1{r-o-$7-gI+`6{VwlX*6gn)wVmzs`-PF4A1};0 z9p1x?SGS!vSMg@FG>r>)+t)Y>FshuMPw?P$u6ZJiO-Dmpc1yiN`}d3onh5|B-8xpT zhvQur!m`GK+wBm5cb*Gw{*@-Jq+4irheOr?xVvMpmivL1&{p);`U_|>+gj zZkXhz?astrOVxkcep@v!^;SICevM$NNq|xMPDl0mpxAJTHvm{TJRaaa%Gf7vy->z0IaQB$6EfdE$r4&XB2TL zbdTlUM`K+Oft2bT#QN^3XR9EZEF_p7q-0j6qhTG)ksUfl^ByqmzozQIo;%@s+rDj> z`MTjvbym8>P{TS$ZZcyD6CYDu30UQ9rEM|ObzeSUURIB6yye)|>^f^-+p^if0?U%? zpO_zESQd8EUt8bmJCO~#0Nnnfw0tdjcctIOtHE)(g7t1w2lTAutU7&)>ET~0?ipTI zK!=q6E*0>p!BEe_WJItH<*yI zk4^w*04mosrgbWI)Y|a=i>KRp*12CgEvQsL=&9opq z;B?J%njM5%n_SAy1NC;7xc>m_Rja*rE9<0=A^WM@J3!-T^r-K(*t7_|-zj9z8$j!x zmD3cPJgSv7H@rLGnWga=y}iE@Aq(Zf{3tQ$S^g~WTRm(x**h2;AY*o@Hu5(r2ZALgPFwYF|E77ZF};f=gO7F&`0|s zxD7*B)DE|3e4W;@HqffPx1p}?=CY_^(1q=|1F zts0M+x{pIjQs|6!GIYy{bq!6H<|$SbeDXf(j@8g;);69X@dea&A13Jb2b1_{(>2F~ zRx`l@7`c)~$E|7EYPWD-Nj`-dZj&UE1~7Y6Na~<<_PSL54L0{pE8j>*%ot>BJaxy) zJ^NQvuWH^gvA365f>*S&1x2)bzUVwE@xg3$uRF55_M2)r!!;@a4FV#5!-=7-ngVk}ux_E7a%K zzNGMH#61sA@il?7v&&jJW^X73AbmYMSImAJ@Wj&il3C3E0Jsl@kxm0551SeFuc*8U zqIf#r#MYl`xAX1p;gCtW&+hO(Q^j!Nszx-<{3R(iT==o^KUdZKZEba-+O6CPX(?A= zK>q+q7?DN*;aBCz>NCKuNZ;CO?5!S|Y8n(RADMOJsbD^VR2+3R=-(4y@VAGqW4h62 z5XOIX(*T2v9Q45HUoLB&6!Bk*uWqjNS>Te&0A=1}+Nc4+Tn@OeE|k=@Jw~~G(-TqC zb=dVg-DkwM^GBs`%y!V+Zb;*9hmN&_ec&xSTi5M%T@`-M3=!^Zwo4w_^sfHz!mz@T)GxrQ|ju+CPv~RL$;Kmv`+~mXt(YNrd ztDh2HY1S6@(W!hn-L&<`6-MV*)uGgFH3hdgjxx@yIAA+gmNU8OR{sENv%7}se8(NC z`Js=$QR&F9oHd(3z9_oYjl$yM@=2nMbO4-yew*IJx+k~;9PX9}aK$DplHjp^|;4GqLgCB*WEHz%r!k5p8-(}taf zxQ-0@O(EeQ+N7S&;^S)BGc05k&MEe`CQ_D{R|Ndy0Y^-F)~02d8(qKf^lA3i7WR=8 zE4!VY4h3M@>n_q;=?S`6w}LQsjP&BYE=@N~vW942Lh;ES*CXkkJ*%4VS<<2LZk}R; z%(qFG%uT!gUZWMyQ{gV3#(jO@AB+0;!<|0UO`Wc9;8k>wPvC*Oryib_-Cul0IhRqzoA!H@UB*DTP~AZKdRINJjS%S?g{+qn+uUJh zB%Zr?JpTYH_({v2XVp?kDyj$@`%U_BUCB2oWloC(7=ktd8ZR7A2_YeFk{{V-c zEV+xrn%OA)RsGlSH;j&cA4(2r{7d|Tlk30vsv zbD-EWN-iUZ&vTaY`WCK!#(#?!w^yyLc%J2@xtz@`w-bbC9oXlgBOGG5t9U$9srbuJ z@a6WiEuNIu=^EJd=qvM<(^b?i{CBB0hfZ|%W|<+o`^s1XP>uk>`F{$-@fXBz6zN*i zKC`Szq)Ln#LPN0~dxbq)0Cde~?D>X%m(St<01tS>NNodKo*AIKKRgof7mNoUj-#O+ zE8t%pd<*e6g1ljOrD;0l(&@3c?t)1BSq~flF`uZfs6G%5k023^!;%kf!k1a`j+)*iWWHas+}f!(0~kinIUnIpn&mRF^5?@Jh!=kjH7!EN zRn#ZChs;>~iQIy+W2mm*S=1r%WVW%~{{Y0oTbY!jOx#7!6`S#EOYo)TydEb-3+3IQ znbk44Vz+z?<9`U>>LSV;MU=#dH*Dy>wO)p7wech2?~iRXn+v@z#7%E$%$INvyXa0n zY!6!EJbmJy7+QE%*HG8QZs@AEtPUMq3=W)N`kMR8!aggreLNesfQZTYROfaFPsh~p zUS;ub!JZiL=Y{WJh^C!&5PO9Yfri>X>Fts0(z`IyT@_WGQMZy2pDN+laJ_J>GBIA&@FU^2oitbe zDi`PN+Itgh3G%=SF}rg556ZjWh;Z8YuGUK%i7ezxh{SfwJ1LlY$OzlXuX$IE(uzEW zpHt-Pf9-8mE&OS!MJ}PEwc_n*PD22GZrKa6*t8JCOqa0EhfXZ?9SEH?}uI=h*l)vc``EJq`+qJ?=cw)!S55HBc;<9i zm=PFOTzB@bK;s#z+C`yj`h1EACFJw7&U4WIw4V~}V2eOiLcV0vrrhv$k^cbJt)Gao z!DnzTCvF6a!yFUs`qnRx+{R8jdT7j@@2Vs!w91ihB*077pF?*@AVmU z*(~*YLRGCDa@`0+{VUL^O->d$qf?daeX*iB5Y8}H%Y6R;O1&!*r|%K%?b4y}rK;T| zvl)bp@y7c{>t3%mnQWSJNp7kpA9-=lm(TX6MrOz7esz@O6c&#uUeI3Ukp; zIO4b)--Y@sfY)dp=S^PO*iofeEp())?R=oB-Lszl7^0g?GLmZ_e zURxu#(zBGF$e6RA(tIP~%`;I;s|_aF%48c?$w3)a$EA8T{e(K6pCrq;c?j6R{^0zp znVwj#E+n6KEshj@-aRWfT=4?fcxzHf-f2SHN%8^Qk3mqbQO0DIhY##;6Bc$)af8ry`MVwJ}rRx9c^r=8t8f4%ut@)hi2 zeN*A@inbc3?k*x|r&b%8)a@tQy(V89X|~pEmU1gdFi!(^J*(zV2cefw^CygwiZ(GF zO?P&w87CV?ej&^`>Po;ckczj!?*<9ag+J(X_Px7ia$X_QPhAV1p z(M2SE8{vB^n=25^86_FvyJxm4bk;R!r!qR+AmsF6+ac0p( z3w7Sh>0W_t;hky?N9{LP-eMIe%g4>T(xzmcr~D^iycV}1%b>>C(~9eC_3bI+U=l@j zT$9jO4-SQ_C47?p%c+4lAe{J@%Jt_JxWA8vMZq16MP5f8q#GU0dk>e1)tAX(y<6QV-QEM}d!zobQ4ED`SI;o?UwYi$tLxO0K%_o+Q z0Oxl6boy3=TDe_@-pX`jBXRV|=CgbeaWp!0wDYOo8ifO>!Nz|o?_X5Yw8RZ8(FT`0 zm(=5ms~T9@@b`(d>lfXAn^R~jxqj)!abAD%f5x`wRPg=9y2|iKCP`#aSy4#NNEN@V zY8H`bb6i@-=Gmy{6cOlp*Gu3VT|VZ;WS&?~@*6DbTR%!~hyEC8*E(dd>$X5nA8+o?7apS(6Z{v_ zBDu^i&?r1AGkk}!Bdu z&lC7o{{TvjBo~wX(s@9I?m8b@&|egI-%7HM$m+8)vINNkAxB}}pRww5$ofoZ+TFx1 z-`dhd&A~+hK>B>7{&bpehStt9W{k>MOhG zMP7FCyZ->K`B#Q`%fmVzz2i*-O_tI*WVSE3NDkHje-PjvaZm8q#m^pV{u#d3^q&qJ zZzOqYVVlfWBkvz9fWf^h&-AYt-^t<&d#@H-%V90K++iqp4d37XAPB)26h@nfnmP}R zeghCDk#A`lK`q0|lAB@Ws6eVzDvma)D$3B&{8ou$HS|1f@ z`h~}bbxN0A{|Y@VqwnJ{r@axG4m(;g~ELZqCw;rCCsW7DN`o-5Gwn@J9DqnF23r{cf*CFX#!&fK!V}nz)IiCz<83NP9!Yi~TmS&=oO52e@b_NOEMl8Sy0~Q$ z$L8%TfS$OnI&Tf!={k}|>6sJ^s`O)9-WKqUzOAobOQ^4wV~9F}cCORfy5z3`Bhmat zaVsUWSSc|G^2hi^a!Gt}8dnjaKAal&2(-&9n`kT}gg#@&<>+e$=fYZSdZSp}E)*ak zM?qeHusRifQ<;ZVlF~I;zj>Zl9V=QrQu5g&nPO1mk^%Lk)I2L~Zv?+)kdK`}$E91p z@Z?RU0@JYD8DitM+TJj+o0l=@UKG@3xzdHi_Z~|Jz~hmR=lEBkNf<{n&pOCBVU`4u z+astI`MVE_{7G?l_74kc*Cr@uB@AS2$m_p9sIPLf_}TFS%F5mwts>TWqXi7{7DFiG z@24sJtEnq&W_#y|hneQiimN8s9HJ4y!6>I4GDZb{d3b$vpA7huRJkfy+U@@Uc-;cX zNk5iH-PY>VgmiL#kSS*Mp^ET(BALokfrM9M0 zN3Usf&2ex2pu@{9NE-$+J?dGsx$mO}63nVY6;;U3<5jfnV&>ge-hDn~NR$JB4>gae zd{EPLseiIs(s(43EG1#R03O1#AkNf$L2F^+>mLbBvl%CZzB?fF!SC0#Sk*L*I{r~J zM6E1eAR{Z7!TC{pix^0qB zFyQV_#NcAKjBH^hV(Ok8@ci4PlGY`;&KX2_6~CbAw*LU|jd+7hPGS2Jfg16Fn)81X z`2PSzw7QbjB?Y&L$pe5-t#)4zb*mXPopv}R5|1STf8kJ1@YiCo%+CPuzk{IEKGz-H z#MYl=kgP1DBZ}zt9TQTIPM7RDoYFWrQztxsvt8bmf1_M3qhV@sAbsB_UB2|zS)47j z3zN%mKf6^GsF~oN5xwzM_ljoI8H?N658p831Jb)675HXtZ&9?lKPtevQ|fz)(eQSa zHJ6Pw)L>kG;zjHZ@yM@C)U4VC8{^y6n{RA(u9%n}2dqP>X+j%yZOY`4$8Sp8@OAEq ze%HqKHIeOD4Wx8aTAn732_gk{mQA=B=nYcvR)uY7*LRl<7>@6i=kEor;$qI7@9p&% zB-1>R94(F)y=%v(A+(KbW5X)}$4)Af>Dm>X0`%N%B;#jcRxWRDt*v63&Bn(2iaNDf zCAn=S88<2w)O@^g`PV-72^jO|lXEfPZUlZ+W=VC6+kfBWCNXi5-c^ zE5eEr2Fnscl0@7xZ<Qav4{SLv>SuUY+pEO_Ri*4-)<+RJgs9<~SpmepvqiAxVAU zePYht%JOSTRDi@FC~=MjblNYAwOQ_^(>YFD~aG`SDw`C~nJ!K#H`MPj0QHNS;* zStDpP*@SHxg^92*tNq&7Hr^%Btu|fEvH-l}9E!x#d~A<)k-_F5mjzG*#yc9N;?EN5 zwrMn%r}rgs8%7Vz!o1>&clyq&Gz34$N#Tbap17|z*F0DDePZ8DUGRB$F3J2}nC)H8 zkFM#O%PQ+1AVfh3>6UNyYgb?RcV%^Ibr`b*v4X12&=b>&vqKL~@mx{e+t^)#eAVUg zk?bp|Tm3gmmQySFEjP*$mpRXVE6%PoOS>%)SW3~o_UxpndHH)(8eIB}Bkg*%!b&6g zb`jg_MU0-utiye5EXCL=%H!_m{F;|VgG-uQfP@b>k_RiFYVyrC($8PGxVq8qou`5J zfsc`Wy(^-#zPiybV~nVtK>q-|QPh2FRZN4-^=r%BU&a?U<{u(hBzt8z>LSiMde)4? zSJUsjn|NL2fNp(*oO@T4d`E~Me1?8C}#pO*I^AFJUz^<85af)E7bT&1Q8DF#zX^~sY10Z-m8-GF`CY`WIBXDV1hnPemQNIx*^S#qw$ zT=5?g*fxPKkD%UoQwea%5x=*b{Or7tcpDh6Abu6kK@Y);=^p0x*ILsgPnCiQr;V}v zTU%~FI{LEeZBtaXwu4ZxcxAGcCyHr3mm5@!aDT$SLh%=o{iUhfz!Xm`(k-!7`Fj1@ z^yp6L&PvDF-wgbF@XNy92(;0(kL^#fGs!QXb!?1`#O*xB*~iQM+V{^5c>d2<%vyYL z+(&Kqfl?dh9C~8EDm5vubng#%V%FUn?c#fuxrP!|_+VG2Yw90>U$i%a1)jEb6}hpx zYnb6_76SJ1l^aUDm~0=S_UT@BGYie{9WeT!O-IH8c_u1<5uLykWR z;>Nvk;H%iQn_GFcOB?BbcX1vIKn4cJ9)mn$ty_F#_-m-*+-tUXA%-MP`wRXI02R|| zy2phzZ9~b^V}@&C7!4_5v^GBIW#FG`^BpH0&7#eCb&Dpn`&G*b0r@~<{9i#*+G*M@ zp%46gBux4FNFlI0=DbVC+Aoo=!Fk|Y*dI_cdB;lg@+5~~^HM>(YN5tKQJvVX$HF&W z4)HbmXxfd{&X20VrP|s_GsI)43^uao0OJIERB~Hln7Z$S?)2ND_7{R^M<8yE*Kb01FX>XzaAqu;o5}J>Sm&=82A!uvYjJeYTr`e{l~q4>wXZdQ2;0W7 z-(T6mhWUKyly3S|x*{$8@wiFgj^FqgI*9T0tOjS^cvni0gtJq0zez{hIrG`|#H>bGfUaU2pLh?Osu7#&9*wdL~oPhGO{ z?Ao4*>EO>C zqTAgc5L!s^!*=N@w0u4Z#&OsR?6s{|#JWv|#hkaRDrW;6$&u^mD-O$D@a=|)EGeg{ zyu5tOin%8r*0dSzUJ|(Q-lJ*%02F?vBYnr@pXDRl>r!j2E}t-x_g%D1l~z|iovX$) zZ6X+wTh)!Nq+%U*@JaNoD{l*0_=4J3)Lv6EKI9G2eREAjwprG-3p<~*zxWG^QOp}HJ(uKxSPx)rpN=|Tis zxRh^Rgdy&Is^Y9>&zyBH3TyF1(#vZj2m8SReWZHh+ZE@n736aLmMC1v4mR!Q@~^!# zoBbx!PnoX7eq50;#BKo`XB~OZrF^BOYPTAnk9CM`)nK*US~HF9frY?+I@e_?uc^f8 zT=R2peIzmuDU^e^pYW`EsHOq33Ver#>t9LgT4$C3g;quT#qslgRpS0KEF1wA={Eer zG03jEav{^PTfqB-wz5mmE0PCphP{Ks>AS=1(fyywqxv4O4I zO42bH2RwJcta!AQlnvxUpmpn?!n$b@06W|ffz;JP&_sZ)2>{?`y%;Ma&y%>edKQ-( z8Ds`#9XY_wbi-4)vWa4c2p6DUwap~gJGQ{P7yY5$nf6C%zSBIcPxnCMHK!=GEZ#NM z(IMt%9YU8lro#h8ZWeQ&*A<~_4YZuG86AnG7SPB_Dv)!=39AtdZ6F&EWD&ySt!~-c zC{>lC+mB9ps?oA3A=LScz&PU-Zac}87*)1o@ugt7aI^WU8A$_GKILrrdwK(+0VXYsVI?E-hkdcXYwP%|B)w=Y0kJn-anz_#ODC9Y)Z$5;LBl zb`|6a<2^%Ayo8oC3XOyt3@&gLd@}nsx zX{c5hgl-`6M@&@4`YSQ#4UNtLClpzDCt1C>b0x`$9$cpx1Jb)4AK~Vi<*e7C?zWB+ zLxDr77=$Uda8|w|->9Hg87=vH3ia!+6HjfUt=n6(GO$$}er$TxxO^v}+sY@3!69h= z=<8P-b~X{7!;0jb)V4bzPRQfG;VAJIwfnsvNic#wdzr`xN1zm|p?HercHC+L8A$&C zR+++&!n+}L92Ui8Auw}{4o}ckjWblWUpLEDJNS{vmUzoQ} zeJcxAc>MVzW-5f_WBS)!r%!LXK%{~>{{VPb9pYah05P!1KQfNrT7+p+;W)|NzJE2b zwBUU!15#hM#*o{vQPVZ5%>YL-INIIKcu&MH7n=etG|4_=@{P6WQdU-Hp4s#Vgl=Jw z&j%7pj3e!Vjsg5|YrbYNmqEth0T{0>_X}Iv@@JCTxuZyA6ENo$tNtNc=<`pL=KT7K*C(043mfOx&xm|C=(Q1sh zvW6Q7;+%cZI5T+^x_e90a%Ti`E2Z!y$bCK0R011;&*xf}+BTUAd1ZXk-Ai=hx_=M7 zwV8jh!y0bwjyR%K0H!aJ%182J-0Xg3^!zJFOw@L>uaWby&f~xy)h6p`=krx^&Ccp= zt-DKfU6iD99=)nS%$oPa+Jx+k@!P?iC>?f+o)(rlw;4_V##fBhjY0`y&z9T*Mt<)V zf;_~1!}vye=ZXO6?XBMGFFqDfiby#)=qdo{81Fl43fE7XH;}c{q%xiB7(6MduIACS zGLveWgmJ6%Ss4_zdTj-T06SIJ?pANI+GNM&<8kZs70GDUclxFIoQGH4<*qwdTPCZa zswKdT-r#PGL^7;D-mHez^C&ZSwp_q;y-l-UK7D(pD~B^`c{BtEse(GB&V+!Q_XW8C9xI_{i|%B=@PG( zxUNX9<+U4m7YQHCPDf!`I=9*`Viq>Z$KGOk3IOwe4P5H+Bh9QzBoD%XI#;7v!Myp= zzs$oUHJG-K<%n(-6<42@uJZCAjO{2eJtzaATU&VGBI;mH%;k<0b6m~c&8kiGEV7|a2*Iuk!55ppwJ_08X#c-A^>nVhI?>M%Lxv2ip} zJM`C1V@RO~KPcVWn!5F&otEm;c}|{yS10D&z{|c}%!6sl)d)2JZrUa?Ic~UK^#t-8 zy4ImX9SVQyL5Kng=m@na3{#6j9jU0gEp(l^XRm38aK7jB9wz}?yw_;G@3yETK zSC5gf3H~5C^sdI^M6!7N+m(&jU|~i_)by{OA@~E~+bDk7;nkkjWhPDV&faf6k}e3T zd=Fu*_;becX}b09p>?JkLp`_JF~2 z$K4!^dRHy1s%o~A=+^%L=<>1@jzRa8hjBr1)XTDgW%!G8XM2Dk(o#!jAaER&IUn7~ zHQ(F$>uw;oI85Yi_4WE!nQ2}P*0lSB;%#?TZ9x5y+b;OPB0T3Cy7d+4T4mZvr$;nV zFpY4ZA@!gdvCs$-D3(WU(tjE3Yvk_$=~j#Jx5XBEs@uzP_NlHdAe0Qu`QP%d`v^;W zSFw2W$2R^L)8@a1878@gBCx_&8_qCTbj~{urF=trvV2|fB--|uCDxaIujWfBkOL6| zXu&|F9ysQ-rmS>PR!8a7dfnuP;&WrTENT(ghaBJ>VDax*9wXQ7bR80HV*dbZG@DW+ zk@NF6Vm}U*@@I#wzAsCtTWM?K2_?EQtD@YOhxx{4c7-Q2PPAYw$m?}PJw)jU~@a^Y}*TfS=_Bjj!B~unZc%3p= z`q#Q$UFrIrnxP_8jrXX*1n1EI0EKe$X?_^{Hs-YQq;y@vHQIMD><9I%D?2}j))$l8 zzP4%yZGVCw@so?=~$WWRJ`!sfvtF-N!91JPq*pQnQi4|`H^}RJzZSdp6*1j+B)$BU7_BZhp03z!!wnGfW-%i!n_*3?b@c#gdY@oPE z#+N*UB_?m<=z6O0o;p=HJ0^!C+Ab_FROBLgXVi|Lm2>((hFt1ei$bQ+E(hLP$GZ50 zx<-?6t!p->9X%yfTc^&#(h_*|ByywLy03@-01-6b9O{>8rtfGW2&hI*PBXi(2Or9# zm7+`uJQI6p!)4lC1}6d6AA8%{tK0ZrU$u3nuXMO}R)un{oPz_pK+w z-Wavhwn1(4fx@mrsROCw74x>4`&WE4O;+o}SJ!%!x0ZJeYq{-Q$0oy$y@2<@uUfV7 zg@&gQztdUT5(r(3!TNfBR9TI}Z*#?dIcWYZ@O|taCGchS#hr!b*jg)bysM|7BO^HK zE6-=N_>bZ*4EbIqw|SQ93YRkwvaxOe;A08*g>R)>{9-qjvc@I4(TdIo8B_*MH}ZiZa?y)m zxgq5MA75I{yB>C-GjvSxj+hm489#Ij_4M=<4#;YFk#w7-d14?b#~sI^^y9TH=fvGI z*gTix()Mkob3A>yP%9C5BXpGx)5B#W}qj)3qfPdPy?`g zdeVDQ$;6q)1~E{5+_7wq0Kg>w0FgivoONHPJt^R@;A3yDW{o-#9qi*ouDG)mge8fO^ma@U+GOerEb)Qs=M&kg}=69C~_C1f9?f zlhToZBms@t{3*N)?KtPP1N*0`pa$$=xR&QV2TFJt?ym043C>WlmMW198rw$ ze=1DzN)LJfRb7CPM$yGcKnPim1y=-ls3jSTB#a1b%MP zCOH7`eW=2Xxjp*(Qt;AjPrJ7{rVg1u{-Hn;kU9>7r6%B~c5oNB7(a$PVw|{Q2Ls-q zknWTL{5}4Z0Vx9nezX<}2_rt#0LD9W+Z}2|D%d!|#XzbCWFT*Drlwxa z+JF}^{{XBV4I*;HXQ0k%Ac}x4bGN6`ow<~T9Q6871m7+&Mt{P9s!l_2IxR$moUy>q zZ~nDPob6CXM^X5CPy=ZONc8pmDpENB42&F~Oi&kgK%fQ?F`Uu|{ubxc(wQQV0bX&% zDz0$7F+dMi^-ySDBLrV_kDX%1EY+-N1*O{)RF%0o*48# z)Xyt_`o0Jm;8OG+*!<`L2z|$pqq2e4lptqa%FDN=c@)(d^*)Mv~rK3|s|y=uoi`g{6RWmk4{&OZtOV($JdZ8U|A15Sj80MH%Io zuN_C}?LZR`xQY&W>+9=LGXU68$I_6ZdIQKKJpmmlggU-YD9SbfF@r!779t003Cr| z3t*azwgDKKVr?oSjV16_Jm>Y|4Jg8l#pbMN}el=n+n?cXcc);`>>Hq-j zDmPXwu^2Eo2OMI6FE&SBgPe|)25_-~Oy|NH&qXt~~~55&zZ6(S8!?T9%;8aUAJz(r->rBe4p4il4=w4{kK8 z+iN(ck!O>YLI~KtySjcA`fZ|Ict=muEaa7}=e>#;k20Z^RfpXrMn4Lu{u9tIwK?za z1adO~HhEbP@9Ds=!v3``$Lp3qDE0pU4BsSD$$fPt!ohB(p-vC!#d+Kso%~TXrJQdI za+`w?%BSgHr9T?9ZwF~!8Pu9@B02735eeCRvY>heuZuLF4R|{JQrKz=ScAE|&Z#LABF{eapG?Scv{cH zmv{F1iI?o^aIU)#>0da=NlZx+Ey+X#HKeJXe1X ziD9T}cULwlrWl-`G0qs{u*Gtk4vnj8fuhl%mgZgCV@QE2%U<*F_u+4dUdvFm)F5kH z#QTc;0Db73;|0oT7H@bv!xPD9S5n_3(q*CnzC=;bk?m4Qi)VVa8hyzVOytQS`+xz+ z_N@E+4O-&LOE~odYb~=hWGTZG&p<_T`Ui(Kdl`(klDyGK{{VEp;&%@J0EKaL8y&xf z^$1=|v1d4JG@??t=%=k9iRMXTw%)DKFze4edR56SG|vm#o6CDq40EXkao0YTpKW2| zZC`EQgsl>7;}XQ&m0WOh&{1$Y?*?gCuO!yDjUj0w{mX{q9ax{Ct!-1oI*y-lX*HCE zqn*0-&%S-lc+ZG+4~ZHyH;N$;HL4QQM%{?OP<^ZGF9YHa57@xTEyRs&1NoA3<(6EZ z&8tTAGb!45e%{s?Ot3VQ5trH1HL(tm?``($s63FQu3PVI{{RYt{{Y2p7NIS&TQ*<{ z8OPlN-kquHnuW%W@<_ifKJxZYddaXk*cQPqM6wgT_+R43;a;3X64}C3<|HZ?JTN`@ zubQ-P7in?oNd@aR-R1Xv(GC7o@)A8#b}ZE*m}Z*mmh(Zd+nkm~WJeG(CR-#NVDXMUD5qnc~foIjAmr4<; zZ_B73G=mw(wRY00YnWE2eGkt60269b_&e;kHVGoS{Gjb4B=q*LJ$+*LQuA*v3vF%2 zUEJmRV18BlUHeJD!|eyc_O{a7puVw0l@bWRWJyUJ`sbkfSLOGKHU9v&YA-mFTg)1qo4jPiO(D}Izq%${q5lFiUpUv`$)5+u_f-Gn&rfj|e27(0?fJWp!o68rq2<-owQUHv-FF-y!5A0~$gK<8%XnZwhB7we8R35_ z=ht7EEKRhbV&jdt=i0JkzxjN*;#kn~6nFmsdb8x{Vvj)Zwe)v7oOW%Dge6=zZ=tU4 z8<@2AXOhx3a^$N8{on)Myeb`T;?DJMEiED5iNuUD6nX($c3vvHlH@(g<0mHv<^KTd zR~{n^)+UJcJxf;Er%9+q9_bUKH(kfm>0EA~qxg?nw)<_kaT~WRdMN%QT_^5!4-OWI zl&E5Q^exwl<)!h)r=e*lPKtBXf{HPS{rvLxwBcHOT7v zeX~Zh!6suP=Q!Gb$gX0@R8-3Al0Jb`j+mG?DGVztg z?Yy?u&j3>>Q6B#Qy14EIcs;ko{{Rx{zD}E`O3_)XWv#azg!+4bKT6nt9(a#XzJ_bU zl0_1X#f;(q+d(xh0Xi7yk)ko=3ZeweRHU(94$vC<^Ivz8eE%Yer{19rt&(6qTFm7u&O znkK*sxasd(THo6II<09eA{onYI&gie87;L4ZQ;6C`6R)191&3|NDjMC@ZuzRl}7nD z5Fea+b67({y0E;>!u*612|O|OH9&Z_<4u=kqZyF~PX7RyZat~8Yx<_I3vIU%Mx!K? zjisrIg>+$puWxM_BX*BqX$ z?OY7EKWYp1Sq!C^EQcR2HR$1*YV2JL8g;$w&9p*iGavP9$;jznPTT5|={hZ+6vSZYu- zG6p9In}0)F_mQ-=P~B-vBXGcy#11}{!^-5*r!9=15oyOwy;-aa7liOO<0ICq>9&om z+{viRGx?x$Iw!XkzjNXnIW48Oy`DFb7YoQ3;<AG*GS6_aUc zbK%WSOPgdT=Gr$8mw4ivdKw*d)r1}$)85|J>25CODj265R81lhI}DM>A4>JG z5{0i&#z$$U_{IyFZD8_t%FF^X^go4qGig$4TEtRnOzUo9RVug~4x+eiC&G5RN!+7z z#;0R-U~9CGQM%KiYsH(*lq-CL1nnagjwwaEKq7Y%X_|G4Gils1MgRbQJQ|~Bl4@3$ zP~16CyIYaat#5cb*6YO@6Wl`_YW9IiZNqo{^H-p-`y05DGby+j`FQ8)UQC^xnX%*A zrLTxD9vh1pn%)Efxko?)x&R-#02YfsR;{K<4dVecXru%ASAtvW zj@PX^A36|0!hTij8fJ+l(Oc;d#{;f$kDCIxXAVPS%lvb1sA#w1YhA+HMcf?+^sSE$ z_~z?R5ne>WuG0!L(Bq|g2Z}VeeLg8C0%cGYNB3j;SIgSjpG(#zgXi*h22chKZAKj6 zeI0jnzAPVVyNzAvKQLYj`udN;yq8nc?ff1!13ZJtl#vj|K4JjCuAjk|g<}rE!i)ox zpYztdtKufFWvX4z5poha0|goCz46Cipy^xDpxpUMk=S^04K~-qb87K2z1pe(0NPYH zuhOwn(BEC7T+A7>gY$4J%Adsd$2NKL;~)+O-_E-)2^Nt3w(3P3ax=jz(-qrO10^0} zRL_60Xhn(%pY9+hw>>dl9j;j$?QY=$vL~8baOW85UZvs9UfWW!^5qIQ$?}uhxqlwP zHlM4lx+cKro0)j)(zqiYSq-q$mr_#~n#aq8C{o;#M@siiI^Jzg!h6YXGjSR&BOHD zmXm(YzMz`!bs03@5hvKBmex6CQvx6E{uR`CL&km;var5W7!NE=tO)AFb6pF zh^EzMa=g5Vy_eGhxh&3$k*C9S)Aa?F*{5q?mn2{}p%teqY8qA||dZjs_J_!573*F2?gMxt^!Xlqn zmI+V#r6gyd2D{&e8hyOJJkgSP#F71|5>H?O&*_m}5_XBQ4~;@CYscD!)M!M7Vng&= z;Zb!xF4V@{1{*hb0lEtHj~eOs7rr{w9T4nUN{o7?asL3>w|ceEXFgc-74UjtIId+< zV~Uf#VqV^!io|gwBh>mh0jP=J7|1FEJ_>Y)*b$A4=!-uN2v=mlj%k zw8%~(Y<#$)%F5IGJ*B*kRJVWKZ(ir=SrFdnz8$>-PeFMzDO7nE?&HvOt0S1%(DZ#% z#CES_6xzqIxjg_QrxnviEc`#=nG$KEdDLKIisR#Bq{j=rL7|1;LV}5KhUPfG=I2fok^tufMHbVz) z8=P&)t*4hshFC7`6*ukLdHJ(fZlbc)Jhu6~-ur)x6>Zpd=#FU^HZ1(s5jXn6Pu>gb zUe9B!=}%{GWoK@p-awgkO{3-NGhS;42!l zT(&o)wLQM(^4!N1`W2X%g$w?DF-^aRSzRC_N)aae(S-wP_04j=8u65HiEO4p9jN=* zUiH=_%dgvQ(~;yQzDU)11L^5rJ9?h1BcbQ=X;53TY7!KT=O;gS*4%?r)gz8ORPzFS z*~WP7&2<{z!|VMj)6Li6n%N)bK4t&_b*m5JT?b9j?W}ZtuXcH35XcHTWSWM};~Nm$ z=pSO!<-XN_cOs9J6M>ImTm{FAEUa%pCkVU)j()X6Q1MOPqbY_$@~VC9=O2bEmDcQ1 zSjF^9nF{UO>Fr39(XKo}6cNFFU^1SV$rY0cj{AR|CgS;Hzor_w{{Rn9HMOWSE=kWA z$iS+amFO1IW90r3+c~Xa?;NwK$XxL@n_;C`@6v+GPzQ253h~`)>952ROP?h{>D|36 zr@7TGUJtStI3vq{b*z~_&TJvDiZT1QEX-@rgcMQZ)s~|cC;KdOIO~k@z)scP!Q#6e zA4hvjG~UugQJ9arp2E1Bi-I)iLVd;xdF_g+4fr+~J9mEw$9h*In73}$7U;JHIoucp z7|l;>dv7eV`F!B@Zsxi88sg^Z5f1f_1h-CoE56b!^qYBZA-EoFjGO`6KjA@2HzCqq zIHH)mUSr$>0nJ;m(X}{!$dCaS+GO&6f4jN9?Llue03e3|#z-7-#dJ2h{->zjLjo#@ z?buADuN#x4a@1#T8kLUb{pRq>TWH4MMRjU3Hs6?T_8-czwY_`9dX=n*3p`C9EW>O4 zLG`VzZ%Mq0IJM0|mTUXNxT*Wfo}_wuS1WzuX)gqNb&?{*5W(CsN%j8#3gx-$MOgH? z{4*znyd$IDUCLec6-={z!R8L0`0HO%{2aRQtT3A$a@l9|?UUu|&9wC&-N#D#qe{G& z$9g`OXRb1sZIPoy2X1_$!2`Fa;a^C2BJ05#3*Oq@yb>U{Yjtw?{o@V>e_z79+*-VB zdiYs#ou|Z4hyDTanqGa5XN>O3!2toe_3Usf=lxH?GkiMIrM9udX^$eR$Qu&K$Fq)@ z0=VxJc(YQq)L;G)?MLk5-zcs*Dx>r#6_YoM{7>SoHEnKK+&n}RGkm+T*p8hmmW3%r z8_H2`=OyADPg7|c80{n$?EA8MZS}zIUa|00Eyj&{FJuBAHMj$kG4Ebq<9{0JR?Qxm zmJxpY^wnrB)06=>hVUKMtDqh>016N(qF`}sJnMDK`$&$J+WST{ut5IPr1AEU8IZ+ zokEOpT~O5=Qi<5=zBTapoQ0Ql%u9!jPFvXgyjE4ui*=jJR~CsR(a8}TG5gKG-RIW1 zZ5P6@XYDr7g3_I(yPw0_x;yJ#YR6E9Y=uO|RDTkVoK=ug(zPq=y+%DhRnw$~(nZ?n z%2y-w#~$Llxcooiy%HF;y%sPoCqos=wnGK=#&OTCDQz`PdsDiC*I0%>CQq9xPUZ{B zjAVh2YUwn82k5%x^ogl8$q|r#NlGfCaeOP!(Ju2^ud?^L8ribwV07#iHWRT_Ka(62AXLcv$&m7@Ldd`pG zmyUFuI^$CD4xwvjZxH51e?R9RzyQLJ&x*fk9;Bpn6Y5q=r4w=jhB#&z#?#lDzu+s+ z4%_&i&TW`yV8}-R1^J5}-7CT`bp2yccd^qhMkHJ_^g^Sl1EqaK`#Jm~)Ac*6iS=eW!?YTZrVkg62De8-)tEK3E^c&jfo4KcMh|0VW8`{hABADeE$Fsp+42lUiceSis;R#>n3Ys zE*d3WxFh`bua)|*DfDVfq4d|ny-UHGMe9AS+#XS%JUTR+yA8d+3ih2jQscx8e`_?5 zNii)O737Y<5ygId-e|f#i7lkLh$znW;maQR?Oiv7yl1ZXdP(kWwHuZpHidbZ?I*qu zAC+S|9gDH<{{XZur9P|TJw8jBF*ci~JY#7JWN96U{CLOVUoOPn6PDlmOIem!?*ktp z@^Y*?`(x^AU0U;A@#Xy5=B0GTycf+0^7rJlRN)Uo1ZVnGqipSF=uzTq>`&n4| znUf?R!>x6fem;$KwbR-!I(Z@}8HRSD@Ay`8<`Ex*e`f6-M4wvKC9{-DvC5X;XWBQG z-;(`@uoyl13i>0&zX!CPOGviW{5XqX_VI~~JDO;mi~^-xo-xn^fIC-&_3<2DZDK7i!k3quh0%)CLvbRksh+zF9ogyI7_X)EABDQK9w4>whl++~ zo&YVbP?U|C0Qq;3_l8DmozlD;dugfZ`nI1bOPxAJmL72yNB6yrdj;2u^=}z?yGDmx zk{e01=~>LEGOWZeLEG+%=uXI%b5nlJdZeBkxxCe`rF&y0(F~_>1$uEtKHQ>M4`p%K5EVtK^M=K$cDCAxlPoeKvw%#GtGt{w>wCNw1+W{gDzkRq2t}^RC}v%c?x??P|^Jpcoxd-kF56Z;!Qf-eo;EvSoVp7JIMB(ku{6A{>UHRsxvg>8E@T9%sz zV3Q@g5W~|Q4Pto1Q1OMmkNO?;(Y06%eoD3h1FE-t`_@jMF|W1dN1J?8zVRo6wfD1K zU1x*^D$q!;^P?3zunq?vwbXn(@hz?O;rn!->5>KJSI*;%aLxRy$u9JH?)4#Ya}uPJ zfw*njxKIGaUBA($(;>IIh0709rWLM_VDVH} zJ|K!`pD4@oCOxZ|yfW$<92YlN4I#8bu||6lTV5TS_U>0(j!?1M52a)TjNHv+zc}1} zLE5#a@f7|O$?QBgZLDi1^H7aqwT1rU4a&iJ#y#ry#9ssII=-DYrElch#ETlm3NAd< z9RT#(TM*h^Jm1;yNZv$j%)|_Pb@r~q#hT@=V*%HP6QHS&J5HP46jZ8OC?F$^HU>y9$` z+x+X-Z|1+hVzV~b!mr3WU;s^W&KEi$&3#MaABgYm-|TTmYY5=Vcy^;ti&E9%x74rh z<(qFsC*>8($rQ6hBPd-Ej=TY0jcBINO^!2#QUC(6oGfn^d*|%!XKQ(?>-NqtRyf=) zI3#tiqP1(aNZls+E#ZunCyv+zSIvL3{-JNCYWm08LESt`s>Ap;`u%Iue1GCaxV3`T z+=C>FH-+dnjuyT*Fop39`g|YoQO;OuesmURTp(M9lv{7)HpWcLeY>NK3sbr>s*qJ-HqA1VdC9( z-%b{qM9m}?n2H$YT!0s)bvDv?!%((5malOOdB=eoV;J`Ku6pk6zq0P-)1i*sM4^$f z%VNC$09Enti7vFeT{$LbUL3Iys0IH38aWAp>{^zq4~JojJJs`qid!Rt&uZY)#Midg zTFw2`N&lW7{6pUA1v*B*ESBxB@fAPxw*D zXm*qQNbtU^KAooP5yz%#pYiPk(#7SZx&9oEgm%xZZP+fI4~gv}whFGy6|kgdXwQ6A zNqjqTcWq~=+xcrglQLazbp`kba*X}m#EgA9R-6THJX594Qz|C~m>xMCkH8vEAafol z(saY(3#m-5335n15Y!gF9Jrdg6>=)29k01eu@pD)j9NxEesn2fLHkZ;)r3eN#-5EH>1$e)TQ&-b` z6S6xCmz>NE%Q(jX=WxfReO04>!aZrG$)!gTSa%Z!CVxTpJc_c>H2lDI>T=Y zMq&pX02O}#1tiy#O8)?45;LLdD&;Gg3l^)WUL!>ty2cwDIt+hG&YtgBZ9e}1Ptfij z-t%gmq%n zAhXpaaeL)}eq4i7YAHN+MQs;+(d0%ygqovib$e|jFhk|csxVuM}2#C=i;-Yr8* zSmcr-QNsp}Ki)OS=|2>_L9FZ2L2IX5m|)%+grx7-KZH;(XCu}uZl^ItHnn6DeW8Rz z2Qjkr6%M^=X{lXHbkMX@NwniNM$5L|!1Su?m~1)yA~s9G+$rRnB3ebb1*mQFcuYUJ)CxbZIS zF6wq{5y=CJ@9rHM*g+fl&Tu4R*$Nk>WUagww_)Q5toYp9u~j5OO!EH#5qN7<(=@x; ztuDp1R`HxE2kdA-KYp+mM@&J<7n)Cvx;3#8(WQb+g*i;kYFq0kl)=P zcNnU$cpFdB@4Pds+{7ilp8b5#!*TM$9Jk}&`)zRLKy5j&JN-2TrR(^_d4^!Cou5|nt@SIv>PZh9Nlzfb@jia|*e=3BmXYEfs@m{^AU+KDc+1+zA z!LyQBZ5;92IjLWL_-sd|@D$PX!!&?-Y66itCNJOwX`>5L#(gUJ#!4 zLL-va;ez41mK+W-U2qUx!ty@O!v_Z~{{RB7i2O70Tg5sKr}hc-Lo^b(XW;XJ!NKWX zlzutK_GcG543@}QVe676fs7rz5%i~N-YR!rD(ybP$2-)H_^EHa zMW$-{HSmIXrAvEfUnC3?ao(NG(mpPe!5Yo2g|w31PW*1hae{p@S{hn-zfZPvX{%ks z5g-60ZP_*5O|0g{?Mm|!e4L!FKDCc!vU_%Et_PTLv>v$?ykv@W$>aEog!ub5B!%%3rKWUodQ%H7z_bE?}34mPkPo=MNA(!F+VE)8=? zp2p@~%8D6g#y(zzR?sk%51sCOX{gNq0B@2tYn|uv`c{sS;*E7R547FdBdma9)Q?Kn zx$wn}tIx+fIBL#<8Sk-W-$`0Ou`d4S!IS*F<0ENk8rNWkT=&pz{mx;GM zZR!625qvWx^}X{;EF05r?-!q?arWK~{@ai`%n(Wd-2T+x8GJmGNtVheZdE+QErK}U zR(c!5-aT9T1zm)8-qq;9y_+fO6{N6=C&)3Q2W3$Md}0Yz{wZ_c1E?&U$Z z{#l3QG4>Vfc2*u1y|YW*E@3oMF5t`c#~zriTQ7tD6NgB%vD7Rgm3)OMAqVH&I@aEk z;Jq71o5<7QF~Fm4!`Ne-dJ4XC6O5lp(ivJuD$0X^1_o=U@DGP{-|UIhLg9pr{csI; za`HTvG<^9#g5XoO2|Uj;0B0KkKT4X@z?RVoUMGpnJgXw}yW7xLK_!*lrK3j#ft^lC zJ=fG$Tsp1xhh|ZuX}r#URmL&uYoawTp%SHSPG`gZ4Y${?ZkJQC3O9xG_hFj{`B$px z-T=_7W4s!A`Dt+y#QQ!)Y##N4r}*zkv$G=c9cLus6&zsu;;;Vz!p89GX}3}lJIG^0 z5^W9Npsx7RJlRj6>ko(C9n)TBg^W|m#QOF1tPc>K3&M{Z&3^uF?h-H=lo8wxfL24x zulT=w7Z)-3drwv#dodnli`1xd&|`y& z9gY`h1CIR#Z3;$GtI)5dYC2}0;wdj%QfN|ObLXj5`~_9kz9ijVUA>Nx7%{W$Gd~J( z+!~tV%HBJj`rN5^b+s}TaTp&;+_cnm?M6@R<+Fk$i~@GXxY_HP>4Xkfk1M*|o3idw%{ijpVqHjOsjY!&ieJiH%?+VN9H$7XCsQKsL7|= zGWo8MDDC_-&=}2os@zOswSlqIo(?M2vs`j+fs1cZkOoJsbJu=4x3_sMbadY1k1+7R zg>!T3I<@rC&2i;^>yMFeG5*zAndni;ESCXf{oHHc)b_1kDj)f5!;XX0S0St384}4? z<#GXhRrsci1SFQnAC&-V+-ecWAQsT8?atyy9jh{3R_a@%`A3)LsKz?(IO3~bTmg`n zLPt3~VxZ9_^L2|z?xjS8N`!yFTQxHH4JrIc`%}XHBJoFtG|%jdQ~QfmMDoWWN$;B7 zlgHjF5=SAHHGjJ97bge(?ge?qo2`V^?;v@$t;)vs{%2DduB|m4Jf9_C<-dzL507Kg zzCN@)=6zK^g$$osoJ!APswLf*a4=X^$G^UnqdJAd+*?G!{?0z_Hu&0{3nGE~z6L-Z zf~UepizI^^vBP|)9@U9Qqc_J-3)==ZvN+d`a2%bvwoj9Bm%N*K7X(2)q&7`BqD{Cs0mC0(~nmK9%tIi2NTB z7k5&{YXLh$HaR1vc&;bJTCaz1&Eb<%iPksV0=`EbIK_E3q2cX9FCl#QcuIvN9LM=% zt!C<$T2`HF_Bol7NtiN71~~Wjto@mx>({NOU)gE*Hd`RLR#06W0u!jp_QiEj+v@i= zV&3afVv{oxONIxIIqWOp`^$H^hG}BdH#*8!huGNqjySDf2kP2}i@8?fd$woFtH?+l zzbd6d#HpV`-{?1Xch?i?H^%LnKi+LS)VHy&LK~ZS^)qFuOR>Jq@)S7b_#=+uyrWq0 zKDD6uk_|@2PHpMTl_}W z{3mj@M@=_&$&WYXRmOVY*K-HPe+m|Fwpd(8y+%gB&7W)vCc@rAYMvqR)RrQ9J9E98 zmfQD8?s(@lr=VTvT5NIZvfJDFn9E7Clb+Zfl(wH0J{rw#@ZTc^3_eD-Bd_87HIw3x z7x)6!-U}-Wl@Uz7Ylwgh2flh%Ve&hRjYGnkg~!^YPbDVf?`~1YTxvLiN6fzo`~$4`zUNq*PmDJ(pxg%h#6JoK+9H=-Pb*w)PU1{28nX75*W<0yemQ)~p*Icl{ABX2&^YAZQ zyiH@qHn$duY$foHqvjOh3~*!QBlvO{k@T+v)2=kDtuo%|**dh5MB57$Ae9;E)K;;m z<+)KabZL_Bee~A&wU%9>8;z^$#xY+)_zcf)9rcp3#ce*HC&|YVbp3K`#iZ9XE7%&% ze%ECZeB=}iqz_??`wH~m1>fj;wbj+XhOXZGRBbimXzn2LV^og>oG`)Zjt5*0;-ace z1@%2A!)M-@?0yUDz1F&OI?)uaBg+O&I8lEP9MLTAWh6 z5jP?+&V7b>#bH76R8H4M>Q;9=qrzXcU+o2RqQ^DcX)hEJuSCXW{m;8&G+pG2J0C?87Ng z2PcEKAAzhPKZi7(E)5SrRb)~3&)g^5)Sp3IFT|}VjW@%#J`__E>ld)YG?B6S5ji|| z%L9-2CtHZKHmUgyxuWvd6B#}pP{>b20B&b~1>wZV6>AFq+rxbS@)@-5NqBhRa z)3?9iD_2$U=BlyG+HLLJXK7VmGk0%8pXpvc@8au5iq6|s8l9|rNkTHavDmgbA6n?( z@m8s)+4;VH))Bt_-+QO!$I`NRNg|_&Ow-aWyh(4RS=cqimk&PYm=sqB*XG7XKDF0q z!t%=h0Bmg$iO0+jA9lPRFNsg#eIH1c@;RQ)U z)t^DtHA_gPGHGa!a|`m!jt&ZR>4U~7bmh?x+eXLFHeU+-QE>{)m!dU`mBDU*Tvtn` zcw+wmOoYL6cI?b~&+(6~L!)@A+``XisH<>Qw&8#y(N9Y2be|JJJZyp9=LCiTs}cvN zVM@{}=;N=vDAH;o>e@K6a3sR+BysrFdAuQR`kvUZ)-ApLK1yBwKdf zw`d^#tHn_94dt5JM{MDct1jkTZgJ_yC;57VO6+HlOMl}_ElsqjBe%k*?&L86z^<>u zDXLv*{{U^gL|c|}t+ZpMYib&vkLD~A^?|N6WM)dhs0|IsA9y?Qd3aQq@8y%-O;0E8e2kBk>FuFrno)fsax;LZCobGsCcMOi7m2FA#ka^al;2#i4s5R_2bCity(e5QMJu70Vdy8p>&Eu z=BwB!2=bMEqXQKrRyG3?5xCbPx}@J|!F*$=#X)hJAMsR$j zPUpR6KB|crRdn2ci#@B)1eX#>uRNrn>KO29TZ0Y_%k4;)uRK*K8T&)C9wgJOq*ZU< zwlWG30I25igdq!Be6Q$0uO_|m28C(10kN`s5ymQ8SoM8b5=|FRFKpcTzr*>{vPAQ< zyZ-=$w@^S!F7NIPkSj9lTE3CI`L3joBj-|fui;c?@Q;dE$0WgFjQzp8JbTw&r+hqu z>IIhW_GuYU%zyyDhHCE-U7mA!ui3*PON*~Do2KEP%A~T?p5t^@(MuygAgZ6!73+4N z5A+D`eAc&DBahw<)!XUzHg*=^Tf(vS$|zbn&{>`gx<`vH_Qw^Rk$M*&KkNQQX#W7h z1$A*0lWP}XvW#Li%M5-P{Dpggc;X&mQO5ueGuG z?kyo}etglKFKkrCbOM=QrYYmAFe zNq2c?ZtjD>7 z(O^+27$d1YD>+2bGqchj(rKPcR#Hmi9+l_5IfeY}BM5xI{Ccd}fv1l$*pT749-^w= zMg6a-B-)4W<6Z~Wlog~C+Q*ID+{t|~w1p&Cqdb%RU!`0=7SL{0e9Ktnk%t9<$o(tZ z1&x6O#S){p3PuhETZ6*T$muhjf#{>JrFE&CZ1b-S*qtWh6O3;P6;tIBtfOy~iOv?YY@)WJTGk@A<0u$s+N;@IO)LPf z$VtGgeQ#ab?F?*j5`riwt0Vk&U}owktB;2%brQx|E6*?#oNmB5P}wX5Kg|a1{1D zdUmc0K=?zTCaXTFs7BY4ZvD#6+k)f2zvIPvO}Mv>O0fHUrOXI^<6hd9&O_@IXg$x_N^%O5(aIfC0TNJ8UWslBqR1xT4T?HH_17x0pwF27i^59h)PToJA07q{*wr(R0 zxa08jsHVG?3)Gatv4qb~aww5DIxKFi%ug8fsh%_vZX+$nJ%t3aTRn5_*G(Ie+;X_a zD^P&zji4U5IIe7^$eaX?c9V_cgG)7>(zf8`M?=j46QFSt<2W0*;9{to%cXZ%wuD|Y z+<{cZv&IlKkAwV2r9dvU_zTB1+$zcc04&+ZBk-V+$uXUnfOz1OM#H!%=zjzFR#YA$ z(&WASEty#xA9Q`*DrURAmSl`7dAa!zcc2RznloClyOZR{Kkg33yw2lAlJ%$6^vmXN zIW|WS=!z@UKFIfJBHslm%DijVxwO*O)$O3Q0vO{b#2EyBTNdMPeJWnY z^!GlA)BgZ%kJwwHQ@y0)8t<*Ho9+GMjs9Oy9NWQ>(%Cy~xT>H*+!aemgH1;4i? z)M3>&+DrmE-r3y683#BZ;2=FZx6oI%_&ec0fo1UZj-_Sc`xKV)*(9DJi1u*=(ZZC>cnTuHJSb~^p#j-j>E zv~4bF64gqqt-3~5;2LJPVQ-}by3y_)UpwZJRP$7s&CPR#)O4*%-+%AolHNDV#t+O_ zx8+i4`UaV+NgVeUaJ0&Ko#Pz(bL~qaT}fv7jz;sj$Q=l**0|Tj#8KN4ma4g8cwCOv zKzikksfn7@-6Sc1Fr)$c*Ey?i(rzP}?S!g$6E93x3w?j_Ipin9GuX>+A_|dR#M$0@ zFkn7k*1VQ)ieI$$kt`N^#*N`!NnmiSVlNfk#ea$1kbs`xB7^N)MmGr4zf^r&X*Q{O zY|R3qKF!LEzd02U`(SOyz)bm0{BD5-wl?=?pBEmmUsJhmmz*=UOcZS z{(2hw4@A1vd{3uZ_=4&rwOgnXWrHMuBI9)T1a{nF@5}4~V>0R4FTh2T(xG zO=NWY+l35Am7YhvTDjJ>1k;V5+161S@Bskkx%d<8wyl29GRL!bmW{cySr{IZ1)h}Z zwu)0~uHJnQ;48%S*df!kxzkTgql35%@@vVa{jmNU*j}!es7I^Wm12fzG|ApDql1qx zmiz&%>3?c}+4lEPc8kO_z|1~xKGJx?@s2k}az32!@Kc#qnf#Ay>Cs<^% zwp56MWs{&XD{UW+E73e%_&wOX_C&3;% z@nxR1uh@N|qlIGfJi>@VoP&YS!39QWa*R~g3CGq- zr8n%y@HSaq<$No*b`IaSUB(alyJiEowQOns02Va8Y^;{jmuVC?J8^^jtI%TcLaZUJ z{_wyD8;5Qf^y%B)pET`bKX~#hZ`s4)U85^Sq}@SmNHRb*3GO3sItE$ZObmZ?*P`0| zB=F{x(cNe!dqxZUw6?iuhCMO->hJs}W6yc7Y{YHys(D8${{U0ad+}X$hl%Z-);VAh zzTE9kyN~7i)Jjt7El&pck>G!b`e%i;Epy@5jJ16SRnskA?l||wb8B!T$!OXMqmn)B zxZ1&T4h?*5pnPKeqVBG3Mxm~~=#@gqm$p{ya6Q!q51}8Gevy1a@wbO`FAHi{I-TN2 z8zLb_`I(FV00JQ8i*PV2#k9>6N42ebUOKf!nn) zcb&a}9MhS%0Hc5fAqTwxKeyJD9)}-yr7#@)qqk~z`NaS^OA>b~r~~t+{-0GxYJ0HfyI*aOm%MZjIWXVc!5NC%OF&{K)PC9$PODCjykI>yDji zKI;NU1DsTeF>E+ohv54P0A~bzy~hjM za;k%m=TV14f6j0I(9Yy4?&t? zR1fl;-~oz>K33bDmN~(o2?LO%j(~RWKm_s7V?Rn!l|nI&cof6D9Qur6fEWQ_1ZSMo z`$9L%!+P|mM1)3*!1Dh9I#~!9Imn;`>-tiL7{}711gOSH-Tf&~ASgR?KnC(VQkNwP zs`nh!d%j{6@Ho%Xo~zTIv;eD>T;O^Pijg)3+Sme`5xQXW+L}S#^KskSfGkSEnCv(J zU}K7epPTNS8y9-pQuzaRj~>5s;M z0&~yhN||i`0JF)fUQlcdf{Fnwqk-+(ppdJVSdJoIM;Ih~&;tn=;(!XCpZ=;cqXWGr zVu++lg;4Q@UIhS3iazni-%2nxmmDu@Zt%cu91+DcEQy33lmPb5H)D#7WMn4-q(6Id zuFxsy(5^x6iUfcE*6w_5;h!5#r@?#SrdShh)s4S)wcs~@5PmG^5;d;9tX|nYwmwH} zM4iX6?T#z-zfbUXiuz^6li&IB!V*==Zp&jT3C;&Rbg!3wH24zV#SNo)TEs(neR+DS z#mFMsGsalIulQ43 z@WtfXHM~zUNip*bNZf|?$4c~}QX3r@shG8gt%f;mV z%nzICUW2Wh%S}KsX@M{bq6GWEcNJSkyPh3l-%!~DZxAJep* z5-V3ReXYjhj$0kE-|@wJ?dFpd3fh+4uPR~5KXae04UHsSAxRM?t`jL|hJd zBaiT}slFZf`}=pp_tIXlzK!i2j(9PZ`@oK%sRJUs%tR&4&2rQ%j~=n`v+MUV>bCRl zfXv}Y#vG}w%|l4J)6y9yRf{cxRN&!7dDexh>l$U*5yvU8R+>dZI8b_UD^<1aW5szO zc`!!B5RXiLlqnh=CcJGmvkspc2<@XNnaBfoa¨r}&FS@K8+^X0}7+uMxIEz~d|{ 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 U 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 z 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 CwVpfx diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/light.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/light.png new file mode 100644 index 0000000000000000000000000000000000000000..23efb384ca238da7dda768e9c3b2435bd08d722e GIT binary patch literal 15027 zcmV;kI!wihP)2Yl8d-< z<=C#2T~=jrY*k{#T4Ko-Nsts5kN~j{mci^>PcPHm-;(D!=Y7BK5y>)D1|>+Ij~dO= z-QRN7=RD`UFM>SJe@jGuQ}&K~<@oJT_Kth**i*_qcyRr%W<|L))XQ&sxk)#E)%X?J!$ltTRRRVdIag~tbZ*52{qkN4!1+jo}a2RZhX zaQBbBM1Kz+vE0Su=-~s%2frqN+vD$YKH+g!l~S)&<;>~hvUmLLj=QRqyM?|!%<&sv z{zpHtaQv<+g~tyo@ppg{e^QV4B>GylDtpI|_IQs{m}Kj8Prm*)ewfPp7pUm{aktRdhdGWOIVeA=NAN-Y6y}CE&s~)EPWOF3Sg%&(sV5)% zfxK$(_)y1he_*0#82j9FPs-l$!$0;a`g`!$Q_4MfyeE8}edT-d>tFuYvUhy6$C1N_ z2-V3$9poopO-pv@>gJ}jI$ga6WimcC zF1;j?Lx&IJS-SGhyBB12V?(xEElKgbDPHrU3d3NR>;jyC@`=y?<)5iiD!8ewt#uh0 z8IkFkSt;X&M<-@vr`MPA=!CrU+UqiL@Q9qa@3`b)peGn8B=`DI;qc*Od}S$w-%s$M z39gt)9LIVCS(-?%*OjE#lOB}NYqg~h#iZNY(rawU`ur_f-&mKG^>x{7wq$I2M(#iQ zEApTJ(|?dxzxT5A`#U&Ers{~J0QZmY5H@cqg+fv&B*kk16j82LU}zO7SIVjw{81v@ zTe)18DvYfP!>dBrqxc#b9hdFKmb`uLHJO>-C(nQWOERD^&|$gw z=F76Wx*}($YjWlMd0ANAkjxq5srye#r9L8gw@tiv_ zN*Gi~LkXQheI0>^_;Env}_jNf{j(g)xju z6_!f$H$FKf2|WdtRmR^l-0UCy@gL#7Hsr*yqta+@OAF`h;ynoz(1qf=-8PimhrmOe z3*J6Ds@JMQDJ2+Kq#hFL>v3eBK_e;Qo+3nrey1gkZU?WIQ6oF@uniy9CI&v*F9VF}}kMwnOMdQ%qH*5K^}FW_5K z7%Qv>A26BOYhs3m`;2?A)-bBz&7s~<6yqxmTsVV;;~_G*^wjizNusLWWF`Z5+oc%1 z|83mJYiD1S>HV|v%%?vslT$Nl6-{`-_I5+oag(cSD>A>hAm=Y$kT!)2Z=v8OM#p4& zazYiuGq0_#$>PegY;0|+@{S=~G+RyCfUuhg2hC1LmEA!IER|wdVOM9NCnv{c48~O{ zN9yq*l#xsBVs4@m5qxG3i@T+n-GxYTfs>(mjx=oK`Y&21R5;98JtmUij8>a78y20s&|qTV8bi@`pp zw6j>UUMgd_!8XDSZbed9PKv8A-bb+B05_Uvi5x+krLsboEdom%P+BTGowmI7+N-eQ zP5Fh-KPMqWc@5S-IjI5}9~qPEzyZlloyPn7nzQ&hjkEn8^2xS(!rJnJY;0_)u&XeT zhfh7A%4fK1K?zBvDiio@3C2=INaCz>wTIk?d(Cm4gD{4AwF<$Pq>In&;5_v1*n0@Q zBW9QgAQ(JzuPu$%Dg@b){RrD1yMG3TF)jyYXJrHVBFo*==844A5|p>ohLRc$M1ZDL za2?H&luH(>aWijRyLm%48%=$7J|A5vav@y;`(2|H!fzM_dJT;}I9L3wD|e(0i+ZTj zlgUaf`xKDDJK%F^W;tO5R>wGXDq{+)Ag!D74e!q5G@q?^mKytE+G z2#36>Ag85f15*e>`!q8(Ed|z7tBpt*N|=I$E|0FjtB~}OYj%1&(!)JaiOf}ePm0jP z-!(QfVdESLgdQZZ9G#s};WzNv286-uQy~%lmf-y@dRV)o$$1CoZQ8W-;mFK>RF(pP-;m{77;4=KrMJv1L3Oy!6puwjnrxo7>uaI+z`wDsc9&& zk36uYp0EgkZ9@TV+-Dz_nd4f_D-0w2PLc2&RiZG2z`3PWDI@1qVhVf|9)Zv~IwDb0 zQsw9P3=txYmf^jOd`uvbGrYlzD65r~Re9&~WkqOxC@F#!=TWAwd5;NkA6eEn;FFob z22Q4Nh8u;+;Q>UpT77xr+HJYKv@A>89r@&mBXVeFQu@d{6?jXp1FJ<|C?SLdE)aGg zs9U#gC#NZ6+yi4=C(G5k4Q!;U919JZey2at^_Nyx<<&RekWrwR z286o=q;njhGsZ(R{9L$l4PgiOgnaSnnFn-PMw%cDWPyz1GbLFKd&dbvJ7KFvP z9uyX7SO=!Ud&|8C+g)x$=@&0ul-ffdS8x#Gekaf+tmF*oOy(sBI#Gou@Bp4wL4+9c zW3;%nun40-=p+0k#6`F?&vH3LR1{DQlok3CA}2=g84+GkUd8)$V zXUhnG%u%IMMb?q{bH0Xi^_a_C9maDv8{2aJ$|XdL9sL{6DZ@fnPmNSz5o#YsoHR`f z#qjkw%LprDMM$Dpp9NN|g4=9&Wr?rv0hDSOKi(})XT9Xlu_ch`7HKg!8 zDZ)y|8k7`XGXNOmf*^A~v}pr{HI z>lGLKq)t}~;QqKAE|sV@nJ{~J?d40?Hj( ziBW{HLe6ubxjZY71cec)f-6WSZ;{4tiExQJE;7*Zr!q;yibSPFmnVDs<}G;>82$OD zpF*bZt5O#hS73Q{O^{(^h$xC9RW6@^u{q1^fr-=eC{=F@<3#JA6!cE1Mj8S|V{2P3 zzWt(9(w16#4#Mv8GICc`Dx40TV~XpisNm=$slitt`^_ zgdODyF{`CmKT~#}IXW{T&9!+sHdU8rADWTBJbO+a`Q-Dmc>Ah6+`J{X8;N}G;T%-Q zi;^~HWZ&2s`Rt<=Iroia@M54o9(fWTQ`S6z^r{fEjBCV@(21jmz^gUkL3Kq;>&=eB z?Ox&-2j&##4HZ{A@VPUkMM4d=5#F=osFK8?DR0C?eb;W^Qb?>qcU+%nd1JrxwNNP* z14;x!qDsk?j$&lc@TGhe6Qaujxg(FMq&!UZ!sM%%oC4ewYZs?xxpHe>9)Ij-aAN^T zz)W@k*dr99t)3-9y0m`Yk&rCHcrNk`A;TGSfn<6!Q?*$B?Jqtnx3682`%fQ|kA3Q4 zDYY)i8y8pP55Bb`pL+~NBi_G!<$LnKzIjv12dZ-DXd>s{I42wZb!lZg$a$zO0N-;5 zGZ|vG!6vY3Uj?e$LL#1>IF6iD161y*urh)Wt=>~LP#WaO*tB#J(t8Q&7=~FG7_FRM z(uM-5pk892AyrSw6n3v}Y-*@7;#ISV1~4iiNll3wksQ5}sV9c&6qbW>hA$)bC?r~h zfy2yrBBx28url#_OADlM2Rzq>t8?;G51y84eayHZSP2Ee_ckdc{BYqinAL92&Yf9; zB)TH747!D|3G-|Lpmi{FlE%t&x@GcfStGqBbSb z9qfYR9l7^vdC%0g$xUs1_a z0R_IWwxP8Q%~!d_fogU^-eHCKuhgXr$|6=;-Dxj$P&jq?Ix}KflUkk{Ij2@YzvM+o z!QI^uf4TOt#uUygi%dlmT*?J)cm-_}A`Jj18wg7>7 z{kgSVzV)>=8Ho~EXxHUV`3Wh_0%&Yrk#1C$bs#0u7)cq|UxH9O6##-rHsNX8y7u44 zY$&0dC_2*G3SL|S7zl7LYi(G1Z&MlwW4#`z5agbXQbUgIo0U!UKv2X0eI|0{&H{Ki zt9K|sLTGVCF}z$wRAj6f?%RSxSH%0AShDs%L) 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 JPDHLkV1lgD|IGjZ literal 0 HcmV?d00001 diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/light@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/light@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6bff099c81c22a1fde3d27943ca8bd61bd4a6fde GIT binary patch literal 48810 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

      qVLv?0cS{0{yLx6~ zf<=rpBU1wtU>p}K_{=o)Eq;V=WH|7^z~HShPyRpvNfGeqbN*X%7VYx~{egTI?LhXf zCj{)6{z?BK$enBxU#Q8RHJgvecQGmTK)xTo6TqOo5oo_{&`hV<#B8)y5pd|V+%DE~ zFol_2{(8t4)Sh6Sev$3HII!=_C$IhN=@tI3}<3uU;*}PzQ9objmZsld&OXVbEFYALm!!VDT?P9fW4257_jO)kwDmI(r zJCk8ZHvqNtWQ;>%X1khsnB^-+Yb1Qs=yo8+S0wA4*ebs9kzqituy611p{J7kh zTb+MT|J#p@`H$GYow<1)Lbu(VOx=$8pu5}IZkeWeK(R$AZ$bW2JtGl`f_8Cx>4d~)al~N5sCG#t&07C}c~%5KB>#D&DI{7>VWZ8T z2lvrM03;0tBnd}|`h*jc(UbCz`p>xk4Erm?eh>z!zp=kTK5GClV%V@N0FWThuz#?B zsDB|Pt{YsBq%H!McnC~-Mg!P{=d^~uon~%U9MH~BH>0cXcs8wG73i6PAPydP& zQ`67IFOlAhGYP+7I4P~4WUu;Uu-|G9;rih8h&-L3?v`rf5rAcs*E)4qZ=7i2WvLn& zY@`{2A>sNehEQzB>4Z-hlI@CsBntIbMH}xBkhD~GPSiR_?cc$zWnp6&Z|Bx6!|%lU z#0k)FKq;|Mz~SWo+&_hK{n7u8j2r}kLJYN#srQ>$iJ$O*$a?= zlb@=WP>;{`?@UlH^9T8=GA7U8@K4}=mOsijYiuysG;cK8y{}`pD$@#Jt?0ObVBS2sUZ*f``Lb6U&b85MHq@P-3k8*7?be)grsG+uyFFp zX_0M>cAst9IPD-KCYmn-CPmCjPNJ35HU=u>bhCV`G~SzTpnI*s$g*2{87>$F_ye<-dFe@)M@byu5Z)I--7E?t%+$egot#nco#g-HQqAY z1m*3PYwpyqk9P1ndd(8}9h@j`ovvnXxmG}quL`8N;h&3`dM*PjjkS8^XdDC~z0hC7 z5c;b{p2lkj&q6=m@3r2L_{b(ybfE_)XLcsItle=FWMGuAoPU>D|TJwBDf@4Thv$op*oT@3(9 zcz*ya!uvk)zZ_H2rviYaEIGVgIRwA+j-1c><9D7ElVV-)9#{1#P`P_18+bL(z))Z} z@{$e!T=7mxI>8vVTf_u(t;f;jK%)pyc0pbST)Ni3f2H?b`2C0ps>skq2EsNr42qc! zNsfN%m1yZUK)O@fO4UoC{hU^rMrhwL?vO;!7}j+)PZ3kfQM21$h56%6`C`EQciw+j zJb`)TGxo81k%jXv0h>#X<`N+3Y&Z_Cq*H!U%0~s-N{Sn&QbJCb!i?_w&0tQX2 z=DU#g^bWnkKtEFm`I5r=>cTPYV7;{`#t2YS>Eonx8jeuDRg*&@V1~hS1kl*ba57UJ z)T{CQ8n%Q@bYZAhlhSsa@-J1R@xB-IHh((4pFBTmD)Br*e6dv=dbSRMKVJlV`L^yy zz@bQfsrDYNfsm!qkqMeqp3QuIQF8TBIShUkty@Ab@5v3Dwn9gF08GMneYxYRln#MfkwZU{+YOjTasUF0$=(BK$0+35&_stk z0goaX0g+~=2PVj&zZNd~2U2k4iTQBa!{KVyz}7_j@GbswK?lorigoDUfC++CJ79C> zh~AF$YwA(HQ(fecz1Yzyi-08D|6Vz0gK}Twu>BsU10WLG{Y`d4?M3-do4slar~aP9 zE70FEKGq(ZM4B(=Q*&@Ii#?q79lv0&i(|-l0|S!60Ng+$zxhmtOh~~&QHA{#|3tpT zu%7x@Pmw+)4~q?uo4BiIIaq&FW4%Fn%wu9|jP%a+W}co}0075d?UUa56!=l91VYNn zeS8Zf0reij^_)Dy={tFq9p&4RepSKYPiYkb_#znq`slhT-jAdRzq5$JnumPE>@ox8KFk+s(la9f!57V^5tB(2 zN^^^-@P=6cFv{WizB%Y$JOmIt%w}Xq;(7#Nx@rInLx@haX9P?LfKM5;H!sii#e0V* zyV$Mc1UzVIH^lY!R`YoMbFeEGdKTIxp$}>RbrQr(^)O$G`qBa4m7D;U+c@njmYaoa z9LhT@Ho+1e?CRFYSa+nCi1F!ONFU>?{d5+L)AE2n*AP=!c)$Vs2t@}7uJr+jNWcBH zI$@}vPOvp*oK5!nDY3op^y#ySHarzXa^1983F?wjhE#zD_y z+hkL;!_17Z$j-QtPqYSmq({!kjZBd}x)_>`B=Ubzf0ynT*H?DwI{S!Ou4m-1Ka~LH zpuZ53RFK{ieb)fusy*_1yw33uNEHFAqIoD{JbYg5_BWuu0i&CbeU`sY(mn;uiHzFi z0x(H0@Cld{jHCFMA8!#L@gX+D8i8@XN{68!$5}nyc9t=nla1YbZZf8J{KxLUcQEFE zclbZOIDWTw@7uFKIfMHaLeJU&M*17s0+jQ&$~R9M?2FWS_B_fN>960l-K+!vxUm2L zrT#4SXR|^H*i`xsu8;4a1V}0Yk}fyQ1{+?AVM~Aw0FlfKs_3Zku|XBj_+%j1Yj@ofN}H!Zw3Y_3FadO1)Tpw{^KfS^xSFjU+QlRimdvx`U~U} z^7p!c_ngol>5q{`&JRD%UW4adF zd6nvJ-HH2G0Z7W+c{AEwq%yTD(eA2aw$^8K!n3WFtU-XJ9@*we)Wd9+^GtPr|B;6$ zO0O4%_$!qs-ZF0sFunMB^S%Ug08XgA<6}d^ceC9{Pf3mR$lyA> zkV(3h zwNH1laY7?!X9nSYO0HD|^n0KA!WRU<`n&u)%Jbin{)iHm{;&a(^an$ce%XK7$9JYO z0(&AeBVSRN>>?CXtVg_y1?DcVRkCRYz>Y%ebmJs3N40aCVq8TGDpAO*bf$N}pmQZ4 zMCtnf%!qWg?GpjP#)EN(#zpje&<{vQp|&Chr9QD%Zo?Rz+-vk%UG!tC+&!^c7%xrE z)U3R<3RJ>wO}hr3Yg4F|yaV$^S2vkS(m3$$t*V!SgTSp{XoPuVbiDC#VniAouUF9k z_j~5=tRlv>vV84iO$@9?R?Yk^yXd`j&fSXlx5(G6sDb?HLR-5Y(mU7?uT2c|vzhAk zNP;PWFBOBFs|O@Sz@-3~WW%7UW?8-Q{+()Qwhi7pGX@A2WEZ=EO#rN}aUQ>?HyOsd zXch;b@vzZ+d%U_#3FOtmSXJ@Q>sEpq^}SsgP3IP7D!afk^Cf!b0HJuo8` zIwhJz4l4+^E82OLUd*Pr#6TDtz~2+EibphnpZp{9A_D*kdIYW87a3C2S=|2$^LRL4 z%My_1EHAa+H5@1Z zost0LI)mLFG3W_wk(z|`0lkwiNB^AQhxA&XPGov|4di;cl1;<&m27%$SPJ^AnJ3CU z0`RSrbfWl8vCp4_d;vp}4jl;ONcgq@M_2nhk)z`e>}mEO%KMgoK+G}FkNJ8z0rkls z#KOQh^cXfQMnLSnVv!hDKt2P9i8ST|bv!VP2aXNYGjecTZ8@&j{1Fq>C*ldYf?*%R zx3Ot90b?h}`a&*Hli~wXw7*%drl7s{@`v;i+7~5+IShk-j^y4P8kk82D;FdqZ8IJF7rI@cLWnmBWGn)GU=j;`66#X38b1t%5 z-4OHN=Q2EK7wxNltMle5v`^munSX*4v$yB3M|z!D%1PgxuPSmQ)366+hT8q&V184M zHOZzBMw^VQ=^))6wHY!B)$|6#xWMzl_YuewjO@L5yZV<>hYVIxf4!z3RlD#U^}-H3 z_lkd1?Lhif{)pNcN=Ev0PUAY{OYETD3VB-X<{Jg(W3!W21!;s*)C82u2p89bP>YIy z&tOop2!IwczIb|}KMD1VLNHxEe~+qyOu#;pYnZz0JQ$Nw zEgWJ@n(Br?oy}~GlKA~7B=lqA2&+QpRJGdVso(+B-IF+U{M*};5h zW;vv9pHOT4ad`e`YM+?x!=9o}nq`a_r?qq;zbY{4f_~1QWGi_!6BC7unDL{0mO5b*bs-tTWwSQqJgW%RvA zjDXkoy6~mfZGI_0DTiYZ+fmPe;SKeU+Tn40ISY|K##}Wk70fG|n4~YM?{SFp;n%Dm#&#UKAzKixn->Lnq0O3utqNyAVS8=szR!2zD0m0j$^ zaF|Q7~!$NgMMt|1f zACw=SA5nm#Kh`1J#06j|+qCkhP+aG+_EycCz5*agcT3z^iQnN}JYp`X^gHFqF+av` z9jlcfg}9U5004sRe3hAw-+f2Glz?*l)_-3$Hhg8aWrne-!cLu>ED|i>Pw*` zo)9pk$Y;cEgYhosv59#AlCu2fM#m}SQ!~36#{D?2bGl0ofHJ;@9N+&wcEF zEI*cTEcykBW;8kRvN?#9W_^SpceIh&%?&CD$Z}uVoxQ=Jl4%tu!^+TD=VY@i4EtV>d>j1!KQY66$Dychbbv_& zOuA6dBIC{F3`!C3WQfzrYvuuHWR+!_+!V$>uWx|?C*8Ql-Bk$rmamt&6aCmWUN==6 zI^MwoW0zdS$r1F42}7`5F=U%xWKJr|k7XF@ z?L1rR56T#$*~C;A$c3zHw&Be*zqLTHIGj*SG_~rYUVWU_@rD&xzwD6VYaE!T=zF`+ zZkI7o-6+?i@eu*A0*13Z^+z}kdL~=O=;UT6kK6a6AG>>H$tFo+$m)~mfPPt^W_aXi z-mMg0g!$lkams&K0$`v4FDGx8PL!2z@YN|UMEUGs2jWgih4l6(4q(! z^eg#{Au9Oi#C`^S%iv_TLm^B1B|2xpIG60?wZMGW*X`&LKySQNp6QbSlM8&Awb`J)hSv(>OzN7QelKO;LJMhv2>O&axlUF{W)UtQ1W zJ=be}zo=Z1!-m?0fMg%bQ)UH2=umb{(mZ*JfgvhS`u|w3XAb(Cm}J{%kF91sn~i*t z11ify#-WIb=$`;W>ZDc*`<-hnqu;swcb`&^=`HxZllmyfvT63~9ef#wV~?*f67>lf z!cdQy_LSJrQ~*GV6C+XpK(YY{7F$@QPX{`V3x((2!GR3gS47`ez*wq^26tR90dPuy z+iyr;2=tK8)F@D5vd}5r!o~gu@T4{w?6X|k>K22YLV$V0gMC6R@F&KJ!Q;z?6uP2gOaIRf z$M5ZPJY>93Vyahe(K;B0!ke1ymn28^piJ95KM#9Hx?8La?KmmlFP2J>BYu2hNFMWv zuH;kE&d1m~UWtCBkSuElG#@%tsz@6YT*^*rRO;^{{C$klCt1d<<^ZCw2gL#feVMQKNxyhT?@}9Z|BSy! zZ(@)Pj4ryG;p8!YjUhcVVor*H7ZKxHG(QG_qyhjge6C140JO;|i3gHoj~$Zhl^{DT zxO&h|89gmY0Jpt-ju?yl(R0yzzDPzuq)0~jcSFl1J6sehu2Prh2&gkWk;=7lVF%22 zEYN|(F|ol(I@qv)&2mTL_anyD$N5pcUSht}V4(ETPWmCfm}6Z6jADEW>yI-bEAYPQ zxe*0oOsbUWRL=ws>I&B%ox!{(_xSX^MEZGjkRa0Ezeul*?nlo>z$S#6_Gy3fG~W!i zY|PJUa{hh~>tmvCwrz~&?a}eRsK?Cw6lW;PH7wab(>ad=O{umyp2We)eBW3HTwkU} z1dK{s)RgQ4DLU9&3eh&+`3gWRRb-GNiS`e^2goCS7@F*qs4|rd-@O4-5c(}*EQ=V0 zZrF7(nx9Aykf=8-joVTGD5P7!ps4A<#TI|Lz`=I0M$Se0s9dH9(CPVMNVn*FzLJc- z`-4TjZ?~Au$6&luXvlsR>;rahr$Yw*gAAC`JlG9V-3nzc_DhKhw>(Myfz528AI#@s zFT?x}DB&3e##jk`73H~J_C+_E1H4q960oNP>?r|zO7p<=F%OggNhLs1u;KkL_KA9l z6d`?H5+XZq-Vi4^6j=6zze8X{tJcd!xIQkPwnn6gSz@d`0gBd$*wn-V4M0VFsi6(- za{poTxCGEfhrpt>Y`;8>>uc41^Q?fZP6yZ5u>?Je+KtAh$H?B5*tKuO25j8 z0`~>=HtrwNZ~GrWKF&Vo1w|)k{*(Px;6$AGoBG_)hP4=Sjeh|XQZXNeZ2KJVc}9H3 z{)Ca{p>_c$R1h-kcBF?E+9vMKW8(}H#ss`SCr^t#Ct`!m*U^nJdF{m$ygMF5i0@0n)r) z`L?L%s66@^vb@kW+cJlC$aTzE9_Asd%xQcc%u(QrYJhaNJOFCwkKvx3=$eP2RLsnb zLi-(7y96=9o%3Jv4=J3y)V}{D(x026Bb9}Q^NWD1kwN{^dA9`cDYXZ`ehh7qUIT_C z`62_LM8D@}B@CA=D|TRfuQc;;CLiAe80b3Udl=-VVidAcq&vh32s{|`XIqY zDs_R8@lk2$v;0ATH6ZmWIV%MqJ73PGLM~8K(u3lVdTh2A(kEG!m}r5SQUch6-~HGR z0WDYSIEWkw-?j`wuqn*b0*pYAnr~ne6VOZ9M6XwtfZY{V-yHNQe`Z#s$pE~GP4Y0$ z%VG#Ok(I6{#+>hG2)77`6gX~Bk0_MI8)lzB+YnH})nuTSiP5p1HUY{jvV)P{!?x;5 zi5FeZ%1N=NjC-k?AjcS2_gHmaq9G)Ng z@Ayw3{h$0pd4>i133=8JzW>ttz^|iu@Wx%2)mgN2#QgkcXqbURpFM5p;K>r-(PJ?` zjV}yJ_lVQ}ePpIzhUV#^c?yX$Jm0y{3fBi(ZBx7)`xngeZL@G}>!CTizm-q(hC_O$ z1W3Brp&BuT>;zZZm=xMcPfrdbhWNX zj7S4e;4kN7M|s9PELQ7k08-9BtjT`zngIh6==g_Vq7&d0RRRA6wa7?q% zKKn6$PoO$D0C!d#QP_|9JH>;7fJcrdVAgCiF;||$_u~vt+h~`KV!kHF`YH1eTg$N? za{!T${}KQaLz)9vq^f~?uk&MU7t&EkLxg10JCH_*C%psta|(bz$QSuRmN8^U-OV=o zD37i(%W!=Qc8oLfV9t??dwPdOse_t+=LNRM-^d9Flkr_#k3ugUHOusLJaqHG2TJ`c*LyqWdMY)yB-4+;*ewU`#c^o zCWY%p8v5RB-$LgcIrjD~-kl&Ot5IG*i}uSa*>sfWpr~dmHTH)p0w%@4@I6Aw#R|YA zRmCRaxvAMPa2dk-l^mQQ#=fhID}HalxFiW6xQoxs5^xGZ>CymJAb5Lke0NB;f1(qvXY!*GeQN<={3iTFJM%Se7*J(uoZ0$j#;B0$n%y_8QY z5~J8^<)-Oep~T7{43(&NGMXok@oLC$+?yZYx)}nMB{?1=G$rccd4+jJg@DI^7}*{b z8_YtakFiy1j!pB*5>EPbFei!0Zqz>~p`OG3hwJfpKd2%gdf1-}v`&q3`sJXPFZR#a z7WDPm(S-pX)~&!zjZfpfd@oK^#=Is8%1L_qH!w1>Pn93C7d7;167xUg<+6U24EL9Z z;l9)krFJL*sY*bqt8E@A0g`^afTTzftRqIG*kkY={d#aBpo89FP6x~trb^CqaIh%O z@X3HsnayOTWuTDDN^1otMwfN6S^!w1J$cN)0AcQzCy^#5q^BckNN!*cd|s*usI-wq zK&7qnq2LAl{$BAUCjiiX^@{lo(#J$0cn|V%{h|Id$A;1TO`Q`&HT)_2Ov2Mf{X_ke z0g&`%KqOVefFuD}GI-uZ&xaw{6ouA!Uw?q#Kfr&H7dET95Q$bx>}V#%Ogy-D~h2uJv9{`O}&<{&anpK)Im) z+=%O&gKcVsCdK~hU@_9u?D={QHmrja<1O<1vh%$QL`~i<-Nd>*3C4|lg9EJ7 z(x;G0D~z4J?F@MscC+f9L%pl+>3ZHpk^oD1E(9)JEOmFk9^Su#*>2rhIKW!1inT0w zuoT)BEe8fOHJ^`mQNQdF;RW#UR%Zk;UtFye*yj!BP+Yx&b|{L7;p6Qf8V9@7S~FL{ zlPTZ9YgK@>TV*NK+DN~h+aB$+RW8z1k`5HF%2y4An)*HoCH)ce3;j`u zz8!(mU=+%9@+jm>*K}DWF~kf4)6iXLrwOTMRcX9e`Uv5M@64|OAjQC>IDHIbJUOD=V#4X$gcw=#i88d{DW0Ei3bB;;dQu}iKc zo*!pLz@(U=<*EgOT&4^=Usm67=&ms2UIIX&LJzwQ+HFLpYr0h)iYD~d78X2wQXTx} zXy2~M=E;V>G3jExbGP7n!^}rS`7WV z`5DWuRe|R+^~-Cc1E!PpbG3_LN^k1CUt*)Vbn;M>YNJ()JC@NA2k#=o;$DNq6*``v8RH+9b-(q5kt}yAjeL zlDBC78Jg_lbwa(&Nl)^J;QDU1Sueo2f7(0}?9>1#ihS@8#{VDr+wv(1N@?{Td!AiB z3X{u4aZ}326~pv#VIPcs{U`G~^DO%FYvMWV0HM%ldqh@ZehQ{0hC7%ql6}&hlUPOz zL%g0@0tOHBds{H5y1mjJaJ^r?vrWL_{<-d6yEHM64J>wryr(eT9Ra!0EM}ANyv$Ed z4@yC%$0aI|elS?Y$3gzw><{J&cr-JFGz*AH=As5F@1_YfVfRMZhF!U`k zArZhyDHsmbW14_YaXJJ*A^oU2qA~rOgSwhies+q@W**Wj#bPtbhXE;==~g;WsN0jX zLr|W3^3#(ekpDGeiJF!GV2MXeNKeXRV!NggelG;RB0xTXND@FK{d;p7=}#0C?L1sB zLW65*p1fk_N%nHoZdbG<#zr#md}5-0ct$>Nh*4#uSf*!W(Z3U;iUU$O?~9Syeo1n` z5b18{-!TxWf2K{YsZ9o^K3-?YIONZ6Haj;ujqxmhoFUs{19B`6@W?P4hDs^`Fd`;- zLr}j9bQF?pLb_MBgAYJ&s=d$i&};bp3SAunf{n`%!>Jc6WYh4w6LPB}fWs-Xhi{ZH zs0O~?X=<1ba6M)~ibGEQrvRAJ?=CM!s7nD!FUUiT^lD(z2^OOtWaT}{Nf>{N)hv6g z3*cI?oXvoIRX!v3E37YYpnF9?sw)nV6zxa(AI!@d=PUi5r1MqGDEJ&;z4xJ9yYyzY z5cjic0iR+KL*aOPSPDQCIhRc-0N|n5=tTzWI!4QS1z*XN1B`JSl@K&5H`qQ({pkQ6cX#6W|87x?mp->GOmj2V+cM!hru z+Cp&Wc6So>lp3EJXk&drD^B!jzZ@}BKEaRaEe1dneTZ)mq$l5{ zmul?8%u+Q4&(CF3{lPh6Tpv~F=@IaKY_3NJ`fa^j6R`7TzDLi&``*&W%o6-Qc6f;Q z-SNKmqBL90$?-_5EQ4Mqct}zxQV7EKc zgA09=q)!-`=#^}b^rS>DuY*l`>#^>DBF3|xE5<=S$iQF)d4B!SmjG=_X>l>o_bd8i zKtP$JW+j`AdVbt&##o~9x<_u%7uL-mD-h}YI?s=@`_%=&Wy~1$qIyu!yz;Ev6Of%I z$F`YehC(5(Rr8QOf)P8@p>xt={smx?3xE=fLOt$QbJBFalexiOPqfFV9Qr-__lf`^ z2_gMpuU;+iefF$=kl{SZ!N@Ex5CX(Nq|Z#WU%gz;NmrWzyi}eNu%`s_XtrOQ$k6ztemGQEZxZXo!T^Sr{P-*#3`hEt^3x$R zskv&E#=!^2q5B0C0ocHuGyvG}!{T&}d`?0Er4EVH0VMN-XK{U_JQzGH$V2>qc?Oag zk?8ssendP6xf8&hpK2VibY8xx2$}wtcn{Ze!JqWs1P-3+6ZR?6Apl860HiR~+Lr*4 zVxZD9@-z0Cf?+`Zjs2a`0sTY%5#*sD5CPC) zy5+$bBHPL)#v?a9*Pvbb3+x3v z|DHZ8&q96{{#^)#_9sbyICuy9<^F(}ueujWVbH-Za~nHgCP~yQyS)Oy9p}z#@A7fL z&$P}FqfiJ$iY40nUjUM90wj&iH_0?dex@WNKvI>M>CD3K4hIM10Rv!%I&0p;_rDI1 zbm{$%gOBCM_}zQKdy;;COdgd-1C&2Kut1(qjmqm5tdude60DdigRK6)+5b~z%$>Dv zDZ3H@*YmE zl~N7@vUJEoq2%>-I(U)nn5>c19yRR}x0A?s^!T-4PAWD%*Ps@FM%f1GThNXTuc^K1 zI?I@*UcKWtI|%KTDszYliDW&zk3#&_y#|a)Zv7%Lv$aUxR_nU6P*i2xry3Thzm5$( z>|PC|(B&La*0??`(t7=dP4?`a(YAcJZR|GtTc-C`Wn1P;@BwaM$)* z`2Zq0owDg909u81#U@2CUuD|nnv??=ndp=vhNK~de#yJj1PqUuNM;4uP3gdqVG z)-fFckUr+`nHN~iI-tXKAf7+j%lxWZ7fR*%akQrj`z;4BALRu@V(_E^KtvuBJCNQc zSBcpc_Pc6qYM?`&=L51ffW@Qpi3hSObJW2D_gw)VNLsDG2!x3Z2tTw0 zAcw6%eTDf&K7VVDn`Hv!2oA~xk_;*l0Le`ab2}%DQGuHtgmOQn5Ue4O=M2hgNHLpJ zs~OEVR~R6PpJdcNF)-;h_CPRCpxh!V_gXdE8I;9-PEXB|!Dx+Ks-{}lPpJcX9iEFr zrJd6MGiIbOFe?$j3HAA;2J;f6*2noa$Vb@`PUnyF3`lw>U!q``<7>^F0?r3~k(}sZ zyO^JmBp}s{{G{Yy|3Zj?tXQn3WN?mRdxC60K!KCN{dnKI`j^3DNPleJXS7aysy~u1 z@o2qx8P{=ch{l_|YR(U(b%NUW%4^SX-}0t@H8_U+@4^hcK;zucCKrdHzt80(GJVj$ zC%L^-9n(0krCO!$!aUx`Yn5wU4&YLHfN$ge1_n-w1VV1edvas)Ff_3rCm<;_kS1xK zUl0&eOI#laRTMIhEE2=>eQ|3(YF-^1!^CZf@OGhI6^qG<#<)?2n7}tLsfi zXm{@>=ca0Myu7o#5uP8OwEd1gF^o(qjKcdK5}OTu_gRK~8Ok@9(HNMM^nq}H^R(D4 z*Xd~gTqP-g5n~bs!nk zHM@X%U=MO?hbJ_cEK$zK^)bE$a$m4ZEo0Ef^W|omLk_OvlKt`fam7J4o$D#2TK^P{ zpA}+M5%nhS)3ZHtI6W?DJiTWgmn+qU^9Aj{X+Il>kcNYVBz-`hS8IvPU)S3fG;oT2ZHSi>!?1asu|4(ap=V# z*SZqVgI|yw03~yQIqH=lVoo}3qEL}fnjL1PB<9%lY(DA{A>H`Q0@;xe$~_S>B?Xf* z7>8nRFdo;pi|MHm9>#?;plGAN56|{0cEEMT)(8SjzRI2v58!?8@i&89V9Y<+p8yt( z&PlK6%XdFrGTdJthWk=Gl-i*Lq$&ZauC{rg1W5Yv0FuH3ZycKHBVG_Eu_5}kcqKR@ zBE|FuY={==1%iMvGjeWXrVoW&a-LeGpqS3A7mAT*(gWfVq_?Q!`g8zBBXv^!OhBP0 zPqClt3k*k|dP2X7^bY-~enr8sV~*>W7#*x063-iK*yIWRGSWMBj{j7Xr$@wybX@#a ze2D8>7x`ZW6!iun)eId(|H1yD003fN6Pis$j7Y?w^eLXtnZKyNLLTM?{TAeQ_LO)^ zKvk z6w>ajd?U~ThKK+NcRcqu9(e+jLjHLT#k_*V^}q6W0j3HKUgAj!#vB$g@Vut*K3spw zJQgb64#;Xo9@Z<&VlyobPy2NDR9m!1+f;+(jd^Tr6U`GhCD0yDJHJ*XQ8jl-+YAFEArr1W2;3MfoKFNhrwFR4eDEGeGcLt(-a*d2Ua%`?=H}JH=9i&^+=b zaY$o>Z2ly#Qb1B{PzcAzIr%`|a&EDYT2*#BGXtTOp?9 z$g}n|#sQ6|-?4Y(JCL7=PYnU+J_-K-{FC&D1B^Ln`~dH<`Z?r@+b(~X-6RcQhJW*> z+IUazyp^gy9S50Q%M>Yg=Bjp?4n-&|WO<@v=3fAkTrecz{y4u$RrAvTm=zJSEf0X3 zo?4ua=Y77P?Z@|Gpwy*+qpwSUDn2ovBHzWJDDfHdq;(+uUf z-MYDo04BE-nU^|lOkMZ-O$0P)SXnzo3^+}*_0qNRTnJ2YQO<1Z>|Ln8p{cw57CrzJ zg&uhVR>jOo6Z}2}QgmF(`0@on#%0PxbfxC=JTNH+C_z#?oG(ue048J@asV*1I$LS< zgZ@sr*E9>@nb$g5mH|^pqFuI075aI;lgFze?M^Aa34lJQL$*1t_ei!#lEJ>*x+761 z51^3OI!l0|)j^*ug#vsen2_$`VxBZhw1fA>fTUQy%a;XY2>Oj!#0I7?uH=|ZCpZnrqp;AbrIMEqUw zOYtcB`$4fQSOK||&nk>|us@Vz3j?!AtC5Aic_ahOkHL&rQb)F+_P z5Vv!>Wdep7yJ^0`Ijr+`^C|)+wRKxKcS3f`v@JBj^@@U>Xo>evD-QKYfxm^#_6hiO z+T5!tRBQ+|LcjW<0Y_i={n(>AW^(!FG2&2lU-!Ms?LG`QDyy+ham}dQVfz({xnV}OKgzdAP0kKLc~`Op zjQUH=KokRmVnEUt07dFit?<56UnAq+UHYCl1l(inDBp~BIL!Cy)ts0*w@Ctkt>RU3 zGWzS>V3s@5A*O|CiD5R%?E# zyXrLVBjkX3QAeRXUxK`X48uR_`S3@uetk|4@=oxJ;8B5bA@_=`q4D4b<6U9`8*2AL z{~wX)Txf-KH>Y{6Mw_sIvRe6f;rd)TI87mcLcom$0JoUSX!!G;Fq!I!tu>1| ztpnA1O8|p8JE(U;#-XF)kWybTBz{MLn9_HCSVQ%BK$3cd?Z>!$NgQUoCG;6;Q?PPu++%DTU!rgxS6euZ&uX)b z%_stp&t|#=fSQo%=i8|N4yndYLl67fe1jr6Q1>@BAx5k$Y}^l zMu3a8ihxk3)qcIr0GK2W@p~CDKpoJuPXc372uyl3*kBgnI)DReR{jEDV1t~PB}anE z#flUGWTxBwEZTRk)fv~p^<64rx_f|MVCe#g-y@Wz9*6I5Q3xfM z0x;8z3>lULXXX!#229NgFbVO z#`#|$1T#bb(f0>3kNOmA#CXc5oS5#D!+f6U=M!LeTy}W2C(;vba6DPi>m_>S+ZQ5z z4}~~&Q-dw~ZU{ue^LxcT`7yZvW%Ux*TS5|)bU{89?2;iMP;QY+ zWE2ul=1~74Vr1I|{;@G>%qJpKbcz5JW&n7^{V|@CrhU)>wo@!KaM%eDc_IKKbMQO) z4ALQ^pN3RXq=w6Ny}H^A;HC1EfITH(PYKvlng=eAd7uPHy7~c0>SYe57GA@M#NUsjPx3{21hWWmYn2_!NFl-et}tp^nzd~zaP(S3{I$10e~tvmAs*G zkO*E6-o||&3cYtA59-&&+nhWwer5`g#B}r<1w|cuQU1!n;0ZPL8G!?zeu}+@`+M|h zMd|Q4+_E_7>Nz!YL?Y=1@a?yt1OEY0XsQD)abl8 z3i*)=%##L&S^l0OfDw6MkpkiTMpA+ z(T?8~kQ8)H)jf{)IIR;mL5|M1%+}sSo;suQJ+d&ksr3l5L7s`v1`i+~KLS7!qjB=7 zLCj{zIJCqQ?2y>PNI^Z`Cji7yzl+yC2a4%*qs$$r0T2QdD3gQ&M?B0Pmc|6^*X9j@ z_lQsACrE!L=?{vg@DBhtbJRQ(K+&BW;ta(&D|edJ;uaW%{2Nj?+3*lc)yWZa)x=cu zb1l*G2vQ4wxfuhCk;&sD&=CTQyiMaj% z)KPm3F?YRd-i7=+0Me!RxjI#Kke}OAH(zr@)|flWY9GJhESPevMrZ0)Kv9)zks!cC2voWD z0)tHqP#SOb4$B_`FHoK<4M1|W<~Ihyj8FH@w@*MJmF|@%Pv_XlVYf&7jm!16sXq_$JNeuPb5TB>XjmZTv6iU@HUVJEQw`8R?v+E5ZSr8wVDn{v zy!R|yE(d49jAT~Ip%xhF%tAIG1BDu&mhE07#*+RX0RRRhn@+zq2T#m=lR`ZkX|LRB zQVqpf(ayC(I%Y;X5A6BAfk-g}7%?*;zuy!X6$AC+`W{p0nQw>k6Vq7h0_G*FOR5FR zJs{P=ZJvZe*lp)D!Sx=gcIl=b825^Hihz_8?UBiT2^hu$_|)R}$J7I2y^KQa9Aacp z4+O1qWKe!dVg7<*|7DK({{jFhQlQK8*W>#o8P!v%9pUTLfaoDVqq_EuqgM`SUUgh{i zchtubw#v}C<1KznRs~=5*pAWSn1;doY`_wVL74n2S zq{+~DnC;`MISfGBV^z4mg|9Jl@?_XtD9Mm9r!dVOj(kqfgXtv&!%-THNI5v3m?|}e z@~L-gD%bN;i~Ato7Ow>-1OWCt3T^la|G>Pc!gG)e&p#K|iPAjC!*#P%50_Ux#DFA| zN50O&6srS_A9F0&f%I0fA|OYsDMf_Z@Bpm$+FDI99yKPw zX&83Zob+hi-;dK!CWG~WN9#doXf4wC`4WTTm42N^2GJOZ6dUq4naLh89nED!tX`Us&yKSEc`(R6^nUI9oPF5IeyhJI0Pru zepzC4_^}y|8aKSa{~hOtPNy=08gvM9Mty)Ju@}Z#y-^(PB-ME zM<(r2=x?h$RbV$5!~GjW2egWuRaU#xugRsG*})Ue%Cx4FcW)Xl!FP!G?w^J+V_3)mN1O>31M$2qxBk+?e#fVZ5H9cy8K zCAX!gpDr_ zwn;B53)51=^3ad4Ezpcm`3~!ikTEbxtB3VgL+j99y;5Vpsn)RBc+bqj#FQw)u`)L( z*9GrcY$m2F3IsG?sE2vz7tCWbY&hETquBXHjs(l`o_F}eW~o5`kQ)t!4BIGXCkNtr z3T@ge2?wb3K(`CtJ0k74-4bBF%Q#6o_YC)YCdzStbgpZnbq@LlK04D6&mn}TAi!@N z67Q;AAHVDMT}42o7?5;GFX6PF9%HN29MpGCZI{%3AyALeeDIJaU}6c_dl3Lhegj|@ zkC>Bw$|8Ug>QfN#F%E&J7#t5nqvW=E@rx;Fb)7L^!xglCo@A+y&z|}<9sKH z{f_pBrOuyr^-I4gSFYOcK7^f5G)9WR!kfe5n6~>yPU9c@fti5x)=qpa8Hj5%bYQ zrVyMpNb|RY_aRRNzZZ00vp@2`X!4Ldr#_Vt5a}Pd{!JN?p3>*kCwTq|QB;3|+^1gC zuR*R*2h@WSk0FGi;c_kdx<-DCa9A=vjmvrtb$JB-crO?AxzIOJJ*3b8glJH#SSwS&PPO~9Ym#jED05(kaoWAic6 zF`(z1p+Aft^Qa)thzZVEXPkxiIBndvJ`^+4YumS=UEAkwJzXz_cFs3RHHVz;xAfW+ zNWt6A=}-g!ss@M@%Q@**MFJ*Fa+)1aTs!3n10HDjRTs7?w17+e+ZXw_Y?G&fa18!m< zPK~TAcFVOvzYuoERCBa*U%#c(2;-@@d)MhY=pTy}L5eN_j(%kpC}NoStyn4sIWXMn zX#nOx8NY6K+~36d+bwKTEVlRVu%OuV8yD;1e$RXhtI@Skm=(L^TH^j#8~q2*$NBxf z>hn_IQw-#~RL1@K{PQsbk{iV20CweC=F3q2 zUVaCw`Ef9`WGeiQsE66^1gId%V{$p4k%Hl0R*Tgb{x6DLuovU`P4hGHFvq$hqIKu* z{4CZ&%zrXc^UO{U5}Wk^nWATX|z3QXHc0ZGOxwL4IH2_lenP_q}q78j14FbVg=+pgePB z6sm2HR%{W8J@@J58j5kXfyp8{ zV9aCV6Uc`bgvc;KfMRlP6rS6|R*HG3=M!2P zVuF5A`)ZejzC#~Xbbfw~U1~5ag_a>b(2pIE1i+0VpwUsWHOMjmE%YKb3;hd#B%1(9 z^P$Na?Ll7%ea$XB_bIDk=&L!$d<*l&x3&I6^G}Wb?{EC9d=BM_9YIc-hXbVmjAX0X zJz1>JTIMFW1RNfpA7-K4ViB8JAid=_k;QW-RW%?>Ap;V>59yEr36dC)wrT7upqE-7 zK)J5f_PWzIAfN3DH>YZy!TB@;2es)q zk7n<1@2Z8gTkjeICUN)r@*C1{OiSLBxEbx&&ARnm-6GEaj&*H)%(s30`c^}Hr=obr zrbgBHU8>2sJMg|qg}w7u#^*Nv*^x zK|qZxyT`}AKA2J*?vR62PiPFFPx1gvLOxcQF;4#i-W$xcXn(&i0Kn9_u)qJd=k-h9 z2Vjzzfb#5NQRvSw6lezhnho=NXG#CnC)EjZls7PKiCOhT9Aeg^9)e^rO zZ&%o)_glz@6nf(MtzwE#4wwh{ML?R&RSekG-xCm7MS!*=X1OMS=A&YRT&SQo!z{QC z?H)4xApJA_u)3dN9Z?a$=Et_4{7=gp*WarcS9?&8;XH$SeNI*fn>p$|*b*#*+@NMy zqtUNtxq}O&|8^4@XAt^*RwJZnqQ7@cIG7YS@%4s) zI!^|t7!G0z%tAgB^Mn0qPJkrEi^qIuL zn18H3fjk-fjeShg{7n&HBfkE${zQF->(45@pM5zK(s`yN7KLsLnUM^DNbHZQsBpj$ zzt(Ty_Z!tC>Nu{?cCvC=KpVrwk`U}$s!{u>NQth-+i6|*V;Ajw6$7uuz7J_iM?-?~s6=^1H}C{IHXBHZ*?y#G1zxVYD# zK6niyl)TDA_2@s!5O8IRP?F*RC!Z4s&>nmAHnms~KxjmwUml@YTq{+t5}uz{AFFSc z6dCLII@HsP>>2iq#JCfGlYfH*uNVGs@Cg6li6oy2o)%Cv2$=!dm>HPv?N<0OR3^(d zHMa2HLW4phw8x-gS#^`?XcvoD5}-on+U7erp93T%JGy8;t97Owju03uc1n7TOy54q}}WdCndV{Xd*Hzrf35!$WXvTC7!-koY5Qh@jK+9${WFeH7q*8;yMMwmACMF114!fEeb1XS|+ zI2|Zml9yFI#6X*gR$qtuZOoJuhJMSFCuM8DY!eijPW>Tdp_|Tp8=Q0;$2*AVdMrC@W+u8tD<+@s}a>j^c zCpVph;;+~~(+u}}CCYQn(v0+3hh3Hd<k{Jqf^WqHV6}831&T*L7~jI#=u3pRD`eos4O4{APkN=TbJ4=B6 z^)gc=pz{O4Jml{qo@1+#-#_puw8G`eloSJ!03=eYk?#+Mma8-YTON}u6bvSMqau&% zl`P}+gxsm-ia{RA8*GqdfcrVy56BnF8|1J94gpDO4JW|6!jWAC7B$LW0)CSqYJ({W&oRx5;6@ zT^#83#QfsA2q@zwCgz9dNuM&)8|9&YiN^v0xLvM*q!7T%v99tDkk?iRT2Ek#K##Ue2f61jL_@kq-TrHz3>1f}SeV;Ea{Rc|B9dC;ejwtCoL@gOJ39 zn`+f6H>O4I`sp|N6q+4O**K4nNi->Mb{g|%p)A?B4EvD0m8w4-=hvc@ygiHaYx?$D z4Xz>P zEO~&XyA+-$ds$>MzwjN&13G znM#ZFhE-}V8<)WIdM96kaz3FS=37zD^ZP~)z&p}Mg9p`GK>(($a=r@n1KANt%+rbC zRu4$HS0sC7p+`0|k_0&04-N3h4EC!*RuFUPf?!;_M-ksIR@m)uotTy@Yygz(OxE$x zZpmIA0lRu-+d55h*!Q{vvo_wdMNGDaSeXCKoc!p*MfJ(A?vSS6R=@bN_r(2$Lc~r^ zV0^QzlBnk=*$%N1?fg93C$=&$Be940UdStL{=eMw8;8CN=NZ(mR`=?4k{p+(6$mIe z5&I!>m|Paz+mNJrH#E0iZ%jNV8cTS<);-6yy8sosKka<_-czFkA($#Y7Peywn~!+@}giD-^t)1 z!JdSY90wQu4*xCEn*WIr(@+>X4e1bo6iZw`4-Dd;52Y3Zl44-dvn&dw_Kf_DeP$wn z(x;GdNVfQT{M@BLr!Ra*{Zsun^6`v`08dYebLU*QXuX#c;O8}Q9M}J-;UURjm{RYv=M@wg22{@)8^sF>_o!aKdj)Is z9Tow8e#?I$9zp(gsttNBb?k7Bz|g-2s6Y^3MwX*u%nf0`W^J0$8w zee=-*UN&htT2L-Hp4LuKvC%#ke44??$vomwj0Nf<|x&3oc zxFp(T+dGhUSuF|;Fe=?-Q*#f%BfCwWuE)$s^F?_GNRp{GiE?~*Mj~Bk4LLE@&g%d< zs?fvkmTCgz{YwABoPj(i@nn>v71c7|;;| zPtF5iQhf>?6BsWg2BpgapcJ=D%v3}n`KVtDuY=VL{h>2L|J6f!NU>$Heh%vs>y~a@ ziGIxb=%J-*nC@Vpds)}4dpwj^go5O% zU5CE={l<^AeLuHP{!8$CdDZkI%0@fD5fNa*_c0^ihL)Gt2JhVGbjT^ zJx9oa;zfpN{drH=OAQyqpfMir*gZIppgVV&AGsti6G(Sg%ojW&K2{PO?JKYe^ zIjMF|<2=^$?kn zVDysS!^uJ50lp-t%#fjbi5O8ty$TpYP~I2BZay33B_IcB!en?LC`e%uuNLnKcShv)AMh3u`$>`K2z@s=6 z+rMH!+GYS4(uep4LG`s;FK2k4!TV5O%lKS14&S*aH!(-RfN9AQ4gq#2W<-hrM-%M6 zc4tW150Y8hd@zX!kKFP7K z9OrdUw(~L0<)rLj4+d5kRwrgJ08_urfOw@{Kd3GWJ?CCvg4)TWkVcF72)hsJC1dwW zbU;01GJVrsFrQ4yIH}$#V^+)AX<}YGpf&`{B=kx8KC>D1oYxPry-5FzKg_Dlh0ts< z0OfKwM3(aR{Q$(`{t$<3I}b<_5kt}z9x)_I@3IFZh4W0zG#fL}e#8snB*wuhd0Z$> zK$+D_Cc!kO-1G#@C(_RphhtoA)r-~a3>bcb9bydw&_q_V%>e*NtOkID9qAT<_lVtk zjUhk^La;#+1JWV|y)PUvLm-j_5XlJvM*-=nJ_ksO(+S)+5fJH^SSMr=j(B3Rp6uiN zEoLMuZH)6=FF-N@KyvGCs*C4)+PB-pXjGZLYg1E;&aDlcJCeq9ac(KzhUfbDw_6R6 z9+hfb)-;FtGvBnp={@OYXVXY${AR^;{(_vGNhezt0BA|J%(W>(zmse1HN(8y&8eFw zU{jCm9j6=McTT3Q%Tolb8J_LuVc)1%Xg5Is?_FX&L;aXT{9cs*Mg3r)kUk~um8%0{ zf}GDM#<0kp2;3l{-s820(a?{1zye{SFr z;|&=11UVw?;6@) z;3(fLpa)=&aiwa2N)kXbeSohG@Ls)*Ent|ZgC%TIhV+nA(vAcDZ*sWPwFuxDw7;E6 zf&so$lG=Sx;cgp1F@JEXE50+%8r%*=gnGrg#C92CB)gZb(>U+xsn%#4kX4K*7}pC@7Vu1e9t~ERE~ZIQY-TK?#s_wE>c9m~3d{^JoCYzRCrA z3>|p4=p_mVyyV2tLnLHGLRzWQ!E=lbs1Xq98TBdq6xUCi2>9~_K+q)sr0?rK0i6DU ze8oT}9sHU7h2fyi-{tS(`gVRwp41eYU`?He* zxjBeJG`ye*u=SyOiKG6mR)a)M{l^~R?*n#&>IFl=^T9!d5K*SeOh>)<@OfF|YA8nX zoxF~y&)M$C?C1mzh-y!;7tepF-ZvjeqGbI{eg^s9>c7o@8}h_`%e)2ognSHtP;5ih zLkF2maa3`P1&^>|=S&xTuzR9m{!Y~Y;M|=RjgxqPp>@98xd2F-XUY>DU3dtl+9ui~ zKeO^Ji)|q%6xx7W27m>pL#A^A3N9&aVjB3VdfDV5|BS!C;JYzn(>Dbo#m`Y`KEv<- zD(MfNeLOGdy=&2tRLh3_m#O&KbxaUYp?{`hk)H)HG1EEMB9D2- z?%|i`h#_yVN1lpvgBhvHG=Pm_i(06ma8(fi>CND$!7-!(NH)*NAB6GmtJk-yb=@eH z>q=?&&_F~03sMLcC756^PV(|;u^)23P=Lq~z+9H8+Tg_B&7~VGrZ|{otjKF@bWs>F(JJs5Tp~UK*YwMC>x0ly8 zPwT#u>R2Sh(0s6SU_Z}y=~-EXP7MxAGB|z6H6y?d0ex0Oo(BNw%Y#WM1`H8X(i%=7 z+)lAI8u=H81?B%);i(x;4Kotz=OAAmj6(ThK+*@n6D9;C0SH9DkKgxw%eY=+#;3E` zy{$n0-xNp1qJRvB>&1jL0nWx)1UPe@iOzr|?H99Z2Feo~iZqKn*v|ux*rQxY@@ziA zw?oGFA7O|2Mx>9heVX=Fd&~|-^|g_&P}5Og3xk=tN*Dd4fRKRr-YCCMf(%Eaa^0PF zDeAY~y|x7a+w6)$rv%Oq4h%*`7?g_L5(Kaqo9kndLCbZ<7YC)`$sQ~ZX5#we%9ooN zJbBd%!6C@^#2bN@VASIXEraieArARfy#FuF<5$W&{;lLQcCZNn+UVD>^XGyCnnIc{ zQUm}UX%Fyi2ZmO!yI)S@DA&&-L+w^GEk*OV&lUxfysOX98Z-RG0Nm}tbc+o2E5(@1 zfE?)w`nY$e-~eEE#Euq-D8EkuU}Fwy z59#NE{dy~pn2<31%p*uGMml6d5)t4?+BLu<)YHENAmMwLUOyUuA*l%9N&sLIeuvO# zYCO^l<(R_21Q>D>9Sf~|FnW8nuceS|6`9+s$T4qfzJ*83zvG;y4llm|OrlV2WjF_q z%`~-}R{$`bj-GQ>+ajHx=c;y@4tPKGSef>ab7i|k2fQzKxSL$yUdue@nS8^_JCo3h zxwqH49kPRe`}Et=q;Kl%wt-x)r{pW~`y*;CdIo@{;sL%L^%4S;SjZR?P<>VNWoi!I zKh+xO5U^)LzPC&IyCtf!&=>F7CZ_r{ukRB8BxNwKW2Z#`n)84m{dot3?+U0ApC9%I z^LYqNVzbkuY+_&;=L|%?i21pFiu3|q3&fy2D>u;^1i68)k~1NFUaeQ5yeBzAxS{+p zFo_sBcPIc@_z}G+z|6`f%NT30*9~%t zH7+p#a*IW#jrrGdVdVg?dwq#6&MzAFoE>?swJx z|MI=4-|#x*A+dx{MLj>nR;t-(C#|*x%M1bV4utJX%t(9Cu0LlF>-%L1ko0Y>TjBl% z^%?`JDZsnO0pw)c0y?KIFjF$bh@8m|PxXa-AlNCEYhwZdy_^Ug;LTGK=cgLtfQ#%; z-^zaWySB@e4DJ7!p}kaZrFv^oECF>&945Bz~afx zW)U_(%k(-?g^kgy#F}v9v|b!H$FV_rDEO`ZodWPg{8{}4G7NzRd0PDwe~>>A0O`{2 zf(iA;2s8iyKmbWZK~zb7!U)LmC-!H^2iO_?OUO0yVRk%HHP69PaA4vKabD%2yx)CDG_A9_O=<);P^^RD=1@K^vtgxbazA>T7n zBMZILIQZo{6&u0uKCak2eO)EWtpG^E#y4b0s`>_iB-K4#&!bQc-K@Hhi$$lzEii!3 zvD-U!k~pBJy4g*#ICvIDkl8BJEA{ra^xTBH&IOy6vp^ zz4<+^zrdagp2Kq+X2>JIQB|F5ZzGwiWfAbGLGi}Z zwIOfcbVK@P$U7_QR1*-Xoy(`U$U^bt_bv3dsC=>@^K`(QD_jQvuwo~-W5SrbvbUyd z`v5v^x~;Mn`g^PN?bi^Xu0!swgoXEY_gWF{9-%*r|oiS z|A^l+&hJ$yM?T^Zf+E*3#gjD*NT-os|1O8-S$?j5y7pNB?Nas1ZniJT_2x;JFkqbRN)CldpHxBLGViGu2^3K%3V9*_ns*D}1lG z$GUJmW+J-uecyLF&VLA~5|qCqf((f#)pj-&?YL7cWW#f4uf&*QMH2Hio9$PkovM|` zsu&E0{IK4H-lHB>tYiyV#>2i3Um5D6U*ty> z`xfauFx2YlKo*=#H#|2d=UBv`xIn=%5r#!NCX#7MY_FHkcISjW_){0N5tx^q%vd;;n`A$Fsmh36hlj#tt6{#ler2WG-Ud3i(932ze17bva((Gjf z9C=Y4)C$i(9qbMF37RXtLP9^sA|TQ+vq8*7`XL!HA%#FA)X$}Wqf66ah&FsLmht_= zW_2(JzhB3}7=(OH@cLU_QWV0nX*KCrEc+)n{N(?EV~u#-P9|y@tsVcR2TeilbU6X%R^5rJhs|I01c|QkTC}J zbHJ>Xq)(ll9%lC~VE!uh%h*XUpYsv?eZ4-Q^TKhy4doAk z@azHr{)7hb9rba)xR)(aC_h`RW}zMzV@Eg|@10{$P7QJ~zSx}Xs3g`ueNS>U?vHW? zWxL~g|HR!n0;o+-2&Zcv`sbQZruXvM76GU(J}(il>t6zG@Se-=I%JZGF*>PpRcnhv}|4@ zQN*KV5G6 zk*~~82~bc16nqt+pwvG~{iD=BO2D)KbRH-HlCBa!5`ZG?1&s}lJj+f)KF*Hn?FNRG z%_DQI{Vh($nTs^%?SaGWfgt81lGzPrnbj zU!CD+klzjR5qU!3z~rtMba0o+rFtIHt5sHGA83xM2RI$X-cqlN6PiK~yl0+QP*AY* z3X023fga_j208z3@T=f)K^{Fj*kS`iL~3-Q0vp}&`MWcBTnm|Lp1ZC=%e5x`4Q5;;IE6<1u0MfVB%l|a@slNcwghpt>tyg09?pi zUv*;@fEUGj*WQkHm=3r_8|MNLDF!5k3LShu1SUaFP6LSKLvfR9mf|^#kMzjYs3LjJ zA(Wv3Gl70Xyn*ljP0}Bjo5DZbkpCVqDSjU1GauqT&+2D_XYt<6Y=hXS30TpuFu+2n zwrttC#vT}wlGdgM=(l&4*RkrNT#X91)VdYdTcz&0wn;4jQPTZfdVWFR2J<+^IegUi z1;*^vyUl%g?~qiVRG&NmNnY(tZItJ(O*dBGm_mIOZY;mpsUd}|vXUUm<=twRd5UU^cGjrV#x9+BvpZj~dTW^X%eznXT7-~UbXbN)FiDrd~76*Fwb3`j8p*ANek zTo#2UME^p5JG)Jb^^c<;CaqkpJea@E*7mNehT_({sVbE;roLAz`(GZ)bGEK`Gk(`1 ze@Cs`kpK3D=G6_)0eI-zeruFtT54=+U<&gHTgu2Fc0}DT)<}dn!b*tOnRmqN!6O(C zf97C7QY8kYD_}jj($~YQE&rd}XPw1rs4<=%V*A8eL;K^oK_-KJvs;<#i}5LwPOh5= zLy?)D8t(u52I$bU+9kz&WY~xe3+vg0#GnKen0koaBZu`{iDI`D3{%bk*M^*@MY1ct zH(xl(uDCxtJ0RBy^TC|LpcDa@b_erIq1eAVUlA-Zk69JXpmr*FRKkz3RF$8_x`@XCDas9>l{Xjlp zh@s(Sv6tV2cG{yC>ERv>i(-Z?3eEFbCjO`?Bi2V}b7`N_$O z6d4G|<@#Ekv&1wz+98J29SVlYJUp-kxG7MMH`puUh$aK;+c0k7T*cl~;kimhp+93o zY-wJu356<4@@4d!%e6nik&6)^DGuF63`qwW#;>YUQWsx<*eLLd^- zVJJ5Kc>vO!Yz+Vj<1+>peVIHe)&%!t@SI#D<{%%3CDwVQ_w!|ZI`XkgF3=P4J~tRq z=!5(HvgKJ`3+Gn5o?GV{V`^3Zzg7S5U!i{~XGi}F*Sq<*O|OUF$H1f+sg^!D7~PX= zQ)utd{+{yrukByti}C z%GFCEe~A`}yQ-02GYl>SD31nHk^w-C?-N@U<|T7P-v@a_ZI&xgZ*%2npY})7k^`L{ zc>f|XJaj1BU?zHl@%!q)bqJ6N20Sqd>F=8%DPAWoJwMzp++bXR7>Fi$Ly)g|Y^c>M zMGjfrz%d2AU$LiEoqWQymt3kgCd}t)0 zcN5Ai#`Vp5jhv0|t=B8fj6AIe^I0ZAj#ywq!uKlR=GP4MK35O*C?C7ooX~-4-~Z3v zo5x#Coom4RkM9ruxV_!IU%y^%wPvHJC{qxW0|G0|hdIoLafSIXhxsrj%!f(Bpdix< zAhSYnKyXT+2*)|r*3!Xd*E$@l)pW3zT6^<7@6OHvu{a=Fu={s@KVDXLva+(Wvevua z_j#X}F90;@+`cDad`h0{ikB<~B;^2M=*KV0jQe#xSJHon7{(*o^QdGALndI^Hogk) z?OE(!H@N@+i$~l&Qh^caa<891lj3ze0VF*i92Ps#@B1;&lpD~4jJfH_D$VCJRr>B$ z@kN4CJU+{x3U=Z5gjqHL%3i7Z@aMJbQXS2O>k2@X0#Ky@R4L2@g?Zq!=79nr>FNa} zC4ico{EP9HAi&7G!D}$_V_cTlu{V8x+ZRUzTX&QOVwcJk5|) zD!MWNN&koT5Hk|Vr=mZKKcQWR-7I?@<<0zfbV6Xmnb|6lL4U5kI$91{9$Cg>7ZJU} z=Hw_i&W^b|j41kL^in_u0E$d{8s(1!438*((*}yqQ}E9FJ#mypFS$|lw(+ar$%ud% zcCZZ62q)?k!8|q9Jylc$1`S0~Z@@-yanvb$D~{(FlCVKZQnIaOJ>~ivQNB>-8Ilq} z(sHSbRog?qicYE8sApoTtKYZ+5*fuQ;^;`U7se8DfP*Or?KlsRl#IV`o5M1Bp4{^# z;|9Paq)S1r=)ei?6-3=X&LaoZuu!!+qW?;qW^yz1+hRV+Ap?f%9%V<-UqSF|MAKtK z62y!|f8u|P{)pqh4YCm~k9GvMVFzFUQdO-x-d}TDK6;x%0G{j5-k8GibX}`{2*Zif zQYK351b|d!$O+n8IRg(#oIgWrooa{cM|#a1W}=%QNL(aGp($oF{+ zj7k`fE)|&c*NFb$NaSxuZ$h4yo(@i-{!O?W0h6Zrlk~|R3`T0NurJ!t#cCTCqkp<& zVyPkCe;}TF6<@}emTHLlx@POA2aDdPGY!(W`ovgshgr|Wd4BU$L)@=#rj1n; z!hnO611(VB$WZlKtDvU#d#e#gya3%sy2>7W?u7cK%)JO@KqXjTCFt z?{W+b8zOg>nG9f=(xO^JycgALQQpwUd$(F!jd7mlbSf7=xSi{!o<)Ud?+nZo}4Mo z^n+YuEODpeyoX>4U4!xd0zV$?f&6vwGJnK{!`?uuQGVV$%s!U^DVfI#l3lqD(eu{- z!h8A#-_zgo0E#!*&-r5k0ra=J<&X>cG;M@O>+I<4fK;Bz2;cX1Hp>~ULSL3P0(t^qQiN1!64ql81A9U#W=gu!7?Tp9(H{aY zBEZpmK@3cy6m+D=|ABchx&JGHNGGHY~qj8ktLj~gqaJn&1x{>i;NnB-x6xRd>U zDKbP)*EN|OH!B6DQrN?UAcxK|=`bV4%tyg+K#raRY^S>d$G1f5#k?%uW3yPV}2{0<@*k_oU*E5a# zYeT|bIB%Xg)*9&Je%#Q;he$o=Zs#iuN~z}tyCTy2VkXxF(D6?g`3mzIE37|P;5wJv z-~CMjphhYD)e)IKrVI9dNx;` zjN^~ETeyXOd)hc4ZRG$Wxp_tg7CZ0~V9Din5EknDb_1P~ar3JCn7AL~>-p$Gi5$QO z#fIGab2ncgO%G|^g##G!u3(8YRR>Tw_%SCS+{f(w=p~k$cfV0PRkHql$li{gLA!s# zPjPDhA+d|E=2&m}VwZr*W#(9QNCxY60H!Cj`w3@Ce`I#Q;dj@q`KK5gw;zI|L~8Y>gc2NVbS}tpO+K zNCiOX5PEC36wu&*>Lxyic`=QSevUDNOdwc>?>jI z5(>0QfJ4*OmYFuFXTH>4BfvB4R(hvcraGCq@;{XcASsu^4d)vQfKAzR3`|L&UKg{T zUe}7EPI|*L^(tToNc9Q3s00*W%4XvD39%zskACxw7~u7YyE!8La*;GqCjEPcr>Ue* zEfB+tJWF!3SbsO zdoI?$IlvM6DUk^?)dLL7wm6=YFM9pg`Fv^YJK0iB_MyYUGIs{r^H^|?u~;H|?rwgM z3wu$3RE~IGuSiGSy^y)}F_A_Apmf>v1u0H}cPhGH+U7zZ6pPs`4g0jr`0Vfu0oE6> zsUF#_ZE1Ocz+>ZieprIv$<41v()-`&dUUz%!5lPt1;%iIVm{cZURk344pZB>>!U zKa~E8^6BVf@ecz)An^~80D}I3-!Dv=_O+Lj`;$a_9^>z__afw2k9__LN5lu)WiBS9|Xj7~)CKN(xU9`ZZjn)yqP0FR#;!oiGT;wjwS1=>eg@*cAQFT9v0ZGxX z`BMfqLctDB4vYoZ-VMS=WLnt6YEp~{MW>}&Q=v$h&RXqM3`nZ)e+fX6=%G+#(F&=n zRY!%vAnIh*sYd0vW4jt6IVSJcXSi z-JW-eVe9wCvkZnIemK}9k;6!rhvIz<^SWh<(eJ%8jjA<5zs*Vy$quvNc;X_rLHvpI zym*0wxs3fK`p^I~QSOg`gTIe{A7KL=-5))G--q~vvgA-I)|*x|D~18cxj93r&H8%v ziyD-};2^hj+GH^fh~gUWI{_pmhMPprPPO*hYj}@lbFXCvOe(cXi6 zkJyWL{5trh@yh_rSNu=WpU{pZ1>64_^!LS?lalj4Hs~*kejoha_&sEjl5U@|$Ji5) z;c!8)(1oESoT%z}&Z#L~n}l|i8;ki81_K*RX%FMPXQB%J3@0k`W5HvPHrpufg`8p! z0CxmZvH3-%O)FuTN;j7k8wM!5c{N2PfJ&pVafSdRb+vkD0T}UWmDJJz@Um{KtVuF` zORXEtC}L;orE1COX9WPIvKZ*n2<_>YZEH70d58@l%wEi!V617afSNiRGbts&mxPHY zVa~|`X;ANlso*XKh$$TZV!*92eovnwEQiWna_@O~rmNEu@2OPpp^$+y0SrybGa4m; zu>@H3seVpU_2n6`5=N#8O3aXzFlHqw{xqeN%`)eJYaQ$+S=oXiwy3Ui6UIf|qcyAj z=;J7=nYp&|zn_ny>(5+!=D*RdTE#WaT!VHuaBi)vnF3={*&Su|FrGSxZBtD{7U8ki=gve-efOPcGA z^}hljDeuro4D~zN9A^ybyT_PpQAD<>@N5s-w?ON>_frvW4iCi+~70Y^i!lu~I*IP^T30FSlF?-O=($k8__t>SojFe^Jc#Pb-N*%F=y&fB934dA3wksxVlaN z$r&~=0ItA}XMhI%I^82|pFu#3-74M0!u;e7kh^>M-JPb6$zpzUH}K_d6us=`8Ijya z1pz?{j7Z;ZpwMM=?7E-bPoDxL8DONq__|+OA1sq#=ZZ`*4db+2%uy$p(9?pI(oD#g zjZ^$U6z`W_a&z-p{JnoedgWiFw?qZn_cjN^c>sGW!mHM!J>{#~Z45h#lB%!YYJuTbl{Q|7eQb-pH#jwM ze%J8U%DN>{)XJ+_c2g1dyV+|>udNQdi*-}An=A767+i-`Yh^7x0^GL?DPU-!QEU?6 zKCxeYo=j4^CD-dt^HA}@Ol&t$8lj#}W}OtJZe#wf#T4)}Ozxz%axkB{bJU6W{fS_6 zuoC_D5LaUvW&ZlZipoGefIkDW!JG+^7_q7?!yuVVm!s}GbrG8g)}ogQN}zc5BK_8 z*sn)x7y(32ipThN27jD!CU^q!;~+GAoPVC*`g&TLVpn- zLjKDDN#_HQq&!2Dfeks20ZEUucilhW_-^qsdj-cA1v}YJ4u`HY#vY|$BjnG>kb~$j z-!H9qfkY2tB>D#~QVB#?1tZdh3TbROf#aDBDG5W;{nB>6+`xtz3`ql305j66SyT=M zSY;JAV1u&Q=;YUyKgp0JSNkW-NC{KY1q?|mjc%DbXJ9B`o$NXp7$W5k=4~)6jPm-J zZBahRMNrPb&=G*4BY?w!!Ql|)3_iv;Y4G_1hUN?V^HR&7Fj)V|ebYECArd@@Q|KKK z+uY@xfD!$D)dE09Ym-u(DB{)~d+EK*@cU~0@jmW07D|iIPhRjSJ8B@(U%VIn0p)~I z=+D8QjX$G&TzWEkisSuSGpsTVh6JU%(=&x}ZZ=k%l;S>ek#nbl$a%eu+Fs8Cl1N@a zd7S`~h$6c;WUh6FG zr{x)yh}p;dG%zUv%3LTf3Y;l0EomLmj|o#!E`{59{hR|3rQjfy!Kj4yL;c#(g0%Z< zo$_S@?BxJSVg7yS=jt2h^~$zaF^+UqA;8&SuVbbKuIuHrG8=2eq}4>LF9X1qk&A9V zgAIgrb2?*1(JiS=cnyBPzU11H|9&`%Zm_Pa_#cd~+Nm2WB%D`N-cYTL^E#<*vQ4u9 zwpsmCT~Pllf08{kgZWr0m!{$OJz^_c8o*E*#lXgw0~pW+fJi~i)bc0k4ROlAcPPb_ z|2fAlem~EUkr>z$d8zYU;W~zX{hA#Wh5D};pjGaBNdU&=I695*>Q(6(eh}keowUTA zmcl%ugBb?jX?ZZt8YIK9!KXVT@%<7b#su}!4ep7f6d^IOGUkz=mi&At$Ll z9ddv#5koBk9&HFF_=9oZdxG)VK_1$Pm5?0c%cK$Mbe&Ul9sL{ccWi6Nwr#XA8as_` zTRV+yHFjesjm-v)ZM!jda`OJqI+y3>cQseDX3fm=eDT?|=4-i$k(Ccttql+Mrpc(d z8*mlET_;vCbL=JINo)U0TQpLn0SocRbU2SOj(rTg1esU?P+_u2@rmz%g=qWh2z$TA zIjblIa_GaA8Teh693Wk!2cm*DLHO@ixY;-bV_}4HKWr zIYpT(APp;Wa{*0`BB%Q9yz!6!RaZi~VmB5;lq!Bv215W7ob)gK*N%X(JRQjm;!Yc) zFhtLI{BbWVLOqD1`-%%E-v4}2mz(H+R-s(y_cTOuOrwh#yDf`GUyn(b%Ky#Pxq&ZZ zy>x6(c0pEX>Bz;%UyLR}XlYlu6Zp_^;sR_d`Dh7+-)LZ?t7@aI^bGj`&%Ry4wSjGc zoyG~>?ywzka4-)YeQ`!OBLev-TCb%58CCU;YSerKE)hZC)>3ZoKWk#LaBB7q>bM=p zc@^sb?~!BL)kqIovErOrBJ(QbS47gwN9S!Po{qDN+2yULilr&(l@m(OVP|=Ux#6>A z-l*7NxtQc+zq}@X&|Y#71_C&Z?+KGkR+VM+&lwQxc`|KAM2##vjUTsc+*@-}jOOi&Cso9(VLk!FWY^KJ9oq%>K!o< z`|-7&k6`)7;)RBths?wH%#9KL1@7&v+B`6#X&#ho0dLAI3MU}|A;_GXm(Wt@f>+*x z>_o>74J-A@kyiy7P1xPh=VNg7c)yed$&Ecn3ejDTv-_MQjBi+zK105n{(WzByT zGtlnw3C3O-AjoYi$_{YUoq;@3dhAOmP7Ih6k$im_RCF%@pB5hY0SsKg&^?(`e{(m> zeHIQH=xoY1Rlg%$SZjV7gTJk(3tn)Cy*g~q^{b$kFmwoxLX_b%Wn!{xIB+xFow->5 zd%_~v)ozvr z#0Z?TV@755s8?6idtX|xu4qSM%m&Y{1Ckt!H`<8634kg?k9Zm1nOfRd@T}(DBRPVC z{|`W#TK~)wYH6{&eFL75(fM}ecj!83=lnUibN4-}n%5R+Ok4mAj98x~1R~;I5u3>8 z0TAk#_s$2%yrcn=-m$yrbAJ3#M>tHTr2uBf2oDR4&d}?V;`BSQtoR`Xh*EV88wC3$ z1(JOoo$DK!9hu=BNpM>Q^Sy+Jyhg=e!;O8gi13IBp9WC9D<*w>d-?RlCH4$$;sR)X zPhTIAAHl5^S7(C=iaHCta@!V(91CM*DBhvhP7VQ_PUM3MJkzpTC6F0FxuRPLSvV>| z?YN_#>6r;7@W73$Qr?=7VBv-SwgUJti5c1IoKK;*j=U_zJ`X`=94a~CQ#v-xAtJRY ztwA+Po?j^sMw!;`$x%f+Fjmy+Xp=)tYwjb$hg~}k1tGUw-GE5ZwyliVT}N7(Aq5_V zF58ZLlPUXyC^2E2s)S)xs8|t7Einqrn_G1mfbl1Se||a$NvjACot}H%UU#cfaz%mG zD0!SY)^m+TISnL*9dCGJcq#bWf3z01lEp`l4DBUUQgCLF_UBGVj zYt-x6IswSV{oror#EOwn_#^24;0HJbR0J!c)-4+QhJq}NwEOSpIx#asLu zZ8>Odxs1ZEKveOR#G6SktQ%|Rem)F<82v;H0{_IN!#(^=j}2pOwVYVWAw4AYw_-6jPyB93}yR{;;mx%iqXx$Pn2ivq`p%uP~ z^(bHtoMM%2{l;4^QCzknWaq^drCa7Gstb2j=G;CtOlbSxEUk;Vc@?W!x=Zk8pf*X= zH5^%(HOKuZC#f=Drz+xuRO86ndV}!9qs=-as5fZGPA?4YB0Pa(o)Eqvd`S>F3d5BrvR~e2; zyEN+Pf{6w02+9DV<$!Vye)(PM&N7@rl`G;)(2}^VW#5Cq2sM#(* zle9g)lJBqM$TIKV$a3D>Gd!L)dy;)fXt zEz+N^=6fQw<(P?Hw1q+Bcei$j9DHiu$+p z>e|x=W^L|WZ1EqquLU-F7e&NZ1YewfB!lK3`#;%JLuLpQF8Q^qS+7YCm# zlU2o)6*I70Vi3z&*{?eAj2T|S;%Lt_;tE))Xn3n^QDLS)E071WE_rU!`1FYbiof9`C|@D0tLve`2l8n3`m_9SR=aib04f-1t3C`r9iqPTj3&|km$PB| zwOnr0$P0*J=Jl>7l3Mh}SuA!Dt+v}f_h9#lWis5~e1<}Je8{&<=ZJUybKR$B04i#a z+W0}zVmxS7YdA;zGIGX3+Td5nCfa2(W(jW$Mz!IP<-8Yhu35Ym0{M-$gtDiA`c$=w zfv$4{gg6J>G7I0YcFyTL0>x%~gCQwU6eoGG1pXvsC&syObolI)vpaMa606os7Rk)V zj9+wqLTb4Cg4UV81#wNjt*MlPuO_VwCwED~FX4Nm8edSjU{C*CEFi_P;g4$KMrK{BLTyfXd`gjOxw;e$vjEv*&Wwr1(=8+@Tm0!vKn zH>ReWORX%UWk6Ls5PVJnywL#TJ)+4o<1c|4@^&yThPcQIW)P8D62d=E2#`*BvT2DnFvs(-UYQzoQ1Mg6( z!|@=ar=Tccd=Ps_dgp1Zj?3s2V_R7xf@BerXG50^FI^f8NKNFQu(9?u8$yDveZH>_ zYwh?8FT5w}xvJ$U?q^ZdRBRe=U29$oV8TzEB%0FD2vt+SzF z9|leTghK=sSK=k40C`*yr#=X-A}sN-$@frBtm(c=LrSlP+}uqdTQXsng${>VeS;ne z^Zk+6>pX&@jeC^C@lGRx=^aLq(o-{UhX6Q9c@li5>%XkxL&`L@>G#hwBb6b|_e;@g zzsg6ppn9aGt38xC*f)VHu0o+R@lFv^VbrK|cKhRvpL^#07}60xFhc<|a}AG37EP?E zfx77$Wi)H3RS|=;ASA9@a(A{(4;3a>pIjSK9AV~?@NK@MT+-{^In%Z-dU-McdyvAI@(&eNp4IiEg~n@Qf?jhg7$k&-{tQc72o6) zo)edhW3**4ALdVrff^GypN21^vQg)yN6*UYa?{)VV|`y?OJj!_Jb8xKVw`?&Y(bI9 zI%+D26_aPuEc~>9cXBz>3413bZc%6*_SS95kp)C%E*_t2$5K2k5;pa1(c2C1SovLX zd3>!wNUNj9=vFhYt1ZYYqtiF%CWNw%(g0jF@rXd^9!5V1sIVEri@m7x%br*?DXB@U zuG{J5f!H`FfEirO8#5H!Q(Psrvr5BHku>HsWs$o+Ioi|L;K=YIX);3`QSmB4RpzT=nhK{t9rG38I_tH02@5rP7C%0xRre-j%~sQ z%q6+p;Ug?b=(E7*i-Tut8D*Y~>3_aGPkeX!WV^?YA_rw>6JVkaUzzrQv5Aa)%)Tsf z`vx^?;-R`a3ZOf&?>rm=G|^QRJ0lctQ22Jhh-XgStwp2v9X0VpbFndI4xLymMD%yM zhEY69X;&z~cFgFa^~AOOis;8Zyf+@nzfi&*_ut0fnp!YG5;b2#ASZWN=#H~xSO}W^Eb8&4Hxlai zJxQ_AUCGA$M-;hrPse9L`iQJtZ>iF zNPahH#%REfT8WaHc<>g`W5 zCJG#Wd@X}TeLSd#qVG0NOnmXz(@()(7+^n~D?ApSY3#U>t9!Yta5Lcu__}{mcS!Fc zNC1H7cK=lzxDT?_vLHMwxa#r=l}6CNS`oPP7-gNgv$y~y_L35uG6ee7HRHzvF>Tql zH_(^Rm=Y8hb>*48&Z!r3L>Xpag09a(V<}xye;LU=QwYik@Qg%BIO1eK7Z0S4>-ckl z&NTmcg<>Z+yif^=Y8=yuxR-C{dMrA_!GpHvfsmI=aMl~pkK1TXvdGFpHESC{Zh%Z; zqHQ<@MU}YeiT|k5_8bg(W8h@$=)M)B80nSc84Rxv-y09 zEUM`K`|DRSi>9rOn6o%ILGOu(rWO6Ly*wj{S=JnkPYIrro;c=mw~^~K&%7;w0gdK# zJ&c%pjZrN-lz70pnj58_wWf2jCi<0I)kdph4C>bLFl>B63UMM)(Lf7TTKC>|?d@2! z@K;e_w0=hjaQ>(Eq#0tit;!1KeL8*hInS?ffXoHin1jao5#)&~u~Qz*7vIX{cbIc6 zJhnhqwkS0-w9yg=&Vs;`$$4BHBNx@P<9lVp+ay9B%wRSBdud1IUgeQCcK{GP?x_Hw;KJGY z*?^rtnnCMGYsr9i%uM;ouz=67gx8%?(oc6+Hhq%Fqi&@Mjp0JlZhEqYfwY@)noXs; ziJTx0;i)TjTqMNpO?x||I@WseOOMVxtw9V=#}qg!>RCEKN_WM3f?go>`SvWkGXR`v zdMy5NiLh8lO{Z2GB>RM_DRcWKOMgDCUpzbDOVP0<@)nTRWh-=KvPCIkzSS{%zc+1X z2%)SD!1lw<&;Q?o;PdEhl+XF!F9T^piW=Fw!(i0(R$&IihuJ^AwK4eL!POm-*Go$jK55%;`MAWRPpg3e0h64o{+plmG+ItII)Hsn?Ow`o*01h!&^Z*~BJdBHjE zd~{ZH;y1l!Rx}yitYW7>e>9S87As-GJJzMzp6NhX42Tf;S`)8_A;HnY!o|i~MjPdohOuFFi3hld0%eH*tHoa`&+@Y#VV{@a?!uT9J(+ z7YrOx_?NpW=YX(T7y)~_g9#jcZH?K;)WLJHaXc(gu2F^^zgb=yI~Mv)=+OS8@lhZ5 z%;Z{F>&%y-Hqza=6|es}w}``r`yPIq@xI46N$f z@;ejo$^;9#B`7$U;S?Z2w30DGbIobE5PVWP5nPRAlMlLZaABUwdg4x7sWXu26zHVL zsB&;9c6C3FVvnGJ>+4IgODgYVUZOstkogfG{4Yr3AGUwD_+g8ool-`jNAHaP6SW6&%25hS9r$WUwiBHmP0091rSu?UD57Wvqou)OLi`H9svL#6s zcRnXc&kn6LqFVofcfP=!z8rFqQv|t2Q+1c#Z_cCJO}szLrU%?nSv}JW-zoiKjoE?k z>%KoaTyG3KizLe7c_ciMfSOM}EyMZPG>nBe@TgI}$cMWDjhzUaz;#D;J{g)3=bk#f z(jqi6)e84gn9D5{`$YK_t?cf`Ux_g(jsZybahN_I%*};v*!LQ%KfgJ@i&X|MtPk?t z2(HP&?n!HMLMs!Pdpyz=I=L;+*+$rYXtPAtPS;lTJ&{Ze3Kn-?N2! z3`|14@-K-b4O$f+1!>dKPIGTY3G%OU?0t?RDnHYwDeihB7=w~5c<+Emf)=Ch z^~p~PwX$Qqen)IVw6O|;gq;ij!AQTk;IYj}Y?cj8(z$|%y!7XQGOjAJ!fHQF=)STJ zvs_m|CJ`IGWL(CxU&QLSFcPv@r*?krr9o9w>?vQ_RpJRrekW3%arRBXapGb`W%|tV zEQBmOI{l}01yH@!E*)b|i->)frax#va-aICeIPb?^7KAqfxgl_T1FEciGVU+Pe3H&$h?hcPX=eyBp6(|2;{(a_*-; zeHgHCR6Sa{AvZ#n4FdB}!I}KaXP5ceI|gVmul9Wk-q>+RMDxJMG0#LlTCJ)H!HUOQ z7(0_RKyYLB3?c;lC&+waAZIFok@yw4t5pg0Oy|Xk`pC+HF{X|0L&rG*!LPRalh}X> zAZx1+W`T(D(-<+_c?opfo*CK<2*wDHH| zI@X$z*}h0!KW0NwwPhIIczm|f%6#?ba(s*JvP{UiW`2*}Mu2+#vIo6|739pM3o*)i zq1QIIMggcbRvPkj8{EK5B%XHnF5KRBiMpfto#fC#gEP z<*Iu1L&)0g%{`rJKmcXSPo{kZ#m#BgT&XbdtklHbTo~ls=t|cc)^s+Xmv*U8r7tj4 zBIxK%o7Kom&wQg6{TrwpId3J0a^y3=M61!$32{nz!Ihe|)6QScL$X4P>8mmI9A+i+%cVugSMn8Q%P`_db7h7&(WkS3R36Cxo z875T3+Vj-)!1EB?QZ@)qHNYo`YLfhN4<@qkP_gRLHjkNuEkC-5hQ1Rg>M>dR@|XW#1=w*PQsCK5!Alfs^(mPDC0Pvapji0Rj;Q!BH;3IR}r$0+{*T~oc zWV{Z@^(2M25)R<^%D^z4Rw|L+08{B#QK~>hxYgh9C&d>9J{AP#@u14+=|jiWNzN*e zz9b9GkQ$pBplGt`#*^&6t~VclEEVVdlXlwV&EU8roXJYQzy1FP0oEX8qD*LldZM-8 zA(bJcuzmPGZ7ue_1v?HAX`eZ8NN;U<6v#s+5NvRfE(?9z7I7a zv7%5;@CS%cy;MoNq`MzZopKFKU_Uq{9#o|jkOfw+Yk<<@E4 zvh8>W`1H}$QAWMIOVX845*0wgK^vmh7~kLyAdiflpkDA^_z-v&_Dk61-lajx7J|W^ zg9I{*QFd>jOAJ;*B&0je*s?S1Nb~fR%9tn%e_t1-HaTC4!Sx} zQUCll``Vg;S6X+fW|=(O!Z|Of`!JxQ=rl>C5)te(A~n@C3PS<T9w1=dVKxlYo>)FH51M2URl0Ctr@1|4gK`nIrZky1x zOr3`EU{%4{@lt?sN6e3a1Kryji{n~^@QlR?1-~pe7*iE2?o?EMN5Whr}e-& zhSz1iW~+iHexm0|oXrsvL}U9C!)oI!5FJ(1NM^UFnO%ek-cHwoU_ZbZ)@;;QxeA*R z=u#z5__RUi8#dWe@aEREw1Jb~)%U6WmBFWlmx$B#?31vQP(@}8hC9E(yj%T4-)}sJ z7d)SR3Q!gTJQrVsmXV(Gmoe;K4J?=EB$-m%{y}!pE{&e!5C{EqP-LVR<0DtowG}K(1i`QEN#{Z@woq| zTk0SR1!dMEsUz-(mNOtY&BGUUHDdQ&$C0u-OF{f%vGHk>XHnAzS5hU%4dv`-kAw;{ zqnh_*FI~H2Pv6H(ZPBk#gOpTzz{kEwc^p2Q;3r)&Lh|;2gB@zRgK?RH*<3qs9egR! zxr8-a1cBdch%JgbO6EN56*TvIG%D}9C?WN2>8%_95PZBpHgiLbNCB8YpyOhHiN2Rk zfXF%=%2pUZD!!xWU|6dB+JSU+AvfPx(cPNUF4BfCPnf z^52hxS+B-$JW2ii!xbN$V%Y1eUmALGg{UjIzJ#f!#A$-&I5=X(Zh<98anmi_(I6zG z^#Wa`@2%enGB2?(g9m_?Vn30WjDGifXRT0uyWN2|NggP$A@Pzhha{s`{gXbOtO20% ztjL8bZkxMf*iMXlJRR<(G!Y?)J@e==5agCG1mY=*UccjC?8S)trL$^^b z_u~FuW|ebhXyt`soBih}XLjcciQX3VU>)j?c6GtvXV~UW9;y9dh!8Uii466|6)0Bt z?2KTcc^=-hV?!FVx1z&lVu1k>j~)a8Jlfwb@rMJ*ws{LW18BF#Qfbg4Gs-F8xRBZN zpv`aSG9MUCn<2bdHm*!P)a&vj5lvyHxp_IiULduNu`vmMLte`vAOUlyPBKhDdm zqnss4!O9<{7JM3Yw!tPU3w?h*cTOO*V~EsmWDH(<~m1*pNVs=n*E9z zn{__=qr*e@6&pX!&honWt8|cFk8aLdz9Ye0!`{C3yubSzDKm6GurB$NzB=Apyrv;e zklGX_4KIuuEYCV5hZb$xR^o*J4ZewyF(giy-#icTI0E*6TgFN$&9oS*E3@X+sy!I! zOK*FKBrOoee}=QRG4#I=(_P95+Dx;j;H86eO%@uZ+CC6znaF|imZ?g`#m_)v7oA$X z?k=WZnfX;VL1>q>*~QlT=4je&>6%?>)19857y9>T9mtmpwQP2sO+>$LHgWaS;!&aC zW8XlLJ=gUIr}|0cQFhscOuVx3hmkX4E9Gu}he-atQzrXDk=PLX$vdB8CokIq&eFHE z*V504x}!wp|q%sYgfI zF~Ns855Jmtf8^0S89kRw5L0M}zZ*z|0Blk4*nzhUwC2*Q%n^HJp`LPod_91)B)7L z97>rA0qFIVs8m@5TQ6#75fN*mI`>Qoe}WRn^n?3+ z0WZ2Z7x6Kl4Vnze>VeZHg7u6P(g!w?$UwE(p9>>>w`(Y=Yva9kSUfB?s>G=2Znl{~ zJE^hQR2m!^l+-SM4J7c=#9M*)H-2QwgDv|9eV9ZG>Mj1KoR1LlvUAbsZZ%9vl*+)P z?yL2nE$|2Mg%pWw^5d>Y4_fEiaOy)46+qo4|yZd0&WvYIM_ZS zE`9)HY-0~F*(Xy@O#NJ}QU$uqOd<&ATeSq20VXADmVzN%?=NGYo5@%cu9g6<&GD*C zL}a->)pX=Qgn!3WTL+gC{;WVWM4J(%nWUnG9yUdnRbcmUp0iRR5n1jvwwY!poyPW) zV+kI+3;B@zEGJzLOBYq{m*=mUZ|^@}v%Ls<@{G$u;GQ7^zoK)-;Sr}@h6_pU$f`&IajNGv&H|_lV#e4TqRM%_&In^B-WzG z;7$R2Q@=n~xpG~@v(B=DD#3&L_?Y&&GkEzrOX{Zr5? zD}luKxYzXo;*~qND4uSlXu7QrUhxHbwO6jIig<$mDp*R7ZHr{ap;m^yjuY=69$3Y1 zZ91fVeVz60P28Z-Pl5S2Zf(68^op_lO9dl$%~5v|u!L7ekiOVh_$zjUP7m(BN!@|5 zjT*Y{*YAL_Ndn}Go$7ZK5(U?$i)m>g+_u zxkdNQ71?kc0Z5CaCz5G;(nt+|(TbJyQ}?#7C>%T?#ay;2}F$< ziAjZpP;T8L%y zwc+)txRxn3ti*Tc^HuHTo)5R3C`ezq^9XH~0*G=k&wk9D6^;M2SdrD2@375VMxVSm ztviNuQ4&So_?x5|REYN^9fm-QjkA*$e1{Qo!E+%VsU)J?t(0t_6^kJPA>6A*MI(5T zxGW(NiWom>!5 zdM9ia+|)X{Z!+r)-SwOui#W%RhZBVSNt^gnGHifnL+L8Uxg#N7Ztks(J;Nkf*hI-6b_H3ftNTjS6Gnz6qJ`UW$^Y;=~r@}*PZMQA#bYs?D9kDah zCQb$l9bh%5B{+2`d5nx`^LKSs^8MOX(G zKtohy1MJa*xMHurBm;#w4qQ0`Eq~B1AGAtS_v$Q17auw2p%rgMk;=FEQoK5RMl4fi3N&`Bwo^{G(^N5DB{0y0gkb{uK>D`m~|`u4BxHv8VvqhVKTi3fRqv z(G|)5jPy&a9XdV6tPcz3OXf9TG(ZwVkKqeg?t7U*kzof(keJ8hO;((VVV?CiHwVUO znu(_EyeRFOlx?1{rC|kPOoxQ825Lmek<7W_fLg5Dx4$*Gi}yH9AGJBp#;4)sbV=`d zq#+-M^bg?G_`^3gDA@fQT^!zwx>h>k3r)H$=G3t}1CM$a>lRpH0bPQLZy1foG3Q>S zdt;>74};IQMFj?=MAId|BtQI2x<{_G#@_%*qK? z9DPnMW@-oSgREzldZC#y{yOG$1T$l4qormp%Dik48oBqmxAQ7rM!mBIliSpC-K|-* z3v&d6Rhpv+4r?JFlh0K|9JyEjq(S~oQ>){wT)U-u6yub=C zw*jzStDRMQcg zTmBNOrpkx|!m~7ZTatBg%#tf^eG{~E-Huhl%Oh{o*YY8~BoFfMR3qI|ozyv>XgJ*} z&wxLWXh>o)kmyC!heQ2*bTPr7haX(JF9{tWshb&8>>8z{i1CupMXVvlP9Z(vOs9a8 zIP&nD4H-_4!bPYGevv?)>`%j=qLLV3BaeHg;qq=SeuB_dC?H$RD+jXwPEH5+O>=xIiT2s(Q$? zVNippl%rG`ik(>DTpv^dnp0nT`?7MFt_%osva@k_*v5&Aen`heMt8tx`QC_3d+)*N zwCICnJi?9KRW+BKo?q0{A0L9DJ=2|;ZNUuZN@~9B#Iu51g$7C*4kpguGf`r`83%$Q zZ>IY*payiP*?z=$blnsKOY@`f<=~tJV1mdzL z8GtXo9?MeJ@sDilw)?zNflZvY%Vq%UL-3>TLf&V;wB$>-n+i5}`MdsWhxnJ+oNrpi za|ycbS^_WwO3iMQS5pug9tWPh{!6e<z{7)xB~@|>#EMC8c{J{@aNunocf4-8hV&(j*Up zHE4Vv9+*cNCpuW$XNJ*OJDocC5v|*2zqrtML<<|W>-F1y+11}%FSOjlv~YdJcWi-d z`x#CNa^=`zS^gRvY^aMGJ(T0ry3)-k<0%A}Q(Z>KH$RIBcD)2^Rrn|2s);1T7}&@d zP%1WbAx^f^Dykumi#9D57s>9!d@kgOl!B{-q5nyDP4;ky?u}pA5U;m(ZSd)_LIqp2 z|7r+e9<7UH*%N$9;fn5mA%vhB=RrN&Yll{zH|P;B^Dfrz*t6?$`Ci5&BHyDXSe`rO zGG}vR5c7DKL+F@%O=QDaRsd!33t7#f766iUEWs_vp|+6kai#}V(p3HyM%qr&QO~(t z>MY#M%+dhTEv!8(vV84mwkQviHjYSOh>5WOQ&Gy_u2l>8CQ55dF)gtE7lXc*baM$Z_-3~`X#SEtTdTTb$xQNboC=(PW8~djTDVIjv-kVe` zZc+9w$OVI#Sfe)lYW(BqPta;;negIxJ-%1*D;b=K6&3sAwY+}kS6q0|{g+S=J?+lW zAc>#*v1!%93lHY)*Sx?z&bxF$s)Sf9c^JPa7r?KQKEcIl#WT%I(wwu$p6!6M(VsD7 zj7h}zVLdBx-V_T565TURAF4KlijyTjCMW;;z%sx1&i^^LL3<4Xg!=E-^a1fsn~I(m z+K6p>KZ)al))^;JM#BCwLaWw((JV1AMS|3y<|IvYyQN>&CgT6lAQtDBM!igj;wyO1 zHibQ)k{s3F)+Gw@m~Q^;%y9DK$S8{NHfrIWnX}6#wL4;jWHXf5uELga9}nJ!7IpOh z)_v43p!%0~*?fj}*PWtAWdBYGivHL0f6XHgczsZP!jLa5!i$6<&bk$kQ|JJZ{VTU>~BOP#+|4 z`xc+0-;7tZ(Z|=`eFLJvs4EU0j%9k7^I(p1^h}lUe6C^7x}X`67w_|7&%HOfy(I`3 z3YFf7_}j_{`}FSI{lj>oTY=Np$dx=uB{&C)0wZDcFAH(PT|#}@G)mvLUDb}O%JhbxW;^yH z>)gMt%4J?Ck6DUfK(5AB0#J{>u#XXR+Uew#(J|@LM5;xXts_Bpjb9GV}S|~HjocLH**E^teAj_$jZkz z@669N$nP|Ymd|5egPiHtATAh_^~UVUUm07?;Q_#VuGbz4Xm?SFDg<7G{|IeQaAUY3GrBLQn>>7Uig zN74f+B7Cfwysq?J|9ltTPTy^T{@v#SiO1G(Pmt+%Uv?-`)X9gdoKJh1?zAi8m)M~M zlNL58Y0kV)nh*%3xY1Su!Gt=Z&kh4(!WL5Jf;J%alTBAR93F^{nMJVg~Ez0lZ~^QSphin=|&q#Ju*APm-FB zHm^v%!}r1f7jnw2+hOB+EU>TgS5=m<}1!%zrF~b&u0YL-A~^kDW;Bqf!=!+PsMWO5j3OZ>W3bP@dfeZA+21#{ z>Ar;}7SjmKzuP;m-3?R;(0%(%;1pt`lScLsvYE+}%9Bbb?0&Xnq_|GV(TNg&j%t89 zvZu-?Mk;n{Fysx(gYsR%X9s>mP_3y`Mlp&j0k*Ku#$;WfuSWOvwSH3^i+@=903fmVyyX9G0irR^Wze%R+cH!qt6CfB|{d z-zJbX$CU5LdeWt5wxB6SmNfwAe+WyHuWxbVDG8J26)Iz4J_FIM$?ld9s7SEHWipP) z<${yqCNcDldOr3IW?t5nNjv7hXJtO2Nr|`Z`wP9^%;O(=<(o)ik-JwpZwC0|506z> zJ7Btc%C!Ezm3SJfRuA zGEWo zXkaE3PzWuP0*Gg6Rk(a?|5su;le;C`?S*?GYj)#HWm4La zKGW&J5donv663!sl7hz3H|E?;sZFXag>Aq6=f@BRa?Y%fJMN2pE-!w~XW7D=%8e5Y zDy%z5?T1T`9c@oAQ5lzQ)U~)+vCr{Gp~9pt@Aeb%!@aL<{`#-NFlOUUo_U*M>hFPi z0EO8GO(q-{UV_^f^dqA}YHC27=Zc{heVSlz7XxdBS{!w#C+a|Od)S}1N zn1KvAH7>S9dB^chate2ZdejzW^(?aSw-*p4m~T2xF`wOP>#Z2}9;jl^?0;%0xvm

      !5?JoY$;<2|vfEZIO`GQJu7%1eFrATqE*uCg;sf1{v#QxyF4eu#i;(uInt zdJ|pbsH}xHmkXA+8NCn-NrFSV4%Q5unu|R}nP(pGCST3DQHlFXXi7y$o|(Mbg}yQF z_w7pg=3Z#d7M9n#(lz$&IOhIamj-+)N>Sn(Jx}WCW>)KFEYFrTrrA3_(qoou z7ODU_&c1*>iP83JuZ`%}hK5h@)eP7d`K!LZL;k$~Mr!za)`C>;?qx>mrkPS=DaitH zj)?ivC~}5XSgqR)_X#ppmLh-)+W17@#^FJU&@_Dz0mN06&y*p6(eRofg=o-^>Q_Dv zwG5FrglMQl-sKdE#KyjwY8Q>lNvt^A<4tb=F>sg)O*!7c%R%n*2%F14<>80mowA>( zo`;XZL_#W_D8!!>Ou7CYl;=ap?fjrhP{ILt6aX91r93*fru{hHf}09?L?o4m9=CimL@EISK!xiUo!)U=}jK$ zR_9ESEYlli4m4?V4$E<--xOwTs~(L1eb-8Vqds-^J7(89qhH3wCRM8ZGNZ$PO5<k^S4mHSW9L*YBXMv;5eOwG?qCOQ$?+)&Wp?Z_C15)W_E;9| zRU|XrfW_vdr)UH*@xAqlg4ZeTG_N>123sF^G`H0F9){VJuJIGQTzS zNB!(*OAe@D{MqV?l7Q-X)&?y$(^I%>dKEKN*av8w-0o=m0@z`I7!E^vYENa4kT6V{ zu{W3PJyS3SOQ!B`U-&86ehneK?UQ&JlK#ZYNm|GchNGFU6(%LzzGKYouP;<-7+A-J=O zeY^2aL`3@Yy9JxgUy5$3gR$!XWu<4x%6Ru~3_fZbR8{!C6-r6ai+P#1d@;ryr;-~P7~Gp#TrYCKnn zoDRDqlMs*V7(zt#-}bbBd9Zf?Dqz~OA1IRlzE`6AUSrsBmSxU?CvmKXm>`a{p@kp) zq*AZRB9|?lTB|Homr);n5Sr;(bQI%0s_@fYi`TgND_k#ZT;0fABQ-QaMqc5`=OZZu zqh_2H^PqL%L7fn>%W=ugD((#=!Sf14YWTSxGh@k){Y?cF0MTiDcBPSp0`ul zX8n{mfO(I;|tT;_cUSxnP3242N<`-Fv4>_P`kI$A`x*~ zjWom?p+298h&*%NFO02%KQ?+Gmu46GDxXBk(%#eq$J&59zFNMJ3KleTU9AJ8_)jML z!ppw?!KzSmd(qm|=e(kd1`yaR&W2w)mxwuH;$V4Cz14~Qv9x$vU(@C}?x16>Y?GXk zb412YGx}9gcc43%^jCU)>~wDUgVL*u;Cn!2Wsmoq(|0Wu;7N3yzW>GTaYiDS+sz19 zR^q&QHV5AEsx75Xh*(#3Ol{Ic-E#ih8iWr{0 z0|I2pZFKKR+?Kp;*4C9X{x=-zWF|?@^=>Z|O(&5415zjC++g%mkrO~0m`}JD9IpmT zLv#O4<6rHR<^XgYzWLh{4GLZ$#)nUg_2wOv9{tcS)I>TILpnu@K^S!+9gKz2wlWWd znr{weM}S~2z{xB`Gz3bq1P=w!1b;mnj{Px&RbjY#P98K5WS9^L_ptyWW2Wzh$pTdE zmdl(jyt>Jf3y#X~U3hJeL*kxH0}{T)yFkXk6Q6=n=H60$@}a{FrZ7(2j_xn;)pu8Y zgalMA{!)a+u3J?adpHojICUj0exdW!Kkoc!CJLm*4NinF&YZtKx!E0D3_mx*bTv&I zRHz7Z9?Q?lZ!b9uydU`XIJjWezjxrtiEmDGV!v*`EX3`;hlQ0A^vkZVQ%d%Qy6WKO zy8#N{^F1;#n|AaS>=g^%eQzH8?R1Hvf<5b`F@QeX@)3&)yL1JdWo1b?3m2lTwLoSe z-`=6NUs@X9ir-(pP3Fnr3-Mbd^B(QVJH~<%6CO3^-AmSOwzq;ce+t>zJCQ#KxK-&> z;-JO~ehGRDklSlRm-ghCiZX|~J$D+MKte!b2mP&`GX+F(*txiEO_0{D84@g3tR)W! z3v}`W_=sOp{WL6!b`IJBVekPC%ni9-E#O);sHW8F%S+u2)rjDnV+@mu_Y;&tuZx}X z&23)&Tu~g+G*Wdo{K#}%YKJ{g^|KF{!QWnO%R_O^iH#K%=7MZ zrI=w#Uec-H2%P5V9YEaTp_&k>{M1zmK)wcjw{w4hG56Lp>drfZbLYQ<;Hh?dnWo9xID8| z*WV#(%vXZ*HX5e9Vg~Zvxc=NOpF3A-tN$%CdLZT9?Il*kpa8VPGG4fBe8lb z0N0WR>6Q0_c$?g)ptlkV0A~`yjsb3qdjpM*J8`J&pY}2D@R6~?Y@eb+#?tNZ3Hu-VPV}He!I3+bjpy@k@|4pqHeu*o^Hi7)lb6LX@KnYs z2;GC+Vg=&G)%qv#Edn8gI^9LQ%sU3A&;BZr1(xj(L_zOHUc<_S+yGvo=j%8EK+i`X zDL`}-I3G#@4o6SzJWBovX+pDLuZe<4*O1GI@-r6G5k8o(WqY;nNcR4>$6WpGEC6KNUP8n{RCwe60`q%;uNS;K+mQ-D z4@e(qFcd5?o5{Bs^jnn?l?~Fa3;gN;E}U!0^#M4W+L@t~jSlv%Qm^t?-*Q{l9K>rV zkI~OHd;wjBSt^D5fRoB+r)tB5ZCC#vDnG*G#S6*G)lP z1so5>Ah84MJKxYAOcnE zD(jX8Vn}getKZ+btrj4dK{g16X9D-OkKFx* zTQeu#tTO`R0DV$n%0k1RZlz9IVkXq7@}%1bFpxGD1*8u^;2M|~DlsP`aJVz2jw|K` zh>y)sPs$Q*JoCJUtEy9;%@)L9%!Uyw?%4$8IYX`)La_9P@5%=#1pRZYXEI!iK}KVG z*&*uxB->>foGt~kJmQy)iy4R&K6W6omgsg*htdC3i{KlZ+nq)x?DCM0vmck;Wdi@_ z!v8!i87feRM)uP72E7(eY=WY;kD9**j8$#BXH&yV-1+o+$SuEweY0*Jo~A8nPF=>t zGjuyyoYQ9#b>yF(*SjB?E-rmvUYbf51`?NiaYxL(J)~?3|3|>r);I1p$6Wc#6On-f zqmF`WkyWuXq%ZN0O{wGPI^?N{T|Sl>Q0&Nn#*xzZuL5$(R4X(<{{~7(h-)?w2<5P|ITBiH$>lld)%tR53H=t@Kx&XNMJ%B;&> zwftHTlyBIQ`N~V{9fZUZL&&(RyH0qXD-Dg?=~tQ^CBKW$|DpgI`AxEfzGBg71>)AR zmBl;HCbfceKL=_zod@mz`PCIGXmawx_cn*Msr3z~wb+5M=bJI3gIX`sp>ES)iM{~Q zj}OX;SO+a8yBl7c%Nw#G&VfQeJx{BkChu_tslTpp6Wmf3zMlQ>{d;Z0Ty7iL5*n?o zsHC2*_wTV@_r@yjyu4tM3v+`{y8jvhVUtdk+O~^o?DLgl>oH8L3(mZ6QK;A33qB`E z1F2aO!vqJiBjl#?r*N*6nLB+>C0e!$J^Hs*)H2n1!OJUi04Y2A#%TGt${B0*fV-|n z;OnQywr4;1%1hz+h6s;Z*Q_xsAe{q!Z6<-grE`i7q?uN9CCj+kei@8AJ84);>*%5L z7m4sYwdfZcD`6Xq|9;%CY)rcbJ^LcKXF5HINDTmJ*fDU%@X-)WI^M3%5G*}rzJgpe zq#J1e>VXP_+-&`jnHKt;Ie$qfb}$+M@7vQ(LSI($JwuSS#}Rg;LERsn@5e8Gx)6k&ubTl5+_{P+>+guWCcKm*GY-J_nm$v-YyXp1|=rzmVELu5i(%vzEzN) z6zkL`2qxV@{-#PyyCWr<#1BbKyzWN3?u9mBI-M%}S!c^Fhz738Fp#BxvN)iCp*@s> z=;P@?ZJk(7ueIDD(Wc76hWzCU=V@57`dQbu^;x4RQj}3z6pofBCB==o`BOqa&Ll)R z-SEN+9#faFOLw^p?B@rIPx;ZOVQ1hSzGyWCLBS#Vg-;p4=w8S8qW%>mkwY}fkyx;< zrNcCXukoaHj1ixvWJXCKEUqDv;;yS3oVj{}0^`3&#)KVrtVW<%1-kBP;S=+JO+zZ@ zOBjTt-I?xzwKcE?FFnzPG4+U7dKW0|S@d=fO!jMt=%U7p^N$~|=;cFX#L9E)=?%w&C(Wo_ zHS}&5|9-7kDm1_MhC00ACT7{`mmVYDfEH89PlpgKVc5#^Dt-1j7?wG<{)bgWtq_<0 zWhe#Vw7dYN6))rN`VMDkD=Up6;vApcoOnh_TkTQlB3rTF-`XgD1IdJ<$$TMhl9Ac1 z4-UDL2TbpUNkOq7CQSaEG94Fhg&H@zVh4{22ECYVFOOjw*1g#iijVPW6Ca23+>Y_N zF#!Rn=Y>SU`5wr)?XCt`zS7x7P_mT-i-T6G9VM@iexh|a`zcth$=x(>ZIjDraX0x6 zsN?Vht&gqqe)^fT=SHGG_kZDq33q*M<9fl zWR~IHv8NPt=rZVNe2xt;W+4pbMG^v`g{bESVTDS_E?5Yh5>^dONZygPJ)*&jMP}Ss zr@ir2FY|KUjVs6~N#YUYp+gWY{-b1?aIm(Bi=b@`8GM;v=c8mz$0O)vt$C19Gy96D z*G>^dB3#S|VGdu7DS{=|fCOMXv9&di$zt!u3Ag`)k>2p3Xqe#4o7=i~CEu2O+Iu^A6sx%!t`BJ$c-8aXllaV(o zsT1H9pKf{%xcHsF%pN`6S)y3&@t=@LunFcIiGz7>De92}j9Hr{hUW^G%2cw}DF`dm zU!G?ikw+ok#|OdF(Vz$Wa<-=#=Us;%oAS=LO@I!i=IM1L)5!W>v%KWuK}lc)O^(6( z^X39hmmd{FY?yg--GHBf^KS31*#n2UgUgttQIjWfGo;TdC+9xOwc}^9F!c83dyq%~ z9fz{|1xw`cFc+OBCn5@DfPeT@p^vD;SB!4H9Y$_(H#wsw>b*YZ@^78qV@bm%h~@*t zAMaf^+BDl19*9EYD;R)l$4mIwv~akrU4h(!ro&Yb$#3Kn&>i8visJTFb2~AfhUq-| z-SJWjKcRIy7&NB~zfw0=Wv7OPEJ*!us}ppSt&@5}g%~u3j+XXg@?hvCCi1CW8cus%Q2_E9!J z_Vr#O0TE|Pj6@=SP`%vP?|b!FMUG`ny#F*(%XdL?)<>O)sKw0Pf2@f~=o8ip^Qxoe z(0v%6UflPjftF+G=eH*$f1_uL*Bmhd{5&+1F=4>+8u2Y4#Y+bK(!YAacwC{R6G!jk z>0JloGwWC)+5KJe^R)G;3HSOoue}yCFY7h$epI;~Ge3a;tl}eB&l6?Ne?#m^lN-`u zFm7PR-bhUwS*W6(DM!YADRM+6AKvzBKE@ zbrj;<6)6*EN2)6pD{X(yc&^_%{4zLVQu7cQg<%|xjhv@Y;T(j|#Q)|hiz@rF+L5G@ zMpgb!d_YHjEuIt;!$cGt);rTVjtMTv1P*7575rD&xe=fV(i2HUjL`X@0}T+d5bt)? zpVXqj6OU88$Dm_iQWu*6CqPNXG09jN;&93N15$6%UFjNEj~~#W|kf$QSHf>-;i;W&E`{nPYa2G)eyp@b!D(vvQELVV>t?tk2edCQk}{VI|& z)Q{D_5ph}X@OTmhs*BA@h5@VHib=#`6r|fI%9<{7*IH;i7h^JLy8hAR1Kpr1`SOoG zj@&Fu56f_Ke`!ORCR0J5WbSSF-a5Ot&}=*{N|YFhAo|06@-b+LT-LSLgguuUh5Xxt zT_HCYdzwGi!2C`FQ>w_vMVPB0T5p@wkWn4qb{d(Qt%BepDX{QfNMS7c`!+S0&})Yl zl5l-7MLtXSt5KfbSd)~yi%5K9M08eK?%eb&xv=o$C3ijj-7fyC*h46U$uPwlUHCRC zrz$Hht*w(V`U|dYud8VoVvKPJkp5`FbXy=+(cK%0L1}!jeLz^@fV$g?nZKx>w zWJu&#-@FMk=P6~^ zYV5xMw61*rre|CJ$KyUF6eK5T+R6TVbh!`Hvb8z!HG6tYU8VIxv_VG8_ZM-XnYDsI zX{%;$!zs&)XCG}%#8BZ;dL&4aRKEa{F#KSUfmOQ1{1STmyNtQblGtgTWaIeEbR%9? zve)dnS23BjIph=~L%ItWI|PNm6j(Yna=wL7{s!4wqF519X~jcqbutAPN zWMd2}$|6bskVL*rO#JcHy;$-*E605I3h|}mfP*=hU`D*oD{8mo!i80T?)a!v316iO zn`)lc0Ztn3l{v&kcoTb2;K;_R@4z%gyxo&?U$VoKtmSF1Kb!n#+I^|iHKq^XtqvAl zkN8LBEKfbuF7My%uRTBGtQ_Qt2fff8EQiriKl0l1%{6~*zJDCP6BxvjlWa3!ZXZ~* zczyBi##gQS=gOB8l8=A?gW^|RG-sH%ygo~RXM1YKEYNkNSbCo24Hn9smLLiu;@j?M zVpmn-Qk0)m&oBoIjcnXk^k5jw{&VQ|`(9L);QoD8;ZSY&=^aKgz?i8UkZv9s8}k%A z)cE4g&-!xyn`emH&AfQ91Du|kQIM3tq8COMLd5@qah=wM{sqi)xq=ud-gU(C6 ztfg3DqCr8?zs39VuLeZguftGov^UJ3fi7usFlhO87pn%wh{%*#{o4F8_gkZ_qpaLTbeCZz59ydos%3+{CZ^wX_(3g#Q ztsClrlu}%f8|ue-B8#7inqpS9;21tlt{Z-%Lpej=hBEP*J1@E;@K#r1W5#mJ${3pJ z&RZG2{X5p+{a`c5H}3ZDz60GSTdovDd2TB3doTyJA_e_tleFBgeRc{c1~cpzHY5!e zHG4d=PRYoS%n*WM@`bNU8PvjF!r8)E_<?& zfF*9`}! z3wUe8jJO0E_Ku3>p=mcl@_zmOyOeo!LE#*5^G)jRXWb-UB3>J@vg~>`V&6zD1=P!g ze!Oy#V^1G_rl~6?MjJaHOs78}SH6k(q2zBK6!8Q0cpQb5ZXL3s zKqR<^=CK933Vv{EG^7O+7>s3~XHtT=bvGGY#-@rZ8oxTO!toznk)TB5!2}o+p&~sT zMn+cDSaAOhW+4uCiQq1y4Dy2Wm^+^d^7B^6TNqr-;++b zB}$8Y4P$<2K{|K;8)04`ZF7_T-G;1Z@ly#Wx7=uwKgVQ8h&*3{4Vlg;=>zo)WAC=1 zctLLVsnx)}hep<4*siWlb9SklIef_#yl#8Ux>}L?RO5|xZbhuObI?hx7Vn1=>2}gl z`8Cy?(~qRHTh0%uR5eZBQFEZp@4V~8Hs+}avK5Ys+Y$5h6xo!Rn!C!_EBX6;F$Qyi zxW-Fn|EBrHb5sHO6Q*mm9-O-9d1MO^Ttq$xA7Am%cV|9_BW*{cGYo~ShQ$x7bA~e} zXZwbJ+PiQeS0uWbF*{z4$dba~T;Y8G0LPsoAjU%Cp%isTlQXiUJh)(E%gyW&_Q+AK zFcFgoBTXH8*N3wkom`4E1fda!A1sFJkUK+FM?0-79Yv=nFUfuTcDXdzYm)Xbys_g9 z%!OU@>5zmVZ=d#E3#QYhV8Tyew8h)R8U^?U zhdv%mDUuCN0&ys5$wRPE5mPBV>h0nFXwC~Tsrzso8ODyVb5di0h-$uTW|9w-p@&LA zwDrQ8BOoHKzw{VR#T?T8cG<@^j<2%DkwexFx-8@D{ST;OhL&D0Wlv=S1QSY6njp#3 z-(gi>l#!xxy7j+}`j|7O7x2xWo(3e&`sMdg#!=!Av zJ68v$qfMuOoiFYS50Q1jcR|JX75(@sF7<$OOX=+XD3ZUj5a&}f8j!Upph888M1MFyV7F5Dkz6)KCmUQa@tT zqX82jtE1Hyg8FPaVln0$uGCGTb6I@X z|EmM)q-6CKO~fl5=;bea+(3s(Sfh%_*82GUXKqW;9zYw%h!&rPmg&0k*_PH_b8G=_ z%e>;l^v#9PGe;0uT~+h)N2WczxfL7O=*`Jhhnu;31E`^I(xAd%DlzIxte&VA`tp4K zL4Lg6d33*UCWFa$KcpJ4?YWQRk3X0C1xbU8-F}(2%W(1Y=WyAk(_gI_kz?20_zQZV z5GUFNT|54^%%5N$jAVry1S5ZJ=KODnC;N=I_?~Lz@8jUf@SGQviFKg1Nc?ETH^u5J zb)>(qoS~!*S(n`@x~rX+b|39t0*jk`%)}j+vGHBj-@MOYZW{H1SWq`2AI=S+m@HLn z0P~%9=}l$<0vIQ)I|61H=S+8+bFXWn@1BbOI&q7omVP8@9}M}dw~&n zTLjP&b%SwM2XsgqjKEZl={KSlrOvExtz)wwEf+$L#$oOeE&x#vr1(aA9B9$tjj7V0 z&%20PY&szU4WCmQ?YqUf5*)ff+C4GJP$VIk&^L+Iv6?SPFxDfW(7D+qcx}0?uW*6{ zu!T&71m!T1@WC2}qqWGPW9l?JE(pARf)m2P9H)=Vm`p_>sd(f`ZCrrFd$x);44SduNbl{?;UT zA-XTeYMy;4=mh2Y#hX2csr_3chHke==NxsuF>(IpT!fMOJXF#%IB`J}^QOk12H?t% zwd?3%nEFp?+It$)-u?#u+AywOWc7AgdpsK<}FUN=y3*9I{@TZ)iKbE*o@hqZ205- zYD#YPz@DNfs!+7QOd!;>#SP)w^^Q_sE>MNhN{wDCL$sukpVnSSAzSWZ_z%}&YQ=`q zL*C^h>DafYdw+vQK!j1ogenJ=ke9M6-f4Fv1Y7m65l?P@J0<}km@$}YT+Bbi&InQL zcu|luS5B2<_xzW>&MAF6vVaP#W}N>{?|f)Ri(ClB|7PE2I*wQyw2_%fWPrK_c7N3) zCRU^|KxiK3xHwhtpUf*X&wW5Lbw~5}d(i3}ozd=7jVt#CdHr@~H8nqZn{i6-!|TO* zbob(sPQdfu2jvHVzcfhl)llQ@XKI&EC9Vaf*58E?pwDYOH`H(-cIFab_++%iB4r3= zn>_uo_gpRr^7dEse4t%*Aj3LL=27fsEYx0l1`t{t3lm9{@0{ifoUp*OK;FxAmLYKd z{0ehR#0)(v^7f6QlM@SG<13MoKpHr0rzhJu4D*rXtEHema6RdcRM%8sJ=hukhq3Jg zk-mK!d}=a?b6P1X?Pb@zxcpI%^v+u^ZvA#?`2`h^>PX|nnE7p7@<(qM+YOa&Tc=l{ zi_Tq-)zHisQkF_5Bq;0}>6qxeK8p>)>zd8h0Tpzo(g&a=D^wL)e-^ zjA!2-Um)>ubzs1J2;P+6fToG*?=osM1pin$iuCd-esqw3Ii;qL%3YLbPxN~Kf{G7} zPTUhO_Yl<#x{5b6Y|L#zetGo5>w44;n_8hc1+J8Zk`E=4VrS%&Z|+&{x2l!4@WER8 zc0TptdyNGniF@h~7Bs#+k(rNvIGGx&{%-auchPmZB=OxK`}`#eSnkcfa;y>uE*^OaeLIFG{nM@D!-&LxubhNX zz{T^DPa7U@2nf5dJ1G_h42YyLgg{Bq+ws%zgKc3Hr&uf2H8+W(lm|G>|hLGyMAV z{Y`lPxI+le7Uq~b!|+ECF=4}mSLleK#0Mdy*p!v+sD8gOnbF{pNIzL6xtmx za0*m2n?}yh9o2;Rb;Lj<=%r(p^}tERi6ba^vFAK@tVqV5tk)BpY@>$$RLEWH{Ye{1 zIK>B;Q;Yp*@n(7FT@*YAYN%H#j;h9^LxxEl7Q+^_ zI;b41^4If+HyDtSh!lF6-TN-)=xlElh&@($VyLE~x0Wm5+A-rfTtqq~v8g&eHZ8gL z+4d7Jl&?c_vOc? z-{x8Qc0~P~v@h4C9~>V?-wYv`f@a5@pm9LU-YH|sfl5G|d@^&i`1>7%mjyIJc9zqQ zk5&lFwr{7kb>PeE5CW4tH5pAI1{-Ft#JFB-X~p<|_Mmy!*y-pD#+h<_G=KN~nD(Xw zda`Vym)-Rv#*4aR0Cq*f#!c-i6eVg=80B_7N1IXywLEu)z4tT{17H<~YntiVcU~qp zBaQ`@GKmSW(9=NH324G$p(UlxwT_nU-r^Oij^7WS`#R! zOLA3Gge6{$934ZD8Yc&V{Y+6TaMQx5Y<*%U7JPp}f%3YI7V1sbjFAjR)55!GAN9uf zM*rpvCN!Ei8tt3A7Cq9-SG_7*W=wQ=A6#Up7;pwLd(_zzy}J%3taJ)PUW()pbH20b zZ5fAZI^;x>qTyUdjDm2X!Zj+jf)8NX$Mope`_#lr-ggvX#d8a8P9@-!N=+j)$#~ZX zF^V+$V9Tv%qg3{Scukcz(Cu7Y4yy;x>Ev3Z8YzN_8|juD=9-&>ljpVYC?McvmxDYV zTWl!S%CvSuGqbdfp-|PGd9e6%?(YT#A%klF;4W0ixvzGd$swjmP&O~ESM|JnnICY~ zDV_UYBj*A3MB4os$%MGbU8~0O7fs#E@y0NT^914*Wol9{i2-vv2|1ze!P`(!4G*3?axg6sG-Ff4^^k z=FNXlsEpleQJNdGe2?2|*Sf#DQr69(PcQ^4GaC~5YEQYVpVM2Q*SSuP;Abyx55Dv+ zHm@o_#xVMxU~m8muT3P@Nx~bq}J`Xm0)K zOz#5Dk^)OG>W`xZ3qu|Rh6(dyUT%z6SgXulPw)XRIe&gu(TMamTN^%Zcr$T}j(6Ms zLp&UJTPfmZFV)jC#fH+#1&!J(hrjiIC@`PeCeI9Qd9PpF5p<*iA^uT)pp2^HQ_J)- zYke=v5`y=l<8xCM$=}}V*W^isCBDRZB-Zh3r(=B_{GKF3zRb;X_ zk+DAlmI8Hb;Pw<-il$Y;vMr!cRt?fZLyg=$p;<)?lbtQ&8-uicmu*0X8J zFIHCip^n`x_^lxSYq(UVAfNxi?MCs<;9KKw)`vv5qrJX8eCK~Ca?Y0LUEn!b{@Je~ z*BQ7GW^*D57021sG#7BZB)bn$B=vU`<>hm1I#Uq# zth;h4iRfjuUIuPL7e%-b&@pi!Zgdj~pahmms8a;vQv`Y83VD*>oc7o*xL~j13C{IV5oOYB#i(yPWtcJd zpb#;aQE$G8n{lOJ^36I6U_#_rZT(>X?izIAW3tkoo z9NGLU%py(AJ>V5MjZx`7v*cBH!+!?GBo-_|v}1CBcYIZOd*iEc`G5Ph2C6v2U--Q* z{>)81#xftgpIC`M+Yp9`DRKRdwdtwpyn6b}{e)dzG0`(eBFpc~mklv>b7vvBJED?8kl_u_P=LEUWPk>?# z1DmcZunL&59DQ_k=i0Lg#u~Dj_G4_pOIHm+1s)pY@5Xn7S{@7Xx6}yKTJwe|!jJ;y zY~@oFWKCWti7-)D$`v-e<8mkd={)bl$Q~G}jiH6#oDAYgu0@1%389!+&yvViCtc^j zds4?}2SPpPd8<6dcDTLv;XE0r@9ovGfnt@>3KI$vHIicHQd8U8|3}kThc)@Vac_f> zA`MD2CS3+8F?xV>2?#?JX;7qN8=%q+f+7u45+WfvEK=!Cbu`i)+urB+IRteeQFAs{7jx4scE5RivMLo9J*~n{&X@ZOw@0PK0N8VHaESQiQH7?(ug4C_Dzm z3@%6BMlcERHOJzCJCM&c4RV^UJn3*YhH)CKEGv|;0ZPI!(n+N+)@9ZD;4`gC9e`c6pw*4Au81O zmp1!lM}}+iz1A*wR=}_VRm)iy%A<~1O>*jDW+an?%k{0(-$U7T)78+ZmO#b?bT6$- z5Th4LlhZhMxv7L8f$<9I*EmvFvES~Y4WPZc`?7uFSwNTqV{#{m405&85`nO}9;CJT z8DzW>Z0nFP%4i~nG%RINw-Wk4c)>rXRQ^{~g3WpXN$9Z-Y#h%Sm>aJCc3Zk+qS-ss!{+ z(6x!PCO;Q@<%UIO_ZjV(ou}@Ft?l`=#Kc=gI}bUGA48*)%7=p7kq(s(ne>2g7&!U6 zzgltLQ#3VIOrN~6S~IVlL2kBuPfYN-GU&~E0WNqC@lr4Qds%pZ_3$J0&(bZ@78{75}*E_)g+FPIy!~gGdYHdyhtT6s_Uvw6a_5 zVi0fw!w_W=uUPW?t1M))+RB!;FUK=C0HnR`+G4nBe8X=a$K{0H(!o z(!J(WlMmS9^P(0=YS}$G^nH3~+lIK-xA(WxJTWe}Rr5cKRrH7Xr_A_6&=F_0>(!QD4_U%>2|HSoo;bpK!IRF>b7do3fW(w`20;o?&NT&OwrS!UIEHH`3Z)!&D8 zxoCK6jiyhBk!4+NYfi5^|1xs8YVB5^YIMFZDgXKH=6GN00MnUo=gc!Ee8aNl6Wofs z?iLdQzjdng5jS9|v8Q&F(eOqSaH3>E?zkchsF7iv6d6b)drFPUQ|8u0gR=a(ZC~&@ z)9{*-$28NHl1GEzo2h6n-|82A!LLJq3tvX$JL1yU~29l|sgOXU(EV{SkVCx0nbIGJ23@d6aN&jaCTY z1ufHO>(C2AW>Uj$IR9nazbgp1cBfJ}yQiW>ZaSC}?(MU#eAD8+SCOaJq1j4v@9XD& zHZMr(ed!)7f(E4Ck$_$Dnt$aBP9?wB2Td)`1?f4l5*o3ovnnGR01a$#9Pl$;F~<2R z^^Sg`hRIib8{7@7=Vrw*o%Npc7AkX{D43jDtbaVl6kFv}@7s2#3NUtg2Z{smsk03V zu&2-AL349QY*qHv6mY5CFf%$+JGTbM8l%>Qb-;Yw>-iniKng5WxWLXtB(t<4FZ_H0 zMTRhC-uk($qvsf$Vk2En%y_FB|Bl5JD%o(y*!QUmLU5`SEX)0M?_TBKo!?YwkSw=m z7&xZ`8^)B92D}zZ2{W)bjDV-QDUIvnK2?MlyUL8DWJuF$U;J6!oG2J3t_03;@N9%8 z;$0f9CbDGx$Go(vlG4uOC-rNR>FEJADN{u^IZhjP*)5A_N(T(%2&Z*1NL>LJGKbVLxnSR?`2y=Y7Z+(pPao7}%yyH3biNU| z!Re3no03v^M!tO;ylarIdgt5&o|1O;My*Lw@aLj~a?@&R44W~m^F_4Y0bTp@td8+v z#R0!BsZ8NqgLek}l-#znXt78coQ|efr9qrye9xnzqthX&jzT`BOIn7&3Fp-=R5cUE zEJdt5A&$3ItXNc860ROk?Bpx*x3cl;A!6M>oA5~=a#G~(rp+3bz&r_Iyx3rBB;e%*Ibi1WEj)$1(0UF-Da@12d_h##)qE9}S%$x1+XF!9IAY#g z952>aV&UsTp3jxo%9u#M-tFDo0@zWMDL*ZP-VI7#6GXY)avavw!iDm!KSX&?YcKCS zsX*$u;HZ>nmf69&{b=NkDj6^gzoX=={WDf2SZUpudr_Y&8-oVoZI; zb}x3%pnj^Zg!9sOl}CvFVZdabCcUk8%0lJ!&YsC;pDghV7T^=K)huhq!a!NnmbF}a%)4XrvhG-S6OR34GxD!k$ z#t9$M9A1POasJ)8m^8ZBFFd{oqJy`K{C45Mkr$Nhs|US3Z(jZ-|Gta8duwX%FLEZx z9u+Um6FA;N&MN&-#3Vl=(ItYN#DUa{1WcGd)IDh09RI|ZMlZURCQ(5?WE^XSH;>_i zV`HXNe{EL1qd97z2({lD?KIL}m6gnfSB<%4;!$ChEEs1HVWB}fFvc@_~W>79O{PYBX(7Dq#y|1dPVzbMkbs#uVU1Z29wGbsP)j3FWDcVV~-iJ!L+Bf(Je8cLMY3|$G zizUjV^vC)lBWAKQ4gQlL= zywe+901XA%iI@gRrKeQyoa}VxYO>UFd`0NgASHrNGh58B8IxT`mL@f06SGY0tJpgz zY_`EA9kNScO>#x^k>`_h8@v~90MjmXG0(-B2k4M|eei9+pWmXw5NK%hJw`41YLxsLreb#>mA&m>%%!G5*hSlqOWl3>JEpD1O7>gHMgpoh`M zpuWd#=-%}(64}4)c7DUQXqs5`PBF1gbn9^EF4y?agwU}7_^);2YRkGA3(&~Gz=`-J6r!gF=^}3yQSiIp#cvy|UKwsICelT^0 zACE{tQ-HGTx4aJ|;VQeN4|*L_#@4HPuHO76{$US&sgIzDmKQ#C9lnf>9|G)NNNl3m zzgOEq-9DDo5pOgCO@R*JK(qSLnWb}Bp|{4aOVGkrbkp9kzh%mL3032Veel9!;ul=C zs9lzUt{AVOT2lMG|K-NT`k{cL^X2Pdo4bmUMCzXB90xj}g3&ehBhk)+(cMQf9b*a! z`&M!F=x4q(=<36QvYkzfrM!RN=nua;I0x62UkJE?OV><&nb0+KlH>cn1qGx16;MDr zsKsGkhcNNE`5G_csl&c0#JR>B&JT`oXzfe^sm(S}vssfoqHG$K!D&M^ELktmt{z(Y!vIfGm)n7LCQvW8)>Ygdpy;vh16pRD`l@!V2MnQT}#<{kitsQhh z@Ot;H^F7TzYlrd|Vb{9zAaB0&5-7$1H9w%s08>E^J$3?p>M1a0Ze6GyO`kj3cZa0@ z7%iU&UMNTGJG*xafL{+BVyp8P-f&>yQ>7sY6NkKNFp?=m&!W>5LIVCvqmMbFh<}F6 z*q8jQSy6gj>#fxy7FkMWTW<}DVN8!rM=%QrvWmjZ8eb`MbpY@kHDv4ZLhX2Rdes zF!19J#8s0uY`oZ>pmtii2D!b_|4EQ77*t2~xv+yF(nsvmES-lZMRtA?G=&_*vG($f zl3#f7^D=J%I1oY?Ob(1$8I?>?rUh+vC0uMC1A1X*Mqv*rviVrRBG%GO4zYwrK32B3 zlCYfa65u;gvWMK_qSU6T<1@kguil!$2a0GBVnmm(|0(^WB`fLh80uSQhZyrr*Vk&47hZwiJiw*yO#3VK9ZyPSPLkgFPgQ$Lbp;l14U)+~;ruw4 zIN6wJKx~mt57v2^l6Vaa+~U<46VK0VOJ8D(3J-4~MvmT#`>L){1uj*Bbmfxsz$p_& zNVe_UwoNiZI(l!R$-bOhq9AGlEL!vEzma(13{q=TETye%A6x*-#+pb*lVi$#50jPw z3D;mS1dx)zA4Tm$@1?Q_UgvYoS1a;Lq51p*9gt1oaEmYX$hq^qJu_gtCIt^!N9wT| zb3A&^u!LbA@@^drj?-v6^(f++d8FV}#Dj`9JySoNr6UxMfgi6dX;nZ|o>KhCo2M}Z z45mtHlF3`CG#$}2$PN6DLnWYpSVVVqy+Ns~`d^`H_f!Q8CV+&f+p+8u+A;W1#6yocZ5=)(n92@JNqo$QQ)8h243-8d0lARU@}9M=%N7Ax8NYRT{0S^wyS zE0X)Sa4Z31l3m{V)={u7xdHh-Qv?(1>NAU(f}BzUHNhcl&4vt=$VJ&_%MjBo*Y!*Q z6)x4&l+Q3w33)lgAs_r>?>62jS$pLRb2+_1xc2*w9jQmz!Q^>slet1*U+Jq8+h4U+ zttCg%R*{-)ntz|YV(G5I!k-hVK`*-mMoD$uy*>r_47}T0d@BAn{wJ|ViIL9$k&_{k z4oWsXH4vH6UuK^+QuH2q8v4J#G+0=lWT?jckv)Gz;;Kqz#+yNcJhOi;r*f5rAQ~5Ml^F;Ajx8 zAtSt@{9dnR>gSHc@e=w(m+mNK+r2;)AK-adR@wiwef zbEO>0nBW0jC2r+tuMc>I(&ws-`Q2``RQKox^@}c2u!{OQA-xGa^?<*_dYlFwOv0Z* zjN^#S7GaYt$yibj`G+jdhmMI=mDM14@q_2icdNhd{9Usz?i60VA0nasKBX-`^CjBuyoo&OP7^cCWqhcUWeMN%un31DwnfeWz3n9;Cv~pqsnMdf&WQ z2CH*THE7!k#58g9!7dU6gEEcRBq_RBfi;A2cI|kqmgi~OQ9(>B{SG;z<QceEP_1`Z!M zyn=wE<1Sz9L&ep@mTRtV@vp=SgNkmip>joc%lt){8nBGODJv|MKU6OY8X2GYfec6P z{TL9b$CRKS`qB^|D989%aj@ToEJf$KY$JvTVqS08K(YZn`wLuU?+?vGn*&F0+l}yh zw0k8pB8Qm{ru>1Au>!3!Z=IbH{FDrDS+n41@hmv;qU#mS+8v9#SF_R~>8a26Zl0Q9 znPv_I;C@svlMqna1Xyr4j@jD8Xv)RN3G>gg~(7{E-xe!%}epCtw~RnKuL+RpDIAb;29_KBDoR@cpZqzvr!0< zeprOG&UG*a`6_M|^M2inlfXATV&yA$23BW=VDf;%zgYg?w_F9llJY+*I`Z`RMhXsd zQ@)WQkgm5G5SmDJBP9*!Dx#5U($s{%md~#nv<27O)#`50etvNbSFxyu+&9f<3cq0_ z@tMU{S{Eh~HV42IVY26ehTdm_4orX565bwh0j%A0M{c!sAfJutI&dtW2*8~hy*Nt* zZfs42j8xcN58qG@lcBE&GA3MIIN3z_70fnJ>Bj%l7>Yztf!Uz@R}R@9LQdy4HlsD1 z)Zn&PQHeR;Z;`r%_sdKiQo(Ul*F?0?0F9=VpCKlndA1jTM)SJWa@dfLaDfOdf3ce} zLu4c^L@M`U2m7>(O?Ey*_{WaKXx~f@GK4xNFf`zNQiuJ=@fY}OIkzu@=O=zM=vRFg zXtLv33IH{QV@;T8`$vVlCMjdd`C4B2w!VD(k>KOBB}WIJmYAIYM#qa{P{rE-I(svP zT_&kuzwn6>Sa&TcA(ULnk?FL46OjsNY-qo;M|Q`UYCmx70B2v*?cHz(8jw#ruKO;+ zwk?4(GWjE$&MA--O};691p;?kqz*x{x}9$$w+J>+38&{2oW6n%d} z8RSJxd6DN{8s76yW_i6mxrMsZAZh2di?YV`qsM3o#K@*21He@{cl`!P3+eJ5v2+o) z)c9PP8PlbWJkYk0_t>7gl9heAtj~`Dn~4v>_~`c|K_h|gVlwP}G!PCbLWc(NHMDWd zA1oeYa5S6autSc7?LO-6$KGZ`aCkFo!tymrc*{VBH1c2fX8eN|;%0UXfgoFR4tHtY zfeSdIe}MToq;-R<2GR_XUFBcZq7nXjn%=0e(*k-Sod;|p7(Eos57K}jrv2ASKN!yD z0{J3&54tmlC98KnLJU?79v57X)M2~!wqY@djK`CMA@G}~df|Zk&Z|C=dV4pBhz;ONRc$LK|xhGpseRrv@mn-2=Ck1;y84^tnQ+ae;bk| z{5#ravU6C^16!oPy=T6?3E1#Wb`JP>AaWF#Z#H~*8!Xn9bfizZVIFS$FR!MoX21Mj zO{jGE-X});{^KShUrXXa!@o7U2bAC0q+LZO97armrBqMs&9S-fI)AKI%h&lxk;*eJ zgFKW5*GBr#kT$5EuEB5Y!H76-;|9vE(XEq zSzyxUmKHAr>g7zH&FzQJ-Z)(K-?H&#?AFaVdLP&0tO;k=tozM)2}tD4(=+|VX?ghV zz)16@+mKX9QgW{8((O7RqcK_XnsHBrb`XN;^5uq6hM{Vq;7AH2VThCtTZHIP@Bw8` z7z528EU%-%u*p~0MYBA8eCQKe@SF*48oQr)!LAMIiRR(;K$XnnHRcytvRLfmS@Q3E zzMriZ)shQ+6Dkc*UBr$cj49+wU!O5*_F;A6jh8BEugElluYjc$6a6(9GeV_ZZ4s%b z^x?Y0&F41{LuL`CQtg1yN}XvYhdP;Dm5mC5Eylv7AS3mBO#RLRWKx+^nL7XoQn%y^X za%p4SOO|rYq+C4tvA_-Ry|BF^Fqj)vF={Ms*9u~j^2Ej-e!l?_e0wjQnM^j(0Ki&1I6;Ti4|77f@XZApzB_h&R%W4O^j zP$VL9Y_US(^V7vUv={NwOY1;o9*g5R%xmEWWCk0R(OL#ZZ&cI(rEmwwyiOQvbB_fG znaUFzy;Qmi*4=1^R=C#U%X%Pc7tI z+gRW4sU@0`qW!gC$u*=7*a_Hxp6wqKl8a&7)C?aXB&KpFR$|5o8#I}J-M_Li%r+&p zPg`?e4L(VcT<`5kMe?M(dh=Ey)B+@^>?z-wLeF>R&kh)DQVI+Wx?cgH_cyt}nJ3r;a* zeABY#j2hI>l>_n%SLx4`l9(;}9(JrIM$IOU<|?CmyU+3(ennfpqujo<`SEOJnpxnQ zUlX<%#?bq#DJ8wj{snw5YOnUJ3+GK4E(A_C&SOj|V-uG_jP%pdowj*oBQ>-@!z%|1 zBgVvqK->3k4%HcAwt#W5wk*tHNldM%kpk;k{KeqlB%>uIF*N-wq#yUqzIkCKUI6|Q z1Xs;LFf|3I_dDO7 z7-Q5@(6+Wj6~HxCxz?N*8swE8t-a4xj^);zV+HBv-e#@69T4J6cSOByynKezVsM1> zi^6E^w1PMvMz5QfPe!VqXZSnl7o%7|BG19L=Or+ik9md2rcTp&5K=G)VHShet^RxJ zLDFDMzNFHba+F|Q?*Zx5b^O*=`OD_vMP4jBLmRHc#s#202> z8-fZlE1|$h7?>NpK3CiyQ8(~zUvYP35CI7~0jW9=Mk>*gYbbVO9|6JU^)$qL2L;M| zGyX4%y8`FDa@QO3GYfAITdnQl=}utI0nz$2!Gsw3!#bO>5EiRsb(Wx2!GwKoQ0Of@E& zA5^ZlB9H`2HzZ{Olu2v6Z>31rpT&g z42alh1;gSOe-tpn;8mMdvnsi>vFYjHG#I^cYSr9diT{}H5I%m#)R~rqnKwI^U?7db zwP_*Ea%)?V&v*|!ep$JKg8pr<+C*%5%9uCcQB(Vf;y5z#D>AhW)@B$r!IYHGtQ=rI zaD@5yq7I5kFOG(M2DKXzy5hWKnh~nnvTw^=RM~;F&xa57utE{0Y78R&SnhNoEWQ%z zL$yE-yQC5>!UB2;#k z*vU>8%9s+Y7VhKZc~SU?u%!tYas)2X`W&W7p-*AaQm_8S6&@`kLGYP6r))?nmj$Y^ zCUf>HU_{t?V=S&3JHu`TMMok==G+Q9;YF=b_;j?c;C~cKi0zl@s`)F)02wSS!|BUDM`MIuL=M7rXKlfT0f$3}e+!!LYX7LxNF>nrFH|||xR+=e)k0?>Gzn?_g z7|e{N>hAV0t=_pfxg7Ssf7`b4mju9@uOppe2$hN2P55N*9Fa z+P}!>oekbpgihouLu7qA%<}0yzyVoa{oa83q13Gto_i8Mg0TWVDE+aHNK&OO*B{Y< zP%ezm-0`XUmcp_bVal~-kyOntA~u+Nhqu)mgj5e1)qLQiCd7`g>5_M@?!ExQ8pbT0 z{rtEE`2Z8o;tSwnl_(xvzgH-^6{Z6iG3c8~nk@qR_lC>&Xl?SiGV-Vu<>bjJHu%gP z1f!n-W>bb%nDO2%Hv;*_QI@@bzbvnkXx-f;cgBI+O;1DA5WQBasi|bwGQerKY}@>P zvUz+=#D2d(E;#RZq@5HT6Il?$o`;hWI-r*i9C{)&$hbec{16`P7u~G7b7a{&r*1uu zD+&w2c*Dpgj{IH-(2`%@?NV_D)tU^7BK{wjl5qHV`%K{VG zu&W)tO|gEj`u8lC_^qvyk(x9N>LkGky!1VFi)s zKE*hTL;VSUMH!c^U^s|r9Gdbt?hXKuDhaUkwv1{46Oj@n>1gawwyAX#EYKHBz*)C4 zQDZeNQj&)jSpr`W4dbyd_GKd&1vp-I3Vix8EfY|A`_xE_ukWMv!en9aY+v^tk{nog zfogfQP7nK29Z-?^5-h#H!DJyqTLm}B}R<(uPhGv@A` zVPrhw(w&YwT%@R-b}t5q+2)lOturWwgTqa2E6zX+O?tFt(AP9DA!v9}VK5r=K0bMD zo0Gxy>3c!GkzC4D&|fY$5LYh#{HKYJ z8=nefX-dRq-SN<(`CN`+<>r92QLmM&?B84%t$=2|lNfn`aBT{QyON$#uJZDY{jo{p zFc$foVGGh!Q~=p9gEb3}!+&;?YS8_%Uc*m11tK*3`{h@dk#9}Sh&H#QJIxu?fQor) z$F&{0aQ3+R+W%PVScy5fW2&ZJYSrvDkzQ!pn59>Ev@Y?Yzpokrs4B`nzuHhVwxfI! zz}=akFH_*}tZx1LC4yG1nD`YKGbOwnc)7v`N(ZOb8W+J>9~MN5=BJA4aCZvkzwi;o z*vL3Ae-VblzSIEX0&EdNpuQhpm(R#HK)x$d&uI^bEp|Z)0fDROH%((E1T~>I;kUrD z0eZbh{XI@ap0%D6R5JvK9DknG`+Mwb4G-q$Av(C_5~JeDF4I+b$O5g0sA#jfuV*Ir z1?qOlRo4@!bVZq1&ozETc=}wI{Zbs2(3(@ZdlF4MsU=D~Yr25?{iGO%vNNXMs$eJk zWWGwf3_bmYMH&E?A_w<=ifJ1DqX@F2Fk@FBBP(FY=;$vMp-C!PNjheo&6w#a)iNv6 z+;Z5^dRKU95@Hy{nE5-8k12yOEmxoX#u6^eR)0y0TYytnvnZ;z73?6KX3xMMgD!u` zm^O#hT|@CFj{(d&NfwYy0 z@s(e|EU}ENw@t}(v}UTLbeLgcU|(zPyG+(kpv(E9j;SC%F(fkGWVCzmJfi#RxY z0M<3>j0t@eu|MIfw&#D`+1JC0;|ej&1kH{u=i#&4tD{nRbwBd1vsV%WgB#!Rf^+r< z(xCZ|L)(M-?+y-%b_u1~14Wwy=}0cX4!2RmXr#p7S0S6bjwuL!b66OSBpv~%0hf>f zi**j0rW>wIqUmXlVDk5Keo$|cFAFG1oN5ekF2P+Cb+=Oyw%EWb?;i|~eQJ651;t&E z?2xA0w0wUMgly!sZ}yrdrvLNq%8SWQ2WLD13;sFT^R1t2jS4#Z?(xNvijR&4#&-Q_ zG|0r5u@||GTPE5x8XoMln#uMtD*Yw2hXy|7UcUtKA3X^7jgXUc(R|ti4dglAN&LR@ zJXv$58P-@TS|>iT7+r{y^^p*m-ZsBZ-L%7<6twWEJ1$zCE9s?z(&RH*S&$*qnK1j* z`oqxAem1f&Q;xYm6HXL}y3VU#ie?g!F!JeW1i4S}WSXI!YLcy1>wa4mjOLHRU8p$Y z)349>Sku#1e^)kCA+_UwJ`TU()!c^Tj*Fi*tSmN9uFXISA~-k7C_{Nh}&1aos) zfQUk5DCd_RXmT>TA>gKh1kLX1olA<0<-hve7P) zT*#AG;rj>wn0GV52_QC+-#x>4(*Y223rOy|Y}#~A!|%E`P;#zA#JM*$0GIylJkBs> zL~~d3z~nD#8XT(0Jd93~@o^!C@w$(%3e(WK-a#m^3CCW8fgwn5Qn5J*#u}mLr}^aT z-qtlF(=H{t8l^iR8%m2U*jM}2_My2n(NXV~%m ztc@Wru|pFlHD+`J_4o9Dob=kkNh3j>hk0>E+Byz-m3hd-&PK+RzyDsl0u2{PKFYYm zm@e6uqw|+qx|Au{pQRH{9L6j!T4-`9KG0DVpx=_A!j|gATRUnP_w1cn0D}fXBj|-2Q!E;Gsf_l9`vsv_Ibd% z_KyWNs#f8(#@zE$JAme=jzY#$5%V z+ORr%$UTlQMYqB^wIVmMru$^NZkvF9$b7m_Ldr2U=AC)F&_d41_wmnGc$K@qi~cHC zERNa}mB%ZnTWp!lu^Dk>LaXbG!B0lEEZG5l8v!yu zb$KgCDt4*g4+>WZZn{p9CZ2pJGvVEmj%lIimm7zzEXgm9Be$+G^hM}KfA-~Frsg|q z0p@5X-{GA6>qnz&j9t!h|4%9eh97+cnOsdSRx1uO;us-iat8M|S(E8HeJN@4xeG}> z{b~o)a$2>rHvc>M=Hzf?)JbP?a|u$*a0JVQ$a3w3Yu_uRp#rWCAh!M(3c!D1T?Z=$ z5hT`bb@C^7EF7ZQ;T3HA$up2KWd_U;gI+nZeELRW zf{M?C%pnE>rZfKchH-DaD|X%c2Sj9N4TR(0Y3+ z_-eG|~Mc@tR+7;8}&_*r!|*`12Tn8*DMbrqo87D(U-A5+sU zf#@YLk~r}=AedH{6TLmg28$to+|VKIHtFz4S!3VHP8-A%8sZEyc3HJ(K<#{P64`bP_it~ia7#h+(*!m3>Qsuun z(ihx3O_jfbBKx;o%aF{pgSDt5cGUVicAS&>#<)~c@x1wxz?hZnzS(ca5%#}^tKzI@ zuPHg~^pR#^WkVdG?$M|fmUS@gJwLpiQHT-Q zr6TBRsi=2gb=dBxcR&)=WA`Bp+}+QFhp3iKV?$}V#s{>!i{B0F-}Fc?y=4b9&H3*r zVRjpN+zsc#yvDAjGDBOKd7lkVRoSnmK9VU&y-dngcZi@hH-~YI!^rPnn#L`Sl-Oe3 zPTwGIYSlwnC>?#9Vh&<@{9g{o^YhFxo?|dAh zOQA^vMxxKh5T+o_x|HP0Xe5QE;!XLtT+v;RDhWly;T-?EQkD?TN-7JgOx&GHIX3^% zVSeqM-X}e+=RLYTBcJ|Hhd4>l7+&o;X^@f63QY{rBXHy(xvYy)UREm53j4Ygeq?c(V0|3?&{dH!&NI>^Or0((l^wIBr&%=#t4r--wcmU~zxJ!JZo#QIP6AA6y#)LJT= z&h>P-vP@l_5L2VGNZ!VS`A|7)jk6uu;2fEH()<(egPVOfbC!KBB7^_s)ysWEtppyN z-@xz6j#!X>o_<_ZlUWVN*FHMxI=KjnzdaCX8vjUJuESMd^Mz_7&QnzlUEqaoJ!4tj zGTO@ADiubRWlPEB6M$gJTJ@Ve|(NTE^fyXgNR0f<9B&T zLHH>DorVeTW6yQe3TBGsLW&buidqMdI><%{B6b^;aQbz8EByan0IG>NE#lzaiM$!9 zKPNQ@s-7J$a458&dy@|T}55=51(gQX|lh#fIb41bep|d=F!#j&J7*7)Q@uFMKo?1zJZwjsMr>ZoiNSW4{) zVe1IhG8FW)XEL#a=#)1_YTwD6R4tmr43cgUt^Xxp)`=D#s8tg5_OEmeBIeCGsd=wy z8|Bddj1c6(vb+>Xnv;nQb!v@$7Ib4-y1E8FZx$b7HKK)4Z{Didu^Nc-YAWt~h9t#T z;59L^cTP@Q2jqJ{e`#EG!e@GIC{69Hd^YB6|%}xzw?!~~Lj@A!eYZuQKYDl$v zb{E&T)652;pQT8nUHy$pa?vVU#JrWgxsP7v`#)Y0pP8v9?KUr8{PLE~%U?L*Ja2yg zVP@4tMb%_B&|a%GR5GMFX7&E5l(`B@)*a zq$OZv?;E5yTBb$0kk+5d1Vund!cT1F=dP`~*x@#0g{#fGKpS01=jvH=gRC&x{XgrpA z*;>{V+vBHatDT)x*xG}-t`fV=r&<&l6{9ED5*r-gc)BjG9WYVgIQS;`h+1)E`PR`o zC4m{^F3(f4xh8el8)a3Pv>B&dvS+%*^G~R~WT9PN2fsWM)+={j-!aGBTCXjfgbz}D zP+b`e4x6}h7FlwNrduxmRdU{*`!oB;DbGk=JsZAt#K`UWN6GHJ$EkW@uTREL!`x;> zOlOlKh)O(4vCC~LUMdxfY8UR2QG48nn5wf{w5>-`WlmJX>>5c=YGYnK2pq4K8AV@Y zyE(-6PXYA(n{dlZpX)#pvz!UKyu|O>Y5sHOWj5Or9l7LcmLp!eoq)&s#>1Pt7iE6l z#f=oK8JDl7nOIt|mr>uajlSeKm%ye^AWYgJ$0d@e3C(I_D0t^mcVZ6Xu-75M3-Nx3 zHO4npOzjimxQz697bE}VByyG3Ffl$Yh&)`ftdq{l(ay2$J))RN^3s81>GWPs!s8Wo;OIVw+`nB8~sR%H)7%Zk6m4G z8F^~yL$^*}Xgh2%b&{6dYcXXBMu^>Qxo($oIgzlWmp&dsJ(7ZvYGJhVG^`0o+w9E% zcdo4k`$CVx+SA10R?-6juV{yz;v;LC0KZwMrT(a6NKd9|y};ej`jSgSiy2l-(AMoR z(~z_ceUds_gHVm)?tM1@kMd4Og+F=ow6qQGmRpTGww2o*VS5-%+D9US!JnjJ>~`WM zW46{C&>_Bz>sA+;+I7%s?8K_cf+*J2DGr9hx>R6)kB9u74>Ed?5F)cpsyruHOy-@u zn=B_(OOm?qC-!-SZ8_WpUE*^~4w58s-uusvr?8}EMb7*f>1bKN%)DT-q zJV}et`KZOD!{=6q(;bWdzO^l!RJ*oGEdYPplH1Zd`fQHh-MmiuU~uNxA!>xmx{ zi}s6FgJiCb%l8~TlKMqPI=AdPt`QrZ8nq_{h52XTg|=GOGwc#{WO)5gI%+vc0nV3a zmpdpqg71u$o~qVz#bv;A!m{06?+2(^SKRulRoMfhoN+}bYYb3dk4uGB%?FH5wvrb` zxd)|Ax&JLc+g+49B^(_rTH7uNJk0T&Ts-($$otv*-E_!D>-HMjv!JL240?C*n$=-b zJbG7^_i`URA@qLYlUE80w*HwoX ziG$vlv#Ou^-NfHJjU#WoWrz|)e%y!~S4Gh70_iF`48i1$P?r;S8eJ5OexX_xvZCDp zNxen?lt?DMC0BUYE_u50hyXR7$*`1q|CC^suV3OF!1a_Yiz8rhd}I#{=n@PbriR6U5#{JE-lLu#X)?JIr0yxk4vfGZ&yAq zo$$60Gr+M+0b8$&RITPWKV;_yaIgA(m9R3;L;DwQKl}GRX?Ca2=$x3(k>sXSvDlp* zWRHJ-x4WrFQndTr9H%rYR)sBE{2jFJIY)6a!0~h*}hhP1QOj$gPdVY24ZSKK$I+%Kj7O5(!1UY zNd{QbI6RH!g&#Nw$HUi)`!lso7mwO8h|oP%d+&96ocfD%U9LD}Ppucj@V>orLu%@2 z!4IRwN`Dvr^!1F6H_&aj2bgwzEKY#tPT^lQ&z0Z9#b?V+oOL(m!@__0m>*{^pZ=XQ z$VAtM=8mXlEQie+Id{~E>l_^fxQ$AUpRntl^jr8t84So8%@3T851fR4r(6y!E3W3U zpPaA0?+;q>`(h>1jjrv$q&`r z2Y1xv=55b9^`9Mya-LjdmG1nNXF%*|o;rETkI2Z>mLGdPk=S;FL$KdbibE?n~B$*(VXs@14|O#4}6(<{e#z+6%owb=7PFN>*G(4#msLy|OM1^v<|aAPHy@ z&zgjD&N3|XhrD;W4y%8XMX3Cf@o|V#7zn`eXGJ%VzBDgiJ{o8Fp+!P*=(ozd+zu}GfXvvO34x6vGjv|DLT4$fgllQ%T9-q@~ z#)rdIsP_JQlIA3^{Nvk%Di@cBuhv8Cntu$4V(xcT#tGM+Cfg-2Sii`X(w z4m6G~59?(6Em|%>L-w|)lSz`R*)(cqCw@OHk+kq)J;eH%>YLU_l%vk&T08SkGH_Ah z#kYV>2s=}h$v;%_9Dfz$B5;FI7?!NriWCF6&Vo$s;l;+^i@zduSi!?9zB?SQ_Uk%Yv?sbqqKq<1 zNRUVnZFHkVi$p|=M1tr<8D&Nd5?vBR4+$cA8+Ekkz4y*wj5gXB!*}xh-tR3J|GF;c zKKI^x?X}k4=i*qarmW*>)vU#%qB5e8ui2ZPFOFWtpGADl61qd-x$s)&o?Vsmv(1Y9 zo!xNaOZl3{dl_qLM2tl`wrar70%T|WV$S$;n%>hIH&orb)cFC|gA7xiOlKwAEE z{uF=OV5QJNzp_ZCDku7rAUU$YzD7v!GT5I@^Z}{)Uf)9LWy{;I`8LV_23E=byc&0d zCqhfSt2((ckrg)pEOm*^BagLxlFS9Xb7ArXvnyQ`F<@S%Y6m{=)ft^?Me1tX>}QIG zz~;rdq5hb63iT7XEYkS59@#6Ts^!Rg?!+a^u+w(pgkUg`JW7kT!>DwZPd9cOetJk{DPl$`x%_5$@kn_s7_ALJyiL!;@NXA zZ7W*apyodQP}^fBaivq64W+YCRF;Mv6_nop*_l_<1ALAMt8r0esgq8XMLfHmq{=vAf*DgcY%a{BmSj#X(>c25Hfc zi3kt)ym@;5v;%cicUz+IzQwtD?V4Z|U&j=xaq#DdB6_tWqEE$UH8l6GRaZfDix^;bPS0^WxrE6 z_d&O&z~MOv%SV^zhk$7S0Eh}p=E;-_(yeg9=9ehOCfJ`#@~5_mV`WFri+-08%hn3q zHgV6RH1PX-6DM{kuiC_BJ~_elAPt=kqRSQ;-elTuq5Z_R!lsb!w7g&!QdD^Hy5jzc+KXV_WpaKphh~Eii0x{AZ_D5CZFUPEz zxddTLQ|;^4CP7jV^5+b*LWUD4OycIDSjXjM`H6smo0*BvPca`x+PkmfKAC}UM#qsb z1qYLBx^%llU(t|;29Rq=+XO5wE>gv7wj?tLo8%iB@t1#m^q#MF?Cw%UZC$+wnDbZd zs7wBs%=VM`=`rE_!5`h<#cDRx?v&=a|IXl9ruCWKW7|!x0eHjMb2g*^K>Lv|8lT}Vu@~_(+rtCx z=AP56eR${bUGRX)v`5fvv=|1wCzloBRZp(D4wJZN#dL&p;cCIQCa9AuM$!)O7=}d! z3G3YA)wz$cdzzOMloLmxUZq!|DVyQIu3ErAy~G#_X6XUH4al?UbiBG7$>L4i)y1x#kQeLKr9cBNTmx}({V{%}%4%~YAv*C38utaCR& z`~q+>WO@$V{~8C;KPXbUe1IZt1mbPR{s;##9Y z;d7y?q(|DlA8Xh%w2|eK(eHXE|C4|CG{D0 z4#C5OR9F+;D;q-au?s|U*`Y&VRw*%>A@YU8Yzag+y7mS-j_9l$(h#m?R1l!9lPU)xY(xj&a|V= zhf>4da&F4~&Y&~_mGmVXig4swJW=I|hZS+0t@EYKwZ*9rrOKWdmyh+>>e0I2(fJ;& zl{QAnM;m)_{BfXI99B98f5QMyKJqjPupZz1#n5FOV2yiXWoT{16vRiaxo1V1BhtIk zx?Rvh>Hj32=5sH;zLv|V7=1sG)_9ck)Ai?#cS|<#;%E4mJGmAu4^uLV=hkgZ2Zk-(reZuJ zPD4FI=wBk?d-TMs*uz!@ojn!AS>P}oecXNy19Y15B=I76W#+t<*oJWNWyfA-W;miG zw+7&W4wh~i*b;vt(S9O3HHH_27;jdW_O@_ZW$SM(IW{27v_B>6;m2V^u$!J-TeY17 zwTm^Ao~aJlN&frM6(YtMi~qG)zx7402MjgqR{KQ!s%hmv7Q3$<+?LUWsvPDKQ-}+J&L1ADhWkN%4i^7@Q!R zwHzyJ&%;&cJXp+FZ)i5hiHVhocl}Oz$`kLW693r6y1anF&YEX9lRH9+hewgLw3tTM zD8T4lbJv#ZGpjf*n}o2hn58oA2=>G5r-EKd zzu!%nD(A{I>K+IV5TMYcnu&##R2KNZR|>mscJRby=*TSf$YEy}6C$y+-`Wr3uj$!& zXCudO8Req?T%uP@*B41FS;!phI3i3%Z%f&NSPoqj1{I_Mo++0z2V`3wGhBp1$#rCS zFi@BvxY1ue&77BrY!RiqWk!#_WB8phe~xC?-=R;S5XTG*-YWtT!S@?0TFtSix4&9KAG}lG%wk+=(*8vC$$E~=mvKmr z@^`+#V-E?640`o-=R_(djYuDVs6h zXu*Zw=hjQcH6;jsra#^*&D6Qm+!J(vsCT!8ZhE^yzt5Bmj%A9ZWG?*j7trFk~?7i1ka|*}ZhJ?tMSPo5iq9_4Sn;PP%316-iklczIX(Z0g*) zZnX;j&e+Pp5au4D9%-{OsU1cYZQTHz>0n!*{g#f2+m?-;RWya>s7W@ra*jyfE)Ai% zp|sOk^*)RpC~Q^+vr_!|++DY!w*(YvC^Uu@gv?$DDjF^s4o2yL#&8pT>O z-*C;YsATI-f7aBB)TD`XAjzuXv83a`g^(|k&+moAQKs`|>ijb)eXJ9!YA~fQ@WGLz z?)!D}zN3e%Sz*xyIGOFUvbZa+k`OO2on8<>Vhiz*@#R14F>t1lZ!s>iS=^mA=T-!J zOvlB{vk-J>q1XDqg4Y)wM*dEAn?j^GG`fZG2vaq0NyJu&WZ2;P{4BfCm~+ z%8zX03A%N=#K0-!B^Qo`CXRvoTI0>lkNHc-yUBicE($u?6Ih-it#?#3XEWm$9&P~2^?@9E{b{n@hU#%#SBkY>u6r27moV_W^^Gr6 zst^0oJ@4W0D-o_skJPt*vGXW{{Ur=fqrv+>!Q~1KkTD=1xzIO9(IiM-7ubKBV}%r! z9+m><4|b-ag#YPI6t^|&c)h_MzZx}YETjstyfnizmb9ted_E<8432HOrx(tB``mvC z-uy(F%lji>!EFBsPE};m-7DjbaEM*7TbX37Ayt3^)uNGU}H>R;0Q&{*rXzls`7{o+(Y!~d^zx2 zl#D`Z?e|ePyGB8LvGE z<4tZDN3J<5#K@!>-JmZ-#^Pl`7=(lG;~sFa%;SYP<> zGs8h<1{8wANQ34m3(7;8%n6bPx(yG-Vlp4jK}>)J<#%(+?+V762=)#IVK+GqP7OlA z;_YkA3B9dNO5>bn-wVvo>b!?nYO2sf(V5EYJr16m=;cTW;WEw%=|*^wYlS(5fe9Mr zk2_#S3u5k#s^!SX%xXYccDy)HIa}|FTp4aHQ4ZWQ)Qbu#rGOqVJH25LNIvp533wo+ zx*VmEc^<;<83Gjr>Oi#%b=I(WAd~Wsr=xo1`3#z&P-c;~Tbl`vp-f!(tGwjmuJ@cW zujhi4!K5nQ>9LA(Z+g#^96n>?0y_EQ14uO)ntP(}TU|4be3mqbAI9H5`B8cq)>x!s z9#%_tBsco^Y5(g0BGEEU?%Amb0Mh+h6uj1~H|nvLav2McFE_XIas{wb-SiJgy=pi^ znBOgqHaaa?j>DsJ{A**Qz(FC{@|_9#Af5%{A4^{1kA_3Jm=<1BPU!fjMLXW32PWv2 zbk?(Rl8%kUU)?(WQ;^J0{?O_yD zSoJ=7cgsiLYFf1@?71_vY)+i^wtjpdLtuDCO!ph^ui$Em^p%p_J91_6lbw`2-i)#2 zozG)Ku0y}mSa^P>c0-=eO|o`8861R7z@+Gtgk6U97&mjn59R)S$^Z4(Iewgrk2<9; z+JXM+wf#w@;KS(M<54{dLldf;PE>%~oK<3YMg`%(fIx7vA%~FPYJ}ZSL^%M56q`o{ zTX`^%e|I2yP7+d~_m372(-FPh0G~#HY8q8KMf3|j999ei+vCVAjK1}U3x7@1Fcu7( z3elp9^fL(6m~Y8$)+-Msfrq z;|W(~L{VT0jYbmQz%}Wi>#?u(ZaUIy!OD6U%a+BCq zS^uP0ajkz~OK>Xk%I3%0I023n2I@MR1fwMDohLBn-i?bKk7qIR>u3d<7C@$_yr7-TNFzDa@6*2vbgG2t<==hCddL=cY`iL@s;N z@X74T?5@LqDT}iPZKfFh-#hTUh^z>G-B@;C5}w(oTX${cxI8M?la-5~M=o9&R8wT@ zHT46;QE`+z_uJO? z`LW2|>M^krHtLaI8jcS{k1AZ!l_B0Qpz>lGP|m00k4p)eH1Uz-UB5y9)es|T!>Amt zhCXa1m!57c6{ijy{@|>o9FP+PX64OiuzMByT!lijiv34l|23m3ws=9#8(mGbKpXhP zo8=-ssw$&w52|owKl8KA=ZJVS7bcTT9et||BXArYAYiJob|+Et-;Fe(dF=z=z-OVu zEI|J|^{q6}b)wmjw2z#I2j0eD1PQl|mxk0^_zqZ$JebDl5wZJ@9J12CAS(fGa@)+| zRF66{nw9JlIUs7RLTisKQ`^tL&i%U|>coGc?CWQ%pDe_B`~yIF#y;G$=RZseN1DnN zO^j(z_-2cM;AP~xM<>?-C5}=u@|xSh^)~2ZBHx@nNXeId5vpkbpzp81>wo(aIS8F* z6I)LKrHXP0SEO!p zPWpQ#gnw~sQfLZ8zdctPzoisk&r|D^R1tg_#>PbbGG6^=9)B0(jcZqfG|5XMQ^4I# z3U4ghC?6+7{{}?K<6H4AiJfvU69FVi^S1Y>=8)pPIl8vrBMk#9`d`_ha~-G!VXEt( zx=$;DaqvtBz(|U`4vGwdV;`C zsa5RX9THRFleAIy^?6I;j*+QNcdqFeNnK5$+-9D z;&<(GwlQsModmMXiP{2u1F3C$GE|c)(kzcOr;`+D!>m=v zwGR5A#yWQqG`iC$n|am52|dkC_~UiKwnL9z)8%Kp7Z9^aCv(tZD=aOh8}hxjMf3*4Fr)#?AVa~tdUqmJ+)vRPG z3(wpZ!&Z52QW~2P%yMyYF?dBGa7^K4iHQ>X9Nh_Vfcb2G&S*;x-3=rN^A_9=HS#nF-E~qKccO zlMB01-6%6j9~dvitFs)XxyPGrV)+b!IN%h0Y91!Ii<)yFQw!g1o%rKx062<*#$!_A z4*Q_%jRmAx4iw5J11I`Q!;9CPlNO;>+5kKpwh+=)OkiP3dK0noPbwozD9XzPQW8VG zMrO)Yqtn*p9$FQ`b*!nxbpG*$?E`vsW*mr6JMYne@tMGx|2O74l!@K;2tW(2kF}SI ztg8rRcUZ}FGz);2y(g!~8g&C6yi2EEy1LTjf6ocBus^03ssrmKw3{SSMXc^N7j4{r z@SRJkft2o*81FZ9`9o5E@9RlM#NLOxbQBs@K7vO>27{&nMgmK5`Fs}Fxuynx1HKM$ zh`MAd!_v^#*QPTw!b&A8=l$J9%t|G=<#cUd!qqz8{%uFN{eqvX{Tq8<{55sMm#aOD zyw_SiGHg}6!3GpiVa5As*m%&5xp{92y$C9x0T}b->#s};2y42U&hjD9VVZ=y1ysYi z4O1jN2a4kZu1;{G=QJ+hJ`dRde|HGT47eU&TY_Gdg|esVrRlk&p712WTQng{Iq1Ou z28Pyf&P7<5w~z zE$S<~3(viG0J%4y9BWN0-WSoR&I6$nCG+!E?A(ko7(3_mR~+QK|Kr{IT^^K7FXhU^Y=}Wru)J(cR&E$B}=vIlJ=h%8zFZaufd9 z$4&#_k3PE-3itN=+52MbGroDF4_gE!AhK-a#V3%h^U+0-G>J65^`OP69ZaRyHzk+% zXUX%l+Da~ZnCAJ`O72Nt*M%SKy{9QZTOkd=|2WzkV6iZQYQ%9Y`*M2VM*x{YDY73S ziHj-elw2s|-1!uV!2kwxs+XO7noi}~5NRQT6(vAOIfl4@@;cdl=sM7~=_PA}xd?qo z;0~y0#cemEO`Yrlg%h9(<=Gp>zbUXk?X- z{&i1N&O0K$bO6@^$^WF@{5L^HlGD+6UgvPWCH$h!WT1c)jJK2Y)}(+Mr)S`0t^7P( z&h#(CBkW&%DIbF+=<)7o(%d{z^nH}^$1|JebE-4c5I_(Ky+<~)K>v8*9bzC1Eu#=6 z*R5#P_#+;0jZC>cFgI|$jjN8Ki?xJ#&nD!6q=?E);QeA~(--okpT||q<(A(rUz+-4 zpQIE&4lKG%Nk-iZm15&^@OwZMY)4?W`-3MqC8(*GqF2;un5u{+m306K_Aan*RV*DuY`oOgc(?g%_Zs(xvb+&NS|F;h609r7{qQwH#8c9gCK2JbS~}nS2QI zqz*^|odaF?;M-jDq27Q9GRY*$kh_wQX{GZ;(a0@ObhRDNIc-qK)_|wpgM^se^xySH zh)NK7%7An7^sq%bXkvHJGc7mg;15;sa?8<6o{~preQ!`Nz8E zBKA4D#@vy-(AweiqCrTRIMAOi)GW)sop%TVZ?o6q!=x@&sjKfe+B-|((`{sm-|MDG zw|^1Ts!hW>)gTMYu<^+YJh+aOxE7d7ILle6=czES>hg#q09S>Q2}v{|?R*T~KJ(0s z;H>kztUo#RuU(C{yBgkFrIIP58%bD<)rWAA!!m=>jG7y(x9&zXJARovV&78QQ^W|` zTyFn14X|bwdRU7>oDV!+a_op8(t4ffyb8gxvc3r z%QU5gH!jqcBbwSIfKNMY!(T4P<}k}^MxFSrMD6&#y>xo?%z19g{JKzRhRhJ*Bh7oG z#oA_A6OMdBf~^{_DZ3I-y5;CsbCqfoN=4dP z1Xz`9D;DuFYol>{VK#ww6Fp`t=;z@q8r~sSs8z$kk30px8YEeddu&Vbu^NR};Frg{ zpYdJs$?~ry!1;)$onK;nvS77bI~{Apcg}ZoZn5wdG7IGIK|?jx8^2UuQLj!E%X-2a z1fIE8%|gmg%0tR^nkTIz^x1O}3LLkpJ{Uw^ViS2lQcRUfuAjcY#ayj3XM8QF6&qTE zU~6OJ)eIbt>j#;i_RuPopnJ#~Y<|)vd)GT zBq4TykjA|)V`dPlZbB8sP__zeBeMMX_G&NDI~bkZcx4fqJYpg7$yhRVA zFl?eg2TM)lUFG+f|6U9VQRT2izS0Sd`wh~!X>wYb>#8# zkD0qI4U`rpMqaD1M3O!k4wG0T7OUazeV^|KuZW+!RwfVRR?5mP6Jt7B%EYNjhFPE3 z<4+Vo4C#C7VEs@{VL2(Y*1HGh_tws4lD1icz#*OL8E#T=CAnA{OE49)!uA z8CO{Bq*Me(@>E%Zouk&H)D87N-`G7ro89fFXudd07y*qx z=H+&#o-jBGBfZ+`Eg3!cp$q~Cdhn0Je)mrV?^dkW5B@^ur|0^lNBgBs%W+;%G-u71 z&P!ldnIOf-3crb+RQWLzx?}SWSDX20^`z3BDVkLpI(+m}uyd$W=;h@1DW^G?@;SaV z8y~S74&xSu4P*4A3Vo9AS~lO;`R~{Wh`#o%$7>ev`uK}gmW*9TpH1&SG2$_}uFN|j zqte7nbnrYk!=7p$V#7e4(k^NeWIZhu5e7J^VUTDX_GMV`WOJV9SyYfIX69#AGK_j9 z2b6MZJt{5u?o#R-XhPxP%pBa+^PL8NZAnfztkobo@nYV3L7$%j>IS##pffg0nXoK$ z=T;;&SLU;XOh}tlJ&}6BknyfHoqu}E)NYEAt82d$O_d)U1YiV(a6tczWzn*b3xQ?@ zbo@r3bEg@=fhr2}U&Hh&=Nb-QuDA#ikV5Y`JiIW0^GkntNCEDdYQpK2&uFI&~0wtJrJa zu}$xMFTbLWo&LeCH10`%xbxZzJ|P+i^?lsT>BM7&+b!(TbQOJw!<4pxyo_jB1)`P| z3$*b1^7}cx(OR)S|5WLx-yP+(A#1`9x`PKhtLPXHCZ{zjB@}Gg2dX(C?DrcB&9QH< zexQ9_Qda^EN|5zEIpVs%uQN*eeE8x-l*38k1*gKU+P4ATRWU(V1xHfe=tSTzl)YIh z6$13b;d}SFJwORzs5_lOxe<0_&EKO__yB6Cf0IuxK8UZ2Q2_S(=6s0t_|aC1*9Rh3 zdB0dSJufLA+qzKz3w-zvi?U-zhU2a{EMICGBnJ0!I^T~InfJ*)a6KBiS-$Y3{EG?B z?vX+t;PwoRQ)RvNmla0~U+I2!<#RP&R}Fw|iR=}tle7^AWCAIO>!e^~MXf6-f~$c% zuU7+0IybcR`KK(fjwaJ^ajKo|`lpuli((uy)0bnth9DjIL5Hw;)rTgZbIwR|kWaPZjf`$$Cl@J}O)qLahn%r$cnck+)TqZB;o*{;GLwB<4qHcV-+t ziYl;=SioIAxlylAl$=T8&mW|$wvx-QD^zDK3KnAldY74Z|1G#=F(`);qv5Nkt1*DK z=9KEf&Mn9fdw+jLE}-lkB2N7oi$T(SG0L+pg20&j0jiHL)lez^ZYED`Ja#gnUHl3i z8MHlAFk-#UB0CcxlVC5Q)QVTCuuPt@+l+6UINP`EXuuPysj6`0DFpQNnmg@j}nCQ!4oBT5h65`#Z58WmFo z9Qc?|qb|pPJSxu+t6tcF8=YMG7mxOjDqD?@(aO%$^>27c6?atc5#D^dbnq-nsQ|8& z3j;zr+}wadS(7ScRVIF*rb4@JRTPo}`Kw%hI!wG67OgqVxU$n-r|Q@N0>_XgZoEsp zSXrH^ok17hcl|^B+v@1d?;Gs~Pt)_YSymzM*b(fb=w%_2_*6>YnB(+sbU_8tef_(( zV(7y5M+miUZQW%#9`5)K&FQ6&_b4HGLr9_HFL zS|Rq+qkE4Wj=M7~?ckKk*-v?xl=;ZDUH%KY(s&r%_#6!=T)1x^0fisr%J(6Wl)8;7 zU{TX59th@_??i3mNEcmCHT?I&HwVaa{1n?P$ieq0;u!*Bg31@RFL&nVxNYwcFD4L9 zq&XS{R5G5O-p|GE0)y~qu5T%=Iyt{PwiePqNaQZ1j_)*EGCkf!B0Iok3}>fK8B%w! zGVU5U+X07+{nyKP7aT>2LVK6QZS*xtU2UUqGR1D^{o_FA=Qw2O2DQTX6 z%vknlEw7AuYa$yT@yZmGCiBtJfiU93_uLp$I6JECr0VpUnR;C|3;O=+k5$M@5v;-iz zffCKDT9w*^MZVn>KdB){H-AOMc_Ob(iJAHqVMSb9v2($Fl<$=GUR+Y9WhB)bOj7_Y z7a|+)iXBPjM%s7zeVjO_Q^+z6sef5C5%y@I8wi$+-*RtA;#m&#>0^(1-M3_DmqERy zxe=o^c~6?l)wi4hkuoFurL|H#3l|T-((t;MH%`j9j@x)VeIFhgj za)yKC9)mOc_zt-53EXk}9!P$@lMEI08uX#EySXP6$(IJH-Ahz|9@5kvN;wS@y%?~0 zOj7Ln6!-1VH75V6HX+ZzF?^p*6&G#LOiJ+t!ebVJ;7Yp~t3jpH24U(n3Y>LQh>R;| z2X#KX?=J{cxF)&2yN$yHH3mdoBSFd&LX+5AELM%TGETMS3B3M|_L=QC?&*MW0(W;0 ztZwssJ-=_g@zRWV)L(ba>pS}JJz>@c9hBMV4Qvv90f%?w0U3TbaNY{%YrWjro?#(v z;{5P2i4)Jc$bej=Ow9B`ui|H%X?t)LA^0%(@9)3B%}nbFG9>noSK8FMqi6dMdEw|f z#3->Z3)Pz)D;DP|9i9OQs?$q=KHfx-2=ptT8S0yijHnj7w1{1x z2S_^YH41G})#b;UaRC1w+r(|cA$6LS@jXmV2EtV)9o=2(hrOQniwk-BPr&+*uD zG4MF6o$u41m=sZ3q^t_LCRLOXpjGg>rx)xAnl9;CpkmkKIt%GTNxA<59t;>G`f z@o!%s@*{spj`>xCz6YaZ24KsMkpBeUC*1iq!Unf1~7c-@fi0xx!DCkU0 zEt-}H?x5@T?Am`4`AmQGuVlI(aebNZ`tnhI*B_XBp6l=Z$Os9u(7Pc}Da%yCx-PTv zXOD)7f|CckSR^_aU+cBxf*X1VLudc)sBuAQx7!1~EX$AELR$9zJip^sv}NT)@55&= zm}m9YA&Z&4rl-^UWH%`-)Mtn1WKd(Pj4@ui9`o8DlFy%>-j-pu zyv`%`yxqel#p|HD$}=(Tg8Rbd4`ZlW_WFMQ6LGrwP9coqx=*coICy4cwXC1D-ySJ% zraVTHip|ga^6;RKtye#YUS@K97nK$P1Zy4CSfeA{)DCCq)*E5C7N%wPVeWELXwM2CCFsxn=7@Y zDvqUs7yrYFp+#fAV56W#xW)AG;D#{!9oQptJ7b81>-3HfcDOR@rCD*g5ByqPW2bbC z2QNVK1IElJbu^#bdGyQV!(LH3Vx9mjDByrGH#<(49Ycj+sl-35@qAblG`lF{q$}h6 z4<7^n2KQ^(?&{V)GJZTSP)t!)ag6cC8etzZ+cZU}Ak8`H6EHo}UM5nQZ z_EI*+KAHM+ft)?B4+MJ92P$CJL$!r&;HJV~_~=8uocEfDt}9MjC_RgioDT;x1~Nfq z%>Z7A#@k5f0aup(Gh8}QT-lv&lWSA~+_8`y_=>fe_jOxQ??kc%xom78_)VSPVhG#K zR`SWOuZ^XSlcdP!{)I`85InKRJm3@Z04s%w>P1_;Sq^ zm*JH7E-gidY=&{AfZOhEg)&vBfPU}p*8UgIbN*#PY zXG96XcBLzH?MRlo!+#d97XmRjQ8_MmO$18+X9}nlu{G7W0OznW`6*n$vQiz8XXmX@ zDrY~s-f+^SKb+ojc~sK#7dr#*DuRh%1dOImz3mV4PzHyn8D@rUssFJ!TU%sa$ z-&@Wi&*f7_G(35TlVt#hqKp?l=d^tPO)grS_KG@*mlk0C6WDE8?tIa=8*RGtkMzht zLMxHZv>_c<8n&u0=>~4V7S{r)ER5>63NR>NUw0z=$JN|+FvN)1uyWZ>6;bqU&N!{W z8%$@cFeh1ksuQR~259@Nx2?A6vu;rhY*jdb7Riog#OvV2m5i41_bQnt&e=)a6NN7 zZhf1}2^io1goLWQ;*RfM(u+x~7mBj%4CEaZA&HD!L!fjO4gu+phM;SNCpJ-0YJOz# zU8vtMGN#$zbq_sHxwV!UNdYIXTrTO4y~hc~$){Nx`@^q~Z0ZDicNJqRgcNJM z8kIB`GOdf)3NYFeDm)V^)=Gw>>=^x%5zhnXg%j(^G1#p%zp>EjI4{J zzDYF@{Jn#H6)LQ*R>#`KP~@ZZ-PE|TL9WIDQffOBC# zJDWN~59!YF$AmKoiS%X-c0R4vQ4UvaFbaick$0(thwMSWvv4)L3oFJuYsu8_S+7iK z?XUd$w@Z3Q57faMfriqr0Lf!5lqEIqW!`h=JKbmACKQ^p3^htx?<=)0m3C@N*?!3v zUb*{EQaPQ@<14YgfL}RwvDsRuGuVE9|HJE;rwjK;qIYwL8Lp1i6^~t>Vz~3FB#o<5 zC#9`!2&`9m6{R(d{mu@%u0S}m9N-sJeT8Uh9YcAYFQi`!;>1Zk2IXC234tDJ{X+|W zi*mAfR|RKLT_`qfgcTia0(w*3i3J*z{%IZs>`o#4m|7TX`7#Sx+hlns6dCB2UaH-u zH@);PQ;lT2{@a6dLuSw;_6+9II{G-#=^-hfaUdq*_|u$mijT!~kv3Jd84ihFu1q{W z^5AmBA#d&CEiTPn|Kwq}!#Fw;S8|hd>wn?C?bP#n$KfLXN)9#YXj?9ZZRD}`S@U0m z_+O{;AQO8K;iDq9eSYT^5|$_Cr_ ztFsPI)+8Z7eNkimnM7%4PhvU|Rzz0ME^KNtn zk|5Zzzjmr=4aqUDNe&D|W69Tp<$|wGr90R4EJ#LAC&pmZaeI4*2@N(gJEu*oVP6{3 z^uGSHJ|y|g_=q66AT6y&6`BN+wk;niN{S!slv)s_P%F!D$N)Q~pNLHu9|VjROuPDhXnNJAzXs zkJ&if8sjxmnmYsXdPZaYmRNKVR;zQTc&`BMoQzsHk8ahbWxF7nT;j_d7v35x8FmMO zqj&R!Xzc;{+q%w0{8t*_6V@@X(t?H1`6%T2C^&zcdw|-kQ`+;vWl!tbY)7QB3Fl&L zd_?vG(=EqwpY#^eQsLF^RZbZL#_w$2IgVIJFBy#DhCD$w9Hw;@tx8j%I$B3!&fK3h z&m6?4=Vq~AS%{h@$T>vR&1{<+Ac$mzu>VPs>C1B5;xA=g^r!hd^jz`MQLniq2b|Iu z91etwj}U|Su1CIR`iIId3<(RrQVaW2VADRXzHfYe{W|Vq<-kFJV*v1jGKHBt(5|c--LG0O9=W_w2_(vdK+PIbl z=l%o{GiT^``C@0C7muRYZ$6m0Ho3oLw)OVZInDS8wmOLNMl5YwP`puOe>aQ&IS5t7C2E839wI49EvEV7} znAknFfK*-%_xYdH&o_E!B2dYfExiTxVpGT-Cwnwp1@O)JDF^BeO^_&G$IIsYMWdF- ziJokL?=9t~I7U1arpVoT3dCYK;0yC+vEt&&18vGX(LAm?)xz3`LVG)w#+e)5%Az_R z70U6i1Xa}wVz~jhnG}?ngIlBuUquenWq@-;%NI=qn<4a2e_=U`rHiKWzv&XqutF8% z;9|kq67q0?bim;N)Oeq@yB1JNu zNB9wx6HgoeTuL*mAX8Je({qX2Q-6AiX`k|qY^o>wvW?2w(9ZIy=4YaH-GMT-4h^5f zpvRX_9v(S3o!wA=-gA?QjuX@^!|7O4REp8=ZO< zn1%U-qp>VHqmN!zi1>G+^{M^?O~A%H&sg$Tk>v08M5>-?)~y1Znk9*J5DU5Nit;g; zHRNAjSFftopSWlI9_={XEh|6a_t$a5MY&q3FS$eXfi0y?Ys~F)R#%LZt<;jM{5u37 zZ_@%cP3M$_UT`WzBvCFINbj;^HKvb5CQcu*a2bSsKGHlD62km0eH4^)e_5S0XYb?# zmMY3D$sHKvRL>Im*|*F1ym)@3zWD1U67%(01H#zGB>erK&tcruflNSW#VUL^Pv6dv zLYoyvrfM59_vZ)bLZLINadd;GX}PM7ved21Odqk6fR;J-;~= zkboPE#SPxJ)rv832~`HF#VuPeSLZI`{pZ98ALBKkSJYclxroRu5rcjIvu)WCJZ_IY zQ~mw(;t&_Ihr0SsyYECTL2ey`Z8@ij!d(eiIlz>ph?S#3GiX4xy)S$2kNah^@Uy$} zUWWaoJJMy!guvftCO(N9%{Icv%*Oi8vKjzEtI8axc}t+?Ngib`jOLq(b>Wxg$V(ES z|IUWsFRZ9kZwiNR9P09+D~IRfse<8de*xz#`tg7%0KTa?HggH|H9l-I)H_orqCj44 z!AHw$^}RlGd7-Kb6Mps}8<_vT{WhwDLegjN>F?#P{Z!k24SN+}L7{zTYf#u)nI~#5xZxBX&F8+f*o0F6x)6&vuddq|AvWQMOK?< zpUs-|56xfL6iJ`#_EuZMrZjHcC=<4@ar}%t&wM+?Yjml?}K}?joHHRPXXn0%sUHnn9t~jFQV15+-N6%T{95vB8_v4 z9eSK6hxIL&fftMM+2Z$v4XKfB6MI~#tF=*Gu#p@niy02M;2CPTtKb?%Q%+E4i1 z4W4m{2u$`~x7Q3^35=Z0TXsV;k}ihdu`Zxc(2Ouyc2`ux#>>VPSIr9E1Gd9$wke!W zrlq#F&&Ef*Fgz0$ezvfEH%w&NhIOaman@KBQI^bgGR59K86$1^k7lf$+2gbedmjMP8~i6ig>U-J@20_^No;Ii8!gH0 zo?SsT0a@B!Fig_7KxSB-IzVA4vB0-{>qUv7gJE|`8q5A5T2rOU!c%Y z@R z=>_$ubC`)rpWKZn{?3{LhXtw$uZ-p%4UUc!M?WA(`q4cCGLWUnDl;#Uv4zEopMY|7 zz|?L(o;W`C$GGvQQ;k`ldRl}GgH}|8S=2e}8-MCF@!Na~oquRSM{{|@RlL;-T@XIJ z0pM~6zZ$MVW#9KS!eCkg;c8aRp7uyEirCKOint#x66iTLYJoo?EO=2_|A6$^*PqIm zxuc%A%dkHs5j;67g$FuZ(MiBH=y-!Q=o=| znxwIq@{B<6+9Qszes-@eo=Nop-f&(`FsH7)tnu{-!1|7;$mvUO&PD3KP1vMZ(ctJ) z5s(O}i?DHGY{BT8)Mb?wCjzs?b~p5Njq1mq2r#eSiZ&_WOyxYOdqQB>{?6u2f}&eF zHF)>#^F|EM1#Xo?ts<|IN|1d}NKv!nUNM-xX!tOBSJ;rFfNOVPd*W`@TN5}?jxJb;WMpV;R@&6_p zCl)&M+d5`s{*LB<7;w+Z^-9X8$FKeb%WP;KE@aAR>!uV9NFgNLMhY?YXn61ggt1X8zUGdx3etuPkz=tW?`QbQEJ2!tihUvz>(wR-X#VAM?Ph zGfn~rCRF=IXw61NTtOGwRF4}#PQqvv#dJ#ANPxd4H&a^AW6b8{u4#wUq}-cp>o<9~ zkE|ND)op($BzKdAwa~E#Oh@IuCPlPt-zdQra-;>dTiM(heCp$B`709m6YEO-umAZ3 zl-5q$a|`ztLi{Us98dN9G)U+-zk(Xt8{g8b8~+P&IH#haUQ^mUJzRTe(Y-e-NeSs< zCuez^4_Z3OC$I2HxBK&$so?zIbw?rBQhul;v|{D}V?TjncgjAKWl)79U5&2)_;?pz zkSV2DE6n+rt+NN$@O!wZy^eD$I{s|sSy=fE5P$XoX-D2#`P-Ij*MhMpf8}e5!u4bZ z%jh|`m-J(A*JF3Z9B=v6~JI<2v~mvp=*RxiM)dQ{+pnBXQEVuH%(zLe8z#kAwb1KCbr|2X`(8~&MM zPc!(5VAOthc<7{P6Vl+9Pd6H37crox05b507_;cr2f7!`bID9&X zYoiENu4+U>oF%F)9*Qy;LTQl37J?iYy#wECPtw~8r+XWLtSFac!pL~cSZezg1V7y} z%ccpjV3ebKi*O%YDUC(XJ^F8aNe-yvQV6P}Ry7}EJ*#aV@-9{2ZNkYXxv&*$zts!z z%l+zQh_Zl-iM>vf@cOMv&;ErN)DZ`oJwE;=Bvvdvz)6|*JE$tMipwLwsib+jQn)9l z6g3*G8J}f<@@JNr;C7?z>)mUCJ#&f8XuHTse|NAAQw=${N~E~_c^@Kw^R^m_!_x^p zqNdUd4ThzySa+iKu{zN@fU!vSD~j}RMF>yyyJmp*(&5+$_JX4|ZoJc$vZ*l`e2k%` z)$CI-^KcSe7h1O!wJLhik7;TR>u=OwG&wA>o|9g<>W>hOP}&@oAfBqP8Y+9>>TKu} z^^~3a?*DXH?jvtJa6&i1X5;u_$syfa#{PaRx=p;yjxOgGzn@@Ay;%Mk>G7B&$sW(I z43yadl2AX%HtD!KFwg+jMMe}}PbB;WbHt*brs(f|ef-&jCx@+`^|^4qx`72EM_wkr zDd8nyHczIfRl;xi>$-K1P>PS~+>AdvD>kL`EF>p|tt#Hqp$2DkIY9abDIxptjjo^VJ;P{>n>8m9^Sr@K&hJ8HHMqrI_pd5(@`*;Z{@ z&RRj$H4FZa!;c60yJAWujzQMv^>AwN+PUypr@jU^Z7%u!`6g+cI$YM4agHmxq2)(? zi;>{X_(^O{*?gi%wUbSFJqm!)gV+qTm>k##MfYPEGNgwrNIBjZF4uB3*eBZXRA33$ zLixkB0za*~V`IxP;r8I0FW4bXt)Hs2Td2*f!~N6W$j*Efoa8>GJrg7wZ=r?04ih}~ z{-o+%u^;L}UXS*P$OoSj79cc3SOMsr;b0|K`}7% z%+=+BCrc5NqxPgWq9Lmqck5N7y@@GNHU-{!l3AnQ*@N@FhNiyD@_t&t-g?})R54)^ z86u4P#uaPIo?2XFEf=l%wF{_V#E%GyPOL73-Ig;+)i3bT(T4%3lhp*s)V1EL^H>+3 zlfR<>rHcDKkl&jEtNYkNL8+@Bc;j$u0#L&i-!l2YB{fc=+fRRUg7rFwAcE~|ubNo8 z7MLp+t``N*Z|d>nsP^^EeDQH>4?9`ftV&vE4ww9Kuo;;{6YdPR^CxAfjZVjvJ@o!L z7$6iA-P6l{q{($4yBO=Yy4)!)?c7j1=EWFd zM=zyxswh*@IHSy+Ue8x-m^Hk5v}px_IWSL2Vwc&!QALW;B(Vsr6vP7HT5bg0r(4O2WSs5I?P)l+F|ME!Il% z44{JXXP`&7X^}HZzF@~qGy%KtG7(GKdwjuu4v=nRT1ONvq$5%|_Ol`$T<MoG90`esWgEFVb|@l1{7jnh5gcoM2>#^w1;Zbxar-p5bz3g@Ea6l@Qi z7hgdO-_lw%NrOSK=k)**)2{^!=AS*a>xd=r1c^En30KL;GJR5PDW9z-Rll&^`hKsR z@yc}EvmCD-ZZ?uVUasubQnh`TcdBK}Xk86WOTy&6M~2g0-GZ36T3NFS-RinyzfT91 zx0MT>IeXG&Ib?V{Q|?)M8QNe}T3`CsfmG`3RvtaY@G)aJnDmwuv%D|y3=ozI%)ws! znEfj_d)!|J*Y>$zrA8%%mK^ZM_0V8&qAvR#5oCbKVE<^@&L7+dVlFYcieQpxn_b#x zE8HV;6oY>ZJG&=y+(H3+^QlV~vUJ*$h*3NkjOHW8m+YB|EfN)BDg#Za$QnsBX0#00 zUJ}U%^??`3u(N9Ua*Z#aKzG0@tI=|@sq-*-`4a=mk=henXP)^RT&a5>B@`h4{O-&$ zf>LjYVS}vdWJ>$--2kz8C6n9DcV4JT-$|0T(GM~>a6m=o=r_JEt;XL8dQcUn^Uo0C zDQpetgp_@8b{qS3`-sJQ`Fy+Kjgk$xU9aW9yCOKmKaR5-d-1D)VfXM z8f(h&-Ry6~*Qj&R4Ch4Ld9%l*?Xq*f6-67|mp|?p`#%=dMCp(kAA_KQC8uo4%0-4R zycUA#ubquV=G#gJ-Q~*KS2h$oo3NhcD?gY4`|djb)0P4WKzOVr)#(2+!`C)Ic6w-M z!Kk^=AJ#H>acIvaaxd&3V(5_FZ)yjbK?%<#X<-Y+K+%ve-k=>qM=oC58SDHSISA4G z`w%cV!P$Sc{%V;>T3J&+jV68+BklzK5OVtnzn3@Ix0Z9Z+WRu}ovA|j?Vvot2#Jd@ z5bSsE>?|)Y2w}(wG2QBYMAE&gPN#<|iug=9Y- zP&m&tI18Lu7Om0m)S#vdvPfOAwwLa@nXQs7oGtuV`(4#`@>>aoMBZ-yc9m)g zg;L#=Z%^K3jvh2Pf&0OR=G!afQaJ~sgfxHq{STpXWRF;B2`#2v?uDJUqAa(NEAbM! zD9*T4zN0eQNkEPJc28wtcP&d}D!6pn$+`GC_fBFK?h${*^Z;y{=AB4M61IC#r6(B? z(P~*pfKtpfL2`@yNnNXFQTzVXt==zB^#c{tcZk0Zpx|v7y~2*tw7Nv3cS_3Y0)bQqlgkW38X} zx$~n~<66)5)j-kN7qwOJQr)=SN!#s&{27|F5kmoat6)7$8^%Iyq0J%Rz{`&x-?PN*x{g;dpAq$#Ia+Va(Q zA4l7L&^!U37>6utkA^mgu>{tvt%!X()JpI4lw01G$aJV{fcK_eG#8Rgt&+C6Z5Vao zAFi5%w!Qmt6Yg@5oF{HKgAKg3SKZ>_q9Hw$tuSFD}bnX~9!o25$4b4RU?-DD*yM zFr;-*14Lp%zaL>eangC>=C^#}wX!{hbct?3U4e@11J;KE#?$nf$F%0^#C5}J6d_P_ z4`~efj{Xb!+(tD$(ODiJTsmg4jR+0^Ht!C)K|!hWpNb)!lhy}B{6+DonlGiqJYrtN z3BjiLB@M#=DVklw*K53&JIkvgQe%k>+Fs+^xuT~Itmg%v^rqv;$~a`9I!^xW@tcX1 zAtM$Z54N?oVtUy|6&(LKr!S_@7{qt537_aK_;6qWP?OqkC6-!e3Yv?0;CieE$GKu% z#MOFYRN{R^J!oGQmHXG#7bFFi4|@qKpVp%1A*+PrAO~kB*cUN-**8i$tNcSpjHRINOE`pl3mA2 zo~uNl;ftA9C5Gxj_r(L1q4C^}qylkc!JC3cb&rW(>-pzON*tmq_=nb?=qw*af z_D#rdk9XZdVA+q24vWkh>MvgiZm;t%6(xxnCPPM!&Gpng0@yQ-+^6gsiJPf;)V0|y-(os@ioW1cEGvLm#qIu$qr+c0vEloQqsb_%> z32v2$!&uO4z7^`{dPM8G_o@X$FSh)o-=*}fv1td|TUIeo)R9Q9W;W$4GQ+>eMii>T z#1^9O>x|wn5(5!H`{E|vt>4j@Wwvp>{VKh9{C@VK9KnT~y6HBwqy{NmtFfLSH2SD? zj70alz!ji#NY!OAR0aecM9VFRXx$uK#P|2zYSWnen4C&W$Vb`@QoAGXDrNJ-=&3{3 zyH3ANzO-nuxE{KoVYlU<+#q4v!WSn}RfV2o;pUHaXU(099IIpYdn^^5lu-{SaFCMN zY=|THmtXPF6x_>6NE(}m~}a6{Yw zZCY;n^rc5Z33Ck_x}+g(qM;2wm5Gai^Nar}qSK_WgybR$NgY+8j{nT`#FJ}}`qs-< zTh3i1rqvOC1R%e!>6cMJIEV}y`_E?nt#bpqQMXk&0iakX;P(aLpCBOcM@CW!xOgK4 z76h`>kn@2iiDHG*&oLRUi-DPHvWa$e*LLvh@200`h`qXq(*fU6MrEcB$f_)xk}81>G;PL;|9xPO|s?eE#~O$=mZ%d*#s%AiV>BMff}a;W-_&XT%RXP1aPqT$1!)_5z)udl*m&K7OiNiVWO}{uJdbdwq zvzz=bd_%zDSU#nkxyYCO-4qZrq}O<7U2crTcukp(o1MCHS(8_WASUBF9U=wP)pfdbn zCv0%9fGga+b8+ZF@b^}Wn);*j6<-e2O5!F!%!uzZg;#sNg7gP$_ay-Xp1W1+yTrqG zAGR;=0l!NCNzps2x%g}9-~{yg8_zFJ!$)GWlCIOZJZf!u&aIcfp%|GiZsfd=Il&W1 zUBs0=4}M?w2G!PQJVi+baDBVpXu?Y~SOyFa?9vqpD;~ZzRTMue=z8{x3&;dwB2|EII0Oqwa_rf#=ESxwEEQcKM*H&^#O7$u$18&plqmH#B6 zAP3TMZ|vY2_C)N|-dJFWMg|F?qlktZeP}Z-ZxHXv9^rs~=vL1mW$ z0^<{$7JlN+uhE4v^7i)X(Gt6TbPA*QRQF?71e8;$B`%n%M{b1=i~GA+`qs`?%qNcsb~^@~R=!qI}9e|?8>na`X{HSDs>5o+u?Z*(R+K>)sb z2A9!G*&KykjZ*WNa3lE{?a83Fj)F6ME;zXl*rl-HBg|xBxcJ?5RFhNpwgg}_mVlrg zBn!dRI=&bC%F`t<(PltK8vbWOn=R3dkcT;img@~mk`5NlLX~7Ac0r(T1_+COl=KiH zs?yY_jrI2LKS#x}*imzL61aR+RGO|)ioNDbq6ywxT9W9~Y9@4kD8qgKV*&@?2^IM9 zu#r9C_s*Bds`i&pE0p=m7JX1(%@X1EH}Bp#>fdga9OCMsRC%EL9r6;E>M}~vxMOWE zd6f3;G*_CJT~lRv?gGQrD0JjwY_uvUTy&mg~ozm_ydL zXxodgHz^+q<-JWdPq}n4bBLznoHOKU(Aqt-#?1lFhj03vtfQ?uneN{a)C3vBRlt$C zs@wtTfND4V|h&c`7JWieT~AR{EvO@@FbMzuo1bku6@z7eqCaRA{RxbSWY2%?n? z8UW9v(v&182D!2v1h&U-pOwDSus1#xr`Z68fM>~^Q56F0_nT)ig2v%S>513i0TA_15sowhu8}8&k=9yJe$KL)!jQClKG}Z$V4`%G& z*yumXR*hT9#FI199lT^j%U9HREjoZV62-#1zefIlf=YPpe=$Xl-Uu6tX~c%UwXg96+WmUpjm4{T zr8QOM{_S5SnR7FPFOB&+jfpRWwo^+yL;t1VyhMTM%HG52Ha;Eescrei0TZzPcN$mg z%GzmFzN@%44iF)xm9NYWVU^}eanVjEFG2Gz@{Dq%<#Q$%GBR0AoA^Gi`u?axIF-Ny zeChVQ_D;R+b0Qk9E?rO83Seb)UEz#Gr*A&^K+K=6q9e z@=M}vpVt(35uQesGi6(~6B}vxR1irWS%Uywm+HfaXe&*jGWT^YeioG-5QFmTrSg>f zKji&z1g#m<@=@(I%<}>f!xD8lXA%EliJ-#nRe#f|;U{}xj(5%S`uANiEB>oD?i?NC z-+?KLjs;Yb;R;@I52wz3LY2Y-;ySzs*XDgG^_?RDAPD$?)zogi*3zDy{2dWn;H>&V zueukre*-d_h}o5mm{1@odo@F;wy=p!&-BrJs1?m9Y36wZb{Q9HZ#QR@t$0fu_WR9c zJLZsC?r`i3H{kmaQvr6c>a64P#lPg&5YhtqFwv?BIA%kU+1jF8#QZ65oJQ_v{=~L> zTq(r`=FD%2e%s%L=hmYsxdNi5i3d0|wWOyoleJIoNwWu~@sNDKKbeu=3;9#4f=yQ*&{LA zByHdJdGtQuQ$a&)mQMd?1lQhwqO&@FNYz6Y13llqHLZk=FGgxSd#AFx&-5|0$lVQQbzW_>^qnT(Wn&owI~q@@ zX#6RIRDY}G5BCi!*T$Ne6sXzltL!gaKuDjIZW~X|(SPAWy}z~1m78oeF=9^i=%71; zg#S?f99*Am(Wjw(Eab|Ch~wFdPZsy=^io%zcO?kGy5DE-#AZI%{b<7sJ+69m{B8`| z(C$Ejw%Ko{_wj!(^ZsgyFcgNS9H^4vHLfm^P=G}g79JfCD2D#nxF2f$4i7z_lX!MU z|4}~CTd^1{%2NJC$-?7GYQu1qPs9Wfl$zqGVd-w(oH{zDTZX8&0VDSAHt*l=rJtur*6 z^^0k6|~H#-@^Gauo@=P3hTNXkUd-#8VWBYw8)bjJcAmZqf#!`ND* zOqZjHceFD8Zr?!v4AZ$!J;-*kMH%d$K;?7ZGlH)T(Z2_+J=SLY3{Zcd*;gS}7W8M) z7U9J?CzVtMcMm|IhcDY(L9}y@o%i}h7vaj{jmKxUeDF)y>mV#|943C@x>Wbmym5Y$ zx}-I}*xIo%chXL-CpAErXKZO!eK+H{=XM6z8G`kE1j)!ITg9DDB$$j!8w*KwYbZ2b z0ZrmtH8AUkA1Q+K@*VyDJw3|U_GTwMXzpX@W5EPurx+?axS_xm{?QWZkQdum-sdgk zo&SQ~eF3;9Mda~0^4`1dJ}jmzP=fW{+f1d03+Ha-hka2vBWESh=d`OiE2Q*RA`Xko zGO60zn|^tRCu}m(5k?de=iI#=R!cL-xoh-WH7fojZe7^<`!8jSXTo zYOTje^i@p%A34lii%HYd{bF;z4q-cmRNpxxx&4Yj z;-M?A8nz$hN_K%Kk+Jf?TcIH{CGs)L8WNqs(HlG`AQ6ocM&0?Vc%_2Zc=9E@)yyA;K6-H$Co-wLqA+V}kr=Sfg$otX_KHWdM0Y^JlL>bSU;Thw z+!<8`8983rZ=ggfLuX$j#?f*25tda@?iW%fQhKud*;YUT_Oe9c<1vQ9ibkS))z7v! zFR$^o_6s}EQoS;8rfZGZL6tRiP~Gr~Do-tc*xr0(E*aBVfb?$c?FR#UI;MJJ z_SYC&)HxvT4OUI8v2di>lTd}2KS4e| z?KsaH|4jWcm|tW4qfYp44$Hw<$y?6r12fka5cXTl z!-eaNc29ofsUy^b_cCJ~c$xYBJYqeo0U200n3wQQZ560lQKq_f*#@BXs|n%V;pmia z0|`YH%5l>oeBxGe(HX~k_rh=Go;&=Wz@C>1HXlSlC+8IAaIb`y%QKsP6rv@ADYTdq z=o9@mHp%I)Ee+7u^R5Z$7j1*v%PW4$=U#r(hVdMGq6ZTj{(WZ^Ggc|uM2kSsJ&0s6 z$gGMmBGgMYT%R5O@x5o)U) z1i}K51-k67B)bpCp(^-2J;SNJuN;>1i5WJi&pV1Gc!TVW&pVGg@T(u!o1bKxT56BO zt2PSb%q&J{O0w~;8DB!`X#u2y5MHfcV0_9y!P4kTs(OTt_h~l0mgzFTtD30zlcqbf zJ}ZIZU(=`V$CSzd?%q%^y)Fk?r48w~&{BJ>6?PGbkYxtB2SI3WnmjsgQknKDNmlnR zT^Thu&>?3E-#qUfU2HmyY%YbHsa*i6X$x1i(~^Y~rF7GRA9ue|0cjq*;NdUJRm?nV zE>_oLhT73o5~uBaTuK6EuiKuQS6>LZBM3DVl(-MoO7*s$KcZD6tn+5?O|W!-VW(Iy zZTi3XMbV694}f_a0w%q2`8is$~s4`6_ELAOL zm6Ai7C4&CbuuJ@pYt{3~-|@oZLU;*riE?jMMlH6lGG^{I7h&`W`-m`GZ_wB~HC&cO zcQ;=4d&$tq(i`ld)^;w7^EoB)IZq!cX%9Sj>#K}9-3^sbo9wsh{OYg>B%3&oeKKBd zU_k}Hl@?IgPEOAeRFxw#cTT zQ;2wJidiD^t_}-Vi0GDj6sg(Nk_l17zAIhEkNRF)*&?K=j*>^SNiOhhcCt_U z_5FfVO@Mn$WIWq`8nr#HvD3f0v2zUIzj;-QxZhii*_HmM3h!U%{rOPypP-_Hef)Yd zf1j@2B2%8lFs*i*SZxLac`-0M3UvHF{9q19vk>29k=kyt;sr>6VVxT2SLZk%XWtY& zDXFfX%tHDe4G!mb7eL>sWa9Uyp!*(`OmE2N6F(B)M1ND%1|iTVt}@pyJs0q@S*b>YrYOl5V^ zokgZ2zgrJF>b`pdg0b|B^KY=4p8PTpG43MRVIO_Zw$Wb2iguszx&Bc&7!g)g{ymjw zE1CmNuoONR9zKw0J4gX31&}*~(t<>V+R?uppE|+G694KaB76HsynsWy`-SvYkj2c# zLU8J$u}I+llypt$!8IWV`V8*_ zmuKG!$Fl2OA9)*{LH(Se?D_ZiS9 zS5n9Wu#;zWOu)P^7ww*e97dQgtDA~JFzOc?-+5<&)__9syEr2OdZ9R)^)Ln1$y9)5 zx|L(huI+*D9WjS3v4Pj_e&c2WveF-MCI_jyem)aT#=OGc3najal>Vu()9h8buRZ1- z*++K_y#i3nwPVwaKc1xxoT(LpE|LN#v>+FGE&=fHKa@A8Nmrq?!T1J_JQ{rYZ_F2y z(e*EK&xXZ}jiOANl9?Qh&W$N}>!n_O;8H2An=h8b*D^}g!^@pC`9aH)McN0|)8BHY zZXL1WI%xtjS~xzdV3Wg=MXC;_2}pG7MnCOzErRF!3_lGav?{IhSa0g_=3KJT8|;kJ z6@&_w@ao;swMw#k&8q6)JuoK1dK6g zh!2}~*R12G6L#i&nmboDb$=fVWR19bc>KObCinOg)_YT(T?z+HHTeQE_}@H9mKL0s zwf>eGdb9mR+kyI+oc98TZ3iXJyNqArQG!oU5G2wJQ5)MhQ{B%9PrCfcxc~N}^~W>* zqZ4k(W@M<2wm5#6n=S6(SAeorw@VKPSiQrOnB!Z5e^F1aW00LgkXWaS0fq@8Kit{; z-o=(=2N}*g&O=(Z=SzhH1JmHAmzo(1&E+jtWsepu>b2D!_u8K>2#N1qM8s1LJbUSA zQQdBrLcfg@3#8B{_msGtjV+=R;J9qec7$XKoSYKa5Y&MrSk<@+=w@Z-J zLAmg9k16UD1=2*>wn(t+z0_JSG6aBejVdb&kVu>+G_KEU)PTV>y#$1W{w4c(Pi9giGs!(=o z{oSBF(7JsybL$l;d~MoEiTJ)cs!PW!E0>B2*_?5M(K?(=-jaWwU+ZTsl3@WkR{E*t z0xmsr>k4_xkQs%`3jF^qSVA8C=oMoTQ=D=gde$J-w04W7OrKW?H*4hg{pV@3Me zk9RtvTWDJekWhqGs5Z}^TblEF^K*~yJbBj=&{tmVAds;Q%=kv=cJ4uyCc*0L&0@&B zzcYrYrn6D9PpPq%?hiUEne@qF8A$HeT&Hh*s@dF3fI!1dREg~VM~&f z$=$qHtWOG})!e4){H7b%k{n5JR*4hk@51f}P$lrX)$K+4+T667$@Av*J7ddo=2nzz z=3y@A@?+ocvAGwCHr{>ouEs9PLg@M;N8Phj^hb52VD`C!4$Zi37~A^Pg&-62wlq;6ie->UO(bWYw5|M%KX zL%b(M+2<}JH!=Kt65)pEWLY)itMBTN0c{q>B&BuNiJKcdLAXy9Ar^jl8Wn})_z8c* znMUSJj&(8#+ETjM2ci53gzrv!gXfsBPKzeZC^8N(+;XUGwc&d-DVq?-sLSg!)3iVc zom@*F!+v%Cc-9B+MlZe#k0c2{V6oCCb0;C0q%- z&T_w51%`z$uX5$?AA$J(5wuSKJ@Vm{hiW~yLrhsaoI{+JNzzxyf8DT@`U=bRQ(E`w>wC1o87l5Q1XfOM(wL-aq1W|PTWR^Cnz2rNuw#28 zUI+?&WN+dDVwr67GlaWM@=J9#ZgO))OH9q;bHOtF^~4ASL=U5%iNtV4F2n1M==n6Z zKDkZr-ah(^9N~a_-MW15{5NwcPj*KTFD+!XUhF9HiO)*Gp%%VKgxY4))Mzj$&SH}zLB|DXE07L#waPwzhsC8#9-=vZP}Um4qF z3L{1ohHu4Yy*NdlMcW9g`%e!{v z5DMRquij#OlRi0oXfLJX@?*_ZB)sl)7k$p9n36#_>s${RQjr?b8det+H4I32#QUp? z(^HgW`QV8nZVM%*ZqfsSV!oQU0H zF7pS^Y&=6AeWTu=(B$lKyg=A-^=$tB3+O@Gj4m|hs#SU_TP$*b4_(&fJL1(+dPLcY z$0?dwoqW^XH0_4xvKynrkmi-r+8iRF9b(f}GYEO_t?!ieax%ID``M?1k| zJ4`2(OjCC#f98nS#vGQ(hMVFc8~o*&)k*Vq_zvH9v2Fp>&eUg1(MF|hSuo-nlCi3S zI78=pF(E8OA&0NFBg58zVsERcl7%& zdG2J;^<0+X7NcEX+(t19kU@v5dgPcn4W z-HC5fjcl52lk1q~NL}{F(-A_vZf(tQ$)$=fn9QU+5st~SSNs{0DCw7#*ofHIN3_S{ zRyzFe&PAi2MJ66(Pt)0(um~>;8#sfJr)u_tD1aDn=fLMoY5k<=^_MFoR-&cq&$Q0_ z_7rLH4p{n-vOXU6qLTKzEx(i0ZS3Dh(ZEY5iVX*?mL97{b3Y6R?_ZDEp&G@{dr2r7 z)s~SKj_f~J5!^ORS3wXh5Cmj1YP#v_NrSu7M~6dN%Z`1&GZsYLX3_N*o${lj*W^4( zwJ9>4u1rTM9;+p-6bZ^x@I#m&bm0=GS>>gZ67(a_&xaRmriEpq=WlkuRX{Zi=&lEZcsl9?}IxZlWwWch(b&p%9y^bLv8Pkj5sL$S4Pbn>9 zuvjv|wuJ^mG&EDMgf#!?B=ph=k;7&kUn5T>O$X`d0rIzfW%t?&Q%j&hP$B9P-Us)` z;>%LYZ3vTf4OT7dKpf3vN1;FV58YD;TFsfPr1kcCP}Hmm9~0OV!*cn$YC#>k??+d-wC5w z@+*?I%4B3!Qjja!d&}s(8oAtKi(;{Ij^-|w1QCa6A%ds`^)GAcxkSA($1MAmNev=;^f`yE=iZ{kVU5|5ar(+^sGwtoo2mTO_Lon9X zY<0*9wRGQGa!ZQPw@~~C(02-BFD?+ z$8)3pNuxA(;k_i++F!*kx$#Kt&0h`u0g8!m-5uI&TEW`2oM#yn`g=mLmT(AYr4SD( zEfLW9QGuS{CPRliqC>1w2NQ__`jh8 z%_q7<4i#IxU8aK15875N65DBZ#=;NJ>(R3JkLrHdDF#YL>BNc~${SdIJ9K2I@i#kD zW|(E7jE>)qt;*z$gMHumJcZ0qkzUG3mRf_2EWk!?EW8r>eMP$KVyJknoXHFE)hh>1 z_^x&=+@?Ixe;=@`kj$aZ@3njLcl1JRSDP+`x?9@cd|mc%_(mj_+KD1}21KjbQT&D` z7l|2Ix||ak^>aIfGPF+aBc-d@M{|uTDIo>?aU3%*-r7#yu}#!&lNWE4qB;Mo=6>Gk zsnDHb+N1rcNxIlf3v#xA3FtgUY{i)7R?~kVK&3$tvOie3Kr4b zR#?qyJh6e=4JCy?>=!w|;x+swWi&*L-04Pp7*1fXq!WzsXDPpSE@AF3-ea^U+*xej z`{LXgaeV(SZNPoA>31SC6=<}3+XvD^GO1&vEwawbWH-;>VN%1ym-AovdDLDXZaNxr zj3)CTht$pk|6}GvIr|6V2gmO*2-GpGn2II&yG0AVJLWwSM(c%9=wNLxdvY1a#pPho zP135WiJN;pat{W#w~LkIeu6I{7RD(hI#2qhw<-bp%x{-kQ~X$r#^>%O!?nTB?rMD|p<$Hi^&rspth7N}GHv*t4YHm(SMjSj{-Dt07XPHW zljq)Kiv)+^ra>2r>tQ2)rBw-jm0g9DII8`zW*_{7;~{DW!`duGn07auo(*B_V5xo6 z)8Vvk#$F?X9C+%=k0`yDdq}Diis=2qa@C@F<5ew+j;K#mvJ`O=U3M~83Dfp(S1nPT zKhNDLjJeRj!2d_pyT>!#{_*1>_h{u< z4mr%}PDQ4p#TatxTiF2E5iCr>J7JHw(^c5bqGH)=snamXSoUfs6S`yI%-#@{TXHx8QswmH3 zQ)06v;MNOXe8`edhm3DWSw&Vr2}8cf{2j$e7XMj%xzATTDF+B&0K=pPK)84UJI>Yc5EI;gKjlVACDJA(MjMYtH-&aRWWT1i>b=!-J|Dtl&N+|Ul`};HKvG8?(Y)~2l z?yu=DhBLBZq``#Pd-<^z@RzS4r}&%S&)>PTZ4`3tNF-jIZ zD%FaWUqbX86R9-tJ(0?8@fpiZ^MEtA*al{MT8+7#Q>7fSPPzrH7p9t@6*A!LVd8%-v@QISu zF!?GB#jiHr{=q1Z!Zc03~fdY z`lxertmWCMsT5{_zEz>5+EGkz!dLk*$)V+_rq(Oyy()EW7e5B4=cCpY(_>|+o6vuH zqu!59l{nBy&W!`u_NzlDa?5W2s{MS*`Zzv-JR&0U&GK}R_Ocr!9}C)`X?r_-tEwKi z81|>zKVIFGXX-Mgi^x=o?^Br=|w;UnNH~S z`8XeQiR}4|x0pd*s1u2tjHo}{K9Oj{=^$~v=y~;+9O+W^N)ydGo!!CcNa4 zXP{|U#FZ}Rinpk3osg?ni7GJn{8Q^YmZklyO=}B&asbYeRQnafchg_>)lz&y>PY*N zXVio7p(jJjdD{DyjW6KEyBF5iB4&&j_gvFrchq1;Vq26q?l|?RllFN#4KRDxd1qA$ zLARcKba(6)?zeP`t>Q;lqTFd%8nx=)wBcRiFhlN$_Elq-XC7PG=g6v>h?XEdiM3n5tkUa?$H(}eUlug9?bZt*i-2U~P{dq@Nu3t`PHt4)p;X#g zUVWp_;H`I~jpMC$(Qm%3<#KBpp2gjQ=*CqNjMii81Yz42;H!wSs%cYeE&Bjs@+@Qb z1r3vL;iS{pcUC$h-Q?VI_vdk9#Xnyo2~Qhi3IOALYG?|i?G148px>*Od=KA=^|pKhWKFG4{`?uU^Xvspu>*(N6(=7V7kEaswThv}hMs6MTgp!?8)MZp zMN=WrEX_Mb+nZ==!=XEEn1b{CX4NLjgwQC-hY#0-AmrbItnn{aKyU13>|UKhFYCFL)zh}&{h0z*2V9x`w8ume z2GGLRJJTNct7U!CV(WGt&{wR&p!I*#1uH#W1si*zja8}F=Ogy)OA9JNCMGS6pfF}o z4<8|q`bheo1#h{b^hrKFggv(h)q#0r9t03tXRbeUVf_ga6d@{l^ntd8O_fHV8*e;+ z8nD=T>?tLNpIBWlb*>7tq8-@0`F7uv`(9!0g9zqBJ}5zPGx~Y{&*;Fo+(xU>4@T@* zjd$z{1l>NE!V0IZVt=;p>+GA2E?vAgm=QQ}aB)6Pu3b1WZ&UeTi>Qv4)`>*cGdmZP ztdTgs@eDWoMfyJ&XzIOYn)j_G>?rtJ&J*FT6ODY9!tI6YE?J<&w z*Zvfh=o+( z{zt4RR1-#eHnVfHH4?O1g_*1WY;ahGprtx-M8)%4ump9)q3&JWnyEgKOjkgIr1VWo z@SKoU4X(4?+yYsI@ru(hqsM;`)w!l^+wKIA%K3;@Cz780oht9Fd+g%|dw1{o3Ne-$ z`CzmF`cn`(G&nHHpRwVE15`28UxC}2(?bw2V8m3OBU_HN0_9O>813-%;px#!qXb5Pn=G@!opZ{w%8Hh5L|G!kZ^8k_zh+k`aPr=8rC?l5C zN%2e70GDJ6nav}9)95sPdxbLG`Rye#;$1j}dU`9jEFmx$6zcW-`DAWIw~5}mL?*p7 zg+(J1gFi(G5jvTi-VB0Q4r%zZMPJ5sY~|CXB91Az202XlY&u-kHSW4a?|}lpoGf*` z?Cp9N`a16t@S{dHp{nMf(-AfhJZ5xaBD0A(-JWFGT5grno2123&DXkMCSS+Ewh*sT z$Ruj1hTJb3165RzDZ813tf1N#5QP%#!H?6|=&h!775rY<@UM2y$Y?>4@}}msxJ6M4 z>@x*6?0=ry`QBGm4`({9s%F63%r45`NZ{CN<A}dk=MH+wBJgzP;iLGh8i7|Q9>yz^?f2lfnoTwJ%MOZ zpRgk*4m0Z^Xp_U;OuNiJ`-r_CuV+?1)h_0k7I?Q59CoY~N?VtZkO@EfDF}bGI9Xll z#?|1P<#Fy8LeOSw0 ztkWO6kJPDj2C*R@vEZ%R=uc-ZG0y*`iQWGg1EDSn7$WzxTCxI`@kbK!XSY0L7mJAp`wk zy7mMiT4mKdtmB3UN5b5#vfCr{lcDI8%~$(iErX;O({Q?!O349}L~>fpj$gyiW^^+u zUPrx1D*Hk8Aci&_LB3roN`_^y{q$=TZ@r0Qf(hkHM~xz_VlLGGG&zvgCMOvZt{hbw zTOR?Kh^7_8w7%M=GkR%306?({^Ok3rLH*~$f9WD{3Y9+3B_LkmCPCAEq7cxs^|mDG z3&9-=N#Bq6AEKVL;C_g^;f*T6oaz2RKlhjBob2Coy_=?suIWyr8oqZkK2E_Bv!v;d z-E>5*OZ!b^RkM-z6n=m(d0^v`;xMO8+&9ZirqWJPyvDs!edsB_raf+!>xA!qEBcb-JOokY1TB0pm9HyzR}wq;cy{T$kpvEF zx=*nm>0IIM*eb3z6(^^oY8SHccYzA>75bcUT7VJv(nG;>QU@PnR3#q``SN|2;rmDM zY_AD~W9WXP&1ClkByd^=fHQLNo$Ne8NU&=Jh%Ed&g3_oh-N`e2>xOfC86D0C`b4GH zADh$5JY-fgsw%dp0xMxN^hxBhf>r9mPj4z6R6#AB)*cybF_63F zw-=h)xrx{-udK~4zUxrC!QLZ?kw=q7I7U2bye%Vr{hzy5pLKg@k}S4t9i`+SGd@JA zKoi@9659p{f@fDF9brENV$Cbhcs{~R|1><1*Tx6eWb@aY@NjLa*)+cTe!Fy6MxLNv ziVi*##XI@bOj=W5go`1KPp=4v*t*ge)OnqgFkRW0{GHI|3OSC#$a2#*8t`S;k*_YSX^NjH^2wC9#yl<<%dQ@8EwHaDDRo7%N8Fts@n8O?k-KZ zroWb78mr*qMy8$+YYwG_Yo&2D*FF2f-^aUw;9M`E_IRW72B`4iLYb3oNn%1qJtIS0 zm2altxDob>9|ZO95y!*SFAh@)qu191F0O;yDo&(7Is3e|_3pX8go9&BL=_$x!j zuWq->7G76!Z#KB@mkjdEerd3s?%omF&|TN~%Igk5l%9{%xJ6(3E+TTn_hXTh zyDxnZ0~m23{dEYx`6tMt?55&OdUj2*4M8Vx`?oLNI8}FxUAs|x#0l~S{|i&DA(1f* zAS5$7Bf7PDA0v8wO8gyfJv6_w% zS>~W+n?<`Q)RkF^(inTlLT@rgd1m7FXOW{+!q*(Le&HZ?dOQI!=)C#|X)O?b_VDq=Y z=QOL3O)@SeE_y|@TRW+H^XfLs*H-AnYM^Z0*7?vhW;CdO_7BWhWva9MJ4C~TO*~t1 zd&5q-6TgC*^5^o7?NZ#$9&}@;|r`Wvj zh{;>A;$%HrsO1K8IEVyVmmV2MdL==l}X^S9&LsmcFC-S+_S1ns!QEEpexr8{NtE;a2fG zsCfh^O0UM-wJAg6H05jmmVf%%K+|I0pr-Vqkl2242vO#VjAa7OHFGjHLE6^2;L&S^ z?JMbm%K6e4K4aG|^%N9AKdqO8yxM2=y5XeH+{XLy)mlI2tPJ*;pF)j@BZMr96v4`8 z-jk328FT+PvHU`foE)Qch}tU4iv?YdEqm8OEsY)to;{;(aN*5? zmP4@?y(U-G$$*%zXGDF3YRNQMOhFQ&yJI!wdmHa9B(};9UX2(xp7?A+ePLZ(-!ryX zQ@qeZPmK4w{W_1l^-}YL5EfYs_Ue7`__~(w!Nc>mIgh@)a9U&z`R1{t&dEy@+cnzO z??t)U=HMc#`FVx85J99@DGnR65{;s^Mz(60ZRG}yM9P-}7&({q?Bl4f(Ip_zre%5A z=k#0cB`6dS|3tk2QU>!V5ZP~imRhKQro82r<#O)&tX+F<_wy`V@a#;(4}b)PN{fs2 zZ(i1`-zTmp4#XdzFnKt;kLh<28?YfE5v6J!Ys%x7k60Y05@OHH?iKkOIDW)pzh3XB z11>2zfP=_P+2)b4+D2FEHg>~3>y>=>T=l!u$Fyq<9_62Z!n8Y}DH?NeCblTSTW{tn z3J3xUh#e#x_JIw4sHy>wdX=`EKBTTCT5on=)d%1DMtBx4^uu{8GZ?uTU6LZu>yLcv zzcn9cj;K`N-VR-8d$&=|{DJJB?M?%ix(HzVi0mnGFI1~*T=n!&P$i^-3L+l2M^Vl4 zG%rGYW>-;K3Y5|35_cZ$v;9#WUYXWL+o~Sq1~%?gRNhG5JU=pQf5{zxmR`Xu=lFQs zLH~3s1`|2N(*ndd{fPR7;7fA|MBWS?{}*I9^`*{9lxt9 zsvuWVF2-y`kz?2=d;@eVkr%R3s?iowpG4sk*Nvp!G|kobiGrGONdMjhtJbw|tv&&A zbuup6s~bT#OlcRHhLm^5_F}HlZN`R}*{><(vokEI=Y5Qcz)4*{g>{2WZ+VCL4QYkK ze#@-hmP}p6S`p`MVYTJvP(;|FKI*M3ri#`dWlAWM$X#2chh)>k#J85}rd-f^^rj+x z9B9=38Ym7|P;`Rqlfh*7k=4vW2oMho>I*;0-hei}puaJq zprwcey0)7K7Mzk}&PpXZ9K3h_;56GWT+;?7rM4&gVDV%;uFv4%@pMOlC)RQvSiU>q zi~+>@H<=@kik(i+CXCMs2Kj0yk9r=4zr0NL8!oaTZG04ch1c|@>m=HOHXgMKfGI^8q@x?>mT{mplSb#Dc#P#ns%Z;Mi|^`0^5o#l03gI-(e!} zKD|drYw5-(Xd~J0283ZQ&$%XZ#Nk%ZsyS$6s|;V%MTjA(VJPU^SL?Qm)ch`nts>LOcv1Y^ts-$-?k>vSJv0tryaSe`tWMF ztb@z=a4_zX2MhHsLMS1C0^v+|;G{X%z*00>C_j7$Uz8P%IXj3wfbd!cy{nunnB^;$ z`|V^s@47_p)OTqsbiI_e{<5S;rFC(#`C+A_)qc0nO+6Gm>u;5nS#&W*SKKLzW9kWk zM`@}>)H}2g9@HxBBBW7Z8+WUpf08@T8F#1++WuE~<#Obufb5F(4%qN%OF**Pj2;@q zA}~BOi}!9pJ~$2XfdbwU(*7#i)A5I{`Buloh~=ocd}vHa{lP94j=6KzJB*Bl2|Q^8 zr4NsOK;XneAGB7hfC@sdtL5p*n3EnQb$9eHa63=>t{;~l)uO>rK<#$^ub?s?8m)3D z@RE`EY9yeCwV9GSg0ITr!xa}~)qPH7g;Kt78>LP>UQ4lyw_^q#>EbUK-<2dLV~V}# zXV(}X)9|iNDA`$<0JKgm643K6_x@Xx<7jne9-N~pb%PY+7oPl2hZ&;Hclc8&H7!ZL zl{<2Sun+2GJTRe5nlVO0UF*zp`p044=6`hFw)wi>{bexH`M{UL^i1iV21*hg$D_+@ zRo;!A`CBKtHXZmS(A{oM-MMQRZ@uZgRjGY{TJA!`0H6m`bWj6G_ph|#MU*Vzr*EY| zLK1?tyNal3u>4&VU<5w7y^67Bwx!!Wu%b0n_raR?h<5uQSTD+c%I9F8BfbX2hmrdR zUPFE;xLQ$|FBB{|@op4>t^?YgtlS}WRjp~BJRk*aahSQ55v7{aJ`q*Yl7BE2t^%5| z^M7@&4r3J+g_Do*J;cc-z?DE@&AnN0OzWzPdt|Rzqz$FETG9-6X4Q|!Fb zXQiVT0$;b}&TaM7#D6zfE_L-ls~fX|Rkp!ZJjKa>3q<;PdW8o23WJT{QshkV#;mKF zIOOAa$@DHXZJqz2%ItU*I_BJAO)!h`6=e(vt4OQ+9w8=LUL0-t8~X6wvEKcMEN<|3 zngm{SkMbQ`GUkVx)cQqm-yl|vgT3*skw0KQl}oL1cj$6=$mjAd~mxjf@3YOz& z8soHW7#$rPFkvGfr0wO);c@{Qkw?o7n(5sz#SAqUh2JV{P@(r3 z=%8se{@Yq>D7ruWnnB^y>NUE0B4ObRVF?5fkYxCuOYw=(pf(NeTc8VB97R*s=W5dR zX(*;S*NpWB1#bDkF$kvY@pC9QfR&v8>r_4Y7p7QJLnJ6u7f2)wnbkageI7{Ryr zYRYDwO|zR&HRikYm2;$VR}%XkC^O-P#-0V(i`Z78yMVYFK+dK4gj>{lqST-dJF)kR zMFDf}8W~ciblY39#Pi0Gr@gX-B)ZD#({;4ciLNjRe5Kb|A}CF8$NF%2pfW1S7A3FN z?Pt3Aoc%QpszbVKahljwNV~C>LQ!73`o!8wr818w^nU9JnyNwyVqXTaa_>nIl7-&F z(w|l|dmJ`nOYh9Dzb)^W&KjDMmGI5FRgY1Oo5jr4>v(5u1RLDW;(f>RG{Y;-qljLC z<#a0>&T|y4kTU(kIPF9^uWokA=Fq-XkftOrxAWXE24B*qMqRA z5ve-T^BY}YewvP+&(Cglet1l!J>Feii@BDfI)M$9_rtyHwmP-gDmw3P_eb(#SH!)A z)FZv?o~FZC&hLUIu!{ps>$-a>ao+OscT!Yw@S?`otMzg3yy+Cs%R(H~nSm>TNUTCd zSLvEYkQmDGDARjW3R@{!A*;u6T+ldVuLla22%)%_KWFs)jv4`escxSVBevjoM!J~N z<*D8Z9RLkJo-Fdlv!|;R@bOXyuRgbHt1jMo;CH)mp@FeFZ)v7(L?I*w#ngU5`Qb83 zxEh8bRI8Ui8{qVJkHl1@^SyJ1P4By1%8HkyB-)^!WN%daEAFlA>NdkAq360=P1+Pf^V;GeOn7r z+B-Lzx=yB7tbggo9Ph(T`m4^KT*HjvKQ%=Tq=e~*>pOMd4{X5E)=tva0C>z37c|}^ z%Yxt-o?G(UKbukC8H)GilR%%^4?TbJJpt!()uk z_a_OSy-pPS)oR;q&lN_Wd0qfl1N{lI$Jmx4cy9XmkB|CE75JPz(JyrFywp|X9=xRf z|7ld-y`zQJlNlwmQ#CZXvaTfNjmS>z$aBHXWVY$yst@~4F0S{BbpJ=5c+}&ZvNO0d zrn8cM)_b!c{LFpKn`B@H7myI%4&fA zqH#?{1_r`s{YOYODa%UfW?ydsAm-ZnJ`uG1Fyuxf1gM=eHY8ck^y?jTHn_XV|+=a zcs8fR?&L^HWKEHez>Vz%FOuwMXLherO8kHFZT?OM5N9C_R0ST$woTp8?!?U@qj{s? z*V#cJ#!J3|uj_Jj>$;9iG7w8Ul|`xKdsS4_vA5f~9R~3u_S6O2a*6=x!PQ!bRoo|& z@yt4@LjHn~2Jftq<36t6a%0biiGwSTkS5SnO~hepYOJ9Y|J}1#52J4r2Lg1J0UBuL z&QJc!3~uZdC)beXKwG(`U;^!{{7{;?adKi)M(%(&y8XS*+}o|=_G%MM)6oKdHw==9utl-WwccQi>-$@^C7lSEMVwP3fgo3Ybb> z8m~`HBdOL{I;xYcG(ATch=}L$3`N{uCWfu#zy6%o1;@1)0WfneP$_9Z{}J1ZQ50_n zq5@Z&*JweDO28HTj5%k8uj|9i);1Y!xsQIAUc>Z*3E$~TVANq_j62^Y*$hp?w>xg1 z=T|E+hdxX_mhRTlxfls4lJr~u*BbqNQVDM7moF{j%@uhSJs{{kZJ1iflOByuG%;3( z+g5w`xR9VhH7bC@c`$Oj)B-;=1yCwc3CIn|A1G=6A6BsA5Y%HU%KB3Tb5eJx6I(=m ze^0-=qZD-EC_ic~Q*}bautD(&;7F_5QBuF~cThg)W0Px~=EXH|g9~9122DDJ6j^cV z9>CV9bnjUJ*Ph7?Gkp2Pcb21bfvW-rwz*Ey!lKOizph9r-E4=`1mWB6*P$vh{It~) z`eezF_}isIa`IYBcFAn62BP+W#q_4{t~3K2>pcmU`_N|-H7%uiwal)q!aOkY`PVtN z!*hVG=ytY>Oo=x_48)H`q9yXBRTs?Q)&n7q1tM=_SHG0b4(sHwDg^+2MXi;y=-NKb zq}*4n_6?)d=Ha!yU>oIfM=q3Wx3|a>1U|Gy-WmJ5wDnNC&)96e%F|M}?lc++12R0Y z?7&8N~JilLwen$rg*s0A?Fx#p`^Xyk6Zw*dg2iEajeBj zfvyiDfjvAM%wq_N;mp@CgH*D(kq5Q1R^MDYq6&96gZmBWj)R+8`B7kYX83+lNEK`W z#BB^w&Xw%bUh8A)Yv+v@2WFsw>r$u;A~W+feogN}=2ZP@-Cqo8Z|HTrGUpVzf}={AwwEQuZ1)KxQg^*FWnwz8x`%2TdSOT*`#M zpu;EfVeFxsVRd~3TJvg|i~bn&A=dAf=(W`kJVz5vI73YFmx(mT;>Smqi^(+Yo)R@CEH@0`w-CL;p;7Kv1gHx<0uJQ|~UN3sfIRA^U@;BF5 z;DHuX3ETif{+}1^JEB=$R*+mOwZDHiLiBn`G!AWXqopZY+Q-q#@6knfarxWwtjHqx z?xmCI((Q8}_W)@}LzSfyL~;PoCC3JcPNhZLUr0Da2Znb_dHEKUlDwj-YWpBi@q{wn z?#?OFLsSfRtgg927#~uk#2&BZjtj@XyVO1$Y_jzwwQ=8j!gZ>G&R72;m=H2 zwgKBa!O`XI*o38nx>hU{M~Oc_gj+{1TQh||6w$CSj<+k{m6p?R^>@aycmLMP$A)db zSD+%h^!ks}LepjVRm8{HK+VX@&yqwsZ?P0!?v9%ZocV-r%rSebR~XZbX56 zY2&I7Db83@;G8bPPa%0c;v1{8f~~Bm=KTI!s6O}qnFTNcaC(r2Ky_i|PT0JPq#I5* zcch{|l+!D==)_weHWq^Ia?i9L*TdxtTF-F3PVwzsdp&R!=vr#p0Dhvg> zC;yQ+qVzoQ8Y64gs4-Bo`sdmNY%O@OjCPt;X?f|bJ5-AODg&C9n4Kzymr|{ZHB5}l z_U<~N;`&g~98gOb_#3&wIGS5C8@sMPng<~n0K^Z-BsM}?fFHsCgfh%?_M_X`AA&YV zLwZ#$xkD+=nWR-7o^gjH(nX$n*@&X{hF{R5*2@ibEz&n%HK|N{sh6fZarZ+Y2_OLB z(rU_!xQ7by3oh>Vjcv_Fyd{FE`Dl9KJAc7IT<$N$bSCgPsJ79ywO*#AKKd>gV=dW; zy7Qacy!K-8JS9Ww)?F8QncA%ppl|rHNNgWme$M}#J@yLYh0^pLhhrQ+HCYOtttARW zHk_6W;&&7enBRqTi%p4R{HRkvRhZsHQc6G#vn(QjWhhqlX4c!XIS2G^-O<(htyne1 z8n#kb%{$eJnsB~{mPH^)0&&}p3Tc_m^D0pi&P|gpJSNOzrNzI*`wzNb_AR`rZP9Vf zwGT)Zy3WwuHvR);(Ds=T5j*8W_49D-kqTz!D-@frf_iJKh)8A?6C_vLgCl`&m^M-9 z#w?{a-eVIM06!1P3#=k7c;Ot=fr2M*Bexv116nWf2Y(#ad^%qr2$P(M5{hrSW>uw755E=>faL=Su<6dT@W%KRMn$*& zq)?h6+5I2Pbh4E8W5)8GDCzBqyU=$eymA60^s_)F#OJ<>xgPuIZ>zMvhMZOQuU3T# z$zTj0oJ*cJr!W0&gLZh#%zMcK@N|e#<3Kr&;m}3Qg*QF$2_gbX&B$woiNuxsB6`2* zU`@O^BVB*KofQsM4daG!4bVA@q-acFTFSHexMG^KO>*3{Q`u{vaf!P4$Pqf0A0 zei|um^jji97#Sm43-d`x0+htc8eQ=2%W7=RV{^<<%EZB!*5$pkZQMZc#V}_#uUedNw0J@N=iYC4m4qcLTDRT_+h|wmkBx@QKgOynQ9@M_DSD& zM*gQAfa0piJfRE^yFZgG&}+61Bvy-`Wj$^ef^uooD-P@fxg$HkO}0`yFxwGha9a#L zZp&!X1;{vo?%h(p2&~=T0y)wl&U3-Jivqml#nKVE(6Cj=J+!E2*`rvXk8ByJDdIk% z3q^aKyw4OHPWXU#aNpkHPI>-V5@0rnnjX)&#qV5;bul|58x4EcJ#?PrxXemfVm75m z$hjOhH8=chtr5C?URk0ATrzi;eN$~()9$UC}Lb%rtUeG9m?*Iqg!NHDvzApzdem|yKspWY{y$_O= z>*?D2JJ!_6s5cXSGEmS0+|)22eo)yVgqCRs=Ol z&wMm?*Kgte;24W4=lRuCXU#I;SZfdujubep6$UMWvpXxKou^YK=89Gq{qDMqo70s~l_i=1f-LCSwuR?yp|kHKh83+*FEuD_Lj}_MkFpx~~-J<-rMWuu6wG-A_dX zm62}rQ9s;I>eV#}vL0OJ@q3!c`M;6h!jzR-M0}0Lx9yy16|899p}HKuclc!2<`VzQ z47ABEa!i2uVK8+hBTdufF!iaR)?I$-+1u#g5KW8e=2sm8cJwnfmU}1Ln7jU65&V0q z7n(Jqni_t-2rA@9JuTG{mK~l=!~Xc+bAQnlF)>arr&_)qA2(V?ZEVUOL2a@F_7O0wF=HeTYn4V^#= z0)Bqcb%r1baC~P7D0HzvYuHDsufn&FcPIV(MSwq#ed4#GbZAVg`PTRdjhwdT-&IYl z_!(&KR}dH%zI%R49Rz8Y0BocU_~Xg(eca_|)Y3Dsn)Fk%+V;FpHOC-6Hk!nrG{EE-hTkGw;9Y6j4m6Qm0j z;Evm*?I(-)34F6>eRJuM4%s)9Js7m~r4-W|y$%vLIvs18l2r39TC!AL4>YlB(!%+9N-e zuWw&QIhJ>g&M(?>d=Rvi653)b*d&`T@@>$%oy&1e@d)5}MoYd4bmT;@fk{@q&h(#! z;)lT^ebZ>}RW*9Jb^BDzSugV<_ez)IWV}?VCImISWv!Zqe^7H8^ zqSNeXFJ^SB$vaY#ze}5~D{5auG>a^^lseK&aMOEv@cfwEoz<;-|2MOJN4{ex>ItR$ zZ_u@@xo}m5Ec-zzKHHh%{&FtrN{ExikC9S6a)TV!!ZXJ=i&}(SLal(p#gfxRU z_Tjc~Jq*U%H+yFxA-%weey_1HM34Zw5`WRM$-0Y3tN1jy9_e`!&~3bgm2I`}H`& zBKWXN8SpIRAIo_ecq8&D&D}h3nGHP~4(mZq?yG{WRxb@CBvCc3U#;5FBBT%TY^Et$ z(w9FjA)Qy{KECFDag=`fxFYR=ev78oGVte%&u@qg{&}sQ{S02s#^a>_uh%-eAA%+9 zsGz|<;yGU(6j8x%U#h9^v>X(wdOl2Q4~+08h@=E*pxK* zr2~3Qra|d-<73JDX30`Ts-f?cUeF(XcLpFf0&tAr`DRuix3Ae0go)=tMS)|!R}{X2j)J;ete_Pu#w*q z0*D_EIs4Ofsw9t?2eChGwwfX;8{XL}DwLLjE}glipF{0_Z$zX0ra2Rz@roT<)0zx^C(Cp23pm^?KFIlZNAZNT6N-}zx;=1)IYhuc8+zc^n>K0=AZizq?&EYYP9|x7 z;))xeEw)rH$!-@xsdt+bnf?o#^%z-;d`O^2MEFKiFJg1(iIRI(jZ~j7bj*|QQVH?U zypp60CQFmlOIeF`q&}uWPjBtMo$+xP|0VXd_u%6_qG_?-K+xSviidsKyz1Des7E)d z;+5sB<5g&m+~?Eiw5>;O-P!=F0KIs%Qf}&*|E)kI&#Ud$#`jZIX%*-v_f{$37XH)P zRl5{S{3!}~>!bjA>0J7KYf|W0V_AIFQuQl1tx3^@uLH)Zz z!qIr;Lm`v%(FTbhNDSFh$tBOcmYu*V35tsR*mJfGL#F(yY{DjV^s3U1{Ma3v0BKuw znp3Q8ejA{Nv!_sRG15_QMfC|qPC@cK5gz+7V2U?XLkC0}Rk)GsJjkXL5g10aNPqanOZAcGqgagqcfb>URH^K**zeXn*G~x4D7%BgY6zRja*@_j$Tcp1M z&zch&W7}@p{$yk#WWp9U2xiM}6>2ptgxtie8?mE#fxgWHp3`tpuA?^RGu!t8uqSgz z(8sJvNz5{5#k_Ex1*Jh@9JGSl@_w@xUz|nd`IE+=-d%}%h#9DzNi&F?twl zesk;st(E`e;HSv>AFI+2u}!S-B?*8NyJRB<5`-{IM;)|U`-Kll=5+XSR_jm0xy(Fx z*3z}X@vs{dnRi--Vuc+^y1+b8 z+i!4y>$ptW*t_)YQ*q)*T;d-4_Mg`e&}zvhV=b!CbDh}RK$RcC^keB_H7)jYcKnRY zam{w=PuPW7x}JG4UGhbceKdZBK~C`@DC_^h{HJKfu@dGPa~#)!}} zZ`I>8doGw%#9=28(zY0YiMO3{sMZTm;ZsfDP2sI=5R2Ow;Krq%Xm(!~nzcTKOpI}yWoy)rM z6HGw?JW?`gOJF^JMv%{jwy2_5pinP349Sukru0!=cp)mnPSBzx*zozzZ@*tC2{)(b z?RvDN>T>Mb^Gj{L6;QiPPWRt^Po2~D?)jn1XYH)MIi3JI;I*j>$%bs6rufxrrHR5E z6d*9Lo$Xp#J&NvAChtcWa=yM|2vk>h$sV=A_H}m8p7DV&Z#^C>QPxkw0F_6)t=fcV zu7!fme@SI|jgR_v0uTI1-z@1rrR4j)eh=_1I*CibHZtD%(!(}6(WrzI-`VZo2Js7w zJQe^uz;IB#RSm+3DT_=$sVH(!e#XllFyz2w*m=@`>Ne`Z^_}Qudj+68a3i;~mNiqc z*3|!6D`2*$fVYr`_jZscu61mwweuLEt|KOixb2g<>A0i6meq&Fq#}g~lT!PydfMfb zN{wWl2R-F@P(z_K=rACwMg)a7@Ew7904ZuylDvE1ieG;0*(%b%Z=&a7W$GAgiVy6G zv{d{t_gwX)(OM#f&xacpjuX`h%MzWaq(9|-JBHi+k$qm#UVRxeFn>DBV z+oGJlB2L;*DJA{)(k{i5;5O4IjcrWz5#!v4yV6x6F9EsgPpMOnXRBhh?iz#k5*7^h z!z2B(AL3li^3R)^t`q=xzOS#vX%y#cxAUp23Z@-OKKYbgKX9c@UTQxHvayR* zpje9kyKZ$caQDu#C$0eFmlhO$8jP+%r>z65?ONHri)GWbL-(ELxcGOpU={_nu{yBY z8t+C(3$)nm{PWtybYl%Y=V@7Ve^cDT8SRnw&kO5udB0V^iSnqBhNZTlf8#Dh#55*_ zDGM7(Y^IB~M5#g(Ia>@iI3fX}>eE~ldB_HSt~ z=O0F?K=Z)U?5fY$!aZ-}JKMFCOu4T1ebizY2_xP;-Cv5FukN?Rg8?i+wX^E`*eZ~0 zyIRqY+^A=1yy-kOcGIXu$eezF~5 zgWM{&*j~w(ufw=1cYIrHJP(71;?eA|e+`^j96E94e4k>wlw$jX0ZahuR?y~iMc99g zK-pwRRKD!C(TW|%t(xt+O`7N)2kt0kV>QtKTzkIqiXLBdjzoIQ64 z-XaN2*F+rZ=A74ei1-0OGh{6ctVQ5ozcU1|w3rBlY4%()02g*h7I*m837S>?e&+yj zL$6fn%O~URzb4j1PuZN>`(P_ImpEGSNcR%#f;@ zb2=6%M?}7Wnoy>ydtt>KnCgLQqA&;;c!1Ml_pdm_%o7FtgArd~lmnN>1tTl*LiJ~8jV4+T&Q9QA_n^W4SD z_0^F!C@?~1@(kt`Ze@L>^j->Ky(h>9??rr#r%Q{>2RAW*nTP?18~Q!~5Ifp%!Q$oN zfd8)MizO%5V!P5lRl%|a0qcuP%b3MIYq7>*{5m7I%%l%%}eQm8gou0kLu!=3= zS}N%DZ`2X*3MX8nsnz-LyoCDlc0jg}{NCDgj(L`Nzw?(gk8hWQ>`Gyiw@nz~^m@om z`cijFh=D)M*PF{(qcmo)8nkR@?|R}Z1vV6by5n8j*Zx#$bVyb*z$Tqf14T;B`w>i- zHQ^uNFKN|iCk^c{q=Rv3nvQS%Za1&ucAEAn@JQc6L)Pd#mqHiijLFcU_Z(NjxBy4# z=^>mx+-WKuw;{xL>4A`Z{F$-;^2VH%7GXs8n8Gm>$UTJ-RMaYQ}VXDo+6*u<9VB_{hgHWK_yvRCjmE_wGqJo>Pl`*+aYs@bYKOyK)LMIsd6F|hRsvo zH;(eZEM{8a6CEK7oq!&6t1COWe^#|Fb*=S~L>!owj@r|uzg>X0o-O`Q4pR|SGTXmjTEX`Yr-)L{8en>*$b}m4q!6=_M2I9(RE%wH)!Cnl z7n;XiZ6E-DWYF}08I+)j47umza>5SVfB3>HE;`2Su;!)Io`XPueJ#zdEg0(bb6+i@ zk<+ml5~X(FRJghf(3l)>wta3XHf09&^9p}2GVof!Db1#9HQ_%x#rFK7H%QTgg62={XP)Y8y1Z^YnS)5%nraKm6{jAdVtLSv zTqrL1;Ip_X$dk1u9`)K%ls)qJJNo}8lGx+p>le!HSo_oXDgK|v-aH=awf`T_cE+KM zU1b?t(W;#?jGfZ4w4pGZ79=5&vCL%4QVcCe3q~PQ85JSR*tcY|WGq<+W1B2vF#GQs zopaykzVGwN1UTLkorfFTl?m_ z*2|KUyGoCSVnmagqiz&C5X7)+g3@_habLO3PI;HqPHh?9^RO@0u94*RWVR>+xUArP z?rIVe2Rb5wL_{-K=>zunl7DprYz2eS6O}{l1R7#hFr){AL@c^_D}%{cW%2Oty|V;7 zE_k25A)na<{ILtCwHU?*0#yZa)6i^}M$kXYTmgfG({6`uW|aiil^!mj!;26T%ULV@ z-7!>};rHt7g4D0(g;C3-)GnL-{6R%=9cb4YUd0DZC_w-~U<)9lMJ)s9%@bU3ahN!!AO~7l^k5)ivT&zLce%2P%=%Yb z?A%t!O`g^m;H?7bAP+~%1A4{#(kiYe0tz^und5^f&vsMIeVuS=hy}MmSxwMH(~i0z ze%|j=jXerh*=_pT?u&oHGa1qsAiwq&I__ywA1$USVF(E^ZZk)ZzP!h? zaLSBs>#AMo&5WzWQWYfm8`L*Z!?3oBBZ;@-t+Ou14rVlXg^nfuX7Z}|NLm&-U%4Pp zacD+&xa#W;>HNIvZ3(AA0gT9_j;`_9{j3{QEpOYfJN>q@!+ZrA1KtfO@`EH(5K`-Z zj^GdN1t`Wjcu2--u_Y11^fG69CEfxPmJHa^G|`FtQ?i6 z17tHA3Bc0s*nWOr?<%j}9Kh+eyLZni4z>ikU35*MohoObMQksM9Nsw|0j1ph zv*$aY0=bE_JW7JHHeVv-Cy5WD0RynZ@B$cKE`q{hx6xJ&BXx}EU2wEop|?YgRIP?2 zk6)H1t;p#FMVpA;IL1~_$c+N}N1gdSa>~EKD)(SxaO&|cESnPI4s^R+g zmAiNFSiEf|aeX9L^X^B~HKF%-L;`URNO^e3?K2m=?RgOg>YPHL?f~lY#3m^{r?^9v zex9#bQ7oBm^6&F^mt~4Sv+c|K=GsDEP*RwqTdrd2FY*hZ-NNrBo9CbZB&+@GeOBj_ zjT}U8`k)hVD8(?~9A%Z>G~qe5{0+SG5-*WE0^;orm$cXh+E=-aE}s$T0^3xiu!XrD z5G*4_W?9y1$|>zA+0X*WmfQ=O7bDsq3Z{Sf*0m^d{G{Y#qll9u)m1_LbmR2G+C+Jy z?qmNRDqO=TeN8;0r}r)V4QB^MkI%j)s|s}62?$V`>a{}sJDMc&kw^U-$)eBOmql{k zWPAfctjs2?asimNpaTntkj8L6HlAMh4WGuRbnD7G4BFk~mLPB|dZYfetFPuy^Cz!= z0Em=?zcatLM~t7dew#R#6_Ezzw-Jmx4;z2|jxu)3cEnx~u{`Tpk5V%-@e|HhHr%|& z?!D0~xNiG)?Zx?GRquPM-aH`mwb>m0fu!*K*gLReg)e9o)^FjcyUw=#tEUPk+f#a( zigh6B1I~t}RVdq!Y+Z92DIm0%DYms+f4)k3f z@b-1Qsl2q4)%fa-pNu-bKo|HoQ^^}5pZ74*8tZb+20c!>Qikcly}2gQrf)e?zC|Nb z$6qxmcSndlcnFB(%rUw`%F`IjorjiE@9&21B+7~V@2=mXQSZ?SC@X)+g3r-Ck_+F@TO4v4OBn-SrCQWi4T)l&|Vb zuazY_k@fF9@;IKL&*lxUIGnU5dV%GY*hRiX?Z$%vRY{{1%-tJdN`4X43%wiOgcvh! z)CVF9>+K5P-9K(z>>z!ixnhw3gba9-{D;h(*Q@4=S%pqqZ5oDTak9^s45H(niC>iq}E4`DggG5nw}t#c>pR1?=Dr>DvR6hc3ujX#0mk? zk^Lz%`W+W*^MG1C&T^5@jHoK3-h!SVLSpJp)r~Kw zUn3GgjSQIEKnOosPcJT9%}n)$iR4@+6HF=ft>BOQVwuyhd!V5XuxbEo+*|VsbiY5U z#Fpj(VB;bmlc+@wA(%N+Ly)5&_vb4g{#4`%zUZf*7*%DHfeEQt3ZD3DdIq*+A2*h% zkz`=fuD=9*_kkzW!^&C_f+c*i{RW!Cpj{PwQ+V{-;TkEx=hG3)asbo6Z|KptCO{Hy zx7|*n4FBW3kr&WNR{;d~{TE-v!G;t91;NOrB>C5a&B9x*FGm`^h5hF^s|jES4`|N> zp5xis5KIT=iw3XOK1m#(y-C0wgOo||IddW=@}dk*=U=JOpKobQFOvmpeS!x*LAa0i zYF=n?rI%!~&X|$ks%-4}(50yWR33J#x5$*cR>YwS{M`ZrX;qgw(d093*=c$}i*KUr zqT2d=^0!+s$K-4o{q0Zr;|hFqH2JxzyOEH(91Je8zFLD%9bP#a(+%2OX|X z)B~1uYcK__v>mz=5Fqn8Tj#}6^I=2xM3W>nBYG3%H6Kw@09IWSFaQU`-HcBiiRg&G zw4D3>P*VKiApW*&;4{CbHcg+`{rmWUKM(y5mKS~7zH$UmiGhy9!rUJGc?CZ^3^d4& zX=9U*WGTy3W-KPF0p{W2OO|FZbie9%5UbkkeCjLFzxsA4~w4LbC;fp zU3MPQFo9j~BIzy_sR5M8YO|KoK5S?e)E3X|DTnU1YTbU~q;vdfz+nit*J=ZpdGRcT zxOYLW@WvJL%FxJ9L?j|79y8jRHLkS)qL163dA?R9{&xa zPy$Q>5Ka8ORax5-=;#6p5b<59%3~dFo#q!0)h1a7#S&kB`r%>>6tfr9jZCx;$!ZAv z$}vX|?1Aqfnu@2ew{625_hPcDBeQe1C!chVRhPMD&a87~=py%ol~nCps1@jxkXR}1 zYM&CxJdgYDZFn#GY+gq-7)VTo7=~?p4-@G5RQU}D zRyPX`q{E2G;jqLy5R~{K=f%?q|G?YTap)0}WQ~+y_I2)sF)xg5yl?|S5261z86Rp(fRUUj0Y=qvhPn53Up^0(XghaWt?qBK=5 z0c+qx|Nm%kp?$#H&+}#+fC)-nS$u++aiI1YZsb0vdV=1-W-U*D*2QtCaSAv}#vv(F z)csWbJ7l!RlR|CUg*Z^RqEuXGTIeI7$+lxB;tc%KTy3%>?3g24I$RnUjxP zy#;u+Kw55dtpYE}$JsL4LX{*kWFBq)MNl)^d`o_2ba3&r3&E!{9>}XRfY^e0#d(NHjt;yvHQkykl_@X&P;%8VO2R zY-x;{y!0bV2LHp!s))z8!M8TMpWL>j#1eFt)b|NzDX7e4R;{`5vF|=Q+3gQ#XXY>b zx6l16-E-STuI`>+J-w=XHsb{?Va^n*ABZspLoy$F#WMU0Cv2J4L2P;p(3hq0%Hv`D ze8C6SF!+9T5V={Ah=y>g56&s#=pGmlxOLBNCc~ZaLc$hL`D}||u&9}0$%P0LVJl{i z#sr{|g6=<8WTU*gQ{4D5!}joN#+~Q1luj1P9Yq#HC+OytRmopfh9Wz}Z7)$8AP7EH zJ4@l|)$~vQ|I5ov6zU7rL)+0_gFb{S`G7uGbQ*ds@$T3=0C-({=K<&ERT|@^Zr;wa zSQmR%1AgV6B~?AN2gl+32&H^xEQNV-8K(|qxI@ZdqXC%(t92T0=p6=F?SgMA)Qgvb z=yjlTOp4L?sIPM|`mBpu$6It<*3ihFHLKw0YHd^TySsPqBwC9<;2&Jz#p9cbWqR|{ z?~)utc0xt48-H)Ow1HMU$m|rJgPy&@nXCVi`Tm!=0HyIh*3C&$m^5h2?#hQrNaOhP zTp+e?JSGdE{f}OQah$miz_AknpM4QX1*-ak;tLRy4ZCd-jj^k*Xrp1l-1j_&I9a_p zoG-Cl-us?Al!&KyO%!31*P0QJTvoSDIq-=Z^4;I1YxNMbJ+Wd*r7AAvVo9|+>aVIr zjqmfTBmQH7eEGfPwBGt-Jz1EE270jX0>kdN35se%awCB-|a4?ZRtl(2c5>vcXPg^V_y+(>M&Oa3#@ zik%1xqwxM15qFmg6eQdc#Y!qg0DUk)O*w5q1h^-^`w^u;#F|f~D#GzMSEX&-hxjTW z2TDMU_0}+7xFGL6yoeM0prFT>T~OBv>Kz3_OCDATr!HTtBXH6!HyUaoA?S+?n+`xEsJ)xuCEz;J)3@E&JhotDt;>qRfw0 zjH+kzRTqauZV-UvqhmMu9@W>E%3;kn6~8LD@P{oO9L`14tkTJKiS9?rdX(d0(JJk$ z@N1QXmsQAV-;FcOPfO=@i!sG@sU|B>BZIwQ@7<2kDT&r;Cmxv<8nq7!kDFB&%(i+g z+vi2PCl8?7XEIj#AD09=(epy$_uCEalU!8`AHYhhMBM=~UJhknv0{?Lyif*<%VURw@5StR``{hv@C>wEy=m6l*GKnA5-oul&vpvyF8F2`$aBJkbDY9v z=QSm=kpQ`24<Z4$?b)-=6^L61u)b0~Dw@)9LSFe3;gLB}Z$WT5}3txTWqM)iH3r@)QBm|oJ7001WP`GIMF zF9=}qD{dTQ!~?$9NJy{&lD`Ao6IsSMQtO4;`$2Bqdx2WE7u2`mIrThi`1iB|@$O?= zZ)7ZYm2kcWUBuS;%du8MvxDDaCcW~za)(5BDd3?_QLa>CTp)Ebw^>Q-nwsXJ z8LjIZXVwgLJ$RR6p1aGAgQz?pQnDvI5<0Q zgNXijPxlijL*z`;dcaotfdI>30Afw>O{Q?;(b`n+(Acp>nPuI7dVXj?HZuaXa!2B7xhVZI3V zsyNc}b6qEiFu!=HN{15CvA1qFIuGHUnx4w3lg~)krMzvg`-x}p{~;8fVc|^e(@SnB zVaA^xUjwXUgiO$IQ!M+s4-_&RK1|gGfN=Cg{U&oNRAPl%;#*!uW@YfC7dyh``^xDD zCK%I;=a2fUQovZ*f*5+0qw-ebJ+le=k&7O?kb=fHSd!oLk6LFHkOJ6kNwDr9KCOTz zX8oN&)6XdsuaR<`wT>}!c`ik_3{xmpW=HPSvR1%x^yKl2+(j^sr*>Zs!iH#?w9!+4tUJeDLts;$t;E!DF5Z zYQQ67k<`f{w>+A_pGm;T9C-urcygE-P&+AtWR*7C=Vudh4Kxo4zEV> zRaE+`6m!YA8;vzT*DKY+1*hvf0QJvE%hh5@Tc{}kbrdDd0(BF0;p0G5gKH_cLD(!o zUczbLsf;@8Ohe%4CqI|8$tu2?eIAgpc1=EHdo>oQuSg-5MSdHosma5DmUFrG_0KC8 zbox!(Lp?Ddm<+q9=1~T>4sXrnScc7TUyyq<#J!ifXH>r3@^+WvC1Q-{FzkxJ@i)%;evzd8iTptkMVpGUz2Tghl@_PjV*YW=dAUTJ*Z90rb+jy zMK4l9n$}_~uy>pud6sq0KZ7Nq;x4PuSB&e?^YK6zpr+3RzTi|F&zwMA(kg&nAxoo^ z7k{mi>kb41k4tXINNF4%PfFI&P}}zcJ#uR{<2y~2qS&>E;B%eX+TFII2zO}zD;f(u7S>KGPJg2T!J z4AlA3w>4lCZ$lp4azn-GyA(4~QYA5lQxa;muMz#Q_{i)&2?BVV#;oSu zx1Np6ZpBfH<@Wxz8W^LQx<_-7862LZw)=GQxDXSi@-;x9A+Q>H4(+;63i3K=ix%F5 zNepIM27Sv2Qbj#V#O%33=tIjA**Qlzk=6ss`o7DIthFkNDIxwWW?afv5i_Q(LuU0` z52QG_2Xe<{nhN~9T)&~m@l0DxzcmXe2$dHtYMn!^)m)2B2d4qG5rZ#x?e%|Xn-3YF|9HA| z0GI0BRba9vuQYLXaoK@0s*o#X*L*-BO;2U@EL1e6^hbc=b33tw!dQP{W31o{pK?n~ z{{{ERNR1e?u7LWFDtQ_mp9=S;DTqL|t(GFVfv_njzr@CH9~A~Ta^{#djWpSTuwoVM zLZITuqqgAZcES)=p>yFWXd~wF@}&ocH*E82yb%=xWctOe3i z_sb$q>@6e?Y(+>SalepSPy-P@L4h%bDPjY ze<}TgcM!(vNoI|d5lHf8hwA$P9g8Mo*tZrR&b!w(rL zL%@^D#W5Cvw?}PTLH;#*+Cx@r{=1b+B+Bp+f>!vN-D+Dd_Q9pU=ry~3SGMwF)c^iesTlAi&>y&~ zRIvWe=qd+w$^$g@e09CJryo}kMJm1QdYOz*Cbk4m5aB*Cij{`^wf#wCQUMQq7;#n=HFq6tx9dH;=LhMJx3hFFp6hf<5go#h{965A! zJ}QdW4PHevgvMUD+a>B;T@^v9nf1FI7?&BxINi5KDV5u7AQrV2qp^<+s|ckHwXf_@ zJ>{95>G_GbOZ${vc4jlGP-oqQmkm{{oHm~$l_!uPUf50N&|^&|uFjV+k8l6&a#$0%8Od? z;CyHJwZbJCNQ+PxvTqtztOdaMDY&&_wJ?E626)_gZwKnau=F{d0xXrt-Kj{(Q_UeB zoUJ}qnsdx8D*2O*BI2?CoOg8vloI}6tyqKTt~%`T>bId&ZQRt42Yt6ji1!8?EHf{& zipttGFpckgzg6un6zMN|?gKxD(9I+zw zs-h(^zc*S2eYDjd@Cb`{`SKu~Q*sl^e^0ti9-uR2 zfdxWeHW_)6UZ3XYcNrC?3vL%V*$xXfGQJNjGW_}@B=fS``EQU#sl4;HQ5!bE3Xhu^ zpXoHD?L?rq*p|1}LC;a+a9dv!@$59Bw#|?z_8W03AU~MSc!WbANOE!i_yTW~{zjvcTylP*C@l;<0|+I@Fd6-gqBN9!p(O(0jn6yf_H$3Jx8# zLCAIb%3(I~ibkjhQgp3dJ&82WR4c?{LXQ9>E1s%rfx#EPFX{W{XOBZQJX)<*wo9=>Dia9du!W1NWMxiWOV>T|ScS z{cda%Q!PU;!J}&Bkl>I5vWB*F6`c;)pCR9U4RdQUSHB{#;2 z#mPz@h1oO+iQNy|P{D#!N6DZ1Rx5{i9C(h=q9JjPyVG^T0nI$#7IrN;>>7Bda(H$T zQW3wj3xPXWn{R+FoY5lp#uwT0n%jfCu>HtTIKj7{#N}8}aKpM(dlo4H+wLt(fgi-b zw?vO=v=O%vmShkLlNP3dD&yd&RDR&&rg6jeV>d0mP`Pj>xpVg0u|kPg(JYraSOyXLC;a1`Olg4=ORP53g{YA6wf*wRmoy*mpHZB8^6W&8Sq45 z(Pvq$h#4L7f{J6q;)7e_rOQLv0|~7#1)K}hifCLzi;>yuu$A% z%Grj4;6h-22|UYMWSxRixNt$9#N#Ga+Ga)P+1$Y#HJxZ$g$3C2)LlPqAar?a@4oz&GX`bNsA0u5~W(4^;2?MVw6P(oqz};>U12%C&y+ViahXjU5tn zSpH6-e@dD?`{hF`juiONQYkyUf0_u?(vvB!Olw7iV?!74O4N9rhB>W)%W!H2VU~M@ zI3S1bpP&$F`DlyPu4}sQku$#B%I449PZ$RkhPR&=f;D-Tx&WeSD!9fFCY%>^d4BkZ z+t3f`%~WaG{TK@4Ni1jMX*+P(&pq#5Mo%+zWyN;Lp3)wN2k!xK=OzRShd0MLl&W5Q zZj=5p5fjb&s7Mc;3C_6HZ;inClovCsiFFlT!UcXRA%hjyo8AnJE6j<#BJ4!JLc6jZ zD3)P+I*0p%V#jU8mlZ@#X6Y#kkH?E$2r)PhA)SR}p`05mx%Vz2rT0z@w$<50W4n0$ zL4lYC=ndCiaKnbg@($FC#P*9{N{TsezTkszqm7mdZDTZCw@KVkc?6_6kqHbG$j@$h zhBBR^;JN+?8%3VC8=6J_X(u^)!=QN9IR>|tT%phUj z53RPj6?J$?W;h0@qn@2vY*k^z``VAD)MiZ|oh$}tvnL5^iP*H4BtT>}2ShVGdR*hF2#UR$beLuQu^~BLwqTlV6?*&KbiP~nnFk1AFB&|KsYo=V(`k|N$PP_3U6U@fTd~qzgH-^Xt z@n-9A&SG1g>)kd;GXI9^y@Y?nVJnAR=MR3avpidiH^cC-X)gP`KQihp`&F z`q8w**wU_STsRqkEHEMa-!aU$C2zXh+Nfiw ztlLz#I7Peaqr5xa_lYi3X~{M*t?4Oo%i>n{q1MlOE26f6u;)nstpX&=0<1G^upYj7 zarzbcJ9Ok*I0B2#U&#vo_?caF5aeXLG%>@$-}Z8{h-x_aK91J|U6X!*;pV2KQ;`EN zZOm~(VG>JFWn#0CXq*L6ZG2BnS#{p3ehE%AQBvZqxrnLQotLX(k5r8ak!m8Q?bv|D z+mYD^4Zq$~xpa>;_Dum_75oS?E`Typ>0Q{MbDLyXa;dzv5vhi=hWoJbi41iE1On6v zMFWsr1p!;(6JFS8$P+wgDfpOSk}WRxtn$9$14#svrPpiQ)?eY3O>RWv|) z=@Qe2c~sJ4OOWeC${~tzMEndC@t6{Yi7rx{*n+dDrU>95VJeRLQ1F00mgtZ8Yiw&t z_fs*PovY}NiY=m#Bvo?~k!LawRT6u966tORj?nhlgW$O}7546Rb}nV4$}io9t3sQF zR%?Y~t9sw|=fYU0k`*Z57?QS{2u?4^G?jBjhAkdHtc_W|sKtK*F~3RrWdnG+$34q- z*c?bRAKg069nWfQgw~!0KA*_i#+Zin_3fqFhmt{P6`1}dTQOO8KlDDY^UnN&PDA)W z2WAPut-nawLq#A;-gnvZ)?`)_J@l_76Kh-(_?`zbb4xatXP+(w@k+H?-^b;vx8~qBVBvignZYYfHvUg&gi;&3iy*Hhw zO23|t<3AyIP``P2wfJa<-ld`Dmxv|lc&#f#IeitG{IpW1#w()2D(_(}q(1^Y^b5h4 zuBoZ#A>ICg=(9=~bxt;dnuF@Qp18@jT3kb))(ldy#9(gNVy3UKgP_J@*{U7 zTI#B#L&SqK$GVm;MzwrclWDQ$c@KOi{(=6Xjgh4U9KgTtA`}^*G~O`r{cpeEnMaqI zT`J=N{M(mr3utQbe{ZvQhNEecl}1=Y)}BZ{Bld8p66LGmY+@JvRkU7b=bIn4pzJJ}a0?*x(` z;~p%U&P_Me$q2{MdnQ3jal+T zvn8rASE@9NRYV$?^{K?obB-_F=s${x=NEiAAhLw-aU8t03o*Ql%=g1OB4u1)KA_TE zFq{uPI{bOCA8w^)PvZtojs$Bg-yr!*pi!VciJ2$g&hsu(FKplREb+q;6&a1O$IwO?0zry@^H zuQIq-^wE{ILEBui&UqGVel@EY#(4vK%Kjf-m}FI3JUwgajf5{}74t%;nxdaw6kDd=X^{u5(`wY8R{rM)D0m91 z+$w9BQFPJB90dO>NCfx;!*)WPXHDjE{01vR2HQf;fjG%5n_wD?J|rFG^tw&v{^r`W zS387Oj4#Ae;7OHoDr);qxJw1a6bZG|$%6($UY46#O&nOc(sLkr7>_E0PVPO)j*$nR zbA2sGj-WP-+PWgyBOvLoiu>y66}qG_wrV(M=}ib8!1kaCN4M8>OnQplm37>)@7a-$ zD}z=a2CoP!Ay8&2DVFOlI2mHoE+qN~n)em_KKCQ+?Yp6}%kJi4>O}wpHyJ(>H`putp%2VbxuR zb2WX70c@s8BS>uD2vH*7ejA{w!dn-2pyG?_u$%ZrtU6pBa|tmSzP5Ptq)9do-Gl8} z`}{js+DR?OB*9DArpo_Px|2uG6WYmt8&6V;&>IiO;ld%t!YoJ6&83<78(3KXWdoqC zyF@AYi73#6;134qwKFk{25i|&ZA}V5V*^SrPcts`sttfmYX{sQPn>^tK5Squno7J2+e1qZ4WDK{leIQpue+@>lQJ0DLo`D zPeg?(&lc=z- zCkn*CWhwrPpLN5dZfA-*Gt-_hgjf!I7oh;<_-V8y?$fQcDU-Sq?u6_~UET68qlUw) zLt^RJ*_)*4(6?Qw1)sl!(pMvPXpS*|NXt^6^2(PaRp{(FOa?+>J5_dP&IZxvb}^t7 zFItZccBOv!S`k7??H&q`x`>O^gzZCe1Rg+6bR=?J#6@RoL7R;!3IbO|pkEhFHO2yt z9kbm%#-o45P9uwbBy{7xs~#i%l0yDbYO67#Q)IyZRhrvD@o^!Bo#7ntW=drej`M}w z#qfxE@$1ZRfmxnnt*o#=rxSMsrA(=P4mD)7{`jCKViDlpaU`i4qGku07 zxP_lijI10Pk?YZZ^R6JBv{ao6&s3ehqcS%M_2kqXAJ`QBcMs#d52_09r2t?!1~?Ki&HHa*0oD zA;n(OjB}kV8e_C115Nb6fJ{#NP^sMWh+)&whcqWcMSfN#a$HPY_S`iUHfgVB+p37D zxZXSLZTkAQh$2xU2;3mxdIwDrFEN8FU$FxNxBV`5B%15WgZ2KIhOK{mhXK#cZ~=}U zu@;1I#SBicB!+LTRgtGFo{7f=eSwatl66a@gy}1T*h+C-f?xD)h`ZgG>@dUHvdH>- z2e;+UvBhHQf%Tev#!`{qD7UOMlTZ*ysku0MRxy+?gw3rLjh1*pes8_` zqKi_=-pR-pF67ExLn0Pz=~D!ifM@KZhBBIJQ>Zx)MI!RV(}^#bqh8ODzuxn77_Fk_ zbC-cCikrZ;G6%Ei0r)&aYPmljX<|^yO|wZXCEL8LBt;B$8H$98{{GkFT{0> zGKIBunB>f4ZH+cprRbMPZM7%%x~)DKmO@x5g_gVDb@O~%9UC-KMJ0VahyjrWGQcbb z$p^(Wz;IbASwT*7ht-WN*XNOhd+Psoyt>Uo!;B)3GkviI4}e%tpV&TNwI}$C2YUuG zjy|O>LRctRa>cUPDLweLoi+Y`N`Kqu>!HfAO$b*4zA^9xEW;4kh!_k%<}cfWf2y3H znax)XLq)7akJTFr_S8K+X0%XOnv;mxk<>4P`L(<{4%62|lT@P5A1>)DL{D1U70Jro zE?wljQ{=U2*{j8wY-Ws{;&&hwlMQ>z3+?}IAWPK~i`9qMR_CR81%7}K1#W>kkkpRke#ifB`ANWffMR3%Frp18v0i$+M!J|sAqGFR3 zC5P6Dnyz@rPcTQ&s10hH92aY}U5o25ppkLhdBAt_VpJbuMcXDrFR}Wv&&FUwSE%l_ z!NNbw&_CVQ=EV(yu%$v{wuUB56Q+0)(?9;jf7fmk$(!2e6dRT=fZmGf0G6q1n0UKZ zE5`O;776EX_o~cQkxE6`)$-A4_ARbHFP-<(#TY{8c75Lhh5!$cJ(C`xK8zDppTetd zWatyqDPRl!D=T(v77B3x>O67>W-JwlNfJ#6VU-cyTQcf#YLV$F`|=XN#4CsMK+8sB zA*{|3mm&?l%tMib9KbmYbC9bfaB<>T9kcvZ|(aZL0#k||bH{t4Uv~~A;U9&vp z2U4ZwZw~8Ezx59v)w>oqM8bqk<3YpsP5g- zHj|K^iwfsKnhR1!Rp@tlFiyA;F)B!YB)_?A-`5qLm(1EPf2EZFaIt?o&|&yKg^la^ zOhl!4No1y^1f4s{7*AwBap+qsQEc9!SNjV|47=h}vJ%kdAeo~&H-m}4{MoeKgYtpK z_cG-cZU60;|IbTmsu*pEPS)N}?p0;$C%Nrj7m{eW3lbp10%^HdZ~IG?CzNB51Ie3&$n;_o?M%K_(-j)u$d~iG6i}475Y~%pR_QL zR_lJ657Zc%fBUtGp~D;0|Jz&Rirm8pbSc~cDVLiv$h-Nu!T(s|pFfP49T$i;rOlE= zjC`v;vRD<%pDn`WFJXFhiZATZGm(t`s!cWJEQ4(@(#WdxtzdEFRDls@!WSL_m#{<9 zPW8EJ3nA?OU!~^%eK7%$=RXy{f6DQYf_4f){IsJP7;1oyCBhWY39&|O@CNsSD_N8) zQo%v+%FrfL*JOo>h*W;u6yK<@IZDK0@9v^oyqs9_Sn0CJ`@bjV|9s_$3u6MphG$*o z6KLX=oYV)C{%ly-(l*;S(mN}`JgtHgBvd3VJ!*T>U23rvk>H_E^%DM`Ioy*A@@YNT zQ`+d|ngnvd069ywWz$U&VX^z{&szV-a{g_pgTca@==}QnlxMeybwG_>KaD*!|2?Cm zjaKl~1d z?v~oRhqFyn*mRso)e_8VLLNC0ajL&)cr44#^I5DPaOxV*g5vx3l0jyd<}2hN5F;oy zOJryP_fk>~N=Rq7?`%PG4#Casx$274LT)w~i2irY{lE9J+92ezp_^BHK5$S<^b0wl z#(wo8VOght%HysmTJo2OwVI2JY1=dlqvug3kQj+St0&hezSUTrihCiM>+JbO!Lcgt zl|pvXX_!D$)BmyAem*{lC?tC4h9Maes-)Hl!G$p@DMwHjPO3?ofQPmV`MCcie87u8 z7X6m-MS&7St3{1gBtt;zv3^Ob%w!Ye`+sG7|NB7y_BehI;9o_I*@CAOHmYf!sF7MZ zXS8fm?ozA4OfQ)?$@z9fF@J~EiD&RdbzL{Pwzbb1_{Gl}Jx>C!q%*7?Qrmwn>9}B2 zOjNJs2$QGYFgq1kl$74|?<@S{)%|v>7(F(_l+UF`o6#^|R!$Ac0LsMk6OLyXURpch z%-+OR>*3&4wyfw5$@`$1%msA}a43;-BKq8k2menGb{L*4_+neFy0DLnQN7M~dQfk9 zw7Dp@d6<1bn(t%WnD0oxuatbOWPk>z+K)SHU7P$tpF3G$+#EFm2iI#6Y5cZ(pQBwI zcblxZWd|YdK6LzNUHs46kG~(L;I|9&u#MJ{Ib}eqy@Q>4Z<0Fgp);pd5xN`g-rZxzPMp}@z z(Ih1oKU>gNMDK?b6KM;;vzUpd@EeU?dpW&womC05puN0_9N@E=RVH>W4YPy=E0-4e z(?-BWj~o91U$_cS*7;>pM{w_G%*vnzecM`$Q;x!{!G%T%&L1vd#F&?Z=6j5kfYa~f!13Ta^!Y!9%LRqOx zalX2qQnK4#CdUOcivioXbV=d7dTGaq#ob6v zl-ptGxFF&D8W{kQ>SX{914n&_O-Irl7!*p)UFd5> zypQ!B?uUch4ceB&YV2^zbTQ|%syv7`*~tD)D*EW$S~mG;IKeIIW0IiBq$sl`W_nMV~@q#4xYyb z$yQob8V;@@3G=4~^5ZeQr<#-fD=`^G{%~S;A!~LXq zs2)y79v*&*aZtp|DiM*=q97r+ggfs|43kqa2(uEY3X&(k33Ro8IoOd$L(i%sN?{D* zwNMic_jCDvlx-+U!@|KA735*9Egl=<{p;sXIRUz8Z-ZcO2QTMWF97Ifa!mg2wvJZD zlH9~8F~O>m%%XXF*B`*~aY-OCW;=Z;OAwohjxqx?r-!+MC^cF^Q7w>*AR|89P(d&z zCQh9X*H0fP#f+WcXX0!ui}?&Er*?#g49&|>)=rJr_NCtakNY4;?O#X36wi>t+>GzP zjTU>D%Lz~%tajm`A*KXbFyo6e3q71n1-z7Y)mE@mkrwA+(^XU0nTPpUtLR%g zsVYcvGmpvP5^6iJj-@h}j5G+@R=#`AI>KD z*cdZoJeQhEV&zq?F0Z0}t({bvr#=)~$G7t6ctia4=P!sVjK%O1QZsSx=1h=JQ~Rt4!Uy z=pQjgy-itOMyeh*I({!?-oDm+8(|kNt(cykZYe65=42wAJnJeV_R7&~XmI%Vw;7Kx zFfXrws;2QodDf??`kHXJ!2)P+mP13FY5v+4g5MR>YzDFGH%d6z-P6u ztNZ#_cV*F5py|%fhud%Knlj${i5(ZIw)K{Zd}cf>ykzn{KiJK)WP>9ip)i2ai4wz5A7vq5N^oVAD{$x^vp53{z_ zeO54WP#Sq>nVD5JpdDuFVw>8c-HH%6`ifL_K3TJ{!toOUM`_8!050nF-FFd1#g^mc zSbXY^skK-RWktnCuaC-87eV>dJc!2cK&)Kh0W$;e@d%=M zRZ0T_;K?iOXZ~&FZA|_Qqbmwh`O_BC3H%$!!T5LljJ-4z2mr@_<#}pf5d5(=QcjBh zx3!agx?1V))pSLvPsSH=!T}H<0co1$-?y;xKz^llue;hU)k%7^na&($H1gtQ^KY?!O{a+kC|3Bx`^puYyh6^%? z4q_*y8~Evim3+pY|vfK|IPiAI3TP)>LErI;;}~d z$Hk?p9NthXM48}o;zz!FjYsFN5g~g#X+6HX3$5i(_v4fJp#%L(6%O`d@STEyl7iNc zQF?R}{U-d_>9Ij&H)%(8``vAZ-={q|h+G6VYA_2|{Q^{#@50VoC_iIe8Z6Ju#;o`H zDbG%+j#bE2so~w8x0IoJo+$%X^<&^WP}Sjau-)r&79xhb#>?{Uixu8W&|W1Gkz?nv z9E|o>SheTTtX3^L-g&qOvSwT~M}-Xw+GR+beLFC6yZ3`cHoTr1z&eu_YxW4RDafot zkbTx|g<+=ZXCYvtoT*S_GLgZ0wnSsy^e`4tQL%LjN7A{+ievU-Zlugc>kg%pqn=z{ ztd`f^MDyJ~k}gYHhK<%f<1yIGXP=n^wZTp@HvOZ@d!$OCDwid`B*`D-$`KN#{IGcq zE9&V{;+MXz!npJ|>Cxr}X3>OM<>XPmP{a zbNof4{Z91v9wc%?6T6;{GT0QVO&BzGQ0rgIlcv3`&-xzM!zYZ-&VsB58jYRj;Sh#} zA(mTRbQB#T@)JoGBvjV#DkV6Do$tO+Lv+G6jHQNw6DIfas0&V&daF4s|5Sl~u024O)aq$(97aQhOwwU|ObfQEXOT3~zmntSrR6%(fKI~!&<0HeAY!Y(a zoJCdqo9|Vyij=&_p#j8a=@q6@cth^u)}@P5WY01yqdC)T*A;9y`T|QMme8;$yg(9L zFBHxlXoF@-Og7}nJaaoC7p_=>N~Gu5e~Q4xhmL)#)%8*5>kh0B zmE={GHq95yQ+305oDJKBSqa^$TxpJnn&hsmtj2LgWcx;h86TNrzUg`XY|Q7(026se z40-bCP~GI3>to8wVqVkJ&Gq;}g2Y7?R; zmV#?DXRUub$H=^>9NlzXRK)YJ#U&=BY@*FWZWqwMIHMfBz|`dj>wo4?;nGGSCNgUX zlDvprRQ_8fdUS02&(DKie)AXjA!gFNZr7#>uaBsfqV(FXskNW&(6!q0rw&%~jz|Kh zCi8DSnQ@i@3d&4PaIkc-gj-h)LEMQJ`>2*J#u75TW~maFexs9kJfEsoQ;h|G8N2Rs zjDv%cg3(S1-yT^hrcUN}|0JTHd2}Dvqh?V|qE*WCt+2#RpHUq$exOuU^T&(5ZZx#g zw&b_P->%qC4XV(HM^6gU#*{4!sc_-eRnRmcd$B2@ZS)mq{~R(HDiw$u!~C6L&DM_ z=qvkzkPK8&*&;2uXhEMJJLr~g+QcO@@{YH{#O_zkPIZ`8n*smO(TV}1OVg?!=_56ClUJW9!$+sm3rOqym6E73Fc?t)#Zq}N(R>5jRXSpuZk=vy>2{+>4p|ZdUe2oT9J1i2CW?(UJvKoMML z;^>n)Idk|eJ0bu<5|4f9VhjYCnT!nHz)Q~XaNClc=s;A1H2pc$RpWYoh8Q+0+xYkDpa ziPE@hJESc}`)X-H9k3ljrjD82SwTU`BNK2HPup75i8*4TId$>abM9PLMoGiiyd{`>;?3zWB(fV zXCuULr7SB~Dn4R&=XSwtD*B)uW5fL8FyJWAHxL0DGeT441&)JBe1Y3NA)9{RrYmyx>i(1 z;i4<O~aNTSX5C2#c{$b5R5%(!FjnZ`m30?XJ_CF zhYe74Z|@BsgZJ7<7@re9Ky%M(cMiiB&i1fxR%Y_B-Qw!A3oT0|qg4xL6kgqeZPl21 z{W~{<@?)Q-a5X9cs_j}XDNhsj>D;LSj&y<*1Kk{~SP1j=?ZjR-Kexj%3lQ%F>vCF= zpJBkysgovNT#4C(C%uWW)AS{=GR7;IyBw6oTCm*ZXmlYrA%!%S`C}r~X@D)EfPivNwQDth6$3yNY zH8U!~hS}QMUe;A@vA5f`$p|&y6ME6Q-BpD|jk2OMm#H8+?3CSW2cy}*f{i0HzN(A^pOI;63K*0X` zf{KlwQvtAwsfV}U-@|ge%HCaUdZP~gGK~zns@22er0=zL?>=c{7$yea1-Wkz7xb+K zwN5!S;{yvB#1sp5qdrcrGQs>GYe0qyrwiRRcJx zE6VIuVz##N3bauJsI8$CP?^}4) zkpyt6DfCKs`Br;^oa?6wVGb|hM?)n+;e17qJQW{E>{5%dB15pog*8dF$bCIUz#)b3 zv?sxpIYdE4)NJWk6T%#jNKR-QpmX@m0<5`ZH?v&CF$_I>#!a#YOtIC}OZ}}1&loz3 zn+7cwtk7IT2lSrupu-J^RyPlA#==3-?%^ROr_wGmhDF(xQawyL1?97VRgoyBl&x0` z3~uh2nT%a8!RMF`P5qi=#(g4}bDf@Fc`HU##{3ggH^A2z&}5Li)0xV4w9h`9HKwaX z`kuuSR(v{QN+}y``9!mYH|e4`cv{)uVsX;DsREiru_>5u$gGFeVsCOGoM3>I9Lbev znnWR#$t%rnmr3|q3F7wzF!%?#DOjKghKO*_t-7fiv! zG=OPK>5fO@&E$VycWQo6LCl!&!o{Q;w;gXNroqz4IY;m*TT)mlO}3(fWA|E83Vty+ zpEv-G*KdtLUv#?LcA<;q>lEiFSIz>os_rbwytfAxa1CCJ2~6@eY)NOVR=hH@u2ndB zpTPM;RTcJoz|J@uT6TZFKez0V!t~+pS(WfC7pO_G8nF9g;Wui)&SA;j~0a0<1PA$xf zJFk${iVW=qt6+AZ*Q3q59<0`@J&Z(rhQ>YX#d2ZxUyWat8~7&oE6$^|s?;sUkBhv5 zB`9ZIl9pHvsx~R^wa6}e1xUhy$OoZ|eiqQ&oXt z%jRD&JHUWl2t%=IUT4eRcvRGi`w6KLZ&%ZcQJ!O1?*xOO^Q=36zTXzG@gtuEr3?9r z*XT(^-n{d<;HrTjra9h*UL@74q(VQ#6L1<}mHZr6W|5u8?wczz$haO_xjU-CG8%zd zJvOK#(A2ZE5=b6WbVt8Y%JH4dKW&)Nd&8HZr3$zs=u_+9c6Rq}*MfzkF?E(Yp`RfP z>zNDNYPx4riobPg?Ai=GR)+qJlbDk1pgW_BF(NzMRsAn?#l){95Dym04-=GZ9oWo7 zv4tc`v!W!-GAlhea$2vI^=4sjm8Fi9ab8f@&(y3`&u|F-KEx|pSbt;eUbJ?KbJ4mX zkEfP~!~{mAXRw`ySo^&ykrXWo{$^B3GGL8>O~Q~vW?VlxJ)Rly+T1($Kkh$U&|GzF@LYJ9hs87v_TT+)_bxm4~?$6H;YhAy__NB6r!J*Pnr9+BDooF z$wMv^b55(S$qB7h(Q5U`i7lo$-H|YK=f+#uYi?tBW~+VqmR|Xn>O_xMmloG^d)$=H zL8ZqR5nzQ3Sv+|rX}Q7xO4^ES3^F+nKD(O+5?*YL+{&gb%C%;&wk${qiQxhk3^^k?iWPhfTQq#f5BmhxONv_PP;nNBo#C(qefA}MR;)drzn-r~$ll`h+eWE5P& z!#g^ygxI9pTz0yCO~3`~L9DJem_1S4K6uXC&>j=HHHj2tNB_~Q^+D-uSj5G;(Kvy( z#>fNXP5;Jkk*liZ_coEX>Qpbu$-q@Q?QwH)Tm?kKs!c*xxmF$SMXi<%0O1fP`d0gM zO)8iK_7*3p^HTeo`cywNhqXz&+RX*VQllGO>!NAS+da#Uc)&A8f4&WgS(GbZPgcYu zkw$mK$>t5BC;}!zH@+0_?=VdVce-DXUpbLL*o1X~9Q80|TWkRmeD%w-dxkWs^&r#{ zt-Q~88fr*ETll01)z1W2b^GDdQJG;mm3m|`?+aLMcD=Hq#G2QDg=tMLdUz(fWo^J( zZPSSA-#>>C->0Qu?J_a9AQ_OzSpA|LHtrcWc@j@9WYISjj0+x^85T{7>!O1BtU34?0 z+v)j>eud{Ls_dEpvEu!%=uV&o7IBTSqJjXs1&`+UiocL`g690S=`@=tgmP;YWDQ1t z_NKn_Vtj^$<2jPWEj~0rw9D4~#-4b-9GafOJpa8%j3l4G)JcEI*}$JusNi~9$tb$} z4KodBP0;@c5}B}Ia=kq5-W<}k>$JH6bli_F6OT4=cttgpDSbb3b_}%to1^~d!J-HfIF|A2e{gRlSp;mT`l zPpI*5rN(J8) zg<04Wy#3D+n5yI-s%`KePXCqoACUj*sqLcwyDOkc|8I97`l(ys3Fjv*`R954-!1{k zUsS#P0D}31pMT*e_}4S@uV*+l=^vtw_%A%||23_mI6#fS!@D@6O*V+#LltQpHx%R1 z{{eaF8#MY+O(mX$gK!{V^=36Id~G-ufYk!^c}#RhNM_K$3xYH>!_fkTQ&pmPL}?$Y z0{Gg22xuFPi8&rFe*yT=u?B+yN+D}m5T5GeGV6m+<-b};-5I1pA{`&b7LZN351QJ} zgJb3HjU8BLfm*e;O_+jEHvd0Pq?-+jAv$m@*5c0b${G8V__5c`o3Z>*f>&s}z=M`; zYyW<^!q+tl?5ldSW9R2ey#o1`xdeN>=xBG>i9sTFhvydc4B7LKS#^zI1l^`#7UZy8>eB#dRcu3(Z?1~_9Xg&>!EM)SEjw=Iu0cax;xXiswesU@Z>g5Qe? ztS==&0G2qw2@xC!gJid2aU*tcUkq3r=quTn4OfTd?TZX)YV3shweH)On0gbtG<%*%xoY3L_Ds0xKSCY5ApacnI8 zjlLf7b2z|MK)u3E26rdes`xTZRxM#jNy| zg&VRZDJo9+@(m|)>q|q%*S{kB)}*I^r(n6g0V%;oTX*-uxPyS(_D|=@@=XzNpgsU3 zgjINmkCSZbPgrU8N`?Xkd4wEA`uwiF*?V zJJzTqzm58ok&*Fjv%}Zb+IoLe*>{_G2ye4RONz?g`oI#`0x$#6yzl8#XPLN*F6zgp zJ4wfoW*r&`$Lpq#Vn}MAJiHInBhsCc0-(u8U$9#0(t6saSrFV#wNRrLs8~ ze==m$@<73+qE{TMr5%+V?#+RxxA*Sj)O!wP6y$}9#$HZCP86l^^cF?Us4yVWLB5U|o`?xbeEY)S;6mEsFZqYV+7>j~p&3Ril*W?Ckkx@-ix`__=HiGQ zuo5ft9x8DgLei_Pz(6s_ajVw=^kkm}qkT6p0vr0zx7Nar#2GJ*;4QcVOSEsgUu~>| z=p-nhE){(o))-q>oSZ4fg6>GYO`QlIvsq!z({?ACYO;>|BS^p8y@*4Jo`aH`ZuVGE z*+`l_5=N8Kn`rDm@EoS+1wvkx8cl*{Ipcd> z<#Ojzh0M4)0MWw~(j>^YTAv0NW=!jt$ruHpW3jA%d_LujGeqXbFr>Y3UZJAiSc(L? z*YHd1w^y;fMPiiJe{H6T>G*PTSf+TnU)&fe)&sLfES-0&A#D0}#}Xal$Zpv;n#^ZH z8BQxwD~i#aDM&%{1MX|C)FMq}iT=@{#eKXb!V%~e?X>pW z4Y>CA{ve-iDo-K|wx&xQK|FDLRx-nZ-@vUmQHZI_*Lo2RpV~X(HH=Jpiy1>+dOSN8 z8J^@b+n6mXvv~~jqo=lxPJz2F1?HD;tv}yq1(8t(=~Cf9s1QJ{ne>^6({zBE7T9?R zVR93g0bcO9;>@3oy?Mco{d+i_v-6V9;{||pgCz9KITj%nN zx)@-GvO{v`cWGy37hsyY`R4?-&PDV#sWaw`@E&^gp$2ogc+bQMohE?K`7SZO28j`&!J7foIyZp+39 zxW)1sQ<$T*>~}%<;AnG%{g0MfMKZD*K6erG7rL9hIrO~>l>tt`n^-(tejN{RGW z>w*?jL&JYJpC8co4Y=pMoD)X1-qFFuzTpeva6Wlc4QL8oq4``^(ldlZ_vU9%PpwS+ zT_QDO&341~Y$8vIRDoEz?gJTMh8j(MK;Sk5S$*-Meyi9yuU8;30s?p3gfvB_A81;c zp`FL0IwM#J!d@!ih4!g}oZu-smv_nW536$2@jz~F@F~Jv12*pT`5xD`-5U>MMJz6ZBl`pJqMLxid}7@oc|N)(IsS$!Rqx8&}T z0P+Pl_PYvV(GZ~Bq)xdYxoQy>M*+#ZY(+a6C@CFs?hMuK?xfB8N|uTYH^lqMd%+Po z8Nl;v@pwX3pJCHZN-Ef_oz9uU@S84N!Q=0{<*?pQ+e+4~2{wa+U(6ScKwdasKiilL zxZq!Z!KL1=yIL)mcJLqCf`aL|w-L!LRo(PooKxXLb%OEfDE$k82$*P2?*db)N3VXp ziR?{!C5(UpE00pZA< zEis1$zv)L^o?IO8S?8+cITh}t$Ik<=D^rM3gMq_;n0Loq|JfFBo96;-|kzuKuP_PYA`8P1} zMCYIjqd61hb|QRczbW%_E@;N5FUc$mD|jPdJ>v?8<}bve+v|#ej`PmZNny$ zJhR*H&7T(R!qlC69wC*33Ma@qtj%chj!{0Ne#rV@a#k#I2S>EO6$iDwhc7MT0Vkwc729{1tw>92+I)2^n(-MfGi?PEBqlOPHM-Rsae)$@iHRHInZSn*9Cojyps1OiOT8O!|x4*3aTS{L{V*kgMun zW}gYJhWAXrDlNkgA03TCr&YTrG2$*0efxM1j4?)@zkjcX*Y)|`9QpIZ&k&{rKz$H5 zvsEAwd$@e0BE3RXj}UWHz31#XMwFhj6XDXqPjS>YZ-U~26!+3S1{*hn-N;o)>VX$8 z;(mS`&5r2Joh91@q{tFr4>9A{s+McjmhA$fl~WeX0^MW#SH|WSvt=YkRnV&~92sib zymhp@=nO!ER_asjIkqao*N9Uk`Nr>68<~s`o1pv(gSy^Lwp~!!g3^?HoKJ5m1aNY4 zt65`pPlciUgr@UCCXV-CW9dQK%!rQn-w!vPdvjd2E*g4<8+SJmqg}FAVGv6N23RCu z;>R1D^F`%UG`G6_a7^YC#8y`Z2v*V2QSwX*;-^U+kJ0>mHC8yKcn|yDXQzf^)mQD) z?+%(ja9E6>ZEh*qoS2=#XP>Friq*CdEAWsd4u6$V*H6$_C9g=-pQ;YT7~PW!QDh(O zt=I8x$K2Xl(z#EWusTMGFs0HPL-bj9FH%P|^|S3?czE2YwG=-(dD)`R!RpD=LENk?NN1WtgOz zgV&hQ!)|022EEyj#-Q5|ZSF5-Qxu_P7|14GyU*b`PHqaco2ZTs7BL<_;Bnz{PZVew z9DeB4W8oOZ15CyTQ$ZqdE#%650<9iPeB5;oj?8_w4w`Igwpupk+GLmPBB`=EpSC_X z`7|DdApr}$gHt}m(Dabz*hDtekLK6Vf|7iA4t_>5i%H9hWnuY57~kma->%vNG?S9v zB=7;=ibE-Il$}%yLRFiSn$`uO%)xuDL&a@?aW-VNs#)a6870F=kr_eFxexcK zEGme0&FK}9EmEBgA<>xB1M3ZusLULkn=B+nqE>ewWtMLOQOY;kv)xF@UyWm#$|>o(gA z);Kd*EZ*3~Jj<$>s65ekuewn7SLvNFne3qpTO zkAd8DmX(y$2#+QMMD{w>#IDl_y!c;|jfj{ZK(|v_tJqlwC!}dZOnMC+Zb9c{= zsgJl@#Bp#TPL9mLejwgG? ziqR?ikW~5VMF1KI6FY6ye<-#!%QO|yCc1y^j4a7j@BRZhu+VP$Ifg|Y!NKS!t$9*( zNsg*zYrHrWn8d8&(Xi#LsdG!Q6};0Y_x{^Ltjf!0?_zfXGU*L5erAy6Ri>T`IIDk+ zmwhdvj%>@ti>Up@eR8ZknHm^PFF$oii$Zn){od(Kp%k&;F$CKta=9${D#~hrL{a@} zlHEG~eT5BWBZ~t(H=#H|S`92lz3FgFI&~y{Bj3STm4uC^?zx{f<>ib(B!kk4fmUN| z78;59d1^(o2*ax3@T9hEjt~6`G9XLFVkHqC4s~+B7x)-|j?68P)x6Zl7od6zG~y(Y zp1q!Q@atM*GmRp$o)Je|T&Z-Tw+K_zK(;Lp{UjM^-v<69f`iD*NZtso53i>5{F+rs zdY*jd)QUWxUwPlUSpES`;HT)pH%nj&NS;z2o<0mQy`K{y|7}WY#q_02Q|^vIrXvb8 zZ)NR;51;Ptt7qVxG>7_p_8simPXsjfvjt@0s&UYTYihvi3ZW3r<5Pc_)Pz|99pl(i zF;3E2=`yNwcFIQRS$5)O>AFr^tODUsv=hAR>(}K9IJe^$Kv}LmTa@QD zjGWZ>A1L@Ei?1)#y@#M=+f3w~Zv}$4M~fG?4e$t??LKsQaE?Udom8h4JLdR0ts%3a z^TD02zib9-Q3AswzM~1TYu0j_&+b9e((bDX@4eq*xIQvoJ|G6?JT9JS0V2Qqe!-D) zdg*x6fW+=-6oG-Pk;N@bifk@1?+*pCUd#y) z=+|L{q4rs}!}=+^R?;ZKWJk&GuJzlK7gJFPilGS43l*ib4sxk*;!(kzzS3H_C-zZa z+3lSBBKy}4NCg*5j6Z9kEPa`HjK`!TwU9_)6K{Gi_Bud%3HL907 z*S3{{@k^5yz#*KTvB&@Ta-~Yy)x(G{J~efID-6BlkX@kVSesu&0?tn8IU!5o2Ud)) zLG&zYoXoVs#8K28lBp(@jFO7&Pt9bQg3v%`*GQNy3(3QBBB^1q@2w(qD_gqNEF10T zhZ2oToPQ^0EcvV>Y!YsN6|`sGBzz=CxS~R3wlpnJxd;^Nro)J7MyC{d%D8|5CVJ3| zL|1_Gv~8eJ-`f1<@-%a(E{20A3Y>u3;&JT?r?Y`3LU-=l4++w)w;xy5kmW6N2bEUs z+3d6XUQlot8AJdaV|4lxURBupkb{=FQFd3ZuF|gB7@I=_xuLn-(0N86hINU*=n^Gp z=uj#HV@18aUukE#1M2Ed10nkXq{Ke6Nez>Mcwfnp;k=&N7ZMFD*iPygVt4pu@ZUy2= z*_zM#R=4x;q~vMD+`BnX{A<_v@{Nc9`y_n4gZG-rmzfl;$h=UZ539J$ z>QtcR&sw{1#rMl(jkZ>~Gdk}zDifBQOlLJu@Mmg~?^K2%O zgv&y*TH{sW=v3s9lc$aB@Z@*OuHYqM3;JqGOIJ8HnOL+jbfFm+#r8!;cnwkQgS#K< zcA-XjNI)fR|C}A2P@g3e5py2`&><>Kk^*rx73PG1OYlh3g{{3I=T^iz#Wr1fp!nw)zGDr2H9^`w$ico#LZhl z%$)a%pZ8=pydjcV8WQMSG&>P-X_wQh)k8G_d;vf$WZ_6cRmGjnH61(ioRN-LhlSR# zOb{)gx2qo6E3W9%xUaErkw#{dHgHxN4^HpUTwak0>K4B16(~X_1aC_=&Lz%Az{=dq z^4b7WNMZ6?C?EB5>^^H=f(3)$|LUEeyt|_YjR}vPzjL`z$`_VwUQ+RB?bHy7O&3%} zdo{4WS;H@5+YiO=4`Ae=XRxYh$_>>HcoWDA3S^M_tP<-GogIS(S3E*Zwx-3%YdIV> zBYEy^Eb7-yeyu$z9R#wm=hscjwAdMpsavKNZ0h3_t-}@!nr5>`0QiXY$Ek3|t^9Ku z+fsI(b*l+yl~$Yh;%|DCbq}#jIbE6rjcfY!v2D3krRf~2*s(QS$Iw=z>64lmdJb=H zE}E4dK}3G%am3&I0gD8wO^%VuQFJEa;%ysi#WLEAkKy5hw$WRkd#p1IhWXKgO z>2tTmiV+{V%k~iEd>$DIeMD3S2f?QqL9@OM{nd{tE!tkXof4?_AZ?=;;XKq{rsFy@ zK&?shTy58lX{Fd$@{L@T+6Jh~^jD6o3Kp>2_KhG!tzf%m&^?fSco_vq2A0PI`So<% zoQCT?=eRNQK@g&#=J-l-r`0>9JYypL@#x`-cYb4k&wI$XZs^F+YkcBZHS%kvNn$Q3+WJ-Y#Zp1x8cJX?{ ztaIw7R3pMJIyn;a>)7B`h<+GpNATceEIDB&^C*_+0hdM5l+Eqpv3W>fhZXYuKJzIJ zX||aNn3iD<7$tUJm-S3zz{i>2z|kh<_b*z&VBQ44?ul~|XHUk|rX-`VXXBF{fk_A4}sI7);=Vn1k8W7I?3Zm$PkArq?= zC-2d|DWD|Gc5mWo>#4A(k2Mk}Q(u7Q%+R#S^?r2-S*oyGr_N|hSFt&Pa|x&tvRbif z{ssBGkm6X8c1&?M#NphmJ?erq^ zUQ1`!tFp>rZx%il&&Y5?s<^iOwQ^Pa~8F?mM;~v(4bU!pfj6Q zo_aP8)hKy-B2BhYZ0G<%5klSDFg67rJpEhk?=?qLuo7oe;dbu)uCZ9en}+EDgJ|9A z5@#+hlA@p1)maHe?wQ)fYsd_lUBI?w#9%ZLw8L1$Oy^l@b^w2H%NI?4G`@+U zl4cRR;c*$K%tl}V#9*VIJRspKkvCKfrS;$ut*ejivAV+v*sXT8tqk(rl~GYGgO#Q?_;C+rZSj}LvEsa5l}NDp-$Ng%W66ngVD#rT;5=zPK_ zCgGwrJ-nqt&7n$O%&cUV6i~md`AfS*@^Go6uUe(f^u2Emq3|7p8fGur_A9+uS6ZMW zTmwC=;bK11PEFGHnEAvlzi-yR%DAfM*pHS}x<9T7=N!`T%SLoxS4NmVf}2Y`v;%kQ zp1lLT`T_=H2-8P5BCNyXvVPLYzx@h&sqw3Xvy3V(iNekW=vb}?Adw1qYBaqTE{bRZ z<5hyL#-7zL>O;guNxYW*xsPAWZ*=_t zSK+3a9OLL-y({+f^BEi*;g0tOQ4~CDi8>yBIYhpy5Duf2hnNgZV@}tC6CbZj6vo+eN(!a6ps8jy_Y-G1V+A}i09BOAM5!Ucn8r+1 zp|{{3+A>l0YN9Y_Ly2K!S~g0YQoZ}5x=4Lx)Nyaef~Tme5^Htr1@p;>Tb!eFw6%zi zN?a|$Ix4sIi0you=z4=pde$Mu4>?db_XB)Vt_JW3WeePrREyE`@!ZPZ6u?Q(%0{wS7$`o1q>X8`Al1(nXWW8Pt5okw)Em}I@_{9`0yRjG5 z>8J!<>_hrH**gewXBw_o$g4i=)78;e`J+_Q!&H~ z5vw@3ttKdmC0B_cR2S6?ra?!1cP{I!-*_G1V9hr{6F$n5@i`}#3KZ^tNH#~>XPM@dD$19gf!^N7Puf^qZ%1U zYeHtP$fZx2peiTEW?vO)rnC|+`nD4|}+AZF6rS0#$QZpv<0Hj80!Ml+O}b?C+5{FLFV16Z9?`sNG}@jd;0 zk~mw-TkClG^W>D$Us1lWt9oowA`uWzYMLumJ2i-T&7Zl_GiHdx2HXF zY{n}$*Drv5wa4iDZE6Td{ren*k1DRHSAmqE`K0K3t;m3f$HcnIIaFZ@g3x&9$%sKW z1rT};uqh)g>BJx4F4|7dvHCcI>k9LU+~v^Fl?0$xZW#=FG~e<6QktBoX-0jQVOuYa znquVw^{G!W0fc`@J>437E!4>ah$$2y4oSkUbTeiPeZkUD?@xbDnl0jU!CnV#JKLmm zmi#&V^y(h-kA9b{DnR>*EA=0-%ar+v>Xq;x52^TZWBxCD>L0mEl;erIWt^x6vl7HhlD`=9~YqcIdlD^L|p5S z#QyQ_&=nOJIE4ti8~I-tIorqN9yY1~x^2&HiTp1BH!x zjSHv*2qim>iU}ph@k7OieGex`6`Ck=JR=VtTw*|maWY|;W8-U#?EY#;$M&|Q3iA!6 zN-z=C?*ZVQ#H_zOCI|S3A}8p@z4h7~+DQCKpR^Sw)ByzSB(G5d-QkF(N1K5Nj_AP` zXE{lL&Nt2s-$HRgfK}48SNF&uIMS&E$0WnOH}RBoNycvYs04j-{UNX||GiXyGlaUc z#SSOI8FJU~1UJN~h-jLaUb7wd;pV*vQ+ttAxx&0@v3nGdUAbR3+Ym}JIZh|v&;N&} z?~Z5l{oXfWWB@@;pO8xiZMMo&|%Wbt@K8 zTK&gK^jBp*5Cx#rf^1!aS>PG?=jWG~jzmO6`l+d@)r$8SnCpQM=DR&f@b!o_8m6~$ zYkkbMgU~Wjj6QT#m0XIzbO!BXKOF1C+z!o#i(cF`yD9QzKhI=TY!~{+vV*$9)l1|^ z+5Y<`W}get@8|3wlo7I1_SVzWQ-D^VSWN1ua26VN+H*Twjd4L=?8CXLFvk+;HqsSj z(%90n{wZuF4;pgNT#+GwS?wXW4)Nc6OOyX^_A_QJWMxA;hRJ-A<5fYfelRoZP(t>J z*t;K>Wy^0p$(qu38%*&4q={j-4Vc{tC?-YeY;Zzvl*)5;W%1iJJe$=SeUShil~hB7e9smkpPR--%iK=ToYoQYW2#gBF9-tT24mMb;#WM2J^q%hTLZ?_TN z48HZ5-Ew5@! zX{L40BPsBz`M)SVgDV0*bP}5NaT<_eE-4{5b5S8TJs7)O2`#{fG5G2)zt!!L&gk%K zzR(n&PcqUc>%O!CcV1VF&PRV(cUy5&hpVuVuz>sO*Xjjpic$8SUF#R^!kh%obJo;> zM8#YBC#cztvM@5$EDYsK-`fjwHrBK!ukKbb!g~6_$J=p(TPvXovO-dU2a8=@ELoa+ zJ*5AZDjPpi#i%m4ayKR=ZwPGUDWl~+Sy>3O#_Sa<9Kn66p?CM^yPc{Jm(&)_mh`M!7tJhjcb2nPW4oQfs9Yt-d%sE*TLNdFd zfE6c;h{?aAr>C?6@oRWi7k~1*yZ5A5DP_Fw@xT6uxxq%8cGw?&f0Q4*2CkYAXrzFw zT7W$^HWo#p7!MlD8bvE8k<76Ve9>3C$QAr3$a6;Z)BjJZ`fWUaCk7iedu z*nsoENJb1`jQy`aV%`3Wy>n#mm|lMFzl_2N174U+dV1(H#wZt`f7i~bv8Uq)@%8X_6;A4vjA*WAHj}bR%aKVCyQmJzkTZ;W4@HW^|&Ic zuV*C7Y7f7?K!V?~Eh+d?j!^>&4Zov&RCwAb+_A&iSVN(~K0Y>244*;kjFjCrd2@AzDw8F~4Sa>N$qFq3?D$cy{B_X~%L;?_TUm zjTzV|c9jrx9+&*;fb@JzA7uAp(4SJ7he$iv>t)QqR9(2x6oT(tcG+t4jy_l`Bl(}< zLI&CQM53j4eceypziYZdSz}`FONWf=jMzjuFY%sf)Vn<%3%?$H;k!BTt+4*ov;AJS zE%;*e#dJGv3b!RHt0B2c9)BgTb{_8Qn?rnLB9t0_yD+qt@?vJ0GJVz2-|g`{+^S7x zYU?#Q8+Ym!Q%031$G$os=#JK$=*=kLFQMk4EMRS&_OSrl*DiMkhHHsu8eIUjzr?Pn zJA03-pbu&1^IM)6Vv?fWF9m|oH9&+bxaaMmV`$R;Xu|ciJ`ly_7@;A(PGR~^@BC6e zkUN5*+CD@X_)aIg$>CA$wb4Qn4P=517NTXF^3W(@Uy+YT)+@0yS@UQ&AC0a>*Z{`N zMPrr(x~BF%6{-uKdOES;x}hJcDzn@R;80$>Dx`QYp6|bC&3^2ukoy=ycGLX~-Xnzr zFsO5^9C(`ZYc5-)Sue$2_B+F?46G>3KT9w?066SWj~stLv3BW;gb8CQ2LHl*_;{vh@==GYk79 z>OM(i;Bd40&t?+iK5((wU_6QTb$bgl=Pflr88zE(V3UOJK-xtGMu?AD357DTKr+!~ zVXc;LJYehZPw~`5Cix)BY6biv+<=4A-OiBPN;nKW)U07`bqmoc5~Ks3!jKMn-x1L$ z2<^C6PKbXv=mnC!49o`{zIAv_HCE76{@z`?Y(2UcetT#-#nD9(8aX`H6tDBdZ(84N z1xq9USQqu8XKEuU5gjU_H2D*A4%cFz=)J^b%F0|y+}(^KCqBY)L$8aO7aKVz6R?Sb z&t_`ssYEIc379e3eF6SRSl)rRTXI*Eb-KBJGg4#GE`L=-W-Si3$`T19w+?OIQgF<@cUy&56sJ1HU`|ye{ry*iS9B6*)?>CT{yoOaDzE z_JnBmU$`oz1G_iMjON<|Bl_DFutyY}Mw>QSUy)JarhR^XMIium!5={~y-Jz7rjwt=o_9yTgoq78nabos!fr&ZGXNEp;d~On93uSbY0Hl z-uw%0%^y&oOA!*2f5&Ep6&+xh{^&e|qm7Eihg(Vacq^LZi;L%-}{E*j7p*Ml0HG{KZ}CU!Xqs*C+nL~ ztgOb3Mcd9d*PODmi@U{Iv&Th(n6vjdMc1N|x>)}Z3?>vBj2jA~t}2V_gFXrn3B|p& zUp&Vm7VI_dtJ&w9<*KxbZz!v+gM;oii|dZ{bTfwV&{maAVloP;Od>K&qsio6*rt0V=3RRFY9OZMh{Ak<-!Vi#ZF?uoYHlR+fQvW>tM?|ND z>T;GYPOd>v2ww`tV8l-2b9HdJk0qh@oMxRd`CqA;JDfp#f@AT!*eA)`vmZGDkCQLd zx{hgYpJ?2>ar~A18S_dMm5}O7qjDNqD<&BNx;oiJe*Ub72XW9_bm&;jE8GM8$`DGY zj(?OX>%ZCemCr;0{VbI*ah?Ds>Y0l4NBC4JI$FYXIMZq*#rv*=N$AKcsRwhVrDSeS zMxM&?wX+D8EgpXEc8pKFMe=4!a&CTxu9gs*i3(U4c@dr_XmnUdk?@FQXtoK?sUXsp zJO$j>s}${HYu+$E6rrkfW-))e-}Q2f;`jt*^cpvKdx#{m-#)^Bfh>DcOk}ARrCHUe z@wMu`UYq;swF51`Zev1?)P&&0ZvuPQ-3Y`&#M8aEaS6X9jbgDFdo6#{ZMuVOGB}ug zub4*t#M%E~@;8H^Tv%wJzkg${quA{tBkWtwrL6bF#7bu8@u{7n5>}t6s>do6aII(^ zVi*4?WQ|pFLhFNQ$*9zCB0`efx7vg^DFDuYi{JE1x|I3@25nN!1)2!JCGIR=JO$og zskOdZIOVUEv0fXG?u(f- zJ=oZsZ^*j6K00EUU}C;LJcAQh#me@wx<2L@pY6cqoLoyl% zV5F(C8QKn6eVyxp9C6HQ2(8WeeEXm~G@km+$@PhTWeN~LUrc#t!z@`vf1U5sY%JnU zcik-c@5{a+;L{h?ryLVjd5?qKX*4p_29}@EHJ=f6tidqHsm+DzmD6_Keg2c#zMoe@ znQhK?z#Rb>ii#bSjgYORC5MPy#vu8TJh+1~W$vq|u0^9#5-l4BqYIlhnu`OF;NfqH zpy7>p(zYvOW79$qVL{3pD||o`iKL7Zp&4JS&!{;lR&`YSLpj-q8+>DKNm{% zlc27*xUO4Da~v&a{{5beC_#*|RnB&I=9hnt z^nPdDFj_`X<|9rPFwx408{pEkhPTJ}W(wk4!*#Z%@X8<&U0e1*fA~2DDWEpFc=VfL zFvAmb7T$b}*@B2!Hxn91GLt^fZD@<(dVqI4*Qp6N7%v^)v zAc5?D>H{L|$w&`A72f8+&%S@-|LD`Fh0$l$<}#bJc>vN|z*noS{-lv}2X`JsNaWrR zBN6RX=Z=)iG-RMwnNG#xRd<;N=A~8RW7Jaz8xd*4(G16*k2Bolf(JN5^p8?O6M508VBsLB{8dyd$P>Wx2x}F+iTzd3Jng-R`q_32hI#SnrQJ>~y-{>;`e)CPE zG?VutXRqlm|23yR=XXgZcnokYg+1#V|g0p$B%4CMl)Q0cp zwDO3p37=t^G%olFKUg25KjvIg%=9Rz8H|Ukh!BKZ%&BFCcyC<&W>6}EPFQBjhJpe& zjy%B(KJYGu;M>Y(yA{mU11UGG=f`)iW-6+!?yvU}M5(oI*faHMtUVP%$SP2TgoMm* z{TZN|(QhlT{LKyL&V(ld!e%2}7PSgVr0CHf!+%@lys^WkCR83DqKB(ogSoLgBRGsU^)cr!Ha> z@wp-<7zOCH{hNe+6Tqg=OEF^F#YAg!m7?bP<`F@hlxV@igtMM{Pm&}O3(VL~1}swD z*VF3y{!sD$v_B3xajPnWfmT~(wI9(~XmBlGQl&YpwA{!fg7D?9G6O17bFqJ8375^( z@`VTJHilxMG#lQUT+wT=_nh-DejJ>$2`CSocU5V8eX8;(rwa7comTSTyU9!uL4ztD zV~t338Qj(xW^e2jcZSz#%l9t4Y5(AS`bTP$b?%OSN4fDR4P=FQf0MUTEfg~ z{O@cecrg>>VwBy~H{mf}F@x z2bi&0-nC9xwTlI8B9NJ?V7;Z(E?`y|W@k=Xz;?c8u*Q|_0yL1BDj%id&$@ERD?O$m z8~EsXkt-)Eba-+ziINw;_p8iOraYggYIznuhPVkXvu{yS zv#8q<9hel*ekb!Phs1rJXosk!^5}m1mg%tSvr!Hi#aVAhWq*n6ROw&RqjN|;BR^yS^@O6SRZ$YGvh$OXPD zTNsWqa{n%*+A2@hdy}NuwG%BW3Bm{5!;rWd^D0sEdo*suQd%d9R;^;`q4RT#n?)sdX8u=tn5o`jGXld*SFK@;I|~9`i3$)%=sZgBSH*K|e6bigFuQiecp3 z)LRtWlgDe4R#)SfNzb1%F$LXhY${&mA6_@xeFmSPL%;z{e#du2%r&1tOmk7C0 z8IIMVp=s~1#gmB%b3m@tolL?vY(t70g!t!J=ep3OVEI^r>s#{kn9eIG}!9l3So z*KUM7Ne*sTc=bY~dnnKGc6eD0uI>FvaJiu`$*8nWDzUby?J9ttsoz114licC=?PK8 zFt+&^r8|2n?wAUANJ5AEX%R=GOs2U=;MJ#-Mi!~RswNdw8ctlV4FI8e#&OPbF(uso zE?-D1qzXvF$L#PVn_S*2t}(oo5$alCs^EtBlw9yZyn5JUzk_}#%KFgF{&N6(q<~0b z&e{tHldL-Kp5si;{kA3XW=|Ao3%c%4NrhUfA|Bd2Ai)dsLgTMeJ<|vz-M-AgrlwMw zbYCal+Vi3In|lwL$JeAJl_rf_G+P*5%hDW6dd-wYK`sNS8$(||h-q5j&L(w!?S1lC zeJBHmbyGZn7cRMu@K!dMd~ohoa~t(*pQne(YPdNomz$Edq^QwbdkvxA*0QkV-Am@N z?KHjkk@m6|UKR~KH^nzp8zi@ZP;(gWsB$Uey#A`z@wUkC-YC|ZO{|`gm*u!7P*U#} zM~r~a6Gu2f%}|&LrmJi8FaCCU617d_9vz_5bYRI1WSBfwNWi#&gXnFdYh4G z*9u2hvhXZ3r9VJgIrBX9=i;L#Bc@;S3CciGg*d~>f^pE(k(#pO~VPGo8} zEv`VgiiisvLPU9{ezAQfH`9KtKU7E$3oKCEb^EmffjSYxr~i^`e@URWZ8p56(LjiO ze-P)MqWO6su_5Mx6?{!}yV3G_(9I`D^)Ba-gOg3I3_)v!>(5B2;x(!jxpKeyN$|Ix zO6$Y#sxyDh$T(iJbzSQTj$w9SCf2PVgYcl3Nf{4yz0gCcL}k?2ri8EChxp&)3@%gh zFLO#Q9!shjFn_RjW(VkW`)4n0XDn?=SuXlhn;yNi50InVu~~0Hv~4uDpG$y749a}e z@o=iLQcSXdVnQ>BxpZ!)tM6Z_@A9d$984-9JxBg>jLW)d+=g|gOvAHYX3(ssjNI&l zZBiN2GWO4HUt3Vv=`8L&=(Rig73(1-$oEp#pb3Mi*sW$ZsA%{)M(D3J zlc-HH;1s2RTkeK7n@2Lp6))F2@9z5pRzfb8O@+^bxyGC=i|$wS0=Z{l zsl)@PNqf1!ak-_Y2FiOy+dF6ISCeOADyYG!DSZ5>`4s6D&7MCO%!%PdwCJQxTmkrT z3b+G=O4So+mpWN=g?2nv!ehft4P{5|nceuO{{f+2Y~rvlHviTSQzhB|g=Iy_NvB&3bdiY)a>dL3D{(XnK@)_lEZ5)u`>`gt=M_H9P$8QZY7He_`-h6 zYzsPOE5WHj`1_&zibqTYZ0&|HvoOeb=$%6qR30{#_sv>d*&~it<}1Rm`zB1TBL?9> zJ5UnE$s8LmAm`VxdlQo~_x11j2O4~Dk59(r!|HdnuZEwqfW0~Ay!ED&IHVWE_bHnz zAGuC~oPRig+T1y92PE+6sOUcD1pbLJseU=RWem|;!f)bZ-~ft1%8mGy&0fbm;IuU` z&HkVs{XM>uhvkjs47}hc`K2%<@FT;#rXiwqJd7csNV+qA;FJ$spZMO(jDtq6%HNIJ7y z5cb0ol})W9Zg=}kL&{WSz?7buIqcrRsXYO^nK5EMpp7dSdaZSWtn*}8F?<&_+j+HD zKdUBizlBIrWM|98tVSiLs78AHp`{f*y6-ME0SB$`luCNUw>`yn3!sb>7n?qMn-Xyx zuY-MQ;rQeBiGZX@R6SO6PoA4-sC(F=bIiD+xebe*iklti3#*^Mtl*&pvT>lWYzi( z$+(6;bYdFz58ur7HjpYN1dH;;2pERSO4C{W02bCy_KCVj?k@e>C1?06uDR;W_Rg&w zu%Nm(bX}?KBlUN(KCsSm#x1gXjBTZSHrfhOGLUqv|0nu0qm9N3Q{F_80q(-J&Vs~W zP3vl7H~52CeofDTygA#7SJw#30;7iT6!^AoZ)h@_!E_%6EkJDdRxJ zFnjwqL1Jp!jM8<1Sm~4XJ@?f~F(s6RYcdFQAp2P`i4lAOg+7-?KVl)KEwk#bJ|W_= zzJr;7C+Kh-E0Jn6lh%3R7xR*NVF);v;_Yf&fFODg&gEe(6M`5xnr4V7I<$F#x=66| zL_Z1f#A?#HRo5g%8!mouJq=4IIw)Cl2mSdO)$ru!j4z>miKZp`p5gwb<~hmAm(JPy zw1@(ZbVb5Dmgc~xgfmLh29wpK%L8)Kw`pI1!MWFB8;0!eox^GUUlJ{70URwXWy(A_ z*YtIjM!I${i5=KED8JUZ7aCPHF|w&s{fr?e$VSFFzoW~j0rJ6syys5wQa<*isUG3y z)3ZOSJ8pKi4%kup;1xqX`RUn!hjL9Q-xaiqI{%QbuWyE;GOVXFB*F2MLo$2~fsmv(vdJxpkyMg{%`9t!wYRY&~#{4{1Dh~yhTzbj1O zaq>sxk+W;tGqP0LpuS0xuO&f5(w!)lem?}+a^}X7_-f2<$X`V_n=aU#qhWhC<4w@F z06A0k`Vz4};{m}B{UlaOeUjKNO|^)4CrQ5mX14_96O(PagNSOvXUJoP)80NxI;Czh zXEa&divr*%Ui;MMcshyEOQ%yKMWkg%>gKjD+EicvEu>itfBtTAth&QWj&i1Neb#zk z0P^nhP2LWHJVE2+#$2&q3?#!^?q=^G>E(>d>-1;g7T7=0o(^upamZb9ZyqSJN|4!6#0^1ecPen6;& z`AKe4yegP_Ij!yy>fkJgG>HIc$(1BnxMtu1I8KbDCrh30NlpnMVqpOBH2Q{U-IAXB z;|enY5e=q~40^Yc63#q}TO1TFBKToz2Gp@1;Hn?<@`j?c1oak>nH36H8PeDn90ryt zX{$yWI(97cnm*2I7E~l`eqEBVXBxz*gATY-e6!E-2FDQna(S`#t(Yl=Cx2E;{K#2sF*hcM)>q?sGY?R@jHw&<6ytKC~*%!Jd z;E;&5)FQk*3rOY(lE|~Pu-+gnn%e&WVe*=V9iF;V7Fqlz{-yv`a66qIU(Pma6a7^- zsRN=Vf079Sn!e1**5owGe16M`3!zZRP8 zH`0;=+G1EtQtRrx%b6jkFk)%u z;jHAo`@Yi=e>3Knnp#igk}SR_AUL`3DZi?^E`?7MiH9t+hY0Jklrc(Pv7hMpX2z!n zUby5C2tXf-z46}BE@~is*nT92m0Ja9_~9r~KJES*SY%H+zS?BI;zlWJ&^3yzm~r6{ zXQ)9Da2kI#G{BoN=*GQrY(cnX&r7haT^whgjmt6+Xs+Nwg3}26C5smg#@$WM`k;$) zp%-_0m=K0F?*RymWSRadEp@yh`ux zg~RT=b^;WKbs4W#sUnK>1n#jNZooZr%-?Va4cE1lJ&)xcCq5P(<6;Q#tCuV7GEGsE zgl7F1ots}-I^eaE^JKRVUaq=JtS)enbnefO_MR8PV#*xwp2U5ASy`eT26lciu@H!7 z>GA7!DSL8(%vofiH0!6VS5uQBrbU{Ds+zt>fT*3sA7!hi5%!NZ3y8(lVH3G;eWn%$ z0E<;bsS*#m~X|Vx=!;oXypD{xI=zUE;vB=j4+qF=x@it*O(NE3p zr8HFn6l|}3;Q!`NOZA}P;BZ2}rA%L+s;j8I>DsbS`2D>&8iUA=oZIP6Jb?Rc1S_#A zq)MJJO^7$QMRaGCH*%h_w7AE*dH{E~Z8njkY#s2ywZ+*1o!pb~`%`&x>STGJcysbj zF!DOEq&(vvU03kZ%Mt@zY4uoTqUt{<>iBgV8ms#K24;%gU=z8JM~_Sq(;i$+e;%pQ>z@T5}!U;7?0-buNBF3@D=uEmG=<^^wW=;LGYb zSoJtnUROj8H&ud4)b$%YY{dq%Zu;uXJgXY*hR@I-p*@B4L67j z2zZO37U!DFrjQs3*|he+W3gJmRc+0sUa+-ngOEbg<&g!EV&E<_G7&QizAsJMx}crV zf0>3xH$0bo%7d$3mM05(?*jr|44*5{Cx%M4a1t~<>2&HlIC<$$_DpKrnvHtN6)43TVDAIA! zgL;KPlS>FvJytrxnn}6cBO*{5f;9}tRC@?D-Iloq?;#B&>0MBwZ z)^S{Hr(p-4K=`IE_ghDEAG^oVF7r5aTz64UE`@(tRXZz-N!IeN`=DFP4iV*f??2J% z>lxMzJ}|+YRYTjFFDBLHJ^{KM$l~C4{kIs3vZGi6Dnd^hz zuQiSlPqkS|Dg+;wKfodRU8};dDrYcJ*%UL%<2>P!_Y7i;FsHOP>-izFMzUG&9SV1H zR+8nJo3z;};N)^Gq~nnf6?1rHI-}#2i$e>MsF3&T+2`*oaL~RnA4)j@hXo;GCR43! z$;YFXND0HSI`^$FVnBB`vW2E|zQ5Asub(A5d5(VuO)KBEmq|E8Ht`z9G_-|*iYpxIhSUJyC zDa*eD?iVE_140i9-Kk8F6FPc2V|!MaW-b8y7}XayQyjdPU>6c}PA+m1fD8{j_}6pY zv1b1wUGBtsnVEMSnw_O^S-5f_FI)ddw&AkNljyQt9ORBsT)y(O4zEiz1K)_bh(rlH*i+mM6RM35?gMLj?G* zQ~crmOMkbv<6|fzH(73=`-JC8*6qdsCIFG@ilb3jSeSWK;n}n1aB@`6*cg7T)=NrO zV76TDDwr<6Ndmic|8Dj))tIul^f9-*_lvU9!3ov_pb3>$u&W2=SdYBp{HfZf0s6G*@llFWBzc9CO_~SW!YA4NfG- z1DrqQy0}9m2x2lAenW7QpQI5=Fl((R@^Y<`JrgWcR{w2oloh8TnDbSFBxR0t-5Q zB_r6L3o^-N-mg(lyp4M`PZNG)0zNlUyq?FKo*9UB7kx~b?6h9=sRMd1@?@2;g)EB?JY6CO;MHz~w98T?4=^ARvz!H7b%UL4-UulAd>~Z7|@(F209n8s=fyc z1KAz0{{!G^Wl06P#8x=j%~L#bp7{NMvNa8G%u%H6*+~mj4Ste_H#_lw(y|)r$pRP~ z)O*`Xv(N7l6^40ao4U=A*Dy|nQ46-oa19)?^d01jJyO$G=LWvLpxoQx;cNGL9L@}Xuy zjq3Tt>;_Y$%|5kVC}%;`51N^+kGo6 zJK*|+8{{0IJTdU#i3p*K5DE5%e(T*;SntcLE=1tM}@u)JrW4RSXmi*|t7$vVwtBik- zNHWxt0Nk7FKCA(82HOW-jfND5HXPNf)NZE}94(FytPibqcT;hZEwgAtl0S--4SoX5 zzO{foUz!6#`Z6u}5gyjnTU+hEyVA-ANs3uxWV(OkATDeX%}I^>nANeMkAO7C32w)+ z9>CR|>)oBJR_3p>+1iv;uA~G;v+@l^xzqaXj^3%MDapd24PdBH$L05ba=3uCh-}5R z|1IQ7p1@k8WxAq@fh*ZTc`^titqfU#F2XJ=_2?j9I9bhteGiE|(T^vrLUtGnlNpaP z4Bauo4#c=v1^vm%$rPm*G+J%#MrB1{83hrA`)lNsZ0eBxUZ2g`%D6WGRj79f@D_;( z2eYmJ&)h85+{HRF`}R*-8Wpsn-^L^VNJ3 zq#0&o1nB~Fy2oR#p_s7=@HJxCfN2%gJJ3O1stC0LCISj$y1Tohd?!6`#qt>U4~bOq zfIh{+*oY~F41a`A+iAeywv$=;rH+Dlb1mYvoAgaCR8-V6gm7@qkIC-l3SFQ<=9%k_ z)<@Jo#nI8b-qC8hG!L{}iE$1xK7r z_e60$?ZmiIMUeJrF}=ssR05VEU@8*C)}qBWNpz^InrgJwC`%dB^r`2que;?%8ZpfM z+d8N?FT>k-1~9~MyyDF3?^!Az`k(rG<$*ULkv zW1b~_yPOZDe#9L9Fj*{N8aAP(P8nk_(((CD0)*XDYRMcN!Eb>+V-4r#N6xIyZ_XQY zHQw1xUY0K(5W(CxR`%of)l`ScAS)NBJWEQ5e{PR9CGra#Bd{cv<9(Y3(J6lkt1V6f zpUhVChe}leC(}28pa*x2?Zck3R~`~FazZtJViex2L*lbD&YPvxkzuaW5q{YVFj!|N zBdpRUrfRm}c=jRW;)zxkyWqhgaP zNeOd&7uCA_fO=tG>jjGb%Iu*=$mj5nsq6`6y>7-gzso)anNivdByt=}l5V`Qvopjj zW_sKye2d?YC(nBpdTB^lgh3Vt#2wq!*VoJ52>_b67G(JS@)6%`Chz^mi$T{sz=c$+ z-Hn-p-|5SyKLu~M7LS`}$KXuh< zS<_b@{ums|p_7o1q?ZK!5^x`Q*GqNWPE_fvM|Kb&prflx*7QH$8uSOF=Vp_V%wYXR zBNO%I8}{HmZIc(2BMw}3$IVo&(rLfI9tZ4R2u{w}$2oo>E(3HDGUB3*AD?o9XKVa4 z4FrM?s8fq-%W6@zy??V4K7B%+zOJy^JZ?@3PVL2)#a;xM`B($HYXn5AK%wNBpdghe zsG;YugT7j)7c{s)UhHX!br9QS(C{R)9HY@Yy#pe@aOc*k%=g8RK`raLfdy1w*O(Yw zwRI#1ZWY{K#0$Q-^Y8-RxchpJh5gHrtG81JvwcXm|DQWa4WwCXjk$;Z*JwLo6bfs} z%wXahu!sw?`1Kxk+`Y#_igrZIa<8~M*&g=w(+LoCz1(MBH-b}ds%?Dx=4=Z5_uvf> zTPVe?Eg3|5GG#&)jwq6g^t?Dr?ybX4f_*@{PGG>gjK_ZtQFWr`q_oZRrEYF!7BbI% zQ7tQ=rf=AZKNh7}&bxugRVEkFSAC@s+Or;sPq`Xxu%m3aLX51>gcVYRY(^v1Xn1qk zwX-}z@1kn!RoYdkz@{ufWwXg+_s*L^Dvi$0&i@bErJJ%6e>@s^-c=|eXYS#b7Q!fJ z$Mn#5z(=6V0QKN^Ve@-ld*^OBXOIxY)v3+#iXf>D_27?aIEl2!6@oFF(cN`0#i`9b zIMii(@6VskyP@gzySrm@dx{8ostg6`6m3v|Ivy@9meSy;h(Cq3EdIeqTx0bEEvC7%j;skYK$3J>@q)mutKIJ9UnW&PNX~a(ou=9%^89 ziDTw=`>!5+_`Aw7!*gwOh$^dncfm`RH}*s)Ys~=GmE!f}V6p65kGX$AQ?abXf}gYHD5^G+6_j-??)!cQ}fPz*i}>UhWKUeYCG0f zRWBA68?Uf&iW)?gPAt738w0+lMCZ?I20k1w?`v1i6pL=zAGoHH^rXQYU0-Ayo`xt~ zMc8TFA~^-d`l&>cAEbK={|7yd27{tC7S@WA+QIJzNri@1o_}$ZrXb!UNdEdM zHBWZ8GwbPrm$RQ|*9kfQ9Fj^~`T$H2{-!DN&+p3Nu&3v)$H=%0q7b~h`tl=y4(MZs z%|hgtd!A49c~o|%Nl>Te<#4>Z3kL&|6V&ng+mB<`mzxpC3cNx=tB0i}g92pZSW?I4 zXr_^p2vL?pCcT9QWB?5@k-C!%qlJ+qObBYP$O(O%;$Q{rOJ8*tOBPbV{|C$sm7x^~ zv-$gKlb6Nti=5OId@a1Jjl)ZIPO8Z9<>l@4_I}Hdb)qLJ%ko~%k9?Iq#iQU3;`LeXn9j|Y}q0icb5=x0% z847|F%UpsI%JNmGu44yt*eyoLyy&&b1wVydJs4xrP2dbDJ#{fI^!O+aeH^Nvk%0NO zyOK8^Tir!n@e`Kvyv?1Vv0b;|^TcKkSS&*20Nn^TbLe*ql+03SAA^|TOG-JBn!bO-#pVsh zyr+asN|L_}gcyHjUd_pYfs|RklxA~!{Le^`vkP589eT^TIALctQaOf}{Y3nmo2L;M z^))ZmwM9tx=U-B`aXeTSPVLhB84x1HVff68fS{gWywedlxwB>?BxoE3XdBvX_tbmO zkm}W1LKLv8@Cc`?1AT+Ox8Qe)M3QSfB$2`m0IchgT)wIwygXovKg`L7i^D3Un*Kb4 z<}ookI#bR(mwv972%s7Q(ERI=o_XdP%W==~^JL-+5P>K~s95;tMf+FARX|p_D8sO@3BF)ar#5b;uI}mPjc;BU;k!6$s*-H|3S60inG8wV__g4*FZoa4L1s=DC_)i^!=kGz z@g>MTI`bchkYBe9ELt}LwSXcG8w>W{YJ4qa;6lPDP5-C$xAX{v9W9uJwM@A2iF^uB zwUAg9Tkx=E;S`s4A59scrSWGzSPH*DtdRC&$NuObTMAjN=A+~HE7s4sUYM)2^OHm| zx$5zgnnoq#e@`9B5MTOt{YljV)nXR8*(CI3ck@L1&i46yKW=vi`4W})1MD;?nVvuc zXY@Ss)-tg)Tbf9#ryVDBw+?$D(RX*8ny|gs@_fK|4jV83Q6<@F@Fzb2s>$g&xp(c| zMisry^n4ov48FN-R1mEOwQXNKf2U!CMn?|eVtxbn8rq4_WGp+6IAmdxPf`@DpLNc`Z_#j1jE?77pN)t@=Ggey z($#ihv-SSac-T3d3IaIC#+B*8Q%lj)f7w4wyeD{#a8p5>O{idAt_&*P?#^GcAKi60 z|2ao`E*-v#HRGoCX%TM-%(E`8Q1l%?y(d$^aVs^2tbhCS<;~-}bULb6cC%4y4=Optw=d(KuYTuGSg?(i!cvILhjnK z6hw*dkypJEB!8N(LENmk#dAP3p2Hn0trLf@vD&C()yy>hiI+>gptoN>?AXcrqVk=; zNo}CF(?e&<#B06$%f>&F-hoa|1*UuSi5w7iQcA9bW9IKbjGT@YT-kpGUb?c(L?EWD z8mre9XNdwT~4hP{%y^F^*9Ev#ZLhcVAv&QCsv#*_fLE zM68|m_mmu;D#9e)N-c2xYN&=jO{>6%Da?MgENrxB2)qV*D__^9xs|g&t0o zJmmDp#v6*Tj`MxbhFxcHd&QFV-;>yyj1lAL;<3y9Z>AlH>8PT}$Fsg&uUr~jiZzqP zu7c&3GnRaDz8I{m#r02hrQ)Q}U%~!n3NB;2T+`W9mX?kM>_dc`9U4mS63?!&FIXr^ zu6$SvUlu?vc94iG(4z^1{eCW7;JNkAupW;s5{L=|NK0C&$Ttg zq9G*dtxWmLs!5+s@=Ic(BFIfX!fl^U8Iq6EexgHkBJUB>q4J>o#rYf{S+#(&mvGh? z=(7lG6s{qyo3MHb9G>;o=d&I{o?NpR#{7Lz@EhoVnCB)D^3G}dop+Y7^CRxpg~A>B zIafP7(-oiNEQdB+O*7z$Y~D5@;b_p|{M2FLNObxabv=7wQ}jVnmBa1La@#MCg~LM> zDy6pQYx2kOR|HOK3tH98fjD36zw_ynbzgF{-7B5Dela(Gf!D}q2j%;V-hTaeNXOPP z)nf`j|C>R+O6_AlG8Us}YWjltPxu2IR&A7F@#?c0pV_r3c})3!H`IVXy)O7ZvYq@L z*C&mHPJ!`ZZ*pe4qF=`jwX}rWZ~gYY#wI4&;u1M=1^OO=I>1w{55>WsmX}-{6{yUg zbaFD8QHHL$*pC~vYXOfxux``Z%PksR_#JaV9u5kRS8Hu%ekTt_^+1%nu#$JNU!Rue{UE*$-<~lqNFbUIjpjrr3UcKh#^}Rx)YLX3wVSEU zB!;=0G>meVSJl6mKZoh({6KZcQ&sr2eMmN{+^RULzM$=PLF)oiev_#Y;l8>cbBLSo z4#NttFy~oyJ*0T2TZju4w8Yn!0iW7ipK;k4C~HucMMhyBcV;(ST?hk)5%MZLsm zkn{hz0QT=pDJfl_FrXN8cH}5xet2Gma?0QHG^=A}?i3ex%1rJ@yY`P&+pMm0_3Lm` z?aerc&O!;jQoSNoAzs|=^qi{ix~M-!{X70doJsuxo~&fT^N}_@i_?`SKhmHlvHNeo zfwhjAQhBggvYB8GJ%aq&C4Qj$dzscIZ!V){lCz2gf4=2*iGDJ-r5=H8n?o#Xa&&#D zl^p%Du=&>0#o+kQl_G*IU1`aX*9Kgx;o=<`JfFVY1=rOWZ}YtLiVBEZ)`=b;rV5ws zLhUfMz0Ex{nIM9ouU!7?y^4c>q*ra>S+rWqQfR4B&9B=Cw>lQNZXb=U&;K`jD|X}l zMHaJlIsx{(T4=xy(_ip3Pd*FsgRqB5JxGqWEqZ`&z_t)T`W%KJ8Yl0_SoCvt#3LZ8 zkoDNk$5$6Ard3%oZ9gU;t9#1Lq}gHl#v2gaW^f+d4p_13wlSYIxK<`Z=!hF~U%X5y zH&Xc6eX7qxCa^NqfR{-Xi`hSSC&F;Eg8oL(>-~<8GJt+ZM%-)SMroLca-RFVjb|IFx`*8*Uy9Euw*s zC&7|Hh`ij-``mBUSM~jyI$P7zdumQk_jF%Ze?eIKo^?WcHF6C^iMy4huq*?+_&Ubi zEPGI17j>=LTOa=nJ?1aPpIh_7MAq1X5H)a#K{7Vep$eUtKbab-RpWnZ!!b{F=6O0{ zt$fd@V2m@yuD+I9`N9R*<7uqE!FEQM0Cl{$??KNcYWXciu&YmzD`fTl1Or@}Yy?2K z;())8D7Heo8NaMI-+echCFP~Wew%R9+siVHyotJb4jVjT!5{y9_&ip2qW$qBHW1;% zF0~LHD;6RegoeURi)~ySa^p6F`~q_<030>o-Wwg`MwDAj7i5tm087Ta(R$C!hmEQq`LJ4hE=KmS&PEKM__q}3a& z(mN5AIabk`35hW|M3;nZpBOgeX7QoLy zG61&%p1gn|dmzh;QDHYQ@Std2P7sSlbh+wt+s(`n|0BT(s&zN1;K~$X3D~5D*|JXz z@jwT|xS-{G3fxvaROuiVBcn;4v-ThpPgOGowp22FwHl~UjR)@hg5{?fl430<%JeRh z#|7J9eUY|n)|O8!`r8OFcDe+AHgBbb3WMQi-fwLMdPevgc#8pYaPs%;ER~~TXF9FW zN-e*iKYO<6V%gCmy0O*#M%54-KM5`9*H?|HpG!0Y7M7Ugu)n$61mR6_%?r`*FOk1* z7y5Ve`$<>1qyhu!%$ghf-E!mk6?k|(eJkNi>#pMf^A&&^EPaly$hm`WPfL%N&&B4L zATG=1VbL!%0yY=!5w-j3{H45OQ}EH~oz2p$99tIEFcB z@g0WQp}oSU9!}O#%ZC3dFFX`Q0@@4oHbo9G(;>VS{q-b>d+Fec$pFJDl5}b^A_1&{ zo0gq6mr=Sj!%D9gA0^zc;v_ti^q{XvJb4>*e`i8fftyp z3Kd#IUf9VUEXKGo0c*66g#tvMO}b3$!~7d#mAsXsG=hI$N9C7eg7yhDRYm9Vaj9-w zgL?a|NB+>tC{jp+>!8)C%(Ovp4ladZ^_nWEVAcgixRzv0kle?y?MyW%>ZgK!`u3_s z7CSL)`V!Mmrnr;3fohVBL$Bt%DT^)^))+8DuG3uu5t8Iw_rrgA1uKkFbJM-b=?@op zxO9sTUo^9x83<%p5m1tly2Ms!>}B(?+Ilp?1q~LZUOV()kc$}L2*mv z&UvnAv*Y7j1#Q9C^cagBG9JHPGy*9tramY-ji!2&dHQ$g6ul@(%eoQh00qj+P6?%` z)5;a;CDUEhUega@dSFSqqimiGB77L?1=Oql`LbJ8{>=%g?t3Lof0d|=HnI0`@vc#n zO)Z*;c#CgVaJRt>T?rzeFbXbHPDNrp`dqgD@%Vc%bTeSjN{j9TBs2yn0<0HyAA1jT z<|C|Ba@d7|&%T4SPzr5j!#wtYjd%ba{it3es zhFGkHSa#jjgOwrlH)BJ)VANzf+j2^?6xC~xF6ti&woC3a%(B1~3_0I;qt#N*h%2*E zD&<(w!WmcN*7{K*k;e-9FA_QR14O4m7vWf2(DWUs>ZC2eLMfGoe~`Dq1d;sJu32x8?T;jBT^e%h%vk%tv7Ol={R|0>X|F!M!J|2$e3}g2t zeXk(|p9Ug9{T5?my~h+maf3vd@yXUP6N?~lJlm^ISnXz48sO#vKxi|-appzzn}T*o zu@ptXS}ADY%&Dhvnr%QjiqslawV-Or;=(6VRSiLWt>6ikt(6W*87DioQ4F&L=_G5H z5ar8~nb$_<6^&M3L{?S^w==mXVSWr07~W_9+!6iwK8^Y)Gc1mc-zD9&V4%ip(u2rn*D zW}fz;CL5s2b;VRy)YyB8AFkhZ7rxO86sPOTaSTt4s6G;MAJEFv`lb*~(^C?BuyEhD z|7KsdZ0XJ#T$F5-&2CV)dYkb(88w&Int6@}2Lq7SxTh?#?T^8HcKz%%0PWRK)DzXn zjdEGV0o-j=T79YqujS#k$|jFcRJ{dmG?664vVLgyor6n3l~B41L~w=eB|(AP18&?AMpH=Vk|Ug`z#D zj=8``N9cw{RGeMf_a1(S6*i}`mwP=L#`cq1EIp;r%FEJ$H@091w0w0gOIN@}=nBP( z;OgA<<7r2#jK0HBgH}(itA8h6H+jRV7-n~EB;b5lifCcz3nc-b1Pd$^bQ1BlbVU?5 zZb9R3!%0>+cH1RB$DR?+4_Hk<5N+56dn3QM6psG_Q*dT%D>jk5q3>T`QYuv0W4 zlqDp)eaV+rY1eIjamF80;icMVRIG(+;F}RgxUD$R_=Mx`Q`wov;MHgXisGJWDeW!s z>k-`aAlCdw`NB6au~gZ#!~%M>?k{i2tYgq28tJr&s>;tdNZFQ>I}|A#X_wX9nZy4$ zL+(oggu6MP+Ef3A{f%=s$B(+*1Z@5FD*~Q-gpBT@x;S9@SAYcqB)ghfr5FOiTDr?*x5m+x4Bb6M@@3ujVy$+`s z4^+ct&zt^r%{dA<6Ar|CDP@u5S~}>1PRWmhWEtpMb%HY^(&sEMyjMvF7REoG`b;JZ ze-neX=iLVx&qw9-Jj4N04*esuKP=}|pd8^Kc==TFa1=3ljm?X{>-MrQ@*o-MgqudC zVlj`Zz0o&t*(reo3BXl-G}JuD#735ZB5J*yPU17vhAgUBqg*KueRgYclDIqN9QfLi zhWeO=VSS||h{ua9jWW)jR7@u{FlPLk`m2KotUwVQY!rD{r!O0g3BH#^@-6c`xAEF? zdiEp#^BpYvM7fsI-g|DX6B8LYVHg8`GbAMeyZ70Yo^aA;)ink~7sN0#LWMPxw37rA zB`DuZ6A<8%fdDVaZ~on^jn8hM&c6PAojGi;7UD;&(hlz1N(0^3lkb$JSA7f`c_g z1;l?SJlfQ_H{WHh2QC8JLWDGjSMjT}CPuwK(Kr_MUA%El`v>J5C}B2=cqjzKyuJCu zr22=ACAyhzNm5Cp_ttHkSC|B?*2!lOLc}r(cTOwWGKzCKgWg!MS^{n4f79KFIg$X0$ngQalx1d>iAUl$*OR3n7VfISGVLL ztG&YXcU~4;ytt*f2p*AbB==v4d#E;s>I31&^zw{lZ%FM=Bd6msW^kO8)M4yt;1UAiH*Cbx0WmCmAZ0v9nN=!Syog4l1fqxHSpA$x->{1MZLpmBHg#JWhN4qUZRJRTGM zrbr-uk8lJrsBuHc4KE^PV=O2&_m?q$eIgh6pu!bOBDy}V?d@0Nw zAFeSh?_Xs5B7yvxX4K;|qM%7YTtkuQp>_~a(S!7ApwnzuMhW#H|5A4$S4SIqGFgXg zb~rV!)_f{Lp;@6N6A88`A7ow=)k}{?$Hw)p0qeju8i53l7d520HwQ4$IDNo@+9JeGQ&fE<2hL{IZ}G! z30;%`im+MZ0R*T$z4|(vI!TB10@)^kNu^mNlbEQVR&>!L`o6Hbs~^Em)8-Gupn}eCeqykq7J}t7upHIwChW}GUNfy@XN$GG-Sel`re$(c zK`C5#2(arRm0ci)Ve{qcc#+%5#tW%SFVZpno}YdAad_zYUi8|O+z#|UL}CHh7h>(e zS4mQ~%R$7etNAJjr1MozC!Lvk!B;AiZ?S)}RjgW5F*#3I@8vT25@9AGt)~((i@tox zM=7Edojg`!u5rvFov?@+MZA0ZWuz~Il6;<1mJ=p{+L~}llATfYFyd6V%>;cgs)1pK zek8yb;Vi1I9HvuYZKf0bYCL4Yj0crGV6HKA6X#u$nBf!Lg5(H=B_i1fzZrjQI|km0 z2a5)3S?R*I@jp*vrP|Rg9D7##q$vs18~NW_ultw0e?j*qt-G3>SfJYS0A% zzA^sKI^4}9H=AB;8bJym#M42n&TNo;uIg)E=xUtPXq;qtr@-hDLC)zkQ32JubUm`b z&jzhCDW07aq9A%$Nn=dh{_p1G3y+T{Y0U_#q3N$Sk%ECe)*hh>Bgf^*OHgN#uiNidFhD|8XD)ItyM1GZ<;!;?f|E8x4iv>lz8x+bBML3e{UtqcNd1!Om|Ba; z7Hqqe*w^f##C3Ww_R~hT7mcgp=ej(uyb~ic2uXG^I{a0Wpvf7A_Lb$s(YU zhbdUj*yMVs`@w)65!~-cvW~c~dKaB(?bqElBx>#EG&EX%f^VNE6p;$>aGa0Jc z<*Sy_b+ZAxD+7Zpx8!9-Ic%%0FjrmsKOHo%M$^qd`JwgHDYwS6r;ZuoeQ|}foQuXF zO~+#0tVX7Zisi#`({%}Z$O2d zr0U9OjmDvcv7~XY2tLOC_$qtz>-yAFu3IFCBf1eN4?Hw@|IhwIA!C9>?~Z3N&XVm2+K+{qB%5Mpc$r0yc!z#`+W@(5Xd*r5z&42Rt=}TO zzDiuD!(&L$Zza*EHcaht7thqkjphdx`?pev@^jaU_^H*=ATKD?>1q!@2iHZ1zo`EG zYSiORq81BHC`UXr+E3&V{!SsB3^UsxF>`2xhuULVX>LAgkdTm#q2=7~R%%7km!^Wq zumQT@bNkwiK|&l>7a!QrRmi8d+@a~>grxwm2vcxo=QEs?ld;B@_89Qu1!6KprPMC4 zdFk1!{Gk68)5T!`_JwS#7T8k*5K9&;%s%PTEQm7ZI3{M_h=;}I800Iz|CkMat5@lt zPk2$lX5C-j=!u=#uYyC7@62%01imtwJ_NikKy?Y;JMZnai-{)tg96s?d_k!|(!|0& z2`6VtR`dUw_>;rwl}u1kh*)&&(#(6a!B<~6dNdh~ok~r?0za_$$7=zDB;E0fT zq~9hvQ;`uiqiPnL%|I^fB)e6InS|S5d0$jkfp9Rps8tc*aO7MXZ0ac4g#OXVk^3?i zgbDS^@u8k?VF8bGPN9N_iyTDLU#_)$mhG`P4~Sx^G|Ygv_@dCaGv+;JNRv;9U=*7)vWZ*cIjXv^Xo!>=PR0#1N@66x#o&{x-e;XrvV*xvrT zd4*79-SA-)ews*YlCAb%<>C;SgKjOJv?I?dKYyi|^lugd><Fy5=G+jGSYwT$27e;8l=7!_ zbYhOQmeCJCT*3RuSu;9^L1+-g1&yqAf}oOND%(HXRWlVmR=k=%Wn3=c%5-(2To0gM zQANv_2;-o%ITw$GV;mbEadaEx!iUDDRWTmf+S3GvRdY~Sgw2`c@I?IjUCeTbyNFu7 zcMTbvsk^o|j-s&dWm`cn+^BLpHz#0UVvbWWHuhJ+yvF%(&ylG-ST8iP`FvH8{?DWt zIg)I&?p?hc(hESqIel3*SwXBP?oT7V{3oB^|CT5xrb>8vAM)_&r`D(~eYI*Kt}*}x z+-S_oF|^T-0L-tATi*}Q_73a~pC*U>#aRU-0HKk6gurFzOUwk=?nR?&v->ku51jFW z^0B4WQOS2W^d$uljb&S*tqdRRi(nE(ZaIGHhJ zTp5G}M(VPj5{B-YTi8N8sZewSg1sg54BI~9;Ka6LrhXM8XgWTSLi7f48`-h?mdQZGPrd2Mv|Aqo|WNiNlc zdHv?9DySPu2$t%t90Knqlz8q)U&nyGY~23R6x|vO!E*iV`~9U{n2fLZcMeA)n!y1C z*GQ>i6&gc=vhYA~8(jZuK&uI0MZN0q4gOIS^ax_mP?$rtM ztOBdT_wV*}UL-x>?3I!hiiu(?>D448#;e!u>*Ix?Ehq>VHowu=gFE% zZZV@RDHryNAJ3IdqV{F^Vp7pZ!-!<%(n$~U#cMiw2-YK41VCNzl0TLwhI`Bg7fDGN zcRR~bBA%hN71?olO?o=0Te&P_^1gppUVO@fGu$!b0v@U*l%el4yZM zga|E+0$Lub*(kw1*%|Up%DqV7N)#UB0LA9!XIjMH6JA2F`2hd7P-HAw8dn}Hk>m_# ztTTp)iE+L6-BYj91ofbLJ5#d`N_>#2jgtHatx7EjK#aZQW`Fj&yr-4l9fSPnLaUIC#%(N~vF8bj+6|G!pY<3~k49vGHVMl~bg{ z+|cM#dCDjI!-KbZI2}wgIQ68yTxjkoFmwzm)7A*sT@mIM4WrAB0f`6V*=;}x6hr2Z zLJmo`S=sbw^k4dIf|sy$;$=Urc2b+tJmD32`6eCR(| zZnG6L(8gRqa^C|ohj}Iw#>e zQR?8@`X=OJ`g}R>faL0?cs^ex^P+&Ro;K#);L7+{(QxEatx*9xD$h~14Dx_dR}7bg zdrnj)v2YlbeaV|iD*V;;zde*7YsnpG-z&gb;?gnc1VXwfCIWk}`LrhHz_;{=!wG1d3Pt!_unljv z5KLWlL!YuH&SZecS^^i7nDGmTtM-xb)hh3qlXxQX(ydZspMErfc#plD(?E?A(O6vl zLuTCprT90rt<`5uOW%U%B?M7BR(HGVWHF2v^^ul-b`J^$pI^d6U}xh-@XA7Ma*ayb zb@GKt;n=-Ll#L8wHqjZE_Qs=zAq%?7>_a!DAvr@IoFh*SQ> z^?AC*;29aP53HV3Ec%QkmomPHi1~+m0VM(zi`?nEggTkrQ&#Aw*RT_olbhGPA)A+W zI8Tx`+LG^58B;Q1*OpaS?M&CjbbGsmXEQy)?H%d&5+3>9q`(q;8vUiYe6wmHNGXzw zNs%}~`4vkt@7`Qct{L9C!0^cgw~zQ_$I0#Q;WD2*OA2hdq^XoKU(^`HWM zd3^u2*qrRdL}5Wa&Fe|ufc-9GJ*xJy!{j|3akokgX_}VDm+(SZB;kQN*myfafUe8K z+U(D1&m(FMHA0oFA0d>tv>}syIHy~v_V}9G0BvL5@de7#Vv|=cn%=HWCURh!{<68WV;}r z9!5Qad?7!g1=lP_dRR{Dg<06ZA%YZZ2gTHQlPyDMrnpv{nFrCHK|J3`HHL(tzMIBT z^$r?YipCgeE_$UV)*i}}O1H54{yB!je&PI7EvHDrF|k^%|JDMOm1QDPe;_6g7xXL{ zg;u9U#L``s&sJB+)QbZry>iX>xQlSOYh9~#dI|4Uccr3D@c1E}(fu^G!m4^o4w#y> zNT?Jxb&T(9eB@QVOm?buI$9l z&OwSbAGaUY7XTb-|7|uPee4f=)<8et7)iEd}{MAX|S%P2r zwz0enNVfQB7ESw+eNSWs9lXXR-aRW&qor9?HL(y*ZzXNCEGmZ8D1;t1acdBRA+FI( z@kaBj>slSptdR~ps@!>ct0-L{;OMcQ1FaD0BJc`-iEkuh`3&_YrY z$a%ETc=5^e|Cd*e?GB^AclL* zm=|ci2q$DO`T9&X@>`>5_UGDmfV4`t7W;ewF;BCqh$nz~d?4cjs>DTf?# zrYbY=6L|JeR&FJUJ~Z#zlF|#BC}l{8KXVOPd&j>cMn3m7s}6EdkqQHkVZBkZ<+96&h;z3bb&`g7@QAU2%FCEiy8pvfrxqg7n^1lpjzz>*jbQd4R zf_o-}HeGZ~TW!|0T2>XAPUbLq_PMj<*!BDuf$tf8tS1kk?pK#Zul)JRqGb}RD%5s( zxtW66NJIR)2?j!Jd<$KKQ(lu zsjd$7tU8Z=u_Ga|=NG{Y7ECp~)snXAKG>O05vz<*0^=c2^3Y1CbrgSIwWig7^1G!D zhWN3vS}4Sxp@MQZAtfHv*FS#3o^0mjBU=$S`(7e@oPqYhFnIbd2yli{*Zv`7iFpK; zjE8jf@d1ga#i1h#KW8q!NEkPmB;P0u4X?R&_W4Aj2VpOL5HP@>z(|60;^OJ~es^Bz zB?ppmCiHr^zt%*oGL3U4}is zuJ$OHkf?CKtwW)f`K?mdv=^t_uQDE~*;-!GYLjWH>T+u^s@kK~r^;&ZF^d+gL zIG42)X;`enFr?#^n3xm=o+eMB=u2zTh|1+7gtfqPKgZPQA{sG5G8gRApih@YtodAL zB73U)DACT8-jUN-iu(t_=*p`AE)yzf~w7ubcYRBt|ZR&1HRg z9Fs>jCufI41O@hb81l-%$!xUd^`V|nshJcSEi87GOa7nk=vSxDH!r3+#~Qy96nkke z8JWjw&9G8y{_Q&1`ZeJbb^`vsRQf#;a*ua|Wc1oVLBvWF!4`I&`=?jYJ7)K6zvT$~ z(sS79s~2dd$Y~3~Y-V5$JXIkdeWs-Oq#zOZ7Fohd{qnZdl|5g}$kp$qFiXCyNw~5P zuT52yafg&a)heVibCr$<%_VFMrh(&$+pB`tKHu4!EB=Jsi{d|L7jWf1akJO;lgfZb zY|^v52=Eb4E#_~q%-jAE%s@6Z--BIBn+NC&pdZiLTGt!Zb6`Aut(uQ<5*kqEIMZBx zoYtaXK@HeGoIM0jrI9Bu_8(-uyxp>P^E%C$}kJ~e2O;d(*^7X zGQ_LhOd>hCPdGOv}Rh(~)Vg7YKzrx7mo9-DLx7y{sJGAMf6fc}T>w2X;i8)#VCW8-SN=MJd4= zwy*K-^Ju;z{CplX&@QyFg6e)BpQ04O!=IZ-xB04RqrJZvHbwa)qsDql)FcKlp?Fuw z(jJDGpUqfVYB7m&HNiWFc~;uGYO4HmDP|K76Y&pJ8>QEtOq04r28?>wHI3T;i@=4x?r~R}xa;rNf!Q0zE2Cqwj)ZTf!kNzP*a? ze@J#ERjsK{jPhiRF2TAVikmTVX5V02Uo_TPj3rX(9dT|fIMaP0tj4|k!bDR4p%>xSSZy zJr>nos&N$Rh#R2H!b>43{1<^73aA{4$Q}AmQNOO<6D0bp8T&;(L^gUDvymozCnV-% zHG6V7e(|uVWap0ScM$Y7+nrt_V05=p{$rw}^%O-YCWSq&Ur7}EO(FfOc1m0wL4ikx z6CKl>qZMEp|6MLlk$L3tBc8*gEE)aG-m8T=4LNj9{N~wYbIBrZ$_NI-b6`}7qRGW0 z9*a}!VSDpjt!QgC{=^o7yqUd!)Cd8Y5_zUv$aQ6i8e*i`H2i+ikh0kL&_pQCDe?EZ zYTqmO_%-j45dFPo1#?Etj612EG^bL7^TzuWoO#7K!dzDUEzIuW_Q_5PKQb30w9b7@ z4#|H*`Z|-u=&ikW@AQsx#SX{^1U{kAqoUC{u+OJ8Gr2```!gHLIngT6}|Cm@lsBo&lWBHB=T<4NYV#gMOF%{FuvJ~H&s`F(~mY*bY8EwY>JPmPdj3D z37Gy=OKIdAIc{YY<#`uMrtA=39{k3QD4taV%%_i?`Df8fhpAexGP(CQxHjjKu(Ps9 zuIM+N&6-wzgLnVHkACl)j73*QWfSw^1Fs+rx}&8pQmFmk@#bVGT_b_tM;)tp7c~%yt9OiRRJ9i$1=Lc3aoX z5LOd_=0As38S&+Y3J?j*I`k9NtG$d`Jh&SZJ@L@gbBcMRYxV?(kTSMn1 zNg0P}kJ%z)b&J5*>o+@_ksC=7Ky-_CiQC8Z{P!^@Wy}+3zyt6~+@BQh#8N(kl zPHzAz@1x%ZP>V;t&yVBDuOKd!2Zg0lO*L&TDj_mz1q<=86`#WQsa0c3qx70A3(bX) za6Cp^gmF5`6YtH`y2K#O%e@#-yCSZp4D#JsE*pWF!7urF0)U@Hn}kHLmYTjd!E&<( zcDi)zVEkQcfsa~x_ytVnG|@}Z;|;lHQj_jR&{P3OIBPnU3;M^s8d$AVv8OBaO_6w~ zX4S8T!!#nI;{GikSzPoQH}TifF=@qa$+IVs z+D{aTwEl+zFZKY~>2bMO`|uhzs?f(1{v=E*;mB`|RN|7#Q9rZPJiW46_`CXR;{e5v zjS*k%okAtI*h=TWB&okavu-a>irVdpKL0Ui^bh&i-YRFY^Vy^afZM*4!Tu=r$y@-V z`ti5nisw%ZY4rSB_|h4i2kf;TbT9GI7wP1U58I#)Y9k7zQs>a%1lw>Dp z|1x!03VUTM?fizPPkjlJd4?>4g4zsEy;#6yH0gJxrdN=$PH1j zOA%r(&Hfz{@r*K@-T40`_Ro*=)w40{V@E&T@xGnQS2WmtjV$|d*)<*Q%ayF}BADx5 zmHdpuoq0171)ODCjmkSy$|>X4wpulNRT&1gn8p2QlV;|a9!DS@6)g}_0!N)C4*PDx z9iZtu@ZuHl%rMFMS*^FDnP0tF;>ZU$Fw+T#oRTC?0ilMgp)9|%yXK@&a!IwMn5lBc z-USW3oWhBJvi;6%!2O}+Rap_o_b*(rfs|Ww$SyTMn#YrO!BqB^EDw}M<{(7#OXfu8 z*Qc&%(3L!{Qx=oF2$sq)yan&<+$_?GXdWr@`aqj;9STU$&X->i%1}bu-dG7Lxf}Ve`W~QP)Pp=xhTH+A|X)Vzf;x!D}?f`6q$#`e<0^n zOFRt!L7C>deHcyte~bD3cgEB7f2a`NxGx%i8v5VSTJe9CgZ@7?3;+A*mj6G<*qK&M zyC|anJDRZ-^d7AJ&+k9>O)CCZNOQLL^M?7qf=mCOVBP=Def;0Knsy&M|AV{!|NQ@_ zlK(FD|FeG9%e@~I5kRFyjDK@tcgt^cqvj&xjEI>UXllN7svK%Jo(Ii-kJ`l0YUWE4b!JP|h+CWs#E2f-v-mek= zem+Jz%e8$fxNB||$lgnnDWzBf{KmGTewa`*3jOzG!xJ*)+X24^_=11CK|_j(e)8A? z&_tEu4}MjqD2+vp3X_w!ntgUvn~wy$GlQwI{QT2cCgkbEuS7V4G3LU=F%$u48S>1w zAOHrqHz^u9ZO1(ElT`tF9*z$d%;1(Smix~043D8M_F7<4La6F_R~oFiDX^bVRh6hS zqmrO>DOqe63V4!Op;Cv3w1gK-@I?$z$(eIUB)|k;ANPn7ki3|_{`bOKD)~7@Ot>`1%g-H|PL5QTNOG^^(Zj};JP|FF0iIX0;->Q$tC;dfzj zY}4?3BaadM!gomMi|}LsYFbZ2y+bq*oq1xKFXYX)ZNW@bM5yK&2AD%JBFIe^8+2;| zkK8T}KxO_P@gwvSdPrOHQHdS6x(GG?wR|X zNkOfop{EdXN%mz|q4X)4Zig*lD@yrHzT9jvJo92XD~UH~7*;o}!1wt{<2X!=BFucEWhU_fkFIK<_QP3BnPNu;|!%N-~#uNx0A(Ek8f- z!9C-61Svny7|wBOuasnK|C+)q0g z`_M4s9_$ft$|-)#MCsD*bfnZ5k6LlTx4<0yuq9)@gX%zwcC7TQh;U-5n;;7CNajC^ zTuS?O&Gv|z-^9}>XkKv1DW=R(*WbC-wM(n}Jo6wQG7^hm@l6CL^f>1*gWFkfW0%@7 zz*$WELxP%cWV<4Qf#UWVV!2>R0Qxl@gKi-=5|BvB)9w+ny8S@&XXJrJ|-~g;kDg2S$t8 zBSl!Ncx@7tvM+FLCKfqIsP07yz@hdVAtW(X~f{h=CdT zmrF|0A3X!7Yey_LBMmRSSX^3dc&q8uLrJ1-h()V~>C9)@M5E6U(fxhJ29ca3MLjEN zp7DmXB_tEWB;uFL4f2Tw?|AP;qjx3x*zgqIg0z2_bDKQ9;Ip>~1I>QIEgBuWfdrE2 z`Q^6K%kL?-bA*a_7#T&m#F6vfM@2;qlFFJC6+w+I<~15k*J`%D^MVj|t^fyT_O<@> zBsNo)xRn=&mW}gsR|KR-xO0}Z73FkYAm za>hdhW6g2>M*E>K^No~Gf|Z+tHz9JQk|3ON@o*)=Avzqmq(lRa1J7Sk5hDJcDlX9G zYbKY_`8~{A^UX&_go4;f{85w$8Svv>Tjp2<|D3csEGvo;VprO{wILav*W4Pk<6ACy#P>lrqU{0>XjW^J1I&R zD7NgIh$@3e6+*eiXCU7;-@|)GA{2?ZO(hA~NIu;Wb_Gu$G+a$tSk{Eh@kKD zGRn_;odFKyyWC^P+QLw}88RG8@@Q@#aTR|KS$a?)(t~qHYBVT>sezI3dlV_c=oT8p zIW2pxGhfOQAuiZT2#9J-&DDVMTL-TE?9~X{%Z!iWp#O_e0I=alWH?S(yAI!aVS)*4 zy?A_o-1?AUte#w-p~&xIAN(R!{V`P!YB@kDpGqEeM z*Wuj>1%C6FH1XDDR+DP0zDQa}Tgq+js*%}ENG8x11;?(ZhXNr29R|@NHI7Mtxf6?= ziVd6y_I9*St4(laMm7PlfP+AbG<6h&*gE<H`BC;54u>K z9593ebj{+p#{MA&t7hh`qf+OwjNvgr9N^K{eQ+F`xA2CCt+UMWyP0M{6i_uf(P`s; zXelqQUa@S@#~6eul;pT>yGT}f)Mc<1+DxqU(oTq>3y zFcaLGz_x6PZpnoQF2-=>PP#!`u;KMKtBmT0p|vnin>K~g<+`1{j(H2={9UKJ#SFfQ zbPVHyFL;?imI;_VfP`@?glOMp7oHdTAzGhAfVea%ZW^VTYc zZlGG<#*wk@5hH=A#L$oTJQA^=kzZYyro1s=vR;(F+Ps4k*KL}UKvf#U>1YO1vKODT zG~B!v883l}wdK49Z(6T^OkVgmA$@AYv)py;A-$X$U==fC0K<$~mHt%AEFNgzQv11} z*X>*3_UTs<8ltbSklG#3If!SQeAI1UWBgpbK~Hx3Tcm z=ELS&iZbfdgtTOWUXE-lpXt1+G!uxdC<#zUZ?IJG;!_oQPTp-{I`PGIeN7IVpBJk! zlAe5PYoRct@;7@XvSNOnc|;!J75PO2sh67g`^T z5hQ0O(uV(vx}144>_K?%BBGZLeklD4AZCesb;1CT?BtmG_lI#UL~Ytj9;%vt`t){Z z9gcM9EvkQy>Xx}=n9l0|^x|)(cIBP20Ya#6M9?!$=l8ZCWCnh}OSgvV@m=!|W&~2_ z+3dN61LO)ZML+)mF#W~@#EgXg`g8}%VY~t>Q&VSx=xH*WK>@?Pq4zyiCt;qHn(#4rQrHV;J~f1&zs}o1e^E z%rF-L1cJxuu1PbqG7dQSbjxa~cV16E@d^NI(GgXs)lQhwZn=KQ#d*>S^bZPO#WGn# zts29A;nfme>2&X3f>T>)>qT8$Oc`pB1H4_b8)uj6VI=tfPBW}>uUh8tLVmf4%xQem zqSzLKq=j+tU9YZ012L=5LeX{m75OLGD${v1P2Ge>DsIL%Z1K@r6`^s&=v36FEoNfy z%&&1SyQ@{=&#ASyebp9y;j}4ax-x20w?A4G7wAMrIeAD=el=H8G$Q{E!0)a3L0#RJ zpsH)eOk5>g1Y?6T3Qk5D^V$5%Ul7KtZHu}V`}iZzZx$ZW$PHrMD&+{zsh@{fR&(?3 zZ=Pd}u4g;rD-V$U^2eyoY8TsYfi7B*ET)bLd|g5}Y~+Xg>WDy`Yk$6lx8v(%gV0wY zjC^sD&g;?d_?IvYo~l98MkMN`RowhvdE8#^JDw7?I;LFvHhp*(SJ>2bbpifrz18*N z*gQaOj|O31^J$nfw|_anGnGdsy}A*&f`5D#P!bbfwCVdp#O)Yz0+#d(i8M->3sT)1 zoG?L)n!xAOF2Klyb_l&i?7I2=Knvz0OX4LKN*=(R6=@*nGRAID?VA&Li=~QQ%3($N z!MgRr2p&ly8F)Hd1nzwkV=Uel&i)751dap2SV-5lzGp@PG_#U71U*Wa%?5|vFQ|Td zJz16!0(IF@Xq%huz{SdLsGR%1i8ZatdWiQmhY>pb^44!m7{mP1Smx)^lhe}F{LRn~ z+GX3a6mU5Y$UU%MG2KuJq5(gN;I?aHgWsdj1q*4ucXSG?BF9lYm#Gld9g{`da)C;} zcnB@`+S;5vK2~ugfKCcpEtTqtT;8gy~OT#f*OdzrD6U&n}>dMWGRO zLH@;Y|8PelS2}T)?LgjSg1Gd{|AWbhuPq7+sL-pQM2x>t#33;Md0l9ny&z<&k8>a1 z7b-7e%3Rycsi`SqT~!f+nOf{>+{psPV8)&ha*U#)rUs?`s#K<0)1wrV4Rxo8#V8bq zLWGxrHWuH19f=Q>r5VtA@L8OtqrcOtUvUI0Kgd4t;3QIBuc`9jwA-}hu%F=}dQstp z_N{`w0S`pWf2`}m*O4(=r1GNbu37 zx&HJK8XxM;ntRRVfQ)Ow#ufn2CMkI_Mtk(ir$o{d(OaaVO~%3sB{`8Q8Z3r=?=gpV ztGU-9oo%b1mV9`b<1ig;){BweH0HI(CuYm^+sC@{v^Z>^UJ$qLjKC0TvaBg1VCo`6 zhv%>ho_I6wzEP^w@K#=O?3@ElL|HIC#7Ts>w=>4AF9Hb>6^)h7YP>}utZ?Wxh{XTw z_}I4Dq}ungBc|~u6(&ONnX1|X4pXbx3pmf(mFB(?@~xmhQvEIjtIYeNwA8vTaD0%mp~9|)CUsnD&cEVAOjeecVmurk1chvYPFu(rR7k!t6XHeK(|+hcW{HRn>pHa zCEeb92?)%og%2;NKv)9h6;=NJ22rFrfVzSM4KgF)7*0M}hTZ-~3JcGC>0n4GL3}%F zk$O~TskVp zKOJ3=wi$Or@B$dwkfni2k5<895OG2)niNy8T4|UC8K?7_{6^T)2o1*#|lc{ zaQuYuK^37?o0JUXXv{hJA{_MgKkG8Fy$;YePSPs(Ft3etb?u8AhUh<7QxH;hBn$Tg z&z&_z_=xDg8%Rd5D;2-B^mztYm@qoQ8x6Y-7wZvX`x+cqHf5No<*!P8$VahqX>~sA~<$|foXVqjRqyy?6l>XXlq$`Eo?s*E|1j*0;qkbO&2R6Wm&Y^&LBq!^q%R0KVkBKhQM8~4{BrV&li3fUpmt}?M7 z)yevebazCxGdNYa=QQ@vErqIq_3^{_P!GmTpmHFu^Hvokkf$y`>~|n#Su)cviQcfA z)su@eTZ`+%Bn8Jl4TQ>iWZ?@!O}2+OVS#QKBtcXnE^K0)7`kgxz5 z`N+)gFCyTw;kZb9-5E&C4p(imY?}GvZRb&iQvJlJ4te$3PmsQ`e5t#@o7ncn)6wYbSL0xT= z<-le-*DnJiP+Af;P?+814{G&!-msRC)5eAvEY(0EkeN`cFbHRDge$L-4hUT`7F58H25c=B3e zk?8K;xgZb7v9b2Z($g_Zi^sj6ox zR@PV7md8sCfAQWCb_~T219zf<2|AXRKi(+$$E8k=JH|r9Gzw=;B*Q)=&Hgg@3`{v{ zETI4gg%*^^5y_@ibh!&l`N0WCJ9gJpqcgs~9<})>XzkUVW^7c%2I)qv<$dmB6&SZp zWvS;i=gu9oA75sdaPeF^Qf55q!h6gnk*&i24*`9jkmTZQ_yjoIXB%cxT4iBpcc>a_RWmf(S0T*|G+q1(+I7VzCd^!+)* zvc5MOnx#+coO}CWi%mGt;j}u~xccRVel1|E`FpESD*MFN#JIQmz&RKS9vQhEwUsH9ueHZyM~VTE%&;_d&jB7n?6ncHEgL>z*XCdzeNVH^T?^I)Tx0XR9M30n zLsKWai#E@!kd1an9|q<141d9+A*i^s1=UCAZw;6ir5WiuEpxT4e>TkCw!F0iGJXV0 zJWD;LGo_D;0*LO8Oz^pN%^w|(ha9Sbu5zbACg8hFBH$P7iCt!k^KE>2ez!k;IC`Fd zi~38M4a3ZzN!x|~0};FF6MPls=$FgO?#yBC!JXNoWsj@@dbU}ddw-#W*41ef&+C{2 zx}$G}0p9l~H1g?pf6y*M_(d-Mh+hDFws%|8zdXWMdpmCqWL0o||CD7f0Nl4p!e3o< z@OWrHx^XEeLT;>5KF|8RCO{sws#91XUI-6 zG8uEPnJ7=Fwqer>J?7kn=e>n*-t&0U2zhLh{rLyPs+;=g$eL?MCfQ~!P$>&B54h>@ zW@PgoNpF;facvHr3xYAZg1WuPEptJaXkD;7s#b+j_q!OmYf??`vA)n-%={MPmlUse z0+oWq3}S0c9~s3A$SYY@EYazRBsyQ5Vkn8no^6jJEX8T-wbX7Gc^?q^-Hs6K$FPsc zSp(sLqtrk91Y?TCpYn#xYvwoU{#>eCs^1r&<0hZy{GX zJow-r@uw!BZe^6%D{{H2wi`O`ew_m3BwnbE8Hj#1wl^IeZ=>mujc;>A zjB#rcC~9)4H}zrai&t23RW{Q;(yS6|kq719cCN>jruFE48+V7@5h$j)(^MdP^TBUx zr^636N2LMjh{ysr)t9U$Z?7^<`ke$UhbSs$<$iUKrMD@eo&LS?_+(c@?3B{TRs+Fk zKl`e~YdkIjFl;t)8c{!|z)>+Pi}76CZRwL=*_eK<{<}5NV8UiOdw%$44BTFn!eTZ4 zw*hW*H;HR+yzxFexY_;X>0WUCj(*AS>HaC})e|vcn)LP4i_1$qmS49RTa=VRuovMmL3qQz@Yy^CGfr(JvtSasNlfbRdqA?*_v1R zhM?vvZ*%||sopHj$_GDS%_rNxb%F>S?GFSQX=4&o18QR@QQ2tB*Wc)NEKlP!<<@l% z1Ktgz)>Hp9cd?_T&K{QC{W&HhpU4MoABc6Lsm_o1@uhM-3MX^-59mQi{_UuVwUa9o z?0jwRfRrXx&m8&WX%w68GM%yA81^+9cgFOZNr>jaRR;aG*Uv*kbM>cI6t2d#bg+f) z+|A>G*4wkRtx+wx45SjIwWs-&hhVBicWYBFJLK@6Y?16XqtFfFa=^`}4v7hj6fXoV z%2$fFByK9IY+$h)&PA(ZE>>CUSRoNFmT9dg)(Hh720;3l?_YM+_FZl^G=D5< zK?>81^XpJ_)*i0SwqlQHE6$P;-92D^y2bTW;GH=XDYL3jRZ9~%|1i{R3^!6~*ohChMn(j%gu67UPq>mp)~NW@z>H<*yALa) zAJrtMNPm);TEZurF4N4Q`BLm}VU@H$-i45wYP2$H0iUs=^Z67TQyKy`On*|((uL=H zOa_p$`8#{${8+MdN_%SrmLMAFxb?Wo%TLV#4|$Agp=N~3nOi#BBYY?b;)Slb$K4o{ z&VnkqnmZ)hP|pn4hkjHDx!tkXob-vH>Yw*rKOnCurB%`GTpBZrQ>^2A$T0uBH4msW z%er{4b!R5f#={mC{93TZr)!cZDKIzxkja_d8oeuUI@xpQ<_;Db%Z>4=Y6I5TL?DdI zGJNJA({^x7r2a;@6D*>)UI*tKpCWg=*iuYtc>VHg^H7`tuv$|Q--@LQR$J>(&o<@rn^Uxx}3ui zGsoM86)!k}V-m&g-)XNa=6P;kD_z-6OiEFrFlP#E_*U(Z1lelUEV$+Q#ERB)1Tm$$ zay0;D)Dd4_`aamiXX!^&fAXHWleZ7{{6KJJEVnW`fDPWxoW^02(f1taz?gqk2?mzy z;fDgV0ZLjuO{;2O;)co4eq5;(hKIR;?S~r}{DpXqs7b zbAJ?V{B3%J$ z$E&i_&I%u_0;sa7ojVtL!>#x6b;Q8hvSfox^5yMu>f%_OWr_evd@`va6wyJHJI?iV zPj{{CSbS0XnPiABy7?U5X6}U8&9|ilkH^wzER6~~5YOW&f@$S%<>^mz!2>ltFBEU4 z4*s}PdUJ`Ix+s~yj=0Bye>E2EOWAVOdF4LYqZ7_9{T@75Y*-%Lh9?DZzP}Mdl)pU* zDSvxpBQ1T+5QeKq+9AL9>N8gQWno1&`N|qswOzg;3F7KA3`B+0Hwi18r83FG(RI^6FyL1NIagCFXXDlvwN#Gx8kABi{yZ9@roFuk4|3YCqXZVwOLK!-~m-(vwGIrQa zU2{KkG8znc%G5Z8o94_qzwT(|+LN;qD7?-HrvOh=&8ZwpFUzWF7%u4RN{_4F)#bZp2}oqXcMz$5IL9&)9+3 zv=5QZsc}*1p64t+AWb_f69iuCy2ZV0jow<8v!fp=urQM978Rm5o?$)GCcG;z z|5JbLB6bBK9CrPewAZf-TDIheo5Mx?-F>e`wac)}(M8%Vq|RNd_3@Wl8fNnr={Z8L zMgIFgR7V4?G_a#&7yBy_}4O9c;1shL^U zZPwS#x3W+9KicF&>%>6oNC}H@8+B`4+=hjOMOr6}V znKy9iZuVpl@qoIO&e@ih8pfEjhUn5kiS{qV&xSNnyabmJF~!)BTBAQZY}+T6rL+rf zSMUK-5kC*S!6x)8oM|y_UIVoiWPjK3WTn=fU^1O-`K}7cli|>0L~usVTULBLjfO6 zRIpl%W!Z}EBa(@vl$QX18K3txG9i5z^=%e5SfTNrOqx%wWl3S$3*nH~8R+LQ)%pZ+ zx`1ilH;L97-nBA}J<9W``$1Z1RhmB&G_w;u&x@_GgrKirg-yIw|=vo z9r;g`OIOC|^4}bknaY{3l6&PMu64#_cs{e25&aEIUOpO0eezw_bv+*~`$^LBL$j=D zt}CN(Xx+_y>p}SI@r-`RV#CX5m0Cj51`>a?;)DrEUY7(c;J63dz`9Llg|`9 z9x-3j{B95XbONTk-VzAXb0!+K zTbzTtS)rTVwNH{Rf2ER~@=u8`$?9|(`#ZOyTlMMK5D{O%#o*7-bzJkO2Ddc^w27j# zSGVWGsOH;tZ;rGQrX|yHZr;?frZ#E`P(8+SYv!t~-WsLG&k}}j(7z^{BsFO|P695L zpN4<=HD4>|n$Mkodyf&1WFlKC^xA)tC}%1G*6ZH{UMjI3W+tTY88D?--4?HvY{K8xfzfze6Zg5&;^dxFmRI zco@=|sBCy%kuR;jJj9g+#nzHQGs~2}fNh|Q$KUSoOs?bxdhIX~R~7dOqnU%^Y##h2+^Q4~1Yy7jNUtSJI+|EiOW~{RBQkhM}2L zo9DdytN~!Mjp5v%0O$U6T|is%zAD@SD|kV)9YI-QX(Cm?X_b_a+#dmSDZ%AMdbbJf z&U!GZK{)ESCyM3Blhv+2PqU?D5~R3VLiNyMNn$D(bKx?`#WGPsB{~;-f4cDyr5uXZ zD25_c|7P2#jN7B zNN93xl}AR!YPlEr&QT!m#@{VnAv#T?@6gdQdzK`AIo*DJd>k5Xl6J}O&1tvCHZ`TZ z9F@X`7O*aGdil5G?14dDczVogR1!+~IF&lGZO{M15$C9ixj$RDPVLMIiL0=gXd*4giGLgdwyvHHEm_$TH5~<>7yakZ>#veux4Pp#>F5oo_CUtm1fy~O+cAyPVfVztEVuoqLz;6I&#dT* zKN`?j*|C=Ehu$Jv`>`zMS#{;?q`W4j-RqRyO7g+u>0f;{?!iXmte-E83q;$GND-F* zXl?j4X)GGfodobW+Kzs5jUB(C-qh|>$qf-I8?>}p1t z?icNXn^B>~7lT%^82I`XHHB*W|c$JK}29K0V;b$F-atFEn%ONJgsI$~vswRe9`DUdi#(z(1aUyoBR}hVzT>|sE!IW(V2+EFaJeQdxvN@N} zq>b1qDhc(-n+!p>&Wi?~1t0>OIGkTg#iyE+c%VPd)CEBP_PC||xzx`fsyxn>vc7|{ z*txS#MoB=7aX9c&Q(}sMq;UuIr|L;0ZGOJ>&8T`Md|YJ8t=Y~>DgS#OM=VJI7Rd-6 zxSt2aTImAxilGcci7{4dH6}{Fy8Q+;7hDLIHu>Z*6(C|S1BfwcThhp>Jyj0IQ#wnwLB>ai8jXpze|L0%Wh$R2l%N@x8 z_J1R%zWX;<*c530?+2Ry`{Dopn`3CKvZmCrq_lKh$N5IrmTCaj${GcfwJS@8|Hq00 z(GFrmgL0$sho@(6N-Pq78=gBDN>4sC>K%Eq{^%)i5&rt8a&<(AisHmc5E{zJ+RU;@c!AN-0>oPf>MG-0SIAaXxY61 zC^1@SWfpjeA9B`QxuGnQ59=k_rKvLhv;Q?=8Vq5(LnzT4^OeK5(}6MwKD_4}_O}oq z>O_Sb5FVmDRPxO7%>U!8vF^PM9f|f9$iLr(o|Zfs`0xFlu*L@d=7UKzP*PEr9qfSa z-I0KTMbd!V5DLt3m8C4Xy8SH)J2UX_{Wl(h(4QS-O~J2x#mH21Qr*a0u&JM@+NSlR zSQ3IQSn$En>HTe=JJJ_Za~~VT*uZv9B<#V0dEWns*iqO6?SU{Z{(m)|HLm{avTA{b^yAuj z7UI7y^IHIB%|o%hTQwB0Zer3z%}*Y=a;^rMBi_2+NN+6m?t zY?5@C1pi0x-#}GuOOP>6zRQpCU)jC0|BpT+4iNm`uwX-*vUZEc&IAqO7R9x8(}bg~ z*`Xt(cZgGT=>wrs;-I@B+elR8`v@{f40>rPG8N9+`;Ewze6$@Tgx7P2|Mhn4CgCdr zF#-TnKfxOy#o??~lzRKnC)_+v3sELKNj*-Rd-gD61K|_>h2ycfHG+2-fYkqc1F=ri z5TIvf3aT!uRJke?`wcmpRDoh?YP4kDrXBZt^r*~erAQY_7aa~n4_sPa9&Yh? zZ01da{iSMZX&nxpHuK(z>Qv_|M(vv24MI4vz2pmane3+df=jBMWqqDDtAGOZAK{yM1SKghRh;N zea$_TZ-qHgxn#?6d(9Qx{XfYe0$*}O0^^h*K+|5M>e8-kj$+M#1zvQNCBhMM9t-OV zzBJGe7Ow9@?}ej<-$r~0P8XuDiUfb-caZCs{dQH*v5RO%<+XeLkdPLc6VJ35E&KGv3wYRofs-#GA;-#~O(ge6TPAPzgzq3d&rN=huHyX?o*9#K~tQnZMhOiCrxbg8A$bt2_jK=2>bnO9J~@ z4cU|}tS`+90_2L6@d%_5_=2}Ue_#t)(-Gt!LF~?5T1t-Q08}u3+?wnJX$cleKH^9f zTILt<^1Mk)WW*bVRtroV)#5Rf$~x@yr9aS3Ob0S2Fc4>;H8UBK2l zNK*@hZUPaz$Qz&2i5|%D5YvzUr4B%ows~w0e(oB!&Xj<@4C($97KL_+yx8~}4N>(E z-k!}kCpN^S4c=lRB*8=rrkv)0&wWBqlwa|x3BMu&&`WXk-?MHEc;nKM!hZO4es z*cG?_G|%q7;U0+rph3qzwlXl_0;SPyRTZd(bCH@9gL-tY8`W25mOp|-1tTcKU?$a^ zvA!WgRRLi$r)8ZKdusm-q~)V#YN;b)a!kqHWZFi_&|ⅇUfnJT&}i)aH$x8HKeSl zvZO3afi5Fl3|Q2wt$-94hHv|yWRU^m@G9?7wT}WpioCzq)@L=_5_To+s)LDvJ=#F3 zvw3S#MTGW<+|V0(kG`blrSAPuK?GB8Q0_{4^Z)@ROcgE-L(_kZQ=`&xV4^ANIa*fa zbidhqX8l}i_QBDEHUC{=?L0BD#v7dw1X-#k%s25HugGn#;EhD7|L6n32)CL=zSMOV zp7||hl}oyKI65SQ{;j&w2;==1vC5*}R5pB22I9_qq!N7b$1Sa|vR+YJKqY8kXlGb$ zKg`*vO{4&XsjG1Oi9sfKeB{-#!~x3M8z7>=#p-1h(3-5XH$66KuBb7i&=kF~x z4ibap<}^HL;xMWH(qQ<|Q|%8e=PvC%C_KT&tA#^gpxjUs_(#OTW4E(f6RbGB8Qaj@ zl6nZh(`pd$Hv-ShFpyHmE`5pp)p?fod2&fb01%C$zY{!nt|=GY+asWoi75oo`Dj8p`$=u=#~GV@{R-Rb6?ii+$T9OdME=bpG9UE@VxhyCh8P85piQeZxV(q?H>t*4 z+tw_%y8!FQw3eQ4|5?F&JYuGGgV={RC zEox<{5^gIgdB;;NzaK1A_ZiT2ER+zUHdqe#NzUZE02@i)qh3BpTC1 zDNsn0gk_jSKS$r+V;-KE%6>hGPk4k_*?ygnBYpdy8)PJsmy@pEFOLsaRN+XFLRosq zT%=kOOF~(tsImT)Bna(n0lOrGYH76)Zsj8dWpRfJ@L$Z#vw3r^hJW4b&K+|u&zYB*Kbc?%dIAQ?qf{n?vh3TbhRa)YZ*(B;Am}3TeYNs+8 zRV@{wLY7<7##I}M@JKZHCUTo5(S-p`dB_n~AX>~cuk0GZNYS1ZD~G7}Frig324j~6 zdV?w+zhWjyPoi@;Il!{k^L7G(g)$;|aEVs$(IVgnYjILn##W=Y?1lg5YiinqswHH$ zD4)mb@YJh@!rnm_6bJGAfT{EFP}f=^ub(kFHQn4K=I8Mnogu^{c7dv2j1 zTa;(;HFwgCx1x0WS=dyJFTF4sTCVWj%z9xtgh@ROL-;gn{b$?!X$+__K{gyD!txPC zG{3#DrW$qcMaHKQ+OtgFB4)pr)G~}{uuz83{~5r%`JXLOKtiM-6#;(KCN{UVvb40c zva-br64|s%7aAgn_vMwtDS*H^o&P{@2gR~TPfh?sLBz#`_r zP5c1#8#2N96&pIWTy9RsXg-lfqt zYiDLYJIjuFwOJqMu+aShkx&^F0<$f^q=$D5kU(7Aatq#-g=Mjm!o2RS63%kynY;1Z z2Zv>CXD{n>{c)^hN^@tJrYcc@Xbz%dL^!c4ug$_LVF`(X!EGO?fCQLF%l8?Q9d_$V zUZmF@Zx$6bW$&M{yTU$Jo9MBgk=$w3!yk)?exAIj60?14qfspd$rneATGgpQLt%({ z6VqRgxAd8JBWEyMq1x@Bc}XI7Tap147c7162J;#;hd>k)Ue5Uqb$`yK`pF5d??S4F zm`;vLEDr*oC+$1dvnX~*?tND1JzYSo;(_`s88*zP{>2a|?Euum;G@A*23#VGPgl zdS!n3W3x<9K2m7bP&;juYAtf~*Ls}vfbKgrg zQD`>umS27Q96Y`e2svPWLssEFwy&BOy@4R20P%w!fOauqsj}V|*T6IfrkCPi%BgQ@ zSXKDr{ol73aQVT|KYsgD!4ClY)4Uk|+1qb!9<)R%v)R6E?~64ZEM7BZj%t&IW|iL4 z;$9U!d)wU%h}vCvUj&y*^yJi^jL(tuZ7LWY6v;*{s=`MrNSm|#`l9_dvbE`;`2oyi zK_w{7?cwMEvIAD&0lPGNLRqG6&A>Kesz}mQ2?-0Al^@NHkGwwP%A!z;0J~pkl9I>4 znoCM>JASGV@rP$R!M3k{E1d8!5pTHV%(!k$9_lcdB_GNrM_XD6AE94n&zOq1wrwmj3(3*iu0gZ`Jy(C;+o( zuv)s7D)r^}$8c%-du$LkW|#^Hrf(=ffc$q*sgDt*)xX8^Sd*j^wx^F5)DCPYn-qZ` zd$(YBU)ahK$!pZkLydy^Ae;SbFy#5(P3?BDF%W`-3hjQUJ&2|kaVjRZ2+ zHsMqsk@qdXR9^VvMxGJD6ekSW0ICOt{$Aiv&``}!i0>=lX`1rO@VN{cZ-41mAWKzM zqJt+CLRe$42>UQA1MuIsdnC=gkD7lxu}yV9)m)& z_jDt?2tY8!XM4)`nL4hg2Ry%+^(yH114tFsbFmaC?bKw{?ABX794oeyg+`xNZgXt; z?otdk2@G;D08Xk)=$`T>sJ3CRP)ahIs6_Dhr8--ol)Z|gf#c_|AzJSeKpFVT0e&ac z#tc0C+}!EP0H7#ppxqj&Y7JdDymeih6P{-K&cHA%(URc$EVL7U`umwsTua?ge%vS& z9%@x`m}Ltm1EXsOY#qyo@qjFTd*g=%Gjsuz?Ofy;k3jDRw(OmFG_F?Cra#3`QD&e~ z@o=-xu;v5f!eH^#NhR}fsU02DUot8N(=){P*HSw0NSgKQ8)tx?*dC z8CH;l!%^Hls;BdV`*x&&O7uLxZmWJ?c`LuDE^8f=izzJ;Ao&UR9^g84<;9gI>MzEI zMTf&uA3+LHFMFoQC@3ME#7nj2p}4kEmX0_xR+xQ`(_PrIebxqYRGNtC?d?qksW%A( z9|Q=cxlCM^zx|TM!k}6-sG&-AUq;+I>#0qx-JxoQXkq*_7pb(^z=Gve7XYyBtL?2> zI|Amcln1HT)nxPBZso~EKXxaSgI4^v2_giTJ%yTpkV*4Rcr<~ zSrvZ`I-f!|+`vOjdf>pEaPl{o#?^F{;_ z5D*X%k&qA)uPT`1;|0wBX=@@PO~=&7kSz5k zZ#6T!RGM&UvuYIPI4a-$&B$CT>OR)t~3ptnddx82<`w~PHk znuGruBQPa1RZ!osBq`!2#7!hSuyy9cuYTZ9nnorTm@U=L6Iqa-cia}HuJ}ogdY~V+ z6+ZcSm(2ew->$3*& zKSmcS^iIjX831}bkD1u+AwuU41wa6*&;XPX`m&>36i>RAhvt!G0<`3AJD_ASuxpX% zsis(%9Ey(auZO{P^GRZW1q!wzr(y@X&67ZjeSQW}ONIYEFh8aYgHD41vL~!CE0;RE zywqxC)LK<$x__KsnvT;L5P}BP^~C<=gtWWq{tvz3Yk6>Q=^AdaHv)=P7n*5D*pap+MyShY~yeB#Ns2}@_f=oT-Ik$b^2M4E|`7L7Bze995t3s%yym43GddkAV!aoTp z+P3Jq(7n<+UDH?4_a176t~OAZQ+^~%N$IdnjkPl!US{uNbMsttbMw;D(sPTu{>`c= zD}2b?(EMw)4>7=-B@tEzvo4|Toj%5S8JGANpb6M~(#~Zdw)X^i>l+FMT^ZyTH8c^sx9?SK5;}XZ_HkH8%Lq$wk z>P&~a@kSCEQV?SBa@LR-dK0uZ|1zS7B&zE4jnz=WmQ*MVV*B}!7YK%3ACXc%oXn(R z-a{P%)=v%WvE!T+r&@FqZivE#U5B&u%MSSE7wvZj&hT$<3iM<8Gb!G&ZCf;)0-+XH zkKY2;Ir!ezZvUo70Tb&&?}vQPbS5BTbeU3b*p}^hpsGNaIoQQ0GE&L0l}es5WNzBw zr@MW^FoFjvx!hmH5xx-M@r^N74(l67l1L~0S)-m<&O=)iJ!GA!*!ft zi>OgB*CE6=K?bI)?z>O1ptxwO<^#*kB&%xG3t}Y}m0n=c7kHxjCM=uc>YnV-IjK3V zDegdv-`cV7G^oZXCV`(7YN9Z(>L4He_v0t4Dx_rXQ`q5=YG=s}?%(y>OrGckA`{T{ z;3i3z8Cp7A)*qdJJf@kMgx5QIFJ4etL-;}M+!%%im3;)u_|o+C9Jl#6^Yy}65o*iG zCtxble^sc@vG`m*QLg};{2W6O=Avc;4~76^iOke6?EJN1{p5+X zefqlNow!1{_I5}yDrt(>or2bjtUOJ78gE9O%F6h7b>S3Qv81IFfqq_}BmD3Z8Ae7} zMXGSkVrp^$vu~=qb^r-FW6wL*&t4g_&Mo|SOxSVMpd@~hIbA7rBUrxo;>qtF1mzC0 z&zxz=LKCe{nn7RsvMma{rH+RGcy59;sX)1vi?Hpc35?K(2d(1awZb2zn$Rpo8?~^5 zrpX^jgrA#~H3^^qUMNF&g@w~QuMJp^8g*1OHQu81C8;zC^qo|>mBV*CyNP;r2C#r^ zW&a3iiQy10w5YShL}OVS==_86mq9)m6flZ7t$*HVRhijwVEq=U+fTv6(9P9W%~8p6 zRS2tOSBy{?BbspJXs;8K#4#3$Q_7d+j2}x}B^_7!%|~w>Sd91{wvIjo1FxJSP?nkx zh*T1;sT%l-eF3@c=#MMOwLj`$01Z4RpT-4sPl29_1`$ZHk?g-goO3nd4Gj*c5ufEw(;A#^fx zhzW=Qsu{eo!bqn!KPn7`KN9R+=)D?!u3=-FRtkvw(t<(2cZFNN`=;=44iZ0<`d)|t z`s+R}`)6BX6R7(X3>8KI7-!co;;MB`GvO)2O96EV%xz(tFvo`$HZ~RF;Cx020CkA} za|IG#>26YuqC$o9?pZwJ+_c9O^UWebr&#Nw0R zmNiI1r=7RX;v`1K^n0262EgQMYcS95sQ|Wp4X|UCJPAXIqb^O%K0xcuI|}V1YDs+< zmh5a%0u(p!#3cN~UxLJthB>={Z)UH4{HWw8obCjy@b zb@O}s^~fxfyrkOzME$TFoqQAFBwk^u9R**tH0II^OL5U6jj_Vot=bVv%2nE%Z68O{13g*O%Y4fmTzice(I-oPQ7QF`OsoC>j<&YBD zaLZ+w^vHQuT&hrtBqQPo$6T4o**Q|M3#wI+qOGc`+Wde_c?0-`WIk0a%K5`_9%oW9 zLfIpZO-i1ZMBWnl%ILLh+?Ap)SEpcBq_}ZEz-2> zVF*Rj_U=n;Bc2N|nF4S`=gONw{kalsCneWSLk@*uwL%_-KFo?GsfE&*oH!u)Z9ukb zh&z)XBNcwhn!bSwFYz|jGVB&N$te*8_xwijWibdaNYvU(?=HHn{pF^iY4aV{K|^&l z#_w;1XyQ=?koC<4lcbpmLB_2pb1nBdF!#feT63lOr(D{J9vx>{KDifZTkUw z=HX21QGdLESiivwMYSWV3SYz>HQ>F7o!Pu@>-vMe zpmh>b=*mt|xUa~}-mW!4&40E-kv^~)mM%hghW3}vPguy=T1o8{#GX;Dc`xzL4Jee( zg|7zN4MoQ|ab1V15K1`^*_GKyCgvAONlIaEgrZe zGUGn9@V7V@F0FIr|K=%&H$pQ-2P&lFh z#DJ1!#^Zc?7gR}nCFm2Cu<43WOHJ?M7j7eY5yuudDCTAfp;H`7!;m;se687-o)DZ& zKlXIDYKms&LW>0EfE5q)#2Lu^>JjYf`#Ws$3;?8)Qaq=x;sNCbCudtq&02>8a> zH#r8u4ZA~w{+VPMOZw|Z#Jx(T0Mc*Rf)HJVK})}9*OdvzQ`eDA#KDv}DYRUbSC^vr z#jLoaX3n5vtWQg&Qn5s=S5r(k*J;^z;Ib2l9m`JRD-#e127mhCM#zw&7{eJ--|x+W zXlkR-w4VaVmjV(m?Jg}UVbtN5eBP`{Fq-1y;E0uR`SHzN$cAB495__y)<5b&VCfCIGcSi5%E+(`Ab6zqTh#`KH#SeH@;QuTT*93Cd^t`p)h2S6$X?= zA)x>K8lb+cO(G`=49jY*K>cUh-+&caawQP0SLMGVE7>++NvlxhsXP!7)yC5sa*rAm zfBE<>k%|(HAFdx+i+$gP6RKZw`_ZfsCl~?b&`Vut`m+s+Gnk)JGGzTFt!POEB8GL# z=<(gd`#eIh4OU@<0gY(uUpcABe1oRMx{b!SFbLDi(bkZgBnFlJQ5z1L4h?&cHnHU| z3`(}M><&%*;>>9{?!@^GW6uT!Q(48Pxc2%AcDozhf2jc#0zlXyP$e+r4-A}Bjj5<^ zHyYwgu=zgYbq4YZkS-})i8V4a z0LBdyCK)TYg&eauo9zTk_WOv_m))Rk&J>dVX&#=ci?mmKUlqswKL7V2R$rMWXQvlQ zp~_~4J?`tH!Pu6n+ga?LxzUC0vXb|yMCeho+-03250|-LERzlbGG>>PA5*nYG zn_FLBUtX336pgoE*zr^3SU^!Er%FW>RpI?2)}Hpyu@xM-6cVPE8`3{=D6B(E%f(9G z5lC@Es(z5e@fDhaEGBaTw}6ZUamaCbdAS1+Q!LXQ218cgCI$a!#mI5gtya**p}2nlVO=St9kqwW!pIh!?SRndN)0(Y?l1jHq8U}vS8+p)2i#WNq`1Qzo1 zdap{;6|XH71jS6-c)wN35$f^l2ZPT)afL0??U?+Yoc^`F_NNTQhN6Nim$?O^j~Ea_ z#(-wYk|Dyu#;>66T|gn2vo9_J`0?8%^@TB9lfN$=3X@|u51Y``NA8rt;fS0UT9p9v>wXlTep_2u@aQ%K*U&@L6J#ulHNCS(VRy~gt0pWtff$HCf3 zj(lY6hrS1?*l+}P8~`F7;4~E^Mm=6*}0Fs-m*xr=Vr)xGML!lBw8p ztUnb?Nhp+)k7&LLDwUgYQm=Lgrvm9n!99kC_5L7Mpdk)h%}-pzsnK2|#dz{pa!@JK zqg^xUMG)r4nIv%!aDueSZEe4zlI$v}xTLtX<10uAmP7=@NSen$6k&kK(8B+Rrn8KS zs{PtH9nu4W(s5{zZs`GL=#~xv=`I235|J9Zq=pXZMnDAx1*BsLk?!t#hv&cE#aevj z+~?fv{9SvGp+4(>Dodj2k!{LKbsD8D*U{?8W!Kjlk|vUCmi+V-HNU9Y=&HYDe)H7X z!)qe-&}cm?o2~Avt&1RJPdGEh28KQP^ELC|==R|xP&L-ezZ{j|;{JTG=;S$q2}t3P z4q}oVrfUX$M4J|ZfZlEspjZ)oZ>`Jx>e$TAYs8tO&tqpq=U^={ z#5{ubJ+_`>g!#oIa-jOxQ#&wR>PIkyw$X zJoiO?ZEPRc@AadWG|;N1p+pQdm&0_jQ4#i~1@J6-Q43~{ae5!bm>~{%Hi`Q~)|px+W1O(@bge zF3BO+*Y)8R`QHN^HsVp8dK{SW=(6#&37|*%{`;4t;B}w9R7c{&7RQEh zQa+MII0_7ZA_!w4mMnmIV7F%$Ig*RTl`)jnIc7?_5p&G`Y00hMBRjTm&ILu|HLPAG zYHWv=Oe}ORp_aND>N>P4Sfcz&9)vtkf#{Cw2p)V5`EC*iZtqoVU`A!z5(721M$7b8 z1M5aT&sUv`q<=cQp~u&lcdM6s+4wm85`O+sb(iY32f;ged2bD(oaQ(e83jG;xynQY zjFZ|YyR^JTa+|fOCeQrrk#z8t!9aOUSxP#ji<=zwN5{XirNP@G?@qW>`R}eiE`NR> zJ?`*IfqaTvpW+V~8I=2wlM1Svl|miM?ztl@mqNq4kroTz5hRAbDxr&S!xw{~Jvj0S zU*Gm#!!kDKPMiqvzdpB^gecH_ysNZFM$(Uv4;+yI?N4E@Tc|wz~Rc zv}D3ZC<^!ETjOjbC9xIH2t62AMuVn>$= zQBsNyzWf$XaUMd7A}aNvaL38k)ry`L3hj*jj_kU5ZGchy`mNyc;rhNWC#I$wRT`($ z=bMkKQIFvpL@p>SYePjt(ZF^b0e?uH3*Mipn<{pH`t2|4#VVq6{b}qeKX`z8?5!!Y=`p zV=>LlrBn&i94i5M6|%B2b8|mUrJ}!rP@ZW7-wds`T+3?-K}5-NPIOlOqb+R{fxn|v z9I1@u`D8>gI^|cRx!5i$Ix%D}MZ|UR<}AAcNMVtU+cuV_gIG!|@J>?jy{!wbyvwp8 zmDT_>j(6H42}2bPvxUp03}h3|=pxTJWYWr86xjPTQAeHSV%K4N$CVlvv!A*05y*MG zY)@U<-q#zAZV+oTClkkjZ)bG3XJ7H#Qmnz=3#LWn&RW@Rw1$Mt25?kYp`yE#Eg;Wq z#82hw4LDN*_Mi%8?kjobdg@=7sKhLiN#Ed(uimhF(Dz0vDX)m@M_yME`RmI@`{+i@4O3A9}^{x1X(#2&NKpHI?fYi=j=B=Hqh= zjPfa8pnZuGc%hrGl#rRSTZa&O!n_NS}pHFm>ZUX-r*gV7r(z~bE#!zer(%K z^-&;c+0Xb?03Q4l+rcj(5%AD`|Bs^ksxSSM{k7jKgecO)B8{wVGV{~HEEzUlb?xFQ zhk&&xrWB}3BKu^zsH3{O{zC(p9z%UM{ybazW6 zu9KrY`WD}(&?CFDI%J>Pg??Pmfo*h;Nyr@0vVkbT&_nR1m`o@~7!~!(JZEIr>LLav zW#nUYT>(8t14iT`GTiW60)6*%J?&pb_%M7jsIo`wdbS`oG<_*&1{DJ8d&Yi156x=V z{22q9UQ_R`trQ_clJCf$cH}H-yw3cky!hsH-)4U&y~x3q3O`5TMpgeHuV)}CZTHZL z>+D)#iC*%Ui9ZYVCm+yipUIaheT8E~YA`I6(J~-FG8|47`1j!cJex1lsAg1>5vPmN zpq-_^2fnHt`euwY{orA_*&t?tRz=;U6|FF2zMeb4Bwf?KqR16cjU;_n7J&?qwq7tm zwRK2@XlU(s4+1LATu*DXzlDkT(urvcXHi>23jMTG*?y7Z88tp94*{%Um{X8U?qx7eee9_;dxZ4SQHJbM# zaZyro@&X;h9sL%7Fd$$Sor=YsI6lSs`HvRI$a=VMFlHnb9qaOAOqdNplQ1!ub4CNo zkB~H~?{s*=o@72jPgkH$9I*Sc(CS9CB+B;Ost6jnhmlDKP0NucQ=Z|L%WlSS`Jrx5 z#z;-JBo14&fiTkfHOt3XN^dE@fW0seI+?A&roD_l82N4Xt-iWdPlR!cF8Jx=l}7&2 z07jIzTV4*XNOHikSXEcTLs;EfIuER%?>k06uGXkYw z&)-dsSwgVa`Vfl7N z+%CeRvDd)NL38CBSteIQ&B2k1vJ{kxwg~3luk-;X@y>NK8{MINV#2~#aozWb?z_^M zmn?UAG{*PmRHT1wvNE&o7pUMh-DXJ^KXRO`&VCQGKj{ z3vm7#-l7(6rHiNeEg}(5LED=gX6LfjB%|^~V~?xesYgI8+OA>NXIJY};5oLAj?Vb_ z!50b1JM=@_?5s@5^fFgZMYg?z-muw%u{H1CEw72`9r2>XtX0=FoxV7U#SYc53cCK;KT3KGH&1HzI*M{zND4e0`q>pbbXa}Cn&fR*{S*}S{mpJ|!7=10_Xu2r_>u9AS zL#Zv(7daX+%TY5UVo?(L$T9eJip?IY&B$wWn+cq}J4YVt{M=@iBy=>j?FrK+3CRo7 zf!dAZ?z>I8;M0y@=_7aNrLOD5xLs`^2#E;wn z6BX;P#RI~e4}I{Z)|lI`f`5>&FWK1xxXpfXBU@osb39s;06LShM{!@s-hfy^qjRXye0!s5LKx`!AK$W1K)SJ!K*3yKD(DCrsZM(Nhu1T*3+zv1E%Y zS4kL5tt07r%k^_@KKFRTFfQ_0W_5K2*!t^o%`glZ|9|rb5FhY+u$k!>dl)$JG}ls+@BI6s#r*Qmi~Kib{H_P480cv43@bs@5;7ZXlGt| z9EQU6TbdewbI)fyy+Fo#zyG%XDG?SBuRm0WDQF}kON@9VTQQ7a@e3^Wnc+Jh^;vyL z2Z6D2N%v%$`jwj4HrIbzs9!bdK<$t#pygr26r>jyO?C5d2+@Gf&fG%gFajJbXL0s@ zlgot=g-PGVHS1wH8Cl$al>7^y!Elm?O{Fe6M3#Q4!D=Yv$25W$GqnHzDhr)Zo^h( zw~p6Dg3@)GpJuo9weKxap(%V>;lrG*EIO-Q+z#1T!Qv;r z^;F$5H{_W7N=GQ_tKijQ|8y?a3^R|>uz`3&yge3EV`|t70miKoK!JLG|6x?)KEN17 z4?4e@_E@@FqaVPHS5{9ZCOTv3j}k#9dom=%xFXa03%)XqG1opnnHiw&J)i+(8lDdp zQl?BaW3M;#IA@i<)?=gm_^2F1V(K_RrX6A$Fc@W`e@2G{UgsOj-}1y5rQ#D15U@VI z8oiLZJYK}g9x6uEbJIfqEMqbBG-1-T4oO;bI=J5qHgPsc-+%6AODJ(K0?e}>6VpbI zL~u(MPVd`*JWB?M!*j|sQuE7iO18t)0sDB8%zzfZfuJwEk70nGY8Bo*Eo|Io$}8so z&!dL^?_BCX&UrJ`@d5MOX1?5WiT`~~eSDY~e^M}Y7?4SiyVLOc+Ig3iAmQw#$L`ox zky3)0_{l45WhCLxJk&8c(c=TMd3N5kV1kLl4X6Im?D^_L7LEnXYnfI0VIw39mV-oV zknxWZF2qAwz0(Bx1XZTqs3^`4seN;F6m_0N=NOR~!kSH>0kDq( zfUIK&Bp!os{@XxT0*yrAgtK5)oXb+VfCinN=wGxz&}9Q3^J*BL*yld_SS#s_fbFPE zZ5Cs3--iU&63;0#V&yI|Nj|=_@f>xsyKPRmL-w`H(tEga5)NJ4+T%IwBeSF6($-An z#cZ%Ix7$}mQtu$^V@0L$3l}2TV1@HH1I!em0B@(-dR}|i*G?Gy3-d38>|+`%&8ppg zFL*q!7baGLnI5f%ebp$iHasur;*~S1UL^Nw4%*|L<*ZJR7$FOTN9ea&A_uX}*9U7c zh4ilKY-l*oLp%ThKTRnZYoN`B)E~6f*LDnD%xSOK`RrItIXC}eVLNW@Ka79+92|K1 zHT9S0J5-i0M^{LPlr_BQfaa(cbm^kwdV`!-V5>j%RAt(%dNFkwDXUZ(`Blrq&K#utgJs2MZTB3*`V$-4PGfFa;*+Hp`v4EXN91jou{p;lL+JpZ&mEOG|1r!-N?B5uZdS7@8 zKiqCC-Oc*)-Jh91AU@yw0VpyaHJzOL-?S1RT}3q`G+-MqtYmSq5lX7uOrL6S7M0=f zTy@cRcdS1SL$R1DRJjMpyPC+nq1@hMwWAvO1 z>YWkChr$ZvN(JbjM&LWs$d}Nc(q8J1gzl&ibA!JIc9JyTQVRf6Gimy?X>UCr%VxNV zWZP2Nv2b~V4rhmgS&;mg=gfQwgkSCpILK7|WF{#byV9h-69+&pq=IBwLje5xdMl4G zUiR_QeuWl5-v4r$W`v{O(W?RlnZpOU_;A>ty!1DJ1fnB?uOwj&c{ZAcUb0!~T<{)(Gvrb>$dK|=d zJltEvsPva0S${OvMK=?QH1r z0I9KJC0N6GoG#x)Cp@TI8m64|m6ffI49Z_kTn&(A)xJ)+&E_4-p#RVC(g2}#0GJn& zL`L-BY3d=0hioDB@H0E{6A*BG{v>Xc6$?j(pzr?F23#z4>+1j0#(9GR#nWVFu6PbB z>x1X0vamuc1o^%H?VD*DK7XlewRbEOI)VVwZ6+1j@b^LJat;Y!N2dDgW^#gv77$a*7K3L!`Fmt(;C zV}J9iaCD_y5|j{A4i#G-83MimL6b|Gb=%0I**-{M({4R-?&_ss<@p~_6Yv$^s3JY% zpTr*$90r!^&$>1uCYjGxkqKkg#g(i8GpDRJZy9W9v{^rrva!jo3z$=M81;wBhab;c z@h+sr0V`Xv2Z2X@6z1ZP!m5ZDZ;kUwMLdnZjx<}S#K^E`&Nn+FkX>Wzb{84>vD4jo zZ{-m9>{hhZhpP953+u=DjXvjRX)SRW{mf_p>_H(+_V`jCoQ$w%^rN{l53_!o(ImIP zQeD9XeUx6dL(_mH)?gDo9lUbj39Fs_RNW61Ko&Fd8V@h0 z6VfrbC$2(;4b=_m&pWt(lAvs2d_d9e9^KsB43ReDK~3%3@&4{(2WkHl4d)zBHir1w zCOu7On*+bh#I+6Nuj1 z^K}T?Ut*t8#u2#=Wts>Z84fhYKdOV?I)#<6H>|Wit=6te1kg%I zP^1OORMJ~5x9cvhfY(wRs0Ym<nt-U__B+t}xQzEocdl+)um<+Y;*`K0@sDefi>ieAKwve!wF*4=Wd9YgEK6oF@ z-javiO`?V?UY)N)I1V}|H86`u3f1P^Zs8f%9awXF4;YFYPpj4!pKE5U(#-JbFzJU% zz2!2C?06fa{abX|4Cfxwcvp1e5MY87r)l{QHw$~8pNU`{ntdB6020&x^VS?nFqsT8 zY>uXuRNo6BqW48bwZDDJBKbG}+(P8^#>%G;9O;1yX}$_R+^l)VRVYnJ%=c=>815a~ zTnpNTiROqGY@sc-rKm_bQ1o}aeBgsHa?q3?$ksTU;lR$(iAdISAYq3H*jOOPvV*{Y zGR{YRkCH#N55D$Wr0Tu))X6bARFd-wUr)$T44Gx=H~D8*Sp3b;v|y*kN%bYvy`zz{ zfA4}J3fJghNHfAhh4LyE+CW#Q`;rs3#l}c(Jr9f138!M~b0D?&18ypoz0%6NH#!2- z9{7tH?mbVz+DOFw^&d^0Z!qR`2#i_d?0!za^Q#i%ABk#lm_s5rW4EJp;9R>RU)1(1 z^wnsMWASLTKkX!G_OX7m z(fEY$gQ$mJveSTKt!`Ika}8ADL+lT|celS#pe#_F_~^lG$G#s5>5QCMQ$-Xkr#GWEAYHyyn~Gkxu23IZ>52`@XhSa2A#Fg8Mf_)(ZTath|4vm^5iHN}7fO z*9zQY?5k9>N&=WI|7UCc;^E#pRbF%4PwBSyo~yAW7ySf&Cm#Be!&V#EQsEFrB8P=h zE22G4c6+wavXO1~Zm-(0lAq+76bp7Jf^S*BXK$)OJD zwHhmBw06$>+(b~8&Eyb`Fs0Bs(t^}~wqMB9; z9^59LHS{sKLmdH$d*MOkc<^n-P42S+_F0_dMi%5tJN&7ZCS7QSTzvWWi(2AouT_H7 z^^E+|>}+BxGYN~NxxTrACMr{_kkDic64WmJ+U$J%)rkR6V@U<;FTWY(=hqeY_A=;k zM)CSfjGVX1`N@$knxVcUU>gfUN#rHM>?E9yPoy2iV7(VHCP({p6Mm?~SM3lmhO(7a(Ko|y%oYZ65yPUcZ=xp>H$OPm<=qGc>PHlJbMED(;S+972;#d-$n8z~kh zl!H=c&B$z68xX?`ZtpUr#kv#b#XW|b0KH&bqgGTHuL?h%r1$QY67AJjs{~274fKzW zxW^^r?it*uh%fr1$)OPl`O?CBNwRZ3Wro8uW1xLj1{g5wdZ za5jt5S*EDRWpTLGH*W4k2R;3mCj&`bDz8{=5&=#`^Qw1iFHa18`K8Z78)Q4AQ@*NV z&p{Pa%~y-lp4pEur)jSqQP8PICJ$>tUo)*0mUW+f{ja9v%W;x>w{+MSWzMe}|4k%- zB8fMe;z+6wNws+x3OQKJ^SOeew~+}i($JD1%UBTcrY_lW=M@$0CK|EZe@oItv6#G* zlr(B@Ox;y5Kqfhd{zP`I4HPS3m8%A-!T^_oR+^+k*c!24un?KcUU`c70dwHFWHE#{ zl|>BpgSpVAt(aJmn|x|s$rclDlAo<3%U|{t=Frho26W;_>zPI->k&B-GtkRWkwi^N z+wTI4LI!>W(&yV(+AUI=9;Xun=$VFrZmDe_iO=skf1wcEN8+2C5GXxOBLTxUHPY-~s)+ z;+p0^t=3I7_)I2`aYFG^kVAgASQ0huYm_irku6JPkltv-)Qc zW46>m2($E!io_?E1846TLT1ZaJ73|Vudf?K-5vyX27C8q6mNcqmMkW@Lx~ynAMp%5 z)xk@-4ma$2i-^ z0kL+}Os^e?f4WJ&MDwa$D{`HiI!9C_J$r8=##w?>gY*oodbuwNbnFsh?%1?|r4mM3 zpZ@6yxg0FiCLjdxn0^R8U*u_y6HvRr$Y5M|dxJyR3Lj!ZFXeM2WwpTvT8!qHKI7y2 zMOZ5d{b>x*574FWiu@E}%sg64AK%F;->l*kt#VjcWCX%A`@=?p5u2rFhogr7)tW>B zNBoIU;G`t0+-r+)g2o=4tjd0qYnSeey9$UhBfECtn1hh?4_GyX3|blVZZUWSkDa+R z_JoK6WjI=*r!N-)EYsoP zuNW6waju-gWi+;GfNR3EHpw4kq*{`sbhrPyMDCxlEZk!_x;*@n)~L=`yk?EHIm!*b z`}_F-GKTfkNMi@L*jrsN!>f}fKL99TpU2S)}}wa;F`}$ zTn#-}q}uhUz;IkHOFR5L9t2-Z#ON>qr+JF0B=@-i;8BaRu2_0@GUS|%ska})i{1(^ zS~=-jSOYp26|m>@_91XHo@XA_qABk6yiTfc^MGw>>WjrzQUtmh25l@!51uUb{dPu2(M{sVANg5e#8QqW$~tW< z>WJa%!&IEdJLlVc3*J#d`G11&1ub@Jw$ znFm~MMX}lWds!pV$=fe?z8V=HK;&52*t*(oL*+QaJpJFfUX%{4lX}Q|U5LoAPQ0^7 zN)A_a{#aDnNreP5QJ|8(%CJ0XX4uON_LbLA$Q#$ciHP&_7p6oOtt#4rB>K)QPs{_4 z?hYPE-lW`L#)$--?1`8soeZ^@zq=V4jc9E;${8!W_s&*4R8(60qhMdHwYsm*Jj#;@ zFl9$L!-9LSZM}!G~&uO>Yhh<-ZPH04v1&MzCo79kNv0!F;Yjs2YBhJ9shsR4G zQuR~pEXnW?*4QFMP3u|a!Sekx>=slJseiKRT8D{+Ww2%4p9dDa?}Nd-Ne7e0%oZVV z8=LOsVTnO|Wo1dC%UQ-Q>PFcNc$N6B-Nh)B?2p-y)@=4t}*Z zrAqYO?p-FIqB)oce>ut`AGXH&D9@5ZndN!*EN?&)!>~U>)FQ`v8)zU!2~184KH8%S zR(XYfJDPVpx^#~#w)8O6azL~r8hJc1?>06uit$2qr%Ke(8QvOjq%~H3nF@G$9>@vf zQnviEX|ZdT@oCtjN&@P01ad!QI3v=Z*9+Og5pzvm3J%v{W=(8t(_4J_`->;&gw_ZB zmSi9EGWp>!+ja3_r<`AQhI&#oH$7U4(cKq zdB$G*t)#V$`%oC@PD5=32nCE%5}{O7HzHD3eG~_wFT=2krSGMz+kSlKX8IFgWXXBRiGw1m8!_vdeQt(aXg7!wNQcmZ}t}Ak|AH;jV1f;2OX}7fZ4k)7O7l2 zFBU15Iv;u?FiKLg8)*hi+_aavty$WBRk2NV)deVl8hO%#?;dV%Tp!k^yVt=1JdmtV zn$)yx5tT??=F0^J+$_KR-an|x4_ki23PRe_iSQdJ*>=25rQfGAUc)zUzevK~zRdVu zau?rPq)@(g0;Y=831Ld@VXOT-65lG;$PxVagfJGhK5i5nP{VV*@l8(%I@&{8q{m-0+)G1HuR2_U zhYIuP!sy6rfJ!)oU7^qP*SIa0i zjj{D#_K}<_M7?eA;UN;7V<*S?h{hZ^HS%wHQ$nAy+rYCW$B!0!B1O~kty8@?5iCDs zdf)Z&0)CH9QRQd&kRlk85VseF{5VRkEi$0EgXY1p`@OZIi|*UwyCNc&d2=sW@rnV{ zfmN-O?c%uVz3ifyr170I10|4{^!-Tp{p9DMJ9D588yKR8!AEV2c0&`d2nn7)Z^viJ zqbQ7wK$a=In1*I=B7lzzi>lT-e#b4K}AQm^Fh4ULy%z2zqXq65|uC5lxU^&*% ziUFe%3*~@pqZWtZ1mRd+9)Na|pdejA--3wC`k7C%;NbGPMSW}aQxQSyFLREFi`tie zj{KZrQf_H$0;cKRYbqkc()w)j{x1IVDoDTV4B;HWhO`euJ|w<6koh<2NG3#voZXK* zHs5dXfaJOhR~*6YnWc53-*53zDDpSYex)bSN-}mQsbo{NvY~J(RCQsv`lCb7MIN?C z9)hS&Ry_q47;(R34jVEDo z3jJ`^YQ!)QZpHdmE4ec35E6Ii7Uc6ij-4re9G4T9exQ`9^TKW`3x z(d`Z<6uh*HJ83rtF--l7ffi$6!cCv{wJiN|81&w5=(X2pSAJyV#Tf$>l=Vlsk^-ZC zh>h$uXX~*9w&Z4e5#dxR4T1;Yx=qw4tcVrNKUuw4_EC;p^7^zW?_oACP;vOj;rh;J z>A=%tp|eUD1i>wu>1m}Z|4+js6^E3_rO#p9$5vLHPd;%GzrYgI_He!Y zCEoE1A0)Xvv(xBXxV(kQaP?JUO*L z#4u9^oQD9pE<1nNVdVP2v79<0t6dQW#Jv#v(WF{^Y%10LF`Tu)-G6?|qh1iDNu;m< zk6}PP$(r?Rsi8cfLjhR}C2fQ-FbPHteO;YNm=Lpac}TB2qC3Nkj@;jc)+yfns^t!~4SZs39r zEF10R7xoA*Sh%?+n0yRn$HPse{JF;j`-m%p^A%*okxYbTlLN;BECtA{>wijygN!RO z)Ky7%6RvYy27WdmvIP-_kTFZkLHuW1-0M$>EyU)0yCvc`;5vPmmyAhD8TI_xRok;1 zqcd{54OK5Q2bp=J1d>%6sg-V?!saq;IQAEkk*2C25*7)ILErm3KAk;MUX0^S%3z5g zC!Z8n^Bh>$InZc7oAAm7u7CE75@I=2hk_HmF85;-x`Uw8onnSX_qyg36Nmmyv;k)| z5_aR0EvA_7T7S;Pr^8-|D?Pkpqu_bt@ZqaKI!V3|BOrsK#a6FY&c2*0SNOfYUmYW0 z1l9OevM^HeGsQeyS-YaP&QP@K_ID=whhpt=?a`I$Ol2Q>kc*esDJu7|h^lu$neS^= zrNqWE#hy1Uf&LwtkbsEDP-?E-;-zT^>7YY%vO0{sZ(#;c{;a|%2Ec!S2%P~Z27Ukf zYjuWHx-$4q9Ng|@35~sUuv*dQQg4AIXRG$Tsc{`Jf4ER1eVYvqTtoVLcZK4hSz(lq zBk(QCbLQb`GIWj``-GeC#B?YVSh>Vrs zm8-^Km>~jv%2mkZ`%OG>?KJD1w334hN}IBqntc|3CTgAXOioZGzKhcKu@Gx+6)s;d%;;zn$7fU5h>!7~zU3dH+8IV4K=Ej~GF?Bq1 znPOwP9RKPs^7~Cy!`^YwNX&^{H%y=1p6M9$>MzdC3I1@_sD%6f)*qn@3_LuFmJYb6 zrD7yu*`p4;+q@!Qt!OsIQ1&qz`~ep7&S*A9Y|`uK>@*PaUB*fO>T{%>Jk&D z;(X#~!iJkoa}#$?PZN0dOy|vN7mNZHnXw;jp&$a6%|mbY-&D@$tW$sJ%=*AaTzjO9 zgB9rfPLptoQO|YxTx#byE`ID!3`!JlIlHZ|FpQG?Z3y6_yb#`(=FEMV^`4AHcQ~$A zjl?(rFx2A8?E1$9=2@%NLGj1((5V`)uYabohCJjVWUzGXs3?~rPqGjhp_1S**QQhv z4I>BPJ|9L+G7Gvs8Iig*e8pQKzx7Qz;EI|+#e$)RZTR*83x+=)aASf1YprZtToz9d zLVY&fn(-x{#js-5I`=_8e~EVafSjx-YMb#=3tJEL`O-9p$_Rf*!fEe;&n0COU=`Hg za1>q)XIT;^LKlPcYC%qNT(=G$Zdve8{uqj_v}Ns_(+ahD3`5j~U;UJjqj@Qo9h36H z{ZFmy!F`6qfNf|48nf8(qS9jh3T8nY z5ty0|zjI6Um@)*yq>J*MTZXS=q}=LICplN;pBj92$7LMAN^MqzA(qQ*3j4fX=XL(G zYWOx!oxx8ky_o^r@Pv2(5yeQ?d_o(oE($L^9lO!ez#mWAnP-b>Yf8 zvISnYc z2R;R5~Cq| z-m;c_FlZD0F^mA^9WPJ5oJYb7?uAB+Cs2{V()dZij#gW5U}#hPg5I~|S(w)I5&_s{ zmm6Q&N=_H*mM)tTQN$AG%B(|B2z)07-oBL%(qEYyU0#kh?|z3#&v*<0dET^xZ4olU zqwRC!Q98h0ydcKdNV_V1?gW%41e$G(K%}wiP_K&qp${?Ps+AnwDCx5gkXUW}V3wsz zc1QeCIx&CfN7`7QE}Yye!+y_V={Gb)+KWVZ6GTLpB40qsrSJh8JQasahK@RP(edDg z_HKo^ruFkz7IQL~`pP5YjidJp|o^z(EwHooOPIF;@m*r2VVlSnom1ij~? z$EO-YrnULqs~B(|OGRci=*RlMQOU~b2Y^A_QDUBDahuiNzsfw#)JS4>m(hZ3DOG#Amz|GlB3pMr&e9T#DE6d>}dqJibpq=$5{Rt2RKrQkw6ve+xQ) z3BpC&>g(9R1j%hRD1B~jc8$l^s1!lFC>71PBeP@>B7usC?F?v^B4U3$%N;*6L<5G` zR%m}TmJ#C*rq`!nC~2^7%2|MQ!~Hw5{wU0aGleZ@iQ&KQ`i{QEFn`qVF=p)UDv0R} z5hL8$YV3bA*YVqssyNhapEPQ;b!KcUwiu(4Ws9uk=$)uaVRNh5VvM;_|_QjPSPnDD>+7ZDlzbg*!C}Go?<0v(5pPyAO z?2Y;f?MyzoI4}11zXR zq!_W}OuQD~@bmzMGNv?s5dfasTRybA3fI6AhYqMH+qVkUvije8NGE<5U#OxSkWb22 zBMlLIll}drwz(iIH^O;dH}6|BvL;og`T@W@TBDi!+Ulv>>bnvsGxjQPzQgs|^c0b) z=+*W~I$hx1(dh7UWYXzBneHvmAN2~Ze8!qqp*eY-6%vMNR86gLTAG*J)hRx$F1zQ3 z(!bjp+GLDWqD~0Q2$lg`MBRiZw#&1&Bx7rwga|vWxIJS-^1vi;(Zk8x?A0}D&$c#G zj1^_~VDofQR%f|-ot$UMw;PH~bH^aSy@)B)i9pE(VcoK|_5zp$Aw=SUcGETk{hvgM zUVBNaNdl9v-yQ#4{iSYsb@%zp+m+bQUv5{=zhG3OoHbYyZ;g*gb=Jy#J^ANJ$8 z|A?%?;pN}xE3Z5){!2qn@Yyp+NvrF4ynX_NgE!C5h~9Ml*G}Vlz&HV z8WV>ZT@7oAl>Slz<<7MfhK{}WBqLzldZAItSLMkEY+=E`qhi+vaU2sE`NhioUz^EJ zt1ncTNQR|wPg~|5uLR!AZ<1v9xbOEU5AxV}QfOf9*f^S86I z%gb)Os@>T@dD8PNW`8_;>INly6aYCvIkW%t!A1`EmXMfI{QP;ncAM6ofXIf>d}6z~ z{2vQYN#CBuIgQGbC+lnC-<_}Ag!%gF?*^ILOm#x#Dn=|3D9~3Rs4%mEO7Q_rryZ}o z|1t9AUY#RLtH>tD8ee&5M^|iVC-awU>R3%&~+lMG@P^x0%AlA2w4F%Zpw!N)smHAVLr&xJo`slwWkVVA)Qj@?Bb3Fkz z#WoJvUw;0XtM!HL-_J7T)dpY}Z5t*98AoUPHwz zS`E#pU@o#~w=x6n>>?xFMpo+hJc_k(lZqlZQjM?ztMLBHui7rGvrWeo7*LAKK40h@ z@xh1&EDvD0bL~UFCpPwMtGZV_3u&IJL3@I-J2GPfPTrL{Tj556rLsQRij|u;3ERHN zSJa3@h}&sA>tw|7Lw<^BTSPVJsGseQ+lu)qL8y^+m}U9pR$^EPHqN(@||2=#`{^h6xL_iVV= zRz1^?>_lrezf%PHFibks7QFv)R=cdLtz&gkHGa`E5cl32JFtrecF5PWN&`wkw^G{q zIIA0YmI$YlhpnD6e^^$A*e~rUa@RK$_bsl^&6Oqr@d0QJ0k`(a1Cob*LwJ*R4hJTV zE6D252S~l2T&A0_&#TIWNa}rRlHAi?Y`S;H1K7WkTU>c4;^TeFWLGb)y$FdC(tebB zgnAv3C3Pkj*BLNmMh?9`xyHfUQ&#tkOLz{GnIgY`uOjfr{zshDSc5p1^P5N11V^~VorQh`=%t#k{bOLO~FRiudVZq zHv@ElW8j~aOW`!mBACT|+RKeybm7t{rVqPzalnaobZy*@(oB@hKaV=O)5Z?&XE+o^ za#A^ZlTL3#;Ep=(E6&Q?q;X58F3KR9eKMAVxVxQ&x(<;vX}@k)dVWk&OT_5uCFyjo zze9(ZPlt%NhKinp++bxf=}nMJ;KIe<&|jz3tSE!eyA_m~8k>CEEq+A>OUt^{Q`+F@@$s8q~3Puse2t&UMbY&RM}w-}K_) z0D7dP*DTBK_`S)9=_KA}y~|MR>J3=}TKlD?jVn~WdGk=)v(j;Kg$$MI{G;AL`aP*C zA!|9VYC)?^PUJkGIacsIX6CmSWl*O+d?qT z_+0?%Ns5O~@~7)#5@YV<(VY>u&pWQ--0QPD&1;Rym=qKa2Ss~ICKxTFQa}2qX+|z$ zkElO)^gKNHWsJt5#uXe7?rzaQpG}$XAhsuRT{In(`42U613#mRL=W4)aKn6Rk6Eou zWEqH?_V2~fQ6T|kSD%(Rjz-V^&E21TRaGO^4(2g{tpCyt3h{Eb{yQOYpo0N^4po9t z{kJ2It7HzYjL%K?>w9`bO9YwpSLrk?TSbBJcbg|H(Js{q!4KZa36VXJTS+^M)1{Aw z-Dc9Wh7n;!EL$>>Cyy>Rz7sOJXVuvSBh;HOKO}oCX>$b@4>fOhT|>fbM+L;4y~N5? zX#5GZOvsE)F)68n=T3)*)Udypav-0Pdc7wi_K_33@b6Lr8S9%CHk;=!Zt_R)qBevI zYM!*T_hSfzY!1v7dEazp(>v- z=XSe&Fpn+!0iwDt*5%bt${s+255X5DmL+B9Br9w>Qo<%))~R7v{-64^t1DQbN}jyt zsy|6bh8^!$9s`2n5z{by9`_*n#hdD2(n`9A+Ya)}rm)S~%ZFI^VihtQ{&T7nS?g z=+5&QHm4?#xqft9*Vi(DuL#a){SYR7v=E+0HvS@9`h)W&Js%GC8k#jPMUId}L|cKy z65ML#3VFefd2G^{6XlgGwSgO@!GG2nYjPl;NJMaQ>AT)s(xyo7dMi5r0cIuLXsf2i zQ9n(AV6-FeQwK}&;yKwuOa=+jrYFl0OoukFe0d?11LjKM)A2wFhH(v2o5^MEoAzPy zvMHI6)|Kmttkkdi*1De~GwqElNhR7mfJ~X^jVm$I2SET5?--_uj*U?{W#>y}ChVfF z7w!wNv+%uJD!lh|5EKImZ_QL{(weuD<>~f9zfJ5mco{B2J#*JV<d>88s8oXTen~W+H zfE>}a$I=4M_*fP)UOXsTBB7pbnn;v-UfpqEShi$f6TznFYUe?<+w*Q_Vc%Px z4FOj!XKZ0QGTU_zH>Sjba8b)MjDQH46_X~$a>~3zYqo`MnR=x$6x17We1j!T0uX5S2nu{!|m6TX7hwicexr z1i1|vXUBw1a_H75?6Xwqw3ssjPaf1@AI7n(_%ss$U*Ek+0Bsyh*mQzfAw!&nr}ci< zjJtt`O4$iDM`|tzq%8zJaI7ZkiMiV?#}Rir0z}?V+;91lQ+&u=(_a>LM5Z*+jRn`P z4p>G1CaOfn)Uj;|vrKVC#jF5}<}c$IdsT7TW|eLR5tUc%Oz#hJXcXuUZPzdfs(rIb z1ThfheGKo>nE5MNkM(Ww1f`6R^t(V{`Qqt=3(aD6z&d3tJMPR+w!yRjJ%nS;z0p;M z!sz?BjZi@izt2>M+D}9h?I%&;pM5eKfHUh4H`W5QP7)AYng2eQidRrPXizhp;4mjb z-;@>Xq++JEdOcA=lqUVzE;ZCr$6609>pRgc1DOoQ4@?*)ko#%zM)8Z0MEIOgiO1+E zHL9Mp*X{}Fj=+=%mu*z`+$g4}tD(V=qijyuc$LhPuCoIs4cU?)tsV=IGpLLf+^U6M z*GOun%#v`BsE)Vpvu=E#u^b{mz`4Ms(*f#xO$ zzHM`>h2Clj2@~@@4%XTtq?mDdmok$a$tdsV9Y5pzlsVSW91p!2XO*Yg-_CE(o!zj_|8d9q7q~fp zVPIDZpRcQlR3fKx8JffE9(XIT13aW5lTb7k( zpL_5hY}k3?1O__OlLzPynD%X^TG#6%w=5i$)`MYhJ42x*z=;z+r!)fay2|I94n-hL zveC1n9SNz5W_=hkQqMYV6fJC>^$UjX3{UR(SJ{pvL35wnXUkG9zydVQL`ao}PMe zDnXO@?>lvEvzm02zP&fkH`fbCETwYcc4>XQqg02s(B~hHnRty91@4)me#&keU)=U% z9h>Ijxe?BseoSx_ZoUEMfwFqmx2klutRV`%mmhEFO{B!dJ5Yz)CWJwp-@M<}Q(IGR z`Ew&8PY)@1esEep+}XaUTBT1jS{03_qMy@SXJVB^CO6JIb8O2I&w zqs^(z^Rh z#*LR&R>l0FW@FYMVl(Q@K4K#=NX7(HBlxrwSf#R1|L(C0i+r5pCZV`6HjVIqneC!d*%(%<@~+?nvMeMtzz1^dTGQs>oxBLMHqkWu_vS+_e}8lYiWJV3|L$2MUZR40-AQfUL^p%f zZOTDX+b$sgT|Ic^{%?er$UGPf!Vx6rN@~>U5TWb%z8nJS2yIAYho2<=@xR==pe2vH zN+DrtwS(ml9NSYv66*3DRQ~h-CM^9O>@TtcujA-RyPeu`mmU>Be6(M z>n11CCU0+RkUexFa~fCEb&>PfNAJ|+mJ)wuZg$%ViSkl;cGMxlA50bOCOxLSMuLtAne z1OVV|b3@H2oJEZFlD%#&#-dL9^2+dn7?%|Qv$|N=Q*GV)08qzIjf^-7VsPPBtI9L!qv7l>ZhAkeAk#)xJ#3o z-oMeNm#_6X7ENgWYWS=Bx{hr-443vPYKS~bzjv)_3S4*C92*Fi^Wme+dhft#VC=Cm znWM|do_ju%t#j>-^W#yw^f5VLCvhd+@fk8tynXE8JYuD0F#@A`F1 zaq{Qx%>AmNsta4jR0CYDB?^2hwrB$)BQPTFxiK=Ow027cn%#d;{}&#e`!6GfaBa5( zg)`Agj@YAU6u;?31|Vr21*{FGnH6VS50(YgVR+5D$f3D@4q#bQGtieZ9e=RW11xO< zCK^LbsbuM|%omr`1(Os9iFS%D`0z7)V$&U^;p}*g4LUB;()(8$yI7{uzrZ@`v`Eg6PxjqkEu>i+}K&O1<+3r25c)k!epA zZV^~S3203|j9^9^l0_>g@P0IL1($i^Kb|Ry@)XlAO|i8d?`AzMGlvf{4IbA>p;DN5gilvJcxNMYb0+_$;B7>FE@g}*m{plc@iQyDA8Iov- zQpaCr8U>6gAJ9EwLi|D%Ij`JvMTAA#+S)tQz|N0KQEcO#Qh>RkV1X3zc-o{2TqrQU zIT82!#=C^9cW!z=sN3($amAym1d zIclUZXo$jLe(n6&1vI+Vc4)S%Xy-Q8_cIQ!89v9g=^&WAX_!N!CEaAx~r z=#n`<__uD5avvrAbL1;SB0}wQ32dxTE(2?%NQYnsqRB9Uj3X=#47s^9O1S%?4Wr1$ z-nVn(XWR$J0L5$FnN@NAW0cBFg!_HPJTbHmv3C9S?fw?Ip}6j&20;#6{Me;rNc`Ub zJPitUAp%-D{B%Npf{jwH8n~VFad&8m>$|I+Y%E9M%pAD!!y_roQB}cDmzf`q2lIM`Y8KLdjDWxhI^ovh841B$ zWSihUv2@kX=Pb+ZMYIHMT0pA&6%ud(>KgovsCcSU2UqvuFwKG(KNRAwsAl?ms;?tS(lZGZkz}R9l>>`x8{$U!ZBoR^!P8iPaIyU~^y7a|p zTFLT*wt=v26Y!%zCIUBI-QCQsWc0o-D^OvSzXfX>t@cMJYzC;SiL>$9Iz{1V@j7rU+re{}5 zKez&RjLP=S*v}=GXkwKd7%{diY1%O`KG-|DhUgCdAd z0qkbF9lSfFD{YMAiF-7(FhnwC=Z^~foQu_+pxZ^F6U?uJn6;js=V;kTVqxCz)r}IW>gwzRQ+Unaa=(k^y>o3B(Jbvel3P2C6nd2NDv9e9)gVCf7AGY%efj z_P%G>KuCEauooScAlh`cVl?w4oe`cePS-Yfw?zVB6*cP__zG7vfQ|en&k1{8bWquv zKL*jZ3kd0haS-Sv95`9z%_ z2Br^-J#gC=t$GQ2r72nDv*KbkeeExPd4jLhkXK1LFLK(2OGtoQ0vWc;M=QpyNUJr` zKu|NS2yP&-M?;m62|^HTgMfHQmUQVKy1*T6_vdTP%XEpL)`g+}_KG`J?0zA1rmJ_b zIX+B9@3(D3+n1_sK3|ewI^vZw{l6`jx9f1$RI6cnqYuTENYpT*Y7CWtbwmGFnhXi8 zKIXflh_qzq6xB(;NfniwbH*k(*kVc)$+5Wg*(L4R-A__UpDqfEkT`7gjRZCamoy>6 z{*nV;Xyd=3XSBF5IFUd>Xtqi~Vy0g!qj?77GRlPxUCwFzP~BzT&1|$S%$(&~FD<6j>?0DAfeoG|?zIbZ@GstKs=yLT<^IcV!p~ zkGgq7g&s6G%7}cxtbb`G1giFJH`dmyh^NUDIRh5oXif-GmOGWcGX@rTp=iX9$%E2T zxS(=G6E~EJgBHhrs@r~?;Y)%8i}%DBMEw-%&e%s$nPlk>!G|jai}PE%*mY<2SaGGO z5wxg~)WMB!{*EzG;!t)|Uh}#kCW=k7xow6-j5@V9NVn+Su$0jaw_2C?V3r|x{9B%N z^ehBTi%?ED0~_1@B1$4u!OF>)IfS#{?pYtIzK@01x!`fMi984DU4cP?D$yjhr5SyVvh9ROi%;p;l zq>)`PZ_OjtTxgQ%rjKK6iz8h|7alWqq_Y{h?}Qt$gRC%9JGCRfD`+lm#n1!FhvM>E#x}&JJAsG$DM~@sRbT zUZ$Hwe+T1kOW3gP3~2j2K4`87n=WIg8mz?tis0HmBZi_*_iy^CIiJL8NBSnvmzWtB zd;Gq(nmW_9Gio3wT4ftckq{5<>iRffevaFQi*z=VsKpL<45(rM$JRenl>JuvaPVtk zv?NBOCjEGkRb%;?XB zQBQo4?239fws2t3KN`RE?IzkWqB?(*6ZC;m&=>gbbRX_U~_j7wPPGUTybIw;c5E>&EK4J*_KTJx?OEtLu1YG27*?cGeDoIeWtun+^cg8Eu}&2sAe z-X$-=+s_4KVyFB{iBfGFO-#fVy+~Z4fqhMVynIF7TH0AfK-)96bUbz=a+~dIBuKa@ z=ft$pr+UgkZ@><;h?Rv%E=#sx+?>C?0-=Ypd4kdu9@+wHK!X^AVJ0 z2JI9P)5UO~F#9VBabw#`A%wf&XL4O(VSJYtJ4oes2yS)^@rrnso_;p-&r8h!y+vvH-EC3WFq_TOS@sL`%k-ZpHg z>>{G>j;}!anfcDVZ-%NAoQd*4*&U2S;LfhS2b5{dIM-rtlZg>F5S(Y3adOCl?9zyz z+1kq~sQj1$GugDJ&LQVOfLhj{3tpFYL`1xQQbkzZl$q>%jOOX zO#}E-U{MO1$w~pqdAA6-`|}d`my=6}6wdswJ+bqR6!DEy=Z}GiJ)#phzsv$X4$Lw^ zj$GT>iQ2`zBg6I<;~>Ds%jeJH-mt$1Y0g!Ozu)E~x!$e9TCe2QPB(qHooiZ#>TxNH z&!&?JpWyVpR7sKwilMu-8L0rMzr~#>=8SK|Awgy#C;m#cI1kH=v7h_bpOK~Iy_aD0 zFGP&HMBm)$yqU|A%6E`He8n=C`NNc$Z@7}qQ9;EO;{a&yGsnOU*LwEqG_7QO^K9$) zUelV%>F)O-E761!XaP@D&6tK2h*6->U-+Rvdpyo60ZqlttOqD_7p^u;`J;ra1dd}{T~*CM*X*@M<_(_Nd%t-?-aOQszHv7T&Mq-V2E%dPRE z{}HPM$l9dz8QI2F>RppN-_2Y`Z!-WAC$_9V0T-H%{!N6|%O4}KmG3~t+VhwW{fO#Y zWD}?iBff?z(E22b>Jv+|v+LiP)z#Gt_3n)%g+_OkE3BO;YY<)rxNG}LGC)Tz ze2j@cQIKNoO#}>n2fXnnic`)>PfH_+8@tljEaVk*NF9GD3_jZZ)jLzXu_lWBkVLHc zy@y!9HyWP7%tyMPF6KUxu6KLKG?7+l_I*Ga!qiTt5$EE4HnnChR7lWBsJL-G?$GBY z6ndTOsrR?@O16|}OCGozhAu=GFq!__h5V^@O{n1np!ir@&OFvKF*y+uy&=r<);VbEVDMT| z;hmUbDh}W^cz%i#R^ydaRVw6+MqHZ&@GXX*q@^g9o2xeT6PKaFPE4o_u~&`Zc3LKGA;=G;ba4}s(7>4 zc3Z17ef0C_3rJTv!+c>r0pFPR$g^G61!U#5r6$^@RxXt$Y#}U_X}yY*p6^MVl)7rY zbYekgS{$%Vf)`}lCx@o(TxAHBrx?K+S{4#KJs&(+$pB9q!Lwg+;AD4e;Q}RY?N#0g zUuX=lXprU0=T=he*-L3!jS=1Y)hRkG^-JCc$EaQ_2cfXLr z?8kcz`NCh1e=#aUxJd>)%geBdA#V=159@wK0M`{P;WLF9Xh|tVY6nG^fkGSyvvM%G z4R9bx8_TQ-wNv4MQ<%?_+=8!nqkM@o8KK)qQomX75dQk$ zAD6DtMAZSQGb~A=5GOjRCW>aA2Vl=s zNu9HCph}`wgQBI~>$O{S7N$m&;{QCKm3ea)A84UU>TE|jn)E^uw(y@;FG378+{GY( z)xwdB_V4~I#(WL1^^k%qecb{LMHBXBjIbLp_8lAbCHOT)IZ8Rd-B+DKi-g^9FE3rU z0>r?gjAelL-YWXj=&~2CS2S6CSWcB z`|qy6vTM(X(TqnfvMQo_xa%a^R#;-MD$DV|3qi)jYG4}Im)?;3YV<7oFx4!8XC6UL zp2!>qgpK+Q9+2vfakbD>*E9vUtoL!#}1UFG!SdL_Bjhb*|4kAzP`w}Xwb zPzC>ktWBT%7h(C=L1shWr58kvZod*CxIDGA{wtU(SI5`HEL6bUb+Hh^NeYQGQpO-Q zA?blAH&H8J_p9?#y&4vL+O}x1f3KBLD!ofd`!X{I1x`9TsYD1e&8*ibe|pdkvAEOjDyDWyDuqH>yl^L<0IrwrwD3*!VI7s9Oak!_GoxtH}cF#+Ci>ZU)h z7Tq=p09Pfs|X4!Z;<~y@i z@ZMgf>T)dxNCdN$ZJ+uWHN%pyA%UWU9m1^|c@UU4uMxP6usmX9=+FEy?vu&0^-AvA z!YZ7KG-zfV1TCcSifu5T%va1>KzHg>sA%6*qoE4c)AfrLxO}IXB?_S^&1Sedl~O>Y+)jTwQ5 zaA|{BM~VOK`)H3FaDtdvym=>`Vh<#g)Pk&>21fzF`g*Fs+8}`wN>~EkX$(+@9U^m( zuMT$hX%YFprV1n$XiSt7gc0tRkd@3Nv=D3(L1Y8apOLk|02NZ0yGJCvA;HJK{}DZQ z;lG*IN!@~?Z^I`Fo(eKPu@F89IIuS|qvVQ1Y|OMZz$9%@lU-S|Q*!|i z3*k+zPPR9Owc7KW+Hwh`?8HTb1TyHTm`Z;JiR0A{-3T0ucC($|zUHBS0KNdAXlG;( zzkR%wl0RmF`+ElTwj8QKws_aP#DQLStIjmBg%7JM@3#4L@inS_Io7LQ9P#zmgAhoO;wTQS zQ3Bg$J%4)$*{igWD8oC*x8#R~P5$U9I8F?cSeIoh;oMqBuW-80#{eoac~q* zDH@C>=nYF~Cyg4(YBcz^aaCryVUBE(g$-wHB=f2FkNIFG&7cRqpSMA4c_uDOpAN^T zl|S+o^|8V1ga2H$kNPM>aE#7;4T)i(fcHYjut#HNv-CQt}bPXd*0yT#j`y(DAg+Pcdk8c!b!V|6t%*A|r zP%17x1+hxPI!)i%6qsRe;GKaNC>HK*~5tDXrm{ zHktBnCM<&`#(t}``C!4qk|&x`x@L!NsoC(GNPsHY@Fu1C&xK4fpM-Od_^IY)wz}Rx zbU^RZhYw?2?VS%f^)R-Wg%n-Za~MOykV3v&eDc}cH}44cZ2$IlfB)~F^2lpi)L7Oe zMYqNxpg0Ft-sj@K4kC8}DZNEoc6wJgX56jaJ0F@6-AdD`>CO?_sAj}Y?V!vSY* zM{MjT#*Ps3=hcDsYrOKs)g}#yjCx{si^yIz;L2#-Q7!MEasqH^P<+!pgxMQCig`a$~P$V z=rWT@a8>NzV*TfFYKv#ewz#GXOngHm!IQ6G;4nJ zb@rNUuL8kmd5T^v8pZqWQT=NpeOwEBY;BhZ3$3HB$01^0Y@$dd1r*z79JOD=wTq)>*) zPC+7$lZy+9ftvEiALg$Ij%=p;>79;4Fq2b17u;oMjxSw&Wn0>lyPeOBU^y39&c94Q zS3Vx0kpE1)9Y49@`IkU9_9HijWrO}uGhvGd2by~w#L6*Pr6iKh9zZDq;FUI!H`-22 zmG+r>j2}IgYo|ZT0OY?f7(@v%*06dzPRd`rrm7!Q&I@v9O$%yt6(cm*E_*1E)BV>e zgKimsula{79fp_vd~v7gYYhG-)Ak`ZL)snrDhPb*b_IjzYan0MRVit`X9l3vRz zrI?BE@i*7Zjijh0!96GgUI(g_w%#|hS9|92#zdz(`LveFk_-)XSHm}p#lmL{W z9p5`&l(vdOJx1E)%d6zxo_}APlZ=ArG z<;xqGX3MH=pMJ_H%86_3ZTQWSU?O$;i)Ei6J$Pg>)>?op&6YHlAyLdm%McY3I9SVS zuQW%gCGzZ#2h6Vz_w!jZta^oAKy8mP^5P4fvI7drzBPf$cK%ye@vgEMwTC!UekX_M z`)$?q!>LcsS1;}i{*e{A?ykqPMQoGX*3LzNlw2S)B0?ZK3dRuvBk z20tB6sIC>Az|zI7B2l$nGl-Vh7qr)kc95PRwU9K=ugb@clk&Nhrbg%$%SC`RUn@&e z8BT0yQ%N&u@cx)F+!R$uVbxc7$Xng{$Gdp!y-ey6aO5xpT2#GQ^*b_>P`2`o-A`^) z$0!g{etU)*mEsnR;!W-cocxOPkF1kT_z;+(E_kC+=0uEppA{VReE+-FU}0zh_O2vF zw4fx|5jvui48lbwFOKo;ZvDWTDCvf_hn8}<61jf?#;twh0M-xMQU6{791}UMAJGX$ z1wN2L=w``e06u~%+Q#QMHE&_II(t|x&`72TE$({fZCm98kU(nzcSW@D;^}S?2r$eZ z(prtNZCz$zvg9;_WsE|@nfQ0$kC8|j)cijPEn5L@MuNDb*i|fe!Gt++1upu1Zq5z@ z&$b8pj!IyxMlgDIzyjO812x)Px{I!{S{+6-E3QhrPeRi{o2Um{%@(Y>D zk*C|wr5O`F%3myI^4UNM&Q>sV&c4%dOmkjSahyq&_S2#lDmW4Cx;ihW5)7!59cKO= zc=R?hNPKV$ykXNq{n>7agNH7oajtUlRx|=_TjU&DX+YFZm?(LSgn0&PBo2LR(<)3G zbvm8E#EAiM_AZygsG_>JFf;6uOpSTjhyebfLgm-~J;l*Z65C!cpxA&BfIQxO?YU)V zHa?S<@slo1>*f~{5O)nIP{x{n8-Ubo1cUU`GfY>5tzMlc&T5H;^IvL z8d+o+W7o$CUsn}uvlJg?KLD7!rDVa#sUk8Z-ySk~;QJ+v23T%1aQ2EE(gT3h zd>Z+hDw)pE;rC5i^$wgNxd=( zirYE=w&fn{Qs`JJb0f0Ys3%oyv?#n*;Ut-esN#m`H(8a~FHI^G`x^1;F!5As8P4lI;qNqEHfRL6m`;oTJz{w0HjYQ3$m*>SV(qYJ4i~jB!c(uDk zuI-f0utI1C+o8t@rr4*!TyJvk75@VeQW+kBG*|%Kr++ zR)3enjr&GNk;_d_tNZho^4*8NxdwDZ%-4r!667E6>8cY&UF`?%BxGSz!Hem|pMo>d zq?=YfnV^&^lx&J}Rf1ZI1^Q@SSxkG5d=}9uM5D*?+m` z!HyKd@_!1Pa>mmXfH@$ty)f?jzzVsTkP2f%6|lNfJsB*)ddO;VOMn(&9^vnc3Tf#j zQjKw65ZkaYx8|+E1@3|;f<#_6{(-Bu9OWQDB5SDPL2W2T+J7dLO-Y7{NxO2A>kU!F^eatqJ~qJ`1yF4$svll&(~%c0$j@@ill(Ix==CF@>HTSP3c+T zSu0Hu&8?;y`FYubV2buu*SV~pcl=_iPyL(9-G$|a$@LZ^F*KD9o;O$5*U?2G_at~g zSyz;okXrId|5Dftzm9Be^MkiPbVFKL$UCLC6Rm3}1qBJ)i>Q?fD5hf`tmB&fGcj8nI z+q;?g1^lTwUkEY-#XyNB4(goMyskA&+9`;ihA@V~2;Vnu(?) zcEr=aQcVFZB;G!C7heToiNKGmMl6gB6E9{;lkgvp8Jf=__`J8iK|keRvFIAs;z0@v zXG-+>0BopFI>ON)$Q^hE%?@cLy6!d-OqcYPzPNz4bZTusMz(#WmQW$jLG%o?p|y(k zNMA=aBKtd|{v#83ypT%Ax6{x&KF1~n?Fsexh?XrNHsMpm#6C*TTn<}F=R@)O#r=~zNCaa z#u?p&C-tshKd#(WefhiK%KHCa0E@7fCJrbOL<9*UyN`})PA!SUsQvcP0bjaJXWR2p zIC5hJBMF#0pJ(fc7=y+2F?|GEr~_?!;!%CpQH@>n!V5%$a(3PPhYfI5d9s`Tk-e18EO`##Aw0)ICr3J zuC)mZ3!k1IlmF!ZOSK5T5>B}9Eq2m`cxQ+}(O$tlnki@M+~&p?E6u~g0R>wX87k|m zTjob8Kiv_f2`!*MWvXgIG_p11#*M zFb6QqiApbrD_fZzEp#eP$%fz-KaMM!UZ;#IPh||A{4%8~YIG__U^|7L0(Xqfu;m+YMi^(Niv68fpVYoy zmlp3A6~C=jmBhm8+?0>+kLio_#34~Kt3j5n?$#;bW zswU(-8D=5mLh9(t zQ6rnk{4L#ntVYUv#6gw@}|yPiR~Ix=JCm)ECz!b6qj zSK^#eg}X+l6oi>>Ual6Laj~5ab+E!b&*7Bp)f##SAR9XCVdJxH62T7ca45(CCY^2A z&4Cqru8aQu%566S!QS8_0WZIlyzf51K-$#u7KU9*ofJ!EsxrOQBz{7ejQFuLTAWNT zSz+$IVJ~-tKi(rssfSO>HKA|r=_#OD>Ewrlxym00U->=^7m2lOK1WOrT&`SZj8gu~ z7X2|@s5tzq-ks2yMN?V&1@oED%P;sKKmRH=HXEB~^bYY!VDo&(Yr9R%!JFQHcl|n& zDo4y}aF?b$UN)D!cG#I`G;z{oo|GBa_LltJMwD!)qB;=32sPm(+ggiMpD5Nf96ypL zP^BGAvad{)x2pOZ%ATe1d7rmxvQ@o3X0WVPDCjRUh`y=$PCCWK(mm>}RdQrjh`?dI z9JKf|JfF&j4|85-!z7i$&J%Z?-6M0-fnecBm)`7qBg3G!7SA;%?89B2P44=-+2!=L zIj2{*Z)w)8l?INad9U2(yQIltSo2HzU#rE^(T*HN%UGF{rYdN1 zrU%hn=2W024x_@6b|w|!6pV9^M7ktix8XjHiGG~E;UzjXy4&W@9Q;mY(H0ZRB3@fK z_#2f=OLW6{8A}?#K-b^SUH37PV;bZi?%pn&Y)z7|XqUBxE9UNwLJxM&8lW=R9d@Lm z7>K|mhO8q5-3((O zHfT0)l%2|Syt!vpE@6Pwe7@t(qbX5bxP$=R+`8*UFYIHdzi_Edj;>66xpaPiBnSJ$ z4J_*ic5382wB}%6vI4a@i{~INKLzF?Eo3#=kT23N=MH0uKGo;|gzPZz_+eG#-149x zBPDSseTf8G>NF^#j3ShahNJ1t!_6ZL-^7Iq*OW$u=Y4#=ubM50S;+6KXfwKwU5>5E zYnT6DJjic6*t;PH)j+WvJ<2yz4U^nTw`X$9rUvg$05=501 zdW{-su+Pt!Qnn=$>vsSCxv}QdktcfFGTn0&EGxHIZR{;BmavYb90s{vTq2g(`xtt5 zBYBN=4=ramTzFUQfaq&F^vednJ@kik_9y+(UlK(khioBO3y z@QS6jl1+Q|%*+-pF0KY(jq`smML2N!PiZ}+@k9u38>vpFT)j1E%daqIY^7HxW+7p| zI8qjRY^B~t6X3PsEU`I}H<4k-mhR9ovJmyIeB2RuwgCT8F)o177(8{5=7v`Dpth$;tQ#6mr)Hzj4qhlSyUD2&290%C zvIydj6Ci$LE;z{_rn8`(yZSHPmd_{u9Ijq$)_d+kei)_K6F_*L0@UR4CGLF&L|g<_ z05~SzI%;Lxei$10@b;L!CTP5Nx?75+*NMFi+qXhV8zbUDp)=p^%hiVO!uYMD*dh+9 znGt%UBZ6C}FxR4y1>K1W#o?}n&ss~;Gl`EM|Gb3s&F<6x6^xnc48L|`h#_*ek>(2z z>-*tTW3GWhlqg5$lc%k2ShGb+fNk7b{x*Kh?&Li9VR<;-#F&6y>aTObf%BHI>9!Ee zRt^7yk&h`7CbQ-g{2FN;r9hMIadRjFDC{+PYlnMe=n~F`Z$^PwK<9qW~@(gtX4&6 zAnRZcHhNzk9v}~^@tLb^MFISrY%WjpcKP&e^E8)EOU#D8ey7QXD1g8ZCm@@}&J7Fr ze*n-xFTb3Vr0=-YdU9?zNu!S)Kenbr%+RXRZ~2L&p+>iPjneiuk~RwqQNYaf=k^le zT2XkJpjnf0vg;bkEku%%`xFUXP(sZf^0_Rkh_{7AFbV~mT47U+Jpb@%SgvS^xa>x! zHa~~75hU?xHOV=Kbt(^CnBnF+UWEmLjR5Oi8|poq=)` z_4~-xl1SbbWuqiIq%$!&7Zr0zf|+OMlBhYIQ&ZXs z?5FXut0&^GL12+HWwyO4lhIufs&7q^M6S>xBt_@YYKQ~_y2Dheet2Nu#JlfSa^j7*{|c#UHVE<36&IM`PRCYE+*Uf%`HE63Gr2$)-00ZD z$w#xFFBS($iEOLN5;6w(=xSRAhk{naR$U?E0`H4#1eYp+e}7}N4|saxqtqFa3A%}S6G zNCjZx$uu@bA|nLSlv4{Ajap4RkfJhfQ)Q*QLVi@xb6XEd&}xqAb+og!w|M{-v2ghl zhmG;z>gsMnrQN(O3Y9MNNDx+EE?6H)qiu8%7z*4tF8N^nD2WiMu*@CHj7Pa~bwtw0 z@0X-)+3Gq=(2-KI%RY!C@;uWk^r)e*IV6EOQbCL~F@Y;=bmcA=I8i*2+!FVK$60FS znFR%I2v8wVDxvAHqEQmWNFC&5Qn`(!Cs9kXicHdjis3>{87O+l>#|0Z6WS!?Nd@`L zW2lbM|5Jq(^q92H)R;-*Nch}LL?&r&ZkAA0>%vww^=qYN+BPsg6HCH2kI|HJT5*)R zOu2rUyBJz5p!j?&sZ&XlRlue!kb5Jq@pMoVEV{`Zn4%IT;V@j`9FlZ0f~1M}X!{>_ zy-1KWqZn<2^{vBt#co0*0;AV{i3JV1I)4%h9do#OW!R$Ln}Iicq8>bBb2gBy2^~$= za8ezB#2O!=og2x~m#1#aYe~zi+_6}OjsnnH(#fvRi`#9B*-urF{992`uY$_|kC`nk z_)xb|8N7`LNodRjF%sKGn`9$SlqEpw(B2yPa56f#+ThZ}939Cp3?CaP7@AyvG%5cV zAS7wC&#wohZ6s|DN&K>aBj_!zYY-$!${DvA0@E_^MXOLgUYvyE&jd+IWdPzMw}pv# z_p-$!9W}#Q4N15^AeOZ-LHiim6hauYe(bg)lFHUW61jkAe+X_VRS^(j{~AWf2??h( zA)9U~k}yh|c#rOTokR_dIlmq*eSx4wQD6D?0FOtL2+qL+y%*^^=vGN_!^Z6io=h)n zYh#yPgq$%Ztsfzhgzac_gma=$C$5}XzI?knlAg{FPR5dLlQ=SowWLS0MM2WyVz#x; z;!0=&u-;aINa9-qMyMpUuoCB+KoZC4JX?2^78Z|qGe+aPFP9S$rOJsQ{6LbU=tR$PPTUKrEta^V=%e} zjQUYp_CUU=o-%=Il3vipjY<|Ei6(Aza(fQaHcUGG@BZ?&IlO+NbX^rz;ZCw=0yN1g zx2DWJOoFjy{b9PrLNJ~)zZ9aKlaSlW3k!7Yl&HA5zP@?+Y|?7Aq~bs+mK+BN;JWR5 zk8T$RNsEbWYg3a;s)3d*c`-w!B(2qCcOUla1sonXOe9z%siabF6Et6AMF3clD!4g> z@$bI*=9}-%6x5EEpGk0-V|M}#rHQ!}a>+n@ZGrWHw2h=qA*rH_uT42zURq6R#{Zx) zVKCH7I^FiMfD@6l>8T``+f`y8K4mhRJ#O2f2+RkSD`ZqTzYs|RpyYQOVMf zyeVNsXbarulm%6?;;xmj)MvMbCX2?aC7e!p0vXo)nY!^@U$ zXJ@NMo?e4WT=JG7T$sdr^C))v?+Qbt!Ckex?n#X)trLJ$fqWOKH9lsqUmxBql0YA6 zcmSo`en{KJ^gam&7=z7{>B7+gXF% zE6yFPXp#oC9^0U@snA(M4pV9hcFUDzTYL(kBq~F(7AFYYI$`q;=F9Pz2$IlbvW+v@ zChwt^G){NoPo8AcHZ0)k%KhwRGahBLi~=D>U>Gi44QxT21WR=F5?PBbOl_M`iAb1t zNJCc<^rbCVh$RxS;xEcyWn4j5dRfzLcC9d}V3s>MI*FmHV#Wl;RcCBewI9P7iY$~wSE|ZL_WQjU-gehd5EMp-+p(ES<3gu zCpjeX45heH7EJ@d%yv`IQBsVwjik*X2{a`Gao+)+VY&5;xX~3d&TEw->*kSUowBN- zfaGz}`Dr>itwW=WHag!!gQUD+;gaD#K#~vyDHJU#m)%I>wz4wo6Gak)M>NmW7~^KU z-Oidgkq_Kn@iHWdStR}NJwrmR=JKZCoc0RRNGw+D^{Om3H~Qa6E#b_PYSJ1=n#R5x8z{wMx+tb@Cm+qy$!*|~ zuXR^#wcF>=1aR(@6O$}+j+q&dI^QIcbW~^i#0*Osw)ekeG*Ykcoq6rG*9enVh>}je z#~tz*4XoE{8(JkqG7R&2>U<@}NZUx-T!WrGVXUHg^Da4Wc36owxCNnyOX6Bs$(jdj_nv96d4$B$<~=)EVaksZ>08sI4to zaxrO|ttiplEjf+_`w3hoSzH7n-K%cwWXMAlu#(uQqJry;Rwx4|sS1@m+m}0+my)*0 znqi9K#LOD&|0gGOUftX;0ZB7UzYaur^XFuA&DVgTRW;p!{Jj>BQ7Pi{w~_S3kOZA1 zrBmap?JwwvHgiF0bFa!3iYo)w%_1qFA^Do?P^VXp4L01whajVkt07S!t&SwD&H|Fc zx^kIVc9;p;HKNVMgnVUj{b(g5S~dW1l!YJ^hkhhWBvpR!eGbY`Tv_)*8_`H(8jie`OEs2AKFbGh;{K7B{4;Xr? zL!b=+BTC8&m^ds`R#=rwo9s9&q=dn2PJ~45Or^$5j)d=^szo7z>1>@YH@Mfnx(sXn z@97f~;50glk&>=l+^ko*6Pi>C_e7j!sGn5mIlp04QNa{zMVXaPzF`WBUQ*Zr4!1xd zSVC?&cO;URn(Lp35$Uin2h6rM9n9!paeIQQZbN?y=6ucmu?*Fr8~F%y}i*% zkY$7m<>W*(I@GhPx~}H(`Nv_Bq0&%)NNP-(93j`CzP+HKASOrAFX2&xj>_H5AmGb@ zOdl*5kKyDxd9YF@`=P_XDNfzit|g6dff6zaDmvq7%e@c*l7;E)WNaSuyt0hXFF-#Z zl=c{`|AwfAmq}BRE-K zqhVuk+k{V6Jbd}W4Fk8%jEW85n@PALUBz%X=VFVI5o&3siK0) zg}@vS0Tmyf=OQYBq*ae;93h{JiL{_Bk)A5KZx%@yDZwOnxh!JwnN5K*ut7qh$;U!c z8Q%(f|5iGMG;f3zU|hP}ON9s^w#>Oas7l(p*%>kes%)6`ZX= zvphhbA_Yhy*XDe}9aiXtn?VwZkyuY#!?EGDGB@0`g_>QoI7WKZb^Ej5ClZU?Nn{(= zsbR0MWlJ~GAw&=Gw~_Ru4Y+aBbV}o46qSY*Iyonvmqc7rVkPiPGa2nZn+nEXULpY!`@AdINM9dG+^!pK8pFsjik!Z*mx21J(+Mpdy7#v6 zmSBNLJ*~fz%X6M2nQlub$+((dl8AF-3IeXP4#IDG1$Nv7ZFzYToqi7X%;`iDn8V>G z%VA`1T(7UabnDcWbGwGvD5){+#kwpG4S+G3yf*vwjhB0J{pjXRl(q-FZnG1NX4Gm( zJ3;CNxP&Tr=nf3(bb-{^m?L!01;%)U9^_MTjcLpzbw^~vSghnQ>FHdU1aZ>n+{~Pw zI)8%XlxfNd@-79M4Sd`jw9bcYVMWU-NLp`1Qo_zOlH_eBx{e0GII3P2A*t*3?~69@ z787;LU2WIvx`!Y|`5 zMUse>#ii3c0gVHapU%T1)&Mcbypj9nk;MAZ!(2^ECrJ=YPHG2GLFa=vi6kqv!d0Tf zo7<-9JFLf0j4s{L209e7P_jCVU33igI3$e%lA?$t)+`B;Gz#6e=;V01I(zrpvscdT zW3`fcYZ}uTTHt=~hoEq8=$F@>xpC$fLmTe8HFN8>0}}bcgk}o#UaV6hCH4s&j)Ywr z!edW>;K4jWxW*o2RGoc&>ArNjQ}sf(4Wyz%K}Mh}Dsh*BB(}(nV%*`|K2TKvQx`}F zNyN&}yI8?0j#b3h_$-IZb>WpY!ApygN<-4bl1|*olaFryKCwhMrPi?F_5qB<*gTHX z%ShWudd#^&zSbEq+gh5*g)y}BHQ3NBk%(0!c^eB*100ydURok{YSHLX$<81pe74TL zlICWpAmPN3ps*<|Sj&rbmE7=(^skB-vDnMn| z?y*H=Y|RVn)9l!$5Lfzz+@zr%7itS{8Htjh=}b%8I#2-trAf3G($}8(`mMKi+&%Yi zmwC8W)!)-tn;ypkH^?f@fbN2P*O^;CgD}aknJ9_GNWGR&DnMQ)0+54~$HA$c(pteU z6wUd_ADkd9tX9W^FX;4icsu&yi!Z*S7pg37pU=`KQ>07H+_*8yk?9PXx$X(>qJ6iZHWsaz)JTPiM>Z7{4{Oj<2e zf^I2n{%;US+emsWB$32L6SBym-Z8Xv6rfp50+Wb^S z=tTiXJve%>>mrYhB$WLT3J!xdK#R%+uUQq=3gpYCkwkqnG!Bxnsrp)E0xC<*oOAE(a8*xy?bTnQ#-EQ`UR+)_xAJp ztfG_PZP#YB28k!@V#M?JJcS$lYxC&x0qd1aK53> zO02SaNUKAMqKI25;Z{rpbc(wT=9HkD^^(Gifs)b*k|G;lFyU^wm9KWfZMLOlIA;hu zskES8eAqcE_SWa8s$e--7xhO$C&Q0g{HSal1tLKm>7V}TsU176-Tkz;zh8bpPO#K8 z7^A5LHi%I3ws+ULTc3VmIA+*H8OboLU_7SO6ivU;->HHtttoL8M#+a*l5lCv)7hSH zuEk=pN14%4-K0JmotYVpZ6b4{CGOF8-myqY#F_$$P!q^dO-&U(zhEJUZ*+Ga)^7qy zFprdbMwWmi)<=@WvZw(wS2@sIn_Y?|-+^I6DeBr>5$V`~L2mIF1N;r2Z6s|TNi=nH z1e^K|hQjP&h|Y(J^>T%5Z(n!N9-jx}S+2m%Uf2~CD5R~NH<~>`i|W-DP(YHkv_L(Y zT;f9PnC11KH-#j&z12>>ADDh9aORH$N&%(yagYSs1ooh<(~FwlU|%8-u7)JM-9n+D zaL|)O67Hny1&3KLR!rN{gSW2y)6ShccAUEMv&P1zrY5;zsJAv~qv}0ad*b!?_Yd_q zow;#l*APKc^M;W`Vx*8G1v47x-dI7sU)Ta6pQhMQ*_oOOm_nUJi~j^l5HF=OB=$>| ziln9XB_IlLMCFodKtJ8>b_b!zoyyme5J~*CkW^}ngy9N@q}=Qy%$pX5MdRbTbkn}p z*4ABhwT*J#iQ~PymLe%T*fU@#&C=F@1FpQ@CYLn6;jC>NNssO9SfL&>gG|Y?hpV!3 zNUjrw7c8npB&Xaxxp1C*a%3Y%gz=w(k( z_Di^}gS`3=td4Sv5(FH2gwO4RRnzwmL)i z+(@Q3)Zf!1@8$J;dgIom4Q6imVo_;mv3SN(qGB_w6%*B|)L1Clwvta$49-T!0H|XC z21?0MU8mce@Yz&hLHKmHJ4Be2Qj3&URzgBqre%>77H$YhdKs@EMxscXo1l|MG^44WY+9xm3RF4vA zNM5_qPTMw;wgyRM)+tS*wPR?RLoxW(=mpS;Y6*j}nnrC^)50)J8KRnp5=uxx8xw)~ z!g86urG1k~60~!h?DT6_MUoEHCOd6GyD>nbHnd)=C_PvLRXXw((3pdk&K4P#kn+*n z29N~BBfS`=Ve|qTU=c#q`zNE(boIF(yhV|;|L%>S4K~S#4E;5OiF=uGRx?2FZQ51a z)6bK)-ne_FgSV`=uwIB%*fu-+t!v&p-Q|oM&#w zbTb36ljCjJcX062OJ{D}x_jly-CJi~{^Ig~JwDu+O)Npuy_)_3!+Nf52CAmiFOM|X zf}u@?NZUwyOhHZnapn|#@H63ooVXu8y_(Ah!`lUl8|QZ+TKjFX%XCWkxql4idc zwW$#w1tJvTVgsM`D%?3bzY{tNl1W6e^2+>cB&yl?C*{7b`v400S zr>>p*v}TBBkpJ=0Vlac+X9P*Q+Ltf=qNAVJyX(xAbANo_FubwCc4d9UZ671?DHu13 z=)LBKMnwgOE?6s_W=lG=lu5H)v-rMiwlGR6t(t`1B_vFWWy+%pu{f%0%VgSgV!g`k z7*kG_DfuF*drodaoF;CiBMEf24JVEtFN6mejL%Ix!ddK(=J- zy!^8p=f1vj?bKU8`2MMDU!VE6-eYeZ8#X;9R`21}o z{i%^e%c1I&QCcVGaZnoK5`^JOzm76VCW|ocka<3!wpuIT!mh9qAjPFY+Y7IPPNW{! zY73DBhOc2ksYnt+{hD0lg~}Q$A_+nzoKcF9z|AqAf(EozspOZa&0Rrg8VCSK56h@) zM!wTmjHGbE?OzQ^dVe!0@gtK)qqy%sIY*+T{ZBnbf}|bf?fZ9ceA?7l^NTa*p8G6= z2G$ef`t;zXOS^h`20+r+1>=&X6}EZkBr~O*B6(`XdPpK)qm8={6(MPsJ=3#=2NSod z5`v_WX@nBA-M~ynm`)~>v1F3`w8-t6*NQ;79cO2)BBk-3YUNte>M>HemRh18l%T75s-Q^|PNX zvDJOb_r?}ectk}fGhayF$g z`)n%j-tzKty5~V}D_$^cjq^#R zjdFutMv(E!%F!z_yjdg(+tFi8N2i(EK$F)G0wgCV#&wNnPQ68tv~%aqXP1UFnlL%j`dsnO&FC2=LcP#b+^ zB*89_$r0?MDv~rfBIKz;s8q52v;29wBqZfV0b;QvS0Rse#o7d6n|&VUwsGZ$PH!_U z)Z(T|P|)nyl#_1g{%vkWriEkB{vKTLk8z4D%pnkL5P3i_n>xaKheq-`WU zK9cA&xxyMS2AleqTpUoh5R;4y(-ob1#uB|qbOxa zGXE?UkU*nyhA=5ijea-;a7bdU5ygH#?3?LGe8y9NhRPUhy(zKdwl0>`PLnYhDSruq zKjA3#sHZq8E^TunD*2D{w}Bf5z}$_Eky^y{GhoL}kTb5!UONRb($1%zeHNRBxgLDF|5_#@X`9CqDsCtWs)*& znIua7R~7g3r*n$`B>^dqq^CKll7f@W$ilvOK*R@IJW!AjSxq6^VMWPEBEfGb5GPHO7Mb+_gMC)LWAAP{J8hdnP6 zpR{y#yQOiB(GCqO1uFYPVke+_&w?D3Hi{%1S|Uh#eg=0@Rz*@+=C5!5akF1fZ;njX z_kt}5!z0SPg6~=?`jz)^s#B zG)8i#5l6-vP#DfD4# zctgUNa><`7ytYIl;f|F1n^`Be$35&2WjL%C`)6ie-?N|>f?0DrVMcD0fDSFfrhWbH z=K9Kd@G5NAy>mp;+$MeDIUcP(cLi$OJ9qxmKRpX&CGyd;Uk76ZNg#6jXjk^i zscTohK6mTxsr@@nT{+XU&X(I{y3+Q1bBiSupD!>pFZF0OQdgfKHakr#K_gtCv>7s0 zt>h8FR?K6%Q6{KyPSKWZnaC;%kepFWpFd!INu|J7D{RZe5sOC?AW@3hZE13aq*7_f z<8#{@={y5fbT*^DE(Naj>Jo6-22}Jm|*mBY$Rk8$6DHl|B5e zIon9u676X#-#Kr0H}$jiq|10U)I*a(q04!2>0mzF%P>qthI?UxtwItmj_725|KvaZ zb|D(o>%g4#FguQfojf*9(Ua^^!Q+Xc4n8{i4p^A9gc;Oug`k^D-9)taqy^_D_y8t6 zr>x4cM34bBB+j+AD2}6!9)%W-YauDj>J>m^4v54l(NBy=n?Aku*8ZI&P~wpE)KkxX zeJ?f%8k9er$TVEK@_oXjD_5?4fB%l}Upv#mE3V*OUZMw$6_BA`uO%oo&eJjte*<%8 zgv5ck=LKOhh9)Gr9Bq0DU^aoL0wh7Lyercdam7m$bNm#2S zF_JBWg8Nou$VK8MmPtXktx4Wddv9eVC9;DJ1X;&1RC?q1F+*?D;BtB;vb%cff<91< z^5OB&gKIZxhSrvZCXc}|uUzG}8&fHzwT#Nd zlsr_1+j`AXtERo2!n@wg~82gwLMM|LD#aE7*Eqfuk7q-(! z5r5n(R*@768Y97r$h8(S04t$Y@G7+8QK5i$ocax*Lb6d=mFcUHLo-lY{~xha{b>95kLmV{uE7 zgs+w5bJrg}cyMPt`r==d@8$d_@yQHZXzdWA==D(8mVjm&_<>M|vhuy&K9vR3#84q9 zZvcP=Ce+sEmua);@dd$X@Q*A}f zj}0Vlpew}(3vr81PvRtY&~c>1YW7-^0C^^{M0$EUmfWk7nw;p849x~>S;`nxwUEcE z9g!pqFDDYZ7nGOFyb(*#%+et+AF5+4?i@pWuG$0pR?gheLe4k1ujxQXPsf3#U4z*b zvbM#04NVR1WkmA1>S}BrM_?OC|G%sy(Tcp55M{5;hn3m@7WVY@7ORMENEv38pCJ<1W3~57hwhH;o2;2VO$|Q#7a|B z*d&Jt3C!Q91f^CP@EmG~=uXfkuE3G__xNO5l;oRgnYsHNcZBa|& z?hk&j^Qj%Q%DwZcQ>PM^H0;~{^0hbL9O$|9^(n*^N$B1>#Ug3dE?cER(dmM_MWR2E z603en z$E9wQ)YT#(soUYa$@vw=j5AIz5Ex5kx=^Ae#l4J^hJ;9HRBm;s`7D+nYUI^XD zE3Jy5@~$vi0uxtO(80tIkgwG^T!&j^dZDl#BCld3ArrBS2eOjFl92?}t#UtWiS!;t z(#i2?df%BV*APih!FE!7cn0DmaXH^@Ijiw7ac4+Q43*Qfs z^z>{@7V#JZxOm8?ngoG(2Rc_ayzL`cv$?Ts*Qk6AOHyYR`)ZLAA&ObUfujZLkq zg-NWL9Gn%1^jsnvBx&2epl1n?JV9HdCAhvm8!SZHrFP>6f~jpJZH=`eoplifNSq|e z#Yscx4bUvZb&)oDDP!FSg=jZ2cT_?x3B~}f-g)@#xBpC_^oOepd-nMCY#obRDGBSv z_0PZie0@32D6%+dgW+);b}R+az7`pFj^Km;+E$pS$wxPE6WJdiK`cZ1wm!LDHLGH}>{$ zZ|mJtI2^F!DT1V?VkG5i+m!kU&isrp7pae|EN{eSBN!r~jXN3auCou16 zgvHlfHL0$tVQ`HwX^oQ|tUGWZ;#w9X1uYE`SA1T*UYm^&$>*}T?52Qq8%cjMB*D%a zpZdKjQy3=|rf$On^ZB4HD*Z3|0Dh@|Mk)d%1FGhq@&O0T@)7sImtXdX#2 z5+l|76;$h*OS*8lQioL~sB(on8H+3E3)xZmo{pMWm4T2gt7jaXiVXfl07(>UEqmTNmh9D_)sQ?ya$q5Xm?nC<;x?ZX09saZK{K z_ciXzZiY#V!G;4QD-14;k$kqA2Aj`e)R+Rx;~$W?z!7fcd|c|bsKWAyTWXKbmzch7 zBWVkKsPWZQgdaHraksZQ*LNElG7MDiR$w3k6yoGL;P=(!{Wp=e;mRv{)r{`B^Ub&a z4Ck9~NTl@o>#w8KK5dMV8zHN&7gOt8Ar&!!TSTi|X!%CIgTJ}HULux77?&?=hHwev zrPP=&;-zv0VY-bMW)HGVOwfDc?O*-s?dScFEv^O!r)+P%4%J2k8OSX17(HUYIU0IE}eg7#(yLko8D}cRK*IE(0AlJjL<%B{MU_Lya!CC%$dK{ii|_>o&qC znSn^;44CY+p2S`usV>39FI5QUhCLy}HWUymc>VfuQT zM-nT50k6Gi`zqTDm8EWr%}wGZsoiW&SY)!jx={>@bnJ^XToz)nq?yO7uN*i*PG!9W z>))$INjW5q>S$;-+Lp;Y$|)UUH3=%*2#{CWfhx6l9p;{f(Ex*oih3?0vX)#w&d(% zC2rizC1Da3cB9{GHnuknwWR!z0w5`+u?H<_-Ch|Qz)(~0a&*g+dm9;>+ehvus{;bQ z?eiKuMu)GqfpK|QmV|2DwjR5jif(i#|__$M0}BzM62$IWS}zNbQ>_h>Y0E7iOPit zw)n6D*NU0(2M_<59?0Jw+_}1EE(-s1SXt5O#r1wYZPmBur1`PZ3~=Jg-MA$zeu+d& zpmd1_)Iql^B2mcE6Nyb36bi8)?i^Ud0*>B3F;Gcf%LQw7+_=xctrbA?QI}4}VCR%o zI>ZBdtOP$%U1Rm7Z1!Gt8dAFn^tlD)?bl|!pI+I&eN!x^EbFxS zuy=^7wG~S}=r;TaW1~);GP^s&=~yg7nA8O{nV#NM1*r;=R5gtO5)_lBN2oeLuDs1J zaOM*6wI(A;-gM%Z{4YtwV(=0suXSL4d7uHdfizs~VFe;-;tn&McwFjg=xNARr9JMt zo~B@8al@6Qp5dNlXh@-k~Wa*Nt^qb!n;NntdD1S>fO8!sIu0aL`QFz~=uTTE@WUuq_& z-av^&&hrD624266uE+@2Lz0e4T$bz8wr8l!;pd+}GxGH8Y!@3Y;ZUS5-B4TGkk&=1 z)$MywZ5p4PiF#YlT{(qF+HvjHr@aQl5GR+x8|v+eH0>HBk%JL3PV#7!RXjG5unN!o~+gF66jv4IM-BCa#_o^0^wC_6=@~Nr`N0O|QXg^DRS? zE7IYuVd}_XU}mX!g4;SD56Z#7&Bs8gkVHxFEaCOI?3!&P{izZ+%%91tmD9G#H=|l z==83+{DQxeb0YE4??3x|WHyGu5=q}6Pm6*yG}MvkcmOB?oE#s|ShCNZ z+W+kS9s74&IrB#lCo$0QXt!it*SO|fKZ{d@?kdVo!Ioq zbXVrcJ29vOZNA|K;n8d?Ir`2K7}aRYbj{9A!zW;RJEg3s$RQLBNx=wtOcS?6&KN0!edg@QI4 zr1Tz-C+KdFH~1Wd{WR;m*`+W@ybPn5Bah+COy$hXz=`4hreJ&g#tCKs`_5qUS-UqH=dVPa;8OOsIahue*D&?tlqPiPU6*credWrvD|gY! z4Mco+{c>+(9aL7#M$;G}lGcjrFtnZixJXh~Sgo3nt#9-!AStOo5_|fwc1j>Z%4Bkm zE^VV3$X}Bguf?2lvYOy{d*OAitb*JdXTW46IT@PqO6_)Y9B0RrTs1i!a@$D6!eHQ1 zXTk7=sgd{gcHp8uJ4n<-;-r%6Ns9^JzMd8mEq5+U+@v87EZ%y+7TDvn9cXadi;-k^ zDQ0*i&yPmIsBdltQ#W43WiF|}y^W;DPTk0x2s#~FbS{MzdL=)l@znN$E&%Q|3=dQ` zE5e+cSzd&8>&n|0n~?9VQ|zGyZW1K@lpJKzgN2`nNxr6&)i+Z;r96r_^`h{S1G;Lc z3#SXy>Jb)H6;RFQRF(%YFsW}wC%3$5(pqb``BV;Lr1T0h7>fi;&&)o;u;@KnSYlo3 z-^1VuN=g&s>FP_1&)vP1-PJ#QVqkdSM5V-w4S!Q0FT)q?S zvDL6tlFrPIz%JU6BeCgCPH#`sVI-3M9f9x&4J${nn%8}hA=LVDvB*~G$So4!a5=J>;#h$BJ;Lah5FzLbd1?ao!qr0)+mhYJ5j*Omi zP`M;;3Pm&uZ{&THD=LX4&C3?aBoZ+Vj|91i%u!(}NYcy13cYv577z)Re*f7Bl$3Hv zLMUP4hDd@vxO8pn;HRy12Zn|RhI#$Ha&MiF0BJ0xB>{y<%PQ+p#aNN3?D3IgoiYZQ zbaM9T5rU+5UP;bwZuJ)Dk}zi*1s=t^&vtirCzEZXI`Z)Nqh6aM;AAaISS<$h`>Ozp zcB^`oOL#u+voKWD(Swl-9)hJHx*Qi;1jnu=YT|;q=8%j;a{< z+DK|-T+(7Bg)AVY4l}SnqG>{%@Kl0)$S0BJ^5=9al zC;efMU#3^^o}W=5f#fnAYY{`xBWb3mfHd_6Lp>CY>hq_$8B0i&_}S*>m;4YL0p8Z! z8(E58D)vS~q;e8#_3X>8dP#gX{fM1bLJR?kAX?(^gzl_h&`O@|Z|+ujRgA^$NIALP zeP!7e9j-KPgji#G2b*sVMJ z_okF{N{vG3%Qf{@xrE~(i@eDd46U%MPx2~HsBoO9wxeVHVSvR&*!`FH_A9=+`Q?W% zG_8ZAng+MDC~-4-EYUeIh(p1diAivb1B<31i&SIXM$(odiGYZ@S5VO%J|6=lLL<8; z=-S0J)zs89Hq^O%U~lVm8l?xx3k?KHP<}Nu%XIA=OCA$R)L5GvrRKC6As=dg=g2Fx znpA)!5+^PA#S%m1|25-}M(6zG_B1yGQlJdlg2m7lZ|;OUA{_@J9eMS@h6aY5770W} z5-~XnIw3=V)SjO;Dh)}HD?**UULxPO#wO@TG)|&OLKLyd8-Dwto*DoEAOJ~3K~y+# zlJjZ>w`fVk;&NGRQe!|=fwMeYhok})Xydn;SQkm$9tTO&Ft6Pe%joC`cuwqugiSgH zZ?|N$8w~cQ)O=PNrW7J6m3COk_jy+2MW_f=A;P4Zo{k2LlonUpb|Vqe!MfU}13lrR z7w%v9TsS)pQIcYgykxK%SokoJJZ@OwGH)Yki;;xGkhJayDIUVnYz_19-!d;3?vIzFtBdkJ#Vohm$x z1zI`qX0y3mIq5)11mKBhwB%q2+T?N&4f*V+U9yU(U$ zkD%+11KlT!&U-APkWA4Tz0DUQnTy-5(Uxswr*@-AaxsUxAWC`~kkmE3$?gAX5+fZs zl8M1?TQ2zK*P z0|#pMwbn+uFWmg;&5K9nwzZJtv&b7l#v)%^joqf08~V0+l_8lA?Y-KvXym|kpH!mFRwXBd6=5s-&!)7iVf>bIU!A2gZ zT+A|QlH_hWCNv+|M$(h0B~c#$@*p^;Ql><(u4jmM{`}?3?{nueiIfhsCQ{BRXTT9+ zBLctwIxldxb8%^#rdL82mg?#Q8 zEHGvWT8vK)NwX*-0!TtRx6KSB5h6uLyK?`!3R`zD(T#K5(`UQS2F+suEzF%)lvGIy zXx#F;RnoSVnB?;EU}U0$L_!VwssT*CtnX3~Ug@u9T=s;Jq0sSB_j#eRTN^G_h5GYw$JZByB&KpLF-0zZc?us zC%dh}>^WICBv**wxv&|>kJ=Wzj={{)bv445tH7^{%k-hn~$6nS1bNn$PM5gd^)=>!j?^jRmycH!ej zNizT6EL^|yfSy16;ri8u*I$2qPxKXi`JV9y50`{VcV3^l`T!*Y9$xqFe#vVy2Z~ah z3R=F0WFc=y&3%qUN-56^VVSP2tw4QgZ5%CkE@^9n33i=Kp^!%!27T)f5-%=(kXypMUhxJxiJi!qAPyE!99$t>i181d{BQ^r2Zyv$}Mf zjgnyWI|@WXz1&=!#7elKKlg0xh3TZ1X=+V=v>U$(l z8*JTGSKH9k*jUrp)KE*(wR^0zWWvXUFOswknDo_NmCLtkY0A=5Cp8uqx9u+Z@bO=r zm>Dl1QZyR2Y_HuuK_tNy4EB(99bk!31SH<~&Y%Cw^CWlcZSsr-%B;>Yji>d%5D#`Q zPE?9zI$^u8{cj%=NvNGh61Sf(Tz~M8I}aY*xqkgf^vEma{vVUie^Y>@pMLkvgSojo z50FR??j%8(Sp&NkN;IHXa@`$1KJnG;01TKX@j>69LTOc}q}}0i9Zq+%DoYzU9Fhb= zRGy5GjA8IzqNIVn?7iE!Z59i|B-2S|-{8GLOF9~5S4 zY|1pb<3*LEfWys%#lt6#=TkS(m5Hi?+u|fo1W8;-F_ju~xNG{)pI;In@y`F{U;o$t z^Zfglc|-k!Ca6*SReC!wuOolOadt5C5fD#FlUc{;qyJY*#HxEI%ZDC>0 zkNpcINh=JKZa!F8fDy`X9^Uy~?6y5_8cV4;#NtdI9u)u2e^QjY#{^GymkO3*FyGv; z7jGN<8)}C@k~T}wJ=nT-dAm^i8D&`E`hi#Q#cZ`6>q#V1dUX3U@(Ev4liLIRZHvns zP^(2xpuP>IwSp*VG}^X7Bvn0)Fq@9O^Ui3J+x*XsTIQs4$yZHJcXcLje`K1P%4ry^ zi6j!QhnPA`uyiCfbar37aN!VxbKHvsr{IO48oO=uTv&B7DHL)YXd-EwvM6W^F_C0i zJbe7^T!kByt`s)ArbJ!IZ6s|Hoc{gD^3YD6X507&FKB2aqq$A1Ge+<7G3zxna& zh$O>q^Fr8^TdOZk!t9s)pvW+t>NqwxLH`(Cc7$X+ZBtwLMhbit z)mwy^Z9!HE6_@H3L1RTd77T@({BQsCpsEHL{Es$w*PU{p9C{mmpOu(?QA$;P8B3MF zDKn@*8jeFdDL|})?tFutppOOjbUQjorJxBwbNKNs5`kCm|LxEfNPdG$7*hJLl{L0f zbr@(S*!od$ueZJ}w`+~~050l2zk-V#cUIaSB>Nh+8tbw)|Q+b5DkHC7{^QcDizK|%6 zHfU02eZ(3d?#kCJ>&N92s9PALciZ71eNzkrBxsm70xkGqt7o2o)s$)B;_(8Tr$>}meUKU*XJoltFyby((%0;eE8zxEcbEw)m*2t=bWEk#C9WM?rw>X{8?q#&*Hxs z0u0HceOzr9=k2vRgq7+VVC0~tK!WjGA*^6!zdMtc8^g2YGq0-i=Ie{iULnqVInrXn zR@?aB@n5l!8DOf9;|%%AsbPJyly&9yqaVgO3ltiNUiMXkaVH`AsUTA)E>!;pMBfNV zt@;`al6iJ+>|)Zz7fYy!0?XWo-YJg5Y2?h_CFDv(0zAR_4vEL-$k9>*#9{+1!T*uj zH+2h74>^>d0^NlmG`P!m+SeI#NKOrb&lUI(9%!rE*(7C2$b9NnVv&Ct~l(S7XqdDK(yAGbS21AB72 z+@R)FtCAa2^fNL+ZnsZir9wJHgoGDU#=7FthQ<$MR}yTBEsw)uZ#&5!)x!Ue0CU8l z$ z(8YC%9JvLu=392Tn?4OAYGx=|X|jDU{ijC?PJ%6|Fil>uvjj-&l5Rr?Xl7-M>yHj1 zp2fy;o{j6vXTE=0qG3O$Sett@2EEsJViD(Fv2 zruYIOA%%}?h_oya@Ok~4Zqw7xpYa0;!H2L!^sAj0o9BVgAN$Ws^z7;LUd^`ESKzrS z#;3;2RmyH^r;^o^Uu3Zx9C`Q>ddNM@mTA+At6yp)u@Ys-|9wLnfFv7N| zbL{8Y)~(VJtbR2|GwB=t1YRvTIF(p^tQMjCh&lr3XSGg)51`-OF`YOzL0cUs4M{RY z1_reHlon5~YL?WuFC^Rm%xbM$Vf}mbf)M%ry=T#Bo{OH*9Mk^h0LjE)`#rRU#Ua`>HRD-KX`d&{%rK# zF-bK|?QDl(yXTs%9w}nc!OLTX$$Ry|g4TggYY{O@0$8N30GkS#bJ8Cl(H$k!#{6Rv zJA5vXS-!$1p5XxkE?WON#~om>&9_$|B~M7&W&M{Wdte^`*`FGRbliae`UE zwDAY-kV~|JS?lktY^zL>>WSsAdFBN^KPA5VNVY$ylR_TQUE76M*Mdw>%Jyel>3&!NPY#2TMYy<}u zKCChtAlDqaKk0>qFKOaj{tm=g4%t{_zL^a~^4Y{-xV;u5#bqjeW=7}hH9quHd0;@d zws8-!szHQ7xXFjNhu|KCKA01@IRtQ639fG`|$@Ua)L z?S^&WfT-1s@}-yJJ)v$?$)=AZD*!>3ie!k%pc&j*<^|U+Zs$ zc?JufcGB@JnJn0dz9i`Wv~iu{>|7wXRy-)C4-}SiG^do37-dg6TOZcJ5DVeL1aZ4g zJAPQJuM8YS**CDpCU=z~@bd)lW}RUUBp1?vNUB>|c|0m_k3o6yLOs;`Z%Vif1aakT z^k=i=Pdk#F3AtVE^Xhf~NrtY-vOhA_9cnhHD!ULdgKRxT^X+(x?2CjYr#P;Zof7Sm z{>Op?l+6A?i%Vt?4b;y+e7$GyG@f)SKrFmo|BAl2MVk0SPq$Yr6wcKNjTGFNs*FCv z{1*glRb|u-N)J@xKI}mNePv9E*xv!UNc2j8RGZqbH!{yVXjMw0jRVqVu+X{heT8&C zfn)N~NJ~LAIgW;!sUt7p_=i9BTR5R;A1E>2h`kn7z4>69WtFURiRbj#e6oxEo9%D4@ zPPLVtrw1`9+`&yH8+K*BqzRhpTPZryaOsf6m`+De!MMC+x(yd=OWu@!98k`B_3+!a z+qeOVEr@KUwFrHLFx&Z|!Rgap>gvDBp45o&Dqeq2rUaB$(S(vHUcUgRWH`wV3)zkO zMS*by?(A`w+OjVU&H4KnSY%gsoNe%Qpj9W@5(FjOvJAY>yS@K?%^jv_QjF(r3y9=8Xbu@xC;h|C>WqVw?vPgi`~z1OImcsPL(bt7N$~)k8`>m@iIoFZQo)CPyfs zBiWfCJ-45EdQ`PFR?BuvThV5vj~ew1hX&OuA;SwR*HJlE!7k;Aq^HBhj@~8 z@}$}?c-u!G6XQKu^X7@l2qUP@BRFnc-~}#w80r- z=VKSXPd!rVlcvGZ(K0hm^spDoe_z&mB#HEWQOfy4oU@Ef`CVUh7{0vcPZPSO4RCwv z7soavi8OT7*>Plgm)FG_$bLb>Bg`3ti_DxGw${08pmE(E5S3nPil#!X=HwcscRK#G zN=OqaE$TS+@8qThkXcm5AeqN%5q?nzpl3?HcBPzNF#Tq|Jhp8nD8}M&VJzIY!<$R= z-!sk6D23$}gnI_LPkO!-eA8u=N}k=IBX=B~&l-HHiRji=WoY--_&@wVY|)zn6^5E( zA*>Q$aODy-)!4=4VC;5z&qm}hfZ{J5lcrOv>l#R=si=;a;Tsbe#@6mOX_~mUo)Li7 zp8NMu`wRGQOiR*jPW0uI2h5~gQxHHlRz;`!M^`~aT!S0mkaEzn!Qn<>>h>o!s0Cj^; z@)FUdD1!Iw*z`5#AJs#<=z8mlI8r-NugMjJOUsE9ld#dpB`LBUrcK%m%SJGixPSiU zt|P04&5$rt(Q9QqZ{kJdimHVBI0oJAB z=qCy>j!fQh1RQtP2qwe?I;ve> zVVCV&gRb`?7O@gLeRivio*yTI+Nxb{k7gqx=I>v22woWrhZu|Wd~k4J@LApJ!z_a( zX%?4B+|!Ecv=3UCl1XD%t&ahki0r{`+5(kb%i)1Bmnj_v=qb%y?C?vSMdE0m4HVTI zBT#EWeR%~x$Fn^iDGG+Ni0e3bu>$#I5x;}<7y?!f(vGw%R`==}1ptn1DKp8RMc|$t zwT^|5V!CuKx&8r_m~f0WX~0R>8S!P^%XI^j7K}S*CoGi&ACE?mHM#OHRx7L`;|Dt# znr@w4fV{ATta2bs60i#pu&_17XxgfjTm{(On~mOvP&>P<&U|Pp>9p~vRMq21wlA9o z9Q3*1x}Mj3D4cvot*aVh+%K~VS^Y_xd&{T(OX|F_7)!}x8G_iq0Iv)r15Yv5lv z2?0{s3IPDBt`zTQ2AT(p(7oX4(sGzxNLSK;gh`LPY}?G9v@BTIe=ucWG(=;C($bBc z^&3$OYHVL&4lvbd-o z#aj{zT*EY=Mkauz?5zy2R4=1~z@MKhfVb%Qli*%G9WH7fK2~!&($%$YMZPpeE^b&vB0TU6(HP3o>ZlxbP5Bmsk%Nt9Nn3ZTy-uuiP^Q03B8#g zRlQMg!dKF18TbWJ0U%u)+LF(SkNyPdfIr{AcLWVsacG{ceFt2d&Yw8w%>OJlt_~j} zuz{uxD4LryDQ@YS;(>d*p+APtv_W0plzw3^D8@*?C#x1S0P~+_VCbG;G2vDuFdCiN z4PGv`;nUqtkHDU z{0vB_I`?8RTL&G@p_?h~T)$Gg_920MOY2+MXg*H~+?Nx^OUt%lPff!RPC?wA!;?=> zp=U?HPlm%+2onPx{`A{A(wI(QP$RDB4+;I;_=!R@$TjTomEdHGBCHLMr~)OGt;LRm z?7a38w)p0Y8YYPOYl-+>%AV(R%@l9u;NM;64TQZh3VkJ|0>|Vi@WjAPKobCy#wUQK zojDCy$6F%$Edp4rnXkIZXNXH%U%ItWNpl_>As zWk^``Y@*>DLXUdxm+B)NiSF5(pxuT%tpGuC)ME?qll)C4 z0%HQCvXKrhQ^$&!u<@sf@U&&ve`RyWtNql6z1E`77wj)>@UvyUR^^7v9bWM@Ci!sT zb?JE!wSjeCKyqXqXL2YXRNFkZs6a>L~YfIo(&|AuCvHjF&#-Weg z+osSV_ibUtN}}pgBY$%9iGJUr{unHpXf!?dj3r0jOlKN*1hdmtqu?{K(?CyHB0oZ* zmRUSFL;syX>+rV$MiPIx>nbxpRKRoP)S8SXe61SH>f@PV)+%vm9%$LH3DPyj-vqYB zu3A;tBoW~DCAEx$CWwMw8pV2Smu9~xG1ad)sDDE&)acqdWN{`u)+IW@_)Qa{gX8E* zJ}0-oM?aOF;UUr+wr7%3Q*G>`x3B@t)W$ z(2}nqsDge6t&tjR^);xq`_K_vk~A^_K%(cV3Fh0OlMFB?Q4F_~^ z<+^%1U?j*!`;jDaIO>=5s|0V0xQMS|t}Z5rLD*Hi^52GQi6dc3qEs1HdmdIW4nMdS z>Z4l_>H+hW4@b>}aQzF8z*9}6m^+jEPjV{7uJpIUsIhF@6S|)xejX_N2J$)o{zE|n zeCi*~>3E42o8#sUSATRJM*G}UUR^XGoE5b?=9?wnRFenLbP5aQ;$abFxtxa>l-wHxY@ION45}?s ziOXeSuxwE)m^DDuJh-z4FU`w)#X~VHLKva{kSx*#GslRDht@Vdx6#=1smG2J8gZth z)v$raiHnPhTtAJzjWO7w{dbjU5CrfzuBpISas*U3f)NM+Wg2A|HYb$@l>Yo8T;$Pj zSF2v2z$<@C%l7wVFRq%ZQhtg6g|}7#@X5RL`}zBe3jh0dobk*9oIC?VoPx+2bDcT8 zvEIvQxE+1PCF^$&}uPw3$K2KIQm-@Y3PvR{^e2 zm6s=83*6D1o_DNjTv60(SOk#hpr+BD4ywK%W8^38+nE)F5g98X5v%WiHW=ecr_;iC zwHVA@n^z@ntjx%dOJp>L%mtoyUo-hSPo6Mz;|`|l!xo`~%|!o&)t3sU#`TO9hRSG7 z=F#%GmLbZU?0gswc9!-kI1$=`=t|@XlN-%R#GzkyPkXAWO7o4mm+7#Zvf?ZGi`}c4=^TS38>WBc^6>M3j zSKUyBMgd#ia#29{&PFe*KM^P7ETGOH_k8^*$i?Od3S7ikX)SqKQu`Tfa)cHW)cu#D z#bw8FL?D6_PoVCvSfSDwS)l~DHc$UGO522j41jz8etW$LfaLl*Yut)Zjx457A;vpa z*jpe4sFwq}8O3{~hZu2fE9PohwOi?4X2*p>jRIn%)ZL_Z9q|{>^r9dHvH;FMrEnf} zJ%y!})#JD^*L;CPSZk|P_q=*h^70fPyz}h#YRSy^w+NLroW`n9$TMH3V1?u>5-u&1 z`)FkNjpES|mZj(JGmxhWnT~k1MJ1Grxpu_Em#)s8qZ?_Up5CR z{l(uVZ)f|XiP-RA5BJ8bTc*k1PlI08-yhH4-_GBU#f+UkCy~0oCK~;74_7Avt|+U> zb|>+pIX1=;Bu;LJ<)XjmrbXr(4ua+!6Y9$Yoy|h7-A3(KjUFDhdrA_YP56C0OeL_? z9R#c!{9~k}SF0O}rla3i%y{*pV}_EOAHzIEDFlZ&2)!o%TS|eK zz$I)tTQ7eyfmKYP_eh8A-dRW9VkG-lN(F2xf1+0ZH4a$x$Ha3NkhqS#m}HW~X+ zHe*U+K}BRO?O2d6SswdjO#X@iI@11}*!B=g^rI)*93n~8P5vjgzeSfOmZj_kJ`vFC z@JD)Khwi@A;lo(;s3~Fe6HQ2x+7mnbpWk#}&rcpNRo*t=&Hrbn-E#gK6q)Y1f!71E0>8_r2IiTf3csAE{b| zIt4^tF%+anSij*DN8p)daofLP+Wv)xCBb>oT>=G}C83j(D}2V$TDS{M?eA{{Q}$=h zLC>Rn#{XW?-PK_MOgP~9FYd%KBtROU47;`jgHRn?V4)Q%>M4K&=Vx|h_pZq|g&(nT zVtnAPZ4TJzrAhWL16k0f5gY1hc2O*9*o2u5Rixu4{)~_`)$+H zK-Uw1Pj}m|qSM?KG%gp`$lJQ!-}@%eLps&ovC&rJmA@E%+dxtTkJ`2saso-|G%A*z zMaOANC}o{53D3B}7VB+Z=A!T*pX!mFCsklv=C2@Q^BMf<6 zZ)VH=g=luB<(o_k=ciX3x6cT%bqGNJ8thIj&PWR1l&{S(^B~Cs&-_WZUT!Q&26%lv_gc3} zpZrmXt5qKi5TY8k_i&LoaQ=L9E~BWfI)fG;E>xDFsJ=nM6AmzNp=E

  • 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@3x.png b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8799a731301e7c8c15b7f2d45bcf729b301d4d9e GIT binary patch literal 286348 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 z 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 H=qv>z6Uqw9G>q9n*??O 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%0DOO*# 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 Xu34(sI}yXdelCN1CVJ&}pS<`Vwc|h7 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json new file mode 100644 index 000000000..7bf1f1e43 --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x81", + "green" : "0xAC", + "red" : "0x58" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift index 17c4699ec..2405f2a81 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift @@ -15,9 +15,11 @@ protocol OnboardingViewControllerAppearance: UIViewController { extension OnboardingViewControllerAppearance { - static var actionButtonHeight: CGFloat { return 46 } + static var actionButtonHeight: CGFloat { return 50 } static var actionButtonMargin: CGFloat { return 12 } + static var actionButtonMarginExtend: CGFloat { return 80 } static var viewBottomPaddingHeight: CGFloat { return 11 } + static var viewBottomPaddingHeightExtend: CGFloat { return 22 } func setupOnboardingAppearance() { view.backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color diff --git a/Mastodon/Scene/Onboarding/Welcome/View/GradientBorderView.swift b/Mastodon/Scene/Onboarding/Welcome/View/GradientBorderView.swift new file mode 100644 index 000000000..c9a4a0d7e --- /dev/null +++ b/Mastodon/Scene/Onboarding/Welcome/View/GradientBorderView.swift @@ -0,0 +1,59 @@ +// +// GradientBorderView.swift +// Mastodon +// +// Created by MainasuK on 2021-12-31. +// + +import UIKit + +final class GradientBorderView: UIView { + + let gradientLayer = CAGradientLayer() + let maskLayer = CAShapeLayer() + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension GradientBorderView { + private func _init() { + isUserInteractionEnabled = false + + gradientLayer.frame = bounds + + gradientLayer.colors = [ + UIColor.white.cgColor, + UIColor.white.withAlphaComponent(0.0).cgColor, + ] + + gradientLayer.startPoint = CGPoint(x: 0.5, y: 0) + gradientLayer.endPoint = CGPoint(x: 0.5, y: 1) + + layer.addSublayer(gradientLayer) + + // set blend mode to "Soft Light" + layer.compositingFilter = "softLightBlendMode" + } + + override func layoutSubviews() { + super.layoutSubviews() + + let bezierPath = UIBezierPath(rect: bounds) + bezierPath.append(UIBezierPath(roundedRect: bounds.insetBy(dx: 3, dy: 3), cornerRadius: 10)) + + maskLayer.fillRule = .evenOdd + maskLayer.path = bezierPath.cgPath + + gradientLayer.frame = bounds + gradientLayer.mask = maskLayer + } +} diff --git a/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift b/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift index f5d8c41c8..cb7ac7680 100644 --- a/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift +++ b/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift @@ -8,18 +8,18 @@ import UIKit final class WelcomeIllustrationView: UIView { - - static let artworkImageSize = CGSize(width: 375, height: 1500) - + let cloudBaseImageView = UIImageView() let rightHillImageView = UIImageView() let leftHillImageView = UIImageView() let centerHillImageView = UIImageView() private let cloudBaseImage = Asset.Scene.Welcome.Illustration.cloudBase.image + private let cloudBaseExtendImage = Asset.Scene.Welcome.Illustration.cloudBaseExtend.image private let elephantThreeOnGrassWithTreeTwoImage = Asset.Scene.Welcome.Illustration.elephantThreeOnGrassWithTreeTwo.image private let elephantThreeOnGrassWithTreeThreeImage = Asset.Scene.Welcome.Illustration.elephantThreeOnGrassWithTreeThree.image private let elephantThreeOnGrassImage = Asset.Scene.Welcome.Illustration.elephantThreeOnGrass.image + private let elephantThreeOnGrassExtendImage = Asset.Scene.Welcome.Illustration.elephantThreeOnGrassExtend.image // layout outside let elephantOnAirplaneWithContrailImageView: UIImageView = { @@ -27,6 +27,13 @@ final class WelcomeIllustrationView: UIView { imageView.contentMode = .scaleAspectFill return imageView }() + + var layout: Layout = .compact { + didSet { + setNeedsLayout() + } + } + var aspectLayoutConstraint: NSLayoutConstraint! override init(frame: CGRect) { super.init(frame: frame) @@ -40,6 +47,20 @@ final class WelcomeIllustrationView: UIView { } +extension WelcomeIllustrationView { + enum Layout { + case compact + case regular + + var artworkImageSize: CGSize { + switch self { + case .compact: return CGSize(width: 375, height: 1500) + case .regular: return CGSize(width: 547, height: 1500) + } + } + } +} + extension WelcomeIllustrationView { private func _init() { @@ -62,7 +83,6 @@ extension WelcomeIllustrationView { cloudBaseImageView.leadingAnchor.constraint(equalTo: leadingAnchor), cloudBaseImageView.trailingAnchor.constraint(equalTo: trailingAnchor), cloudBaseImageView.bottomAnchor.constraint(equalTo: bottomAnchor), - cloudBaseImageView.widthAnchor.constraint(equalTo: cloudBaseImageView.heightAnchor, multiplier: WelcomeIllustrationView.artworkImageSize.width / WelcomeIllustrationView.artworkImageSize.height), ]) [ @@ -79,15 +99,28 @@ extension WelcomeIllustrationView { imageView.bottomAnchor.constraint(equalTo: cloudBaseImageView.bottomAnchor), ]) } + + aspectLayoutConstraint = cloudBaseImageView.widthAnchor.constraint(equalTo: cloudBaseImageView.heightAnchor, multiplier: layout.artworkImageSize.width / layout.artworkImageSize.height) + aspectLayoutConstraint.isActive = true } override func layoutSubviews() { super.layoutSubviews() - updateImage() + + switch layout { + case .compact: + layoutCompact() + case .regular: + layoutRegular() + } + + aspectLayoutConstraint.isActive = false + aspectLayoutConstraint = cloudBaseImageView.widthAnchor.constraint(equalTo: cloudBaseImageView.heightAnchor, multiplier: layout.artworkImageSize.width / layout.artworkImageSize.height) + aspectLayoutConstraint.isActive = true } - private func updateImage() { - let size = WelcomeIllustrationView.artworkImageSize + private func layoutCompact() { + let size = layout.artworkImageSize let width = size.width let height = size.height @@ -130,6 +163,50 @@ extension WelcomeIllustrationView { } } + private func layoutRegular() { + let size = layout.artworkImageSize + let width = size.width + let height = size.height + + cloudBaseImageView.image = UIGraphicsImageRenderer(size: size).image { context in + // clear background + UIColor.clear.setFill() + context.fill(CGRect(origin: .zero, size: size)) + + // draw cloud + cloudBaseExtendImage.draw(at: CGPoint(x: 0, y: height - cloudBaseExtendImage.size.height)) + + rightHillImageView.image = UIGraphicsImageRenderer(size: size).image { context in + // clear background + UIColor.clear.setFill() + context.fill(CGRect(origin: .zero, size: size)) + + // draw elephantThreeOnGrassWithTreeTwoImage + // elephantThreeOnGrassWithTreeTwo.bottomY - 25 align to elephantThreeOnGrassImage.centerY + elephantThreeOnGrassWithTreeTwoImage.draw(at: CGPoint(x: width - elephantThreeOnGrassWithTreeTwoImage.size.width, y: height - 0.5 * elephantThreeOnGrassImage.size.height - elephantThreeOnGrassWithTreeTwoImage.size.height - 20)) + } + + leftHillImageView.image = UIGraphicsImageRenderer(size: size).image { context in + // clear background + UIColor.clear.setFill() + context.fill(CGRect(origin: .zero, size: size)) + + // draw elephantThreeOnGrassWithTreeThree + // elephantThreeOnGrassWithTreeThree.bottomY + 30 align to elephantThreeOnGrassImage.centerY + elephantThreeOnGrassWithTreeThreeImage.draw(at: CGPoint(x: -160, y: height - 0.5 * elephantThreeOnGrassImage.size.height - elephantThreeOnGrassWithTreeThreeImage.size.height - 80)) + } + + centerHillImageView.image = UIGraphicsImageRenderer(size: size).image { context in + // clear background + UIColor.clear.setFill() + context.fill(CGRect(origin: .zero, size: size)) + + // draw elephantThreeOnGrass + elephantThreeOnGrassExtendImage.draw(at: CGPoint(x: 0, y: height - elephantThreeOnGrassExtendImage.size.height)) + } + } + } + } #if canImport(SwiftUI) && DEBUG @@ -140,13 +217,17 @@ struct WelcomeIllustrationView_Previews: PreviewProvider { static var previews: some View { Group { UIViewPreview(width: 375) { - WelcomeIllustrationView() + let view = WelcomeIllustrationView() + view.layout = .compact + return view } .previewLayout(.fixed(width: 375, height: 1500)) - UIViewPreview(width: 1125) { - WelcomeIllustrationView() + UIViewPreview(width: 547) { + let view = WelcomeIllustrationView() + view.layout = .regular + return view } - .previewLayout(.fixed(width: 1125, height: 5000)) + .previewLayout(.fixed(width: 547, height: 1500)) } } diff --git a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift index bf33ea13d..d450764e5 100644 --- a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift +++ b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift @@ -11,6 +11,8 @@ import Combine final class WelcomeViewController: UIViewController, NeedsDependency { + let logger = Logger(subsystem: "WelcomeViewController", category: "ViewController") + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -41,30 +43,36 @@ final class WelcomeViewController: UIViewController, NeedsDependency { return label }() + let buttonContainer = UIStackView() + private(set) lazy var signUpButton: PrimaryActionButton = { let button = PrimaryActionButton() button.adjustsBackgroundImageWhenUserInterfaceStyleChanges = false - button.setTitle(L10n.Common.Controls.Actions.signUp, for: .normal) + button.setTitle("Get Started", for: .normal) // TODO: i18n let backgroundImageColor: UIColor = .white let backgroundImageHighlightedColor: UIColor = UIColor(white: 0.8, alpha: 1.0) button.setBackgroundImage(.placeholder(color: backgroundImageColor), for: .normal) button.setBackgroundImage(.placeholder(color: backgroundImageHighlightedColor), for: .highlighted) - let titleColor: UIColor = Asset.Colors.brandBlue.color - button.setTitleColor(titleColor, for: .normal) - button.translatesAutoresizingMaskIntoConstraints = false + button.setTitleColor(.black, for: .normal) return button }() private(set) lazy var signInButton: UIButton = { - let button = UIButton(type: .system) + let button = PrimaryActionButton() + button.adjustsBackgroundImageWhenUserInterfaceStyleChanges = false button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)) - button.setTitle(L10n.Common.Controls.Actions.signIn, for: .normal) + button.setTitle("Log In", for: .normal) + let backgroundImageColor = Asset.Scene.Welcome.signInButtonBackground.color + let backgroundImageHighlightedColor = Asset.Scene.Welcome.signInButtonBackground.color.withAlphaComponent(0.8) + button.setBackgroundImage(.placeholder(color: backgroundImageColor), for: .normal) + button.setBackgroundImage(.placeholder(color: backgroundImageHighlightedColor), for: .highlighted) let titleColor: UIColor = UIColor.white.withAlphaComponent(0.8) button.setTitleColor(titleColor, for: .normal) - button.translatesAutoresizingMaskIntoConstraints = false return button }() + private(set) lazy var gradientBorderView = GradientBorderView(frame: view.bounds) + deinit { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) } @@ -76,7 +84,8 @@ extension WelcomeViewController { override func viewDidLoad() { super.viewDidLoad() - // preferredContentSize = CGSize(width: 547, height: 678) + definesPresentationContext = true + preferredContentSize = CGSize(width: 547, height: 678) navigationController?.navigationBar.prefersLargeTitles = true navigationItem.largeTitleDisplayMode = .never @@ -84,19 +93,37 @@ extension WelcomeViewController { setupOnboardingAppearance() setupIllustrationLayout() - - view.addSubview(signInButton) - view.addSubview(signUpButton) + + buttonContainer.axis = .vertical + buttonContainer.spacing = 12 + buttonContainer.isLayoutMarginsRelativeArrangement = true + + buttonContainer.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(buttonContainer) NSLayoutConstraint.activate([ - signInButton.leadingAnchor.constraint(equalTo: view.readableContentGuide.leadingAnchor, constant: WelcomeViewController.actionButtonMargin), - view.readableContentGuide.trailingAnchor.constraint(equalTo: signInButton.trailingAnchor, constant: WelcomeViewController.actionButtonMargin), - view.layoutMarginsGuide.bottomAnchor.constraint(equalTo: signInButton.bottomAnchor, constant: WelcomeViewController.viewBottomPaddingHeight), - signInButton.heightAnchor.constraint(equalToConstant: WelcomeViewController.actionButtonHeight).priority(.defaultHigh), - - signInButton.topAnchor.constraint(equalTo: signUpButton.bottomAnchor, constant: 9), - signUpButton.leadingAnchor.constraint(equalTo: view.readableContentGuide.leadingAnchor, constant: WelcomeViewController.actionButtonMargin), - view.readableContentGuide.trailingAnchor.constraint(equalTo: signUpButton.trailingAnchor, constant: WelcomeViewController.actionButtonMargin), - signUpButton.heightAnchor.constraint(equalToConstant: WelcomeViewController.actionButtonHeight).priority(.defaultHigh), + buttonContainer.leadingAnchor.constraint(equalTo: view.readableContentGuide.leadingAnchor), + buttonContainer.trailingAnchor.constraint(equalTo: view.readableContentGuide.trailingAnchor), + view.layoutMarginsGuide.bottomAnchor.constraint(equalTo: buttonContainer.bottomAnchor), + ]) + + signUpButton.translatesAutoresizingMaskIntoConstraints = false + buttonContainer.addArrangedSubview(signUpButton) + NSLayoutConstraint.activate([ + signUpButton.heightAnchor.constraint(equalToConstant: WelcomeViewController.actionButtonHeight).priority(.required - 1), + ]) + signInButton.translatesAutoresizingMaskIntoConstraints = false + buttonContainer.addArrangedSubview(signInButton) + NSLayoutConstraint.activate([ + signInButton.heightAnchor.constraint(equalToConstant: WelcomeViewController.actionButtonHeight).priority(.required - 1), + ]) + + gradientBorderView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(gradientBorderView) + NSLayoutConstraint.activate([ + gradientBorderView.topAnchor.constraint(equalTo: view.topAnchor), + gradientBorderView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + gradientBorderView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + gradientBorderView.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) signUpButton.addTarget(self, action: #selector(signUpButtonDidClicked(_:)), for: .touchUpInside) @@ -109,17 +136,6 @@ extension WelcomeViewController { self.navigationItem.leftBarButtonItem = needsShowDismissEntry ? self.dismissBarButtonItem : nil } .store(in: &disposeBag) - - view.observe(\.frame, options: [.initial, .new]) { [weak self] view, _ in - guard let self = self else { return } - switch view.traitCollection.userInterfaceIdiom { - case .phone: - break - default: - self.welcomeIllustrationView.elephantOnAirplaneWithContrailImageView.isHidden = view.frame.height < 800 - } - } - .store(in: &observations) } override func viewSafeAreaInsetsDidChange() { @@ -130,18 +146,49 @@ extension WelcomeViewController { if view.safeAreaInsets.bottom == 0 { overlap += 56 } - // shift illustration down for iPad modal - if UIDevice.current.userInterfaceIdiom != .phone { - overlap += 20 - } welcomeIllustrationViewBottomAnchorLayoutConstraint?.constant = overlap } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + setupIllustrationLayout() + } } extension WelcomeViewController { + private func updateButtonContainerLayoutMargins(traitCollection: UITraitCollection) { + switch traitCollection.userInterfaceIdiom { + case .phone: + buttonContainer.layoutMargins = UIEdgeInsets( + top: 0, + left: WelcomeViewController.actionButtonMargin, + bottom: WelcomeViewController.viewBottomPaddingHeight, + right: WelcomeViewController.actionButtonMargin + ) + default: + let margin = traitCollection.horizontalSizeClass == .regular ? WelcomeViewController.actionButtonMarginExtend : WelcomeViewController.actionButtonMargin + buttonContainer.layoutMargins = UIEdgeInsets( + top: 0, + left: margin, + bottom: WelcomeViewController.viewBottomPaddingHeightExtend, + right: margin + ) + } + } + private func setupIllustrationLayout() { + welcomeIllustrationView.layout = { + switch traitCollection.userInterfaceIdiom { + case .phone: + return .compact + default: + return .regular + } + }() + // set logo if logoImageView.superview == nil { view.addSubview(logoImageView) @@ -154,10 +201,11 @@ extension WelcomeViewController { logoImageView.setContentHuggingPriority(.defaultHigh, for: .vertical) } - // set illustration for phone + // set illustration guard welcomeIllustrationView.superview == nil else { return } + welcomeIllustrationView.contentMode = .scaleAspectFit welcomeIllustrationView.translatesAutoresizingMaskIntoConstraints = false welcomeIllustrationViewBottomAnchorLayoutConstraint = welcomeIllustrationView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 5) @@ -166,7 +214,7 @@ extension WelcomeViewController { NSLayoutConstraint.activate([ view.leftAnchor.constraint(equalTo: welcomeIllustrationView.leftAnchor, constant: 15), welcomeIllustrationView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: 15), - welcomeIllustrationViewBottomAnchorLayoutConstraint! + welcomeIllustrationViewBottomAnchorLayoutConstraint!.priority(.required - 1), ]) welcomeIllustrationView.cloudBaseImageView.addMotionEffect( @@ -268,21 +316,34 @@ extension WelcomeViewController: OnboardingViewControllerAppearance { // MARK: - UIAdaptivePresentationControllerDelegate extension WelcomeViewController: UIAdaptivePresentationControllerDelegate { + func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + + updateButtonContainerLayoutMargins(traitCollection: traitCollection) + switch traitCollection.userInterfaceIdiom { case .phone: // make underneath view controller alive to fix layout issue due to view life cycle return .fullScreen default: - return .formSheet -// switch traitCollection.horizontalSizeClass { -// case .regular: -// default: -// return .fullScreen -// } + switch traitCollection.horizontalSizeClass { + case .compact: + return .fullScreen + case .regular: + return .formSheet + case .unspecified: + return .formSheet + @unknown default: + return .formSheet + } } } + func presentationController(_ controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -> UIViewController? { + return nil + } + func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool { return false } diff --git a/Mastodon/Scene/Wizard/WizardViewController.swift b/Mastodon/Scene/Wizard/WizardViewController.swift index 2678c712d..9152e64f1 100644 --- a/Mastodon/Scene/Wizard/WizardViewController.swift +++ b/Mastodon/Scene/Wizard/WizardViewController.swift @@ -35,7 +35,7 @@ class WizardViewController: UIViewController { let backgroundView: UIView = { let view = UIView() - view.backgroundColor = UIColor.black.withAlphaComponent(0.7) + view.backgroundColor = UIColor.black.withAlphaComponent(0.5) return view }() From cff048c2a3271d8eaf9c5dcd0348c02ab8d0f82b Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 31 Dec 2021 17:31:13 +0800 Subject: [PATCH 035/374] feat: add shadow and fix modal transition issue --- Mastodon.xcodeproj/project.pbxproj | 4 ++ Mastodon/Coordinator/SceneCoordinator.swift | 22 +++----- .../OnboardingNavigationController.swift | 50 +++++++++++++++++ .../View/WelcomeIllustrationView.swift | 2 +- .../Welcome/WelcomeViewController.swift | 54 +++++++++++++------ ...veStatusBarStyleNavigationController.swift | 2 +- 6 files changed, 103 insertions(+), 31 deletions(-) create mode 100644 Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index bb7a8a4f5..8f0bfafaa 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -192,6 +192,7 @@ DB03F7F52689B782007B274C /* ComposeTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB03F7F42689B782007B274C /* ComposeTableView.swift */; }; DB040ED126538E3D00BEE9D8 /* Trie.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB040ED026538E3C00BEE9D8 /* Trie.swift */; }; DB0617EB277EF3820030EE79 /* GradientBorderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617EA277EF3820030EE79 /* GradientBorderView.swift */; }; + DB0617ED277F02C50030EE79 /* OnboardingNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617EC277F02C50030EE79 /* OnboardingNavigationController.swift */; }; DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; }; DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; }; DB0C946526A6FD4D0088FB11 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB0C946426A6FD4D0088FB11 /* AlamofireImage */; }; @@ -971,6 +972,7 @@ DB03F7F42689B782007B274C /* ComposeTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeTableView.swift; sourceTree = ""; }; DB040ED026538E3C00BEE9D8 /* Trie.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Trie.swift; sourceTree = ""; }; DB0617EA277EF3820030EE79 /* GradientBorderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientBorderView.swift; sourceTree = ""; }; + DB0617EC277F02C50030EE79 /* OnboardingNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingNavigationController.swift; sourceTree = ""; }; DB084B5625CBC56C00F898ED /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = ""; }; DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Instance.swift"; sourceTree = ""; }; DB0C946A26A700AB0088FB11 /* MastodonUser+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonUser+Property.swift"; sourceTree = ""; }; @@ -2521,6 +2523,7 @@ 2D82B9FE25E7863200E36F0F /* OnboardingViewControllerAppearance.swift */, DB2F073325E8ECF000957B2D /* AuthenticationViewModel.swift */, DB029E94266A20430062874E /* MastodonAuthenticationController.swift */, + DB0617EC277F02C50030EE79 /* OnboardingNavigationController.swift */, ); path = Share; sourceTree = ""; @@ -3971,6 +3974,7 @@ DBF156DF2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift in Sources */, DB789A0B25F9F2950071ACA0 /* ComposeViewController.swift in Sources */, DB938F0926240F3C00E5B6C1 /* RemoteThreadViewModel.swift in Sources */, + DB0617ED277F02C50030EE79 /* OnboardingNavigationController.swift in Sources */, DBBC24AE26A53DC100398BB9 /* ReplicaStatusView.swift in Sources */, DB75BF1E263C1C1B00EDBF1F /* CustomScheduler.swift in Sources */, 0FAA102725E1126A0017CCDE /* MastodonPickServerViewController.swift in Sources */, diff --git a/Mastodon/Coordinator/SceneCoordinator.swift b/Mastodon/Coordinator/SceneCoordinator.swift index d3591ab4f..49504fd1a 100644 --- a/Mastodon/Coordinator/SceneCoordinator.swift +++ b/Mastodon/Coordinator/SceneCoordinator.swift @@ -304,20 +304,14 @@ extension SceneCoordinator { presentingViewController.showDetailViewController(navigationController, sender: sender) case .modal(let animated, let completion): -// let modalNavigationController: UINavigationController = { -// if scene.isOnboarding { -// return AdaptiveStatusBarStyleNavigationController(rootViewController: viewController) -// } else { -// return UINavigationController(rootViewController: viewController) -// } -// }() -// modalNavigationController.modalPresentationCapturesStatusBarAppearance = true -// if let adaptivePresentationControllerDelegate = viewController as? UIAdaptivePresentationControllerDelegate { -// modalNavigationController.presentationController?.delegate = adaptivePresentationControllerDelegate -// } -// presentingViewController.present(modalNavigationController, animated: animated, completion: completion) - - let modalNavigationController = UINavigationController(rootViewController: viewController) + let modalNavigationController: UINavigationController = { + if scene.isOnboarding { + return OnboardingNavigationController(rootViewController: viewController) + } else { + return UINavigationController(rootViewController: viewController) + } + }() + modalNavigationController.modalPresentationCapturesStatusBarAppearance = true if let adaptivePresentationControllerDelegate = viewController as? UIAdaptivePresentationControllerDelegate { modalNavigationController.presentationController?.delegate = adaptivePresentationControllerDelegate } diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift b/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift new file mode 100644 index 000000000..07e58b58a --- /dev/null +++ b/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift @@ -0,0 +1,50 @@ +// +// OnboardingNavigationController.swift +// Mastodon +// +// Created by MainasuK on 2021-12-31. +// + +import UIKit + +final class OnboardingNavigationController: AdaptiveStatusBarStyleNavigationController { + + private(set) lazy var gradientBorderView = GradientBorderView(frame: view.bounds) + +} + +extension OnboardingNavigationController { + + override func viewDidLoad() { + super.viewDidLoad() + + gradientBorderView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(gradientBorderView) + NSLayoutConstraint.activate([ + gradientBorderView.topAnchor.constraint(equalTo: view.topAnchor), + gradientBorderView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + gradientBorderView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + gradientBorderView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + updateBorderViewDisplay() + } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + } + +} + +extension OnboardingNavigationController { + + private func updateBorderViewDisplay() { + switch traitCollection.userInterfaceIdiom { + case .phone: + gradientBorderView.isHidden = true + default: + gradientBorderView.isHidden = false + } + } +} diff --git a/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift b/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift index cb7ac7680..23fa15052 100644 --- a/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift +++ b/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift @@ -55,7 +55,7 @@ extension WelcomeIllustrationView { var artworkImageSize: CGSize { switch self { case .compact: return CGSize(width: 375, height: 1500) - case .regular: return CGSize(width: 547, height: 1500) + case .regular: return CGSize(width: 547, height: 3000) } } } diff --git a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift index d450764e5..c86b059bb 100644 --- a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift +++ b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift @@ -57,7 +57,7 @@ final class WelcomeViewController: UIViewController, NeedsDependency { return button }() - private(set) lazy var signInButton: UIButton = { + private(set) lazy var signInButton: PrimaryActionButton = { let button = PrimaryActionButton() button.adjustsBackgroundImageWhenUserInterfaceStyleChanges = false button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)) @@ -66,12 +66,12 @@ final class WelcomeViewController: UIViewController, NeedsDependency { let backgroundImageHighlightedColor = Asset.Scene.Welcome.signInButtonBackground.color.withAlphaComponent(0.8) button.setBackgroundImage(.placeholder(color: backgroundImageColor), for: .normal) button.setBackgroundImage(.placeholder(color: backgroundImageHighlightedColor), for: .highlighted) - let titleColor: UIColor = UIColor.white.withAlphaComponent(0.8) + let titleColor: UIColor = UIColor.white.withAlphaComponent(0.9) button.setTitleColor(titleColor, for: .normal) return button }() + let signInButtonShadowView = UIView() - private(set) lazy var gradientBorderView = GradientBorderView(frame: view.bounds) deinit { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) @@ -117,13 +117,14 @@ extension WelcomeViewController { signInButton.heightAnchor.constraint(equalToConstant: WelcomeViewController.actionButtonHeight).priority(.required - 1), ]) - gradientBorderView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(gradientBorderView) + signInButtonShadowView.translatesAutoresizingMaskIntoConstraints = false + buttonContainer.addSubview(signInButtonShadowView) + buttonContainer.sendSubviewToBack(signInButtonShadowView) NSLayoutConstraint.activate([ - gradientBorderView.topAnchor.constraint(equalTo: view.topAnchor), - gradientBorderView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - gradientBorderView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - gradientBorderView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + signInButtonShadowView.topAnchor.constraint(equalTo: signInButton.topAnchor), + signInButtonShadowView.leadingAnchor.constraint(equalTo: signInButton.leadingAnchor), + signInButtonShadowView.trailingAnchor.constraint(equalTo: signInButton.trailingAnchor), + signInButtonShadowView.bottomAnchor.constraint(equalTo: signInButton.bottomAnchor), ]) signUpButton.addTarget(self, action: #selector(signUpButtonDidClicked(_:)), for: .touchUpInside) @@ -138,6 +139,12 @@ extension WelcomeViewController { .store(in: &disposeBag) } + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + + setupButtonShadowView() + } + override func viewSafeAreaInsetsDidChange() { super.viewSafeAreaInsetsDidChange() @@ -153,12 +160,27 @@ extension WelcomeViewController { super.traitCollectionDidChange(previousTraitCollection) setupIllustrationLayout() + setupButtonShadowView() } } extension WelcomeViewController { + private func setupButtonShadowView() { + signInButtonShadowView.layer.setupShadow( + color: .black, + alpha: 0.25, + x: 0, + y: 1, + blur: 2, + spread: 0, + roundedRect: signInButtonShadowView.bounds, + byRoundingCorners: .allCorners, + cornerRadii: CGSize(width: 10, height: 10) + ) + } + private func updateButtonContainerLayoutMargins(traitCollection: UITraitCollection) { switch traitCollection.userInterfaceIdiom { case .phone: @@ -320,21 +342,23 @@ extension WelcomeViewController: UIAdaptivePresentationControllerDelegate { func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + // update button layout updateButtonContainerLayoutMargins(traitCollection: traitCollection) - + + let navigationController = navigationController as? OnboardingNavigationController + switch traitCollection.userInterfaceIdiom { case .phone: + navigationController?.gradientBorderView.isHidden = true // make underneath view controller alive to fix layout issue due to view life cycle return .fullScreen default: switch traitCollection.horizontalSizeClass { case .compact: + navigationController?.gradientBorderView.isHidden = true return .fullScreen - case .regular: - return .formSheet - case .unspecified: - return .formSheet - @unknown default: + default: + navigationController?.gradientBorderView.isHidden = false return .formSheet } } diff --git a/Mastodon/Scene/Share/NavigationController/AdaptiveStatusBarStyleNavigationController.swift b/Mastodon/Scene/Share/NavigationController/AdaptiveStatusBarStyleNavigationController.swift index eb260853c..aac23285b 100644 --- a/Mastodon/Scene/Share/NavigationController/AdaptiveStatusBarStyleNavigationController.swift +++ b/Mastodon/Scene/Share/NavigationController/AdaptiveStatusBarStyleNavigationController.swift @@ -9,7 +9,7 @@ import UIKit // Make status bar style adaptive for child view controller // SeeAlso: `modalPresentationCapturesStatusBarAppearance` -final class AdaptiveStatusBarStyleNavigationController: UINavigationController { +class AdaptiveStatusBarStyleNavigationController: UINavigationController { override var childForStatusBarStyle: UIViewController? { visibleViewController } From 17712b5698decff288bab5dbfd5a53d5c8a6c8ce Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:32 +0100 Subject: [PATCH 036/374] New translations app.json (Swedish, Finland) --- Localization/StringsConvertor/input/sv_FI/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index b55fac525..0a5afe66a 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -82,6 +82,7 @@ "share_user": "Jaa %s", "share_post": "Jaa julkaisu", "open_in_safari": "Avaa Safarissa", + "open_in_browser": "Open in Browser", "find_people": "Löydä tilejä seurattavaksi", "manually_search": "Manually search instead", "skip": "Ohita", From ad96146922336b2a036e3f45d1e1e3ab081f5c09 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:33 +0100 Subject: [PATCH 037/374] New translations app.json (Swedish) --- Localization/StringsConvertor/input/sv_SE/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/sv_SE/app.json b/Localization/StringsConvertor/input/sv_SE/app.json index 7acf48755..0d52c9f0d 100644 --- a/Localization/StringsConvertor/input/sv_SE/app.json +++ b/Localization/StringsConvertor/input/sv_SE/app.json @@ -82,6 +82,7 @@ "share_user": "Dela %s", "share_post": "Share Post", "open_in_safari": "Öppna i Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From 09fbb7ba600833658a449651c125a1890ce9eb41 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:34 +0100 Subject: [PATCH 038/374] New translations app.json (Scottish Gaelic) --- Localization/StringsConvertor/input/gd_GB/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json index b5c66f8f6..dd7f7551c 100644 --- a/Localization/StringsConvertor/input/gd_GB/app.json +++ b/Localization/StringsConvertor/input/gd_GB/app.json @@ -82,6 +82,7 @@ "share_user": "Co-roinn %s", "share_post": "Co-roinn am post", "open_in_safari": "Fosgail ann an Safari", + "open_in_browser": "Open in Browser", "find_people": "Lorg daoine a leanas tu", "manually_search": "Lorg a làimh ’na àite", "skip": "Leum thairis air", From 3c05901806460eeeef2fa6ccbca4bfa0bd332eb2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:35 +0100 Subject: [PATCH 039/374] New translations app.json (Welsh) --- Localization/StringsConvertor/input/cy_GB/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/cy_GB/app.json b/Localization/StringsConvertor/input/cy_GB/app.json index 5c01ae7e0..6d3b2fcc2 100644 --- a/Localization/StringsConvertor/input/cy_GB/app.json +++ b/Localization/StringsConvertor/input/cy_GB/app.json @@ -82,6 +82,7 @@ "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From da68a942ed31b9b980153bfeae62c324053f5964 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:36 +0100 Subject: [PATCH 040/374] New translations app.json (Hindi) --- Localization/StringsConvertor/input/hi_IN/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/hi_IN/app.json b/Localization/StringsConvertor/input/hi_IN/app.json index 5c01ae7e0..6d3b2fcc2 100644 --- a/Localization/StringsConvertor/input/hi_IN/app.json +++ b/Localization/StringsConvertor/input/hi_IN/app.json @@ -82,6 +82,7 @@ "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From e36a17fb871657a578de684cb66c121896b32248 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:37 +0100 Subject: [PATCH 041/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 7852b5d01..e2c3d2e3b 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -82,6 +82,7 @@ "share_user": "แบ่งปัน %s", "share_post": "แบ่งปันโพสต์", "open_in_safari": "เปิดใน Safari", + "open_in_browser": "Open in Browser", "find_people": "ค้นหาผู้คนที่จะติดตาม", "manually_search": "ค้นหาด้วยตนเองแทน", "skip": "ข้าม", From 2b2272b8c0ce33bbdded3ad1c669cd28b733f16e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:38 +0100 Subject: [PATCH 042/374] New translations app.json (Spanish, Argentina) --- Localization/StringsConvertor/input/es_AR/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json index ed909ecf1..9a0c1043c 100644 --- a/Localization/StringsConvertor/input/es_AR/app.json +++ b/Localization/StringsConvertor/input/es_AR/app.json @@ -82,6 +82,7 @@ "share_user": "Compartir %s", "share_post": "Compartir mensaje", "open_in_safari": "Abrir en Safari", + "open_in_browser": "Open in Browser", "find_people": "Encontrá cuentas para seguir", "manually_search": "Buscar manualmente", "skip": "Omitir", From 6d09b5be4e7f1d24a8b3185bd8accfe7ef2ebec6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:39 +0100 Subject: [PATCH 043/374] New translations app.json (Indonesian) --- Localization/StringsConvertor/input/id_ID/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/id_ID/app.json b/Localization/StringsConvertor/input/id_ID/app.json index 6f3171254..4fe23f0a5 100644 --- a/Localization/StringsConvertor/input/id_ID/app.json +++ b/Localization/StringsConvertor/input/id_ID/app.json @@ -82,6 +82,7 @@ "share_user": "Bagikan %s", "share_post": "Bagikan Postingan", "open_in_safari": "Buka di Safari", + "open_in_browser": "Open in Browser", "find_people": "Cari orang untuk diikuti", "manually_search": "Manually search instead", "skip": "Lewati", From 2b714768d4772604e176f4dcf2d071cc558b059d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:40 +0100 Subject: [PATCH 044/374] New translations app.json (Portuguese, Brazilian) --- Localization/StringsConvertor/input/pt_BR/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/pt_BR/app.json b/Localization/StringsConvertor/input/pt_BR/app.json index 5c01ae7e0..6d3b2fcc2 100644 --- a/Localization/StringsConvertor/input/pt_BR/app.json +++ b/Localization/StringsConvertor/input/pt_BR/app.json @@ -82,6 +82,7 @@ "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From b108fa43899769fe39747e4e5f7c1ae3b1d75c88 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:41 +0100 Subject: [PATCH 045/374] New translations app.json (English) --- Localization/StringsConvertor/input/en_US/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/en_US/app.json b/Localization/StringsConvertor/input/en_US/app.json index 5c01ae7e0..6d3b2fcc2 100644 --- a/Localization/StringsConvertor/input/en_US/app.json +++ b/Localization/StringsConvertor/input/en_US/app.json @@ -82,6 +82,7 @@ "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From a3d263a29a51f9ab8605f47533764ce10f54d490 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:42 +0100 Subject: [PATCH 046/374] New translations app.json (Chinese Traditional) --- Localization/StringsConvertor/input/zh_TW/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/zh_TW/app.json b/Localization/StringsConvertor/input/zh_TW/app.json index 5c01ae7e0..6d3b2fcc2 100644 --- a/Localization/StringsConvertor/input/zh_TW/app.json +++ b/Localization/StringsConvertor/input/zh_TW/app.json @@ -82,6 +82,7 @@ "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From 68b02146c2a0395233367eb606a49b0d54591bb6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:43 +0100 Subject: [PATCH 047/374] New translations app.json (Chinese Simplified) --- Localization/StringsConvertor/input/zh_CN/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json index 905afdd86..d013f5e0d 100644 --- a/Localization/StringsConvertor/input/zh_CN/app.json +++ b/Localization/StringsConvertor/input/zh_CN/app.json @@ -82,6 +82,7 @@ "share_user": "分享 %s", "share_post": "分享帖子", "open_in_safari": "在 Safari 中打开", + "open_in_browser": "Open in Browser", "find_people": "查看推荐关注的用户", "manually_search": "手动搜索用户", "skip": "跳过", From 8199e6cb17a94a201a94f58d6123305af56c84c2 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:44 +0100 Subject: [PATCH 048/374] New translations app.json (Russian) --- Localization/StringsConvertor/input/ru_RU/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json index c1ad3ee49..e39fae37f 100644 --- a/Localization/StringsConvertor/input/ru_RU/app.json +++ b/Localization/StringsConvertor/input/ru_RU/app.json @@ -82,6 +82,7 @@ "share_user": "Поделиться %s", "share_post": "Поделиться постом", "open_in_safari": "Открыть в Safari", + "open_in_browser": "Open in Browser", "find_people": "Подпишитесь на людей", "manually_search": "Найти вручную", "skip": "Пропустить", From 51d29d5066128aa879559bc9093c133bbc86d3c3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:45 +0100 Subject: [PATCH 049/374] New translations app.json (Romanian) --- Localization/StringsConvertor/input/ro_RO/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/ro_RO/app.json b/Localization/StringsConvertor/input/ro_RO/app.json index 3927247ee..ae27e6e6a 100644 --- a/Localization/StringsConvertor/input/ro_RO/app.json +++ b/Localization/StringsConvertor/input/ro_RO/app.json @@ -82,6 +82,7 @@ "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From 65ea9aa8942d532a9428e26583aac91fd776d888 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:46 +0100 Subject: [PATCH 050/374] New translations app.json (Portuguese) --- Localization/StringsConvertor/input/pt_PT/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/pt_PT/app.json b/Localization/StringsConvertor/input/pt_PT/app.json index 5c01ae7e0..6d3b2fcc2 100644 --- a/Localization/StringsConvertor/input/pt_PT/app.json +++ b/Localization/StringsConvertor/input/pt_PT/app.json @@ -82,6 +82,7 @@ "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From 37ba14d0acd2dc3a43c18779ef07be77aae2196e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:47 +0100 Subject: [PATCH 051/374] New translations app.json (Dutch) --- Localization/StringsConvertor/input/nl_NL/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/nl_NL/app.json b/Localization/StringsConvertor/input/nl_NL/app.json index d8ee1e574..9f928cbbb 100644 --- a/Localization/StringsConvertor/input/nl_NL/app.json +++ b/Localization/StringsConvertor/input/nl_NL/app.json @@ -82,6 +82,7 @@ "share_user": "Delen %s", "share_post": "Bericht Delen", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Zoek mensen om te volgen", "manually_search": "Handmatig zoeken", "skip": "Overslaan", From c1573f069ea06957670a03539a1b2867def05c2f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:48 +0100 Subject: [PATCH 052/374] New translations app.json (Korean) --- Localization/StringsConvertor/input/ko_KR/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/ko_KR/app.json b/Localization/StringsConvertor/input/ko_KR/app.json index 571b14659..638ea3879 100644 --- a/Localization/StringsConvertor/input/ko_KR/app.json +++ b/Localization/StringsConvertor/input/ko_KR/app.json @@ -82,6 +82,7 @@ "share_user": "%s를 공유", "share_post": "게시물 공유", "open_in_safari": "사파리에서 열기", + "open_in_browser": "Open in Browser", "find_people": "팔로우 할 사람들 찾기", "manually_search": "대신 수동으로 검색하기", "skip": "건너뛰기", From d59a94851afd7028837b4eb47895937ffae10a14 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:49 +0100 Subject: [PATCH 053/374] New translations app.json (Japanese) --- Localization/StringsConvertor/input/ja_JP/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index 417ca3e3a..942cec428 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -82,6 +82,7 @@ "share_user": "%sを共有", "share_post": "投稿を共有", "open_in_safari": "Safariで開く", + "open_in_browser": "Open in Browser", "find_people": "フォローする人を見つける", "manually_search": "手動で検索する", "skip": "スキップ", From baf2d5180e6126fe2963d3a588189ffdedbe7e0f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:50 +0100 Subject: [PATCH 054/374] New translations app.json (Basque) --- Localization/StringsConvertor/input/eu_ES/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 5c01ae7e0..6d3b2fcc2 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -82,6 +82,7 @@ "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From 7948df0ba62c2b1db17f9b52eb2f70bda69e3a8b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:50 +0100 Subject: [PATCH 055/374] New translations app.json (German) --- Localization/StringsConvertor/input/de_DE/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json index dc8cdf8c0..2cb04e8d9 100644 --- a/Localization/StringsConvertor/input/de_DE/app.json +++ b/Localization/StringsConvertor/input/de_DE/app.json @@ -82,6 +82,7 @@ "share_user": "%s teilen", "share_post": "Beitrag teilen", "open_in_safari": "In Safari öffnen", + "open_in_browser": "Open in Browser", "find_people": "Finde Personen zum Folgen", "manually_search": "Stattdessen manuell suchen", "skip": "Überspringen", From b174fa7cf607907a6bb5aedd51aad2a23db38bcb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:51 +0100 Subject: [PATCH 056/374] New translations app.json (Danish) --- Localization/StringsConvertor/input/da_DK/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/da_DK/app.json b/Localization/StringsConvertor/input/da_DK/app.json index 5c01ae7e0..6d3b2fcc2 100644 --- a/Localization/StringsConvertor/input/da_DK/app.json +++ b/Localization/StringsConvertor/input/da_DK/app.json @@ -82,6 +82,7 @@ "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", "skip": "Skip", From 627e4a773d7c704d4e5e1881eff10afc5fbb7d01 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:52 +0100 Subject: [PATCH 057/374] New translations app.json (Catalan) --- Localization/StringsConvertor/input/ca_ES/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json index 2ecd587c6..1f3d58ebc 100644 --- a/Localization/StringsConvertor/input/ca_ES/app.json +++ b/Localization/StringsConvertor/input/ca_ES/app.json @@ -82,6 +82,7 @@ "share_user": "Compartir %s", "share_post": "Compartir Publicació", "open_in_safari": "Obrir a Safari", + "open_in_browser": "Open in Browser", "find_people": "Busca persones per seguir", "manually_search": "Cerca manualment a canvi", "skip": "Omet", From 9fbee6584addd19ae4d08a4102a46e8313cadf5a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:53 +0100 Subject: [PATCH 058/374] New translations app.json (Arabic) --- Localization/StringsConvertor/input/ar_SA/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index a49a3bb4c..e38de6410 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -82,6 +82,7 @@ "share_user": "مُشاركة %s", "share_post": "مشارك المنشور", "open_in_safari": "الفتح في Safari", + "open_in_browser": "Open in Browser", "find_people": "ابحث عن أشخاص لِمُتابعتهم", "manually_search": "البحث يدويًا بدلًا من ذلك", "skip": "تخطي", From 9a478f445f1370f9ea17e43aaa2d7ff91e360652 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:54 +0100 Subject: [PATCH 059/374] New translations app.json (Spanish) --- Localization/StringsConvertor/input/es_ES/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index 72967c40f..20f91221a 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -82,6 +82,7 @@ "share_user": "Compartir %s", "share_post": "Compartir publicación", "open_in_safari": "Abrir en Safari", + "open_in_browser": "Open in Browser", "find_people": "Encuentra gente a la que seguir", "manually_search": "Mejor hacer una búsqueda manual", "skip": "Omitir", From e970191c611568b14e397921f41bd23c599244c7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:55 +0100 Subject: [PATCH 060/374] New translations app.json (French) --- Localization/StringsConvertor/input/fr_FR/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index dd834928a..9a1671fab 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -82,6 +82,7 @@ "share_user": "Partager %s", "share_post": "Partager la publication", "open_in_safari": "Ouvrir dans Safari", + "open_in_browser": "Open in Browser", "find_people": "Trouver des personnes à suivre", "manually_search": "Rechercher manuellement à la place", "skip": "Passer", From 11287b3b1136c577ac1ac4a198366c806d823225 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 12:14:56 +0100 Subject: [PATCH 061/374] New translations app.json (Kurmanji (Kurdish)) --- Localization/StringsConvertor/input/kmr_TR/app.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index c360eb430..377b3382f 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -82,6 +82,7 @@ "share_user": "%s parve bike", "share_post": "Şandiyê parve bike", "open_in_safari": "Di Safariyê de veke", + "open_in_browser": "Open in Browser", "find_people": "Mirovan bo şopandinê bibîne", "manually_search": "Ji devlê bi destan lêgerînê bike", "skip": "Derbas bike", From e0d2f42626ff0291c49c44c76aff701d4fd9ecb6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 13:18:47 +0100 Subject: [PATCH 062/374] New translations app.json (Catalan) --- Localization/StringsConvertor/input/ca_ES/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json index 1f3d58ebc..bcc207569 100644 --- a/Localization/StringsConvertor/input/ca_ES/app.json +++ b/Localization/StringsConvertor/input/ca_ES/app.json @@ -82,7 +82,7 @@ "share_user": "Compartir %s", "share_post": "Compartir Publicació", "open_in_safari": "Obrir a Safari", - "open_in_browser": "Open in Browser", + "open_in_browser": "Obre al navegador", "find_people": "Busca persones per seguir", "manually_search": "Cerca manualment a canvi", "skip": "Omet", From 7c5dcb934bdfb48528cf1be7777d6fc14e8a21d4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 13:18:48 +0100 Subject: [PATCH 063/374] New translations app.json (Russian) --- Localization/StringsConvertor/input/ru_RU/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json index e39fae37f..58adf38fc 100644 --- a/Localization/StringsConvertor/input/ru_RU/app.json +++ b/Localization/StringsConvertor/input/ru_RU/app.json @@ -82,7 +82,7 @@ "share_user": "Поделиться %s", "share_post": "Поделиться постом", "open_in_safari": "Открыть в Safari", - "open_in_browser": "Open in Browser", + "open_in_browser": "Открыть в браузере", "find_people": "Подпишитесь на людей", "manually_search": "Найти вручную", "skip": "Пропустить", From ab65e6a2cbfb2ee1b373509e1d51f09e5e627524 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 14:22:17 +0100 Subject: [PATCH 064/374] New translations app.json (Spanish) --- Localization/StringsConvertor/input/es_ES/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index 20f91221a..289c3065b 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -82,7 +82,7 @@ "share_user": "Compartir %s", "share_post": "Compartir publicación", "open_in_safari": "Abrir en Safari", - "open_in_browser": "Open in Browser", + "open_in_browser": "Abrir en el navegador", "find_people": "Encuentra gente a la que seguir", "manually_search": "Mejor hacer una búsqueda manual", "skip": "Omitir", From 92b37f3ec8942df8dd97c5e5cead18ae1b81d1d8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 15:23:47 +0100 Subject: [PATCH 065/374] New translations app.json (Spanish, Argentina) --- Localization/StringsConvertor/input/es_AR/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json index 9a0c1043c..021deb95e 100644 --- a/Localization/StringsConvertor/input/es_AR/app.json +++ b/Localization/StringsConvertor/input/es_AR/app.json @@ -82,7 +82,7 @@ "share_user": "Compartir %s", "share_post": "Compartir mensaje", "open_in_safari": "Abrir en Safari", - "open_in_browser": "Open in Browser", + "open_in_browser": "Abrir en el navegador", "find_people": "Encontrá cuentas para seguir", "manually_search": "Buscar manualmente", "skip": "Omitir", From 98ca1f86b45a2e1fda541f0d949c3039bd71aef4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 31 Dec 2021 21:26:01 +0100 Subject: [PATCH 066/374] New translations app.json (Arabic) --- Localization/StringsConvertor/input/ar_SA/app.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index e38de6410..24ce19546 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -81,8 +81,8 @@ "share": "المُشارك", "share_user": "مُشاركة %s", "share_post": "مشارك المنشور", - "open_in_safari": "الفتح في Safari", - "open_in_browser": "Open in Browser", + "open_in_safari": "الفَتحُ في Safari", + "open_in_browser": "الفَتحُ في المُتَصَفِّح", "find_people": "ابحث عن أشخاص لِمُتابعتهم", "manually_search": "البحث يدويًا بدلًا من ذلك", "skip": "تخطي", @@ -104,7 +104,7 @@ "switch_to_tab": "التبديل إلى %s", "compose_new_post": "تأليف منشور جديد", "show_favorites": "إظهار المُفضَّلة", - "open_settings": "فتح الإعدادات" + "open_settings": "فَتحُ الإعدادات" }, "timeline": { "previous_status": "المنشور السابق", From 63238da22f055879b030e4c47918d5798ae3ca58 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 1 Jan 2022 18:02:41 +0100 Subject: [PATCH 067/374] New translations app.json (Kurmanji (Kurdish)) --- Localization/StringsConvertor/input/kmr_TR/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index 377b3382f..ee0869651 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -82,7 +82,7 @@ "share_user": "%s parve bike", "share_post": "Şandiyê parve bike", "open_in_safari": "Di Safariyê de veke", - "open_in_browser": "Open in Browser", + "open_in_browser": "Di gerokê de veke", "find_people": "Mirovan bo şopandinê bibîne", "manually_search": "Ji devlê bi destan lêgerînê bike", "skip": "Derbas bike", From 223049a3f538bff612df66cbfaa0418d9d0ef65b Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 4 Jan 2022 18:30:21 +0800 Subject: [PATCH 068/374] feat: update server pick scene UI --- Localization/app.json | 12 +- Mastodon.xcodeproj/project.pbxproj | 20 +- .../xcshareddata/swiftpm/Package.resolved | 9 + .../Deprecated/PickServerCategoriesCell.swift | 145 ++++++++ .../Deprecated/PickServerSearchCell.swift | 171 ++++++++++ .../Diffiable/Item/CategoryPickerItem.swift | 44 ++- Mastodon/Diffiable/Item/PickServerItem.swift | 10 - .../Onboarding/CategoryPickerSection.swift | 22 +- .../Onboarding/PickServerSection.swift | 123 +++---- Mastodon/Generated/Assets.swift | 9 + .../Label/primary.colorset/Contents.json | 12 +- .../primary.reverse.colorset/Contents.json | 38 +++ .../Label/secondary.colorset/Contents.json | 8 +- .../Scene/Onboarding/Contents.json | 9 + .../Contents.json | 38 +++ .../Contents.json | 38 +++ .../Contents.json | 38 +++ .../Contents.json | 38 +++ .../Contents.json | 38 +++ .../Contents.json | 38 +++ .../Contents.json | 6 +- .../Contents.json | 6 +- .../Contents.json | 6 +- ...PickServerCategoryCollectionViewCell.swift | 16 +- .../MastodonPickServerViewController.swift | 314 +++++++----------- ...MastodonPickServerViewModel+Diffable.swift | 83 ++++- .../MastodonPickServerViewModel.swift | 74 +---- .../PickServerCategoriesCell.swift | 145 -------- .../TableViewCell/PickServerCell.swift | 292 +++------------- .../PickServerLoaderTableViewCell.swift | 47 +-- .../TableViewCell/PickServerSearchCell.swift | 171 ---------- .../TableViewCell/PickServerTitleCell.swift | 47 +-- .../View/PickServerCategoryView.swift | 57 ++-- .../View/PickServerEmptyStateView.swift | 10 +- ...ckServerServerSectionTableHeaderView.swift | 204 ++++++++++++ .../Share/NavigationActionView.swift | 69 ++++ .../OnboardingNavigationController.swift | 3 +- .../OnboardingViewControllerAppearance.swift | 31 +- .../Welcome/View/GradientBorderView.swift | 6 +- .../View/Button/PrimaryActionButton.swift | 36 +- .../View/Container/TouchBlockingView.swift | 2 +- .../View/Content/TimelineHeaderView.swift | 8 +- 42 files changed, 1390 insertions(+), 1103 deletions(-) create mode 100644 Mastodon/Deprecated/PickServerCategoriesCell.swift create mode 100644 Mastodon/Deprecated/PickServerSearchCell.swift create mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Label/primary.reverse.colorset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json delete mode 100644 Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCategoriesCell.swift delete mode 100644 Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerSearchCell.swift create mode 100644 Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift create mode 100644 Mastodon/Scene/Onboarding/Share/NavigationActionView.swift diff --git a/Localization/app.json b/Localization/app.json index 3b39a7130..5e74bc696 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -198,7 +198,9 @@ "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -225,7 +227,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -234,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Delete" @@ -288,7 +290,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -298,7 +300,7 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", "dont_receive_email": "I never got an email" diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 8f0bfafaa..79bd67778 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -193,6 +193,8 @@ DB040ED126538E3D00BEE9D8 /* Trie.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB040ED026538E3C00BEE9D8 /* Trie.swift */; }; DB0617EB277EF3820030EE79 /* GradientBorderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617EA277EF3820030EE79 /* GradientBorderView.swift */; }; DB0617ED277F02C50030EE79 /* OnboardingNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617EC277F02C50030EE79 /* OnboardingNavigationController.swift */; }; + DB0617EF277F12720030EE79 /* NavigationActionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617EE277F12720030EE79 /* NavigationActionView.swift */; }; + DB0617F1278413D00030EE79 /* PickServerServerSectionTableHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617F0278413D00030EE79 /* PickServerServerSectionTableHeaderView.swift */; }; DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; }; DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; }; DB0C946526A6FD4D0088FB11 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB0C946426A6FD4D0088FB11 /* AlamofireImage */; }; @@ -973,6 +975,8 @@ DB040ED026538E3C00BEE9D8 /* Trie.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Trie.swift; sourceTree = ""; }; DB0617EA277EF3820030EE79 /* GradientBorderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientBorderView.swift; sourceTree = ""; }; DB0617EC277F02C50030EE79 /* OnboardingNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingNavigationController.swift; sourceTree = ""; }; + DB0617EE277F12720030EE79 /* NavigationActionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationActionView.swift; sourceTree = ""; }; + DB0617F0278413D00030EE79 /* PickServerServerSectionTableHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerServerSectionTableHeaderView.swift; sourceTree = ""; }; DB084B5625CBC56C00F898ED /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = ""; }; DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Instance.swift"; sourceTree = ""; }; DB0C946A26A700AB0088FB11 /* MastodonUser+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonUser+Property.swift"; sourceTree = ""; }; @@ -1595,8 +1599,6 @@ isa = PBXGroup; children = ( 0FB3D2FD25E4CB6400AAD544 /* PickServerTitleCell.swift */, - 0FB3D30725E524C600AAD544 /* PickServerCategoriesCell.swift */, - 0FB3D33125E5F50E00AAD544 /* PickServerSearchCell.swift */, 0FB3D33725E6401400AAD544 /* PickServerCell.swift */, DB0F814F264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift */, ); @@ -1608,6 +1610,7 @@ children = ( 0FB3D30E25E525CD00AAD544 /* PickServerCategoryView.swift */, DB9282B125F3222800823B15 /* PickServerEmptyStateView.swift */, + DB0617F0278413D00030EE79 /* PickServerServerSectionTableHeaderView.swift */, ); path = View; sourceTree = ""; @@ -2097,6 +2100,15 @@ path = TableViewCell; sourceTree = ""; }; + DB0617F3278436360030EE79 /* Deprecated */ = { + isa = PBXGroup; + children = ( + 0FB3D33125E5F50E00AAD544 /* PickServerSearchCell.swift */, + 0FB3D30725E524C600AAD544 /* PickServerCategoriesCell.swift */, + ); + path = Deprecated; + sourceTree = ""; + }; DB084B5125CBC56300F898ED /* CoreDataStack */ = { isa = PBXGroup; children = ( @@ -2228,6 +2240,7 @@ children = ( DB427DE325BAA00100D1B89D /* Info.plist */, DB89BA1025C10FF5008580ED /* Mastodon.entitlements */, + DB0617F3278436360030EE79 /* Deprecated */, 2D76319C25C151DE00929FB9 /* Diffiable */, DB8AF52A25C13561002E6C99 /* State */, 2D61335525C1886800CAE157 /* Service */, @@ -2524,6 +2537,7 @@ DB2F073325E8ECF000957B2D /* AuthenticationViewModel.swift */, DB029E94266A20430062874E /* MastodonAuthenticationController.swift */, DB0617EC277F02C50030EE79 /* OnboardingNavigationController.swift */, + DB0617EE277F12720030EE79 /* NavigationActionView.swift */, ); path = Share; sourceTree = ""; @@ -3972,6 +3986,7 @@ DBB5250E2611EBAF002F1F29 /* ProfileSegmentedViewController.swift in Sources */, 2D42FF8F25C8228A004A627A /* UIButton.swift in Sources */, DBF156DF2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift in Sources */, + DB0617F1278413D00030EE79 /* PickServerServerSectionTableHeaderView.swift in Sources */, DB789A0B25F9F2950071ACA0 /* ComposeViewController.swift in Sources */, DB938F0926240F3C00E5B6C1 /* RemoteThreadViewModel.swift in Sources */, DB0617ED277F02C50030EE79 /* OnboardingNavigationController.swift in Sources */, @@ -4132,6 +4147,7 @@ DBB525562611EDCA002F1F29 /* UserTimelineViewModel.swift in Sources */, 2D42FF7E25C82218004A627A /* ActionToolBarContainer.swift in Sources */, DB221B16260C395900AEFE46 /* CustomEmojiPickerInputViewModel.swift in Sources */, + DB0617EF277F12720030EE79 /* NavigationActionView.swift in Sources */, DB1FD43625F26899004CFCFC /* MastodonPickServerViewModel+LoadIndexedServerState.swift in Sources */, 2D939AE825EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift in Sources */, 2D084B8D26258EA3003AA3AF /* NotificationViewModel+Diffable.swift in Sources */, diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index 11dde7269..d933b5cd5 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -216,6 +216,15 @@ "revision": "dad97167bf1be16aeecd109130900995dd01c515", "version": "2.6.0" } + }, + { + "package": "UITextView+Placeholder", + "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder", + "state": { + "branch": null, + "revision": "20f513ded04a040cdf5467f0891849b1763ede3b", + "version": "1.4.1" + } } ] }, diff --git a/Mastodon/Deprecated/PickServerCategoriesCell.swift b/Mastodon/Deprecated/PickServerCategoriesCell.swift new file mode 100644 index 000000000..b2ca1cc7d --- /dev/null +++ b/Mastodon/Deprecated/PickServerCategoriesCell.swift @@ -0,0 +1,145 @@ +// +// PickServerCategoriesCell.swift +// Mastodon +// +// Created by BradGao on 2021/2/23. +// + +//import os.log +//import UIKit +//import MastodonSDK +// +//protocol PickServerCategoriesCellDelegate: AnyObject { +// func pickServerCategoriesCell(_ cell: PickServerCategoriesCell, collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) +//} +// +//final class PickServerCategoriesCell: UITableViewCell { +// +// weak var delegate: PickServerCategoriesCellDelegate? +// +// var diffableDataSource: UICollectionViewDiffableDataSource? +// +// let metricView = UIView() +// +// let collectionView: UICollectionView = { +// let flowLayout = UICollectionViewFlowLayout() +// flowLayout.scrollDirection = .horizontal +// let view = ControlContainableCollectionView(frame: .zero, collectionViewLayout: flowLayout) +// view.register(PickServerCategoryCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: PickServerCategoryCollectionViewCell.self)) +// view.backgroundColor = .clear +// view.showsHorizontalScrollIndicator = false +// view.showsVerticalScrollIndicator = false +// view.layer.masksToBounds = false +// view.translatesAutoresizingMaskIntoConstraints = false +// return view +// }() +// +// override func prepareForReuse() { +// super.prepareForReuse() +// +// delegate = nil +// } +// +// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { +// super.init(style: style, reuseIdentifier: reuseIdentifier) +// _init() +// } +// +// required init?(coder: NSCoder) { +// super.init(coder: coder) +// _init() +// } +//} +// +//extension PickServerCategoriesCell { +// +// private func _init() { +// selectionStyle = .none +// backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color +// configureMargin() +// +// metricView.translatesAutoresizingMaskIntoConstraints = false +// contentView.addSubview(metricView) +// NSLayoutConstraint.activate([ +// metricView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), +// metricView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), +// metricView.topAnchor.constraint(equalTo: contentView.topAnchor), +// metricView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), +// metricView.heightAnchor.constraint(equalToConstant: 80).priority(.defaultHigh), +// ]) +// +// contentView.addSubview(collectionView) +// NSLayoutConstraint.activate([ +// collectionView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), +// collectionView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), +// collectionView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 10), +// contentView.bottomAnchor.constraint(equalTo: collectionView.bottomAnchor, constant: 20), +// collectionView.heightAnchor.constraint(equalToConstant: 80).priority(.defaultHigh), +// ]) +// +// collectionView.delegate = self +// } +// +// override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { +// super.traitCollectionDidChange(previousTraitCollection) +// +// configureMargin() +// } +// +// override func layoutSubviews() { +// super.layoutSubviews() +// +// collectionView.collectionViewLayout.invalidateLayout() +// } +// +//} +// +//extension PickServerCategoriesCell { +// private func configureMargin() { +// switch traitCollection.horizontalSizeClass { +// case .regular: +// let margin = MastodonPickServerViewController.viewEdgeMargin +// contentView.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) +// default: +// contentView.layoutMargins = .zero +// } +// } +//} +// +//// MARK: - UICollectionViewDelegateFlowLayout +//extension PickServerCategoriesCell: UICollectionViewDelegateFlowLayout { +// +// func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription) +// collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally) +// delegate?.pickServerCategoriesCell(self, collectionView: collectionView, didSelectItemAt: indexPath) +// } +// +// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { +// layoutIfNeeded() +// return UIEdgeInsets(top: 0, left: metricView.frame.minX - collectionView.frame.minX, bottom: 0, right: collectionView.frame.maxX - metricView.frame.maxX) +// } +// +// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { +// return 16 +// } +// +// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { +// return CGSize(width: 60, height: 80) +// } +// +//} +// +//extension PickServerCategoriesCell { +// +// override func accessibilityElementCount() -> Int { +// guard let diffableDataSource = diffableDataSource else { return 0 } +// return diffableDataSource.snapshot().itemIdentifiers.count +// } +// +// override func accessibilityElement(at index: Int) -> Any? { +// guard let item = collectionView.cellForItem(at: IndexPath(item: index, section: 0)) else { return nil } +// return item +// } +// +//} diff --git a/Mastodon/Deprecated/PickServerSearchCell.swift b/Mastodon/Deprecated/PickServerSearchCell.swift new file mode 100644 index 000000000..465e7ae29 --- /dev/null +++ b/Mastodon/Deprecated/PickServerSearchCell.swift @@ -0,0 +1,171 @@ +// +// PickServerSearchCell.swift +// Mastodon +// +// Created by BradGao on 2021/2/24. +// + +import UIKit + +//protocol PickServerSearchCellDelegate: AnyObject { +// func pickServerSearchCell(_ cell: PickServerSearchCell, searchTextDidChange searchText: String?) +//} +// +//class PickServerSearchCell: UITableViewCell { +// +// weak var delegate: PickServerSearchCellDelegate? +// +// private var bgView: UIView = { +// let view = UIView() +// view.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color +// view.translatesAutoresizingMaskIntoConstraints = false +// view.layer.maskedCorners = [ +// .layerMinXMinYCorner, +// .layerMaxXMinYCorner +// ] +// view.layer.cornerCurve = .continuous +// view.layer.cornerRadius = MastodonPickServerAppearance.tableViewCornerRadius +// return view +// }() +// +// private var textFieldBgView: UIView = { +// let view = UIView() +// view.backgroundColor = Asset.Colors.TextField.background.color +// view.translatesAutoresizingMaskIntoConstraints = false +// view.layer.masksToBounds = true +// view.layer.cornerRadius = 6 +// view.layer.cornerCurve = .continuous +// return view +// }() +// +// let searchTextField: UITextField = { +// let textField = UITextField() +// textField.translatesAutoresizingMaskIntoConstraints = false +// textField.leftView = { +// let imageView = UIImageView( +// image: UIImage( +// systemName: "magnifyingglass", +// withConfiguration: UIImage.SymbolConfiguration(pointSize: 15, weight: .regular) +// ) +// ) +// imageView.tintColor = Asset.Colors.Label.secondary.color.withAlphaComponent(0.6) +// +// let containerView = UIView() +// imageView.translatesAutoresizingMaskIntoConstraints = false +// containerView.addSubview(imageView) +// NSLayoutConstraint.activate([ +// imageView.topAnchor.constraint(equalTo: containerView.topAnchor), +// imageView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), +// imageView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), +// ]) +// +// let paddingView = UIView() +// paddingView.translatesAutoresizingMaskIntoConstraints = false +// containerView.addSubview(paddingView) +// NSLayoutConstraint.activate([ +// paddingView.topAnchor.constraint(equalTo: containerView.topAnchor), +// paddingView.leadingAnchor.constraint(equalTo: imageView.trailingAnchor), +// paddingView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), +// paddingView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), +// paddingView.widthAnchor.constraint(equalToConstant: 4).priority(.defaultHigh), +// ]) +// return containerView +// }() +// textField.leftViewMode = .always +// textField.font = .systemFont(ofSize: 15, weight: .regular) +// textField.tintColor = Asset.Colors.Label.primary.color +// textField.textColor = Asset.Colors.Label.primary.color +// textField.adjustsFontForContentSizeCategory = true +// textField.attributedPlaceholder = +// NSAttributedString(string: L10n.Scene.ServerPicker.Input.placeholder, +// attributes: [.font: UIFont.systemFont(ofSize: 15, weight: .regular), +// .foregroundColor: Asset.Colors.Label.secondary.color.withAlphaComponent(0.6)]) +// textField.clearButtonMode = .whileEditing +// textField.autocapitalizationType = .none +// textField.autocorrectionType = .no +// textField.returnKeyType = .done +// textField.keyboardType = .URL +// return textField +// }() +// +// override func prepareForReuse() { +// super.prepareForReuse() +// +// delegate = nil +// } +// +// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { +// super.init(style: style, reuseIdentifier: reuseIdentifier) +// _init() +// } +// +// required init?(coder: NSCoder) { +// super.init(coder: coder) +// _init() +// } +//} +// +//extension PickServerSearchCell { +// private func _init() { +// selectionStyle = .none +// backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color +// configureMargin() +// +// searchTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) +// searchTextField.delegate = self +// +// contentView.addSubview(bgView) +// contentView.addSubview(textFieldBgView) +// contentView.addSubview(searchTextField) +// +// NSLayoutConstraint.activate([ +// bgView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), +// bgView.topAnchor.constraint(equalTo: contentView.topAnchor), +// bgView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), +// bgView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), +// +// textFieldBgView.leadingAnchor.constraint(equalTo: bgView.leadingAnchor, constant: 14), +// textFieldBgView.topAnchor.constraint(equalTo: bgView.topAnchor, constant: 12), +// bgView.trailingAnchor.constraint(equalTo: textFieldBgView.trailingAnchor, constant: 14), +// bgView.bottomAnchor.constraint(equalTo: textFieldBgView.bottomAnchor, constant: 13), +// +// searchTextField.leadingAnchor.constraint(equalTo: textFieldBgView.leadingAnchor, constant: 11), +// searchTextField.topAnchor.constraint(equalTo: textFieldBgView.topAnchor, constant: 4), +// textFieldBgView.trailingAnchor.constraint(equalTo: searchTextField.trailingAnchor, constant: 11), +// textFieldBgView.bottomAnchor.constraint(equalTo: searchTextField.bottomAnchor, constant: 4), +// ]) +// } +// +// override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { +// super.traitCollectionDidChange(previousTraitCollection) +// +// configureMargin() +// } +//} +// +//extension PickServerSearchCell { +// private func configureMargin() { +// switch traitCollection.horizontalSizeClass { +// case .regular: +// let margin = MastodonPickServerViewController.viewEdgeMargin +// contentView.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) +// default: +// contentView.layoutMargins = .zero +// } +// } +//} +// +//extension PickServerSearchCell { +// @objc private func textFieldDidChange(_ textField: UITextField) { +// delegate?.pickServerSearchCell(self, searchTextDidChange: textField.text) +// } +//} +// +//// MARK: - UITextFieldDelegate +//extension PickServerSearchCell: UITextFieldDelegate { +// +// func textFieldShouldReturn(_ textField: UITextField) -> Bool { +// textField.resignFirstResponder() +// return false +// } +//} diff --git a/Mastodon/Diffiable/Item/CategoryPickerItem.swift b/Mastodon/Diffiable/Item/CategoryPickerItem.swift index 0f2cdcc21..53f9c9abd 100644 --- a/Mastodon/Diffiable/Item/CategoryPickerItem.swift +++ b/Mastodon/Diffiable/Item/CategoryPickerItem.swift @@ -15,10 +15,11 @@ enum CategoryPickerItem { } extension CategoryPickerItem { - var title: String { + + var emoji: String { switch self { case .all: - return L10n.Scene.ServerPicker.Button.Category.all + return "💬" case .category(let category): switch category.category { case .academia: @@ -32,7 +33,7 @@ extension CategoryPickerItem { case .games: return "🕹" case .general: - return "💬" + return "🐘" case .journalism: return "📰" case .lgbt: @@ -50,6 +51,41 @@ extension CategoryPickerItem { } } } + var title: String { + switch self { + case .all: + return L10n.Scene.ServerPicker.Button.Category.all + case .category(let category): + switch category.category { + case .academia: + return L10n.Scene.ServerPicker.Button.Category.academia + case .activism: + return L10n.Scene.ServerPicker.Button.Category.activism + case .food: + return L10n.Scene.ServerPicker.Button.Category.food + case .furry: + return L10n.Scene.ServerPicker.Button.Category.furry + case .games: + return L10n.Scene.ServerPicker.Button.Category.games + case .general: + return L10n.Scene.ServerPicker.Button.Category.general + case .journalism: + return L10n.Scene.ServerPicker.Button.Category.journalism + case .lgbt: + return L10n.Scene.ServerPicker.Button.Category.lgbt + case .regional: + return L10n.Scene.ServerPicker.Button.Category.regional + case .art: + return L10n.Scene.ServerPicker.Button.Category.art + case .music: + return L10n.Scene.ServerPicker.Button.Category.music + case .tech: + return L10n.Scene.ServerPicker.Button.Category.tech + case ._other: + return "-" // FIXME: + } + } + } var accessibilityDescription: String { switch self { @@ -82,7 +118,7 @@ extension CategoryPickerItem { case .tech: return L10n.Scene.ServerPicker.Button.Category.tech case ._other: - return "❓" // FIXME: + return "-" // FIXME: } } } diff --git a/Mastodon/Diffiable/Item/PickServerItem.swift b/Mastodon/Diffiable/Item/PickServerItem.swift index 7db2c958f..ba693ad78 100644 --- a/Mastodon/Diffiable/Item/PickServerItem.swift +++ b/Mastodon/Diffiable/Item/PickServerItem.swift @@ -12,8 +12,6 @@ import MastodonSDK /// Note: update Equatable when change case enum PickServerItem { case header - case categoryPicker(items: [CategoryPickerItem]) - case search case server(server: Mastodon.Entity.Server, attribute: ServerItemAttribute) case loader(attribute: LoaderItemAttribute) } @@ -63,10 +61,6 @@ extension PickServerItem: Equatable { switch (lhs, rhs) { case (.header, .header): return true - case (.categoryPicker(let itemsLeft), .categoryPicker(let itemsRight)): - return itemsLeft == itemsRight - case (.search, .search): - return true case (.server(let serverLeft, _), .server(let serverRight, _)): return serverLeft.domain == serverRight.domain case (.loader(let attributeLeft), loader(let attributeRight)): @@ -82,10 +76,6 @@ extension PickServerItem: Hashable { switch self { case .header: hasher.combine(String(describing: PickServerItem.header.self)) - case .categoryPicker(let items): - hasher.combine(items) - case .search: - hasher.combine(String(describing: PickServerItem.search.self)) case .server(let server, _): hasher.combine(server.domain) case .loader(let attribute): diff --git a/Mastodon/Diffiable/Section/Onboarding/CategoryPickerSection.swift b/Mastodon/Diffiable/Section/Onboarding/CategoryPickerSection.swift index 732813c0a..525d77206 100644 --- a/Mastodon/Diffiable/Section/Onboarding/CategoryPickerSection.swift +++ b/Mastodon/Diffiable/Section/Onboarding/CategoryPickerSection.swift @@ -19,27 +19,11 @@ extension CategoryPickerSection { UICollectionViewDiffableDataSource(collectionView: collectionView) { [weak dependency] collectionView, indexPath, item -> UICollectionViewCell? in guard let _ = dependency else { return nil } let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: PickServerCategoryCollectionViewCell.self), for: indexPath) as! PickServerCategoryCollectionViewCell - switch item { - case .all: - cell.categoryView.titleLabel.font = .systemFont(ofSize: 17) - case .category: - cell.categoryView.titleLabel.font = .systemFont(ofSize: 28) - } + cell.categoryView.emojiLabel.text = item.emoji cell.categoryView.titleLabel.text = item.title cell.observe(\.isSelected, options: [.initial, .new]) { cell, _ in - if cell.isSelected { - cell.categoryView.bgView.backgroundColor = Asset.Colors.brandBlue.color - cell.categoryView.bgView.applyShadow(color: Asset.Colors.brandBlue.color, alpha: 1, x: 0, y: 0, blur: 4.0) - if case .all = item { - cell.categoryView.titleLabel.textColor = .white - } - } else { - cell.categoryView.bgView.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - cell.categoryView.bgView.applyShadow(color: Asset.Colors.brandBlue.color, alpha: 0, x: 0, y: 0, blur: 0.0) - if case .all = item { - cell.categoryView.titleLabel.textColor = Asset.Colors.brandBlue.color - } - } + cell.categoryView.highlightedIndicatorView.alpha = cell.isSelected ? 1 : 0 + cell.categoryView.titleLabel.textColor = cell.isSelected ? Asset.Colors.Label.primary.color : Asset.Colors.Label.secondary.color } .store(in: &cell.observations) diff --git a/Mastodon/Diffiable/Section/Onboarding/PickServerSection.swift b/Mastodon/Diffiable/Section/Onboarding/PickServerSection.swift index 28b1ded3f..b2079aaba 100644 --- a/Mastodon/Diffiable/Section/Onboarding/PickServerSection.swift +++ b/Mastodon/Diffiable/Section/Onboarding/PickServerSection.swift @@ -12,8 +12,6 @@ import AlamofireImage enum PickServerSection: Equatable, Hashable { case header - case category - case search case servers } @@ -21,14 +19,10 @@ extension PickServerSection { static func tableViewDiffableDataSource( for tableView: UITableView, dependency: NeedsDependency, - pickServerCategoriesCellDelegate: PickServerCategoriesCellDelegate, - pickServerSearchCellDelegate: PickServerSearchCellDelegate, pickServerCellDelegate: PickServerCellDelegate ) -> UITableViewDiffableDataSource { UITableViewDiffableDataSource(tableView: tableView) { [ weak dependency, - weak pickServerCategoriesCellDelegate, - weak pickServerSearchCellDelegate, weak pickServerCellDelegate ] tableView, indexPath, item -> UITableViewCell? in guard let dependency = dependency else { return nil } @@ -36,22 +30,6 @@ extension PickServerSection { case .header: let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: PickServerTitleCell.self), for: indexPath) as! PickServerTitleCell return cell - case .categoryPicker(let items): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: PickServerCategoriesCell.self), for: indexPath) as! PickServerCategoriesCell - cell.delegate = pickServerCategoriesCellDelegate - cell.diffableDataSource = CategoryPickerSection.collectionViewDiffableDataSource( - for: cell.collectionView, - dependency: dependency - ) - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - snapshot.appendItems(items, toSection: .main) - cell.diffableDataSource?.apply(snapshot, animatingDifferences: false, completion: nil) - return cell - case .search: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: PickServerSearchCell.self), for: indexPath) as! PickServerSearchCell - cell.delegate = pickServerSearchCellDelegate - return cell case .server(let server, let attribute): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: PickServerCell.self), for: indexPath) as! PickServerCell PickServerSection.configure(cell: cell, server: server, attribute: attribute) @@ -70,19 +48,63 @@ extension PickServerSection { static func configure(cell: PickServerCell, server: Mastodon.Entity.Server, attribute: PickServerItem.ServerItemAttribute) { cell.domainLabel.text = server.domain - cell.descriptionLabel.text = { - guard let html = try? HTML(html: server.description, encoding: .utf8) else { - return server.description - } + cell.descriptionLabel.attributedText = { + let content: String = { + guard let html = try? HTML(html: server.description, encoding: .utf8) else { + return server.description + } + return html.text ?? server.description + }() - return html.text ?? server.description + let paragraphStyle = NSMutableParagraphStyle() + paragraphStyle.lineHeightMultiple = 1.16 + + return NSAttributedString( + string: content, + attributes: [ + .paragraphStyle: paragraphStyle + ] + ) }() - cell.langValueLabel.text = server.language.uppercased() - cell.usersValueLabel.text = parseUsersCount(server.totalUsers) - cell.categoryValueLabel.text = server.category.uppercased() - - cell.updateExpandMode(mode: attribute.isExpand ? .expand : .collapse) - + cell.usersValueLabel.attributedText = { + let attributedString = NSMutableAttributedString() + let attachment = NSTextAttachment(image: UIImage(systemName: "person.2.fill")!) + let attachmentAttributedString = NSAttributedString(attachment: attachment) + attributedString.append(attachmentAttributedString) + attributedString.append(NSAttributedString(string: " ")) + + let paragraphStyle = NSMutableParagraphStyle() + paragraphStyle.lineHeightMultiple = 1.12 + let valueAttributedString = NSAttributedString( + string: parseUsersCount(server.totalUsers), + attributes: [ + .paragraphStyle: paragraphStyle + ] + ) + attributedString.append(valueAttributedString) + + return attributedString + }() + cell.langValueLabel.attributedText = { + let attributedString = NSMutableAttributedString() + let attachment = NSTextAttachment(image: UIImage(systemName: "text.bubble.fill")!) + let attachmentAttributedString = NSAttributedString(attachment: attachment) + attributedString.append(attachmentAttributedString) + attributedString.append(NSAttributedString(string: " ")) + + let paragraphStyle = NSMutableParagraphStyle() + paragraphStyle.lineHeightMultiple = 1.12 + let valueAttributedString = NSAttributedString( + string: server.language.uppercased(), + attributes: [ + .paragraphStyle: paragraphStyle + ] + ) + attributedString.append(valueAttributedString) + + return attributedString + }() + attribute.isLast .receive(on: DispatchQueue.main) .sink { [weak cell] isLast in @@ -101,41 +123,6 @@ extension PickServerSection { } } .store(in: &cell.disposeBag) - - cell.expandMode - .receive(on: DispatchQueue.main) - .sink { mode in - switch mode { - case .collapse: - // do nothing - break - case .expand: - let placeholderImage = UIImage.placeholder(size: cell.thumbnailImageView.frame.size, color: .systemFill) - .af.imageRounded(withCornerRadius: 3.0, divideRadiusByImageScale: false) - guard let proxiedThumbnail = server.proxiedThumbnail, - let url = URL(string: proxiedThumbnail) else { - cell.thumbnailImageView.image = placeholderImage - cell.thumbnailActivityIndicator.stopAnimating() - return - } - cell.thumbnailImageView.isHidden = false - cell.thumbnailActivityIndicator.startAnimating() - - cell.thumbnailImageView.af.setImage( - withURL: url, - placeholderImage: placeholderImage, - filter: AspectScaledToFillSizeWithRoundedCornersFilter(size: cell.thumbnailImageView.frame.size, radius: 3), - imageTransition: .crossDissolve(0.33), - completion: { [weak cell] response in - switch response.result { - case .success, .failure: - cell?.thumbnailActivityIndicator.stopAnimating() - } - } - ) - } - } - .store(in: &cell.disposeBag) } private static func parseUsersCount(_ usersCount: Int) -> String { diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index 5098d05f0..0761780c7 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -47,6 +47,7 @@ internal enum Asset { } internal enum Label { internal static let primary = ColorAsset(name: "Colors/Label/primary") + internal static let primaryReverse = ColorAsset(name: "Colors/Label/primary.reverse") internal static let secondary = ColorAsset(name: "Colors/Label/secondary") internal static let tertiary = ColorAsset(name: "Colors/Label/tertiary") } @@ -89,6 +90,14 @@ internal enum Asset { internal static let faceSmilingAdaptive = ImageAsset(name: "Human/face.smiling.adaptive") } internal enum Scene { + internal enum Onboarding { + internal static let navigationBackButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background") + internal static let navigationBackButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background.highlighted") + internal static let navigationNextButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background") + internal static let navigationNextButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background.highlighted") + internal static let onboardingBackground = ColorAsset(name: "Scene/Onboarding/onboarding.background") + internal static let searchBarBackground = ColorAsset(name: "Scene/Onboarding/search.bar.background") + } internal enum Profile { internal enum Banner { internal static let bioEditBackgroundGray = ColorAsset(name: "Scene/Profile/Banner/bio.edit.background.gray") diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.colorset/Contents.json index 202a1c04e..ee70bcc16 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.colorset/Contents.json +++ b/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0x00", - "green" : "0x00", - "red" : "0x00" + "blue" : "0.216", + "green" : "0.173", + "red" : "0.157" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "1.000", - "green" : "1.000", - "red" : "1.000" + "blue" : "0xEE", + "green" : "0xEE", + "red" : "0xEE" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.reverse.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.reverse.colorset/Contents.json new file mode 100644 index 000000000..8f42a585a --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.reverse.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.933", + "green" : "0.933", + "red" : "0.933" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.216", + "green" : "0.173", + "red" : "0.157" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json index 70b1446d0..104dfd026 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json +++ b/Mastodon/Resources/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json @@ -22,10 +22,10 @@ "color" : { "color-space" : "srgb", "components" : { - "alpha" : "0.600", - "blue" : "0xF5", - "green" : "0xEB", - "red" : "0xEB" + "alpha" : "1.000", + "blue" : "0xAD", + "green" : "0x9D", + "red" : "0x97" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/Contents.json new file mode 100644 index 000000000..6e965652d --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json new file mode 100644 index 000000000..b7d63ece2 --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0xFF", + "red" : "0xFF" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.200", + "blue" : "0x80", + "green" : "0x78", + "red" : "0x78" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json new file mode 100644 index 000000000..7136040b0 --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xE5", + "green" : "0xE5", + "red" : "0xE5" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.400", + "blue" : "0x80", + "green" : "0x78", + "red" : "0x78" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json new file mode 100644 index 000000000..17ed9364b --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x37", + "green" : "0x2C", + "red" : "0x28" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xEE", + "green" : "0xEE", + "red" : "0xEE" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json new file mode 100644 index 000000000..706cd755b --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x1B", + "green" : "0x15", + "red" : "0x13" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xBA", + "green" : "0xBA", + "red" : "0xBA" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json new file mode 100644 index 000000000..0b219c90c --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF7", + "green" : "0xF2", + "red" : "0xF2" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x21", + "green" : "0x1B", + "red" : "0x19" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json new file mode 100644 index 000000000..f16bb02fc --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.200", + "blue" : "0x80", + "green" : "0x78", + "red" : "0x78" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.240", + "blue" : "0x80", + "green" : "0x76", + "red" : "0x76" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json index d211d7df9..c8aa45b5e 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json +++ b/Mastodon/Resources/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.922", - "green" : "0.898", - "red" : "0.867" + "blue" : "0xEB", + "green" : "0xE4", + "red" : "0xDD" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json index 77d24b11d..14441ef0c 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json +++ b/Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.910", - "green" : "0.882", - "red" : "0.851" + "blue" : "0xE8", + "green" : "0xE0", + "red" : "0xD9" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json index 370a745eb..daac70e02 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json +++ b/Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.910", - "green" : "0.882", - "red" : "0.851" + "blue" : "0xE8", + "green" : "0xE0", + "red" : "0xD9" } }, "idiom" : "universal" diff --git a/Mastodon/Scene/Onboarding/PickServer/CollectionViewCell/PickServerCategoryCollectionViewCell.swift b/Mastodon/Scene/Onboarding/PickServer/CollectionViewCell/PickServerCategoryCollectionViewCell.swift index 9793d40fb..89ca8267b 100644 --- a/Mastodon/Scene/Onboarding/PickServer/CollectionViewCell/PickServerCategoryCollectionViewCell.swift +++ b/Mastodon/Scene/Onboarding/PickServer/CollectionViewCell/PickServerCategoryCollectionViewCell.swift @@ -8,14 +8,10 @@ import UIKit class PickServerCategoryCollectionViewCell: UICollectionViewCell { - + var observations = Set() - var categoryView: PickServerCategoryView = { - let view = PickServerCategoryView() - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() + var categoryView = PickServerCategoryView() override func prepareForReuse() { super.prepareForReuse() @@ -35,13 +31,15 @@ class PickServerCategoryCollectionViewCell: UICollectionViewCell { extension PickServerCategoryCollectionViewCell { private func configure() { - contentView.addSubview(categoryView) + backgroundColor = .clear + categoryView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(categoryView) NSLayoutConstraint.activate([ + categoryView.topAnchor.constraint(equalTo: contentView.topAnchor), categoryView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), categoryView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - categoryView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 10), - contentView.bottomAnchor.constraint(equalTo: categoryView.bottomAnchor, constant: 10), + contentView.bottomAnchor.constraint(equalTo: categoryView.bottomAnchor), ]) } } diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift index f3570c6c5..1fbf204f1 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift @@ -14,6 +14,7 @@ import AuthenticationServices final class MastodonPickServerViewController: UIViewController, NeedsDependency { private var disposeBag = Set() + private var observations = Set() private var tableViewObservation: NSKeyValueObservation? weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } @@ -31,21 +32,16 @@ final class MastodonPickServerViewController: UIViewController, NeedsDependency private let emptyStateView = PickServerEmptyStateView() private var emptyStateViewLeadingLayoutConstraint: NSLayoutConstraint! private var emptyStateViewTrailingLayoutConstraint: NSLayoutConstraint! - let tableViewTopPaddingView = UIView() // fix empty state view background display when tableView bounce scrolling - var tableViewTopPaddingViewHeightLayoutConstraint: NSLayoutConstraint! let tableView: UITableView = { let tableView = ControlContainableTableView() tableView.register(PickServerTitleCell.self, forCellReuseIdentifier: String(describing: PickServerTitleCell.self)) - tableView.register(PickServerCategoriesCell.self, forCellReuseIdentifier: String(describing: PickServerCategoriesCell.self)) - tableView.register(PickServerSearchCell.self, forCellReuseIdentifier: String(describing: PickServerSearchCell.self)) tableView.register(PickServerCell.self, forCellReuseIdentifier: String(describing: PickServerCell.self)) tableView.register(PickServerLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: PickServerLoaderTableViewCell.self)) tableView.rowHeight = UITableView.automaticDimension tableView.separatorStyle = .none tableView.backgroundColor = .clear tableView.keyboardDismissMode = .onDrag - tableView.translatesAutoresizingMaskIntoConstraints = false if #available(iOS 15.0, *) { tableView.sectionHeaderTopPadding = .leastNonzeroMagnitude } else { @@ -54,14 +50,11 @@ final class MastodonPickServerViewController: UIViewController, NeedsDependency return tableView }() - let buttonContainer = UIView() - let nextStepButton: PrimaryActionButton = { - let button = PrimaryActionButton() - button.setTitle(L10n.Common.Controls.Actions.signUp, for: .normal) - button.translatesAutoresizingMaskIntoConstraints = false - return button + let navigationActionView: NavigationActionView = { + let navigationActionView = NavigationActionView() + navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + return navigationActionView }() - var buttonContainerBottomLayoutConstraint: NSLayoutConstraint! var mastodonAuthenticationController: MastodonAuthenticationController? @@ -72,16 +65,15 @@ final class MastodonPickServerViewController: UIViewController, NeedsDependency } -extension MastodonPickServerViewController { - +extension MastodonPickServerViewController { override func viewDidLoad() { super.viewDidLoad() + navigationItem.leftBarButtonItem = UIBarButtonItem() + setupOnboardingAppearance() defer { setupNavigationBarBackgroundView() } - configureTitleLabel() - configureMargin() #if DEBUG navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(systemName: "ellipsis.circle"), style: .plain, target: nil, action: nil) @@ -94,26 +86,36 @@ extension MastodonPickServerViewController { navigationItem.rightBarButtonItem?.menu = UIMenu(title: "Debug Tool", image: nil, identifier: nil, options: [], children: children) #endif - buttonContainer.translatesAutoresizingMaskIntoConstraints = false - buttonContainer.preservesSuperviewLayoutMargins = true - view.addSubview(buttonContainer) - buttonContainerBottomLayoutConstraint = view.bottomAnchor.constraint(equalTo: buttonContainer.bottomAnchor, constant: 0).priority(.defaultHigh) + tableView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(tableView) NSLayoutConstraint.activate([ - buttonContainer.leadingAnchor.constraint(equalTo: view.leadingAnchor), - buttonContainer.trailingAnchor.constraint(equalTo: view.trailingAnchor), - view.safeAreaLayoutGuide.bottomAnchor.constraint(greaterThanOrEqualTo: buttonContainer.bottomAnchor, constant: WelcomeViewController.viewBottomPaddingHeight), - buttonContainerBottomLayoutConstraint, + tableView.topAnchor.constraint(equalTo: view.topAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) - view.addSubview(nextStepButton) + navigationActionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(navigationActionView) + defer { + view.bringSubviewToFront(navigationActionView) + } NSLayoutConstraint.activate([ - nextStepButton.topAnchor.constraint(equalTo: buttonContainer.topAnchor), - nextStepButton.leadingAnchor.constraint(equalTo: buttonContainer.layoutMarginsGuide.leadingAnchor), - buttonContainer.layoutMarginsGuide.trailingAnchor.constraint(equalTo: nextStepButton.trailingAnchor), - nextStepButton.bottomAnchor.constraint(equalTo: buttonContainer.bottomAnchor), - nextStepButton.heightAnchor.constraint(equalToConstant: MastodonPickServerViewController.actionButtonHeight).priority(.defaultHigh), + navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor), ]) - + + navigationActionView + .observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in + guard let self = self else { return } + let inset = navigationActionView.frame.height + print("*** \(inset) ***") + self.tableView.contentInset.bottom = inset + } + .store(in: &observations) + + // fix AutoLayout warning when observe before view appear viewModel.viewWillAppear .receive(on: DispatchQueue.main) @@ -125,26 +127,7 @@ extension MastodonPickServerViewController { } } .store(in: &disposeBag) - - tableViewTopPaddingView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(tableViewTopPaddingView) - tableViewTopPaddingViewHeightLayoutConstraint = tableViewTopPaddingView.heightAnchor.constraint(equalToConstant: 0.0).priority(.defaultHigh) - NSLayoutConstraint.activate([ - tableViewTopPaddingView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor), - tableViewTopPaddingView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableViewTopPaddingView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableViewTopPaddingViewHeightLayoutConstraint, - ]) - tableViewTopPaddingView.backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color - - view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - buttonContainer.topAnchor.constraint(equalTo: tableView.bottomAnchor, constant: 7), - ]) - + emptyStateView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(emptyStateView) emptyStateViewLeadingLayoutConstraint = emptyStateView.leadingAnchor.constraint(equalTo: tableView.leadingAnchor) @@ -153,64 +136,24 @@ extension MastodonPickServerViewController { emptyStateView.topAnchor.constraint(equalTo: view.topAnchor), emptyStateViewLeadingLayoutConstraint, emptyStateViewTrailingLayoutConstraint, - buttonContainer.topAnchor.constraint(equalTo: emptyStateView.bottomAnchor, constant: 21), + navigationActionView.topAnchor.constraint(equalTo: emptyStateView.bottomAnchor, constant: 21), ]) view.sendSubviewToBack(emptyStateView) - - // update layout when keyboard show/dismiss - let keyboardEventPublishers = Publishers.CombineLatest3( - KeyboardResponderService.shared.isShow, - KeyboardResponderService.shared.state, - KeyboardResponderService.shared.endFrame - ) - - keyboardEventPublishers - .sink { [weak self] keyboardEvents in - guard let self = self else { return } - let (isShow, state, endFrame) = keyboardEvents - - // guard external keyboard connected - guard isShow, state == .dock, GCKeyboard.coalesced != nil else { - self.buttonContainerBottomLayoutConstraint.constant = WelcomeViewController.viewBottomPaddingHeight - return - } - - let externalKeyboardToolbarHeight = self.view.frame.maxY - endFrame.minY - guard externalKeyboardToolbarHeight > 0 else { - self.buttonContainerBottomLayoutConstraint.constant = WelcomeViewController.viewBottomPaddingHeight - return - } - - UIView.animate(withDuration: 0.3) { - self.buttonContainerBottomLayoutConstraint.constant = externalKeyboardToolbarHeight + 16 - self.view.layoutIfNeeded() - } - } - .store(in: &disposeBag) - - switch viewModel.mode { - case .signIn: - nextStepButton.setTitle(L10n.Common.Controls.Actions.signIn, for: .normal) - case .signUp: - nextStepButton.setTitle(L10n.Common.Controls.Actions.continue, for: .normal) - } - nextStepButton.addTarget(self, action: #selector(nextStepButtonDidClicked(_:)), for: .touchUpInside) - + tableView.delegate = self viewModel.setupDiffableDataSource( for: tableView, dependency: self, - pickServerCategoriesCellDelegate: self, - pickServerSearchCellDelegate: self, + pickServerServerSectionTableHeaderViewDelegate: self, pickServerCellDelegate: self ) - + viewModel .selectedServer .map { $0 != nil } - .assign(to: \.isEnabled, on: nextStepButton) + .assign(to: \.isEnabled, on: navigationActionView.nextButton) .store(in: &disposeBag) - + Publishers.Merge( viewModel.error, authenticationViewModel.error @@ -229,7 +172,7 @@ extension MastodonPickServerViewController { ) } .store(in: &disposeBag) - + authenticationViewModel .authenticated .flatMap { [weak self] (domain, user) -> AnyPublisher, Never> in @@ -249,17 +192,17 @@ extension MastodonPickServerViewController { } } .store(in: &disposeBag) - + authenticationViewModel.isAuthenticating .receive(on: DispatchQueue.main) .sink { [weak self] isAuthenticating in guard let self = self else { return } - isAuthenticating ? self.nextStepButton.showLoading() : self.nextStepButton.stopLoading() + isAuthenticating ? self.navigationActionView.nextButton.showLoading() : self.navigationActionView.nextButton.stopLoading() } .store(in: &disposeBag) - + viewModel.emptyStateViewState - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] state in guard let self = self else { return } switch state { @@ -284,6 +227,9 @@ extension MastodonPickServerViewController { } } .store(in: &disposeBag) + + navigationActionView.backButton.addTarget(self, action: #selector(MastodonPickServerViewController.backButtonDidPressed(_:)), for: .touchUpInside) + navigationActionView.nextButton.addTarget(self, action: #selector(MastodonPickServerViewController.nextButtonDidPressed(_:)), for: .touchUpInside) } override func viewWillAppear(_ animated: Bool) { @@ -296,38 +242,20 @@ extension MastodonPickServerViewController { setupNavigationBarAppearance() updateEmptyStateViewLayout() - configureTitleLabel() - configureMargin() } } -extension MastodonPickServerViewController { - private func configureTitleLabel() { - guard UIDevice.current.userInterfaceIdiom == .pad else { - return - } - - switch traitCollection.horizontalSizeClass { - case .regular: - navigationItem.largeTitleDisplayMode = .always - navigationItem.title = L10n.Scene.ServerPicker.title.replacingOccurrences(of: "\n", with: " ") - default: - navigationItem.largeTitleDisplayMode = .never - navigationItem.title = nil - } - } -} - extension MastodonPickServerViewController { - @objc - private func nextStepButtonDidClicked(_ sender: UIButton) { + @objc private func backButtonDidPressed(_ sender: UIButton) { + navigationController?.popViewController(animated: true) + } + + @objc private func nextButtonDidPressed(_ sender: UIButton) { switch viewModel.mode { - case .signIn: - doSignIn() - case .signUp: - doSignUp() + case .signIn: doSignIn() + case .signUp: doSignUp() } } @@ -458,16 +386,6 @@ extension MastodonPickServerViewController { // MARK: - UITableViewDelegate extension MastodonPickServerViewController: UITableViewDelegate { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - guard scrollView === tableView else { return } - let offsetY = scrollView.contentOffset.y + scrollView.safeAreaInsets.top - if offsetY < 0 { - tableViewTopPaddingViewHeightLayoutConstraint.constant = abs(offsetY) - } else { - tableViewTopPaddingViewHeightLayoutConstraint.constant = 0 - } - } - func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { guard let diffableDataSource = viewModel.diffableDataSource else { return nil } guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return nil } @@ -500,87 +418,89 @@ extension MastodonPickServerViewController: UITableViewDelegate { guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } switch item { - case .categoryPicker: - guard let cell = cell as? PickServerCategoriesCell else { return } - guard let diffableDataSource = cell.diffableDataSource else { return } - let snapshot = diffableDataSource.snapshot() - - let item = viewModel.selectCategoryItem.value - guard let section = snapshot.indexOfSection(.main), - let row = snapshot.indexOfItem(item) else { return } - cell.collectionView.selectItem(at: IndexPath(item: row, section: section), animated: false, scrollPosition: .centeredHorizontally) - case .search: - guard let cell = cell as? PickServerSearchCell else { return } - cell.searchTextField.text = viewModel.searchText.value +// case .categoryPicker: +// guard let cell = cell as? PickServerCategoriesCell else { return } +// guard let diffableDataSource = cell.diffableDataSource else { return } +// let snapshot = diffableDataSource.snapshot() +// +// let item = viewModel.selectCategoryItem.value +// guard let section = snapshot.indexOfSection(.main), +// let row = snapshot.indexOfItem(item) else { return } +// cell.collectionView.selectItem(at: IndexPath(item: row, section: section), animated: false, scrollPosition: .centeredHorizontally) +// case .search: +// guard let cell = cell as? PickServerSearchCell else { return } +// cell.searchTextField.text = viewModel.searchText.value default: break } } + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { + guard let diffableDataSource = viewModel.diffableDataSource else { return nil } + let snapshot = diffableDataSource.snapshot() + guard section < snapshot.numberOfSections else { return nil } + let section = snapshot.sectionIdentifiers[section] + + switch section { + case .servers: + return viewModel.serverSectionHeaderView + default: + return UIView() + } + } + + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + guard let diffableDataSource = viewModel.diffableDataSource else { return .leastNonzeroMagnitude } + let snapshot = diffableDataSource.snapshot() + guard section < snapshot.numberOfSections else { return .leastNonzeroMagnitude } + let section = snapshot.sectionIdentifiers[section] + + switch section { + case .servers: + return PickServerServerSectionTableHeaderView.height + default: + return .leastNonzeroMagnitude + } + } + } extension MastodonPickServerViewController { private func updateEmptyStateViewLayout() { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return } - guard let indexPath = diffableDataSource.indexPath(for: .search) else { return } - let rectInTableView = tableView.rectForRow(at: indexPath) - - emptyStateView.topPaddingViewTopLayoutConstraint.constant = rectInTableView.maxY - - switch traitCollection.horizontalSizeClass { - case .regular: - emptyStateViewLeadingLayoutConstraint.constant = MastodonPickServerViewController.viewEdgeMargin - emptyStateViewTrailingLayoutConstraint.constant = MastodonPickServerViewController.viewEdgeMargin - default: - let margin = tableView.layoutMarginsGuide.layoutFrame.origin.x - emptyStateViewLeadingLayoutConstraint.constant = margin - emptyStateViewTrailingLayoutConstraint.constant = margin - } - } - - private func configureMargin() { - switch traitCollection.horizontalSizeClass { - case .regular: - let margin = MastodonPickServerViewController.viewEdgeMargin - buttonContainer.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) - default: - buttonContainer.layoutMargins = .zero - } +// guard let diffableDataSource = self.viewModel.diffableDataSource else { return } +// guard let indexPath = diffableDataSource.indexPath(for: .search) else { return } +// let rectInTableView = tableView.rectForRow(at: indexPath) +// +// emptyStateView.topPaddingViewTopLayoutConstraint.constant = rectInTableView.maxY +// +// switch traitCollection.horizontalSizeClass { +// case .regular: +// emptyStateViewLeadingLayoutConstraint.constant = MastodonPickServerViewController.viewEdgeMargin +// emptyStateViewTrailingLayoutConstraint.constant = MastodonPickServerViewController.viewEdgeMargin +// default: +// let margin = tableView.layoutMarginsGuide.layoutFrame.origin.x +// emptyStateViewLeadingLayoutConstraint.constant = margin +// emptyStateViewTrailingLayoutConstraint.constant = margin +// } } } -// MARK: - PickServerCategoriesCellDelegate -extension MastodonPickServerViewController: PickServerCategoriesCellDelegate { - func pickServerCategoriesCell(_ cell: PickServerCategoriesCell, collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - guard let diffableDataSource = cell.diffableDataSource else { return } +// MARK: - PickServerServerSectionTableHeaderViewDelegate +extension MastodonPickServerViewController: PickServerServerSectionTableHeaderViewDelegate { + func pickServerServerSectionTableHeaderView(_ headerView: PickServerServerSectionTableHeaderView, collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + guard let diffableDataSource = headerView.diffableDataSource else { return } let item = diffableDataSource.itemIdentifier(for: indexPath) viewModel.selectCategoryItem.value = item ?? .all } -} - -// MARK: - PickServerSearchCellDelegate -extension MastodonPickServerViewController: PickServerSearchCellDelegate { - func pickServerSearchCell(_ cell: PickServerSearchCell, searchTextDidChange searchText: String?) { + + func pickServerServerSectionTableHeaderView(_ headerView: PickServerServerSectionTableHeaderView, searchTextDidChange searchText: String?) { viewModel.searchText.send(searchText ?? "") } } // MARK: - PickServerCellDelegate extension MastodonPickServerViewController: PickServerCellDelegate { - func pickServerCell(_ cell: PickServerCell, expandButtonPressed button: UIButton) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let indexPath = tableView.indexPath(for: cell) else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - guard case let .server(_, attribute) = item else { return } - - attribute.isExpand.toggle() - tableView.beginUpdates() - cell.updateExpandMode(mode: attribute.isExpand ? .expand : .collapse) - tableView.endUpdates() - - // expand attribute change do not needs apply snapshot to diffable data source - // but should I block the viewModel data binding during tableView.beginUpdates/endUpdates? - } + } // MARK: - OnboardingViewControllerAppearance diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel+Diffable.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel+Diffable.swift index 9da0399e1..152786722 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel+Diffable.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel+Diffable.swift @@ -6,32 +6,101 @@ // import UIKit +import Combine extension MastodonPickServerViewModel { func setupDiffableDataSource( for tableView: UITableView, dependency: NeedsDependency, - pickServerCategoriesCellDelegate: PickServerCategoriesCellDelegate, - pickServerSearchCellDelegate: PickServerSearchCellDelegate, + pickServerServerSectionTableHeaderViewDelegate: PickServerServerSectionTableHeaderViewDelegate, pickServerCellDelegate: PickServerCellDelegate ) { + // set section header + serverSectionHeaderView.diffableDataSource = CategoryPickerSection.collectionViewDiffableDataSource( + for: serverSectionHeaderView.collectionView, + dependency: dependency + ) + var sectionHeaderSnapshot = NSDiffableDataSourceSnapshot() + sectionHeaderSnapshot.appendSections([.main]) + sectionHeaderSnapshot.appendItems(categoryPickerItems, toSection: .main) + serverSectionHeaderView.delegate = pickServerServerSectionTableHeaderViewDelegate + serverSectionHeaderView.diffableDataSource?.applySnapshot(sectionHeaderSnapshot, animated: false) + + // set tableView diffableDataSource = PickServerSection.tableViewDiffableDataSource( for: tableView, dependency: dependency, - pickServerCategoriesCellDelegate: pickServerCategoriesCellDelegate, - pickServerSearchCellDelegate: pickServerSearchCellDelegate, pickServerCellDelegate: pickServerCellDelegate ) var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.header, .category, .search, .servers]) + snapshot.appendSections([.header, .servers]) snapshot.appendItems([.header], toSection: .header) - snapshot.appendItems([.categoryPicker(items: categoryPickerItems)], toSection: .category) - snapshot.appendItems([.search], toSection: .search) diffableDataSource?.apply(snapshot, animatingDifferences: false, completion: nil) loadIndexedServerStateMachine.enter(LoadIndexedServerState.Loading.self) + + Publishers.CombineLatest( + filteredIndexedServers, + unindexedServers + ) + .receive(on: DispatchQueue.main) + .sink(receiveValue: { [weak self] indexedServers, unindexedServers in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + let oldSnapshot = diffableDataSource.snapshot() + var oldSnapshotServerItemAttributeDict: [String : PickServerItem.ServerItemAttribute] = [:] + for item in oldSnapshot.itemIdentifiers { + guard case let .server(server, attribute) = item else { continue } + oldSnapshotServerItemAttributeDict[server.domain] = attribute + } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.header, .servers]) + snapshot.appendItems([.header], toSection: .header) + + // TODO: handle filter + var serverItems: [PickServerItem] = [] + for server in indexedServers { + let attribute = oldSnapshotServerItemAttributeDict[server.domain] ?? PickServerItem.ServerItemAttribute(isLast: false, isExpand: false) + attribute.isLast.value = false + let item = PickServerItem.server(server: server, attribute: attribute) + guard !serverItems.contains(item) else { continue } + serverItems.append(item) + } + + if let unindexedServers = unindexedServers { + if !unindexedServers.isEmpty { + for server in unindexedServers { + let attribute = oldSnapshotServerItemAttributeDict[server.domain] ?? PickServerItem.ServerItemAttribute(isLast: false, isExpand: false) + attribute.isLast.value = false + let item = PickServerItem.server(server: server, attribute: attribute) + guard !serverItems.contains(item) else { continue } + serverItems.append(item) + } + } else { + if indexedServers.isEmpty && !self.isLoadingIndexedServers.value { + serverItems.append(.loader(attribute: PickServerItem.LoaderItemAttribute(isLast: false, isEmptyResult: true))) + } + } + } else { + serverItems.append(.loader(attribute: PickServerItem.LoaderItemAttribute(isLast: false, isEmptyResult: false))) + } + + if case let .server(_, attribute) = serverItems.last { + attribute.isLast.value = true + } + if case let .loader(attribute) = serverItems.last { + attribute.isLast = true + } + snapshot.appendItems(serverItems, toSection: .servers) + + diffableDataSource.defaultRowAnimation = .fade + diffableDataSource.apply(snapshot, animatingDifferences: true, completion: nil) + }) + .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel.swift index 7a6480118..af38b110b 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel.swift @@ -12,6 +12,7 @@ import GameplayKit import MastodonSDK import CoreDataStack import OrderedCollections +import Tabman class MastodonPickServerViewModel: NSObject { @@ -27,6 +28,8 @@ class MastodonPickServerViewModel: NSObject { } var disposeBag = Set() + + let serverSectionHeaderView = PickServerServerSectionTableHeaderView() // input let mode: PickServerMode @@ -82,68 +85,6 @@ class MastodonPickServerViewModel: NSObject { extension MastodonPickServerViewModel { private func configure() { - Publishers.CombineLatest( - filteredIndexedServers, - unindexedServers - ) - .receive(on: DispatchQueue.main) - .sink(receiveValue: { [weak self] indexedServers, unindexedServers in - guard let self = self else { return } - guard let diffableDataSource = self.diffableDataSource else { return } - - let oldSnapshot = diffableDataSource.snapshot() - var oldSnapshotServerItemAttributeDict: [String : PickServerItem.ServerItemAttribute] = [:] - for item in oldSnapshot.itemIdentifiers { - guard case let .server(server, attribute) = item else { continue } - oldSnapshotServerItemAttributeDict[server.domain] = attribute - } - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.header, .category, .search, .servers]) - snapshot.appendItems([.header], toSection: .header) - snapshot.appendItems([.categoryPicker(items: self.categoryPickerItems)], toSection: .category) - snapshot.appendItems([.search], toSection: .search) - // TODO: handle filter - var serverItems: [PickServerItem] = [] - for server in indexedServers { - let attribute = oldSnapshotServerItemAttributeDict[server.domain] ?? PickServerItem.ServerItemAttribute(isLast: false, isExpand: false) - attribute.isLast.value = false - let item = PickServerItem.server(server: server, attribute: attribute) - guard !serverItems.contains(item) else { continue } - serverItems.append(item) - } - - if let unindexedServers = unindexedServers { - if !unindexedServers.isEmpty { - for server in unindexedServers { - let attribute = oldSnapshotServerItemAttributeDict[server.domain] ?? PickServerItem.ServerItemAttribute(isLast: false, isExpand: false) - attribute.isLast.value = false - let item = PickServerItem.server(server: server, attribute: attribute) - guard !serverItems.contains(item) else { continue } - serverItems.append(item) - } - } else { - if indexedServers.isEmpty && !self.isLoadingIndexedServers.value { - serverItems.append(.loader(attribute: PickServerItem.LoaderItemAttribute(isLast: false, isEmptyResult: true))) - } - } - } else { - serverItems.append(.loader(attribute: PickServerItem.LoaderItemAttribute(isLast: false, isEmptyResult: false))) - } - - if case let .server(_, attribute) = serverItems.last { - attribute.isLast.value = true - } - if case let .loader(attribute) = serverItems.last { - attribute.isLast = true - } - snapshot.appendItems(serverItems, toSection: .servers) - - diffableDataSource.defaultRowAnimation = .fade - diffableDataSource.apply(snapshot, animatingDifferences: true, completion: nil) - }) - .store(in: &disposeBag) - Publishers.CombineLatest( isLoadingIndexedServers, loadingIndexedServersError @@ -301,3 +242,12 @@ extension MastodonPickServerViewModel { let applicationToken: Mastodon.Response.Content } } + +// MARK: - TMBarDataSource +extension MastodonPickServerViewModel: TMBarDataSource { + func barItem(for bar: TMBar, at index: Int) -> TMBarItemable { + let item = categoryPickerItems[index] + let barItem = TMBarItem(title: item.title) + return barItem + } +} diff --git a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCategoriesCell.swift b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCategoriesCell.swift deleted file mode 100644 index 659317752..000000000 --- a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCategoriesCell.swift +++ /dev/null @@ -1,145 +0,0 @@ -// -// PickServerCategoriesCell.swift -// Mastodon -// -// Created by BradGao on 2021/2/23. -// - -import os.log -import UIKit -import MastodonSDK - -protocol PickServerCategoriesCellDelegate: AnyObject { - func pickServerCategoriesCell(_ cell: PickServerCategoriesCell, collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) -} - -final class PickServerCategoriesCell: UITableViewCell { - - weak var delegate: PickServerCategoriesCellDelegate? - - var diffableDataSource: UICollectionViewDiffableDataSource? - - let metricView = UIView() - - let collectionView: UICollectionView = { - let flowLayout = UICollectionViewFlowLayout() - flowLayout.scrollDirection = .horizontal - let view = ControlContainableCollectionView(frame: .zero, collectionViewLayout: flowLayout) - view.register(PickServerCategoryCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: PickServerCategoryCollectionViewCell.self)) - view.backgroundColor = .clear - view.showsHorizontalScrollIndicator = false - view.showsVerticalScrollIndicator = false - view.layer.masksToBounds = false - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - override func prepareForReuse() { - super.prepareForReuse() - - delegate = nil - } - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } -} - -extension PickServerCategoriesCell { - - private func _init() { - selectionStyle = .none - backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color - configureMargin() - - metricView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(metricView) - NSLayoutConstraint.activate([ - metricView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), - metricView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), - metricView.topAnchor.constraint(equalTo: contentView.topAnchor), - metricView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - metricView.heightAnchor.constraint(equalToConstant: 80).priority(.defaultHigh), - ]) - - contentView.addSubview(collectionView) - NSLayoutConstraint.activate([ - collectionView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - collectionView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - collectionView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 10), - contentView.bottomAnchor.constraint(equalTo: collectionView.bottomAnchor, constant: 20), - collectionView.heightAnchor.constraint(equalToConstant: 80).priority(.defaultHigh), - ]) - - collectionView.delegate = self - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - configureMargin() - } - - override func layoutSubviews() { - super.layoutSubviews() - - collectionView.collectionViewLayout.invalidateLayout() - } - -} - -extension PickServerCategoriesCell { - private func configureMargin() { - switch traitCollection.horizontalSizeClass { - case .regular: - let margin = MastodonPickServerViewController.viewEdgeMargin - contentView.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) - default: - contentView.layoutMargins = .zero - } - } -} - -// MARK: - UICollectionViewDelegateFlowLayout -extension PickServerCategoriesCell: UICollectionViewDelegateFlowLayout { - - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription) - collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally) - delegate?.pickServerCategoriesCell(self, collectionView: collectionView, didSelectItemAt: indexPath) - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { - layoutIfNeeded() - return UIEdgeInsets(top: 0, left: metricView.frame.minX - collectionView.frame.minX, bottom: 0, right: collectionView.frame.maxX - metricView.frame.maxX) - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { - return 16 - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - return CGSize(width: 60, height: 80) - } - -} - -extension PickServerCategoriesCell { - - override func accessibilityElementCount() -> Int { - guard let diffableDataSource = diffableDataSource else { return 0 } - return diffableDataSource.snapshot().itemIdentifiers.count - } - - override func accessibilityElement(at index: Int) -> Any? { - guard let item = collectionView.cellForItem(at: IndexPath(item: index, section: 0)) else { return nil } - return item - } - -} diff --git a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift index 2f60a5206..6dd0f1973 100644 --- a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift +++ b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift @@ -13,7 +13,7 @@ import AlamofireImage import Kanna protocol PickServerCellDelegate: AnyObject { - func pickServerCell(_ cell: PickServerCell, expandButtonPressed button: UIButton) +// func pickServerCell(_ cell: PickServerCell, expandButtonPressed button: UIButton) } class PickServerCell: UITableViewCell { @@ -21,20 +21,17 @@ class PickServerCell: UITableViewCell { weak var delegate: PickServerCellDelegate? var disposeBag = Set() - - let expandMode = CurrentValueSubject(.collapse) - - let containerView: UIView = { - let view = UIView() - view.layoutMargins = UIEdgeInsets(top: 16, left: 16, bottom: 10, right: 16) - view.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - view.translatesAutoresizingMaskIntoConstraints = false + + let containerView: UIStackView = { + let view = UIStackView() + view.axis = .vertical + view.spacing = 4 return view }() let domainLabel: UILabel = { let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold), maximumPointSize: 22) + label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold)) label.textColor = Asset.Colors.Label.primary.color label.adjustsFontForContentSizeCategory = true label.translatesAutoresizingMaskIntoConstraints = false @@ -52,7 +49,7 @@ class PickServerCell: UITableViewCell { let descriptionLabel: UILabel = { let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 15, weight: .regular)) + label.font = UIFontMetrics(forTextStyle: .caption1).scaledFont(for: .systemFont(ofSize: 13, weight: .regular)) label.numberOfLines = 0 label.textColor = Asset.Colors.Label.primary.color label.adjustsFontForContentSizeCategory = true @@ -60,112 +57,33 @@ class PickServerCell: UITableViewCell { return label }() - let thumbnailActivityIndicator = UIActivityIndicatorView(style: .medium) - - let thumbnailImageView: UIImageView = { - let imageView = UIImageView() - imageView.clipsToBounds = true - imageView.contentMode = .scaleAspectFill - imageView.translatesAutoresizingMaskIntoConstraints = false - return imageView - }() - let infoStackView: UIStackView = { let stackView = UIStackView() stackView.axis = .horizontal - stackView.alignment = .fill - stackView.distribution = .fillEqually - stackView.translatesAutoresizingMaskIntoConstraints = false + stackView.spacing = 16 return stackView }() - let expandBox: UIView = { - let view = UIView() - view.backgroundColor = .clear - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - let expandButton: UIButton = { - let button = HitTestExpandedButton(type: .custom) - button.setImage(UIImage(systemName: "chevron.down", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13)), for: .normal) - button.setTitle(L10n.Scene.ServerPicker.Button.seeMore, for: .normal) - button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 13, weight: .regular) - button.translatesAutoresizingMaskIntoConstraints = false - button.imageView?.transform = CGAffineTransform(scaleX: -1, y: 1) - button.titleLabel?.transform = CGAffineTransform(scaleX: -1, y: 1) - button.transform = CGAffineTransform(scaleX: -1, y: 1) - return button - }() - let separator: UIView = { let view = UIView() - view.backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color - view.translatesAutoresizingMaskIntoConstraints = false + view.backgroundColor = Asset.Theme.System.separator.color return view }() let langValueLabel: UILabel = { let label = UILabel() label.textColor = Asset.Colors.Label.primary.color - label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 22, weight: .semibold), maximumPointSize: 27) + label.font = UIFontMetrics(forTextStyle: .caption1).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) label.textAlignment = .center label.adjustsFontForContentSizeCategory = true - label.translatesAutoresizingMaskIntoConstraints = false return label }() let usersValueLabel: UILabel = { let label = UILabel() label.textColor = Asset.Colors.Label.primary.color - label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 22, weight: .semibold), maximumPointSize: 27) - label.textAlignment = .center + label.font = UIFontMetrics(forTextStyle: .caption1).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) label.adjustsFontForContentSizeCategory = true - label.translatesAutoresizingMaskIntoConstraints = false - return label - }() - - let categoryValueLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.primary.color - label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 22, weight: .semibold), maximumPointSize: 27) - label.textAlignment = .center - label.adjustsFontForContentSizeCategory = true - label.translatesAutoresizingMaskIntoConstraints = false - return label - }() - - let langTitleLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.primary.color - label.font = UIFontMetrics(forTextStyle: .subheadline).scaledFont(for: .systemFont(ofSize: 11, weight: .regular), maximumPointSize: 16) - label.text = L10n.Scene.ServerPicker.Label.language - label.textAlignment = .center - label.adjustsFontForContentSizeCategory = true - label.translatesAutoresizingMaskIntoConstraints = false - return label - }() - - let usersTitleLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.primary.color - label.font = UIFontMetrics(forTextStyle: .subheadline).scaledFont(for: .systemFont(ofSize: 11, weight: .regular), maximumPointSize: 16) - label.text = L10n.Scene.ServerPicker.Label.users - label.textAlignment = .center - label.adjustsFontForContentSizeCategory = true - label.translatesAutoresizingMaskIntoConstraints = false - return label - }() - - let categoryTitleLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.primary.color - label.font = UIFontMetrics(forTextStyle: .subheadline).scaledFont(for: .systemFont(ofSize: 11, weight: .regular), maximumPointSize: 16) - label.text = L10n.Scene.ServerPicker.Label.category - label.textAlignment = .center - label.adjustsFontForContentSizeCategory = true - label.translatesAutoresizingMaskIntoConstraints = false return label }() @@ -175,9 +93,6 @@ class PickServerCell: UITableViewCell { override func prepareForReuse() { super.prepareForReuse() - thumbnailImageView.isHidden = false - thumbnailImageView.af.cancelImageRequest() - thumbnailActivityIndicator.stopAnimating() disposeBag.removeAll() } @@ -197,172 +112,55 @@ class PickServerCell: UITableViewCell { extension PickServerCell { private func _init() { selectionStyle = .none - backgroundColor = .clear - configureMargin() + backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + + checkbox.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(checkbox) + NSLayoutConstraint.activate([ + checkbox.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor, constant: 1), + checkbox.heightAnchor.constraint(equalToConstant: 32).priority(.required - 1), + checkbox.widthAnchor.constraint(equalToConstant: 32).priority(.required - 1), + ]) + containerView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(containerView) - containerView.addSubview(domainLabel) - containerView.addSubview(checkbox) - containerView.addSubview(descriptionLabel) - containerView.addSubview(separator) - - containerView.addSubview(expandButton) - - // Always add the expandbox which contains elements only visible in expand mode - containerView.addSubview(expandBox) - expandBox.addSubview(thumbnailImageView) - expandBox.addSubview(infoStackView) - expandBox.isHidden = true - - let verticalInfoStackViewLang = makeVerticalInfoStackView(arrangedView: langValueLabel, langTitleLabel) - let verticalInfoStackViewUsers = makeVerticalInfoStackView(arrangedView: usersValueLabel, usersTitleLabel) - let verticalInfoStackViewCategory = makeVerticalInfoStackView(arrangedView: categoryValueLabel, categoryTitleLabel) - infoStackView.addArrangedSubview(verticalInfoStackViewLang) - infoStackView.addArrangedSubview(verticalInfoStackViewUsers) - infoStackView.addArrangedSubview(verticalInfoStackViewCategory) - - let expandButtonTopConstraintInCollapse = expandButton.topAnchor.constraint(equalTo: descriptionLabel.lastBaselineAnchor, constant: 12).priority(.required - 1) - collapseConstraints.append(expandButtonTopConstraintInCollapse) - - let expandButtonTopConstraintInExpand = expandButton.topAnchor.constraint(equalTo: expandBox.bottomAnchor, constant: 8).priority(.defaultHigh) - expandConstraints.append(expandButtonTopConstraintInExpand) - NSLayoutConstraint.activate([ - // Set background view - containerView.topAnchor.constraint(equalTo: contentView.topAnchor), - containerView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), - contentView.layoutMarginsGuide.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), - contentView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), - - // Set bottom separator - separator.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), - containerView.trailingAnchor.constraint(equalTo: separator.trailingAnchor), - containerView.topAnchor.constraint(equalTo: separator.topAnchor), - separator.heightAnchor.constraint(equalToConstant: 1).priority(.defaultHigh), - - domainLabel.topAnchor.constraint(equalTo: containerView.layoutMarginsGuide.topAnchor), - domainLabel.leadingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.leadingAnchor), - - checkbox.widthAnchor.constraint(equalToConstant: 23), - checkbox.heightAnchor.constraint(equalToConstant: 22), - containerView.layoutMarginsGuide.trailingAnchor.constraint(equalTo: checkbox.trailingAnchor), - checkbox.leadingAnchor.constraint(equalTo: domainLabel.trailingAnchor, constant: 16), - checkbox.centerYAnchor.constraint(equalTo: domainLabel.centerYAnchor), - - descriptionLabel.leadingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.leadingAnchor), - descriptionLabel.topAnchor.constraint(equalTo: domainLabel.bottomAnchor, constant: 8), - containerView.layoutMarginsGuide.trailingAnchor.constraint(equalTo: descriptionLabel.trailingAnchor), - - // Set expandBox constraints - expandBox.leadingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.leadingAnchor), - containerView.layoutMarginsGuide.trailingAnchor.constraint(equalTo: expandBox.trailingAnchor), - expandBox.topAnchor.constraint(equalTo: descriptionLabel.bottomAnchor, constant: 8), - expandBox.bottomAnchor.constraint(equalTo: infoStackView.bottomAnchor).priority(.defaultHigh), - - thumbnailImageView.topAnchor.constraint(equalTo: expandBox.topAnchor), - thumbnailImageView.leadingAnchor.constraint(equalTo: expandBox.leadingAnchor), - expandBox.trailingAnchor.constraint(equalTo: thumbnailImageView.trailingAnchor), - thumbnailImageView.heightAnchor.constraint(equalTo: thumbnailImageView.widthAnchor, multiplier: 151.0 / 303.0).priority(.defaultHigh), - - infoStackView.leadingAnchor.constraint(equalTo: expandBox.leadingAnchor), - expandBox.trailingAnchor.constraint(equalTo: infoStackView.trailingAnchor), - infoStackView.topAnchor.constraint(equalTo: thumbnailImageView.bottomAnchor, constant: 16), - - expandButton.leadingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.leadingAnchor), - containerView.layoutMarginsGuide.trailingAnchor.constraint(equalTo: expandButton.trailingAnchor), - containerView.layoutMarginsGuide.bottomAnchor.constraint(equalTo: expandButton.bottomAnchor), + containerView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 11), + containerView.leadingAnchor.constraint(equalTo: checkbox.trailingAnchor, constant: 22), + containerView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor, constant: 11), + checkbox.centerYAnchor.constraint(equalTo: containerView.centerYAnchor), ]) - thumbnailActivityIndicator.translatesAutoresizingMaskIntoConstraints = false - thumbnailImageView.addSubview(thumbnailActivityIndicator) + containerView.addArrangedSubview(domainLabel) + containerView.addArrangedSubview(descriptionLabel) + containerView.setCustomSpacing(6, after: descriptionLabel) + containerView.addArrangedSubview(infoStackView) + + infoStackView.addArrangedSubview(usersValueLabel) + infoStackView.addArrangedSubview(langValueLabel) + infoStackView.addArrangedSubview(UIView()) + + separator.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(separator) NSLayoutConstraint.activate([ - thumbnailActivityIndicator.centerXAnchor.constraint(equalTo: thumbnailImageView.centerXAnchor), - thumbnailActivityIndicator.centerYAnchor.constraint(equalTo: thumbnailImageView.centerYAnchor), + separator.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + contentView.readableContentGuide.trailingAnchor.constraint(equalTo: separator.trailingAnchor), + separator.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + separator.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.required - 1), ]) - thumbnailActivityIndicator.hidesWhenStopped = true - thumbnailActivityIndicator.stopAnimating() - - NSLayoutConstraint.activate(collapseConstraints) - - domainLabel.setContentHuggingPriority(.required - 1, for: .vertical) - domainLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) - descriptionLabel.setContentHuggingPriority(.required - 2, for: .vertical) - descriptionLabel.setContentCompressionResistancePriority(.required - 2, for: .vertical) - - expandButton.addTarget(self, action: #selector(expandButtonDidPressed(_:)), for: .touchUpInside) } - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - configureMargin() - } - - private func makeVerticalInfoStackView(arrangedView: UIView...) -> UIStackView { - let stackView = UIStackView() - stackView.translatesAutoresizingMaskIntoConstraints = false - stackView.axis = .vertical - stackView.alignment = .center - stackView.distribution = .equalCentering - stackView.spacing = 2 - arrangedView.forEach { stackView.addArrangedSubview($0) } - return stackView - } - override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) if selected { checkbox.image = UIImage(systemName: "checkmark.circle.fill") + checkbox.tintColor = Asset.Colors.Label.primary.color } else { checkbox.image = UIImage(systemName: "circle") + checkbox.tintColor = Asset.Colors.Label.secondary.color } } - - @objc - private func expandButtonDidPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.pickServerCell(self, expandButtonPressed: sender) - } + } -extension PickServerCell { - private func configureMargin() { - switch traitCollection.horizontalSizeClass { - case .regular: - let margin = MastodonPickServerViewController.viewEdgeMargin - contentView.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) - default: - contentView.layoutMargins = .zero - } - } -} - -extension PickServerCell { - - enum ExpandMode { - case collapse - case expand - } - - func updateExpandMode(mode: ExpandMode) { - switch mode { - case .collapse: - expandButton.setImage(UIImage(systemName: "chevron.down", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13)), for: .normal) - expandButton.setTitle(L10n.Scene.ServerPicker.Button.seeMore, for: .normal) - expandBox.isHidden = true - expandButton.isSelected = false - NSLayoutConstraint.deactivate(expandConstraints) - NSLayoutConstraint.activate(collapseConstraints) - case .expand: - expandButton.setImage(UIImage(systemName: "chevron.up", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13)), for: .normal) - expandButton.setTitle(L10n.Scene.ServerPicker.Button.seeLess, for: .normal) - expandBox.isHidden = false - expandButton.isSelected = true - NSLayoutConstraint.activate(expandConstraints) - NSLayoutConstraint.deactivate(collapseConstraints) - } - - expandMode.value = mode - } - -} diff --git a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerLoaderTableViewCell.swift b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerLoaderTableViewCell.swift index 945ecac6a..eb0b619df 100644 --- a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerLoaderTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerLoaderTableViewCell.swift @@ -13,15 +13,7 @@ final class PickServerLoaderTableViewCell: TimelineLoaderTableViewCell { let containerView: UIView = { let view = UIView() view.layoutMargins = UIEdgeInsets(top: 16, left: 16, bottom: 10, right: 16) - view.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - let seperator: UIView = { - let view = UIView() - view.backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color - view.translatesAutoresizingMaskIntoConstraints = false + view.backgroundColor = .clear return view }() @@ -30,30 +22,22 @@ final class PickServerLoaderTableViewCell: TimelineLoaderTableViewCell { label.text = L10n.Scene.ServerPicker.EmptyState.noResults label.textColor = Asset.Colors.Label.secondary.color label.textAlignment = .center - label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 14, weight: .semibold), maximumPointSize: 19) + label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 14, weight: .semibold)) return label }() override func _init() { super._init() - - configureMargin() - - contentView.addSubview(containerView) - contentView.addSubview(seperator) + + // Set background view + containerView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerView) NSLayoutConstraint.activate([ - // Set background view containerView.topAnchor.constraint(equalTo: contentView.topAnchor), containerView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), contentView.layoutMarginsGuide.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), - contentView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor, constant: 1), - - // Set bottom separator - seperator.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), - containerView.trailingAnchor.constraint(equalTo: seperator.trailingAnchor), - containerView.topAnchor.constraint(equalTo: seperator.topAnchor), - seperator.heightAnchor.constraint(equalToConstant: 1).priority(.defaultHigh), + contentView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), ]) emptyStatusLabel.translatesAutoresizingMaskIntoConstraints = false @@ -69,24 +53,7 @@ final class PickServerLoaderTableViewCell: TimelineLoaderTableViewCell { activityIndicatorView.isHidden = false startAnimating() } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - configureMargin() - } -} -extension PickServerLoaderTableViewCell { - private func configureMargin() { - switch traitCollection.horizontalSizeClass { - case .regular: - let margin = MastodonPickServerViewController.viewEdgeMargin - contentView.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) - default: - contentView.layoutMargins = .zero - } - } } #if canImport(SwiftUI) && DEBUG diff --git a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerSearchCell.swift b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerSearchCell.swift deleted file mode 100644 index 0a64103d2..000000000 --- a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerSearchCell.swift +++ /dev/null @@ -1,171 +0,0 @@ -// -// PickServerSearchCell.swift -// Mastodon -// -// Created by BradGao on 2021/2/24. -// - -import UIKit - -protocol PickServerSearchCellDelegate: AnyObject { - func pickServerSearchCell(_ cell: PickServerSearchCell, searchTextDidChange searchText: String?) -} - -class PickServerSearchCell: UITableViewCell { - - weak var delegate: PickServerSearchCellDelegate? - - private var bgView: UIView = { - let view = UIView() - view.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - view.translatesAutoresizingMaskIntoConstraints = false - view.layer.maskedCorners = [ - .layerMinXMinYCorner, - .layerMaxXMinYCorner - ] - view.layer.cornerCurve = .continuous - view.layer.cornerRadius = MastodonPickServerAppearance.tableViewCornerRadius - return view - }() - - private var textFieldBgView: UIView = { - let view = UIView() - view.backgroundColor = Asset.Colors.TextField.background.color - view.translatesAutoresizingMaskIntoConstraints = false - view.layer.masksToBounds = true - view.layer.cornerRadius = 6 - view.layer.cornerCurve = .continuous - return view - }() - - let searchTextField: UITextField = { - let textField = UITextField() - textField.translatesAutoresizingMaskIntoConstraints = false - textField.leftView = { - let imageView = UIImageView( - image: UIImage( - systemName: "magnifyingglass", - withConfiguration: UIImage.SymbolConfiguration(pointSize: 15, weight: .regular) - ) - ) - imageView.tintColor = Asset.Colors.Label.secondary.color.withAlphaComponent(0.6) - - let containerView = UIView() - imageView.translatesAutoresizingMaskIntoConstraints = false - containerView.addSubview(imageView) - NSLayoutConstraint.activate([ - imageView.topAnchor.constraint(equalTo: containerView.topAnchor), - imageView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), - imageView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), - ]) - - let paddingView = UIView() - paddingView.translatesAutoresizingMaskIntoConstraints = false - containerView.addSubview(paddingView) - NSLayoutConstraint.activate([ - paddingView.topAnchor.constraint(equalTo: containerView.topAnchor), - paddingView.leadingAnchor.constraint(equalTo: imageView.trailingAnchor), - paddingView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), - paddingView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), - paddingView.widthAnchor.constraint(equalToConstant: 4).priority(.defaultHigh), - ]) - return containerView - }() - textField.leftViewMode = .always - textField.font = .systemFont(ofSize: 15, weight: .regular) - textField.tintColor = Asset.Colors.Label.primary.color - textField.textColor = Asset.Colors.Label.primary.color - textField.adjustsFontForContentSizeCategory = true - textField.attributedPlaceholder = - NSAttributedString(string: L10n.Scene.ServerPicker.Input.placeholder, - attributes: [.font: UIFont.systemFont(ofSize: 15, weight: .regular), - .foregroundColor: Asset.Colors.Label.secondary.color.withAlphaComponent(0.6)]) - textField.clearButtonMode = .whileEditing - textField.autocapitalizationType = .none - textField.autocorrectionType = .no - textField.returnKeyType = .done - textField.keyboardType = .URL - return textField - }() - - override func prepareForReuse() { - super.prepareForReuse() - - delegate = nil - } - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } -} - -extension PickServerSearchCell { - private func _init() { - selectionStyle = .none - backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color - configureMargin() - - searchTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) - searchTextField.delegate = self - - contentView.addSubview(bgView) - contentView.addSubview(textFieldBgView) - contentView.addSubview(searchTextField) - - NSLayoutConstraint.activate([ - bgView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), - bgView.topAnchor.constraint(equalTo: contentView.topAnchor), - bgView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), - bgView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - - textFieldBgView.leadingAnchor.constraint(equalTo: bgView.leadingAnchor, constant: 14), - textFieldBgView.topAnchor.constraint(equalTo: bgView.topAnchor, constant: 12), - bgView.trailingAnchor.constraint(equalTo: textFieldBgView.trailingAnchor, constant: 14), - bgView.bottomAnchor.constraint(equalTo: textFieldBgView.bottomAnchor, constant: 13), - - searchTextField.leadingAnchor.constraint(equalTo: textFieldBgView.leadingAnchor, constant: 11), - searchTextField.topAnchor.constraint(equalTo: textFieldBgView.topAnchor, constant: 4), - textFieldBgView.trailingAnchor.constraint(equalTo: searchTextField.trailingAnchor, constant: 11), - textFieldBgView.bottomAnchor.constraint(equalTo: searchTextField.bottomAnchor, constant: 4), - ]) - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - configureMargin() - } -} - -extension PickServerSearchCell { - private func configureMargin() { - switch traitCollection.horizontalSizeClass { - case .regular: - let margin = MastodonPickServerViewController.viewEdgeMargin - contentView.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) - default: - contentView.layoutMargins = .zero - } - } -} - -extension PickServerSearchCell { - @objc private func textFieldDidChange(_ textField: UITextField) { - delegate?.pickServerSearchCell(self, searchTextDidChange: textField.text) - } -} - -// MARK: - UITextFieldDelegate -extension PickServerSearchCell: UITextFieldDelegate { - - func textFieldShouldReturn(_ textField: UITextField) -> Bool { - textField.resignFirstResponder() - return false - } -} diff --git a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerTitleCell.swift b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerTitleCell.swift index f0d78eb41..161b15d09 100644 --- a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerTitleCell.swift +++ b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerTitleCell.swift @@ -11,17 +11,24 @@ final class PickServerTitleCell: UITableViewCell { let titleLabel: UILabel = { let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 34, weight: .bold)) + label.font = UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 28, weight: .bold)) label.textColor = Asset.Colors.Label.primary.color label.text = L10n.Scene.ServerPicker.title label.adjustsFontForContentSizeCategory = true - label.translatesAutoresizingMaskIntoConstraints = false label.numberOfLines = 0 return label }() - var containerHeightLayoutConstraint: NSLayoutConstraint! - + let subTitleLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) + label.textColor = Asset.Colors.Label.secondary.color + label.text = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual." + label.adjustsFontForContentSizeCategory = true + label.numberOfLines = 0 + return label + }() + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) _init() @@ -37,46 +44,22 @@ extension PickServerTitleCell { private func _init() { selectionStyle = .none - backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color + backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color let container = UIStackView() container.axis = .vertical + container.spacing = 16 container.translatesAutoresizingMaskIntoConstraints = false - containerHeightLayoutConstraint = container.heightAnchor.constraint(equalToConstant: .leastNonzeroMagnitude) contentView.addSubview(container) NSLayoutConstraint.activate([ container.topAnchor.constraint(equalTo: contentView.topAnchor), container.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), container.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), - container.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + contentView.bottomAnchor.constraint(equalTo: container.bottomAnchor, constant: 11), ]) container.addArrangedSubview(titleLabel) - - configureTitleLabelDisplay() + container.addArrangedSubview(subTitleLabel) } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - configureTitleLabelDisplay() - } -} -extension PickServerTitleCell { - private func configureTitleLabelDisplay() { - guard traitCollection.userInterfaceIdiom == .pad else { - titleLabel.isHidden = false - return - } - - switch traitCollection.horizontalSizeClass { - case .regular: - titleLabel.isHidden = true - containerHeightLayoutConstraint.isActive = true - default: - titleLabel.isHidden = false - containerHeightLayoutConstraint.isActive = false - } - } } diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift index 6565fbcfa..f3bc39942 100644 --- a/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift @@ -10,24 +10,24 @@ import MastodonSDK class PickServerCategoryView: UIView { - var bgShadowView: UIView = { + let highlightedIndicatorView: UIView = { let view = UIView() - view.translatesAutoresizingMaskIntoConstraints = false + view.backgroundColor = Asset.Colors.Label.primary.color return view }() - - var bgView: UIView = { - let view = UIView() - view.translatesAutoresizingMaskIntoConstraints = false - view.layer.masksToBounds = true - view.layer.cornerRadius = 30 - return view - }() - - var titleLabel: UILabel = { + + let emojiLabel: UILabel = { let label = UILabel() label.textAlignment = .center - label.translatesAutoresizingMaskIntoConstraints = false + label.font = .systemFont(ofSize: 34, weight: .regular) + return label + }() + + let titleLabel: UILabel = { + let label = UILabel() + label.textAlignment = .center + label.font = .systemFont(ofSize: 17, weight: .semibold) + label.textColor = Asset.Colors.Label.secondary.color return label }() @@ -45,20 +45,27 @@ class PickServerCategoryView: UIView { extension PickServerCategoryView { private func configure() { - addSubview(bgView) - addSubview(titleLabel) - - bgView.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - + let container = UIStackView() + container.axis = .vertical + container.distribution = .fillProportionally + + container.translatesAutoresizingMaskIntoConstraints = false + addSubview(container) NSLayoutConstraint.activate([ - bgView.leadingAnchor.constraint(equalTo: self.leadingAnchor), - bgView.trailingAnchor.constraint(equalTo: self.trailingAnchor), - bgView.topAnchor.constraint(equalTo: self.topAnchor), - bgView.bottomAnchor.constraint(equalTo: self.bottomAnchor), - - titleLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor), - titleLabel.centerYAnchor.constraint(equalTo: self.centerYAnchor), + container.topAnchor.constraint(equalTo: topAnchor), + container.leadingAnchor.constraint(equalTo: leadingAnchor), + container.trailingAnchor.constraint(equalTo: trailingAnchor), + container.bottomAnchor.constraint(equalTo: bottomAnchor), ]) + + container.addArrangedSubview(emojiLabel) + container.addArrangedSubview(titleLabel) + highlightedIndicatorView.translatesAutoresizingMaskIntoConstraints = false + container.addArrangedSubview(highlightedIndicatorView) + NSLayoutConstraint.activate([ + highlightedIndicatorView.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: self) * 3).priority(.required - 1), + ]) + titleLabel.setContentHuggingPriority(.required - 1, for: .vertical) } } diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerEmptyStateView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerEmptyStateView.swift index 1d2c17c76..c5682143c 100644 --- a/Mastodon/Scene/Onboarding/PickServer/View/PickServerEmptyStateView.swift +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerEmptyStateView.swift @@ -44,13 +44,7 @@ final class PickServerEmptyStateView: UIView { extension PickServerEmptyStateView { private func _init() { - backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - layer.maskedCorners = [ - .layerMinXMaxYCorner, - .layerMaxXMaxYCorner - ] - layer.cornerCurve = .continuous - layer.cornerRadius = MastodonPickServerAppearance.tableViewCornerRadius + backgroundColor = .clear let topPaddingView = UIView() topPaddingView.translatesAutoresizingMaskIntoConstraints = false @@ -101,7 +95,7 @@ extension PickServerEmptyStateView { ]) NSLayoutConstraint.activate([ - bottomPaddingView.heightAnchor.constraint(equalTo: topPaddingView.heightAnchor, multiplier: 1.0).priority(.defaultHigh), + topPaddingView.heightAnchor.constraint(equalTo: bottomPaddingView.heightAnchor, multiplier: 2.5).priority(.defaultHigh), // magic scale ]) activityIndicatorView.hidesWhenStopped = true diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift new file mode 100644 index 000000000..4afa31aad --- /dev/null +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift @@ -0,0 +1,204 @@ +// +// PickServerServerSectionTableHeaderView.swift +// Mastodon +// +// Created by MainasuK on 2022-1-4. +// + +import os.log +import UIKit +import Tabman + +protocol PickServerServerSectionTableHeaderViewDelegate: AnyObject { + func pickServerServerSectionTableHeaderView(_ headerView: PickServerServerSectionTableHeaderView, collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) + func pickServerServerSectionTableHeaderView(_ headerView: PickServerServerSectionTableHeaderView, searchTextDidChange searchText: String?) +} + +final class PickServerServerSectionTableHeaderView: UIView { + + static let collectionViewHeight: CGFloat = 88 + static let searchTextFieldHeight: CGFloat = 38 + static let spacing: CGFloat = 11 + + static let height: CGFloat = collectionViewHeight + spacing + searchTextFieldHeight + spacing + + weak var delegate: PickServerServerSectionTableHeaderViewDelegate? + + var diffableDataSource: UICollectionViewDiffableDataSource? + + static func createCollectionViewLayout() -> UICollectionViewLayout { + let itemSize = NSCollectionLayoutSize(widthDimension: .estimated(88), heightDimension: .absolute(PickServerServerSectionTableHeaderView.collectionViewHeight)) + let item = NSCollectionLayoutItem(layoutSize: itemSize) + + let groupSize = NSCollectionLayoutSize(widthDimension: itemSize.widthDimension, heightDimension: itemSize.heightDimension) + let group = NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitems: [item]) + + let section = NSCollectionLayoutSection(group: group) + section.orthogonalScrollingBehavior = .continuous + section.contentInsetsReference = .readableContent + section.interGroupSpacing = 16 + + return UICollectionViewCompositionalLayout(section: section) + } + + let collectionView: UICollectionView = { + let collectionViewLayout = PickServerServerSectionTableHeaderView.createCollectionViewLayout() + let view = ControlContainableCollectionView( + frame: CGRect(origin: .zero, size: CGSize(width: 100, height: PickServerServerSectionTableHeaderView.collectionViewHeight)), + collectionViewLayout: collectionViewLayout + ) + view.register(PickServerCategoryCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: PickServerCategoryCollectionViewCell.self)) + view.backgroundColor = .clear + view.alwaysBounceVertical = false + view.showsHorizontalScrollIndicator = false + view.showsVerticalScrollIndicator = false + view.layer.masksToBounds = false + return view + }() + + let searchTextField: UITextField = { + let textField = UITextField() + textField.backgroundColor = Asset.Scene.Onboarding.searchBarBackground.color + textField.leftView = { + let imageView = UIImageView( + image: UIImage( + systemName: "magnifyingglass", + withConfiguration: UIImage.SymbolConfiguration(pointSize: 15, weight: .regular) + ) + ) + imageView.tintColor = Asset.Colors.Label.secondary.color.withAlphaComponent(0.6) + + let containerView = UIView() + imageView.translatesAutoresizingMaskIntoConstraints = false + containerView.addSubview(imageView) + NSLayoutConstraint.activate([ + imageView.topAnchor.constraint(equalTo: containerView.topAnchor), + imageView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor, constant: 8), + imageView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), + ]) + + let paddingView = UIView() + paddingView.translatesAutoresizingMaskIntoConstraints = false + containerView.addSubview(paddingView) + NSLayoutConstraint.activate([ + paddingView.topAnchor.constraint(equalTo: containerView.topAnchor), + paddingView.leadingAnchor.constraint(equalTo: imageView.trailingAnchor), + paddingView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), + paddingView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), + paddingView.widthAnchor.constraint(equalToConstant: 4).priority(.defaultHigh), + ]) + return containerView + }() + textField.leftViewMode = .always + textField.font = .systemFont(ofSize: 15, weight: .regular) + textField.tintColor = Asset.Colors.Label.primary.color + textField.textColor = Asset.Colors.Label.primary.color + textField.adjustsFontForContentSizeCategory = true + textField.attributedPlaceholder = + NSAttributedString( + string: L10n.Scene.ServerPicker.Input.placeholder, + attributes: [.font: UIFont.systemFont(ofSize: 15, weight: .regular), + .foregroundColor: Asset.Colors.Label.secondary.color.withAlphaComponent(0.6)]) + textField.clearButtonMode = .whileEditing + textField.autocapitalizationType = .none + textField.autocorrectionType = .no + textField.returnKeyType = .done + textField.keyboardType = .URL + textField.borderStyle = .none + + textField.layer.masksToBounds = true + textField.layer.cornerRadius = 10 + textField.layer.cornerCurve = .continuous + + return textField + }() + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + + override func layoutSubviews() { + super.layoutSubviews() + + collectionView.invalidateIntrinsicContentSize() + } + +} + +extension PickServerServerSectionTableHeaderView { + private func _init() { + preservesSuperviewLayoutMargins = true + backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + + collectionView.translatesAutoresizingMaskIntoConstraints = false + collectionView.preservesSuperviewLayoutMargins = true + addSubview(collectionView) + NSLayoutConstraint.activate([ + collectionView.topAnchor.constraint(equalTo: topAnchor), + collectionView.leadingAnchor.constraint(equalTo: leadingAnchor), + collectionView.trailingAnchor.constraint(equalTo: trailingAnchor), + collectionView.heightAnchor.constraint(equalToConstant: PickServerServerSectionTableHeaderView.collectionViewHeight).priority(.required - 1), + ]) + + searchTextField.translatesAutoresizingMaskIntoConstraints = false + addSubview(searchTextField) + NSLayoutConstraint.activate([ + searchTextField.topAnchor.constraint(equalTo: collectionView.bottomAnchor, constant: PickServerServerSectionTableHeaderView.spacing), + searchTextField.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor), + searchTextField.trailingAnchor.constraint(equalTo: readableContentGuide.trailingAnchor), + bottomAnchor.constraint(equalTo: searchTextField.bottomAnchor, constant: PickServerServerSectionTableHeaderView.spacing), + searchTextField.heightAnchor.constraint(equalToConstant: PickServerServerSectionTableHeaderView.searchTextFieldHeight).priority(.required - 1), + ]) + + collectionView.delegate = self + searchTextField.delegate = self + searchTextField.addTarget(self, action: #selector(PickServerServerSectionTableHeaderView.textFieldDidChange(_:)), for: .editingChanged) + } +} + +extension PickServerServerSectionTableHeaderView { + @objc private func textFieldDidChange(_ textField: UITextField) { + delegate?.pickServerServerSectionTableHeaderView(self, searchTextDidChange: textField.text) + } +} + +// MARK: - UICollectionViewDelegate +extension PickServerServerSectionTableHeaderView: UICollectionViewDelegate { + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription) + collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally) + delegate?.pickServerServerSectionTableHeaderView(self, collectionView: collectionView, didSelectItemAt: indexPath) + } + +} + +extension PickServerServerSectionTableHeaderView { + + override func accessibilityElementCount() -> Int { + guard let diffableDataSource = diffableDataSource else { return 0 } + return diffableDataSource.snapshot().itemIdentifiers.count + } + + override func accessibilityElement(at index: Int) -> Any? { + guard let item = collectionView.cellForItem(at: IndexPath(item: index, section: 0)) else { return nil } + return item + } + +} + +// MARK: - UITextFieldDelegate +extension PickServerServerSectionTableHeaderView: UITextFieldDelegate { + + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + textField.resignFirstResponder() + return false + } + +} diff --git a/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift new file mode 100644 index 000000000..4b5bb124f --- /dev/null +++ b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift @@ -0,0 +1,69 @@ +// +// NavigationActionView.swift +// Mastodon +// +// Created by MainasuK on 2021-12-31. +// + +import UIKit + +final class NavigationActionView: UIView { + + static let buttonHeight: CGFloat = 50 + + let buttonContainer: UIStackView = { + let stackView = UIStackView() + stackView.axis = .horizontal + stackView.spacing = 18 + return stackView + }() + + let backButton: PrimaryActionButton = { + let button = PrimaryActionButton() + button.action = .back + button.setTitle(L10n.Common.Controls.Actions.back, for: .normal) + return button + }() + + let nextButton: PrimaryActionButton = { + let button = PrimaryActionButton() + button.action = .next + button.setTitle(L10n.Common.Controls.Actions.next, for: .normal) + return button + }() + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension NavigationActionView { + private func _init() { + buttonContainer.translatesAutoresizingMaskIntoConstraints = false + buttonContainer.preservesSuperviewLayoutMargins = true + addSubview(buttonContainer) + NSLayoutConstraint.activate([ + buttonContainer.topAnchor.constraint(equalTo: topAnchor, constant: 16), + buttonContainer.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor), + buttonContainer.trailingAnchor.constraint(equalTo: readableContentGuide.trailingAnchor), + safeAreaLayoutGuide.bottomAnchor.constraint(equalTo: buttonContainer.bottomAnchor, constant: 8), + ]) + + backButton.translatesAutoresizingMaskIntoConstraints = false + buttonContainer.addArrangedSubview(backButton) + nextButton.translatesAutoresizingMaskIntoConstraints = false + buttonContainer.addArrangedSubview(nextButton) + NSLayoutConstraint.activate([ + backButton.heightAnchor.constraint(equalToConstant: NavigationActionView.buttonHeight).priority(.required - 1), + nextButton.heightAnchor.constraint(equalToConstant: NavigationActionView.buttonHeight).priority(.required - 1), + nextButton.widthAnchor.constraint(equalTo: backButton.widthAnchor, multiplier: 2).priority(.required - 1), + ]) + } +} diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift b/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift index 07e58b58a..537102dc9 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift @@ -34,7 +34,7 @@ extension OnboardingNavigationController { super.traitCollectionDidChange(previousTraitCollection) } - + } extension OnboardingNavigationController { @@ -47,4 +47,5 @@ extension OnboardingNavigationController { gradientBorderView.isHidden = false } } + } diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift index 2405f2a81..c4fae4dd7 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift @@ -22,7 +22,7 @@ extension OnboardingViewControllerAppearance { static var viewBottomPaddingHeightExtend: CGFloat { return 22 } func setupOnboardingAppearance() { - view.backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color + view.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color setupNavigationBarAppearance() @@ -39,31 +39,22 @@ extension OnboardingViewControllerAppearance { // use TransparentBackground so view push / dismiss will be more visual nature // please add opaque background for status bar manually if needs - switch traitCollection.userInterfaceIdiom { - case .pad: - if traitCollection.horizontalSizeClass == .regular { - // do nothing - } else { - fallthrough - } - default: - let barAppearance = UINavigationBarAppearance() - barAppearance.configureWithTransparentBackground() - navigationItem.standardAppearance = barAppearance - navigationItem.compactAppearance = barAppearance - navigationItem.scrollEdgeAppearance = barAppearance - if #available(iOS 15.0, *) { - navigationItem.compactScrollEdgeAppearance = barAppearance - } else { - // Fallback on earlier versions - } + let barAppearance = UINavigationBarAppearance() + barAppearance.configureWithTransparentBackground() + navigationItem.standardAppearance = barAppearance + navigationItem.compactAppearance = barAppearance + navigationItem.scrollEdgeAppearance = barAppearance + if #available(iOS 15.0, *) { + navigationItem.compactScrollEdgeAppearance = barAppearance + } else { + // Fallback on earlier versions } } func setupNavigationBarBackgroundView() { let navigationBarBackgroundView: UIView = { let view = UIView() - view.backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color + view.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color return view }() diff --git a/Mastodon/Scene/Onboarding/Welcome/View/GradientBorderView.swift b/Mastodon/Scene/Onboarding/Welcome/View/GradientBorderView.swift index c9a4a0d7e..68e7968bf 100644 --- a/Mastodon/Scene/Onboarding/Welcome/View/GradientBorderView.swift +++ b/Mastodon/Scene/Onboarding/Welcome/View/GradientBorderView.swift @@ -12,6 +12,10 @@ final class GradientBorderView: UIView { let gradientLayer = CAGradientLayer() let maskLayer = CAShapeLayer() + var cornerRadius: CGFloat = 9 { + didSet { setNeedsLayout() } + } + override init(frame: CGRect) { super.init(frame: frame) _init() @@ -48,7 +52,7 @@ extension GradientBorderView { super.layoutSubviews() let bezierPath = UIBezierPath(rect: bounds) - bezierPath.append(UIBezierPath(roundedRect: bounds.insetBy(dx: 3, dy: 3), cornerRadius: 10)) + bezierPath.append(UIBezierPath(roundedRect: bounds.insetBy(dx: 3, dy: 3), cornerRadius: cornerRadius)) maskLayer.fillRule = .evenOdd maskLayer.path = bezierPath.cgPath diff --git a/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift b/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift index 326dfa122..3bda63dec 100644 --- a/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift +++ b/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift @@ -21,6 +21,12 @@ class PrimaryActionButton: UIButton { private var originalButtonTitle: String? + var action: Action = .next { + didSet { + setupAppearance(action: action) + } + } + var adjustsBackgroundImageWhenUserInterfaceStyleChanges = true override init(frame: CGRect) { @@ -35,26 +41,44 @@ class PrimaryActionButton: UIButton { } +extension PrimaryActionButton { + + public enum Action { + case back + case next + } + +} + extension PrimaryActionButton { private func _init() { titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold)) setTitleColor(.white, for: .normal) - setupBackgroundAppearance() + setupAppearance(action: action) applyCornerRadius(radius: 10) } - func setupBackgroundAppearance() { - setBackgroundImage(UIImage.placeholder(color: Asset.Colors.brandBlue.color), for: .normal) - setBackgroundImage(UIImage.placeholder(color: Asset.Colors.brandBlueDarken20.color), for: .highlighted) - setBackgroundImage(UIImage.placeholder(color: Asset.Colors.disabled.color), for: .disabled) + func setupAppearance(action: Action) { + switch action { + case .back: + setTitleColor(Asset.Colors.Label.primary.color, for: .normal) + setBackgroundImage(UIImage.placeholder(color: Asset.Scene.Onboarding.navigationBackButtonBackground.color), for: .normal) + setBackgroundImage(UIImage.placeholder(color: Asset.Scene.Onboarding.navigationBackButtonBackgroundHighlighted.color), for: .highlighted) + setBackgroundImage(UIImage.placeholder(color: Asset.Colors.disabled.color), for: .disabled) + case .next: + setTitleColor(Asset.Colors.Label.primaryReverse.color, for: .normal) + setBackgroundImage(UIImage.placeholder(color: Asset.Scene.Onboarding.navigationNextButtonBackground.color), for: .normal) + setBackgroundImage(UIImage.placeholder(color: Asset.Scene.Onboarding.navigationNextButtonBackgroundHighlighted.color), for: .highlighted) + setBackgroundImage(UIImage.placeholder(color: Asset.Colors.disabled.color), for: .disabled) + } } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) if adjustsBackgroundImageWhenUserInterfaceStyleChanges { - setupBackgroundAppearance() + setupAppearance(action: action) } } diff --git a/Mastodon/Scene/Share/View/Container/TouchBlockingView.swift b/Mastodon/Scene/Share/View/Container/TouchBlockingView.swift index b86137f1c..5a1518122 100644 --- a/Mastodon/Scene/Share/View/Container/TouchBlockingView.swift +++ b/Mastodon/Scene/Share/View/Container/TouchBlockingView.swift @@ -7,7 +7,7 @@ import UIKit -final class TouchBlockingView: UIView { +class TouchBlockingView: UIView { override init(frame: CGRect) { super.init(frame: frame) diff --git a/Mastodon/Scene/Share/View/Content/TimelineHeaderView.swift b/Mastodon/Scene/Share/View/Content/TimelineHeaderView.swift index 2948af4cf..50518e59e 100644 --- a/Mastodon/Scene/Share/View/Content/TimelineHeaderView.swift +++ b/Mastodon/Scene/Share/View/Content/TimelineHeaderView.swift @@ -126,10 +126,10 @@ struct TimelineHeaderView_Previews: PreviewProvider { static var previews: some View { Group { UIViewPreview(width: 375) { - let headerView = TimelineHeaderView() - headerView.iconImageView.image = Item.EmptyStateHeaderAttribute.Reason.blocking(name: nil).iconImage - headerView.messageLabel.text = Item.EmptyStateHeaderAttribute.Reason.blocking(name: nil).message - return headerView + let serverSectionHeaderView = TimelineHeaderView() + serverSectionHeaderView.iconImageView.image = Item.EmptyStateHeaderAttribute.Reason.blocking(name: nil).iconImage + serverSectionHeaderView.messageLabel.text = Item.EmptyStateHeaderAttribute.Reason.blocking(name: nil).message + return serverSectionHeaderView } .previewLayout(.fixed(width: 375, height: 400)) } From d36e60e2a4c78abdc93aa731980a147bdf8b850a Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 4 Jan 2022 18:30:59 +0800 Subject: [PATCH 069/374] chore: fix CI build failure issue --- .github/scripts/build.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/scripts/build.sh b/.github/scripts/build.sh index 76e65f49f..f5894901a 100755 --- a/.github/scripts/build.sh +++ b/.github/scripts/build.sh @@ -7,7 +7,6 @@ set -eo pipefail xcodebuild -workspace Mastodon.xcworkspace \ -scheme Mastodon \ - -disableAutomaticPackageResolution \ -destination "platform=iOS Simulator,name=iPhone SE (2nd generation)" \ clean \ - build | xcpretty \ No newline at end of file + build | xcpretty From c9417a2e172b19ba9e2d7a44757ac5a8da13e998 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 4 Jan 2022 18:44:42 +0800 Subject: [PATCH 070/374] fix: category initial selection missing issue --- .../PickServer/MastodonPickServerViewController.swift | 1 - .../PickServer/MastodonPickServerViewModel+Diffable.swift | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift index 1fbf204f1..54e7bc6de 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift @@ -110,7 +110,6 @@ extension MastodonPickServerViewController { .observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in guard let self = self else { return } let inset = navigationActionView.frame.height - print("*** \(inset) ***") self.tableView.contentInset.bottom = inset } .store(in: &observations) diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel+Diffable.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel+Diffable.swift index 152786722..35de40b8f 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel+Diffable.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewModel+Diffable.swift @@ -25,7 +25,11 @@ extension MastodonPickServerViewModel { sectionHeaderSnapshot.appendSections([.main]) sectionHeaderSnapshot.appendItems(categoryPickerItems, toSection: .main) serverSectionHeaderView.delegate = pickServerServerSectionTableHeaderViewDelegate - serverSectionHeaderView.diffableDataSource?.applySnapshot(sectionHeaderSnapshot, animated: false) + serverSectionHeaderView.diffableDataSource?.applySnapshot(sectionHeaderSnapshot, animated: false) { [weak self] in + guard let self = self else { return } + guard let indexPath = self.serverSectionHeaderView.diffableDataSource?.indexPath(for: .all) else { return } + self.serverSectionHeaderView.collectionView.selectItem(at: indexPath, animated: false, scrollPosition: .centeredHorizontally) + } // set tableView diffableDataSource = PickServerSection.tableViewDiffableDataSource( From d08cb9ece949eab27fccd82981b710d047257e33 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 4 Jan 2022 19:28:46 +0800 Subject: [PATCH 071/374] chore: update version to .1.3.0 (89) --- AppShared/Info.plist | 4 +- CoreDataStack/Info.plist | 4 +- CoreDataStackTests/Info.plist | 4 +- Mastodon.xcodeproj/project.pbxproj | 32 ++-- .../xcschemes/xcschememanagement.plist | 8 +- .../xcshareddata/swiftpm/Package.resolved | 162 ------------------ Mastodon/Info.plist | 4 +- MastodonIntent/Info.plist | 4 +- MastodonTests/Info.plist | 4 +- MastodonUITests/Info.plist | 4 +- NotificationService/Info.plist | 4 +- ShareActionExtension/Info.plist | 4 +- 12 files changed, 38 insertions(+), 200 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 9fe845c60..9c87d9453 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleVersion - 88 + 89 diff --git a/CoreDataStack/Info.plist b/CoreDataStack/Info.plist index 9fe845c60..9c87d9453 100644 --- a/CoreDataStack/Info.plist +++ b/CoreDataStack/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleVersion - 88 + 89 diff --git a/CoreDataStackTests/Info.plist b/CoreDataStackTests/Info.plist index 9fe845c60..9c87d9453 100644 --- a/CoreDataStackTests/Info.plist +++ b/CoreDataStackTests/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleVersion - 88 + 89 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 79bd67778..e707ae0fd 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4847,7 +4847,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4876,7 +4876,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4984,11 +4984,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 88; + DYLIB_CURRENT_VERSION = 89; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5015,11 +5015,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 88; + DYLIB_CURRENT_VERSION = 89; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5044,11 +5044,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 88; + DYLIB_CURRENT_VERSION = 89; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = CoreDataStack/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5074,11 +5074,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 88; + DYLIB_CURRENT_VERSION = 89; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = CoreDataStack/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5141,7 +5141,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5166,7 +5166,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5191,7 +5191,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5216,7 +5216,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5241,7 +5241,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5265,7 +5265,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 88; + CURRENT_PROJECT_VERSION = 89; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 8bd09ebc0..601fc88a7 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,12 +7,12 @@ AppShared.xcscheme_^#shared#^_ orderHint - 18 + 24 CoreDataStack.xcscheme_^#shared#^_ orderHint - 19 + 27 Mastodon - ASDK.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 21 + 26 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 20 + 25 SuppressBuildableAutocreation diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index d933b5cd5..3f83af789 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,60 +1,6 @@ { "object": { "pins": [ - { - "package": "Alamofire", - "repositoryURL": "https://github.com/Alamofire/Alamofire.git", - "state": { - "branch": null, - "revision": "d120af1e8638c7da36c8481fd61a66c0c08dc4fc", - "version": "5.4.4" - } - }, - { - "package": "AlamofireImage", - "repositoryURL": "https://github.com/Alamofire/AlamofireImage.git", - "state": { - "branch": null, - "revision": "98cbb00ce0ec5fc8e52a5b50a6bfc08d3e5aee10", - "version": "4.2.0" - } - }, - { - "package": "AlamofireNetworkActivityIndicator", - "repositoryURL": "https://github.com/Alamofire/AlamofireNetworkActivityIndicator", - "state": { - "branch": null, - "revision": "392bed083e8d193aca16bfa684ee24e4bcff0510", - "version": "3.1.0" - } - }, - { - "package": "CommonOSLog", - "repositoryURL": "https://github.com/MainasuK/CommonOSLog", - "state": { - "branch": null, - "revision": "c121624a30698e9886efe38aebb36ff51c01b6c2", - "version": "0.1.1" - } - }, - { - "package": "DiffableDataSources", - "repositoryURL": "https://github.com/MainasuK/DiffableDataSources.git", - "state": { - "branch": "feature/async-display-table", - "revision": "73393a97690959d24387c95594c045c62d9c47cf", - "version": null - } - }, - { - "package": "DifferenceKit", - "repositoryURL": "https://github.com/ra1028/DifferenceKit.git", - "state": { - "branch": null, - "revision": "62745d7780deef4a023a792a1f8f763ec7bf9705", - "version": "1.2.0" - } - }, { "package": "FLAnimatedImage", "repositoryURL": "https://github.com/Flipboard/FLAnimatedImage", @@ -64,42 +10,6 @@ "version": "1.0.16" } }, - { - "package": "FPSIndicator", - "repositoryURL": "https://github.com/MainasuK/FPSIndicator.git", - "state": { - "branch": null, - "revision": "e4a5067ccd5293b024c767f09e51056afd4a4796", - "version": "1.1.0" - } - }, - { - "package": "Fuzi", - "repositoryURL": "https://github.com/cezheng/Fuzi.git", - "state": { - "branch": null, - "revision": "f08c8323da21e985f3772610753bcfc652c2103f", - "version": "3.1.3" - } - }, - { - "package": "KeychainAccess", - "repositoryURL": "https://github.com/kishikawakatsumi/KeychainAccess.git", - "state": { - "branch": null, - "revision": "84e546727d66f1adc5439debad16270d0fdd04e7", - "version": "4.2.2" - } - }, - { - "package": "MetaTextKit", - "repositoryURL": "https://github.com/TwidereProject/MetaTextKit.git", - "state": { - "branch": null, - "revision": "7af4182f64329440a4656f2cba307cb5848e496a", - "version": "2.1.2" - } - }, { "package": "Nuke", "repositoryURL": "https://github.com/kean/Nuke.git", @@ -118,42 +28,6 @@ "version": "8.0.0" } }, - { - "package": "Pageboy", - "repositoryURL": "https://github.com/uias/Pageboy", - "state": { - "branch": null, - "revision": "34ecb6e7c4e0e07494960ab2f7cc9a02293915a6", - "version": "3.6.2" - } - }, - { - "package": "PanModal", - "repositoryURL": "https://github.com/slackhq/PanModal.git", - "state": { - "branch": null, - "revision": "b012aecb6b67a8e46369227f893c12544846613f", - "version": "1.2.7" - } - }, - { - "package": "SDWebImage", - "repositoryURL": "https://github.com/SDWebImage/SDWebImage.git", - "state": { - "branch": null, - "revision": "a72df4849408da7e5d3c1b586797b7c601c41d1b", - "version": "5.12.1" - } - }, - { - "package": "swift-collections", - "repositoryURL": "https://github.com/apple/swift-collections.git", - "state": { - "branch": null, - "revision": "9d8719c8bebdc79740b6969c912ac706eb721d7a", - "version": "0.0.7" - } - }, { "package": "swift-nio", "repositoryURL": "https://github.com/apple/swift-nio.git", @@ -189,42 +63,6 @@ "revision": "b3dcd7dbd0d488e1a7077cb33b00f2083e382f07", "version": "5.0.1" } - }, - { - "package": "Tabman", - "repositoryURL": "https://github.com/uias/Tabman", - "state": { - "branch": null, - "revision": "f43489cdd743ba7ad86a422ebb5fcbf34e333df4", - "version": "2.11.1" - } - }, - { - "package": "ThirdPartyMailer", - "repositoryURL": "https://github.com/vtourraine/ThirdPartyMailer.git", - "state": { - "branch": null, - "revision": "779da6ce0793b461ccbbac2804755c1e29b6fa63", - "version": "1.8.0" - } - }, - { - "package": "TOCropViewController", - "repositoryURL": "https://github.com/TimOliver/TOCropViewController.git", - "state": { - "branch": null, - "revision": "dad97167bf1be16aeecd109130900995dd01c515", - "version": "2.6.0" - } - }, - { - "package": "UITextView+Placeholder", - "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder", - "state": { - "branch": null, - "revision": "20f513ded04a040cdf5467f0891849b1763ede3b", - "version": "1.4.1" - } } ] }, diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index affa5b059..e96be0cd2 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleURLTypes @@ -30,7 +30,7 @@ CFBundleVersion - 88 + 89 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 8ac3d165b..e9a180d7e 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleVersion - 88 + 89 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 9fe845c60..9c87d9453 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleVersion - 88 + 89 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 9fe845c60..9c87d9453 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -15,8 +15,8 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleVersion - 88 + 89 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 8e14f3a2a..fe988a2f5 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleVersion - 88 + 89 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 1b3025474..a6178ef85 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.2.0 + 1.3.0 CFBundleVersion - 88 + 89 NSExtension NSExtensionAttributes From a7a36d503ab916d9f2be155b300d269ace8b2b5e Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 5 Jan 2022 15:11:35 +0800 Subject: [PATCH 072/374] feat: update server rule scene UI --- Mastodon.xcodeproj/project.pbxproj | 146 +++++--- .../xcshareddata/swiftpm/Package.resolved | 153 +++++++++ .../SelectedAccountItem.swift | 0 .../SelectedAccountSection.swift | 0 .../{Item => Compose}/AutoCompleteItem.swift | 0 .../Compose/AutoCompleteSection.swift | 0 .../ComposeStatusAttachmentItem.swift | 0 .../ComposeStatusAttachmentSection.swift | 0 .../{Item => Compose}/ComposeStatusItem.swift | 0 .../ComposeStatusPollItem.swift | 0 .../Compose/ComposeStatusPollSection.swift | 0 .../Compose/ComposeStatusSection.swift | 0 .../CustomEmojiPickerItem.swift | 0 .../Compose/CustomEmojiPickerSection.swift | 0 .../NotificationItem.swift | 0 .../NotificationSection.swift | 0 .../CategoryPickerItem.swift | 0 .../Onboarding/CategoryPickerSection.swift | 0 .../{Item => Onboarding}/PickServerItem.swift | 0 .../Onboarding/PickServerSection.swift | 2 +- .../Diffiable/Onboarding/ServerRuleItem.swift | 21 ++ .../Onboarding/ServerRuleSection.swift | 34 ++ .../Diffiable/{Item => Poll}/PollItem.swift | 0 .../Status => Poll}/PollSection.swift | 0 .../{Item => Profile}/ProfileFieldItem.swift | 0 .../ProfileFieldSection.swift | 0 .../Search/RecommendAccountSection.swift | 0 .../Search/RecommendHashTagSection.swift | 0 .../{Item => Search}/SearchHistoryItem.swift | 0 .../Search/SearchHistorySection.swift | 0 .../{Item => Search}/SearchResultItem.swift | 0 .../Search/SearchResultSection.swift | 0 .../{Item => Settings}/SettingsItem.swift | 0 .../SettingsSection.swift | 0 .../Diffiable/{Item => Status}/Item.swift | 0 .../{Section => }/Status/ReportSection.swift | 0 .../{Section => }/Status/StatusSection.swift | 0 .../Diffiable/{Item => User}/UserItem.swift | 0 .../{Section => User}/UserSection.swift | 0 .../MastodonPickServerViewController.swift | 8 +- .../MastodonServerRulesViewController.swift | 312 +++++------------- ...astodonServerRulesViewModel+Diffable.swift | 26 ++ .../MastodonServerRulesViewModel.swift | 3 + .../ServerRulesTableViewCell.swift | 83 +++++ .../Share/NavigationActionView.swift | 38 ++- .../OnboardingHeadlineTableViewCell.swift} | 14 +- .../OnboardingViewControllerAppearance.swift | 16 + .../Welcome/WelcomeViewController.swift | 23 +- .../View/Button/PrimaryActionButton.swift | 11 +- .../Sources/MastodonExtension}/CALayer.swift | 7 +- .../Sources/MastodonExtension/UIImage.swift | 20 +- .../Entity/Mastodon+Entity+Instance.swift | 2 +- .../Container/ShadowBackgroundContainer.swift | 48 +++ 53 files changed, 652 insertions(+), 315 deletions(-) rename Mastodon/Diffiable/{Item => Account}/SelectedAccountItem.swift (100%) rename Mastodon/Diffiable/{Section => Account}/SelectedAccountSection.swift (100%) rename Mastodon/Diffiable/{Item => Compose}/AutoCompleteItem.swift (100%) rename Mastodon/Diffiable/{Section => }/Compose/AutoCompleteSection.swift (100%) rename Mastodon/Diffiable/{Item => Compose}/ComposeStatusAttachmentItem.swift (100%) rename Mastodon/Diffiable/{Section => }/Compose/ComposeStatusAttachmentSection.swift (100%) rename Mastodon/Diffiable/{Item => Compose}/ComposeStatusItem.swift (100%) rename Mastodon/Diffiable/{Item => Compose}/ComposeStatusPollItem.swift (100%) rename Mastodon/Diffiable/{Section => }/Compose/ComposeStatusPollSection.swift (100%) rename Mastodon/Diffiable/{Section => }/Compose/ComposeStatusSection.swift (100%) rename Mastodon/Diffiable/{Item => Compose}/CustomEmojiPickerItem.swift (100%) rename Mastodon/Diffiable/{Section => }/Compose/CustomEmojiPickerSection.swift (100%) rename Mastodon/Diffiable/{Item => Notification}/NotificationItem.swift (100%) rename Mastodon/Diffiable/{Section/Status => Notification}/NotificationSection.swift (100%) rename Mastodon/Diffiable/{Item => Onboarding}/CategoryPickerItem.swift (100%) rename Mastodon/Diffiable/{Section => }/Onboarding/CategoryPickerSection.swift (100%) rename Mastodon/Diffiable/{Item => Onboarding}/PickServerItem.swift (100%) rename Mastodon/Diffiable/{Section => }/Onboarding/PickServerSection.swift (98%) create mode 100644 Mastodon/Diffiable/Onboarding/ServerRuleItem.swift create mode 100644 Mastodon/Diffiable/Onboarding/ServerRuleSection.swift rename Mastodon/Diffiable/{Item => Poll}/PollItem.swift (100%) rename Mastodon/Diffiable/{Section/Status => Poll}/PollSection.swift (100%) rename Mastodon/Diffiable/{Item => Profile}/ProfileFieldItem.swift (100%) rename Mastodon/Diffiable/{Section => Profile}/ProfileFieldSection.swift (100%) rename Mastodon/Diffiable/{Section => }/Search/RecommendAccountSection.swift (100%) rename Mastodon/Diffiable/{Section => }/Search/RecommendHashTagSection.swift (100%) rename Mastodon/Diffiable/{Item => Search}/SearchHistoryItem.swift (100%) rename Mastodon/Diffiable/{Section => }/Search/SearchHistorySection.swift (100%) rename Mastodon/Diffiable/{Item => Search}/SearchResultItem.swift (100%) rename Mastodon/Diffiable/{Section => }/Search/SearchResultSection.swift (100%) rename Mastodon/Diffiable/{Item => Settings}/SettingsItem.swift (100%) rename Mastodon/Diffiable/{Section => Settings}/SettingsSection.swift (100%) rename Mastodon/Diffiable/{Item => Status}/Item.swift (100%) rename Mastodon/Diffiable/{Section => }/Status/ReportSection.swift (100%) rename Mastodon/Diffiable/{Section => }/Status/StatusSection.swift (100%) rename Mastodon/Diffiable/{Item => User}/UserItem.swift (100%) rename Mastodon/Diffiable/{Section => User}/UserSection.swift (100%) create mode 100644 Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel+Diffable.swift create mode 100644 Mastodon/Scene/Onboarding/ServerRules/ServerRulesTableViewCell.swift rename Mastodon/Scene/Onboarding/{PickServer/TableViewCell/PickServerTitleCell.swift => Share/OnboardingHeadlineTableViewCell.swift} (79%) rename {Mastodon/Extension => MastodonSDK/Sources/MastodonExtension}/CALayer.swift (95%) create mode 100644 MastodonSDK/Sources/MastodonUI/View/Container/ShadowBackgroundContainer.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index e707ae0fd..3061b6e49 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -22,7 +22,7 @@ 0FAA101C25E10E760017CCDE /* UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FAA101B25E10E760017CCDE /* UIFont.swift */; }; 0FAA102725E1126A0017CCDE /* MastodonPickServerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FAA102625E1126A0017CCDE /* MastodonPickServerViewController.swift */; }; 0FB3D2F725E4C24D00AAD544 /* MastodonPickServerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D2F625E4C24D00AAD544 /* MastodonPickServerViewModel.swift */; }; - 0FB3D2FE25E4CB6400AAD544 /* PickServerTitleCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D2FD25E4CB6400AAD544 /* PickServerTitleCell.swift */; }; + 0FB3D2FE25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D2FD25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift */; }; 0FB3D30825E524C600AAD544 /* PickServerCategoriesCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D30725E524C600AAD544 /* PickServerCategoriesCell.swift */; }; 0FB3D30F25E525CD00AAD544 /* PickServerCategoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D30E25E525CD00AAD544 /* PickServerCategoryView.swift */; }; 0FB3D31E25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D31D25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift */; }; @@ -195,6 +195,10 @@ DB0617ED277F02C50030EE79 /* OnboardingNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617EC277F02C50030EE79 /* OnboardingNavigationController.swift */; }; DB0617EF277F12720030EE79 /* NavigationActionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617EE277F12720030EE79 /* NavigationActionView.swift */; }; DB0617F1278413D00030EE79 /* PickServerServerSectionTableHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617F0278413D00030EE79 /* PickServerServerSectionTableHeaderView.swift */; }; + DB0617F527855AB90030EE79 /* ServerRuleSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617F427855AB90030EE79 /* ServerRuleSection.swift */; }; + DB0617FD27855BFE0030EE79 /* ServerRuleItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617FC27855BFE0030EE79 /* ServerRuleItem.swift */; }; + DB0617FF27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617FE27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift */; }; + DB0618012785732C0030EE79 /* ServerRulesTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618002785732C0030EE79 /* ServerRulesTableViewCell.swift */; }; DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; }; DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; }; DB0C946526A6FD4D0088FB11 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB0C946426A6FD4D0088FB11 /* AlamofireImage */; }; @@ -244,7 +248,6 @@ DB427DE225BAA00100D1B89D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DB427DE025BAA00100D1B89D /* LaunchScreen.storyboard */; }; DB427DED25BAA00100D1B89D /* MastodonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DEC25BAA00100D1B89D /* MastodonTests.swift */; }; DB427DF825BAA00100D1B89D /* MastodonUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DF725BAA00100D1B89D /* MastodonUITests.swift */; }; - DB44384F25E8C1FA008912A2 /* CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB44384E25E8C1FA008912A2 /* CALayer.swift */; }; DB443CD42694627B00159B29 /* AppearanceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB443CD32694627B00159B29 /* AppearanceView.swift */; }; DB44767B260B3B8C00B66B82 /* CustomEmojiPickerInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB44767A260B3B8C00B66B82 /* CustomEmojiPickerInputView.swift */; }; DB447681260B3ED600B66B82 /* CustomEmojiPickerSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB447680260B3ED600B66B82 /* CustomEmojiPickerSection.swift */; }; @@ -782,7 +785,7 @@ 0FAA101B25E10E760017CCDE /* UIFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFont.swift; sourceTree = ""; }; 0FAA102625E1126A0017CCDE /* MastodonPickServerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonPickServerViewController.swift; sourceTree = ""; }; 0FB3D2F625E4C24D00AAD544 /* MastodonPickServerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonPickServerViewModel.swift; sourceTree = ""; }; - 0FB3D2FD25E4CB6400AAD544 /* PickServerTitleCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerTitleCell.swift; sourceTree = ""; }; + 0FB3D2FD25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingHeadlineTableViewCell.swift; sourceTree = ""; }; 0FB3D30725E524C600AAD544 /* PickServerCategoriesCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerCategoriesCell.swift; sourceTree = ""; }; 0FB3D30E25E525CD00AAD544 /* PickServerCategoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerCategoryView.swift; sourceTree = ""; }; 0FB3D31D25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerCategoryCollectionViewCell.swift; sourceTree = ""; }; @@ -977,6 +980,10 @@ DB0617EC277F02C50030EE79 /* OnboardingNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingNavigationController.swift; sourceTree = ""; }; DB0617EE277F12720030EE79 /* NavigationActionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationActionView.swift; sourceTree = ""; }; DB0617F0278413D00030EE79 /* PickServerServerSectionTableHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerServerSectionTableHeaderView.swift; sourceTree = ""; }; + DB0617F427855AB90030EE79 /* ServerRuleSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerRuleSection.swift; sourceTree = ""; }; + DB0617FC27855BFE0030EE79 /* ServerRuleItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerRuleItem.swift; sourceTree = ""; }; + DB0617FE27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonServerRulesViewModel+Diffable.swift"; sourceTree = ""; }; + DB0618002785732C0030EE79 /* ServerRulesTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerRulesTableViewCell.swift; sourceTree = ""; }; DB084B5625CBC56C00F898ED /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = ""; }; DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Instance.swift"; sourceTree = ""; }; DB0C946A26A700AB0088FB11 /* MastodonUser+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonUser+Property.swift"; sourceTree = ""; }; @@ -1033,7 +1040,6 @@ DB427DF325BAA00100D1B89D /* MastodonUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MastodonUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; DB427DF725BAA00100D1B89D /* MastodonUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonUITests.swift; sourceTree = ""; }; DB427DF925BAA00100D1B89D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DB44384E25E8C1FA008912A2 /* CALayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CALayer.swift; sourceTree = ""; }; DB443CD32694627B00159B29 /* AppearanceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearanceView.swift; sourceTree = ""; }; DB44767A260B3B8C00B66B82 /* CustomEmojiPickerInputView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomEmojiPickerInputView.swift; sourceTree = ""; }; DB447680260B3ED600B66B82 /* CustomEmojiPickerSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomEmojiPickerSection.swift; sourceTree = ""; }; @@ -1598,7 +1604,6 @@ 0FB3D2FC25E4CB4B00AAD544 /* TableViewCell */ = { isa = PBXGroup; children = ( - 0FB3D2FD25E4CB6400AAD544 /* PickServerTitleCell.swift */, 0FB3D33725E6401400AAD544 /* PickServerCell.swift */, DB0F814F264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift */, ); @@ -1862,28 +1867,21 @@ 2D76319C25C151DE00929FB9 /* Diffiable */ = { isa = PBXGroup; children = ( - 2D76319D25C151F600929FB9 /* Section */, - 2D7631B125C159E700929FB9 /* Item */, + DB4F097826A039B400D62E92 /* Onboarding */, + DB0617FB27855B740030EE79 /* Account */, + DB0617F827855B170030EE79 /* User */, + DB0617F927855B460030EE79 /* Profile */, + DB4F097926A039C400D62E92 /* Status */, + DB0617F627855AF30030EE79 /* Poll */, + DB4F097626A0398000D62E92 /* Compose */, + DB0617F727855B010030EE79 /* Notification */, + DB4F097726A039A200D62E92 /* Search */, + DB0617FA27855B660030EE79 /* Settings */, DBCBED2226132E1D00B49291 /* FetchedResultsController */, ); path = Diffiable; sourceTree = ""; }; - 2D76319D25C151F600929FB9 /* Section */ = { - isa = PBXGroup; - children = ( - DB4F097926A039C400D62E92 /* Status */, - DB4F097826A039B400D62E92 /* Onboarding */, - DB4F097726A039A200D62E92 /* Search */, - DB4F097626A0398000D62E92 /* Compose */, - 2D4AD8A126316CD200613EFC /* SelectedAccountSection.swift */, - DB6D9F7C26358ED4008423CD /* SettingsSection.swift */, - DBA94433265CBB5300C537E1 /* ProfileFieldSection.swift */, - DB6B74FB272FF55800C70B6E /* UserSection.swift */, - ); - path = Section; - sourceTree = ""; - }; 2D7631A425C1532200929FB9 /* Share */ = { isa = PBXGroup; children = ( @@ -1930,29 +1928,6 @@ path = TableviewCell; sourceTree = ""; }; - 2D7631B125C159E700929FB9 /* Item */ = { - isa = PBXGroup; - children = ( - 2D7631B225C159F700929FB9 /* Item.swift */, - DB6B74FD272FF59000C70B6E /* UserItem.swift */, - 2D198642261BF09500F0B013 /* SearchResultItem.swift */, - DB4F097C26A03A5B00D62E92 /* SearchHistoryItem.swift */, - 2D4AD8A726316D3500613EFC /* SelectedAccountItem.swift */, - 2D7867182625B77500211898 /* NotificationItem.swift */, - DB4481CB25EE2AFE00BEFB67 /* PollItem.swift */, - DB1E347725F519300079D7DF /* PickServerItem.swift */, - DB1FD45925F27898004CFCFC /* CategoryPickerItem.swift */, - DB66729B25F9F91F00D60309 /* ComposeStatusItem.swift */, - DB3667A0268ABB2E0027D07F /* ComposeStatusAttachmentItem.swift */, - DB3667A7268AE2900027D07F /* ComposeStatusPollItem.swift */, - DB44768A260B3F2100B66B82 /* CustomEmojiPickerItem.swift */, - DB6D9F8326358EEC008423CD /* SettingsItem.swift */, - DBBF1DCA2652539E00E5B703 /* AutoCompleteItem.swift */, - DBA94435265CBB7400C537E1 /* ProfileFieldItem.swift */, - ); - path = Item; - sourceTree = ""; - }; 2DA504672601ADBA008F4E6C /* Decoration */ = { isa = PBXGroup; children = ( @@ -2109,6 +2084,60 @@ path = Deprecated; sourceTree = ""; }; + DB0617F627855AF30030EE79 /* Poll */ = { + isa = PBXGroup; + children = ( + DB4481C525EE2ADA00BEFB67 /* PollSection.swift */, + DB4481CB25EE2AFE00BEFB67 /* PollItem.swift */, + ); + path = Poll; + sourceTree = ""; + }; + DB0617F727855B010030EE79 /* Notification */ = { + isa = PBXGroup; + children = ( + 2D35237926256D920031AF25 /* NotificationSection.swift */, + 2D7867182625B77500211898 /* NotificationItem.swift */, + ); + path = Notification; + sourceTree = ""; + }; + DB0617F827855B170030EE79 /* User */ = { + isa = PBXGroup; + children = ( + DB6B74FB272FF55800C70B6E /* UserSection.swift */, + DB6B74FD272FF59000C70B6E /* UserItem.swift */, + ); + path = User; + sourceTree = ""; + }; + DB0617F927855B460030EE79 /* Profile */ = { + isa = PBXGroup; + children = ( + DBA94433265CBB5300C537E1 /* ProfileFieldSection.swift */, + DBA94435265CBB7400C537E1 /* ProfileFieldItem.swift */, + ); + path = Profile; + sourceTree = ""; + }; + DB0617FA27855B660030EE79 /* Settings */ = { + isa = PBXGroup; + children = ( + DB6D9F7C26358ED4008423CD /* SettingsSection.swift */, + DB6D9F8326358EEC008423CD /* SettingsItem.swift */, + ); + path = Settings; + sourceTree = ""; + }; + DB0617FB27855B740030EE79 /* Account */ = { + isa = PBXGroup; + children = ( + 2D4AD8A126316CD200613EFC /* SelectedAccountSection.swift */, + 2D4AD8A726316D3500613EFC /* SelectedAccountItem.swift */, + ); + path = Account; + sourceTree = ""; + }; DB084B5125CBC56300F898ED /* CoreDataStack */ = { isa = PBXGroup; children = ( @@ -2360,10 +2389,15 @@ isa = PBXGroup; children = ( DB66729525F9F91600D60309 /* ComposeStatusSection.swift */, + DB66729B25F9F91F00D60309 /* ComposeStatusItem.swift */, DB36679E268ABAF20027D07F /* ComposeStatusAttachmentSection.swift */, + DB3667A0268ABB2E0027D07F /* ComposeStatusAttachmentItem.swift */, DB3667A5268AE2620027D07F /* ComposeStatusPollSection.swift */, + DB3667A7268AE2900027D07F /* ComposeStatusPollItem.swift */, DB447680260B3ED600B66B82 /* CustomEmojiPickerSection.swift */, + DB44768A260B3F2100B66B82 /* CustomEmojiPickerItem.swift */, DBBF1DC82652538500E5B703 /* AutoCompleteSection.swift */, + DBBF1DCA2652539E00E5B703 /* AutoCompleteItem.swift */, ); path = Compose; sourceTree = ""; @@ -2374,7 +2408,9 @@ 2DE0FAC02615F04D00CDF649 /* RecommendHashTagSection.swift */, 2DE0FACD2615F7AD00CDF649 /* RecommendAccountSection.swift */, 2D198648261C0B8500F0B013 /* SearchResultSection.swift */, + 2D198642261BF09500F0B013 /* SearchResultItem.swift */, DB4F097A26A039FF00D62E92 /* SearchHistorySection.swift */, + DB4F097C26A03A5B00D62E92 /* SearchHistoryItem.swift */, ); path = Search; sourceTree = ""; @@ -2383,7 +2419,11 @@ isa = PBXGroup; children = ( DB1FD44325F26CCC004CFCFC /* PickServerSection.swift */, + DB1E347725F519300079D7DF /* PickServerItem.swift */, DB1E346725F518E20079D7DF /* CategoryPickerSection.swift */, + DB1FD45925F27898004CFCFC /* CategoryPickerItem.swift */, + DB0617F427855AB90030EE79 /* ServerRuleSection.swift */, + DB0617FC27855BFE0030EE79 /* ServerRuleItem.swift */, ); path = Onboarding; sourceTree = ""; @@ -2392,8 +2432,7 @@ isa = PBXGroup; children = ( 2D76319E25C1521200929FB9 /* StatusSection.swift */, - DB4481C525EE2ADA00BEFB67 /* PollSection.swift */, - 2D35237926256D920031AF25 /* NotificationSection.swift */, + 2D7631B225C159F700929FB9 /* Item.swift */, 5BB04FF4262F0E6D0043BFF6 /* ReportSection.swift */, ); path = Status; @@ -2533,10 +2572,11 @@ DB68A03825E900CC00CFDF14 /* Share */ = { isa = PBXGroup; children = ( - 2D82B9FE25E7863200E36F0F /* OnboardingViewControllerAppearance.swift */, DB2F073325E8ECF000957B2D /* AuthenticationViewModel.swift */, DB029E94266A20430062874E /* MastodonAuthenticationController.swift */, + 2D82B9FE25E7863200E36F0F /* OnboardingViewControllerAppearance.swift */, DB0617EC277F02C50030EE79 /* OnboardingNavigationController.swift */, + 0FB3D2FD25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift */, DB0617EE277F12720030EE79 /* NavigationActionView.swift */, ); path = Share; @@ -2595,6 +2635,8 @@ children = ( DB72601B25E36A2100235243 /* MastodonServerRulesViewController.swift */, DB72602625E36A6F00235243 /* MastodonServerRulesViewModel.swift */, + DB0617FE27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift */, + DB0618002785732C0030EE79 /* ServerRulesTableViewCell.swift */, ); path = ServerRules; sourceTree = ""; @@ -2797,7 +2839,6 @@ 2DF123A625C3B0210020F248 /* ActiveLabel.swift */, 5DF1056325F887CB00D6C0D4 /* AVPlayer.swift */, 0F20223826146553000C64BF /* Array.swift */, - DB44384E25E8C1FA008912A2 /* CALayer.swift */, 2D206B8525F5FB0900143C56 /* Double.swift */, DB97131E2666078B00BD1E90 /* Date.swift */, DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */, @@ -3954,6 +3995,7 @@ DB68A06325E905E000CFDF14 /* UIApplication.swift in Sources */, DB02CDAB26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift in Sources */, DB63BE7F268DD1070011D3F9 /* NotificationViewController+StatusProvider.swift in Sources */, + DB0617FF27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift in Sources */, DBB5255E2611F07A002F1F29 /* ProfileViewModel.swift in Sources */, 2D8434FB25FF46B300EECE90 /* HomeTimelineNavigationBarTitleView.swift in Sources */, 0F1E2D0B2615C39400C38565 /* DoubleTitleLabelNavigationBarTitleView.swift in Sources */, @@ -3990,6 +4032,7 @@ DB789A0B25F9F2950071ACA0 /* ComposeViewController.swift in Sources */, DB938F0926240F3C00E5B6C1 /* RemoteThreadViewModel.swift in Sources */, DB0617ED277F02C50030EE79 /* OnboardingNavigationController.swift in Sources */, + DB0617F527855AB90030EE79 /* ServerRuleSection.swift in Sources */, DBBC24AE26A53DC100398BB9 /* ReplicaStatusView.swift in Sources */, DB75BF1E263C1C1B00EDBF1F /* CustomScheduler.swift in Sources */, 0FAA102725E1126A0017CCDE /* MastodonPickServerViewController.swift in Sources */, @@ -4101,7 +4144,7 @@ DB71FD3C25F8A1C500512AE1 /* APIService+Persist+PersistCache.swift in Sources */, 2DA6055125F74407006356F9 /* AudioContainerViewModel.swift in Sources */, DB4F0968269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift in Sources */, - 0FB3D2FE25E4CB6400AAD544 /* PickServerTitleCell.swift in Sources */, + 0FB3D2FE25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift in Sources */, 5DA732CC2629CEF500A92342 /* UIView+Remove.swift in Sources */, DBAEDE5C267A058D00D25FF5 /* BlurhashImageCacheService.swift in Sources */, 2D38F1DF25CD46A400561493 /* HomeTimelineViewController+Provider.swift in Sources */, @@ -4146,6 +4189,7 @@ 2D34D9D126148D9E0081BFC0 /* APIService+Recommend.swift in Sources */, DBB525562611EDCA002F1F29 /* UserTimelineViewModel.swift in Sources */, 2D42FF7E25C82218004A627A /* ActionToolBarContainer.swift in Sources */, + DB0618012785732C0030EE79 /* ServerRulesTableViewCell.swift in Sources */, DB221B16260C395900AEFE46 /* CustomEmojiPickerInputViewModel.swift in Sources */, DB0617EF277F12720030EE79 /* NavigationActionView.swift in Sources */, DB1FD43625F26899004CFCFC /* MastodonPickServerViewModel+LoadIndexedServerState.swift in Sources */, @@ -4216,7 +4260,6 @@ DB6180F826391D660018D199 /* MediaPreviewingViewController.swift in Sources */, DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */, DB6B75022730060700C70B6E /* UserProviderFacade+UITableViewDelegate.swift in Sources */, - DB44384F25E8C1FA008912A2 /* CALayer.swift in Sources */, 2D34D9CB261489930081BFC0 /* SearchViewController+Recommend.swift in Sources */, DB71C7CB271D5A0300BE3819 /* LineChartView.swift in Sources */, DB938F1526241FDF00E5B6C1 /* APIService+Thread.swift in Sources */, @@ -4358,6 +4401,7 @@ DBAFB7352645463500371D5F /* Emojis.swift in Sources */, DBCCC71E25F73297007E1AB6 /* APIService+Reblog.swift in Sources */, DBE3CE13261D7D4200430CC6 /* StatusTableViewControllerAspect.swift in Sources */, + DB0617FD27855BFE0030EE79 /* ServerRuleItem.swift in Sources */, 5BB04FD5262E7AFF0043BFF6 /* ReportViewController.swift in Sources */, DBAE3F942616E28B004B8251 /* APIService+Follow.swift in Sources */, ); diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index 3f83af789..e52bb1d95 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,6 +1,60 @@ { "object": { "pins": [ + { + "package": "Alamofire", + "repositoryURL": "https://github.com/Alamofire/Alamofire.git", + "state": { + "branch": null, + "revision": "f82c23a8a7ef8dc1a49a8bfc6a96883e79121864", + "version": "5.5.0" + } + }, + { + "package": "AlamofireImage", + "repositoryURL": "https://github.com/Alamofire/AlamofireImage.git", + "state": { + "branch": null, + "revision": "98cbb00ce0ec5fc8e52a5b50a6bfc08d3e5aee10", + "version": "4.2.0" + } + }, + { + "package": "AlamofireNetworkActivityIndicator", + "repositoryURL": "https://github.com/Alamofire/AlamofireNetworkActivityIndicator", + "state": { + "branch": null, + "revision": "392bed083e8d193aca16bfa684ee24e4bcff0510", + "version": "3.1.0" + } + }, + { + "package": "CommonOSLog", + "repositoryURL": "https://github.com/MainasuK/CommonOSLog", + "state": { + "branch": null, + "revision": "c121624a30698e9886efe38aebb36ff51c01b6c2", + "version": "0.1.1" + } + }, + { + "package": "DiffableDataSources", + "repositoryURL": "https://github.com/MainasuK/DiffableDataSources.git", + "state": { + "branch": "feature/async-display-table", + "revision": "73393a97690959d24387c95594c045c62d9c47cf", + "version": null + } + }, + { + "package": "DifferenceKit", + "repositoryURL": "https://github.com/ra1028/DifferenceKit.git", + "state": { + "branch": null, + "revision": "62745d7780deef4a023a792a1f8f763ec7bf9705", + "version": "1.2.0" + } + }, { "package": "FLAnimatedImage", "repositoryURL": "https://github.com/Flipboard/FLAnimatedImage", @@ -10,6 +64,42 @@ "version": "1.0.16" } }, + { + "package": "FPSIndicator", + "repositoryURL": "https://github.com/MainasuK/FPSIndicator.git", + "state": { + "branch": null, + "revision": "e4a5067ccd5293b024c767f09e51056afd4a4796", + "version": "1.1.0" + } + }, + { + "package": "Fuzi", + "repositoryURL": "https://github.com/cezheng/Fuzi.git", + "state": { + "branch": null, + "revision": "f08c8323da21e985f3772610753bcfc652c2103f", + "version": "3.1.3" + } + }, + { + "package": "KeychainAccess", + "repositoryURL": "https://github.com/kishikawakatsumi/KeychainAccess.git", + "state": { + "branch": null, + "revision": "84e546727d66f1adc5439debad16270d0fdd04e7", + "version": "4.2.2" + } + }, + { + "package": "MetaTextKit", + "repositoryURL": "https://github.com/TwidereProject/MetaTextKit.git", + "state": { + "branch": null, + "revision": "7af4182f64329440a4656f2cba307cb5848e496a", + "version": "2.1.2" + } + }, { "package": "Nuke", "repositoryURL": "https://github.com/kean/Nuke.git", @@ -28,6 +118,42 @@ "version": "8.0.0" } }, + { + "package": "Pageboy", + "repositoryURL": "https://github.com/uias/Pageboy", + "state": { + "branch": null, + "revision": "34ecb6e7c4e0e07494960ab2f7cc9a02293915a6", + "version": "3.6.2" + } + }, + { + "package": "PanModal", + "repositoryURL": "https://github.com/slackhq/PanModal.git", + "state": { + "branch": null, + "revision": "b012aecb6b67a8e46369227f893c12544846613f", + "version": "1.2.7" + } + }, + { + "package": "SDWebImage", + "repositoryURL": "https://github.com/SDWebImage/SDWebImage.git", + "state": { + "branch": null, + "revision": "0fff0d7505b5306348263ea64fcc561253bbeb21", + "version": "5.12.2" + } + }, + { + "package": "swift-collections", + "repositoryURL": "https://github.com/apple/swift-collections.git", + "state": { + "branch": null, + "revision": "9d8719c8bebdc79740b6969c912ac706eb721d7a", + "version": "0.0.7" + } + }, { "package": "swift-nio", "repositoryURL": "https://github.com/apple/swift-nio.git", @@ -63,6 +189,33 @@ "revision": "b3dcd7dbd0d488e1a7077cb33b00f2083e382f07", "version": "5.0.1" } + }, + { + "package": "Tabman", + "repositoryURL": "https://github.com/uias/Tabman", + "state": { + "branch": null, + "revision": "f43489cdd743ba7ad86a422ebb5fcbf34e333df4", + "version": "2.11.1" + } + }, + { + "package": "ThirdPartyMailer", + "repositoryURL": "https://github.com/vtourraine/ThirdPartyMailer.git", + "state": { + "branch": null, + "revision": "779da6ce0793b461ccbbac2804755c1e29b6fa63", + "version": "1.8.0" + } + }, + { + "package": "TOCropViewController", + "repositoryURL": "https://github.com/TimOliver/TOCropViewController.git", + "state": { + "branch": null, + "revision": "dad97167bf1be16aeecd109130900995dd01c515", + "version": "2.6.0" + } } ] }, diff --git a/Mastodon/Diffiable/Item/SelectedAccountItem.swift b/Mastodon/Diffiable/Account/SelectedAccountItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/SelectedAccountItem.swift rename to Mastodon/Diffiable/Account/SelectedAccountItem.swift diff --git a/Mastodon/Diffiable/Section/SelectedAccountSection.swift b/Mastodon/Diffiable/Account/SelectedAccountSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/SelectedAccountSection.swift rename to Mastodon/Diffiable/Account/SelectedAccountSection.swift diff --git a/Mastodon/Diffiable/Item/AutoCompleteItem.swift b/Mastodon/Diffiable/Compose/AutoCompleteItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/AutoCompleteItem.swift rename to Mastodon/Diffiable/Compose/AutoCompleteItem.swift diff --git a/Mastodon/Diffiable/Section/Compose/AutoCompleteSection.swift b/Mastodon/Diffiable/Compose/AutoCompleteSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Compose/AutoCompleteSection.swift rename to Mastodon/Diffiable/Compose/AutoCompleteSection.swift diff --git a/Mastodon/Diffiable/Item/ComposeStatusAttachmentItem.swift b/Mastodon/Diffiable/Compose/ComposeStatusAttachmentItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/ComposeStatusAttachmentItem.swift rename to Mastodon/Diffiable/Compose/ComposeStatusAttachmentItem.swift diff --git a/Mastodon/Diffiable/Section/Compose/ComposeStatusAttachmentSection.swift b/Mastodon/Diffiable/Compose/ComposeStatusAttachmentSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Compose/ComposeStatusAttachmentSection.swift rename to Mastodon/Diffiable/Compose/ComposeStatusAttachmentSection.swift diff --git a/Mastodon/Diffiable/Item/ComposeStatusItem.swift b/Mastodon/Diffiable/Compose/ComposeStatusItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/ComposeStatusItem.swift rename to Mastodon/Diffiable/Compose/ComposeStatusItem.swift diff --git a/Mastodon/Diffiable/Item/ComposeStatusPollItem.swift b/Mastodon/Diffiable/Compose/ComposeStatusPollItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/ComposeStatusPollItem.swift rename to Mastodon/Diffiable/Compose/ComposeStatusPollItem.swift diff --git a/Mastodon/Diffiable/Section/Compose/ComposeStatusPollSection.swift b/Mastodon/Diffiable/Compose/ComposeStatusPollSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Compose/ComposeStatusPollSection.swift rename to Mastodon/Diffiable/Compose/ComposeStatusPollSection.swift diff --git a/Mastodon/Diffiable/Section/Compose/ComposeStatusSection.swift b/Mastodon/Diffiable/Compose/ComposeStatusSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Compose/ComposeStatusSection.swift rename to Mastodon/Diffiable/Compose/ComposeStatusSection.swift diff --git a/Mastodon/Diffiable/Item/CustomEmojiPickerItem.swift b/Mastodon/Diffiable/Compose/CustomEmojiPickerItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/CustomEmojiPickerItem.swift rename to Mastodon/Diffiable/Compose/CustomEmojiPickerItem.swift diff --git a/Mastodon/Diffiable/Section/Compose/CustomEmojiPickerSection.swift b/Mastodon/Diffiable/Compose/CustomEmojiPickerSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Compose/CustomEmojiPickerSection.swift rename to Mastodon/Diffiable/Compose/CustomEmojiPickerSection.swift diff --git a/Mastodon/Diffiable/Item/NotificationItem.swift b/Mastodon/Diffiable/Notification/NotificationItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/NotificationItem.swift rename to Mastodon/Diffiable/Notification/NotificationItem.swift diff --git a/Mastodon/Diffiable/Section/Status/NotificationSection.swift b/Mastodon/Diffiable/Notification/NotificationSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Status/NotificationSection.swift rename to Mastodon/Diffiable/Notification/NotificationSection.swift diff --git a/Mastodon/Diffiable/Item/CategoryPickerItem.swift b/Mastodon/Diffiable/Onboarding/CategoryPickerItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/CategoryPickerItem.swift rename to Mastodon/Diffiable/Onboarding/CategoryPickerItem.swift diff --git a/Mastodon/Diffiable/Section/Onboarding/CategoryPickerSection.swift b/Mastodon/Diffiable/Onboarding/CategoryPickerSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Onboarding/CategoryPickerSection.swift rename to Mastodon/Diffiable/Onboarding/CategoryPickerSection.swift diff --git a/Mastodon/Diffiable/Item/PickServerItem.swift b/Mastodon/Diffiable/Onboarding/PickServerItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/PickServerItem.swift rename to Mastodon/Diffiable/Onboarding/PickServerItem.swift diff --git a/Mastodon/Diffiable/Section/Onboarding/PickServerSection.swift b/Mastodon/Diffiable/Onboarding/PickServerSection.swift similarity index 98% rename from Mastodon/Diffiable/Section/Onboarding/PickServerSection.swift rename to Mastodon/Diffiable/Onboarding/PickServerSection.swift index b2079aaba..9f74bad53 100644 --- a/Mastodon/Diffiable/Section/Onboarding/PickServerSection.swift +++ b/Mastodon/Diffiable/Onboarding/PickServerSection.swift @@ -28,7 +28,7 @@ extension PickServerSection { guard let dependency = dependency else { return nil } switch item { case .header: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: PickServerTitleCell.self), for: indexPath) as! PickServerTitleCell + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: OnboardingHeadlineTableViewCell.self), for: indexPath) as! OnboardingHeadlineTableViewCell return cell case .server(let server, let attribute): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: PickServerCell.self), for: indexPath) as! PickServerCell diff --git a/Mastodon/Diffiable/Onboarding/ServerRuleItem.swift b/Mastodon/Diffiable/Onboarding/ServerRuleItem.swift new file mode 100644 index 000000000..37d8b6ee7 --- /dev/null +++ b/Mastodon/Diffiable/Onboarding/ServerRuleItem.swift @@ -0,0 +1,21 @@ +// +// ServerRuleItem.swift +// Mastodon +// +// Created by MainasuK on 2022-1-5. +// + +import Foundation +import MastodonSDK + +enum ServerRuleItem: Hashable { + case header(domain: String) + case rule(RuleContext) +} + +extension ServerRuleItem { + struct RuleContext: Hashable { + let index: Int + let rule: Mastodon.Entity.Instance.Rule + } +} diff --git a/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift b/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift new file mode 100644 index 000000000..ba96e873f --- /dev/null +++ b/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift @@ -0,0 +1,34 @@ +// +// ServerRuleSection.swift +// Mastodon +// +// Created by MainasuK on 2022-1-5. +// + +import UIKit + +enum ServerRuleSection: Hashable { + case header + case rules +} + +extension ServerRuleSection { + static func tableViewDiffableDataSource( + tableView: UITableView + ) -> UITableViewDiffableDataSource { + return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item in + switch item { + case .header(let domain): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: OnboardingHeadlineTableViewCell.self), for: indexPath) as! OnboardingHeadlineTableViewCell + cell.titleLabel.text = L10n.Scene.ServerRules.title + cell.subTitleLabel.text = L10n.Scene.ServerRules.subtitle(domain) + return cell + case .rule(let ruleContext): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ServerRulesTableViewCell.self), for: indexPath) as! ServerRulesTableViewCell + cell.indexImageView.image = UIImage(systemName: "\(ruleContext.index).circle.fill") ?? UIImage(systemName: "questionmark.circle.fill") + cell.ruleLabel.text = ruleContext.rule.text + return cell + } + } + } +} diff --git a/Mastodon/Diffiable/Item/PollItem.swift b/Mastodon/Diffiable/Poll/PollItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/PollItem.swift rename to Mastodon/Diffiable/Poll/PollItem.swift diff --git a/Mastodon/Diffiable/Section/Status/PollSection.swift b/Mastodon/Diffiable/Poll/PollSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Status/PollSection.swift rename to Mastodon/Diffiable/Poll/PollSection.swift diff --git a/Mastodon/Diffiable/Item/ProfileFieldItem.swift b/Mastodon/Diffiable/Profile/ProfileFieldItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/ProfileFieldItem.swift rename to Mastodon/Diffiable/Profile/ProfileFieldItem.swift diff --git a/Mastodon/Diffiable/Section/ProfileFieldSection.swift b/Mastodon/Diffiable/Profile/ProfileFieldSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/ProfileFieldSection.swift rename to Mastodon/Diffiable/Profile/ProfileFieldSection.swift diff --git a/Mastodon/Diffiable/Section/Search/RecommendAccountSection.swift b/Mastodon/Diffiable/Search/RecommendAccountSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Search/RecommendAccountSection.swift rename to Mastodon/Diffiable/Search/RecommendAccountSection.swift diff --git a/Mastodon/Diffiable/Section/Search/RecommendHashTagSection.swift b/Mastodon/Diffiable/Search/RecommendHashTagSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Search/RecommendHashTagSection.swift rename to Mastodon/Diffiable/Search/RecommendHashTagSection.swift diff --git a/Mastodon/Diffiable/Item/SearchHistoryItem.swift b/Mastodon/Diffiable/Search/SearchHistoryItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/SearchHistoryItem.swift rename to Mastodon/Diffiable/Search/SearchHistoryItem.swift diff --git a/Mastodon/Diffiable/Section/Search/SearchHistorySection.swift b/Mastodon/Diffiable/Search/SearchHistorySection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Search/SearchHistorySection.swift rename to Mastodon/Diffiable/Search/SearchHistorySection.swift diff --git a/Mastodon/Diffiable/Item/SearchResultItem.swift b/Mastodon/Diffiable/Search/SearchResultItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/SearchResultItem.swift rename to Mastodon/Diffiable/Search/SearchResultItem.swift diff --git a/Mastodon/Diffiable/Section/Search/SearchResultSection.swift b/Mastodon/Diffiable/Search/SearchResultSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Search/SearchResultSection.swift rename to Mastodon/Diffiable/Search/SearchResultSection.swift diff --git a/Mastodon/Diffiable/Item/SettingsItem.swift b/Mastodon/Diffiable/Settings/SettingsItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/SettingsItem.swift rename to Mastodon/Diffiable/Settings/SettingsItem.swift diff --git a/Mastodon/Diffiable/Section/SettingsSection.swift b/Mastodon/Diffiable/Settings/SettingsSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/SettingsSection.swift rename to Mastodon/Diffiable/Settings/SettingsSection.swift diff --git a/Mastodon/Diffiable/Item/Item.swift b/Mastodon/Diffiable/Status/Item.swift similarity index 100% rename from Mastodon/Diffiable/Item/Item.swift rename to Mastodon/Diffiable/Status/Item.swift diff --git a/Mastodon/Diffiable/Section/Status/ReportSection.swift b/Mastodon/Diffiable/Status/ReportSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Status/ReportSection.swift rename to Mastodon/Diffiable/Status/ReportSection.swift diff --git a/Mastodon/Diffiable/Section/Status/StatusSection.swift b/Mastodon/Diffiable/Status/StatusSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/Status/StatusSection.swift rename to Mastodon/Diffiable/Status/StatusSection.swift diff --git a/Mastodon/Diffiable/Item/UserItem.swift b/Mastodon/Diffiable/User/UserItem.swift similarity index 100% rename from Mastodon/Diffiable/Item/UserItem.swift rename to Mastodon/Diffiable/User/UserItem.swift diff --git a/Mastodon/Diffiable/Section/UserSection.swift b/Mastodon/Diffiable/User/UserSection.swift similarity index 100% rename from Mastodon/Diffiable/Section/UserSection.swift rename to Mastodon/Diffiable/User/UserSection.swift diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift index 54e7bc6de..17df72d3b 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift @@ -35,7 +35,7 @@ final class MastodonPickServerViewController: UIViewController, NeedsDependency let tableView: UITableView = { let tableView = ControlContainableTableView() - tableView.register(PickServerTitleCell.self, forCellReuseIdentifier: String(describing: PickServerTitleCell.self)) + tableView.register(OnboardingHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: OnboardingHeadlineTableViewCell.self)) tableView.register(PickServerCell.self, forCellReuseIdentifier: String(describing: PickServerCell.self)) tableView.register(PickServerLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: PickServerLoaderTableViewCell.self)) tableView.rowHeight = UITableView.automaticDimension @@ -236,6 +236,12 @@ extension MastodonPickServerViewController { viewModel.viewWillAppear.send() } + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + tableView.flashScrollIndicators() + } + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift index e93d06e19..6633f6c7c 100644 --- a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift @@ -14,8 +14,11 @@ import MetaTextKit final class MastodonServerRulesViewController: UIViewController, NeedsDependency { - var disposeBag = Set() + let logger = Logger(subsystem: "MastodonServerRulesViewController", category: "ViewController") + var disposeBag = Set() + private var observations = Set() + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -25,8 +28,8 @@ final class MastodonServerRulesViewController: UIViewController, NeedsDependency let largeTitleLabel: UILabel = { let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 34, weight: .bold)) - label.textColor = .label + label.font = MastodonServerRulesViewController.largeTitleFont + label.textColor = MastodonServerRulesViewController.largeTitleTextColor label.text = L10n.Scene.ServerRules.title label.numberOfLines = 0 return label @@ -34,56 +37,33 @@ final class MastodonServerRulesViewController: UIViewController, NeedsDependency private(set) lazy var subtitleLabel: UILabel = { let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .title1).scaledFont(for: UIFont.systemFont(ofSize: 20)) - label.textColor = .secondaryLabel + label.font = MastodonServerRulesViewController.subTitleFont + label.textColor = MastodonServerRulesViewController.subTitleTextColor label.text = L10n.Scene.ServerRules.subtitle(viewModel.domain) label.numberOfLines = 0 return label }() - let rulesLabel: UILabel = { - let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold)) - label.textColor = Asset.Colors.Label.primary.color - label.text = "Rules" - label.numberOfLines = 0 - return label + let tableView: UITableView = { + let tableView = UITableView() + tableView.register(OnboardingHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: OnboardingHeadlineTableViewCell.self)) + tableView.register(ServerRulesTableViewCell.self, forCellReuseIdentifier: String(describing: ServerRulesTableViewCell.self)) + tableView.rowHeight = UITableView.automaticDimension + tableView.separatorStyle = .none + tableView.backgroundColor = .clear + tableView.keyboardDismissMode = .onDrag + if #available(iOS 15.0, *) { + tableView.sectionHeaderTopPadding = 0 + } else { + // Fallback on earlier versions + } + return tableView }() - - let bottomContainerView: UIView = { - let view = UIView() - view.backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color - return view - }() - - private(set) lazy var bottomPromptMetaText: MetaText = { - let metaText = MetaText() - metaText.textAttributes = [ - .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular), maximumPointSize: 22), - .foregroundColor: UIColor.label, - ] - metaText.linkAttributes = [ - .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular), maximumPointSize: 22), - .foregroundColor: Asset.Colors.brandBlue.color, - ] - metaText.textView.isEditable = false - metaText.textView.isSelectable = false - metaText.textView.isScrollEnabled = false - metaText.textView.backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color // needs background color to prevent server rules text overlap - return metaText - }() - - let confirmButton: PrimaryActionButton = { - let button = PrimaryActionButton() - button.setTitle(L10n.Scene.ServerRules.Button.confirm, for: .normal) - return button - }() - - let scrollView: UIScrollView = { - let scrollView = UIScrollView() - scrollView.alwaysBounceVertical = true - scrollView.showsVerticalScrollIndicator = false - return scrollView + + let navigationActionView: NavigationActionView = { + let navigationActionView = NavigationActionView() + navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + return navigationActionView }() deinit { @@ -97,224 +77,90 @@ extension MastodonServerRulesViewController { override func viewDidLoad() { super.viewDidLoad() + navigationItem.leftBarButtonItem = UIBarButtonItem() + setupOnboardingAppearance() - configureTitleLabel() - configureMargin() - configTextView() - defer { setupNavigationBarBackgroundView() } - bottomContainerView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(bottomContainerView) + tableView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(tableView) NSLayoutConstraint.activate([ - view.bottomAnchor.constraint(equalTo: bottomContainerView.bottomAnchor), - bottomContainerView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - bottomContainerView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.topAnchor.constraint(equalTo: view.topAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) - bottomContainerView.preservesSuperviewLayoutMargins = true + + navigationActionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(navigationActionView) defer { - view.bringSubviewToFront(bottomContainerView) + view.bringSubviewToFront(navigationActionView) } - - confirmButton.translatesAutoresizingMaskIntoConstraints = false - bottomContainerView.addSubview(confirmButton) NSLayoutConstraint.activate([ - bottomContainerView.layoutMarginsGuide.bottomAnchor.constraint(equalTo: confirmButton.bottomAnchor, constant: MastodonServerRulesViewController.viewBottomPaddingHeight), - confirmButton.leadingAnchor.constraint(equalTo: bottomContainerView.layoutMarginsGuide.leadingAnchor), - bottomContainerView.layoutMarginsGuide.trailingAnchor.constraint(equalTo: confirmButton.trailingAnchor), - confirmButton.heightAnchor.constraint(equalToConstant: MastodonServerRulesViewController.actionButtonHeight).priority(.defaultHigh), + navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor), ]) - bottomPromptMetaText.textView.translatesAutoresizingMaskIntoConstraints = false - bottomContainerView.addSubview(bottomPromptMetaText.textView) - NSLayoutConstraint.activate([ - bottomPromptMetaText.textView.frameLayoutGuide.topAnchor.constraint(equalTo: bottomContainerView.topAnchor, constant: 20), - bottomPromptMetaText.textView.frameLayoutGuide.leadingAnchor.constraint(equalTo: bottomContainerView.layoutMarginsGuide.leadingAnchor), - bottomPromptMetaText.textView.frameLayoutGuide.trailingAnchor.constraint(equalTo: bottomContainerView.layoutMarginsGuide.trailingAnchor), - confirmButton.topAnchor.constraint(equalTo: bottomPromptMetaText.textView.frameLayoutGuide.bottomAnchor, constant: 20), - ]) + navigationActionView + .observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in + guard let self = self else { return } + let inset = navigationActionView.frame.height + self.tableView.contentInset.bottom = inset + } + .store(in: &observations) - scrollView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(scrollView) - NSLayoutConstraint.activate([ - scrollView.frameLayoutGuide.topAnchor.constraint(equalTo: view.topAnchor), - scrollView.frameLayoutGuide.leadingAnchor.constraint(equalTo: view.readableContentGuide.leadingAnchor), - scrollView.frameLayoutGuide.trailingAnchor.constraint(equalTo: view.readableContentGuide.trailingAnchor), - scrollView.frameLayoutGuide.bottomAnchor.constraint(equalTo: view.bottomAnchor), - scrollView.frameLayoutGuide.widthAnchor.constraint(equalTo: scrollView.contentLayoutGuide.widthAnchor), - ]) - - stackView.axis = .vertical - stackView.distribution = .fill - stackView.spacing = 10 - stackView.isLayoutMarginsRelativeArrangement = true - stackView.layoutMargins = UIEdgeInsets(top: 20, left: 0, bottom: 20, right: 0) - stackView.addArrangedSubview(largeTitleLabel) - stackView.addArrangedSubview(subtitleLabel) - stackView.addArrangedSubview(rulesLabel) + tableView.delegate = self + viewModel.setupDiffableDataSource(tableView: tableView) - stackView.translatesAutoresizingMaskIntoConstraints = false - scrollView.addSubview(stackView) - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor), - stackView.leadingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.leadingAnchor), - stackView.trailingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.trailingAnchor), - scrollView.contentLayoutGuide.bottomAnchor.constraint(equalTo: stackView.bottomAnchor), - ]) - - rulesLabel.attributedText = viewModel.rulesAttributedString - confirmButton.addTarget(self, action: #selector(MastodonServerRulesViewController.confirmButtonPressed(_:)), for: .touchUpInside) + navigationActionView.backButton.addTarget(self, action: #selector(MastodonServerRulesViewController.backButtonPressed(_:)), for: .touchUpInside) + navigationActionView.nextButton.addTarget(self, action: #selector(MastodonServerRulesViewController.nextButtonPressed(_:)), for: .touchUpInside) } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - scrollView.flashScrollIndicators() - } - - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - updateScrollViewContentInset() - } - - override func viewSafeAreaInsetsDidChange() { - super.viewSafeAreaInsetsDidChange() - updateScrollViewContentInset() - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - setupNavigationBarAppearance() - configureTitleLabel() - configureMargin() + tableView.flashScrollIndicators() } } extension MastodonServerRulesViewController { - private func configureTitleLabel() { - guard UIDevice.current.userInterfaceIdiom == .pad else { - return - } - - switch traitCollection.horizontalSizeClass { - case .regular: - navigationItem.largeTitleDisplayMode = .always - navigationItem.title = L10n.Scene.ServerRules.title.replacingOccurrences(of: "\n", with: " ") - largeTitleLabel.isHidden = true - default: - navigationItem.leftBarButtonItem = nil - navigationItem.largeTitleDisplayMode = .never - navigationItem.title = nil - largeTitleLabel.isHidden = false - } + + @objc private func backButtonPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + navigationController?.popViewController(animated: true) } - private func configureMargin() { - switch traitCollection.horizontalSizeClass { - case .regular: - let margin = MastodonPickServerViewController.viewEdgeMargin - stackView.layoutMargins = UIEdgeInsets(top: 32, left: margin, bottom: 20, right: margin) - bottomContainerView.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) - default: - stackView.layoutMargins = UIEdgeInsets(top: 20, left: 0, bottom: 20, right: 0) - bottomContainerView.layoutMargins = .zero - } - } -} + @objc private func nextButtonPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") -extension MastodonServerRulesViewController { - func updateScrollViewContentInset() { - view.layoutIfNeeded() - scrollView.contentInset.bottom = bottomContainerView.frame.height - scrollView.verticalScrollIndicatorInsets.bottom = bottomContainerView.frame.height + let viewModel = MastodonRegisterViewModel(domain: viewModel.domain, context: context, authenticateInfo: viewModel.authenticateInfo, instance: viewModel.instance, applicationToken: viewModel.applicationToken) + coordinator.present(scene: .mastodonRegister(viewModel: viewModel), from: self, transition: .show) } - func configTextView() { - let metaContent = ServerRulesPromptMetaContent(domain: viewModel.domain) - bottomPromptMetaText.configure(content: metaContent) - bottomPromptMetaText.textView.linkDelegate = self - } - - struct ServerRulesPromptMetaContent: MetaContent { - let string: String - let entities: [Meta.Entity] - - init(domain: String) { - let _string = L10n.Scene.ServerRules.prompt(domain) - self.string = _string - - var _entities: [Meta.Entity] = [] - - let termsOfServiceText = L10n.Scene.ServerRules.termsOfService - if let termsOfServiceRange = _string.range(of: termsOfServiceText) { - let url = Mastodon.API.serverRulesURL(domain: domain) - let entity = Meta.Entity(range: NSRange(termsOfServiceRange, in: _string), meta: .url(termsOfServiceText, trimmed: termsOfServiceText, url: url.absoluteString, userInfo: nil)) - _entities.append(entity) - } - - let privacyPolicyText = L10n.Scene.ServerRules.privacyPolicy - if let privacyPolicyRange = _string.range(of: privacyPolicyText) { - let url = Mastodon.API.privacyURL(domain: domain) - let entity = Meta.Entity(range: NSRange(privacyPolicyRange, in: _string), meta: .url(privacyPolicyText, trimmed: privacyPolicyText, url: url.absoluteString, userInfo: nil)) - _entities.append(entity) - } - - self.entities = _entities - } - - func metaAttachment(for entity: Meta.Entity) -> MetaAttachment? { - return nil - } - } - -} - -extension MastodonServerRulesViewController: UITextViewDelegate { - func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { - return false - } -} - -// MARK: - MetaTextViewDelegate -extension MastodonServerRulesViewController: MetaTextViewDelegate { - func metaTextView(_ metaTextView: MetaTextView, didSelectMeta meta: Meta) { - switch meta { - case .url(_, _, let url, _): - guard let url = URL(string: url) else { return } - coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) - default: - break - } - } -} - -extension MastodonServerRulesViewController { - @objc private func confirmButtonPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - - let viewModel = MastodonRegisterViewModel(domain: self.viewModel.domain, context: self.context, authenticateInfo: self.viewModel.authenticateInfo, instance: self.viewModel.instance, applicationToken: self.viewModel.applicationToken) - self.coordinator.present(scene: .mastodonRegister(viewModel: viewModel), from: self, transition: .show) - } } // MARK: - OnboardingViewControllerAppearance extension MastodonServerRulesViewController: OnboardingViewControllerAppearance { } -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct ServerRulesViewController_Previews: PreviewProvider { - - static var previews: some View { - UIViewControllerPreview { - let viewController = MastodonServerRulesViewController() - return viewController - } - .previewLayout(.fixed(width: 375, height: 800)) +// MARK: - UITableViewDelegate +extension MastodonServerRulesViewController: UITableViewDelegate { + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { + return UIView() } + func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + guard let diffableDataSource = viewModel.diffableDataSource, + section < diffableDataSource.snapshot().numberOfSections + else { return .leastNonzeroMagnitude } + + let sectionItem = diffableDataSource.snapshot().sectionIdentifiers[section] + switch sectionItem { + case .header: + return .leastNonzeroMagnitude + case .rules: + return 16 + } + } } - -#endif diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel+Diffable.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel+Diffable.swift new file mode 100644 index 000000000..f6385a529 --- /dev/null +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel+Diffable.swift @@ -0,0 +1,26 @@ +// +// MastodonServerRulesViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-1-5. +// + +import UIKit + +extension MastodonServerRulesViewModel { + func setupDiffableDataSource( + tableView: UITableView + ) { + diffableDataSource = ServerRuleSection.tableViewDiffableDataSource(tableView: tableView) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.header, .rules]) + snapshot.appendItems([.header(domain: domain)], toSection: .header) + let ruleItems: [ServerRuleItem] = rules.enumerated().map { i, rule in + let ruleContext = ServerRuleItem.RuleContext(index: i, rule: rule) + return ServerRuleItem.rule(ruleContext) + } + snapshot.appendItems(ruleItems, toSection: .rules) + diffableDataSource?.applySnapshot(snapshot, animated: false, completion: nil) + } +} diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel.swift index 5936a2c03..f2664e0eb 100644 --- a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel.swift +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel.swift @@ -18,6 +18,9 @@ final class MastodonServerRulesViewModel { let instance: Mastodon.Entity.Instance let applicationToken: Mastodon.Entity.Token + // output + var diffableDataSource: UITableViewDiffableDataSource? + init( domain: String, authenticateInfo: AuthenticationViewModel.AuthenticateInfo, diff --git a/Mastodon/Scene/Onboarding/ServerRules/ServerRulesTableViewCell.swift b/Mastodon/Scene/Onboarding/ServerRules/ServerRulesTableViewCell.swift new file mode 100644 index 000000000..83378b993 --- /dev/null +++ b/Mastodon/Scene/Onboarding/ServerRules/ServerRulesTableViewCell.swift @@ -0,0 +1,83 @@ +// +// ServerRulesTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-1-5. +// + +import UIKit + +final class ServerRulesTableViewCell: UITableViewCell { + + static let margin: CGFloat = 23 + + let indexImageView: UIImageView = { + let imageView = UIImageView() + imageView.tintColor = Asset.Colors.Label.primary.color + return imageView + }() + + let ruleLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold)) + label.textColor = Asset.Colors.Label.primary.color + label.numberOfLines = 0 + return label + }() + + let separalerLine: UIView = { + let view = UIView() + view.backgroundColor = Asset.Theme.System.separator.color + return view + }() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ServerRulesTableViewCell { + + private func _init() { + selectionStyle = .none + backgroundColor = .clear + + indexImageView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(indexImageView) + NSLayoutConstraint.activate([ + indexImageView.topAnchor.constraint(greaterThanOrEqualTo: contentView.topAnchor, constant: ServerRulesTableViewCell.margin), + indexImageView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + contentView.bottomAnchor.constraint(greaterThanOrEqualTo: indexImageView.bottomAnchor, constant: ServerRulesTableViewCell.margin), + indexImageView.centerYAnchor.constraint(equalTo: contentView.centerYAnchor), + indexImageView.widthAnchor.constraint(equalToConstant: 32).priority(.required - 1), + indexImageView.heightAnchor.constraint(equalToConstant: 32).priority(.required - 1), + ]) + + ruleLabel.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(ruleLabel) + NSLayoutConstraint.activate([ + ruleLabel.topAnchor.constraint(greaterThanOrEqualTo: contentView.topAnchor, constant: ServerRulesTableViewCell.margin), + ruleLabel.leadingAnchor.constraint(equalTo: indexImageView.trailingAnchor, constant: 16), + ruleLabel.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + contentView.bottomAnchor.constraint(greaterThanOrEqualTo: ruleLabel.bottomAnchor, constant: ServerRulesTableViewCell.margin), + ruleLabel.centerYAnchor.constraint(equalTo: contentView.centerYAnchor), + ]) + + separalerLine.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(separalerLine) + NSLayoutConstraint.activate([ + separalerLine.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + separalerLine.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + separalerLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + separalerLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.required - 1), + ]) + } + +} diff --git a/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift index 4b5bb124f..dc30227cf 100644 --- a/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift +++ b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift @@ -6,11 +6,14 @@ // import UIKit +import MastodonUI final class NavigationActionView: UIView { static let buttonHeight: CGFloat = 50 + private var observations = Set() + let buttonContainer: UIStackView = { let stackView = UIStackView() stackView.axis = .horizontal @@ -18,6 +21,7 @@ final class NavigationActionView: UIView { return stackView }() + let backButtonShadowContainer = ShadowBackgroundContainer() let backButton: PrimaryActionButton = { let button = PrimaryActionButton() button.action = .back @@ -25,6 +29,7 @@ final class NavigationActionView: UIView { return button }() + let nextButtonShadowContainer = ShadowBackgroundContainer() let nextButton: PrimaryActionButton = { let button = PrimaryActionButton() button.action = .next @@ -56,14 +61,33 @@ extension NavigationActionView { safeAreaLayoutGuide.bottomAnchor.constraint(equalTo: buttonContainer.bottomAnchor, constant: 8), ]) - backButton.translatesAutoresizingMaskIntoConstraints = false - buttonContainer.addArrangedSubview(backButton) - nextButton.translatesAutoresizingMaskIntoConstraints = false - buttonContainer.addArrangedSubview(nextButton) + backButtonShadowContainer.translatesAutoresizingMaskIntoConstraints = false + buttonContainer.addArrangedSubview(backButtonShadowContainer) + nextButtonShadowContainer.translatesAutoresizingMaskIntoConstraints = false + buttonContainer.addArrangedSubview(nextButtonShadowContainer) NSLayoutConstraint.activate([ - backButton.heightAnchor.constraint(equalToConstant: NavigationActionView.buttonHeight).priority(.required - 1), - nextButton.heightAnchor.constraint(equalToConstant: NavigationActionView.buttonHeight).priority(.required - 1), - nextButton.widthAnchor.constraint(equalTo: backButton.widthAnchor, multiplier: 2).priority(.required - 1), + backButtonShadowContainer.heightAnchor.constraint(equalToConstant: NavigationActionView.buttonHeight).priority(.required - 1), + nextButtonShadowContainer.heightAnchor.constraint(equalToConstant: NavigationActionView.buttonHeight).priority(.required - 1), + nextButtonShadowContainer.widthAnchor.constraint(equalTo: backButtonShadowContainer.widthAnchor, multiplier: 2).priority(.required - 1), + ]) + + backButton.translatesAutoresizingMaskIntoConstraints = false + backButtonShadowContainer.addSubview(backButton) + NSLayoutConstraint.activate([ + backButton.topAnchor.constraint(equalTo: backButtonShadowContainer.topAnchor), + backButton.leadingAnchor.constraint(equalTo: backButtonShadowContainer.leadingAnchor), + backButton.trailingAnchor.constraint(equalTo: backButtonShadowContainer.trailingAnchor), + backButton.bottomAnchor.constraint(equalTo: backButtonShadowContainer.bottomAnchor), + ]) + + nextButton.translatesAutoresizingMaskIntoConstraints = false + nextButtonShadowContainer.addSubview(nextButton) + NSLayoutConstraint.activate([ + nextButton.topAnchor.constraint(equalTo: nextButtonShadowContainer.topAnchor), + nextButton.leadingAnchor.constraint(equalTo: nextButtonShadowContainer.leadingAnchor), + nextButton.trailingAnchor.constraint(equalTo: nextButtonShadowContainer.trailingAnchor), + nextButton.bottomAnchor.constraint(equalTo: nextButtonShadowContainer.bottomAnchor), ]) } + } diff --git a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerTitleCell.swift b/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift similarity index 79% rename from Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerTitleCell.swift rename to Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift index 161b15d09..f8090734b 100644 --- a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerTitleCell.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift @@ -1,5 +1,5 @@ // -// PickServerTitleCell.swift +// OnboardingHeadlineTableViewCell.swift // Mastodon // // Created by BradGao on 2021/2/23. @@ -7,12 +7,12 @@ import UIKit -final class PickServerTitleCell: UITableViewCell { +final class OnboardingHeadlineTableViewCell: UITableViewCell { let titleLabel: UILabel = { let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 28, weight: .bold)) - label.textColor = Asset.Colors.Label.primary.color + label.font = MastodonPickServerViewController.largeTitleFont + label.textColor = MastodonPickServerViewController.largeTitleTextColor label.text = L10n.Scene.ServerPicker.title label.adjustsFontForContentSizeCategory = true label.numberOfLines = 0 @@ -21,8 +21,8 @@ final class PickServerTitleCell: UITableViewCell { let subTitleLabel: UILabel = { let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) - label.textColor = Asset.Colors.Label.secondary.color + label.font = MastodonPickServerViewController.subTitleFont + label.textColor = MastodonPickServerViewController.subTitleTextColor label.text = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual." label.adjustsFontForContentSizeCategory = true label.numberOfLines = 0 @@ -40,7 +40,7 @@ final class PickServerTitleCell: UITableViewCell { } } -extension PickServerTitleCell { +extension OnboardingHeadlineTableViewCell { private func _init() { selectionStyle = .none diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift index c4fae4dd7..aef6a8abc 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift @@ -21,6 +21,22 @@ extension OnboardingViewControllerAppearance { static var viewBottomPaddingHeight: CGFloat { return 11 } static var viewBottomPaddingHeightExtend: CGFloat { return 22 } + static var largeTitleFont: UIFont { + return UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 28, weight: .bold)) + } + + static var largeTitleTextColor: UIColor { + return Asset.Colors.Label.primary.color + } + + static var subTitleFont: UIFont { + return UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) + } + + static var subTitleTextColor: UIColor { + return Asset.Colors.Label.secondary.color + } + func setupOnboardingAppearance() { view.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color diff --git a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift index c86b059bb..1dff6965b 100644 --- a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift +++ b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift @@ -56,6 +56,7 @@ final class WelcomeViewController: UIViewController, NeedsDependency { button.setTitleColor(.black, for: .normal) return button }() + let signUpButtonShadowView = UIView() private(set) lazy var signInButton: PrimaryActionButton = { let button = PrimaryActionButton() @@ -72,7 +73,6 @@ final class WelcomeViewController: UIViewController, NeedsDependency { }() let signInButtonShadowView = UIView() - deinit { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) } @@ -117,6 +117,16 @@ extension WelcomeViewController { signInButton.heightAnchor.constraint(equalToConstant: WelcomeViewController.actionButtonHeight).priority(.required - 1), ]) + signUpButtonShadowView.translatesAutoresizingMaskIntoConstraints = false + buttonContainer.addSubview(signUpButtonShadowView) + buttonContainer.sendSubviewToBack(signUpButtonShadowView) + NSLayoutConstraint.activate([ + signUpButtonShadowView.topAnchor.constraint(equalTo: signUpButton.topAnchor), + signUpButtonShadowView.leadingAnchor.constraint(equalTo: signUpButton.leadingAnchor), + signUpButtonShadowView.trailingAnchor.constraint(equalTo: signUpButton.trailingAnchor), + signUpButtonShadowView.bottomAnchor.constraint(equalTo: signUpButton.bottomAnchor), + ]) + signInButtonShadowView.translatesAutoresizingMaskIntoConstraints = false buttonContainer.addSubview(signInButtonShadowView) buttonContainer.sendSubviewToBack(signInButtonShadowView) @@ -168,6 +178,17 @@ extension WelcomeViewController { extension WelcomeViewController { private func setupButtonShadowView() { + signUpButtonShadowView.layer.setupShadow( + color: .black, + alpha: 0.25, + x: 0, + y: 1, + blur: 2, + spread: 0, + roundedRect: signInButtonShadowView.bounds, + byRoundingCorners: .allCorners, + cornerRadii: CGSize(width: 10, height: 10) + ) signInButtonShadowView.layer.setupShadow( color: .black, alpha: 0.25, diff --git a/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift b/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift index 3bda63dec..676d558aa 100644 --- a/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift +++ b/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift @@ -9,8 +9,8 @@ import UIKit class PrimaryActionButton: UIButton { - var isLoading: Bool = false - + private var originalButtonTitle: String? + lazy var activityIndicator: UIActivityIndicatorView = { let indicator = UIActivityIndicatorView(style: .medium) indicator.color = .white @@ -18,16 +18,13 @@ class PrimaryActionButton: UIButton { indicator.translatesAutoresizingMaskIntoConstraints = false return indicator }() - - private var originalButtonTitle: String? - + var adjustsBackgroundImageWhenUserInterfaceStyleChanges = true var action: Action = .next { didSet { setupAppearance(action: action) } } - - var adjustsBackgroundImageWhenUserInterfaceStyleChanges = true + var isLoading: Bool = false override init(frame: CGRect) { super.init(frame: frame) diff --git a/Mastodon/Extension/CALayer.swift b/MastodonSDK/Sources/MastodonExtension/CALayer.swift similarity index 95% rename from Mastodon/Extension/CALayer.swift rename to MastodonSDK/Sources/MastodonExtension/CALayer.swift index 41ce739ee..684a4a706 100644 --- a/Mastodon/Extension/CALayer.swift +++ b/MastodonSDK/Sources/MastodonExtension/CALayer.swift @@ -9,7 +9,7 @@ import UIKit extension CALayer { - func setupShadow( + public func setupShadow( color: UIColor = .black, alpha: Float = 0.5, x: CGFloat = 0, @@ -43,9 +43,8 @@ extension CALayer { } } - func removeShadow() { + public func removeShadow() { shadowRadius = 0 } - - + } diff --git a/MastodonSDK/Sources/MastodonExtension/UIImage.swift b/MastodonSDK/Sources/MastodonExtension/UIImage.swift index 178d289db..e3560af63 100644 --- a/MastodonSDK/Sources/MastodonExtension/UIImage.swift +++ b/MastodonSDK/Sources/MastodonExtension/UIImage.swift @@ -10,12 +10,28 @@ import CoreImage.CIFilterBuiltins import UIKit extension UIImage { - public static func placeholder(size: CGSize = CGSize(width: 1, height: 1), color: UIColor) -> UIImage { + public static func placeholder( + size: CGSize = CGSize(width: 1, height: 1), + color: UIColor, + cornerRadius: CGFloat = 0 + ) -> UIImage { let render = UIGraphicsImageRenderer(size: size) return render.image { (context: UIGraphicsImageRendererContext) in + // set clear fill context.cgContext.setFillColor(color.cgColor) - context.fill(CGRect(origin: .zero, size: size)) + + let rect = CGRect(origin: .zero, size: size) + + // clip corner if needs + if cornerRadius > 0 { + let path = UIBezierPath(roundedRect: rect, cornerRadius: cornerRadius).cgPath + context.cgContext.addPath(path) + context.cgContext.clip(using: .evenOdd) + } + + // set fill + context.fill(rect) } } } diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift index d0d16ee4a..f245d741a 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Instance.swift @@ -86,7 +86,7 @@ extension Mastodon.Entity.Instance { } extension Mastodon.Entity.Instance { - public struct Rule: Codable { + public struct Rule: Codable, Hashable { public let id: String public let text: String } diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/ShadowBackgroundContainer.swift b/MastodonSDK/Sources/MastodonUI/View/Container/ShadowBackgroundContainer.swift new file mode 100644 index 000000000..6b45a050a --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Container/ShadowBackgroundContainer.swift @@ -0,0 +1,48 @@ +// +// ShadowBackgroundContainer.swift +// +// +// Created by MainasuK on 2022-1-5. +// + +import UIKit +import MastodonExtension + +public final class ShadowBackgroundContainer: UIView { + + public let shadowLayer = CALayer() + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ShadowBackgroundContainer { + private func _init() { + layer.insertSublayer(shadowLayer, at: 0) + } + + public override func layoutSubviews() { + super.layoutSubviews() + + shadowLayer.frame = bounds + shadowLayer.setupShadow( + color: .black, + alpha: 0.25, + x: 0, + y: 1, + blur: 2, + spread: 0, + roundedRect: bounds, + byRoundingCorners: .allCorners, + cornerRadii: CGSize(width: 10, height: 10) + ) + } +} From 5133df19348666d721901053a017647185645ada Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Jan 2022 11:27:08 +0100 Subject: [PATCH 073/374] New translations app.json (Japanese) --- .../StringsConvertor/input/ja_JP/app.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index 942cec428..af9f785b9 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -67,7 +67,7 @@ "done": "完了", "confirm": "確認", "continue": "続ける", - "compose": "Compose", + "compose": "新規作成", "cancel": "キャンセル", "discard": "破棄", "try_again": "再実行", @@ -82,7 +82,7 @@ "share_user": "%sを共有", "share_post": "投稿を共有", "open_in_safari": "Safariで開く", - "open_in_browser": "Open in Browser", + "open_in_browser": "ブラウザで開く", "find_people": "フォローする人を見つける", "manually_search": "手動で検索する", "skip": "スキップ", @@ -204,7 +204,7 @@ "academia": "アカデミア", "activism": "アクティビズム", "food": "食べ物", - "furry": "furry", + "furry": "ケモノ", "games": "ゲーム", "general": "全般", "journalism": "言論", @@ -416,10 +416,10 @@ } }, "follower": { - "footer": "Followers from other servers are not displayed." + "footer": "他のサーバーからのフォロワーは表示されません。" }, "following": { - "footer": "Follows from other servers are not displayed." + "footer": "他のサーバーにいるフォローは表示されません。" }, "search": { "title": "検索", @@ -544,14 +544,14 @@ } }, "account_list": { - "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", - "dismiss_account_switcher": "Dismiss Account Switcher", + "tab_bar_hint": "現在のアカウント: %s. ダブルタップしてアカウント切替画面を表示します", + "dismiss_account_switcher": "アカウント切替画面を閉じます", "add_account": "アカウントを追加" }, "wizard": { "new_in_mastodon": "Mastodon の新機能", "multiple_account_switch_intro_description": "プロフィールボタンを押して複数のアカウントを切り替えます。", - "accessibility_hint": "Double tap to dismiss this wizard" + "accessibility_hint": "チュートリアルを閉じるには、ダブルタップしてください" } } } \ No newline at end of file From 41b8089fcb294669dab154ceecca52923df78e6c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Jan 2022 11:27:09 +0100 Subject: [PATCH 074/374] New translations Intents.strings (Japanese) --- .../Intents/input/ja_JP/Intents.strings | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings b/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings index 6877490ba..a2c7eba5b 100644 --- a/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Post on Mastodon"; +"16wxgf" = "Mastodonに投稿"; -"751xkl" = "Text Content"; +"751xkl" = "テキストコンテンツ"; -"CsR7G2" = "Post on Mastodon"; +"CsR7G2" = "Mastodonに投稿"; "HZSGTr" = "What content to post?"; -"HdGikU" = "Posting failed"; +"HdGikU" = "投稿に失敗しました"; "KDNTJ4" = "Failure Reason"; "RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Post"; +"RxSqsb" = "投稿"; -"WCIR3D" = "Post ${content} on Mastodon"; +"WCIR3D" = "Mastodonに ${content} を投稿"; "ZKJSNu" = "Post"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibility"; +"ZbSjzC" = "公開範囲"; -"Zo4jgJ" = "Post Visibility"; +"Zo4jgJ" = "投稿の公開範囲"; "apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; "apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; -"ayoYEb-dYQ5NN" = "${content}, Public"; +"ayoYEb-dYQ5NN" = "${content}, パブリック"; -"ayoYEb-ehFLjY" = "${content}, Followers Only"; +"ayoYEb-ehFLjY" = "${content}, フォロワーのみ"; -"dUyuGg" = "Post on Mastodon"; +"dUyuGg" = "Mastodonに投稿"; -"dYQ5NN" = "Public"; +"dYQ5NN" = "パブリック"; -"ehFLjY" = "Followers Only"; +"ehFLjY" = "フォロワーのみ"; -"gfePDu" = "Posting failed. ${failureReason}"; +"gfePDu" = "投稿に失敗しました。 ${failureReason}"; -"k7dbKQ" = "Post was sent successfully."; +"k7dbKQ" = "投稿に成功しました。"; -"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; +"oGiqmY-dYQ5NN" = "「パブリック」で間違いないですか?"; -"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; +"oGiqmY-ehFLjY" = "「フォロワーのみ」で間違いないですか?"; "rM6dvp" = "URL"; -"ryJLwG" = "Post was sent successfully. "; +"ryJLwG" = "投稿に成功しました。 "; From 29e9a5f8b61c22c0f57bb06aeeb16d2e219e7651 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Jan 2022 19:08:33 +0100 Subject: [PATCH 075/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 148 +++++++++--------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 6d3b2fcc2..180aea224 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -2,84 +2,84 @@ "common": { "alerts": { "common": { - "please_try_again": "Please try again.", - "please_try_again_later": "Please try again later." + "please_try_again": "Mesedez, saiatu berriro.", + "please_try_again_later": "Mesedez beranduago saiatu." }, "sign_up_failure": { - "title": "Sign Up Failure" + "title": "Hutsegitea izen-ematean" }, "server_error": { - "title": "Server Error" + "title": "Zerbitzari-errorea" }, "vote_failure": { - "title": "Vote Failure", - "poll_ended": "The poll has ended" + "title": "Hutsegitea botoa ematean", + "poll_ended": "Inkesta amaitu da" }, "discard_post_content": { - "title": "Discard Draft", - "message": "Confirm to discard composed post content." + "title": "Baztertu zirriborroa", + "message": "Berretsi idatzitako bidalketaren edukia baztertzea." }, "publish_post_failure": { - "title": "Publish Failure", - "message": "Failed to publish the post.\nPlease check your internet connection.", + "title": "Hutsegitea argitaratzean", + "message": "Huts egin du bidalketa argitaratzean.\nEgiaztatu Interneteko konexioa.", "attachments_message": { - "video_attach_with_photo": "Cannot attach a video to a post that already contains images.", - "more_than_one_video": "Cannot attach more than one video." + "video_attach_with_photo": "Ezin da irudiak dituen bidalketa batean bideo bat erantsi.", + "more_than_one_video": "Ezin da bideo bat baino gehiago erantsi." } }, "edit_profile_failure": { - "title": "Edit Profile Error", - "message": "Cannot edit profile. Please try again." + "title": "Errorea profila editatzean", + "message": "Ezin da profila editatu. Mesedez saiatu berriro." }, "sign_out": { - "title": "Sign Out", - "message": "Are you sure you want to sign out?", - "confirm": "Sign Out" + "title": "Amaitu saioa", + "message": "Ziur saioa amaitu nahi duzula?", + "confirm": "Amaitu saioa" }, "block_domain": { - "title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.", - "block_entire_domain": "Block Domain" + "title": "Ziur, erabat ziur, %s domeinu osoa blokeatu nahi duzula? Gehienetan erabiltzaile gutxi batzuk blokeatu edo mututzearekin nahikoa da. Ez duzu domeinu horretako edukirik ikusiko eta domeinu horretako zure jarraitzaileak kenduko dira.", + "block_entire_domain": "Blokeatu domeinua" }, "save_photo_failure": { - "title": "Save Photo Failure", - "message": "Please enable the photo library access permission to save the photo." + "title": "Hutsegitea argazkia gordetzean", + "message": "Gaitu argazki galeriarako sarbidearen baimena argazkia gordetzeko." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Ziur zaude bidalketa hau ezabatu nahi duzula?", + "delete": "Ezabatu" }, "clean_cache": { - "title": "Clean Cache", - "message": "Successfully cleaned %s cache." + "title": "Garbitu cache-a", + "message": "Behar bezala garbitu da %s cache-a." } }, "controls": { "actions": { - "back": "Back", - "next": "Next", - "previous": "Previous", - "open": "Open", - "add": "Add", - "remove": "Remove", - "edit": "Edit", - "save": "Save", - "ok": "OK", - "done": "Done", - "confirm": "Confirm", - "continue": "Continue", - "compose": "Compose", - "cancel": "Cancel", - "discard": "Discard", - "try_again": "Try Again", - "take_photo": "Take Photo", - "save_photo": "Save Photo", - "copy_photo": "Copy Photo", - "sign_in": "Sign In", - "sign_up": "Sign Up", - "see_more": "See More", - "preview": "Preview", - "share": "Share", - "share_user": "Share %s", + "back": "Atzera", + "next": "Hurrengoa", + "previous": "Aurrekoa", + "open": "Ireki", + "add": "Gehitu", + "remove": "Kendu", + "edit": "Editatu", + "save": "Gorde", + "ok": "Ados", + "done": "Egina", + "confirm": "Berretsi", + "continue": "Jarraitu", + "compose": "Idatzi", + "cancel": "Utzi", + "discard": "Baztertu", + "try_again": "Saiatu berriro", + "take_photo": "Atera argazkia", + "save_photo": "Gorde argazkia", + "copy_photo": "Kopiatu argazkia", + "sign_in": "Hasi saioa", + "sign_up": "Eman Izena", + "see_more": "Ikusi gehiago", + "preview": "Aurrebista", + "share": "Partekatu", + "share_user": "Partekatu %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", "open_in_browser": "Open in Browser", @@ -147,40 +147,40 @@ "mention": "Mention", "link": "Link", "hashtag": "Hashtag", - "email": "Email", - "emoji": "Emoji" + "email": "Eposta", + "emoji": "Emojia" } }, "friendship": { - "follow": "Follow", - "following": "Following", - "request": "Request", - "pending": "Pending", - "block": "Block", - "block_user": "Block %s", - "block_domain": "Block %s", - "unblock": "Unblock", - "unblock_user": "Unblock %s", - "blocked": "Blocked", - "mute": "Mute", - "mute_user": "Mute %s", - "unmute": "Unmute", - "unmute_user": "Unmute %s", - "muted": "Muted", - "edit_info": "Edit Info" + "follow": "Jarraitu", + "following": "Jarraitzen", + "request": "Eskaera", + "pending": "Zain", + "block": "Blokeatu", + "block_user": "Blokeatu %s", + "block_domain": "Blokeatu %s", + "unblock": "Desblokeatu", + "unblock_user": "Desblokeatu %s", + "blocked": "Blokeatuta", + "mute": "Mututu", + "mute_user": "Mututu %s", + "unmute": "Desmututu", + "unmute_user": "Desmututu %s", + "muted": "Mutututa", + "edit_info": "Editatu informazioa" }, "timeline": { - "filtered": "Filtered", + "filtered": "Iragazita", "timestamp": { - "now": "Now" + "now": "Orain" }, "loader": { - "load_missing_posts": "Load missing posts", - "loading_missing_posts": "Loading missing posts...", - "show_more_replies": "Show more replies" + "load_missing_posts": "Kargatu falta diren bidalketak", + "loading_missing_posts": "Falta diren bidalketak kargatzen...", + "show_more_replies": "Erakutsi erantzun gehiago" }, "header": { - "no_status_found": "No Post Found", + "no_status_found": "Ez da bidalketa aurkitu", "blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.", "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.", From 8bbc083712651459c475099d47c38c4a411fb690 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Jan 2022 20:16:26 +0100 Subject: [PATCH 076/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 180aea224..82128bd28 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -181,45 +181,45 @@ }, "header": { "no_status_found": "Ez da bidalketa aurkitu", - "blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", - "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.", - "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.", - "user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.", - "suspended_warning": "This user has been suspended.", - "user_suspended_warning": "%s’s account has been suspended." + "blocking_warning": "Ezin duzu erabiltzaile honen profila ikusi\ndesblokeatzen duzun arte.\nZure profilak itxura hau du berarentzat.", + "user_blocking_warning": "Ezin duzu %s erabiltzailearen\nprofila ikusi desblokeatzen duzun arte.\nZure profilak itxura hau du berarentzat.", + "blocked_warning": "Ezin duzu erabiltzaile honen profila ikusi\ndesblokeatzen zaituen arte.", + "user_blocked_warning": "Ezin duzu %s erabiltzailearen\nprofila ikusi desblokeatzen zaituen arte.", + "suspended_warning": "Erabiltzaile hau kanporatua izan da.", + "user_suspended_warning": "%s kontua kanporatua izan da." } } } }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Sare sozialak\nberriz zure eskuetan." }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Aukeratu zerbitzari bat,\nedozein zerbitzari.", "button": { "category": { - "all": "All", - "all_accessiblity_description": "Category: All", - "academia": "academia", - "activism": "activism", - "food": "food", + "all": "Guztiak", + "all_accessiblity_description": "Kategoria: Guztiak", + "academia": "akademia", + "activism": "aktibismoa", + "food": "janaria", "furry": "furry", - "games": "games", - "general": "general", - "journalism": "journalism", - "lgbt": "lgbt", - "regional": "regional", - "art": "art", - "music": "music", - "tech": "tech" + "games": "jokoak", + "general": "orokorra", + "journalism": "kazetaritza", + "lgbt": "LGBTQ+", + "regional": "herrialdekoa", + "art": "artea", + "music": "musika", + "tech": "teknologia" }, - "see_less": "See Less", - "see_more": "See More" + "see_less": "Ikusi gutxiago", + "see_more": "Ikusi gehiago" }, "label": { - "language": "LANGUAGE", - "users": "USERS", + "language": "HIZKUNTZA", + "users": "ERABILTZAILEAK", "category": "CATEGORY" }, "input": { From 44e44f781f00b36db197bd9675fe32ce0c911e45 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Jan 2022 20:16:26 +0100 Subject: [PATCH 077/374] New translations ios-infoPlist.json (Basque) --- .../StringsConvertor/input/eu_ES/ios-infoPlist.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/ios-infoPlist.json b/Localization/StringsConvertor/input/eu_ES/ios-infoPlist.json index c6db73de0..bc0457eab 100644 --- a/Localization/StringsConvertor/input/eu_ES/ios-infoPlist.json +++ b/Localization/StringsConvertor/input/eu_ES/ios-infoPlist.json @@ -1,6 +1,6 @@ { - "NSCameraUsageDescription": "Used to take photo for post status", - "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", - "NewPostShortcutItemTitle": "New Post", - "SearchShortcutItemTitle": "Search" + "NSCameraUsageDescription": "Bidalketetarako argazkiak ateratzeko erabiltzen da", + "NSPhotoLibraryAddUsageDescription": "Argazkiak Argazki-liburutegian gordetzeko erabiltzen da", + "NewPostShortcutItemTitle": "Bidalketa berria", + "SearchShortcutItemTitle": "Bilatu" } From 1576a8e486db0dde6fb86f24767b2680d6d708d0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Jan 2022 20:16:27 +0100 Subject: [PATCH 078/374] New translations Localizable.stringsdict (Basque) --- .../input/eu_ES/Localizable.stringsdict | 100 +++++++++--------- 1 file changed, 50 insertions(+), 50 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/Localizable.stringsdict b/Localization/StringsConvertor/input/eu_ES/Localizable.stringsdict index 730e2902a..817e8372b 100644 --- a/Localization/StringsConvertor/input/eu_ES/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/eu_ES/Localizable.stringsdict @@ -13,15 +13,15 @@ NSStringFormatValueTypeKey ld one - 1 unread notification + Irakurri gabeko jakinarazpen bat other - %ld unread notification + Irakurri gabeko %ld jakinarazpen a11y.plural.count.input_limit_exceeds NSStringLocalizedFormatKey - Input limit exceeds %#@character_count@ + Sarrerak %#@character_count@ karaktereko muga gainditzen du character_count NSStringFormatSpecTypeKey @@ -29,15 +29,15 @@ NSStringFormatValueTypeKey ld one - 1 character + karaktere bat other - %ld characters + %ld karaktere a11y.plural.count.input_limit_remains NSStringLocalizedFormatKey - Input limit remains %#@character_count@ + Sarreraren karaktere muga %#@character_count@ da oraindik character_count NSStringFormatSpecTypeKey @@ -45,9 +45,9 @@ NSStringFormatValueTypeKey ld one - 1 character + karaktere bat other - %ld characters + %ld karaktere plural.count.metric_formatted.post @@ -61,9 +61,9 @@ NSStringFormatValueTypeKey ld one - post + bidalketa other - posts + bidalketa plural.count.post @@ -77,9 +77,9 @@ NSStringFormatValueTypeKey ld one - 1 post + Bidalketa bat other - %ld posts + %ld bidalketa plural.count.favorite @@ -93,9 +93,9 @@ NSStringFormatValueTypeKey ld one - 1 favorite + Gogoko bat other - %ld favorites + %ld gogoko plural.count.reblog @@ -109,9 +109,9 @@ NSStringFormatValueTypeKey ld one - 1 reblog + Bultzada bat other - %ld reblogs + %ld bultzada plural.count.vote @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 vote + Boto bat other - %ld votes + %ld boto plural.count.voter @@ -141,9 +141,9 @@ NSStringFormatValueTypeKey ld one - 1 voter + Boto-emaile bat other - %ld voters + %ld boto-emaile plural.people_talking @@ -157,9 +157,9 @@ NSStringFormatValueTypeKey ld one - 1 people talking + Pertsona bat hizketan other - %ld people talking + %ld pertsona hizketan plural.count.following @@ -173,9 +173,9 @@ NSStringFormatValueTypeKey ld one - 1 following + Bat jarraitzen other - %ld following + %ld jarraitzen plural.count.follower @@ -189,9 +189,9 @@ NSStringFormatValueTypeKey ld one - 1 follower + Jarraitzaile bat other - %ld followers + %ld jarraitzaile date.year.left @@ -205,9 +205,9 @@ NSStringFormatValueTypeKey ld one - 1 year left + Urte bat geratzen da other - %ld years left + %ld urte geratzen dira date.month.left @@ -221,9 +221,9 @@ NSStringFormatValueTypeKey ld one - 1 months left + Hilabete bat geratzen da other - %ld months left + %ld hilabete geratzen dira date.day.left @@ -237,9 +237,9 @@ NSStringFormatValueTypeKey ld one - 1 day left + Egun bat geratzen da other - %ld days left + %ld egun geratzen dira date.hour.left @@ -253,9 +253,9 @@ NSStringFormatValueTypeKey ld one - 1 hour left + Ordu 1 geratzen da other - %ld hours left + %ld ordu geratzen dira date.minute.left @@ -269,9 +269,9 @@ NSStringFormatValueTypeKey ld one - 1 minute left + Minutu 1 geratzen da other - %ld minutes left + %ld minutu geratzen dira date.second.left @@ -285,9 +285,9 @@ NSStringFormatValueTypeKey ld one - 1 second left + Segundo 1 geratzen da other - %ld seconds left + %ld segundo geratzen dira date.year.ago.abbr @@ -301,9 +301,9 @@ NSStringFormatValueTypeKey ld one - 1y ago + Duela urtebete other - %ldy ago + Duela %ld urte date.month.ago.abbr @@ -317,9 +317,9 @@ NSStringFormatValueTypeKey ld one - 1M ago + Duela hilabete other - %ldM ago + Duela %ld hilabete date.day.ago.abbr @@ -333,9 +333,9 @@ NSStringFormatValueTypeKey ld one - 1d ago + Duela egun bat other - %ldd ago + Duela %ld egun date.hour.ago.abbr @@ -349,9 +349,9 @@ NSStringFormatValueTypeKey ld one - 1h ago + Duela ordubete other - %ldh ago + Duela %ld ordu date.minute.ago.abbr @@ -365,9 +365,9 @@ NSStringFormatValueTypeKey ld one - 1m ago + Duela minutu bat other - %ldm ago + Duela %ld minutu date.second.ago.abbr @@ -381,9 +381,9 @@ NSStringFormatValueTypeKey ld one - 1s ago + Duela segundo bat other - %lds ago + Duela %ld segundo From 755e33d57f7d348d9bf4d4b97e596e7da6e75c4c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Jan 2022 20:16:28 +0100 Subject: [PATCH 079/374] New translations Intents.strings (Basque) --- .../Intents/input/eu_ES/Intents.strings | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/eu_ES/Intents.strings b/Localization/StringsConvertor/Intents/input/eu_ES/Intents.strings index 6877490ba..dbc27c1cf 100644 --- a/Localization/StringsConvertor/Intents/input/eu_ES/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/eu_ES/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Post on Mastodon"; +"16wxgf" = "Argitaratu Mastodonen"; -"751xkl" = "Text Content"; +"751xkl" = "Testu-edukia"; -"CsR7G2" = "Post on Mastodon"; +"CsR7G2" = "Argitaratu Mastodonen"; -"HZSGTr" = "What content to post?"; +"HZSGTr" = "Ze eduki argitaratu?"; -"HdGikU" = "Posting failed"; +"HdGikU" = "Argitaratzeak huts egin du"; -"KDNTJ4" = "Failure Reason"; +"KDNTJ4" = "Hutsegitearen arrazoia"; -"RHxKOw" = "Send Post with text content"; +"RHxKOw" = "Argitaratu bidalketa testu-edukiarekin"; -"RxSqsb" = "Post"; +"RxSqsb" = "Bidali"; -"WCIR3D" = "Post ${content} on Mastodon"; +"WCIR3D" = "Argitaratu ${content} Mastodonen"; -"ZKJSNu" = "Post"; +"ZKJSNu" = "Bidali"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibility"; +"ZbSjzC" = "Ikusgaitasuna"; -"Zo4jgJ" = "Post Visibility"; +"Zo4jgJ" = "Bidalketaren ikusgaitasuna"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "'Publikoa'-rekin bat datozen ${count} aukera daude."; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "'Jarraitzaileak soilik'-ekin bat datozen ${count} aukera daude."; -"ayoYEb-dYQ5NN" = "${content}, Public"; +"ayoYEb-dYQ5NN" = "${content}, publikoa"; -"ayoYEb-ehFLjY" = "${content}, Followers Only"; +"ayoYEb-ehFLjY" = "${content}, jarraitzaileak besterik ez"; -"dUyuGg" = "Post on Mastodon"; +"dUyuGg" = "Argitaratu Mastodonen"; -"dYQ5NN" = "Public"; +"dYQ5NN" = "Publikoa"; -"ehFLjY" = "Followers Only"; +"ehFLjY" = "Jarraitzaileak soilik"; -"gfePDu" = "Posting failed. ${failureReason}"; +"gfePDu" = "Argitaratzeak huts egin du. ${failureReason}"; -"k7dbKQ" = "Post was sent successfully."; +"k7dbKQ" = "Bidalketa behar bezala bidali da."; -"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; +"oGiqmY-dYQ5NN" = "Berresteagatik, 'Publikoa' izatea nahi duzu?"; -"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; +"oGiqmY-ehFLjY" = "Berresteagatik, 'Jarraitzaileak soilik' izatea nahi duzu?"; -"rM6dvp" = "URL"; +"rM6dvp" = "URLa"; -"ryJLwG" = "Post was sent successfully. "; +"ryJLwG" = "Bidalketa behar bezala bidali da. "; From e6ee0c67abb0caeaa9c7ebd3fed8ca9d2a206fc6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Jan 2022 20:16:29 +0100 Subject: [PATCH 080/374] New translations Intents.stringsdict (Basque) --- .../Intents/input/eu_ES/Intents.stringsdict | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/eu_ES/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/eu_ES/Intents.stringsdict index 18422c772..9246c3475 100644 --- a/Localization/StringsConvertor/Intents/input/eu_ES/Intents.stringsdict +++ b/Localization/StringsConvertor/Intents/input/eu_ES/Intents.stringsdict @@ -5,7 +5,7 @@ There are ${count} options matching ‘${content}’. - 2 NSStringLocalizedFormatKey - There are %#@count_option@ matching ‘${content}’. + ${content}(e)kin bat datozen %#@count_option@ daude. count_option NSStringFormatSpecTypeKey @@ -13,15 +13,15 @@ NSStringFormatValueTypeKey %ld one - 1 option + Aukera 1 other - %ld options + %ld aukera There are ${count} options matching ‘${visibility}’. NSStringLocalizedFormatKey - There are %#@count_option@ matching ‘${visibility}’. + ${visibility}(e)kin bat datozen %#@count_option@ daude. count_option NSStringFormatSpecTypeKey @@ -29,9 +29,9 @@ NSStringFormatValueTypeKey %ld one - 1 option + Aukera 1 other - %ld options + %ld aukera From a80e2dc296722cbf96ffed44dfef73c8bc0b1e4b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 6 Jan 2022 12:03:34 +0100 Subject: [PATCH 081/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 82128bd28..1d1f9679b 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -80,65 +80,65 @@ "preview": "Aurrebista", "share": "Partekatu", "share_user": "Partekatu %s", - "share_post": "Share Post", - "open_in_safari": "Open in Safari", - "open_in_browser": "Open in Browser", - "find_people": "Find people to follow", - "manually_search": "Manually search instead", - "skip": "Skip", - "reply": "Reply", - "report_user": "Report %s", - "block_domain": "Block %s", - "unblock_domain": "Unblock %s", - "settings": "Settings", - "delete": "Delete" + "share_post": "Partekatu bidalketa", + "open_in_safari": "Ireki Safarin", + "open_in_browser": "Ireki nabigatzailean", + "find_people": "Bilatu jarraitzeko jendea", + "manually_search": "Eskuz bilatu", + "skip": "Saltatu", + "reply": "Erantzun", + "report_user": "Salatu %s", + "block_domain": "Blokeatu %s", + "unblock_domain": "Desblokeatu %s", + "settings": "Ezarpenak", + "delete": "Ezabatu" }, "tabs": { - "home": "Home", - "search": "Search", - "notification": "Notification", - "profile": "Profile" + "home": "Hasiera", + "search": "Bilatu", + "notification": "Jakinarazpena", + "profile": "Profila" }, "keyboard": { "common": { - "switch_to_tab": "Switch to %s", - "compose_new_post": "Compose New Post", - "show_favorites": "Show Favorites", - "open_settings": "Open Settings" + "switch_to_tab": "Aldatu %s(e)ra", + "compose_new_post": "Idatzi bidalketa berria", + "show_favorites": "Erakutsi gogokoak", + "open_settings": "Ireki ezarpenak" }, "timeline": { - "previous_status": "Previous Post", - "next_status": "Next Post", - "open_status": "Open Post", - "open_author_profile": "Open Author's Profile", - "open_reblogger_profile": "Open Reblogger's Profile", - "reply_status": "Reply to Post", - "toggle_reblog": "Toggle Reblog on Post", - "toggle_favorite": "Toggle Favorite on Post", - "toggle_content_warning": "Toggle Content Warning", - "preview_image": "Preview Image" + "previous_status": "Aurreko bidalketa", + "next_status": "Hurrengo bidalketa", + "open_status": "Ireki bidalketa", + "open_author_profile": "Ireki egilearen profila", + "open_reblogger_profile": "Ireki bultzada eman duenaren profila", + "reply_status": "Erantzun bidalketari", + "toggle_reblog": "Txandakatu bidalketaren bultzada", + "toggle_favorite": "Txandakatu bidalketa gogoko egitea", + "toggle_content_warning": "Txandakatu edukiaren abisua", + "preview_image": "Aurreikusi irudia" }, "segmented_control": { - "previous_section": "Previous Section", - "next_section": "Next Section" + "previous_section": "Aurreko sekzioa", + "next_section": "Hurrengo sekzioa" } }, "status": { - "user_reblogged": "%s reblogged", - "user_replied_to": "Replied to %s", - "show_post": "Show Post", - "show_user_profile": "Show user profile", - "content_warning": "Content Warning", - "media_content_warning": "Tap anywhere to reveal", + "user_reblogged": "%s erabiltzaileak bultzada eman dio", + "user_replied_to": "%s(r)i erantzuten", + "show_post": "Erakutsi bidalketa", + "show_user_profile": "Erakutsi erabiltzailearen profila", + "content_warning": "Edukiaren abisua", + "media_content_warning": "Ukitu edonon bistaratzeko", "poll": { - "vote": "Vote", - "closed": "Closed" + "vote": "Bozkatu", + "closed": "Itxita" }, "actions": { - "reply": "Reply", - "reblog": "Reblog", - "unreblog": "Undo reblog", - "favorite": "Favorite", + "reply": "Erantzun", + "reblog": "Bultzada", + "unreblog": "Desegin bultzada", + "favorite": "Gogokoa", "unfavorite": "Unfavorite", "menu": "Menu" }, From 5725f17fdaca19986a3ac4a4f120ad145dd38843 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 6 Jan 2022 13:23:34 +0100 Subject: [PATCH 082/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 290 +++++++++--------- 1 file changed, 145 insertions(+), 145 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 1d1f9679b..3797571df 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -139,14 +139,14 @@ "reblog": "Bultzada", "unreblog": "Desegin bultzada", "favorite": "Gogokoa", - "unfavorite": "Unfavorite", - "menu": "Menu" + "unfavorite": "Kendu gogokoa", + "menu": "Menua" }, "tag": { - "url": "URL", - "mention": "Mention", - "link": "Link", - "hashtag": "Hashtag", + "url": "URLa", + "mention": "Aipatu", + "link": "Esteka", + "hashtag": "Traola", "email": "Eposta", "emoji": "Emojia" } @@ -220,176 +220,176 @@ "label": { "language": "HIZKUNTZA", "users": "ERABILTZAILEAK", - "category": "CATEGORY" + "category": "KATEGORIA" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Bilatu zerbitzari bat edo sortu zurea..." }, "empty_state": { - "finding_servers": "Finding available servers...", - "bad_network": "Something went wrong while loading the data. Check your internet connection.", - "no_results": "No results" + "finding_servers": "Erabilgarri dauden zerbitzariak bilatzen...", + "bad_network": "Arazoren bat egon da datuak kargatzean. Egiaztatu zure Interneteko konexioa.", + "no_results": "Emaitzarik ez" } }, "register": { - "title": "Tell us about you.", + "title": "Hitz egin iezaguzu zuri buruz.", "input": { "avatar": { - "delete": "Delete" + "delete": "Ezabatu" }, "username": { - "placeholder": "username", - "duplicate_prompt": "This username is taken." + "placeholder": "erabiltzaile-izena", + "duplicate_prompt": "Erabiltzaile-izen hau hartuta dago." }, "display_name": { - "placeholder": "display name" + "placeholder": "pantaila-izena" }, "email": { - "placeholder": "email" + "placeholder": "eposta" }, "password": { - "placeholder": "password", - "hint": "Your password needs at least eight characters" + "placeholder": "pasahitza", + "hint": "Pasahitzak zortzi karaktere izan behar ditu gutxienez" }, "invite": { - "registration_user_invite_request": "Why do you want to join?" + "registration_user_invite_request": "Zergatik elkartu nahi duzu?" } }, "error": { "item": { - "username": "Username", - "email": "Email", - "password": "Password", - "agreement": "Agreement", - "locale": "Locale", - "reason": "Reason" + "username": "Erabiltzaile-izena", + "email": "Eposta", + "password": "Pasahitza", + "agreement": "Adostasuna", + "locale": "Eskualdeko ezarpenak", + "reason": "Arrazoia" }, "reason": { - "blocked": "%s contains a disallowed email provider", - "unreachable": "%s does not seem to exist", - "taken": "%s is already in use", - "reserved": "%s is a reserved keyword", - "accepted": "%s must be accepted", - "blank": "%s is required", - "invalid": "%s is invalid", - "too_long": "%s is too long", - "too_short": "%s is too short", - "inclusion": "%s is not a supported value" + "blocked": "%s(e)k onartu gabeko eposta hornitzaile bat erabiltzen du", + "unreachable": "dirudienez %s ez da existitzen", + "taken": "%s dagoeneko erabiltzen da", + "reserved": "%s gako-hitz erreserbatu bat da", + "accepted": "%s onartu behar da", + "blank": "%s beharrezkoa da", + "invalid": "%s baliogabea da", + "too_long": "%s luzeegia da", + "too_short": "%s laburregia da", + "inclusion": "%s ez da onartutako balio bat" }, "special": { - "username_invalid": "Username must only contain alphanumeric characters and underscores", - "username_too_long": "Username is too long (can’t be longer than 30 characters)", - "email_invalid": "This is not a valid email address", - "password_too_short": "Password is too short (must be at least 8 characters)" + "username_invalid": "Erabiltzaile-izenak karaktere alfanumerikoak eta azpimarrak soilik eduki ditzake", + "username_too_long": "Erabiltzaile-izena luzeegia da (ezin ditu 30 karaktere baino gehiago izan)", + "email_invalid": "Hau ez da baliozko eposta helbidea", + "password_too_short": "Pasahitza laburregia da (gutxienez 8 karaktere izan behar ditu)" } } }, "server_rules": { - "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", - "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", - "terms_of_service": "terms of service", - "privacy_policy": "privacy policy", + "title": "Oinarrizko arau batzuk.", + "subtitle": "Arau hauek %s instantziako administratzaileek ezarri dituzte.", + "prompt": "Jarraituz gero, %s instantziaren zerbitzu-baldintzak eta pribatutasun-gidalerroak onartzen dituzu.", + "terms_of_service": "zerbitzu-baldintzak", + "privacy_policy": "pribatutasun-gidalerroak", "button": { - "confirm": "I Agree" + "confirm": "Ados nago" } }, "confirm_email": { - "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "title": "Eta azkenik...", + "subtitle": "Eposta bat bidali dizugu %s helbidera,\nsakatu kontua berresteko esteka.", "button": { - "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "open_email_app": "Ireki eposta aplikazioa", + "dont_receive_email": "Ez dut epostarik jaso" }, "dont_receive_email": { - "title": "Check your email", - "description": "Check if your email address is correct as well as your junk folder if you haven’t.", - "resend_email": "Resend Email" + "title": "Begiratu zure eposta", + "description": "Egiaztatu zure eposta helbidea zuzena den eta begiratu zaborraren karpeta.", + "resend_email": "Birbidali eposta" }, "open_email_app": { - "title": "Check your inbox.", - "description": "We just sent you an email. Check your junk folder if you haven’t.", - "mail": "Mail", - "open_email_client": "Open Email Client" + "title": "Egiaztatu zure sarrerako ontzia.", + "description": "Eposta bat bidali dizugu. Egiaztatu zure zaborraren karpeta.", + "mail": "Posta", + "open_email_client": "Ireki eposta bezeroa" } }, "home_timeline": { - "title": "Home", + "title": "Hasiera", "navigation_bar_state": { - "offline": "Offline", - "new_posts": "See new posts", - "published": "Published!", - "Publishing": "Publishing post..." + "offline": "Konexio gabe", + "new_posts": "Ikusi bidal. berriak", + "published": "Argitaratua!", + "Publishing": "Bidalketa argitaratzen..." } }, "suggestion_account": { - "title": "Find People to Follow", - "follow_explain": "When you follow someone, you’ll see their posts in your home feed." + "title": "Bilatu jarraitzeko jendea", + "follow_explain": "Norbait jarraitzen duzunean, bere bidalketak zure hasierako denbora-lerroan agertuko zaizkizu." }, "compose": { "title": { - "new_post": "New Post", - "new_reply": "New Reply" + "new_post": "Bidalketa berria", + "new_reply": "Erantzun berria" }, "media_selection": { - "camera": "Take Photo", - "photo_library": "Photo Library", - "browse": "Browse" + "camera": "Atera argazkia", + "photo_library": "Argazki-liburutegia", + "browse": "Arakatu" }, - "content_input_placeholder": "Type or paste what’s on your mind", - "compose_action": "Publish", - "replying_to_user": "replying to %s", + "content_input_placeholder": "Idatzi edo itsatsi buruan duzuna", + "compose_action": "Argitaratu", + "replying_to_user": "%s(r)i erantzuten", "attachment": { - "photo": "photo", - "video": "video", - "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", - "description_photo": "Describe the photo for the visually-impaired...", - "description_video": "Describe the video for the visually-impaired..." + "photo": "argazkia", + "video": "bideoa", + "attachment_broken": "%s hondatuta dago eta ezin da\nMastodonera igo.", + "description_photo": "Deskribatu argazkia ikusmen arazoak dituztenentzat...", + "description_video": "Deskribatu bideoa ikusmen arazoak dituztenentzat..." }, "poll": { - "duration_time": "Duration: %s", - "thirty_minutes": "30 minutes", - "one_hour": "1 Hour", - "six_hours": "6 Hours", - "one_day": "1 Day", - "three_days": "3 Days", - "seven_days": "7 Days", - "option_number": "Option %ld" + "duration_time": "Iraupena: %s", + "thirty_minutes": "30 minutu", + "one_hour": "Ordu 1", + "six_hours": "6 ordu", + "one_day": "Egun 1", + "three_days": "3 egun", + "seven_days": "7 egun", + "option_number": "%ld aukera" }, "content_warning": { - "placeholder": "Write an accurate warning here..." + "placeholder": "Idatzi abisu zehatz bat hemen..." }, "visibility": { - "public": "Public", - "unlisted": "Unlisted", - "private": "Followers only", - "direct": "Only people I mention" + "public": "Publikoa", + "unlisted": "Zerrendatu gabea", + "private": "Jarraitzaileak soilik", + "direct": "Aipatzen dudan jendea soilik" }, "auto_complete": { - "space_to_add": "Space to add" + "space_to_add": "Sakatu zuriunea gehitzeko" }, "accessibility": { - "append_attachment": "Add Attachment", - "append_poll": "Add Poll", - "remove_poll": "Remove Poll", - "custom_emoji_picker": "Custom Emoji Picker", - "enable_content_warning": "Enable Content Warning", - "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu" + "append_attachment": "Gehitu eranskina", + "append_poll": "Gehitu inkesta", + "remove_poll": "Kendu inkesta", + "custom_emoji_picker": "Emoji pertsonalizatuen hautatzailea", + "enable_content_warning": "Gaitu edukiaren abisua", + "disable_content_warning": "Desgaitu edukiaren abisua", + "post_visibility_menu": "Bidalketaren ikusgaitasunaren menua" }, "keyboard": { - "discard_post": "Discard Post", - "publish_post": "Publish Post", - "toggle_poll": "Toggle Poll", - "toggle_content_warning": "Toggle Content Warning", - "append_attachment_entry": "Add Attachment - %s", - "select_visibility_entry": "Select Visibility - %s" + "discard_post": "Baztertu bidalketa", + "publish_post": "Argitaratu bidalketa", + "toggle_poll": "Txandakatu inkesta", + "toggle_content_warning": "Txandakatu edukiaren abisua", + "append_attachment_entry": "Gehitu eranskina - %s", + "select_visibility_entry": "Hautatu ikusgaitasuna - %s" } }, "profile": { "dashboard": { - "posts": "posts", - "following": "following", + "posts": "bidalketa", + "following": "jarraitzen", "followers": "followers" }, "fields": { @@ -489,69 +489,69 @@ "notifications": { "title": "Notifications", "favorites": "Favorites my post", - "follows": "Follows me", - "boosts": "Reblogs my post", - "mentions": "Mentions me", + "follows": "Jarraitzen nau", + "boosts": "Nire bidalketa bultzatu du", + "mentions": "Aipatu nau", "trigger": { - "anyone": "anyone", - "follower": "a follower", - "follow": "anyone I follow", - "noone": "no one", - "title": "Notify me when" + "anyone": "edozein", + "follower": "jarraitzaile bat", + "follow": "jarraitzen dudan edonor", + "noone": "inor ez", + "title": "Noiz jakinarazi:" } }, "preference": { - "title": "Preferences", - "true_black_dark_mode": "True black dark mode", - "disable_avatar_animation": "Disable animated avatars", - "disable_emoji_animation": "Disable animated emojis", - "using_default_browser": "Use default browser to open links" + "title": "Hobespenak", + "true_black_dark_mode": "Benetako modu beltz iluna", + "disable_avatar_animation": "Desgaitu abatar animatuak", + "disable_emoji_animation": "Desgaitu emoji animatuak", + "using_default_browser": "Erabili nabigatzaile lehenetsia estekak irekitzeko" }, "boring_zone": { - "title": "The Boring Zone", - "account_settings": "Account Settings", - "terms": "Terms of Service", - "privacy": "Privacy Policy" + "title": "Eremu aspergarria", + "account_settings": "Kontuaren ezarpenak", + "terms": "Zerbitzu-baldintzak", + "privacy": "Pribatutasun-gidalerroak" }, "spicy_zone": { - "title": "The Spicy Zone", - "clear": "Clear Media Cache", - "signout": "Sign Out" + "title": "Eremu beroa", + "clear": "Garbitu multimediaren cachea", + "signout": "Amaitu saioa" } }, "footer": { - "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + "mastodon_description": "Mastodon software librea da. Arazoen berri eman dezakezu GitHub bidez: %s (%s)" }, "keyboard": { - "close_settings_window": "Close Settings Window" + "close_settings_window": "Itxi ezarpenen leihoa" } }, "report": { - "title": "Report %s", - "step1": "Step 1 of 2", - "step2": "Step 2 of 2", - "content1": "Are there any other posts you’d like to add to the report?", - "content2": "Is there anything the moderators should know about this report?", - "send": "Send Report", - "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "title": "Salatu %s", + "step1": "1. urratsa 2tik", + "step2": "2. urratsa 2tik", + "content1": "Salaketan beste bidalketarik gehitu nahi duzu?", + "content2": "Moderatzaileek besterik jakin behar dute salaketa honi buruz?", + "send": "Bidali salaketa", + "skip_to_send": "Bidali iruzkinik gabe", + "text_placeholder": "Idatzi edo itsatsi iruzkin gehigarriak" }, "preview": { "keyboard": { - "close_preview": "Close Preview", - "show_next": "Show Next", - "show_previous": "Show Previous" + "close_preview": "Itxi aurrebista", + "show_next": "Erakutsi hurrengoa", + "show_previous": "Erakutsi aurrekoa" } }, "account_list": { - "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", - "dismiss_account_switcher": "Dismiss Account Switcher", - "add_account": "Add Account" + "tab_bar_hint": "Unean hautatutako profila: %s. Ukitu birritan, ondoren eduki sakatuta kontu-aldatzailea erakusteko", + "dismiss_account_switcher": "Baztertu kontu-aldatzailea", + "add_account": "Gehitu kontua" }, "wizard": { - "new_in_mastodon": "New in Mastodon", - "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.", - "accessibility_hint": "Double tap to dismiss this wizard" + "new_in_mastodon": "Berria Mastodonen", + "multiple_account_switch_intro_description": "Aldatu hainbat konturen artean profilaren botoia sakatuta edukiz.", + "accessibility_hint": "Ukitu birritan morroi hau baztertzeko" } } } \ No newline at end of file From e9834555d1f219cf24dd8112737fc2f27cc7233a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 7 Jan 2022 11:42:25 +0100 Subject: [PATCH 083/374] New translations app.json (Basque) --- Localization/StringsConvertor/input/eu_ES/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 3797571df..1c4db6bb8 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -390,10 +390,10 @@ "dashboard": { "posts": "bidalketa", "following": "jarraitzen", - "followers": "followers" + "followers": "jarraitzaile" }, "fields": { - "add_row": "Add Row", + "add_row": "Gehitu errenkada", "placeholder": { "label": "Label", "content": "Content" From 7bf14c0450ab8705dc675ca3491691f7d7681396 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 7 Jan 2022 18:49:37 +0800 Subject: [PATCH 084/374] feat: update register scene UI --- Mastodon.xcodeproj/project.pbxproj | 44 +- .../xcschemes/xcschememanagement.plist | 8 +- .../Diffiable/Onboarding/RegisterItem.swift | 19 + .../Onboarding/RegisterSection.swift | 12 + .../Onboarding/ServerRuleSection.swift | 2 +- Mastodon/Generated/Assets.swift | 2 + .../avatar.placeholder.imageset/Contents.json | 23 + .../avatar.placeholder.imageset/Frame 82.jpg | Bin 0 -> 3585 bytes .../Frame 82@2x.png | Bin 0 -> 4595 bytes .../Frame 82@3x.png | Bin 0 -> 7449 bytes .../Contents.json | 38 + .../MastodonPickServerViewController.swift | 2 +- .../MastodonRegisterAvatarTableViewCell.swift | 77 ++ ...donRegisterPasswordHintTableViewCell.swift | 48 + ...stodonRegisterTextFieldTableViewCell.swift | 136 +++ ...astodonRegisterViewController+Avatar.swift | 42 +- .../MastodonRegisterViewController.swift | 952 +++++------------- .../MastodonRegisterViewModel+Diffable.swift | 231 +++++ .../Register/MastodonRegisterViewModel.swift | 215 ++-- .../{ => Cell}/ServerRulesTableViewCell.swift | 0 .../MastodonServerRulesViewController.swift | 26 +- .../Header/ProfileHeaderViewModel.swift | 5 +- .../Service/KeyboardResponderService.swift | 44 + .../Container/ShadowBackgroundContainer.swift | 18 +- 24 files changed, 1073 insertions(+), 871 deletions(-) create mode 100644 Mastodon/Diffiable/Onboarding/RegisterItem.swift create mode 100644 Mastodon/Diffiable/Onboarding/RegisterSection.swift create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Contents.json create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82.jpg create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@2x.png create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@3x.png create mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/textField.background.colorset/Contents.json create mode 100644 Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterAvatarTableViewCell.swift create mode 100644 Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift create mode 100644 Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift create mode 100644 Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift rename Mastodon/Scene/Onboarding/ServerRules/{ => Cell}/ServerRulesTableViewCell.swift (100%) diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 3061b6e49..349f14eef 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -199,6 +199,10 @@ DB0617FD27855BFE0030EE79 /* ServerRuleItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617FC27855BFE0030EE79 /* ServerRuleItem.swift */; }; DB0617FF27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0617FE27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift */; }; DB0618012785732C0030EE79 /* ServerRulesTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618002785732C0030EE79 /* ServerRulesTableViewCell.swift */; }; + DB0618032785A7100030EE79 /* RegisterSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618022785A7100030EE79 /* RegisterSection.swift */; }; + DB0618052785A73D0030EE79 /* RegisterItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618042785A73D0030EE79 /* RegisterItem.swift */; }; + DB0618072785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */; }; + DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */; }; DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; }; DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; }; DB0C946526A6FD4D0088FB11 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB0C946426A6FD4D0088FB11 /* AlamofireImage */; }; @@ -396,6 +400,8 @@ DB789A1225F9F2CC0071ACA0 /* ComposeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB789A1125F9F2CC0071ACA0 /* ComposeViewModel.swift */; }; DB7F48452620241000796008 /* ProfileHeaderViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7F48442620241000796008 /* ProfileHeaderViewModel.swift */; }; DB8190C62601FF0400020C08 /* AttachmentContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */; }; + DB8481152788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8481142788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift */; }; + DB84811727883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB84811627883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift */; }; DB852D1926FAEB6B00FC9D81 /* SidebarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1826FAEB6B00FC9D81 /* SidebarViewController.swift */; }; DB852D1C26FB021500FC9D81 /* RootSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */; }; DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */; }; @@ -984,6 +990,10 @@ DB0617FC27855BFE0030EE79 /* ServerRuleItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerRuleItem.swift; sourceTree = ""; }; DB0617FE27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonServerRulesViewModel+Diffable.swift"; sourceTree = ""; }; DB0618002785732C0030EE79 /* ServerRulesTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerRulesTableViewCell.swift; sourceTree = ""; }; + DB0618022785A7100030EE79 /* RegisterSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterSection.swift; sourceTree = ""; }; + DB0618042785A73D0030EE79 /* RegisterItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterItem.swift; sourceTree = ""; }; + DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonRegisterViewModel+Diffable.swift"; sourceTree = ""; }; + DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterAvatarTableViewCell.swift; sourceTree = ""; }; DB084B5625CBC56C00F898ED /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = ""; }; DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Instance.swift"; sourceTree = ""; }; DB0C946A26A700AB0088FB11 /* MastodonUser+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonUser+Property.swift"; sourceTree = ""; }; @@ -1206,6 +1216,8 @@ DB789A1125F9F2CC0071ACA0 /* ComposeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeViewModel.swift; sourceTree = ""; }; DB7F48442620241000796008 /* ProfileHeaderViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileHeaderViewModel.swift; sourceTree = ""; }; DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentContainerView.swift; sourceTree = ""; }; + DB8481142788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterTextFieldTableViewCell.swift; sourceTree = ""; }; + DB84811627883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterPasswordHintTableViewCell.swift; sourceTree = ""; }; DB852D1826FAEB6B00FC9D81 /* SidebarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarViewController.swift; sourceTree = ""; }; DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootSplitViewController.swift; sourceTree = ""; }; DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarViewModel.swift; sourceTree = ""; }; @@ -2057,8 +2069,8 @@ DB68A03825E900CC00CFDF14 /* Share */, 0FAA0FDD25E0B5700017CCDE /* Welcome */, 0FAA102525E1125D0017CCDE /* PickServer */, - DBE0821A25CD382900FD6BBD /* Register */, DB72602125E36A2500235243 /* ServerRules */, + DBE0821A25CD382900FD6BBD /* Register */, 2D364F7025E66D5B00204FDC /* ResendEmail */, 2D59819925E4A55C000FB903 /* ConfirmEmail */, ); @@ -2138,6 +2150,24 @@ path = Account; sourceTree = ""; }; + DB0618082785B2790030EE79 /* Cell */ = { + isa = PBXGroup; + children = ( + DB0618002785732C0030EE79 /* ServerRulesTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; + DB06180B2785B2AF0030EE79 /* Cell */ = { + isa = PBXGroup; + children = ( + DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */, + DB8481142788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift */, + DB84811627883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; DB084B5125CBC56300F898ED /* CoreDataStack */ = { isa = PBXGroup; children = ( @@ -2424,6 +2454,8 @@ DB1FD45925F27898004CFCFC /* CategoryPickerItem.swift */, DB0617F427855AB90030EE79 /* ServerRuleSection.swift */, DB0617FC27855BFE0030EE79 /* ServerRuleItem.swift */, + DB0618022785A7100030EE79 /* RegisterSection.swift */, + DB0618042785A73D0030EE79 /* RegisterItem.swift */, ); path = Onboarding; sourceTree = ""; @@ -2633,10 +2665,10 @@ DB72602125E36A2500235243 /* ServerRules */ = { isa = PBXGroup; children = ( + DB0618082785B2790030EE79 /* Cell */, DB72601B25E36A2100235243 /* MastodonServerRulesViewController.swift */, DB72602625E36A6F00235243 /* MastodonServerRulesViewModel.swift */, DB0617FE27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift */, - DB0618002785732C0030EE79 /* ServerRulesTableViewCell.swift */, ); path = ServerRules; sourceTree = ""; @@ -3197,9 +3229,11 @@ DBE0821A25CD382900FD6BBD /* Register */ = { isa = PBXGroup; children = ( + DB06180B2785B2AF0030EE79 /* Cell */, DBE0821425CD382600FD6BBD /* MastodonRegisterViewController.swift */, 2D939AE725EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift */, DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */, + DB0618062785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift */, ); path = Register; sourceTree = ""; @@ -3974,6 +4008,7 @@ DBB525502611ED6D002F1F29 /* ProfileHeaderView.swift in Sources */, 0FB3D33225E5F50E00AAD544 /* PickServerSearchCell.swift in Sources */, DB71FD5225F8CCAA00512AE1 /* APIService+Status.swift in Sources */, + DB8481152788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift in Sources */, 5D0393962612D266007FE196 /* WebViewModel.swift in Sources */, 5B24BBDA262DB14800A9381B /* ReportViewModel.swift in Sources */, 2D5A3D3825CF8D9F002347D6 /* ScrollViewContainer.swift in Sources */, @@ -4020,7 +4055,9 @@ DB03A795272A981400EE37C5 /* ContentSplitViewController.swift in Sources */, 2D152A8C25C295CC009AA50C /* StatusView.swift in Sources */, DBBC24DE26A54BCB00398BB9 /* MastodonMetricFormatter.swift in Sources */, + DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */, DBB3BA2A26A81C020004F2D4 /* FLAnimatedImageView.swift in Sources */, + DB0618032785A7100030EE79 /* RegisterSection.swift in Sources */, 2DE0FAC82615F5F000CDF649 /* SearchRecommendAccountsCollectionViewCell.swift in Sources */, DBF1D251269DB01200C1C08A /* SearchHistoryViewController.swift in Sources */, 2D42FF8525C8224F004A627A /* HitTestExpandedButton.swift in Sources */, @@ -4178,6 +4215,7 @@ 2DF75BA125D0E29D00694EC8 /* StatusProvider+StatusTableViewCellDelegate.swift in Sources */, 5DF1056425F887CB00D6C0D4 /* AVPlayer.swift in Sources */, DBBF1DCB2652539E00E5B703 /* AutoCompleteItem.swift in Sources */, + DB84811727883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift in Sources */, 2DA6054725F716A2006356F9 /* PlaybackState.swift in Sources */, DB35FC1F2612F1D9006193C9 /* ProfileRelationshipActionButton.swift in Sources */, DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */, @@ -4215,6 +4253,7 @@ DB6C8C0F25F0A6AE00AAA452 /* Mastodon+Entity+Error.swift in Sources */, DB1E346825F518E20079D7DF /* CategoryPickerSection.swift in Sources */, DB7274F4273BB9B200577D95 /* ListBatchFetchViewModel.swift in Sources */, + DB0618052785A73D0030EE79 /* RegisterItem.swift in Sources */, 2D61254D262547C200299647 /* APIService+Notification.swift in Sources */, DB040ED126538E3D00BEE9D8 /* Trie.swift in Sources */, DB73BF4B27140C0800781945 /* UITableViewDiffableDataSource.swift in Sources */, @@ -4322,6 +4361,7 @@ DBE54AC62636C89F004E7C0B /* NotificationPreference.swift in Sources */, 2D5A3D2825CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift in Sources */, DB98339C25C96DE600AD9700 /* APIService+Account.swift in Sources */, + DB0618072785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift in Sources */, DB6B74FC272FF55800C70B6E /* UserSection.swift in Sources */, 2DF75BA725D10E1000694EC8 /* APIService+Favorite.swift in Sources */, DB9D6C3825E508BE0051B173 /* Attachment.swift in Sources */, diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 601fc88a7..95a6213db 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,12 +7,12 @@ AppShared.xcscheme_^#shared#^_ orderHint - 24 + 18 CoreDataStack.xcscheme_^#shared#^_ orderHint - 27 + 20 Mastodon - ASDK.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 26 + 19 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 25 + 21 SuppressBuildableAutocreation diff --git a/Mastodon/Diffiable/Onboarding/RegisterItem.swift b/Mastodon/Diffiable/Onboarding/RegisterItem.swift new file mode 100644 index 000000000..0fb0aead0 --- /dev/null +++ b/Mastodon/Diffiable/Onboarding/RegisterItem.swift @@ -0,0 +1,19 @@ +// +// RegisterItem.swift +// Mastodon +// +// Created by MainasuK on 2022-1-5. +// + +import Foundation + +enum RegisterItem: Hashable { + case header + case avatar + case name + case username + case email + case password + case hint + case reason +} diff --git a/Mastodon/Diffiable/Onboarding/RegisterSection.swift b/Mastodon/Diffiable/Onboarding/RegisterSection.swift new file mode 100644 index 000000000..efb67f698 --- /dev/null +++ b/Mastodon/Diffiable/Onboarding/RegisterSection.swift @@ -0,0 +1,12 @@ +// +// RegisterSection.swift +// Mastodon +// +// Created by MainasuK on 2022-1-5. +// + +import UIKit + +enum RegisterSection: Hashable { + case main +} diff --git a/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift b/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift index ba96e873f..66abec44b 100644 --- a/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift +++ b/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift @@ -25,7 +25,7 @@ extension ServerRuleSection { return cell case .rule(let ruleContext): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ServerRulesTableViewCell.self), for: indexPath) as! ServerRulesTableViewCell - cell.indexImageView.image = UIImage(systemName: "\(ruleContext.index).circle.fill") ?? UIImage(systemName: "questionmark.circle.fill") + cell.indexImageView.image = UIImage(systemName: "\(ruleContext.index + 1).circle.fill") ?? UIImage(systemName: "questionmark.circle.fill") cell.ruleLabel.text = ruleContext.rule.text return cell } diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index 0761780c7..410d81a24 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -91,12 +91,14 @@ internal enum Asset { } internal enum Scene { internal enum Onboarding { + internal static let avatarPlaceholder = ImageAsset(name: "Scene/Onboarding/avatar.placeholder") internal static let navigationBackButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background") internal static let navigationBackButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background.highlighted") internal static let navigationNextButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background") internal static let navigationNextButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background.highlighted") internal static let onboardingBackground = ColorAsset(name: "Scene/Onboarding/onboarding.background") internal static let searchBarBackground = ColorAsset(name: "Scene/Onboarding/search.bar.background") + internal static let textFieldBackground = ColorAsset(name: "Scene/Onboarding/textField.background") } internal enum Profile { internal enum Banner { diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Contents.json new file mode 100644 index 000000000..2b84d06bc --- /dev/null +++ b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Frame 82.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame 82@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame 82@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82.jpg b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7819c97b9aab4595b11927537488edb716599eba GIT binary patch literal 3585 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 ue@o6w0(=H;Nwmuyli7SdVz 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@3x.png b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..68603b22798213da0fa73b7a74413d2806592113 GIT binary patch literal 7449 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 + + let containerView: UIView = { + let view = UIView() + view.backgroundColor = .clear + view.layer.masksToBounds = true + view.layer.cornerCurve = .continuous + view.layer.cornerRadius = 22 + return view + }() + + let avatarButton: HighlightDimmableButton = { + let button = HighlightDimmableButton() + button.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color + button.setImage(Asset.Scene.Onboarding.avatarPlaceholder.image, for: .normal) + return button + }() + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension MastodonRegisterAvatarTableViewCell { + + private func _init() { + selectionStyle = .none + backgroundColor = .clear + + containerView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerView) + NSLayoutConstraint.activate([ + containerView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 22), + containerView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor), + contentView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor, constant: 8), + containerView.widthAnchor.constraint(equalToConstant: MastodonRegisterAvatarTableViewCell.containerSize.width).priority(.required - 1), + containerView.heightAnchor.constraint(equalToConstant: MastodonRegisterAvatarTableViewCell.containerSize.height).priority(.required - 1), + ]) + + avatarButton.translatesAutoresizingMaskIntoConstraints = false + containerView.addSubview(avatarButton) + NSLayoutConstraint.activate([ + avatarButton.topAnchor.constraint(equalTo: containerView.topAnchor), + avatarButton.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), + avatarButton.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), + avatarButton.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), + ]) + } + +} diff --git a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift new file mode 100644 index 000000000..3aa9d027a --- /dev/null +++ b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift @@ -0,0 +1,48 @@ +// +// MastodonRegisterPasswordHintTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-1-7. +// + +import UIKit + +final class MastodonRegisterPasswordHintTableViewCell: UITableViewCell { + + let passwordRuleLabel: UILabel = { + let label = UILabel() + label.font = .preferredFont(forTextStyle: .footnote) + label.textColor = Asset.Colors.Label.secondary.color + label.text = "Your password needs at least:" + return label + }() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension MastodonRegisterPasswordHintTableViewCell { + + private func _init() { + selectionStyle = .none + backgroundColor = .clear + + passwordRuleLabel.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(passwordRuleLabel) + NSLayoutConstraint.activate([ + passwordRuleLabel.topAnchor.constraint(equalTo: contentView.topAnchor), + passwordRuleLabel.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + passwordRuleLabel.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + passwordRuleLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + ]) + } + +} diff --git a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift new file mode 100644 index 000000000..8e54d1ff9 --- /dev/null +++ b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift @@ -0,0 +1,136 @@ +// +// MastodonRegisterTextFieldTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-1-7. +// + +import UIKit +import Combine +import MastodonUI + +final class MastodonRegisterTextFieldTableViewCell: UITableViewCell { + + static let textFieldHeight: CGFloat = 50 + static let textFieldLabelFont = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold), maximumPointSize: 22) + + var disposeBag = Set() + + let textFieldShadowContainer = ShadowBackgroundContainer() + let textField: UITextField = { + let textField = UITextField() + textField.font = MastodonRegisterTextFieldTableViewCell.textFieldLabelFont + textField.backgroundColor = Asset.Scene.Onboarding.textFieldBackground.color + textField.layer.masksToBounds = true + textField.layer.cornerRadius = 10 + textField.layer.cornerCurve = .continuous + return textField + }() + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + textFieldShadowContainer.shadowColor = .black + textFieldShadowContainer.shadowAlpha = 0.25 + resetTextField() + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension MastodonRegisterTextFieldTableViewCell { + + private func _init() { + selectionStyle = .none + backgroundColor = .clear + + textFieldShadowContainer.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(textFieldShadowContainer) + NSLayoutConstraint.activate([ + textFieldShadowContainer.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 6), + textFieldShadowContainer.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + textFieldShadowContainer.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: textFieldShadowContainer.bottomAnchor, constant: 6), + ]) + + textField.translatesAutoresizingMaskIntoConstraints = false + textFieldShadowContainer.addSubview(textField) + NSLayoutConstraint.activate([ + textField.topAnchor.constraint(equalTo: textFieldShadowContainer.topAnchor), + textField.leadingAnchor.constraint(equalTo: textFieldShadowContainer.leadingAnchor), + textField.trailingAnchor.constraint(equalTo: textFieldShadowContainer.trailingAnchor), + textField.bottomAnchor.constraint(equalTo: textFieldShadowContainer.bottomAnchor), + textField.heightAnchor.constraint(equalToConstant: MastodonRegisterTextFieldTableViewCell.textFieldHeight).priority(.required - 1), + ]) + + resetTextField() + } + +} + +extension MastodonRegisterTextFieldTableViewCell { + func resetTextField() { + textField.keyboardType = .default + textField.autocorrectionType = .default + textField.autocapitalizationType = .none + textField.attributedPlaceholder = nil + textField.isSecureTextEntry = false + + let paddingRect = CGRect(x: 0, y: 0, width: 16, height: 10) + textField.leftView = UIView(frame: paddingRect) + textField.leftViewMode = .always + textField.rightView = UIView(frame: paddingRect) + textField.rightViewMode = .always + } + + func setupTextViewRightView(text: String) { + textField.rightView = { + let containerView = UIView() + + let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 8, height: MastodonRegisterTextFieldTableViewCell.textFieldHeight)) + paddingView.translatesAutoresizingMaskIntoConstraints = false + containerView.addSubview(paddingView) + NSLayoutConstraint.activate([ + paddingView.topAnchor.constraint(equalTo: containerView.topAnchor), + paddingView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), + paddingView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), + paddingView.widthAnchor.constraint(equalToConstant: 8).priority(.defaultHigh), + ]) + + let label = UILabel() + label.font = MastodonRegisterTextFieldTableViewCell.textFieldLabelFont + label.textColor = Asset.Colors.Label.primary.color + label.text = text + + label.translatesAutoresizingMaskIntoConstraints = false + containerView.addSubview(label) + NSLayoutConstraint.activate([ + label.topAnchor.constraint(equalTo: containerView.topAnchor), + label.leadingAnchor.constraint(equalTo: paddingView.trailingAnchor), + containerView.trailingAnchor.constraint(equalTo: label.trailingAnchor, constant: 16), + label.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), + ]) + return containerView + }() + } + + func setupTextViewPlaceholder(text: String) { + textField.attributedPlaceholder = NSAttributedString( + string: text, + attributes: [ + .foregroundColor: Asset.Colors.Label.secondary.color, + .font: MastodonRegisterTextFieldTableViewCell.textFieldLabelFont + ] + ) + } +} diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift index b1fa1b432..0add10dc8 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift @@ -12,36 +12,6 @@ import PhotosUI import UIKit extension MastodonRegisterViewController { - func createMediaContextMenu() -> UIMenu { - var children: [UIMenuElement] = [] - let photoLibraryAction = UIAction(title: L10n.Scene.Compose.MediaSelection.photoLibrary, image: UIImage(systemName: "rectangle.on.rectangle"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in - guard let self = self else { return } - self.present(self.imagePicker, animated: true, completion: nil) - } - children.append(photoLibraryAction) - if UIImagePickerController.isSourceTypeAvailable(.camera) { - let cameraAction = UIAction(title: L10n.Scene.Compose.MediaSelection.camera, image: UIImage(systemName: "camera"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] _ in - guard let self = self else { return } - self.present(self.imagePickerController, animated: true, completion: nil) - }) - children.append(cameraAction) - } - let browseAction = UIAction(title: L10n.Scene.Compose.MediaSelection.browse, image: UIImage(systemName: "ellipsis"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in - guard let self = self else { return } - self.present(self.documentPickerController, animated: true, completion: nil) - } - children.append(browseAction) - if self.viewModel.avatarImage.value != nil { - let deleteAction = UIAction(title: L10n.Scene.Register.Input.Avatar.delete, image: UIImage(systemName: "delete.left"), identifier: nil, discoverabilityTitle: nil, attributes: [.destructive], state: .off) { [weak self] _ in - guard let self = self else { return } - self.viewModel.avatarImage.value = nil - } - children.append(deleteAction) - } - - return UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: children) - } - private func cropImage(image: UIImage, pickerViewController: UIViewController) { DispatchQueue.main.async { let cropController = CropViewController(croppingStyle: .default, image: image) @@ -49,6 +19,12 @@ extension MastodonRegisterViewController { cropController.setAspectRatioPreset(.presetSquare, animated: true) cropController.aspectRatioPickerButtonHidden = true cropController.aspectRatioLockEnabled = true + + // fix iPad compatibility issue + // ref: https://github.com/TimOliver/TOCropViewController/issues/365#issuecomment-550239604 + cropController.modalTransitionStyle = .crossDissolve + cropController.transitioningDelegate = nil + pickerViewController.dismiss(animated: true, completion: { self.present(cropController, animated: true, completion: nil) }) @@ -57,7 +33,6 @@ extension MastodonRegisterViewController { } // MARK: - PHPickerViewControllerDelegate - extension MastodonRegisterViewController: PHPickerViewControllerDelegate { func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) { guard let itemProvider = results.first?.itemProvider, itemProvider.canLoadObject(ofClass: UIImage.self) else { @@ -86,7 +61,6 @@ extension MastodonRegisterViewController: PHPickerViewControllerDelegate { } // MARK: - UIImagePickerControllerDelegate - extension MastodonRegisterViewController: UIImagePickerControllerDelegate & UINavigationControllerDelegate { func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) { picker.dismiss(animated: true, completion: nil) @@ -103,7 +77,6 @@ extension MastodonRegisterViewController: UIImagePickerControllerDelegate & UINa } // MARK: - UIDocumentPickerDelegate - extension MastodonRegisterViewController: UIDocumentPickerDelegate { func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { guard let url = urls.first else { return } @@ -121,10 +94,9 @@ extension MastodonRegisterViewController: UIDocumentPickerDelegate { } // MARK: - CropViewControllerDelegate - extension MastodonRegisterViewController: CropViewControllerDelegate { public func cropViewController(_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, angle: Int) { - self.viewModel.avatarImage.value = image + self.viewModel.avatarImage = image cropViewController.dismiss(animated: true, completion: nil) } } diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift index 8428aaa79..b278a3969 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift @@ -16,11 +16,11 @@ final class MastodonRegisterViewController: UIViewController, NeedsDependency, O static let avatarImageMaxSizeInPixel = CGSize(width: 400, height: 400) - static let textFieldLabelFont = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold), maximumPointSize: 22) - static let errorPromptLabelFont = UIFontMetrics(forTextStyle: .caption1).scaledFont(for: .systemFont(ofSize: 13, weight: .semibold), maximumPointSize: 18) + let logger = Logger(subsystem: "MastodonRegisterViewController", category: "ViewController") var disposeBag = Set() - + private var observations = Set() + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -51,236 +51,30 @@ final class MastodonRegisterViewController: UIViewController, NeedsDependency, O let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - let scrollView: UIScrollView = { - let scrollview = UIScrollView() - scrollview.showsVerticalScrollIndicator = false - scrollview.keyboardDismissMode = .interactive - scrollview.alwaysBounceVertical = true - scrollview.clipsToBounds = false // make content could display over bleeding - scrollview.translatesAutoresizingMaskIntoConstraints = false - return scrollview + let tableView: UITableView = { + let tableView = UITableView() + tableView.rowHeight = UITableView.automaticDimension + tableView.separatorStyle = .none + tableView.backgroundColor = .clear + tableView.keyboardDismissMode = .onDrag + if #available(iOS 15.0, *) { + tableView.sectionHeaderTopPadding = .leastNonzeroMagnitude + } else { + // Fallback on earlier versions + } + return tableView }() - let stackView = UIStackView() - - let largeTitleLabel: UILabel = { - let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 34, weight: .bold)) - label.textColor = Asset.Colors.Label.primary.color - label.text = L10n.Scene.Register.title - label.numberOfLines = 0 - return label - }() - - let avatarView: UIView = { - let view = UIView() - view.backgroundColor = .clear - return view - }() - - let avatarButton: UIButton = { - let button = HighlightDimmableButton() - let boldFont = UIFont.systemFont(ofSize: 42) - let configuration = UIImage.SymbolConfiguration(font: boldFont) - let image = UIImage(systemName: "person.fill.viewfinder", withConfiguration: configuration) - - button.setImage(image?.withRenderingMode(UIImage.RenderingMode.alwaysTemplate), for: UIControl.State.normal) - button.imageView?.tintColor = Asset.Colors.Label.secondary.color - button.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - button.layer.cornerRadius = 10 - button.clipsToBounds = true - - return button - }() - - let plusIconImageView: UIImageView = { - let icon = UIImageView() - let image = Asset.Circles.plusCircleFill.image.withRenderingMode(.alwaysTemplate) - icon.image = image - icon.tintColor = Asset.Colors.Icon.plus.color - icon.backgroundColor = UIColor(dynamicProvider: { collection in - switch collection.userInterfaceStyle { - case .dark: - return Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - default: - return .white - } - }) - return icon - }() - - let domainLabel: UILabel = { - let label = UILabel() - label.font = MastodonRegisterViewController.textFieldLabelFont - label.textColor = Asset.Colors.Label.primary.color - return label - }() - - let usernameTextField: UITextField = { - let textField = UITextField() - textField.returnKeyType = .next - textField.autocapitalizationType = .none - textField.autocorrectionType = .no - textField.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - textField.textColor = Asset.Colors.Label.primary.color - textField.attributedPlaceholder = NSAttributedString(string: L10n.Scene.Register.Input.Username.placeholder, - attributes: [NSAttributedString.Key.foregroundColor: Asset.Colors.Label.secondary.color, - NSAttributedString.Key.font: MastodonRegisterViewController.textFieldLabelFont]) - textField.borderStyle = UITextField.BorderStyle.roundedRect - textField.font = MastodonRegisterViewController.textFieldLabelFont - textField.leftView = { - let containerView = UIView() - - let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: textField.frame.height)) - paddingView.translatesAutoresizingMaskIntoConstraints = false - containerView.addSubview(paddingView) - NSLayoutConstraint.activate([ - paddingView.topAnchor.constraint(equalTo: containerView.topAnchor), - paddingView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), - paddingView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), - paddingView.widthAnchor.constraint(equalToConstant: 5).priority(.defaultHigh), - ]) - - let label = UILabel() - label.font = MastodonRegisterViewController.textFieldLabelFont - label.textColor = Asset.Colors.Label.primary.color - label.text = " @" - - label.translatesAutoresizingMaskIntoConstraints = false - containerView.addSubview(label) - NSLayoutConstraint.activate([ - label.topAnchor.constraint(equalTo: containerView.topAnchor), - label.leadingAnchor.constraint(equalTo: paddingView.trailingAnchor), - label.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), - label.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), - ]) - return containerView - }() - textField.leftViewMode = .always - return textField - }() - - let usernameErrorPromptLabel: UILabel = { - let label = UILabel() - let color = Asset.Colors.danger.color - let font = MastodonRegisterViewController.errorPromptLabelFont - return label - }() - - let displayNameTextField: UITextField = { - let textField = UITextField() - textField.returnKeyType = .next - textField.autocapitalizationType = .none - textField.autocorrectionType = .no - textField.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - textField.textColor = Asset.Colors.Label.primary.color - textField.attributedPlaceholder = NSAttributedString(string: L10n.Scene.Register.Input.DisplayName.placeholder, - attributes: [NSAttributedString.Key.foregroundColor: Asset.Colors.Label.secondary.color, - NSAttributedString.Key.font: MastodonRegisterViewController.textFieldLabelFont]) - textField.borderStyle = UITextField.BorderStyle.roundedRect - let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: textField.frame.height)) - textField.leftView = paddingView - textField.leftViewMode = .always - textField.font = MastodonRegisterViewController.textFieldLabelFont - return textField - }() - - let emailTextField: UITextField = { - let textField = UITextField() - textField.returnKeyType = .next - textField.autocapitalizationType = .none - textField.autocorrectionType = .no - textField.keyboardType = .emailAddress - textField.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - textField.textColor = Asset.Colors.Label.primary.color - textField.attributedPlaceholder = NSAttributedString(string: L10n.Scene.Register.Input.Email.placeholder, - attributes: [NSAttributedString.Key.foregroundColor: Asset.Colors.Label.secondary.color, - NSAttributedString.Key.font: MastodonRegisterViewController.textFieldLabelFont]) - textField.borderStyle = UITextField.BorderStyle.roundedRect - let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: textField.frame.height)) - textField.leftView = paddingView - textField.leftViewMode = .always - textField.font = MastodonRegisterViewController.textFieldLabelFont - return textField - }() - - let emailErrorPromptLabel: UILabel = { - let label = UILabel() - let color = Asset.Colors.danger.color - let font = MastodonRegisterViewController.errorPromptLabelFont - return label - }() - - let passwordTextField: UITextField = { - let textField = UITextField() - textField.returnKeyType = .next // set to "Return" depends on if the last input field or not - textField.autocapitalizationType = .none - textField.autocorrectionType = .no - textField.keyboardType = .asciiCapable - textField.isSecureTextEntry = true - textField.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - textField.textColor = Asset.Colors.Label.primary.color - textField.attributedPlaceholder = NSAttributedString(string: L10n.Scene.Register.Input.Password.placeholder, - attributes: [NSAttributedString.Key.foregroundColor: Asset.Colors.Label.secondary.color, - NSAttributedString.Key.font: MastodonRegisterViewController.textFieldLabelFont]) - textField.borderStyle = UITextField.BorderStyle.roundedRect - let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: textField.frame.height)) - textField.leftView = paddingView - textField.leftViewMode = .always - textField.font = MastodonRegisterViewController.textFieldLabelFont - return textField - }() - - let passwordCheckLabel: UILabel = { - let label = UILabel() - label.numberOfLines = 0 - return label - }() - - let passwordErrorPromptLabel: UILabel = { - let label = UILabel() - let color = Asset.Colors.danger.color - let font = MastodonRegisterViewController.errorPromptLabelFont - return label - }() - - - lazy var reasonTextField: UITextField = { - let textField = UITextField() - textField.returnKeyType = .next // set to "Return" depends on if the last input field or not - textField.autocapitalizationType = .none - textField.autocorrectionType = .no - textField.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color - textField.textColor = Asset.Colors.Label.primary.color - textField.attributedPlaceholder = NSAttributedString(string: L10n.Scene.Register.Input.Invite.registrationUserInviteRequest, - attributes: [NSAttributedString.Key.foregroundColor: Asset.Colors.Label.secondary.color, - NSAttributedString.Key.font: MastodonRegisterViewController.textFieldLabelFont]) - textField.borderStyle = UITextField.BorderStyle.roundedRect - let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 5, height: textField.frame.height)) - textField.leftView = paddingView - textField.leftViewMode = .always - textField.font = MastodonRegisterViewController.textFieldLabelFont - return textField - }() - - let reasonErrorPromptLabel: UILabel = { - let label = UILabel() - let color = Asset.Colors.danger.color - let font = MastodonRegisterViewController.errorPromptLabelFont - return label - }() - - let buttonContainer = UIView() - let signUpButton: PrimaryActionButton = { - let button = PrimaryActionButton() - button.isEnabled = false - button.setTitle(L10n.Common.Controls.Actions.continue, for: .normal) - return button + let navigationActionView: NavigationActionView = { + let navigationActionView = NavigationActionView() + navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + return navigationActionView }() deinit { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) } + } extension MastodonRegisterViewController { @@ -289,517 +83,200 @@ extension MastodonRegisterViewController { super.viewDidLoad() setupOnboardingAppearance() - configureTitleLabel() defer { setupNavigationBarBackgroundView() - configureFormLayout() } - avatarButton.menu = createMediaContextMenu() - avatarButton.showsMenuAsPrimaryAction = true + tableView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(tableView) + NSLayoutConstraint.activate([ + tableView.topAnchor.constraint(equalTo: view.topAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) - domainLabel.text = "@" + viewModel.domain + " " - domainLabel.sizeToFit() - passwordCheckLabel.attributedText = MastodonRegisterViewModel.attributeStringForPassword(validateState: .empty) - usernameTextField.rightView = domainLabel - usernameTextField.rightViewMode = .always - usernameTextField.delegate = self - displayNameTextField.delegate = self - emailTextField.delegate = self - passwordTextField.delegate = self - - // gesture - view.addGestureRecognizer(tapGestureRecognizer) - tapGestureRecognizer.addTarget(self, action: #selector(tapGestureRecognizerHandler)) - - // stackView - stackView.axis = .vertical - stackView.distribution = .fill - stackView.spacing = 40 - stackView.layoutMargins = UIEdgeInsets(top: 20, left: 0, bottom: 26, right: 0) - stackView.isLayoutMarginsRelativeArrangement = true - stackView.addArrangedSubview(largeTitleLabel) - stackView.addArrangedSubview(avatarView) - - let formTableStackView = UIStackView() - stackView.addArrangedSubview(formTableStackView) - formTableStackView.axis = .vertical - formTableStackView.distribution = .fill - formTableStackView.spacing = 40 - - formTableStackView.addArrangedSubview(usernameTextField) - formTableStackView.addArrangedSubview(displayNameTextField) - formTableStackView.addArrangedSubview(emailTextField) - formTableStackView.addArrangedSubview(passwordTextField) - formTableStackView.addArrangedSubview(passwordCheckLabel) - if viewModel.approvalRequired { - formTableStackView.addArrangedSubview(reasonTextField) + navigationActionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(navigationActionView) + defer { + view.bringSubviewToFront(navigationActionView) } - - usernameErrorPromptLabel.translatesAutoresizingMaskIntoConstraints = false - formTableStackView.addSubview(usernameErrorPromptLabel) NSLayoutConstraint.activate([ - usernameErrorPromptLabel.topAnchor.constraint(equalTo: usernameTextField.bottomAnchor, constant: 6), - usernameErrorPromptLabel.leadingAnchor.constraint(equalTo: usernameTextField.leadingAnchor), - usernameErrorPromptLabel.trailingAnchor.constraint(equalTo: usernameTextField.trailingAnchor), + navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor), ]) - emailErrorPromptLabel.translatesAutoresizingMaskIntoConstraints = false - formTableStackView.addSubview(emailErrorPromptLabel) - NSLayoutConstraint.activate([ - emailErrorPromptLabel.topAnchor.constraint(equalTo: emailTextField.bottomAnchor, constant: 6), - emailErrorPromptLabel.leadingAnchor.constraint(equalTo: emailTextField.leadingAnchor), - emailErrorPromptLabel.trailingAnchor.constraint(equalTo: emailTextField.trailingAnchor), - ]) + navigationActionView + .observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in + guard let self = self else { return } + let inset = navigationActionView.frame.height + self.tableView.contentInset.bottom = inset + } + .store(in: &observations) - passwordErrorPromptLabel.translatesAutoresizingMaskIntoConstraints = false - formTableStackView.addSubview(passwordErrorPromptLabel) - NSLayoutConstraint.activate([ - passwordErrorPromptLabel.topAnchor.constraint(equalTo: passwordCheckLabel.bottomAnchor, constant: 2), - passwordErrorPromptLabel.leadingAnchor.constraint(equalTo: passwordTextField.leadingAnchor), - passwordErrorPromptLabel.trailingAnchor.constraint(equalTo: passwordTextField.trailingAnchor), - ]) - - // scrollView - view.addSubview(scrollView) - NSLayoutConstraint.activate([ - scrollView.frameLayoutGuide.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor), - scrollView.frameLayoutGuide.leadingAnchor.constraint(equalTo: view.readableContentGuide.leadingAnchor), - view.readableContentGuide.trailingAnchor.constraint(equalTo: scrollView.frameLayoutGuide.trailingAnchor), - scrollView.frameLayoutGuide.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor), - scrollView.frameLayoutGuide.widthAnchor.constraint(equalTo: scrollView.contentLayoutGuide.widthAnchor), - ]) - - // stackView - scrollView.addSubview(stackView) - stackView.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor), - stackView.leadingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.leadingAnchor), - stackView.trailingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.trailingAnchor), - stackView.widthAnchor.constraint(equalTo: scrollView.contentLayoutGuide.widthAnchor), - scrollView.contentLayoutGuide.bottomAnchor.constraint(equalTo: stackView.bottomAnchor), - ]) - - // photoview - avatarView.translatesAutoresizingMaskIntoConstraints = false - avatarView.addSubview(avatarButton) - NSLayoutConstraint.activate([ - avatarView.heightAnchor.constraint(equalToConstant: 92).priority(.required - 1), - ]) - avatarButton.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - avatarButton.heightAnchor.constraint(equalToConstant: 92).priority(.required - 1), - avatarButton.widthAnchor.constraint(equalToConstant: 92).priority(.required - 1), - avatarButton.leadingAnchor.constraint(greaterThanOrEqualTo: avatarView.leadingAnchor).priority(.required - 1), - avatarView.trailingAnchor.constraint(greaterThanOrEqualTo: avatarButton.trailingAnchor).priority(.required - 1), - avatarButton.centerXAnchor.constraint(equalTo: avatarView.centerXAnchor), - avatarButton.centerYAnchor.constraint(equalTo: avatarView.centerYAnchor), - ]) - - plusIconImageView.translatesAutoresizingMaskIntoConstraints = false - avatarView.addSubview(plusIconImageView) - NSLayoutConstraint.activate([ - plusIconImageView.centerXAnchor.constraint(equalTo: avatarButton.trailingAnchor), - plusIconImageView.centerYAnchor.constraint(equalTo: avatarButton.bottomAnchor), - ]) - - // textfield - NSLayoutConstraint.activate([ - usernameTextField.heightAnchor.constraint(equalToConstant: 50).priority(.required - 1), - displayNameTextField.heightAnchor.constraint(equalToConstant: 50).priority(.required - 1), - emailTextField.heightAnchor.constraint(equalToConstant: 50).priority(.required - 1), - passwordTextField.heightAnchor.constraint(equalToConstant: 50).priority(.required - 1), - ]) - - // password - formTableStackView.setCustomSpacing(6, after: passwordTextField) - formTableStackView.setCustomSpacing(32, after: passwordCheckLabel) + navigationActionView.backButton.addTarget(self, action: #selector(MastodonRegisterViewController.backButtonPressed(_:)), for: .touchUpInside) + navigationActionView.nextButton.addTarget(self, action: #selector(MastodonRegisterViewController.nextButtonPressed(_:)), for: .touchUpInside) - // return - if viewModel.approvalRequired { - reasonTextField.returnKeyType = .done - } else { - passwordTextField.returnKeyType = .done - } - - // button - formTableStackView.addArrangedSubview(buttonContainer) - signUpButton.translatesAutoresizingMaskIntoConstraints = false - buttonContainer.addSubview(signUpButton) - NSLayoutConstraint.activate([ - signUpButton.topAnchor.constraint(equalTo: buttonContainer.topAnchor), - signUpButton.leadingAnchor.constraint(equalTo: buttonContainer.leadingAnchor), - buttonContainer.trailingAnchor.constraint(equalTo: signUpButton.trailingAnchor), - buttonContainer.bottomAnchor.constraint(equalTo: signUpButton.bottomAnchor), - signUpButton.heightAnchor.constraint(equalToConstant: MastodonRegisterViewController.actionButtonHeight).priority(.required - 1), - buttonContainer.heightAnchor.constraint(equalToConstant: MastodonRegisterViewController.actionButtonHeight).priority(.required - 1), - ]) - signUpButton.setContentHuggingPriority(.defaultLow, for: .horizontal) - signUpButton.setContentHuggingPriority(.defaultLow, for: .vertical) - signUpButton.setContentCompressionResistancePriority(.required - 1, for: .vertical) - signUpButton.setContentCompressionResistancePriority(.required - 1, for: .horizontal) - buttonContainer.setContentCompressionResistancePriority(.required - 1, for: .vertical) - - Publishers.CombineLatest( - KeyboardResponderService.shared.state.eraseToAnyPublisher(), - KeyboardResponderService.shared.endFrame.eraseToAnyPublisher() - ) - .sink(receiveValue: { [weak self] state, endFrame in - guard let self = self else { return } - - guard state == .dock else { - self.scrollView.contentInset.bottom = 0.0 - self.scrollView.verticalScrollIndicatorInsets.bottom = 0.0 - return - } - - let contentFrame = self.view.convert(self.scrollView.frame, to: nil) - let padding = contentFrame.maxY - endFrame.minY - guard padding > 0 else { - self.scrollView.contentInset.bottom = 0.0 - self.scrollView.verticalScrollIndicatorInsets.bottom = 0.0 - return - } - - self.scrollView.contentInset.bottom = padding + 16 - self.scrollView.verticalScrollIndicatorInsets.bottom = padding + 16 - - if self.passwordTextField.isFirstResponder { - let contentFrame = self.buttonContainer.convert(self.signUpButton.frame, to: nil) - let labelPadding = contentFrame.maxY - endFrame.minY - let contentOffsetY = self.scrollView.contentOffset.y - DispatchQueue.main.async { - self.scrollView.setContentOffset(CGPoint(x: 0, y: contentOffsetY + labelPadding + 16.0), animated: true) - } - } - }) - .store(in: &disposeBag) - - avatarButton.publisher(for: \.isHighlighted, options: .new) - .receive(on: DispatchQueue.main) - .sink { [weak self] isHighlighted in - guard let self = self else { return } - let alpha: CGFloat = isHighlighted ? 0.6 : 1 - self.plusIconImageView.alpha = alpha - } - .store(in: &disposeBag) - - viewModel.isRegistering - .receive(on: DispatchQueue.main) - .sink { [weak self] isRegistering in - guard let self = self else { return } - isRegistering ? self.signUpButton.showLoading() : self.signUpButton.stopLoading() - } - .store(in: &disposeBag) - - viewModel.usernameValidateState - .receive(on: DispatchQueue.main) - .sink { [weak self] validateState in - guard let self = self else { return } - self.setTextFieldValidAppearance(self.usernameTextField, validateState: validateState) - } - .store(in: &disposeBag) - viewModel.usernameErrorPrompt - .receive(on: DispatchQueue.main) - .sink { [weak self] prompt in - guard let self = self else { return } - self.usernameErrorPromptLabel.attributedText = prompt - } - .store(in: &disposeBag) - viewModel.displayNameValidateState - .receive(on: DispatchQueue.main) - .sink { [weak self] validateState in - guard let self = self else { return } - self.setTextFieldValidAppearance(self.displayNameTextField, validateState: validateState) - } - .store(in: &disposeBag) - viewModel.emailValidateState - .receive(on: DispatchQueue.main) - .sink { [weak self] validateState in - guard let self = self else { return } - self.setTextFieldValidAppearance(self.emailTextField, validateState: validateState) - } - .store(in: &disposeBag) - viewModel.emailErrorPrompt - .receive(on: DispatchQueue.main) - .sink { [weak self] prompt in - guard let self = self else { return } - self.emailErrorPromptLabel.attributedText = prompt - } - .store(in: &disposeBag) - viewModel.passwordValidateState - .receive(on: DispatchQueue.main) - .sink { [weak self] validateState in - guard let self = self else { return } - self.setTextFieldValidAppearance(self.passwordTextField, validateState: validateState) - self.passwordCheckLabel.attributedText = MastodonRegisterViewModel.attributeStringForPassword(validateState: validateState) - } - .store(in: &disposeBag) - viewModel.passwordErrorPrompt - .receive(on: DispatchQueue.main) - .sink { [weak self] prompt in - guard let self = self else { return } - self.passwordErrorPromptLabel.attributedText = prompt - } - .store(in: &disposeBag) - viewModel.reasonErrorPrompt - .receive(on: DispatchQueue.main) - .sink { [weak self] prompt in - guard let self = self else { return } - self.reasonErrorPromptLabel.attributedText = prompt - } - .store(in: &disposeBag) - - viewModel.isAllValid + viewModel.$isAllValid .receive(on: DispatchQueue.main) .sink { [weak self] isAllValid in guard let self = self else { return } - self.signUpButton.isEnabled = isAllValid + self.navigationActionView.nextButton.isEnabled = isAllValid } .store(in: &disposeBag) - - viewModel.error - .receive(on: DispatchQueue.main) - .sink { [weak self] error in - guard let self = self else { return } - guard let error = error as? Mastodon.API.Error else { return } - let alertController = UIAlertController(for: error, title: "Sign Up Failure", preferredStyle: .alert) - let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil) - alertController.addAction(okAction) - self.coordinator.present( - scene: .alertController(alertController: alertController), - from: nil, - transition: .alertController(animated: true, completion: nil) - ) - } + + viewModel.setupDiffableDataSource(tableView: tableView) + + KeyboardResponderService + .configure( + scrollView: tableView, + layoutNeedsUpdate: viewModel.viewDidAppear.eraseToAnyPublisher() + ) .store(in: &disposeBag) - viewModel.avatarImage + // gesture + view.addGestureRecognizer(tapGestureRecognizer) + tapGestureRecognizer.addTarget(self, action: #selector(tapGestureRecognizerHandler)) + +// // return +// if viewModel.approvalRequired { +// reasonTextField.returnKeyType = .done +// } else { +// passwordTextField.returnKeyType = .done +// } +// +// viewModel.usernameValidateState +// .receive(on: DispatchQueue.main) +// .sink { [weak self] validateState in +// guard let self = self else { return } +// self.setTextFieldValidAppearance(self.usernameTextField, validateState: validateState) +// } +// .store(in: &disposeBag) +// viewModel.usernameErrorPrompt +// .receive(on: DispatchQueue.main) +// .sink { [weak self] prompt in +// guard let self = self else { return } +// self.usernameErrorPromptLabel.attributedText = prompt +// } +// .store(in: &disposeBag) +// viewModel.displayNameValidateState +// .receive(on: DispatchQueue.main) +// .sink { [weak self] validateState in +// guard let self = self else { return } +// self.setTextFieldValidAppearance(self.displayNameTextField, validateState: validateState) +// } +// .store(in: &disposeBag) +// viewModel.emailValidateState +// .receive(on: DispatchQueue.main) +// .sink { [weak self] validateState in +// guard let self = self else { return } +// self.setTextFieldValidAppearance(self.emailTextField, validateState: validateState) +// } +// .store(in: &disposeBag) +// viewModel.emailErrorPrompt +// .receive(on: DispatchQueue.main) +// .sink { [weak self] prompt in +// guard let self = self else { return } +// self.emailErrorPromptLabel.attributedText = prompt +// } +// .store(in: &disposeBag) +// viewModel.passwordValidateState +// .receive(on: DispatchQueue.main) +// .sink { [weak self] validateState in +// guard let self = self else { return } +// self.setTextFieldValidAppearance(self.passwordTextField, validateState: validateState) +// self.passwordCheckLabel.attributedText = MastodonRegisterViewModel.attributeStringForPassword(validateState: validateState) +// } +// .store(in: &disposeBag) +// viewModel.passwordErrorPrompt +// .receive(on: DispatchQueue.main) +// .sink { [weak self] prompt in +// guard let self = self else { return } +// self.passwordErrorPromptLabel.attributedText = prompt +// } +// .store(in: &disposeBag) +// viewModel.reasonErrorPrompt +// .receive(on: DispatchQueue.main) +// .sink { [weak self] prompt in +// guard let self = self else { return } +// self.reasonErrorPromptLabel.attributedText = prompt +// } +// .store(in: &disposeBag) +// viewModel.error +// .receive(on: DispatchQueue.main) +// .sink { [weak self] error in +// guard let self = self else { return } +// guard let error = error as? Mastodon.API.Error else { return } +// let alertController = UIAlertController(for: error, title: "Sign Up Failure", preferredStyle: .alert) +// let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil) +// alertController.addAction(okAction) +// self.coordinator.present( +// scene: .alertController(alertController: alertController), +// from: nil, +// transition: .alertController(animated: true, completion: nil) +// ) +// } +// .store(in: &disposeBag) +// + + viewModel.avatarMediaMenuActionPublisher .receive(on: DispatchQueue.main) - .sink{ [weak self] image in + .sink { [weak self] action in guard let self = self else { return } - self.avatarButton.menu = self.createMediaContextMenu() - if let avatar = image { - self.avatarButton.setImage(avatar, for: .normal) - } else { - let boldFont = UIFont.systemFont(ofSize: 42) - let configuration = UIImage.SymbolConfiguration(font: boldFont) - let image = UIImage(systemName: "person.fill.viewfinder", withConfiguration: configuration) - self.avatarButton.setImage(image?.withRenderingMode(UIImage.RenderingMode.alwaysTemplate), for: UIControl.State.normal) + switch action { + case .photoLibrary: + self.present(self.imagePicker, animated: true, completion: nil) + case .camera: + self.present(self.imagePickerController, animated: true, completion: nil) + case .browse: + self.present(self.documentPickerController, animated: true, completion: nil) + case .delete: + self.viewModel.avatarImage = nil } } .store(in: &disposeBag) - NotificationCenter.default - .publisher(for: UITextField.textDidChangeNotification, object: usernameTextField) + + viewModel.$isRegistering .receive(on: DispatchQueue.main) - .sink { [weak self] _ in + .sink { [weak self] isRegistering in guard let self = self else { return } - self.viewModel.username.value = self.usernameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + isRegistering ? self.navigationActionView.nextButton.showLoading() : self.navigationActionView.nextButton.stopLoading() } .store(in: &disposeBag) - - NotificationCenter.default - .publisher(for: UITextField.textDidChangeNotification, object: displayNameTextField) - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in - guard let self = self else { return } - self.viewModel.displayName.value = self.displayNameTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" - } - .store(in: &disposeBag) - - NotificationCenter.default - .publisher(for: UITextField.textDidChangeNotification, object: emailTextField) - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in - guard let self = self else { return } - self.viewModel.email.value = self.emailTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" - } - .store(in: &disposeBag) - - NotificationCenter.default - .publisher(for: UITextField.textDidChangeNotification, object: passwordTextField) - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in - guard let self = self else { return } - self.viewModel.password.value = self.passwordTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" - } - .store(in: &disposeBag) - - if viewModel.approvalRequired { - reasonTextField.delegate = self - NSLayoutConstraint.activate([ - reasonTextField.heightAnchor.constraint(equalToConstant: 50).priority(.defaultHigh), - ]) - reasonErrorPromptLabel.translatesAutoresizingMaskIntoConstraints = false - stackView.addSubview(reasonErrorPromptLabel) - NSLayoutConstraint.activate([ - reasonErrorPromptLabel.topAnchor.constraint(equalTo: reasonTextField.bottomAnchor, constant: 6), - reasonErrorPromptLabel.leadingAnchor.constraint(equalTo: reasonTextField.leadingAnchor), - reasonErrorPromptLabel.trailingAnchor.constraint(equalTo: reasonTextField.trailingAnchor), - ]) - - viewModel.reasonValidateState - .receive(on: DispatchQueue.main) - .sink { [weak self] validateState in - guard let self = self else { return } - self.setTextFieldValidAppearance(self.reasonTextField, validateState: validateState) - } - .store(in: &disposeBag) - NotificationCenter.default - .publisher(for: UITextField.textDidChangeNotification, object: reasonTextField) - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in - guard let self = self else { return } - self.viewModel.reason.value = self.reasonTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" - } - .store(in: &disposeBag) - } - - signUpButton.addTarget(self, action: #selector(MastodonRegisterViewController.signUpButtonPressed(_:)), for: .touchUpInside) } - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - plusIconImageView.layer.cornerRadius = plusIconImageView.frame.width / 2 - plusIconImageView.layer.masksToBounds = true - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) - configureTitleLabel() - configureFormLayout() - } -} - -extension MastodonRegisterViewController: UITextFieldDelegate { - func textFieldDidBeginEditing(_ textField: UITextField) { - let text = textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" - - switch textField { - case usernameTextField: - viewModel.username.value = text - case displayNameTextField: - viewModel.displayName.value = text - case emailTextField: - viewModel.email.value = text - case passwordTextField: - viewModel.password.value = text - case reasonTextField: - viewModel.reason.value = text - default: - break - } + viewModel.viewDidAppear.send() } - func textFieldDidEndEditing(_ textField: UITextField) { - let text = textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" - - switch textField { - case usernameTextField: - viewModel.username.value = text - case displayNameTextField: - viewModel.displayName.value = text - case emailTextField: - viewModel.email.value = text - case passwordTextField: - viewModel.password.value = text - case reasonTextField: - viewModel.reason.value = text - default: - break - } - } - - func textFieldShouldReturn(_ textField: UITextField) -> Bool { - switch textField { - case usernameTextField: - displayNameTextField.becomeFirstResponder() - case displayNameTextField: - emailTextField.becomeFirstResponder() - case emailTextField: - passwordTextField.becomeFirstResponder() - case passwordTextField: - if viewModel.approvalRequired { - reasonTextField.becomeFirstResponder() - } else { - passwordTextField.resignFirstResponder() - } - case reasonTextField: - reasonTextField.resignFirstResponder() - default: - break - } - return true - } - - func showShadowWithColor(color: UIColor, textField: UITextField) { - // To apply Shadow - textField.layer.shadowOpacity = 1 - textField.layer.shadowRadius = 2.0 - textField.layer.shadowOffset = CGSize.zero - textField.layer.shadowColor = color.cgColor - // textField.layer.shadowPath = UIBezierPath(roundedRect: textField.bounds, byRoundingCorners: .allCorners, cornerRadii: CGSize(width: 2.0, height: 2.0)).cgPath - } - - private func setTextFieldValidAppearance(_ textField: UITextField, validateState: MastodonRegisterViewModel.ValidateState) { - switch validateState { - case .empty: - showShadowWithColor(color: textField.isFirstResponder ? Asset.Colors.brandBlue.color : .clear, textField: textField) - case .valid: - showShadowWithColor(color: Asset.Colors.TextField.valid.color, textField: textField) - case .invalid: - showShadowWithColor(color: Asset.Colors.TextField.invalid.color, textField: textField) - } - } } extension MastodonRegisterViewController { - private func configureTitleLabel() { - switch traitCollection.horizontalSizeClass { - case .regular: - navigationItem.largeTitleDisplayMode = .always - navigationItem.title = L10n.Scene.ServerPicker.title.replacingOccurrences(of: "\n", with: " ") - largeTitleLabel.isHidden = true - default: - navigationItem.largeTitleDisplayMode = .never - navigationItem.title = nil - largeTitleLabel.isHidden = false - } - } - private func configureFormLayout() { - switch traitCollection.horizontalSizeClass { - case .regular: - stackView.axis = .horizontal - stackView.distribution = .fillProportionally - default: - stackView.axis = .vertical - stackView.distribution = .fill - } - } - - private func configureMargin() { - - } -} - -extension MastodonRegisterViewController { @objc private func tapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { view.endEditing(true) } - @objc private func signUpButtonPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) - guard viewModel.isAllValid.value else { return } - - guard !viewModel.isRegistering.value else { return } - viewModel.isRegistering.value = true + @objc private func backButtonPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + navigationController?.popViewController(animated: true) + } - let username = viewModel.username.value - let email = viewModel.email.value - let password = viewModel.password.value + @objc private func nextButtonPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + + guard viewModel.isAllValid else { return } + + guard !viewModel.isRegistering else { return } + viewModel.isRegistering = true + + let username = viewModel.username + let email = viewModel.email + let password = viewModel.password + let reason = viewModel.reason let locale: String = { guard let url = Bundle.main.url(forResource: "local-codes", withExtension: "json"), @@ -814,7 +291,7 @@ extension MastodonRegisterViewController { guard localCode[code] != nil else { return "en" } return code }() - + // pick device preferred language guard let identifier = Locale.preferredLanguages.first else { return fallbackLanguageCode @@ -843,19 +320,19 @@ extension MastodonRegisterViewController { return languageCode } return firstMatchExtendCode - + }() let query = Mastodon.API.Account.RegisterQuery( - reason: viewModel.reason.value, + reason: reason, username: username, email: email, password: password, agreement: true, // user confirmed in the server rules scene locale: locale ) - + var retryCount = 0 - + // register without show server rules context.apiService.accountRegister( domain: viewModel.domain, @@ -864,7 +341,7 @@ extension MastodonRegisterViewController { ) .tryCatch { [weak self] error -> AnyPublisher, Error> in guard let self = self else { throw error } - guard let error = self.viewModel.error.value as? Mastodon.API.Error, + guard let error = self.viewModel.error as? Mastodon.API.Error, case let .generic(errorEntity) = error.mastodonError, errorEntity.error == "Validation failed: Locale is not included in the list" else { @@ -891,10 +368,10 @@ extension MastodonRegisterViewController { .receive(on: DispatchQueue.main) .sink { [weak self] completion in guard let self = self else { return } - self.viewModel.isRegistering.value = false + self.viewModel.isRegistering = false switch completion { case .failure(let error): - self.viewModel.error.send(error) + self.viewModel.error = error case .finished: break } @@ -902,9 +379,9 @@ extension MastodonRegisterViewController { guard let self = self else { return } let userToken = response.value let updateCredentialQuery: Mastodon.API.Account.UpdateCredentialQuery = { - let displayName: String? = self.viewModel.displayName.value.isEmpty ? nil : self.viewModel.displayName.value + let displayName: String? = self.viewModel.name.isEmpty ? nil : self.viewModel.name let avatar: Mastodon.Query.MediaAttachment? = { - guard let avatarImage = self.viewModel.avatarImage.value else { return nil } + guard let avatarImage = self.viewModel.avatarImage else { return nil } guard avatarImage.size.width <= MastodonRegisterViewController.avatarImageMaxSizeInPixel.width else { return .png(avatarImage.af.imageScaled(to: MastodonRegisterViewController.avatarImageMaxSizeInPixel).pngData()) } @@ -920,4 +397,67 @@ extension MastodonRegisterViewController { } .store(in: &disposeBag) } + +} + +extension MastodonRegisterViewController: UITextFieldDelegate { +// func textFieldDidBeginEditing(_ textField: UITextField) { +// let text = textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" +// +// switch textField { +// case usernameTextField: +// viewModel.username.value = text +// case displayNameTextField: +// viewModel.displayName.value = text +// case emailTextField: +// viewModel.email.value = text +// case passwordTextField: +// viewModel.password.value = text +// case reasonTextField: +// viewModel.reason.value = text +// default: +// break +// } +// } +// +// func textFieldDidEndEditing(_ textField: UITextField) { +// let text = textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" +// +// switch textField { +// case usernameTextField: +// viewModel.username.value = text +// case displayNameTextField: +// viewModel.displayName.value = text +// case emailTextField: +// viewModel.email.value = text +// case passwordTextField: +// viewModel.password.value = text +// case reasonTextField: +// viewModel.reason.value = text +// default: +// break +// } +// } +// +// func textFieldShouldReturn(_ textField: UITextField) -> Bool { +// switch textField { +// case usernameTextField: +// displayNameTextField.becomeFirstResponder() +// case displayNameTextField: +// emailTextField.becomeFirstResponder() +// case emailTextField: +// passwordTextField.becomeFirstResponder() +// case passwordTextField: +// if viewModel.approvalRequired { +// reasonTextField.becomeFirstResponder() +// } else { +// passwordTextField.resignFirstResponder() +// } +// case reasonTextField: +// reasonTextField.resignFirstResponder() +// default: +// break +// } +// return true +// } } diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift new file mode 100644 index 000000000..e075f47c8 --- /dev/null +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift @@ -0,0 +1,231 @@ +// +// MastodonRegisterViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-1-5. +// + +import UIKit +import Combine + +extension MastodonRegisterViewModel { + func setupDiffableDataSource( + tableView: UITableView + ) { + tableView.register(OnboardingHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: OnboardingHeadlineTableViewCell.self)) + tableView.register(MastodonRegisterAvatarTableViewCell.self, forCellReuseIdentifier: String(describing: MastodonRegisterAvatarTableViewCell.self)) + tableView.register(MastodonRegisterTextFieldTableViewCell.self, forCellReuseIdentifier: String(describing: MastodonRegisterTextFieldTableViewCell.self)) + tableView.register(MastodonRegisterPasswordHintTableViewCell.self, forCellReuseIdentifier: String(describing: MastodonRegisterPasswordHintTableViewCell.self)) + + diffableDataSource = UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item in + switch item { + case .header: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: OnboardingHeadlineTableViewCell.self), for: indexPath) as! OnboardingHeadlineTableViewCell + cell.titleLabel.text = L10n.Scene.Register.title + cell.subTitleLabel.isHidden = true + return cell + case .avatar: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: MastodonRegisterAvatarTableViewCell.self), for: indexPath) as! MastodonRegisterAvatarTableViewCell + self.configureAvatar(cell: cell) + return cell + case .name: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: MastodonRegisterTextFieldTableViewCell.self), for: indexPath) as! MastodonRegisterTextFieldTableViewCell + cell.setupTextViewPlaceholder(text: L10n.Scene.Register.Input.DisplayName.placeholder) + cell.textField.keyboardType = .default + cell.textField.autocapitalizationType = .words + cell.textField.text = self.name + NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification, object: cell.textField) + .receive(on: DispatchQueue.main) + .compactMap { notification in + guard let textField = notification.object as? UITextField else { + assertionFailure() + return nil + } + return textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + } + .assign(to: \.name, on: self) + .store(in: &cell.disposeBag) + return cell + case .username: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: MastodonRegisterTextFieldTableViewCell.self), for: indexPath) as! MastodonRegisterTextFieldTableViewCell + cell.setupTextViewRightView(text: "@" + self.domain) + cell.setupTextViewPlaceholder(text: L10n.Scene.Register.Input.Username.placeholder) + cell.textField.keyboardType = .alphabet + cell.textField.autocorrectionType = .no + cell.textField.text = self.username + NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification, object: cell.textField) + .receive(on: DispatchQueue.main) + .compactMap { notification in + guard let textField = notification.object as? UITextField else { + assertionFailure() + return nil + } + return textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + } + .assign(to: \.username, on: self) + .store(in: &cell.disposeBag) + self.configureTextFieldCell(cell: cell, validateState: self.$usernameValidateState) + return cell + case .email: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: MastodonRegisterTextFieldTableViewCell.self), for: indexPath) as! MastodonRegisterTextFieldTableViewCell + cell.setupTextViewPlaceholder(text: L10n.Scene.Register.Input.Email.placeholder) + cell.textField.keyboardType = .emailAddress + cell.textField.autocorrectionType = .no + cell.textField.text = self.email + NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification, object: cell.textField) + .receive(on: DispatchQueue.main) + .compactMap { notification in + guard let textField = notification.object as? UITextField else { + assertionFailure() + return nil + } + return textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + } + .assign(to: \.email, on: self) + .store(in: &cell.disposeBag) + self.configureTextFieldCell(cell: cell, validateState: self.$emailValidateState) + return cell + case .password: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: MastodonRegisterTextFieldTableViewCell.self), for: indexPath) as! MastodonRegisterTextFieldTableViewCell + cell.setupTextViewPlaceholder(text: L10n.Scene.Register.Input.Password.placeholder) + cell.textField.keyboardType = .alphabet + cell.textField.autocorrectionType = .no + cell.textField.isSecureTextEntry = true + cell.textField.text = self.password + NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification, object: cell.textField) + .receive(on: DispatchQueue.main) + .compactMap { notification in + guard let textField = notification.object as? UITextField else { + assertionFailure() + return nil + } + return textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + } + .assign(to: \.password, on: self) + .store(in: &cell.disposeBag) + self.configureTextFieldCell(cell: cell, validateState: self.$passwordValidateState) + return cell + case .hint: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: MastodonRegisterPasswordHintTableViewCell.self), for: indexPath) as! MastodonRegisterPasswordHintTableViewCell + return cell + case .reason: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: MastodonRegisterTextFieldTableViewCell.self), for: indexPath) as! MastodonRegisterTextFieldTableViewCell + cell.setupTextViewPlaceholder(text: L10n.Scene.Register.Input.Invite.registrationUserInviteRequest) + cell.textField.keyboardType = .default + cell.textField.text = self.reason + NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification, object: cell.textField) + .receive(on: DispatchQueue.main) + .compactMap { notification in + guard let textField = notification.object as? UITextField else { + assertionFailure() + return nil + } + return textField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" + } + .assign(to: \.reason, on: self) + .store(in: &cell.disposeBag) + self.configureTextFieldCell(cell: cell, validateState: self.$reasonValidateState) + return cell + default: + assertionFailure() + return UITableViewCell() + } + } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + snapshot.appendItems([.header], toSection: .main) + snapshot.appendItems([.avatar, .name, .username, .email, .password, .hint], toSection: .main) + if approvalRequired { + snapshot.appendItems([.reason], toSection: .main) + } + diffableDataSource?.applySnapshot(snapshot, animated: false, completion: nil) + } +} + +extension MastodonRegisterViewModel { + private func configureAvatar(cell: MastodonRegisterAvatarTableViewCell) { + self.$avatarImage + .receive(on: DispatchQueue.main) + .sink { [weak self, weak cell] image in + guard let self = self else { return } + guard let cell = cell else { return } + let image = image ?? Asset.Scene.Onboarding.avatarPlaceholder.image + cell.avatarButton.setImage(image, for: .normal) + cell.avatarButton.menu = self.createAvatarMediaContextMenu() + cell.avatarButton.showsMenuAsPrimaryAction = true + } + .store(in: &cell.disposeBag) + } + + enum AvatarMediaMenuAction { + case photoLibrary + case camera + case browse + case delete + } + + private func createAvatarMediaContextMenu() -> UIMenu { + var children: [UIMenuElement] = [] + + // Photo Library + let photoLibraryAction = UIAction(title: L10n.Scene.Compose.MediaSelection.photoLibrary, image: UIImage(systemName: "rectangle.on.rectangle"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in + guard let self = self else { return } + self.avatarMediaMenuActionPublisher.send(.photoLibrary) + } + children.append(photoLibraryAction) + + // Camera + if UIImagePickerController.isSourceTypeAvailable(.camera) { + let cameraAction = UIAction(title: L10n.Scene.Compose.MediaSelection.camera, image: UIImage(systemName: "camera"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] _ in + guard let self = self else { return } + self.avatarMediaMenuActionPublisher.send(.camera) + }) + children.append(cameraAction) + } + + // Browse + let browseAction = UIAction(title: L10n.Scene.Compose.MediaSelection.browse, image: UIImage(systemName: "ellipsis"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off) { [weak self] _ in + guard let self = self else { return } + self.avatarMediaMenuActionPublisher.send(.browse) + } + children.append(browseAction) + + // Delete + if avatarImage != nil { + let deleteAction = UIAction(title: L10n.Scene.Register.Input.Avatar.delete, image: UIImage(systemName: "delete.left"), identifier: nil, discoverabilityTitle: nil, attributes: [.destructive], state: .off) { [weak self] _ in + guard let self = self else { return } + self.avatarMediaMenuActionPublisher.send(.delete) + } + children.append(deleteAction) + } + + return UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: children) + } + + private func configureTextFieldCell( + cell: MastodonRegisterTextFieldTableViewCell, + validateState: Published.Publisher + ) { + Publishers.CombineLatest( + validateState, + cell.textField.publisher(for: \.isFirstResponder) + ) + .receive(on: DispatchQueue.main) + .sink { [weak cell] validateState, isFirstResponder in + guard let cell = cell else { return } + switch validateState { + case .empty: + cell.textFieldShadowContainer.shadowColor = isFirstResponder ? Asset.Colors.brandBlue.color : .black + cell.textFieldShadowContainer.shadowAlpha = isFirstResponder ? 1 : 0.25 + case .valid: + cell.textFieldShadowContainer.shadowColor = Asset.Colors.TextField.valid.color + cell.textFieldShadowContainer.shadowAlpha = 1 + case .invalid: + cell.textFieldShadowContainer.shadowColor = Asset.Colors.TextField.invalid.color + cell.textFieldShadowContainer.shadowAlpha = 1 + } + } + .store(in: &cell.disposeBag) + } +} diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift index 6c9e07542..5971cc740 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift @@ -14,18 +14,19 @@ final class MastodonRegisterViewModel { var disposeBag = Set() // input + let context: AppContext let domain: String let authenticateInfo: AuthenticationViewModel.AuthenticateInfo let instance: Mastodon.Entity.Instance let applicationToken: Mastodon.Entity.Token - let context: AppContext - - let username = CurrentValueSubject("") - let displayName = CurrentValueSubject("") - let email = CurrentValueSubject("") - let password = CurrentValueSubject("") - let reason = CurrentValueSubject("") - let avatarImage = CurrentValueSubject(nil) + let viewDidAppear = CurrentValueSubject(Void()) + + @Published var avatarImage: UIImage? = nil + @Published var name = "" + @Published var username = "" + @Published var email = "" + @Published var password = "" + @Published var reason = "" let usernameErrorPrompt = CurrentValueSubject(nil) let emailErrorPrompt = CurrentValueSubject(nil) @@ -33,21 +34,25 @@ final class MastodonRegisterViewModel { let reasonErrorPrompt = CurrentValueSubject(nil) // output + var diffableDataSource: UITableViewDiffableDataSource? let approvalRequired: Bool let applicationAuthorization: Mastodon.API.OAuth.Authorization - let usernameValidateState = CurrentValueSubject(.empty) - let displayNameValidateState = CurrentValueSubject(.empty) - let emailValidateState = CurrentValueSubject(.empty) - let passwordValidateState = CurrentValueSubject(.empty) - let reasonValidateState = CurrentValueSubject(.empty) + + @Published var usernameValidateState: ValidateState = .empty + @Published var displayNameValidateState: ValidateState = .empty + @Published var emailValidateState: ValidateState = .empty + @Published var passwordValidateState: ValidateState = .empty + @Published var reasonValidateState: ValidateState = .empty - let isRegistering = CurrentValueSubject(false) - let isAllValid = CurrentValueSubject(false) - let error = CurrentValueSubject(nil) + @Published var isRegistering = false + @Published var isAllValid = false + @Published var error: Error? = nil + + let avatarMediaMenuActionPublisher = PassthroughSubject() init( - domain: String, context: AppContext, + domain: String, authenticateInfo: AuthenticationViewModel.AuthenticateInfo, instance: Mastodon.Entity.Instance, applicationToken: Mastodon.Entity.Token @@ -60,7 +65,15 @@ final class MastodonRegisterViewModel { self.approvalRequired = instance.approvalRequired ?? false self.applicationAuthorization = Mastodon.API.OAuth.Authorization(accessToken: applicationToken.accessToken) - username + $name + .map { name in + guard !name.isEmpty else { return .empty } + return .valid + } + .assign(to: \.displayNameValidateState, on: self) + .store(in: &disposeBag) + + $username .map { username in guard !username.isEmpty else { return .empty } var isValid = true @@ -79,114 +92,120 @@ final class MastodonRegisterViewModel { } return isValid ? .valid : .invalid } - .assign(to: \.value, on: usernameValidateState) + .assign(to: \.usernameValidateState, on: self) .store(in: &disposeBag) - username - .filter { !$0.isEmpty } - .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) - .removeDuplicates() - .compactMap { [weak self] text -> AnyPublisher, Error>, Never>? in - guard let self = self else { return nil } - let query = Mastodon.API.Account.AccountLookupQuery(acct: text) - return context.apiService.accountLookup(domain: domain, query: query, authorization: self.applicationAuthorization) - .map { - response -> Result, Error> in - Result.success(response) - } - .catch { error in - Just(Result.failure(error)) - } - .eraseToAnyPublisher() - } - .switchToLatest() - .sink { [weak self] result in - guard let self = self else { return } - switch result { - case .success: - let text = L10n.Scene.Register.Error.Reason.taken(L10n.Scene.Register.Error.Item.username) - self.usernameErrorPrompt.value = MastodonRegisterViewModel.errorPromptAttributedString(for: text) - self.usernameValidateState.value = .invalid - case .failure: - break - } - } - .store(in: &disposeBag) - - usernameValidateState - .sink { [weak self] validateState in - if validateState == .valid { - self?.usernameErrorPrompt.value = nil - } - } - .store(in: &disposeBag) + // TODO: check username available +// username +// .filter { !$0.isEmpty } +// .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) +// .removeDuplicates() +// .compactMap { [weak self] text -> AnyPublisher, Error>, Never>? in +// guard let self = self else { return nil } +// let query = Mastodon.API.Account.AccountLookupQuery(acct: text) +// return context.apiService.accountLookup(domain: domain, query: query, authorization: self.applicationAuthorization) +// .map { +// response -> Result, Error> in +// Result.success(response) +// } +// .catch { error in +// Just(Result.failure(error)) +// } +// .eraseToAnyPublisher() +// } +// .switchToLatest() +// .sink { [weak self] result in +// guard let self = self else { return } +// switch result { +// case .success: +// let text = L10n.Scene.Register.Error.Reason.taken(L10n.Scene.Register.Error.Item.username) +// self.usernameErrorPrompt.value = MastodonRegisterViewModel.errorPromptAttributedString(for: text) +// self.usernameValidateState.value = .invalid +// case .failure: +// break +// } +// } +// .store(in: &disposeBag) +// +// usernameValidateState +// .sink { [weak self] validateState in +// if validateState == .valid { +// self?.usernameErrorPrompt.value = nil +// } +// } +// .store(in: &disposeBag) - displayName - .map { displayname in - guard !displayname.isEmpty else { return .empty } - return .valid - } - .assign(to: \.value, on: displayNameValidateState) - .store(in: &disposeBag) - email + $email .map { email in guard !email.isEmpty else { return .empty } return MastodonRegisterViewModel.isValidEmail(email) ? .valid : .invalid } - .assign(to: \.value, on: emailValidateState) + .assign(to: \.emailValidateState, on: self) .store(in: &disposeBag) - password + + $password .map { password in guard !password.isEmpty else { return .empty } return password.count >= 8 ? .valid : .invalid } - .assign(to: \.value, on: passwordValidateState) + .assign(to: \.passwordValidateState, on: self) .store(in: &disposeBag) + if approvalRequired { - reason + $reason .map { invite in guard !invite.isEmpty else { return .empty } return .valid } - .assign(to: \.value, on: reasonValidateState) + .assign(to: \.reasonValidateState, on: self) .store(in: &disposeBag) } - error - .sink { [weak self] error in - guard let self = self else { return } - let error = error as? Mastodon.API.Error - let mastodonError = error?.mastodonError - if case let .generic(genericMastodonError) = mastodonError, - let details = genericMastodonError.details - { - self.usernameErrorPrompt.value = details.usernameErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } - self.emailErrorPrompt.value = details.emailErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } - self.passwordErrorPrompt.value = details.passwordErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } - self.reasonErrorPrompt.value = details.reasonErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } - } else { - self.usernameErrorPrompt.value = nil - self.emailErrorPrompt.value = nil - self.passwordErrorPrompt.value = nil - self.reasonErrorPrompt.value = nil - } - } - .store(in: &disposeBag) - +// error +// .sink { [weak self] error in +// guard let self = self else { return } +// let error = error as? Mastodon.API.Error +// let mastodonError = error?.mastodonError +// if case let .generic(genericMastodonError) = mastodonError, +// let details = genericMastodonError.details +// { +// self.usernameErrorPrompt.value = details.usernameErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } +// self.emailErrorPrompt.value = details.emailErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } +// self.passwordErrorPrompt.value = details.passwordErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } +// self.reasonErrorPrompt.value = details.reasonErrorDescriptions.first.flatMap { MastodonRegisterViewModel.errorPromptAttributedString(for: $0) } +// } else { +// self.usernameErrorPrompt.value = nil +// self.emailErrorPrompt.value = nil +// self.passwordErrorPrompt.value = nil +// self.reasonErrorPrompt.value = nil +// } +// } +// .store(in: &disposeBag) +// let publisherOne = Publishers.CombineLatest4( - usernameValidateState.eraseToAnyPublisher(), - displayNameValidateState.eraseToAnyPublisher(), - emailValidateState.eraseToAnyPublisher(), - passwordValidateState.eraseToAnyPublisher() + $usernameValidateState, + $displayNameValidateState, + $emailValidateState, + $passwordValidateState ) - .map { $0.0 == .valid && $0.1 == .valid && $0.2 == .valid && $0.3 == .valid } + .map { + $0.0 == .valid && + $0.1 == .valid && + $0.2 == .valid && + $0.3 == .valid + } + + let publisherTwo = $reasonValidateState.map { reasonValidateState -> Bool in + guard self.approvalRequired else { return true } + return reasonValidateState == .valid + } Publishers.CombineLatest( publisherOne, - approvalRequired ? reasonValidateState.map { $0 == .valid }.eraseToAnyPublisher() : Just(true).eraseToAnyPublisher() + publisherTwo ) .map { $0 && $1 } - .assign(to: \.value, on: isAllValid) + .assign(to: \.isAllValid, on: self) .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Onboarding/ServerRules/ServerRulesTableViewCell.swift b/Mastodon/Scene/Onboarding/ServerRules/Cell/ServerRulesTableViewCell.swift similarity index 100% rename from Mastodon/Scene/Onboarding/ServerRules/ServerRulesTableViewCell.swift rename to Mastodon/Scene/Onboarding/ServerRules/Cell/ServerRulesTableViewCell.swift diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift index 6633f6c7c..f63692821 100644 --- a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift @@ -26,24 +26,6 @@ final class MastodonServerRulesViewController: UIViewController, NeedsDependency let stackView = UIStackView() - let largeTitleLabel: UILabel = { - let label = UILabel() - label.font = MastodonServerRulesViewController.largeTitleFont - label.textColor = MastodonServerRulesViewController.largeTitleTextColor - label.text = L10n.Scene.ServerRules.title - label.numberOfLines = 0 - return label - }() - - private(set) lazy var subtitleLabel: UILabel = { - let label = UILabel() - label.font = MastodonServerRulesViewController.subTitleFont - label.textColor = MastodonServerRulesViewController.subTitleTextColor - label.text = L10n.Scene.ServerRules.subtitle(viewModel.domain) - label.numberOfLines = 0 - return label - }() - let tableView: UITableView = { let tableView = UITableView() tableView.register(OnboardingHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: OnboardingHeadlineTableViewCell.self)) @@ -135,7 +117,13 @@ extension MastodonServerRulesViewController { @objc private func nextButtonPressed(_ sender: UIButton) { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") - let viewModel = MastodonRegisterViewModel(domain: viewModel.domain, context: context, authenticateInfo: viewModel.authenticateInfo, instance: viewModel.instance, applicationToken: viewModel.applicationToken) + let viewModel = MastodonRegisterViewModel( + context: context, + domain: viewModel.domain, + authenticateInfo: viewModel.authenticateInfo, + instance: viewModel.instance, + applicationToken: viewModel.applicationToken + ) coordinator.present(scene: .mastodonRegister(viewModel: viewModel), from: self, transition: .show) } diff --git a/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift b/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift index e8405b6ad..408831202 100644 --- a/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift +++ b/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift @@ -14,6 +14,7 @@ import MastodonMeta final class ProfileHeaderViewModel { + static let avatarImageMaxSizeInPixel = CGSize(width: 400, height: 400) static let maxProfileFieldCount = 4 var disposeBag = Set() @@ -190,8 +191,8 @@ extension ProfileHeaderViewModel { let image: UIImage? = { guard case let .image(_image) = editProfileInfo.avatarImageResource.value else { return nil } guard let image = _image else { return nil } - guard image.size.width <= MastodonRegisterViewController.avatarImageMaxSizeInPixel.width else { - return image.af.imageScaled(to: MastodonRegisterViewController.avatarImageMaxSizeInPixel) + guard image.size.width <= ProfileHeaderViewModel.avatarImageMaxSizeInPixel.width else { + return image.af.imageScaled(to: ProfileHeaderViewModel.avatarImageMaxSizeInPixel) } return image }() diff --git a/MastodonSDK/Sources/MastodonUI/Service/KeyboardResponderService.swift b/MastodonSDK/Sources/MastodonUI/Service/KeyboardResponderService.swift index 65328afa8..db600a67c 100644 --- a/MastodonSDK/Sources/MastodonUI/Service/KeyboardResponderService.swift +++ b/MastodonSDK/Sources/MastodonUI/Service/KeyboardResponderService.swift @@ -90,3 +90,47 @@ extension KeyboardResponderService { case dock } } + +extension KeyboardResponderService { + public static func configure( + scrollView: UIScrollView, + layoutNeedsUpdate: AnyPublisher, + additionalSafeAreaInsets: AnyPublisher = CurrentValueSubject(.zero).eraseToAnyPublisher() + ) -> AnyCancellable { + let tuple = Publishers.CombineLatest3( + KeyboardResponderService.shared.isShow, + KeyboardResponderService.shared.state, + KeyboardResponderService.shared.endFrame + ) + + return Publishers.CombineLatest3( + tuple, + layoutNeedsUpdate, + additionalSafeAreaInsets + ) + .sink(receiveValue: { [weak scrollView] tuple, _, additionalSafeAreaInsets in + guard let scrollView = scrollView else { return } + guard let view = scrollView.superview else { return } + + let (isShow, state, endFrame) = tuple + + guard isShow, state == .dock else { + scrollView.contentInset.bottom = additionalSafeAreaInsets.bottom + scrollView.verticalScrollIndicatorInsets.bottom = additionalSafeAreaInsets.bottom + return + } + + // isShow AND dock state + let contentFrame = view.convert(scrollView.frame, to: nil) + let padding = contentFrame.maxY - endFrame.minY + guard padding > 0 else { + scrollView.contentInset.bottom = additionalSafeAreaInsets.bottom + scrollView.verticalScrollIndicatorInsets.bottom = additionalSafeAreaInsets.bottom + return + } + + scrollView.contentInset.bottom = padding - scrollView.safeAreaInsets.bottom + additionalSafeAreaInsets.bottom + scrollView.verticalScrollIndicatorInsets.bottom = padding - scrollView.safeAreaInsets.bottom + additionalSafeAreaInsets.bottom + }) + } +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/ShadowBackgroundContainer.swift b/MastodonSDK/Sources/MastodonUI/View/Container/ShadowBackgroundContainer.swift index 6b45a050a..3f2f5df40 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Container/ShadowBackgroundContainer.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Container/ShadowBackgroundContainer.swift @@ -10,6 +10,18 @@ import MastodonExtension public final class ShadowBackgroundContainer: UIView { + public var shadowAlpha: CGFloat = 0.25 { + didSet { setNeedsLayout() } + } + + public var shadowColor: UIColor = .black { + didSet { setNeedsLayout() } + } + + public var cornerRadius: CGFloat = 10 { + didSet { setNeedsLayout() } + } + public let shadowLayer = CALayer() override init(frame: CGRect) { @@ -34,15 +46,15 @@ extension ShadowBackgroundContainer { shadowLayer.frame = bounds shadowLayer.setupShadow( - color: .black, - alpha: 0.25, + color: shadowColor, + alpha: Float(shadowAlpha), x: 0, y: 1, blur: 2, spread: 0, roundedRect: bounds, byRoundingCorners: .allCorners, - cornerRadii: CGSize(width: 10, height: 10) + cornerRadii: CGSize(width: cornerRadius, height: cornerRadius) ) } } From 548e4cc28f2653016436287f29ef6f7ca0fcac6c Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 7 Jan 2022 19:11:56 +0800 Subject: [PATCH 085/374] feat: update email confirm scene UI --- Localization/app.json | 2 +- .../MastodonConfirmEmailViewController.swift | 45 +++++++++---------- .../MastodonRegisterAvatarTableViewCell.swift | 37 +++++++++++++++ ...donRegisterPasswordHintTableViewCell.swift | 2 +- .../MastodonRegisterViewController.swift | 14 +++--- 5 files changed, 67 insertions(+), 33 deletions(-) diff --git a/Localization/app.json b/Localization/app.json index 5e74bc696..2edca1997 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -303,7 +303,7 @@ "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", diff --git a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift index 0718938f6..585dcb31f 100644 --- a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift +++ b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift @@ -46,21 +46,11 @@ final class MastodonConfirmEmailViewController: UIViewController, NeedsDependenc imageView.contentMode = .scaleAspectFit return imageView }() - - let openEmailButton: UIButton = { - let button = PrimaryActionButton() - button.setTitle(L10n.Scene.ConfirmEmail.Button.openEmailApp, for: .normal) - button.addTarget(self, action: #selector(openEmailButtonPressed(_:)), for: UIControl.Event.touchUpInside) - return button - }() - - let dontReceiveButton: UIButton = { - let button = UIButton(type: .system) - button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: UIFont.boldSystemFont(ofSize: 15)) - button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) - button.setTitle(L10n.Scene.ConfirmEmail.Button.dontReceiveEmail, for: .normal) - button.addTarget(self, action: #selector(dontReceiveButtonPressed(_:)), for: UIControl.Event.touchUpInside) - return button + + let navigationActionView: NavigationActionView = { + let navigationActionView = NavigationActionView() + navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + return navigationActionView }() deinit { @@ -73,6 +63,8 @@ extension MastodonConfirmEmailViewController { override func viewDidLoad() { + navigationItem.leftBarButtonItem = UIBarButtonItem() + setupOnboardingAppearance() configureTitleLabel() configureMargin() @@ -83,13 +75,12 @@ extension MastodonConfirmEmailViewController { stackView.spacing = 10 stackView.layoutMargins = UIEdgeInsets(top: 10, left: 0, bottom: 23, right: 0) stackView.isLayoutMarginsRelativeArrangement = true - stackView.addArrangedSubview(self.largeTitleLabel) - stackView.addArrangedSubview(self.subtitleLabel) - stackView.addArrangedSubview(self.emailImageView) + stackView.addArrangedSubview(largeTitleLabel) + stackView.addArrangedSubview(subtitleLabel) + stackView.addArrangedSubview(emailImageView) emailImageView.setContentHuggingPriority(.defaultLow, for: .vertical) emailImageView.setContentCompressionResistancePriority(.defaultLow, for: .vertical) - stackView.addArrangedSubview(self.openEmailButton) - stackView.addArrangedSubview(self.dontReceiveButton) + stackView.addArrangedSubview(navigationActionView) view.addSubview(stackView) stackView.translatesAutoresizingMaskIntoConstraints = false @@ -99,10 +90,7 @@ extension MastodonConfirmEmailViewController { stackView.trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.trailingAnchor), stackView.bottomAnchor.constraint(equalTo: view.readableContentGuide.bottomAnchor), ]) - NSLayoutConstraint.activate([ - self.openEmailButton.heightAnchor.constraint(equalToConstant: 46), - ]) - + self.viewModel.timestampUpdatePublisher .sink { [weak self] _ in guard let self = self else { return } @@ -140,6 +128,13 @@ extension MastodonConfirmEmailViewController { .store(in: &self.disposeBag) } .store(in: &self.disposeBag) + + + navigationActionView.backButton.setTitle("Resend", for: .normal) // TODO: i18n + navigationActionView.backButton.addTarget(self, action: #selector(MastodonConfirmEmailViewController.resendButtonPressed(_:)), for: .touchUpInside) + + navigationActionView.nextButton.setTitle(L10n.Scene.ConfirmEmail.Button.openEmailApp, for: .normal) + navigationActionView.nextButton.addTarget(self, action: #selector(MastodonConfirmEmailViewController.openEmailButtonPressed(_:)), for: .touchUpInside) } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { @@ -190,7 +185,7 @@ extension MastodonConfirmEmailViewController { self.coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) } - @objc private func dontReceiveButtonPressed(_ sender: UIButton) { + @objc private func resendButtonPressed(_ sender: UIButton) { let alertController = UIAlertController(title: L10n.Scene.ConfirmEmail.DontReceiveEmail.title, message: L10n.Scene.ConfirmEmail.DontReceiveEmail.description, preferredStyle: .alert) let resendAction = UIAlertAction(title: L10n.Scene.ConfirmEmail.DontReceiveEmail.resendEmail, style: .default) { _ in let url = Mastodon.API.resendEmailURL(domain: self.viewModel.authenticateInfo.domain) diff --git a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterAvatarTableViewCell.swift b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterAvatarTableViewCell.swift index 4d46533e9..304bd02dd 100644 --- a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterAvatarTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterAvatarTableViewCell.swift @@ -30,6 +30,34 @@ final class MastodonRegisterAvatarTableViewCell: UITableViewCell { return button }() + let editBannerView: UIView = { + let bannerView = UIView() + bannerView.backgroundColor = UIColor.black.withAlphaComponent(0.5) + bannerView.isUserInteractionEnabled = false + + let label: UILabel = { + let label = UILabel() + label.textColor = .white + label.text = L10n.Common.Controls.Actions.edit + label.font = .systemFont(ofSize: 13, weight: .semibold) + label.textAlignment = .center + label.minimumScaleFactor = 0.5 + label.adjustsFontSizeToFitWidth = true + return label + }() + + label.translatesAutoresizingMaskIntoConstraints = false + bannerView.addSubview(label) + NSLayoutConstraint.activate([ + label.topAnchor.constraint(equalTo: bannerView.topAnchor), + label.leadingAnchor.constraint(equalTo: bannerView.leadingAnchor), + label.trailingAnchor.constraint(equalTo: bannerView.trailingAnchor), + label.bottomAnchor.constraint(equalTo: bannerView.bottomAnchor), + ]) + + return bannerView + }() + override func prepareForReuse() { super.prepareForReuse() @@ -72,6 +100,15 @@ extension MastodonRegisterAvatarTableViewCell { avatarButton.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), avatarButton.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), ]) + + editBannerView.translatesAutoresizingMaskIntoConstraints = false + containerView.addSubview(editBannerView) + NSLayoutConstraint.activate([ + editBannerView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), + editBannerView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), + editBannerView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), + editBannerView.heightAnchor.constraint(equalToConstant: 22), + ]) } } diff --git a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift index 3aa9d027a..829c70a7c 100644 --- a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift @@ -13,7 +13,7 @@ final class MastodonRegisterPasswordHintTableViewCell: UITableViewCell { let label = UILabel() label.font = .preferredFont(forTextStyle: .footnote) label.textColor = Asset.Colors.Label.secondary.color - label.text = "Your password needs at least:" + label.text = L10n.Scene.Register.Input.Password.hint return label }() diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift index b278a3969..a1fd9742d 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift @@ -82,6 +82,8 @@ extension MastodonRegisterViewController { override func viewDidLoad() { super.viewDidLoad() + navigationItem.leftBarButtonItem = UIBarButtonItem() + setupOnboardingAppearance() defer { setupNavigationBarBackgroundView() @@ -128,12 +130,12 @@ extension MastodonRegisterViewController { viewModel.setupDiffableDataSource(tableView: tableView) - KeyboardResponderService - .configure( - scrollView: tableView, - layoutNeedsUpdate: viewModel.viewDidAppear.eraseToAnyPublisher() - ) - .store(in: &disposeBag) +// KeyboardResponderService +// .configure( +// scrollView: tableView, +// layoutNeedsUpdate: viewModel.viewDidAppear.eraseToAnyPublisher() +// ) +// .store(in: &disposeBag) // gesture view.addGestureRecognizer(tapGestureRecognizer) From 5431d7a98cdc4b11a0209690d86e40183bd390f8 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 7 Jan 2022 19:14:39 +0800 Subject: [PATCH 086/374] chore: update version to 1.3.0 (90) --- AppShared/Info.plist | 2 +- CoreDataStack/Info.plist | 2 +- CoreDataStackTests/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 32 +++++++++---------- .../xcschemes/xcschememanagement.plist | 8 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 11 files changed, 29 insertions(+), 29 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 9c87d9453..f652792e2 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 89 + 90 diff --git a/CoreDataStack/Info.plist b/CoreDataStack/Info.plist index 9c87d9453..f652792e2 100644 --- a/CoreDataStack/Info.plist +++ b/CoreDataStack/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 89 + 90 diff --git a/CoreDataStackTests/Info.plist b/CoreDataStackTests/Info.plist index 9c87d9453..f652792e2 100644 --- a/CoreDataStackTests/Info.plist +++ b/CoreDataStackTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 89 + 90 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 349f14eef..b79fb9010 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4931,7 +4931,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4960,7 +4960,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -5068,11 +5068,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 89; + DYLIB_CURRENT_VERSION = 90; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5099,11 +5099,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 89; + DYLIB_CURRENT_VERSION = 90; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5128,11 +5128,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 89; + DYLIB_CURRENT_VERSION = 90; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = CoreDataStack/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5158,11 +5158,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 89; + DYLIB_CURRENT_VERSION = 90; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = CoreDataStack/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5225,7 +5225,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5250,7 +5250,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5275,7 +5275,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5300,7 +5300,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5325,7 +5325,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5349,7 +5349,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 89; + CURRENT_PROJECT_VERSION = 90; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 95a6213db..56e26925b 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,12 +7,12 @@ AppShared.xcscheme_^#shared#^_ orderHint - 18 + 26 CoreDataStack.xcscheme_^#shared#^_ orderHint - 20 + 27 Mastodon - ASDK.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 19 + 25 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 21 + 24 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index e96be0cd2..8f0b7211c 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 89 + 90 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index e9a180d7e..78d3b58e3 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 89 + 90 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 9c87d9453..f652792e2 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 89 + 90 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 9c87d9453..f652792e2 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 89 + 90 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index fe988a2f5..77c7421d3 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 89 + 90 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index a6178ef85..ae9484886 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 89 + 90 NSExtension NSExtensionAttributes From 58adc4fe1a433ee3fecdcb52fcedff5867c76d4e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 7 Jan 2022 12:45:21 +0100 Subject: [PATCH 087/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 96 +++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 1c4db6bb8..a95f23794 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -395,100 +395,100 @@ "fields": { "add_row": "Gehitu errenkada", "placeholder": { - "label": "Label", - "content": "Content" + "label": "Etiketa", + "content": "Edukia" } }, "segmented_control": { - "posts": "Posts", - "replies": "Replies", - "media": "Media" + "posts": "Bidalketak", + "replies": "Erantzunak", + "media": "Multimedia" }, "relationship_action_alert": { "confirm_unmute_user": { - "title": "Unmute Account", - "message": "Confirm to unmute %s" + "title": "Desmututu kontua", + "message": "Berretsi %s desmututzea" }, "confirm_unblock_usre": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Desblokeatu kontua", + "message": "Berretsi %s desblokeatzea" } } }, "follower": { - "footer": "Followers from other servers are not displayed." + "footer": "Beste zerbitzarietako jarraitzaileak ez dira bistaratzen." }, "following": { - "footer": "Follows from other servers are not displayed." + "footer": "Beste zerbitzarietan jarraitutakoak ez dira bistaratzen." }, "search": { - "title": "Search", + "title": "Bilatu", "search_bar": { - "placeholder": "Search hashtags and users", - "cancel": "Cancel" + "placeholder": "Bilatu traolak eta erabiltzaileak", + "cancel": "Utzi" }, "recommend": { - "button_text": "See All", + "button_text": "Ikusi guztiak", "hash_tag": { - "title": "Trending on Mastodon", - "description": "Hashtags that are getting quite a bit of attention", - "people_talking": "%s people are talking" + "title": "Mastodoneko joerak", + "description": "Deigarri gertatzen ari diren traolak", + "people_talking": "%s pertsona hizketan" }, "accounts": { - "title": "Accounts you might like", - "description": "You may like to follow these accounts", - "follow": "Follow" + "title": "Gustuko izan ditzakezun kontuak", + "description": "Kontu hauek jarraitu nahiko dituzu behar bada", + "follow": "Jarraitu" } }, "searching": { "segment": { - "all": "All", - "people": "People", - "hashtags": "Hashtags", - "posts": "Posts" + "all": "Guztiak", + "people": "Jendea", + "hashtags": "Traolak", + "posts": "Bidalketak" }, "empty_state": { - "no_results": "No results" + "no_results": "Emaitzarik ez" }, - "recent_search": "Recent searches", - "clear": "Clear" + "recent_search": "Azken bilaketak", + "clear": "Garbitu" } }, "favorite": { - "title": "Your Favorites" + "title": "Zure gogokoak" }, "notification": { "title": { - "Everything": "Everything", - "Mentions": "Mentions" + "Everything": "Dena", + "Mentions": "Aipamenak" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "user_followed_you": "%s(e)k jarraitu zaitu", + "user_favorited your post": "%s(e)k zure bidalk. gogoko du", + "user_reblogged_your_post": "%s(e)k zure bidalk. bultza du", + "user_mentioned_you": "%s(e)k aipatu zaitu", + "user_requested_to_follow_you": "%s(e)k jarraitu nahi zaitu", + "user_your_poll_has_ended": "%s Zure inkesta amaitu da", "keyobard": { - "show_everything": "Show Everything", - "show_mentions": "Show Mentions" + "show_everything": "Erakutsi guztia", + "show_mentions": "Erakutsi aipamenak" } }, "thread": { - "back_title": "Post", - "title": "Post from %s" + "back_title": "Bidalketa", + "title": "%s(e)n bidalketa" }, "settings": { - "title": "Settings", + "title": "Ezarpenak", "section": { "appearance": { - "title": "Appearance", - "automatic": "Automatic", - "light": "Always Light", - "dark": "Always Dark" + "title": "Itxura", + "automatic": "Automatikoa", + "light": "Beti argia", + "dark": "Beti iluna" }, "notifications": { - "title": "Notifications", - "favorites": "Favorites my post", + "title": "Jakinarazpenak", + "favorites": "Nire bidalketa gogoko egitean", "follows": "Jarraitzen nau", "boosts": "Nire bidalketa bultzatu du", "mentions": "Aipatu nau", From 0d96fd9f9e34ee1cde6d320eaea47ab125c64379 Mon Sep 17 00:00:00 2001 From: CMK Date: Mon, 10 Jan 2022 11:20:44 +0800 Subject: [PATCH 088/374] chore: add password hint i18n words and a11y hint --- Localization/app.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Localization/app.json b/Localization/app.json index 2edca1997..0071f6f95 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -253,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { From da7c1eab5fbba3d5f52c904e465f8f0588650122 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:25 +0100 Subject: [PATCH 089/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 0a5afe66a..cfc44c123 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Sosiaalinen verkostoituminen\ntakaisin käsissäsi." + "slogan": "Sosiaalinen verkostoituminen\ntakaisin käsissäsi.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Valitse palvelin,\nmikä tahansa palvelin.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Kaikki", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "salasana", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Salasanassasi on oltava vähintään kahdeksan merkkiä" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Lähetimme juuri sähköpostin osoitteeseen %s, napauta siinä olevaa linkkiä vahvistaaksesi tilisi.", "button": { "open_email_app": "Avaa sähköpostisovellus", - "dont_receive_email": "En saanut sähköpostia" + "resend": "Resend" }, "dont_receive_email": { "title": "Tarkista sähköpostisi", @@ -554,4 +564,4 @@ "accessibility_hint": "Hylkää tämä ohjattu toiminto kaksoisnapauttamalla" } } -} \ No newline at end of file +} From 44e3e86909e0b4a331e7dc5c40af28e28c7921c8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:26 +0100 Subject: [PATCH 090/374] New translations app.json (Swedish) --- .../StringsConvertor/input/sv_SE/app.json | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_SE/app.json b/Localization/StringsConvertor/input/sv_SE/app.json index 0d52c9f0d..1b47fc754 100644 --- a/Localization/StringsConvertor/input/sv_SE/app.json +++ b/Localization/StringsConvertor/input/sv_SE/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -223,7 +227,7 @@ "category": "KATEGORI" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Radera" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "integritetspolicy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From fc18e89bca628a559f24bff6a3b3389f285ebe6a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:27 +0100 Subject: [PATCH 091/374] New translations app.json (Scottish Gaelic) --- .../StringsConvertor/input/gd_GB/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json index dd7f7551c..f5e645061 100644 --- a/Localization/StringsConvertor/input/gd_GB/app.json +++ b/Localization/StringsConvertor/input/gd_GB/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "A’ cur nan lìonraidhean sòisealta\n’nad làmhan fhèin." + "slogan": "A’ cur nan lìonraidhean sòisealta\n’nad làmhan fhèin.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Tagh frithealaiche sam bith.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Na h-uile", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "facal-faire", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Feumaidh ochd caractaran a bhith san fhacal-fhaire agad air a char as giorra" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Tha sinn air post-d a chur gu %s,\nthoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad.", "button": { "open_email_app": "Fosgail aplacaid a’ phuist-d", - "dont_receive_email": "Cha d’ fhuair mi post-d a-riamh" + "resend": "Resend" }, "dont_receive_email": { "title": "Thoir sùil air a’ phost-d agad", @@ -554,4 +564,4 @@ "accessibility_hint": "Thoir gnogag dhùbailte a’ leigeil seachad an draoidh seo" } } -} \ No newline at end of file +} From 987b5e3256165427f51952e4c6e2b1926b1da6bf Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:28 +0100 Subject: [PATCH 092/374] New translations app.json (Welsh) --- .../StringsConvertor/input/cy_GB/app.json | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/cy_GB/app.json b/Localization/StringsConvertor/input/cy_GB/app.json index 6d3b2fcc2..0071f6f95 100644 --- a/Localization/StringsConvertor/input/cy_GB/app.json +++ b/Localization/StringsConvertor/input/cy_GB/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -223,7 +227,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Delete" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From 54995eb5fb00c9cc72a10f3d9c2a957668e17a71 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:29 +0100 Subject: [PATCH 093/374] New translations app.json (Hindi) --- .../StringsConvertor/input/hi_IN/app.json | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/hi_IN/app.json b/Localization/StringsConvertor/input/hi_IN/app.json index 6d3b2fcc2..0071f6f95 100644 --- a/Localization/StringsConvertor/input/hi_IN/app.json +++ b/Localization/StringsConvertor/input/hi_IN/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -223,7 +227,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Delete" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From 453a03248497a40554ad5eec3a04275aebdc2077 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:30 +0100 Subject: [PATCH 094/374] New translations app.json (Thai) --- .../StringsConvertor/input/th_TH/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index e2c3d2e3b..995f4ef34 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "ให้เครือข่ายสังคม\nกลับมาอยู่ในมือของคุณ" + "slogan": "ให้เครือข่ายสังคม\nกลับมาอยู่ในมือของคุณ", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "เลือกเซิร์ฟเวอร์\nอันไหนก็ได้", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "ทั้งหมด", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "รหัสผ่าน", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "รหัสผ่านของคุณต้องมีอย่างน้อยแปดตัวอักษร" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "เราเพิ่งส่งอีเมลไปยัง %s\nแตะที่ลิงก์เพื่อยืนยันบัญชีของคุณ", "button": { "open_email_app": "เปิดแอปอีเมล", - "dont_receive_email": "ฉันไม่เคยได้รับอีเมล" + "resend": "Resend" }, "dont_receive_email": { "title": "ตรวจสอบอีเมลของคุณ", @@ -554,4 +564,4 @@ "accessibility_hint": "แตะสองครั้งเพื่อปิดตัวช่วยสร้างนี้" } } -} \ No newline at end of file +} From cf5f48e8c41356740bf7a8e770950881a8211c0a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:31 +0100 Subject: [PATCH 095/374] New translations app.json (Spanish, Argentina) --- .../StringsConvertor/input/es_AR/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json index 021deb95e..ee36e7b32 100644 --- a/Localization/StringsConvertor/input/es_AR/app.json +++ b/Localization/StringsConvertor/input/es_AR/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "La red social,\nnuevamente en tu poder." + "slogan": "La red social,\nnuevamente en tu poder.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Elegí un servidor,\nel que quieras.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Todas", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "contraseña", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Tu contraseña necesita al menos ocho caracteres" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Acabamos de enviar un correo electrónico a %s,\npulsá en el enlace para confirmar tu cuenta.", "button": { "open_email_app": "Abrir aplicación de correo electrónico", - "dont_receive_email": "Nunca recibí un correo electrónico" + "resend": "Resend" }, "dont_receive_email": { "title": "Revisá tu correo electrónico", @@ -554,4 +564,4 @@ "accessibility_hint": "Tocá dos veces para descartar este asistente" } } -} \ No newline at end of file +} From 96c1efbad9efba8a8293e513fad2a16e7c290c10 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:31 +0100 Subject: [PATCH 096/374] New translations app.json (Indonesian) --- .../StringsConvertor/input/id_ID/app.json | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Localization/StringsConvertor/input/id_ID/app.json b/Localization/StringsConvertor/input/id_ID/app.json index 4fe23f0a5..1b26f43f3 100644 --- a/Localization/StringsConvertor/input/id_ID/app.json +++ b/Localization/StringsConvertor/input/id_ID/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Pilih sebuah server,\nserver manapun.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Semua", @@ -223,7 +227,7 @@ "category": "KATEGORI" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Mencari server yang tersedia...", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "kata sandi", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Kata sandi Anda harus memiliki sekurang-kurangnya delapan karakter" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Kami baru saja mengirim sebuah surel ke %s,\nketuk tautannya untuk mengkonfirmasi akun Anda.", "button": { "open_email_app": "Buka Aplikasi Surel", - "dont_receive_email": "Saya tidak mendapatkan surel" + "resend": "Resend" }, "dont_receive_email": { "title": "Periksa surel Anda", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From 997009718def56417de2de08b7b3b5cc1884a475 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:32 +0100 Subject: [PATCH 097/374] New translations app.json (Portuguese, Brazilian) --- .../StringsConvertor/input/pt_BR/app.json | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/pt_BR/app.json b/Localization/StringsConvertor/input/pt_BR/app.json index 6d3b2fcc2..0071f6f95 100644 --- a/Localization/StringsConvertor/input/pt_BR/app.json +++ b/Localization/StringsConvertor/input/pt_BR/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -223,7 +227,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Delete" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From ff3ac07e0d615b4dad2272b471ec85952a0c3836 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:33 +0100 Subject: [PATCH 098/374] New translations app.json (English) --- .../StringsConvertor/input/en_US/app.json | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/en_US/app.json b/Localization/StringsConvertor/input/en_US/app.json index 6d3b2fcc2..0071f6f95 100644 --- a/Localization/StringsConvertor/input/en_US/app.json +++ b/Localization/StringsConvertor/input/en_US/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -223,7 +227,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Delete" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From e2becf57b6145c7711620d48b799f7429fb0f4fc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:34 +0100 Subject: [PATCH 099/374] New translations app.json (Chinese Traditional) --- .../StringsConvertor/input/zh_TW/app.json | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/zh_TW/app.json b/Localization/StringsConvertor/input/zh_TW/app.json index 6d3b2fcc2..0071f6f95 100644 --- a/Localization/StringsConvertor/input/zh_TW/app.json +++ b/Localization/StringsConvertor/input/zh_TW/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -223,7 +227,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Delete" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From a02644a58b8d544201d298714997ba1b811b755b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:36 +0100 Subject: [PATCH 100/374] New translations app.json (Chinese Simplified) --- .../StringsConvertor/input/zh_CN/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json index d013f5e0d..c39313fb6 100644 --- a/Localization/StringsConvertor/input/zh_CN/app.json +++ b/Localization/StringsConvertor/input/zh_CN/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "社交网络\n回到你的手中。" + "slogan": "社交网络\n回到你的手中。", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "挑选一个服务器,\n任意服务器。", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "全部", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "密码", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "密码长度至少为 8 个字符" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "我们刚刚向 %s 发送了一封电子邮件,\n点击链接确认你的帐户。", "button": { "open_email_app": "打开电子邮件应用", - "dont_receive_email": "我还没有收到电子邮件" + "resend": "Resend" }, "dont_receive_email": { "title": "请检查你的邮箱。", @@ -554,4 +564,4 @@ "accessibility_hint": "双击关闭此向导" } } -} \ No newline at end of file +} From f26bb9e8d042388d8373705178014e48b31bc282 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:37 +0100 Subject: [PATCH 101/374] New translations app.json (Russian) --- .../StringsConvertor/input/ru_RU/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json index 58adf38fc..117244a61 100644 --- a/Localization/StringsConvertor/input/ru_RU/app.json +++ b/Localization/StringsConvertor/input/ru_RU/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Социальная сеть\nпод вашим контролем." + "slogan": "Социальная сеть\nпод вашим контролем.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Выберите сервер,\nлюбой сервер.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Все", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "пароль", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Пароль должен содержать не менее восьми символов" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Мы только что отправили письмо на\n%s.\nНажмите на ссылку в нём, чтобы\nподтвердить свою учётную запись.", "button": { "open_email_app": "Открыть приложение почты", - "dont_receive_email": "Я не получил письма" + "resend": "Resend" }, "dont_receive_email": { "title": "Проверьте свой e-mail адрес", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From 880ac8409cd4ab69aa68f8bcf31a85eb40d1ebed Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:37 +0100 Subject: [PATCH 102/374] New translations app.json (Romanian) --- .../StringsConvertor/input/ro_RO/app.json | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/ro_RO/app.json b/Localization/StringsConvertor/input/ro_RO/app.json index ae27e6e6a..35df15656 100644 --- a/Localization/StringsConvertor/input/ro_RO/app.json +++ b/Localization/StringsConvertor/input/ro_RO/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -223,7 +227,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Delete" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From 3bc507f2f1866fca51c99d8526c98193a5a5a5b6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:38 +0100 Subject: [PATCH 103/374] New translations app.json (Portuguese) --- .../StringsConvertor/input/pt_PT/app.json | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/pt_PT/app.json b/Localization/StringsConvertor/input/pt_PT/app.json index 6d3b2fcc2..0071f6f95 100644 --- a/Localization/StringsConvertor/input/pt_PT/app.json +++ b/Localization/StringsConvertor/input/pt_PT/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -223,7 +227,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Delete" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From 86a302855c9541e83790c308049f2e13171543f5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:39 +0100 Subject: [PATCH 104/374] New translations app.json (Dutch) --- .../StringsConvertor/input/nl_NL/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/nl_NL/app.json b/Localization/StringsConvertor/input/nl_NL/app.json index 9f928cbbb..5acc8f131 100644 --- a/Localization/StringsConvertor/input/nl_NL/app.json +++ b/Localization/StringsConvertor/input/nl_NL/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Sociale media terug in uw handen." + "slogan": "Sociale media terug in uw handen.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Kies een server, welke dan ook.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Alles", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "wachtwoord", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Uw wachtwoord moet ten minste acht tekens bevatten" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "We hebben een e-mail gestuurd naar %s,\nklik op de link om uw account te bevestigen.", "button": { "open_email_app": "Email Openen", - "dont_receive_email": "Ik heb geen email ontvangen" + "resend": "Resend" }, "dont_receive_email": { "title": "Controleer uw emailadres", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From 992cec98d08da6cde616a8d6584cc8dc24a24827 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:40 +0100 Subject: [PATCH 105/374] New translations app.json (Korean) --- .../StringsConvertor/input/ko_KR/app.json | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/Localization/StringsConvertor/input/ko_KR/app.json b/Localization/StringsConvertor/input/ko_KR/app.json index 638ea3879..289a214d1 100644 --- a/Localization/StringsConvertor/input/ko_KR/app.json +++ b/Localization/StringsConvertor/input/ko_KR/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "소셜 네트워킹을\n여러분의 손에 돌려드립니다." + "slogan": "소셜 네트워킹을\n여러분의 손에 돌려드립니다.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "서버를 고르세요,\n아무 서버나 좋습니다.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "모두", @@ -223,7 +227,7 @@ "category": "분류" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "삭제" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "암호", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "암호는 최소 8글자 이상이어야 합니다" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "마지막으로.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From cd7885dda41719418ec6bc043ab02ebdeeeda12e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:41 +0100 Subject: [PATCH 106/374] New translations app.json (Japanese) --- .../StringsConvertor/input/ja_JP/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index af9f785b9..c9d3262f7 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "ソーシャルネットワーキングを、あなたの手の中に." + "slogan": "ソーシャルネットワーキングを、あなたの手の中に.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "サーバーを選択", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "すべて", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "パスワード", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "パスワードは最低でも8文字必要です。" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "先程 %s にメールを送信しました。リンクをタップしてアカウントを確認してください。", "button": { "open_email_app": "メールアプリを開く", - "dont_receive_email": "メールがこない" + "resend": "Resend" }, "dont_receive_email": { "title": "メールをチェックしてください", @@ -554,4 +564,4 @@ "accessibility_hint": "チュートリアルを閉じるには、ダブルタップしてください" } } -} \ No newline at end of file +} From e329bd6b3675db75ec67c2d646e83baf3fa07e5f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:42 +0100 Subject: [PATCH 107/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index a95f23794..6758ca960 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Sare sozialak\nberriz zure eskuetan." + "slogan": "Sare sozialak\nberriz zure eskuetan.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Aukeratu zerbitzari bat,\nedozein zerbitzari.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Guztiak", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "pasahitza", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Pasahitzak zortzi karaktere izan behar ditu gutxienez" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Eposta bat bidali dizugu %s helbidera,\nsakatu kontua berresteko esteka.", "button": { "open_email_app": "Ireki eposta aplikazioa", - "dont_receive_email": "Ez dut epostarik jaso" + "resend": "Resend" }, "dont_receive_email": { "title": "Begiratu zure eposta", @@ -554,4 +564,4 @@ "accessibility_hint": "Ukitu birritan morroi hau baztertzeko" } } -} \ No newline at end of file +} From 1136e3ab0fcc6fceaedb3c709152cfd3c015e991 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:43 +0100 Subject: [PATCH 108/374] New translations app.json (German) --- .../StringsConvertor/input/de_DE/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json index 2cb04e8d9..61b069904 100644 --- a/Localization/StringsConvertor/input/de_DE/app.json +++ b/Localization/StringsConvertor/input/de_DE/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Soziale Netzwerke wieder in deinen Händen." + "slogan": "Soziale Netzwerke wieder in deinen Händen.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Wähle einen Server,\nbeliebigen Server.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Alle", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "Passwort", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Ihr Passwort muss mindestens 8 Zeichen lang sein" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Wir haben gerade eine E-Mail an %s gesendet,\ntippe darin auf den Link, um Dein Konto zu bestätigen.", "button": { "open_email_app": "E-Mail-App öffnen", - "dont_receive_email": "Ich habe keine E-Mail erhalten." + "resend": "Resend" }, "dont_receive_email": { "title": "Bitte überprüfe deine E-Mails", @@ -554,4 +564,4 @@ "accessibility_hint": "Doppeltippen, um diesen Assistenten zu schließen" } } -} \ No newline at end of file +} From 7f9a59002b9d4a30ed4a9f722cce8d313988629d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:44 +0100 Subject: [PATCH 109/374] New translations app.json (Danish) --- .../StringsConvertor/input/da_DK/app.json | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/da_DK/app.json b/Localization/StringsConvertor/input/da_DK/app.json index 6d3b2fcc2..0071f6f95 100644 --- a/Localization/StringsConvertor/input/da_DK/app.json +++ b/Localization/StringsConvertor/input/da_DK/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands." + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { - "title": "Pick a server,\nany server.", + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "All", @@ -223,7 +227,7 @@ "category": "CATEGORY" }, "input": { - "placeholder": "Find a server or join your own..." + "placeholder": "Search communities" }, "empty_state": { "finding_servers": "Finding available servers...", @@ -232,7 +236,7 @@ } }, "register": { - "title": "Tell us about you.", + "title": "Let’s get you set up on %s", "input": { "avatar": { "delete": "Delete" @@ -249,6 +253,12 @@ }, "password": { "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Your password needs at least eight characters" }, "invite": { @@ -286,7 +296,7 @@ }, "server_rules": { "title": "Some ground rules.", - "subtitle": "These rules are set by the admins of %s.", + "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "terms of service", "privacy_policy": "privacy policy", @@ -296,10 +306,10 @@ }, "confirm_email": { "title": "One last thing.", - "subtitle": "We just sent an email to %s,\ntap the link to confirm your account.", + "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "dont_receive_email": "I never got an email" + "resend": "Resend" }, "dont_receive_email": { "title": "Check your email", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From 332217dfb623ae21a291ef867496ac56a710d8bc Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:45 +0100 Subject: [PATCH 110/374] New translations app.json (Catalan) --- .../StringsConvertor/input/ca_ES/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json index bcc207569..d02ddc0eb 100644 --- a/Localization/StringsConvertor/input/ca_ES/app.json +++ b/Localization/StringsConvertor/input/ca_ES/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Xarxa social\nde nou a les teves mans." + "slogan": "Xarxa social\nde nou a les teves mans.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Tria un servidor,\nqualsevol servidor.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Totes", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "contrasenya", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "La teva contrasenya ha de tenir com a mínim buit caràcters" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Acabem d'enviar un correu electrònic a %s,\ntoca l'enllaç per a confirmar el teu compte.", "button": { "open_email_app": "Obre l'aplicació de correu", - "dont_receive_email": "No he rebut cap correu electrònic" + "resend": "Resend" }, "dont_receive_email": { "title": "Comprova el teu correu", @@ -554,4 +564,4 @@ "accessibility_hint": "Toca dues vegades per descartar l'assistent" } } -} \ No newline at end of file +} From b5d69d22fc9b74f96abe59943d131c2d77fb2aee Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:46 +0100 Subject: [PATCH 111/374] New translations app.json (Arabic) --- .../StringsConvertor/input/ar_SA/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index 24ce19546..b28a6a103 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "شبكات التواصل الاجتماعي\nمرة أُخرى بين يديك." + "slogan": "شبكات التواصل الاجتماعي\nمرة أُخرى بين يديك.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "اِختر خادِم،\nأيًّا مِنهُم.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "الكل", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "رمز سري", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "يجب أن يكون رمزك السري مكوَّن من ثمان خانات على الأقل" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "لقد أرسلنا للتو بريد إلكتروني إلى %s،\nانقر على الرابط لتأكيد حسابك.", "button": { "open_email_app": "فتح تطبيق البريد الإلكتروني", - "dont_receive_email": "لم أستلم بريدًا إلكترونيًا أبدًا" + "resend": "Resend" }, "dont_receive_email": { "title": "تحقق من بريدك الإلكتروني", @@ -554,4 +564,4 @@ "accessibility_hint": "انقر نقرًا مزدوجًا لتجاهُل النافذة المنبثقة" } } -} \ No newline at end of file +} From 5595d6c05dd80633770aa4d9e44f21e232fb1e96 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:47 +0100 Subject: [PATCH 112/374] New translations app.json (Spanish) --- .../StringsConvertor/input/es_ES/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index 289c3065b..7d798683c 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Las redes sociales\nde nuevo en tus manos." + "slogan": "Las redes sociales\nde nuevo en tus manos.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Elige un servidor,\ncualquier servidor.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Todas", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "contraseña", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Tu contraseña necesita tener al menos ocho caracteres" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Te acabamos de enviar un correo a %s,\npulsa en el enlace para confirmar tu cuenta.", "button": { "open_email_app": "Abrir Aplicación de Correo Electrónico", - "dont_receive_email": "No he recibido el correo electrónico" + "resend": "Resend" }, "dont_receive_email": { "title": "Revisa tu correo electrónico", @@ -554,4 +564,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} \ No newline at end of file +} From 51eb15f80635faab95954f84dda240d35a141c14 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:47 +0100 Subject: [PATCH 113/374] New translations app.json (French) --- .../StringsConvertor/input/fr_FR/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index 9a1671fab..59e395246 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Le réseau social qui vous rend le contrôle." + "slogan": "Le réseau social qui vous rend le contrôle.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Choisissez un serveur,\nn'importe quel serveur.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Tout", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "mot de passe", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Votre mot de passe doit contenir au moins 8 caractères" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Nous venons d’envoyer un courriel à %s,\ntapotez le lien pour confirmer votre compte.", "button": { "open_email_app": "Ouvrir l’application de courriel", - "dont_receive_email": "Je n’ai jamais reçu de courriel" + "resend": "Resend" }, "dont_receive_email": { "title": "Vérifier vos courriels", @@ -554,4 +564,4 @@ "accessibility_hint": "Tapotez deux fois pour fermer cet assistant" } } -} \ No newline at end of file +} From 39528585168c67ce2fbe4108bdd3ba159e3e2955 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 04:36:48 +0100 Subject: [PATCH 114/374] New translations app.json (Kurmanji (Kurdish)) --- .../StringsConvertor/input/kmr_TR/app.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index ee0869651..c7755fdd6 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -193,10 +193,14 @@ }, "scene": { "welcome": { - "slogan": "Torên civakî\ndi destên te de." + "slogan": "Torên civakî\ndi destên te de.", + "get_started": "Get Started", + "log_in": "Log In" }, "server_picker": { "title": "Rajekarekê hilbijêre,\nHer kîjan rajekar be.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { "all": "Hemû", @@ -249,6 +253,12 @@ }, "password": { "placeholder": "pêborîn", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, "hint": "Pêborîna te herî kêm divê ji 8 tîpan pêk bê" }, "invite": { @@ -299,7 +309,7 @@ "subtitle": "Me tenê e-nameyek ji %s re şand,\ngirêdanê bitikne da ku ajimêra xwe bidî piştrastkirin.", "button": { "open_email_app": "Sepana e-nameyê veke", - "dont_receive_email": "Min hîç e-nameyeke nesitand" + "resend": "Resend" }, "dont_receive_email": { "title": "E-nameyê xwe kontrol bike", @@ -554,4 +564,4 @@ "accessibility_hint": "Du caran bitikîne da ku çarçoveyahilpekok ji holê rakî" } } -} \ No newline at end of file +} From 828e9b5aae5de18af4665057e3ae3761ef3c461d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 06:14:23 +0100 Subject: [PATCH 115/374] New translations app.json (Catalan) --- Localization/StringsConvertor/input/ca_ES/app.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json index d02ddc0eb..22e190139 100644 --- a/Localization/StringsConvertor/input/ca_ES/app.json +++ b/Localization/StringsConvertor/input/ca_ES/app.json @@ -194,12 +194,12 @@ "scene": { "welcome": { "slogan": "Xarxa social\nde nou a les teves mans.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Comença", + "log_in": "Inicia sessió" }, "server_picker": { "title": "Tria un servidor,\nqualsevol servidor.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle": "Tria una comunitat segons els teus interessos, regió o una d'interés general.", "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { From 994dccf4768fec50c19a99fee03e647ec130919d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 07:12:49 +0100 Subject: [PATCH 116/374] New translations app.json (Catalan) --- Localization/StringsConvertor/input/ca_ES/app.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json index 22e190139..3455205be 100644 --- a/Localization/StringsConvertor/input/ca_ES/app.json +++ b/Localization/StringsConvertor/input/ca_ES/app.json @@ -199,8 +199,8 @@ }, "server_picker": { "title": "Tria un servidor,\nqualsevol servidor.", - "subtitle": "Tria una comunitat segons els teus interessos, regió o una d'interés general.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Tria una comunitat segons els teus interessos, regió o una de propòsit general.", + "subtitle_extend": "Tria una comunitat segons els teus interessos, regió o una de propòsit general. Cada comunitat és operada per una organització totalment independent o individualment.", "button": { "category": { "all": "Totes", @@ -253,11 +253,11 @@ }, "password": { "placeholder": "contrasenya", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "La teva contrasenya com a mínim necessita:", + "character_limit": "8 caràcters", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "verificat", + "unchecked": "no verificat" }, "hint": "La teva contrasenya ha de tenir com a mínim buit caràcters" }, @@ -309,7 +309,7 @@ "subtitle": "Acabem d'enviar un correu electrònic a %s,\ntoca l'enllaç per a confirmar el teu compte.", "button": { "open_email_app": "Obre l'aplicació de correu", - "resend": "Resend" + "resend": "Reenvia" }, "dont_receive_email": { "title": "Comprova el teu correu", From f46853cba10fbd23d430e933947d414763128be3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 07:12:50 +0100 Subject: [PATCH 117/374] New translations app.json (Chinese Simplified) --- .../StringsConvertor/input/zh_CN/app.json | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json index c39313fb6..ee1bb819c 100644 --- a/Localization/StringsConvertor/input/zh_CN/app.json +++ b/Localization/StringsConvertor/input/zh_CN/app.json @@ -82,7 +82,7 @@ "share_user": "分享 %s", "share_post": "分享帖子", "open_in_safari": "在 Safari 中打开", - "open_in_browser": "Open in Browser", + "open_in_browser": "在浏览器中打开", "find_people": "查看推荐关注的用户", "manually_search": "手动搜索用户", "skip": "跳过", @@ -194,13 +194,13 @@ "scene": { "welcome": { "slogan": "社交网络\n回到你的手中。", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "开始使用", + "log_in": "登录" }, "server_picker": { "title": "挑选一个服务器,\n任意服务器。", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "根据你的兴趣、区域或一般目的选择一个社区。", + "subtitle_extend": "根据你的兴趣、区域或一般目的选择一个社区。每个社区都由完全独立的组织或个人管理。", "button": { "category": { "all": "全部", @@ -253,11 +253,11 @@ }, "password": { "placeholder": "密码", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "您的密码至少需要:", + "character_limit": "8 个字符", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "已选中", + "unchecked": "未选中" }, "hint": "密码长度至少为 8 个字符" }, @@ -309,7 +309,7 @@ "subtitle": "我们刚刚向 %s 发送了一封电子邮件,\n点击链接确认你的帐户。", "button": { "open_email_app": "打开电子邮件应用", - "resend": "Resend" + "resend": "重新发送" }, "dont_receive_email": { "title": "请检查你的邮箱。", From df8866dd368f673260c51b89c68ecda44d432180 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 09:33:52 +0100 Subject: [PATCH 118/374] New translations app.json (Spanish) --- .../StringsConvertor/input/es_ES/app.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index 7d798683c..5bff817ca 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -194,13 +194,13 @@ "scene": { "welcome": { "slogan": "Las redes sociales\nde nuevo en tus manos.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Empezar", + "log_in": "Iniciar sesión" }, "server_picker": { "title": "Elige un servidor,\ncualquier servidor.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Elige una comunidad relacionada con tus intereses, con tu región o una más genérica.", + "subtitle_extend": "Elige una comunidad relacionada con tus intereses, con tu región o una más genérica. Cada comunidad está operada por una organización o individuo completamente independiente.", "button": { "category": { "all": "Todas", @@ -253,11 +253,11 @@ }, "password": { "placeholder": "contraseña", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "Tu contraseña debe contener como mínimo:", + "character_limit": "8 caracteres", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "marcado", + "unchecked": "sin marcar" }, "hint": "Tu contraseña necesita tener al menos ocho caracteres" }, @@ -309,7 +309,7 @@ "subtitle": "Te acabamos de enviar un correo a %s,\npulsa en el enlace para confirmar tu cuenta.", "button": { "open_email_app": "Abrir Aplicación de Correo Electrónico", - "resend": "Resend" + "resend": "Reenviar" }, "dont_receive_email": { "title": "Revisa tu correo electrónico", From 19ecd721f6b98d27e922ef004d7640ebe94e41aa Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 13:26:57 +0100 Subject: [PATCH 119/374] New translations app.json (Kurmanji (Kurdish)) --- Localization/StringsConvertor/input/kmr_TR/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index c7755fdd6..45188083b 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -195,7 +195,7 @@ "welcome": { "slogan": "Torên civakî\ndi destên te de.", "get_started": "Get Started", - "log_in": "Log In" + "log_in": "Têkeve" }, "server_picker": { "title": "Rajekarekê hilbijêre,\nHer kîjan rajekar be.", From 35e617776e580d6127b634d9b89d92f5b4c45622 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 14:26:36 +0100 Subject: [PATCH 120/374] New translations app.json (Kurmanji (Kurdish)) --- .../StringsConvertor/input/kmr_TR/app.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index 45188083b..5931c751e 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -194,13 +194,13 @@ "scene": { "welcome": { "slogan": "Torên civakî\ndi destên te de.", - "get_started": "Get Started", + "get_started": "Dest pê bike", "log_in": "Têkeve" }, "server_picker": { "title": "Rajekarekê hilbijêre,\nHer kîjan rajekar be.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre.", + "subtitle_extend": "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre. Her civakek ji hêla rêxistinek an kesek bi tevahî serbixwe ve tê xebitandin.", "button": { "category": { "all": "Hemû", @@ -253,11 +253,11 @@ }, "password": { "placeholder": "pêborîn", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "Pêdiviya pêborîna te ya herî kêm:", + "character_limit": "8 tîp", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "hate kontrolkirin", + "unchecked": "nehate kontrolkirin" }, "hint": "Pêborîna te herî kêm divê ji 8 tîpan pêk bê" }, @@ -309,7 +309,7 @@ "subtitle": "Me tenê e-nameyek ji %s re şand,\ngirêdanê bitikne da ku ajimêra xwe bidî piştrastkirin.", "button": { "open_email_app": "Sepana e-nameyê veke", - "resend": "Resend" + "resend": "Ji nû ve bişîne" }, "dont_receive_email": { "title": "E-nameyê xwe kontrol bike", From 941270f955d0dd2bba6fc6c9ce07e5e86453bfe7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 10 Jan 2022 15:29:24 +0100 Subject: [PATCH 121/374] New translations app.json (Swedish) --- Localization/StringsConvertor/input/sv_SE/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_SE/app.json b/Localization/StringsConvertor/input/sv_SE/app.json index 1b47fc754..7c68c589a 100644 --- a/Localization/StringsConvertor/input/sv_SE/app.json +++ b/Localization/StringsConvertor/input/sv_SE/app.json @@ -194,8 +194,8 @@ "scene": { "welcome": { "slogan": "Social networking\nback in your hands.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Kom igång", + "log_in": "Logga in" }, "server_picker": { "title": "Mastodon is made of users in different communities.", From fe1003849dbba5995b833133ce01c9b7c85248e9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 11 Jan 2022 07:23:37 +0100 Subject: [PATCH 122/374] New translations app.json (Spanish, Argentina) --- .../StringsConvertor/input/es_AR/app.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json index ee36e7b32..45daa888f 100644 --- a/Localization/StringsConvertor/input/es_AR/app.json +++ b/Localization/StringsConvertor/input/es_AR/app.json @@ -194,13 +194,13 @@ "scene": { "welcome": { "slogan": "La red social,\nnuevamente en tu poder.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Comenzá", + "log_in": "Iniciar sesión" }, "server_picker": { "title": "Elegí un servidor,\nel que quieras.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Elegí una comunidad basada en tus intereses, región o una de propósitos generales.", + "subtitle_extend": "Elige una comunidad relacionada con tus intereses, con tu región o una más genérica. Cada comunidad está operada por una organización o individuo completamente independiente.", "button": { "category": { "all": "Todas", @@ -253,11 +253,11 @@ }, "password": { "placeholder": "contraseña", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "Tu contraseña debe contener como mínimo:", + "character_limit": "8 caracteres", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "marcado", + "unchecked": "sin marcar" }, "hint": "Tu contraseña necesita al menos ocho caracteres" }, @@ -309,7 +309,7 @@ "subtitle": "Acabamos de enviar un correo electrónico a %s,\npulsá en el enlace para confirmar tu cuenta.", "button": { "open_email_app": "Abrir aplicación de correo electrónico", - "resend": "Resend" + "resend": "Reenviar" }, "dont_receive_email": { "title": "Revisá tu correo electrónico", From 0be1e50d649f467ea5089700370cf3b623b36e04 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 11 Jan 2022 08:29:42 +0100 Subject: [PATCH 123/374] New translations app.json (Spanish, Argentina) --- Localization/StringsConvertor/input/es_AR/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json index 45daa888f..3eae1e0d5 100644 --- a/Localization/StringsConvertor/input/es_AR/app.json +++ b/Localization/StringsConvertor/input/es_AR/app.json @@ -200,7 +200,7 @@ "server_picker": { "title": "Elegí un servidor,\nel que quieras.", "subtitle": "Elegí una comunidad basada en tus intereses, región o una de propósitos generales.", - "subtitle_extend": "Elige una comunidad relacionada con tus intereses, con tu región o una más genérica. Cada comunidad está operada por una organización o individuo completamente independiente.", + "subtitle_extend": "Elegí una comunidad basada en tus intereses, región o una de propósitos generales. Cada comunidad es operada por una organización o individuo totalmente independiente.", "button": { "category": { "all": "Todas", @@ -253,7 +253,7 @@ }, "password": { "placeholder": "contraseña", - "require": "Tu contraseña debe contener como mínimo:", + "require": "Tu contraseña necesita al menos:", "character_limit": "8 caracteres", "accessibility": { "checked": "marcado", From eca40e49f31e1504ec7bcb755ca14256ed26a603 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 12 Jan 2022 05:10:52 +0100 Subject: [PATCH 124/374] New translations app.json (Russian) --- Localization/StringsConvertor/input/ru_RU/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json index 117244a61..c8553e501 100644 --- a/Localization/StringsConvertor/input/ru_RU/app.json +++ b/Localization/StringsConvertor/input/ru_RU/app.json @@ -67,7 +67,7 @@ "done": "Готово", "confirm": "Подтвердить", "continue": "Продолжить", - "compose": "Compose", + "compose": "Написать", "cancel": "Отмена", "discard": "Отмена", "try_again": "Попробовать снова", @@ -195,7 +195,7 @@ "welcome": { "slogan": "Социальная сеть\nпод вашим контролем.", "get_started": "Get Started", - "log_in": "Log In" + "log_in": "Вход" }, "server_picker": { "title": "Выберите сервер,\nлюбой сервер.", From 3bbe922695bc8dd15c08cc4ab04239a4490e8a19 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 12 Jan 2022 06:16:15 +0100 Subject: [PATCH 125/374] New translations app.json (Russian) --- Localization/StringsConvertor/input/ru_RU/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json index c8553e501..253d6f012 100644 --- a/Localization/StringsConvertor/input/ru_RU/app.json +++ b/Localization/StringsConvertor/input/ru_RU/app.json @@ -199,7 +199,7 @@ }, "server_picker": { "title": "Выберите сервер,\nлюбой сервер.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle": "Выберите сообщество на основе своих интересов, региона или общей тематики.", "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { "category": { From 584b7c8d463ab536f0f5c11dbaf886e41b4b8a03 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 18 Jan 2022 02:23:54 +0100 Subject: [PATCH 126/374] New translations app.json (German) --- .../StringsConvertor/input/de_DE/app.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json index 61b069904..c7cb3bf69 100644 --- a/Localization/StringsConvertor/input/de_DE/app.json +++ b/Localization/StringsConvertor/input/de_DE/app.json @@ -67,7 +67,7 @@ "done": "Fertig", "confirm": "Bestätigen", "continue": "Fortfahren", - "compose": "Compose", + "compose": "Neue Nachricht", "cancel": "Abbrechen", "discard": "Verwerfen", "try_again": "Nochmals versuchen", @@ -82,7 +82,7 @@ "share_user": "%s teilen", "share_post": "Beitrag teilen", "open_in_safari": "In Safari öffnen", - "open_in_browser": "Open in Browser", + "open_in_browser": "Im Browser anzeigen", "find_people": "Finde Personen zum Folgen", "manually_search": "Stattdessen manuell suchen", "skip": "Überspringen", @@ -194,13 +194,13 @@ "scene": { "welcome": { "slogan": "Soziale Netzwerke wieder in deinen Händen.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Erste Schritte", + "log_in": "Anmelden" }, "server_picker": { "title": "Wähle einen Server,\nbeliebigen Server.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Wähle eine Gemeinschaft, die auf deinen Interessen, Region oder einem allgemeinen Zweck basiert.", + "subtitle_extend": "Wähle eine Gemeinschaft basierend auf deinen Interessen, deiner Region oder einem allgemeinen Zweck. Jede Gemeinschaft wird von einer völlig unabhängigen Organisation oder Einzelperson betrieben.", "button": { "category": { "all": "Alle", @@ -253,11 +253,11 @@ }, "password": { "placeholder": "Passwort", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "Anforderungen an dein Passwort:", + "character_limit": "8 Zeichen", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "Häkchen gesetzt", + "unchecked": "Häkchen entfernt" }, "hint": "Ihr Passwort muss mindestens 8 Zeichen lang sein" }, @@ -309,7 +309,7 @@ "subtitle": "Wir haben gerade eine E-Mail an %s gesendet,\ntippe darin auf den Link, um Dein Konto zu bestätigen.", "button": { "open_email_app": "E-Mail-App öffnen", - "resend": "Resend" + "resend": "Erneut senden" }, "dont_receive_email": { "title": "Bitte überprüfe deine E-Mails", @@ -426,10 +426,10 @@ } }, "follower": { - "footer": "Followers from other servers are not displayed." + "footer": "Follower von anderen Servern werden nicht angezeigt." }, "following": { - "footer": "Follows from other servers are not displayed." + "footer": "Wem das Konto folgt wird von anderen Servern werden nicht angezeigt." }, "search": { "title": "Suche", @@ -555,7 +555,7 @@ }, "account_list": { "tab_bar_hint": "Aktuell ausgewähltes Profil: %s. Doppeltippen dann gedrückt halten, um den Kontoschalter anzuzeigen", - "dismiss_account_switcher": "Dismiss Account Switcher", + "dismiss_account_switcher": "Dialog zum Wechseln des Kontos schließen", "add_account": "Konto hinzufügen" }, "wizard": { From ebeb5f693b5297093e23fe3cc38a566e618e68a9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 18 Jan 2022 05:27:53 +0100 Subject: [PATCH 127/374] New translations app.json (Kurmanji (Kurdish)) --- Localization/StringsConvertor/input/kmr_TR/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index 5931c751e..ab614b8c5 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -236,7 +236,7 @@ } }, "register": { - "title": "Ji me re hinekî qala xwe bike.", + "title": "Ji me re hinekî qala xwe bike %s", "input": { "avatar": { "delete": "Jê bibe" @@ -296,7 +296,7 @@ }, "server_rules": { "title": "Hinek rêzikên bingehîn.", - "subtitle": "Ev rêzik ji aliyê rêvebirên %s ve tên sazkirin.", + "subtitle": "Ev rêzik ji aliyê çavdêrên %s ve tên sazkirin.", "prompt": "Bi domandinê, tu ji bo %s di bin mercên bikaranînê û polîtîkaya nepenîtiyê dipejirînî.", "terms_of_service": "mercên bikaranînê", "privacy_policy": "polîtikaya nihêniyê", From aee29cfb8d2d074f09106fe81ac776b35c205d48 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 18 Jan 2022 06:42:39 +0100 Subject: [PATCH 128/374] New translations app.json (Arabic) --- .../StringsConvertor/input/ar_SA/app.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index b28a6a103..5b722eba4 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -194,13 +194,13 @@ "scene": { "welcome": { "slogan": "شبكات التواصل الاجتماعي\nمرة أُخرى بين يديك.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "ابدأ الآن", + "log_in": "تسجيلُ الدخول" }, "server_picker": { "title": "اِختر خادِم،\nأيًّا مِنهُم.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "اختر مجتمعًا بناءً على اهتماماتك، منطقتك أو يمكنك حتى اختيارُ مجتمعٍ ذي غرضٍ عام.", + "subtitle_extend": "اختر مجتمعًا بناءً على اهتماماتك، منطقتك أو يمكنك حتى اختيارُ مجتمعٍ ذي غرضٍ عام. تُشغَّل جميعُ المجتمعِ مِن قِبَلِ مُنظمَةٍ أو فردٍ مُستقلٍ تمامًا.", "button": { "category": { "all": "الكل", @@ -253,11 +253,11 @@ }, "password": { "placeholder": "رمز سري", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "رمز المرور الخاص بك يجب أن يحتوي على الأقل:", + "character_limit": "ثمانيةُ خانات", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "مُتَحَققٌ مِنه", + "unchecked": "غيرُ مُتَحَققٍ مِنه" }, "hint": "يجب أن يكون رمزك السري مكوَّن من ثمان خانات على الأقل" }, @@ -309,7 +309,7 @@ "subtitle": "لقد أرسلنا للتو بريد إلكتروني إلى %s،\nانقر على الرابط لتأكيد حسابك.", "button": { "open_email_app": "فتح تطبيق البريد الإلكتروني", - "resend": "Resend" + "resend": "إعادَةُ الإرسال" }, "dont_receive_email": { "title": "تحقق من بريدك الإلكتروني", From 106a22adff9a09ed162dce78a4e1d30eb4d21b7a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 21 Jan 2022 20:46:06 +0100 Subject: [PATCH 129/374] New translations app.json (Scottish Gaelic) --- .../StringsConvertor/input/gd_GB/app.json | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json index f5e645061..d7fcaa28f 100644 --- a/Localization/StringsConvertor/input/gd_GB/app.json +++ b/Localization/StringsConvertor/input/gd_GB/app.json @@ -82,7 +82,7 @@ "share_user": "Co-roinn %s", "share_post": "Co-roinn am post", "open_in_safari": "Fosgail ann an Safari", - "open_in_browser": "Open in Browser", + "open_in_browser": "Fosgail sa bhrabhsair", "find_people": "Lorg daoine a leanas tu", "manually_search": "Lorg a làimh ’na àite", "skip": "Leum thairis air", @@ -194,13 +194,13 @@ "scene": { "welcome": { "slogan": "A’ cur nan lìonraidhean sòisealta\n’nad làmhan fhèin.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Dèan toiseach-tòiseachaidh", + "log_in": "Clàraich a-steach" }, "server_picker": { "title": "Tagh frithealaiche sam bith.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Tagh coimhearsnachd stèidhichte air d’ ùidhean no an roinn-dùthcha agad no tè choitcheann.", + "subtitle_extend": "Tagh coimhearsnachd stèidhichte air d’ ùidhean no an roinn-dùthcha agad no tè choitcheann. Tha gach coimhearsnachd ’ga stiùireadh le buidheann no neach gu neo-eisimeileach.", "button": { "category": { "all": "Na h-uile", @@ -253,11 +253,11 @@ }, "password": { "placeholder": "facal-faire", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "Feumaidh am facal-faire agad co-dhiù:", + "character_limit": "8 caractaran", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "le cromag", + "unchecked": "gun chromag" }, "hint": "Feumaidh ochd caractaran a bhith san fhacal-fhaire agad air a char as giorra" }, @@ -309,7 +309,7 @@ "subtitle": "Tha sinn air post-d a chur gu %s,\nthoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad.", "button": { "open_email_app": "Fosgail aplacaid a’ phuist-d", - "resend": "Resend" + "resend": "Ath-chuir" }, "dont_receive_email": { "title": "Thoir sùil air a’ phost-d agad", From b744f34ef96cd3321777a2877493512ce48c84ca Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Jan 2022 20:11:48 +0100 Subject: [PATCH 130/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 995f4ef34..8d750e0da 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -82,7 +82,7 @@ "share_user": "แบ่งปัน %s", "share_post": "แบ่งปันโพสต์", "open_in_safari": "เปิดใน Safari", - "open_in_browser": "Open in Browser", + "open_in_browser": "เปิดในเบราว์เซอร์", "find_people": "ค้นหาผู้คนที่จะติดตาม", "manually_search": "ค้นหาด้วยตนเองแทน", "skip": "ข้าม", @@ -194,8 +194,8 @@ "scene": { "welcome": { "slogan": "ให้เครือข่ายสังคม\nกลับมาอยู่ในมือของคุณ", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "เริ่มต้น​ใช้งาน​", + "log_in": "เข้าสู่ระบบ" }, "server_picker": { "title": "เลือกเซิร์ฟเวอร์\nอันไหนก็ได้", From 098509f748744b9cfcfca255831c40898f995ae1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 25 Jan 2022 21:29:57 +0100 Subject: [PATCH 131/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 8d750e0da..c987652ce 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -253,8 +253,8 @@ }, "password": { "placeholder": "รหัสผ่าน", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "รหัสผ่านของคุณต้องมีอย่างน้อย:", + "character_limit": "8 ตัวอักษร", "accessibility": { "checked": "checked", "unchecked": "unchecked" @@ -309,7 +309,7 @@ "subtitle": "เราเพิ่งส่งอีเมลไปยัง %s\nแตะที่ลิงก์เพื่อยืนยันบัญชีของคุณ", "button": { "open_email_app": "เปิดแอปอีเมล", - "resend": "Resend" + "resend": "ส่งใหม่" }, "dont_receive_email": { "title": "ตรวจสอบอีเมลของคุณ", From 47719cdfe415fad037c8da06f254095f519d1a9c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Jan 2022 12:07:36 +0100 Subject: [PATCH 132/374] New translations app.json (Spanish) --- Localization/StringsConvertor/input/es_ES/app.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index 5bff817ca..b12c891fc 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -554,14 +554,14 @@ } }, "account_list": { - "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", - "dismiss_account_switcher": "Dismiss Account Switcher", - "add_account": "Add Account" + "tab_bar_hint": "Perfil seleccionado actualmente: %s. Haz un doble toque y mantén pulsado para mostrar el selector de cuentas", + "dismiss_account_switcher": "Descartar el selector de cuentas", + "add_account": "Añadir cuenta" }, "wizard": { - "new_in_mastodon": "New in Mastodon", - "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.", - "accessibility_hint": "Double tap to dismiss this wizard" + "new_in_mastodon": "Nuevo en Mastodon", + "multiple_account_switch_intro_description": "Cambie entre varias cuentas manteniendo presionado el botón de perfil.", + "accessibility_hint": "Haz doble toque para descartar este asistente" } } } From 8be8b30582f0ca223b50a5a2db17caa3be05ef02 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Jan 2022 12:07:38 +0100 Subject: [PATCH 133/374] New translations Localizable.stringsdict (Spanish) --- .../StringsConvertor/input/es_ES/Localizable.stringsdict | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict b/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict index d31d8825b..186218af6 100644 --- a/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/es_ES/Localizable.stringsdict @@ -13,9 +13,9 @@ NSStringFormatValueTypeKey ld one - 1 unread notification + 1 notificación no leída other - %ld unread notification + %ld notificaciones no leídas a11y.plural.count.input_limit_exceeds From a6a1aa169859a1eedfe59ba14b27984323d9019b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Jan 2022 16:42:17 +0100 Subject: [PATCH 134/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index c987652ce..9d1eb6409 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -256,8 +256,8 @@ "require": "รหัสผ่านของคุณต้องมีอย่างน้อย:", "character_limit": "8 ตัวอักษร", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "กาเครื่องหมายอยู่", + "unchecked": "ไม่ได้กาเครื่องหมาย" }, "hint": "รหัสผ่านของคุณต้องมีอย่างน้อยแปดตัวอักษร" }, From 2dac7ff9062da98f83b1bd18096da264e8668dcd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 26 Jan 2022 18:03:17 +0100 Subject: [PATCH 135/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 9d1eb6409..0b40bf193 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -194,13 +194,13 @@ "scene": { "welcome": { "slogan": "ให้เครือข่ายสังคม\nกลับมาอยู่ในมือของคุณ", - "get_started": "เริ่มต้น​ใช้งาน​", + "get_started": "เริ่มต้นใช้งาน", "log_in": "เข้าสู่ระบบ" }, "server_picker": { "title": "เลือกเซิร์ฟเวอร์\nอันไหนก็ได้", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ", + "subtitle_extend": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละชุมชนดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระทั้งหมด", "button": { "category": { "all": "ทั้งหมด", @@ -256,7 +256,7 @@ "require": "รหัสผ่านของคุณต้องมีอย่างน้อย:", "character_limit": "8 ตัวอักษร", "accessibility": { - "checked": "กาเครื่องหมายอยู่", + "checked": "กาเครื่องหมายแล้ว", "unchecked": "ไม่ได้กาเครื่องหมาย" }, "hint": "รหัสผ่านของคุณต้องมีอย่างน้อยแปดตัวอักษร" From b76b3a2750f3a53188654daa3b1cb3941e8d118b Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 27 Jan 2022 21:23:39 +0800 Subject: [PATCH 136/374] feat: adapt the app to async & await. Update timeline UI --- AppShared/Info.plist | 2 +- CoreDataStack/.sourcery.yml | 6 + .../CoreData.xcdatamodeld/.xccurrentversion | 2 +- .../CoreData 2.xcdatamodel/contents | 2 +- .../CoreData 3.xcdatamodel/contents | 283 ++++ CoreDataStack/Entity/App/Feed.swift | 198 +++ .../Entity/{ => App}/HomeTimelineIndex.swift | 0 CoreDataStack/Entity/{ => App}/Setting.swift | 0 CoreDataStack/Entity/Attachment.swift | 126 -- .../Entity/{ => Mastodon}/Application.swift | 0 .../Entity/{ => Mastodon}/DomainBlock.swift | 0 .../Entity/{ => Mastodon}/Emoji.swift | 0 .../Entity/{ => Mastodon}/History.swift | 0 .../Entity/{ => Mastodon}/Instance.swift | 0 .../MastodonAuthentication.swift | 0 .../Entity/Mastodon/MastodonUser.swift | 604 ++++++++ .../Entity/Mastodon/Notification.swift | 207 +++ CoreDataStack/Entity/Mastodon/Poll.swift | 326 +++++ .../Entity/Mastodon/PollOption.swift | 199 +++ .../Entity/{ => Mastodon}/PrivateNote.swift | 0 .../Entity/Mastodon/SearchHistory.swift | 158 ++ CoreDataStack/Entity/Mastodon/Status.swift | 802 ++++++++++ .../Entity/{ => Mastodon}/Subscription.swift | 0 .../{ => Mastodon}/SubscriptionAlerts.swift | 0 CoreDataStack/Entity/Mastodon/Tag.swift | 218 +++ CoreDataStack/Entity/MastodonUser.swift | 407 ------ CoreDataStack/Entity/Mention.swift | 71 - CoreDataStack/Entity/Notification.swift | 115 -- CoreDataStack/Entity/Poll.swift | 145 -- CoreDataStack/Entity/PollOption.swift | 98 -- CoreDataStack/Entity/SearchHistory.swift | 118 -- CoreDataStack/Entity/Status.swift | 355 ----- CoreDataStack/Entity/Tag.swift | 112 -- CoreDataStack/Entity/Transient/Acct.swift | 46 + .../Entity/Transient/Feed+Kind.swift | 17 + .../Entity/Transient/MastodonAttachment.swift | 58 + .../Entity/Transient/MastodonEmoji.swift | 30 + .../Entity/Transient/MastodonField.swift | 25 + .../Entity/Transient/MastodonMention.swift | 31 + .../Transient/MastodonNotificationType.swift | 46 + .../Entity/Transient/MastodonTagHistory.swift | 24 + .../Entity/Transient/MastodonVisibility.swift | 38 + .../Extension/NSManagedObjectContext.swift | 63 + CoreDataStack/Info.plist | 2 +- ...ManagedObjectContextObjectsDidChange.swift | 4 +- .../Stack/ManagedObjectObserver.swift | 55 +- .../Template/AutoGenerateProperty.swift | 14 + .../Template/AutoGenerateRelationship.swift | 14 + .../Template/AutoUpdatableObject.swift | 14 + .../Stencil/AutoGenerateProperty.stencil | 45 + .../Stencil/AutoGenerateRelationship.stencil | 29 + .../Stencil/AutoUpdatableObject.stencil | 16 + .../Utility/ManagedObjectRecord.swift | 32 + CoreDataStackTests/Info.plist | 2 +- .../Sources/StringsConvertor/main.swift | 39 +- Localization/app.json | 34 +- Mastodon.xcodeproj/project.pbxproj | 1284 ++++++++-------- .../xcschemes/Mastodon - ASDK.xcscheme | 108 -- .../xcschemes/xcschememanagement.plist | 36 +- .../xcshareddata/swiftpm/Package.resolved | 9 - Mastodon/.sourcery.yml | 7 + Mastodon/Activity/SafariActivity.swift | 8 +- Mastodon/Activity/ShareActivityProvider.swift | 13 + Mastodon/Coordinator/SceneCoordinator.swift | 15 +- .../Deprecated/PickServerCategoriesCell.swift | 145 -- .../Deprecated/PickServerSearchCell.swift | 171 --- .../Compose/AutoCompleteSection.swift | 6 +- .../Diffiable/Compose/ComposeStatusItem.swift | 32 +- .../Compose/ComposeStatusPollItem.swift | 2 + .../Compose/ComposeStatusSection.swift | 61 +- .../FeedFetchedResultsController.swift | 90 ++ ...SearchHistoryFetchedResultController.swift | 17 +- .../StatusFetchedResultsController.swift | 27 +- .../UserFetchedResultsController.swift | 27 +- .../Notification/NotificationItem.swift | 48 +- .../Notification/NotificationSection.swift | 462 +++--- .../Onboarding/CategoryPickerItem.swift | 2 + .../Onboarding/CategoryPickerSection.swift | 2 + .../Onboarding/ServerRuleSection.swift | 2 + Mastodon/Diffiable/Poll/PollItem.swift | 68 - Mastodon/Diffiable/Poll/PollSection.swift | 120 -- .../Diffiable/Profile/ProfileFieldItem.swift | 85 +- .../Profile/ProfileFieldSection.swift | 218 +-- .../RecommendAccountSection.swift | 150 ++ Mastodon/Diffiable/Report/ReportItem.swift | 12 + Mastodon/Diffiable/Report/ReportSection.swift | 70 + .../Search/RecommendAccountSection.swift | 150 -- .../Search/RecommendHashTagSection.swift | 26 - .../Diffiable/Search/SearchHistoryItem.swift | 34 +- .../Search/SearchHistorySection.swift | 96 +- Mastodon/Diffiable/Search/SearchItem.swift | 13 + .../Diffiable/Search/SearchResultItem.swift | 71 +- .../Search/SearchResultSection.swift | 121 +- Mastodon/Diffiable/Search/SearchSection.swift | 76 + .../Diffiable/Settings/SettingsItem.swift | 2 + .../Diffiable/Settings/SettingsSection.swift | 2 + Mastodon/Diffiable/Status/Item.swift | 198 --- Mastodon/Diffiable/Status/ReportSection.swift | 67 - Mastodon/Diffiable/Status/StatusItem.swift | 84 ++ Mastodon/Diffiable/Status/StatusSection.swift | 1285 ++++------------- Mastodon/Diffiable/User/UserItem.swift | 4 +- Mastodon/Diffiable/User/UserSection.swift | 44 +- .../Extension/CoreDataStack/Attachment.swift | 23 - Mastodon/Extension/CoreDataStack/Emojis.swift | 40 - Mastodon/Extension/CoreDataStack/Fields.swift | 27 - .../CoreDataStack/MastodonUser+Property.swift | 74 - .../CoreDataStack/MastodonUser.swift | 88 +- .../CoreDataStack/NotificationType.swift | 16 - Mastodon/Extension/CoreDataStack/Status.swift | 63 +- Mastodon/Extension/Date.swift | 64 +- Mastodon/Extension/FLAnimatedImageView.swift | 22 +- .../Mastodon+API+Subscriptions+Policy.swift | 2 + .../Mastodon+Entity+Error+Detail.swift | 2 + .../Mastodon+Entity+Notification+Type.swift | 2 + .../MastodonSDK/Mastodon+Entity+Tag.swift | 12 + Mastodon/Extension/UITableView.swift | 2 + Mastodon/Extension/UIView.swift | 5 - Mastodon/Generated/Assets.swift | 272 ---- ...toGenerateProtocolDelegate.generated.swift | 12 + ...erateProtocolRelayDelegate.generated.swift | 30 + ...oGenerateTableViewDelegate.generated.swift | 20 + Mastodon/Generated/Strings.swift | 1167 --------------- .../Helper/MastodonAuthenticationBox.swift | 6 +- Mastodon/Info.plist | 2 +- .../Persistence/Extension/MastodonEmoji.swift | 34 + .../Persistence/Extension/MastodonField.swift | 21 + .../Extension/MastodonMention.swift | 21 + .../Extension/MastodonUser+Property.swift | 39 + .../Extension/Notification+Property.swift | 29 + .../Persistence/Extension/Poll+Property.swift | 30 + .../Extension/PollOption+Property.swift | 26 + .../Extension/Status+Property.swift | 91 ++ .../Persistence/Extension/Tag+Property.swift | 44 + .../Persistence+MastodonUser.swift | 161 +++ .../Persistence+Notification.swift | 199 +++ Mastodon/Persistence/Persistence+Poll.swift | 180 +++ .../Persistence/Persistence+PollOption.swift | 99 ++ .../Persistence+SearchHistory.swift | 116 ++ Mastodon/Persistence/Persistence+Status.swift | 220 +++ Mastodon/Persistence/Persistence+Tag.swift | 130 ++ Mastodon/Persistence/Persistence.swift | 33 + .../Protocol/MastodonEmojiContainer.swift | 26 + .../Protocol/MastodonFieldContainer.swift | 25 + .../Protocol/MastodonMentionContainer.swift | 24 + .../Protocol/AvatarConfigurableView.swift | 113 -- ...adMoreConfigurableTableViewContainer.swift | 49 - Mastodon/Protocol/NamingState.swift | 12 + .../Provider/DataSourceFacade+Block.swift | 25 + .../Provider/DataSourceFacade+Favorite.swift | 26 + .../Provider/DataSourceFacade+Follow.swift | 25 + .../Provider/DataSourceFacade+Hashtag.swift | 67 + .../Provider/DataSourceFacade+Media.swift | 233 +++ .../Provider/DataSourceFacade+Meta.swift | 73 + .../Provider/DataSourceFacade+Model.swift | 53 + .../Provider/DataSourceFacade+Mute.swift | 25 + .../Provider/DataSourceFacade+Profile.swift | 374 +++++ .../Provider/DataSourceFacade+Reblog.swift | 26 + .../DataSourceFacade+SearchHistory.swift | 116 ++ .../Provider/DataSourceFacade+Status.swift | 259 ++++ .../Provider/DataSourceFacade+Thread.swift | 55 + .../Protocol/Provider/DataSourceFacade.swift | 16 + ...er+NotificationTableViewCellDelegate.swift | 225 +++ ...Provider+StatusTableViewCellDelegate.swift | 344 +++++ ...taSourceProvider+UITableViewDelegate.swift | 274 ++++ .../Provider/DataSourceProvider.swift | 50 + .../SegmentedControlNavigateable.swift | 2 + ...Provider+StatusTableViewCellDelegate.swift | 194 --- ...tatusTableViewKeyCommandNavigateable.swift | 100 -- ...ider+TableViewControllerNavigateable.swift | 153 -- ...der+UITableViewDataSourcePrefetching.swift | 58 - .../StatusProvider+UITableViewDelegate.swift | 393 ----- .../StatusProvider/StatusProvider.swift | 36 - .../StatusProvider/StatusProviderFacade.swift | 636 -------- .../StatusTableViewControllerAspect.swift | 358 ++--- ...tatusTableViewControllerNavigateable.swift | 2 + ...ableViewCellHeightCacheableContainer.swift | 38 - .../TableViewControllerNavigateable.swift | 2 + .../Protocol/UserProvider/UserProvider.swift | 37 - ...erProviderFacade+UITableViewDelegate.swift | 22 - .../UserProvider/UserProviderFacade.swift | 464 ------ .../Colors/brand.blue.colorset/Contents.json | 38 - .../Contents.json | 38 - .../Colors/danger.colorset/Contents.json | 20 - .../Colors/disabled.colorset/Contents.json | 38 - .../Colors/inactive.colorset/Contents.json | 38 - .../system.orange.colorset/Contents.json | 20 - .../Contents.json | 38 - .../Contents.json | 38 - .../Contents.json | 38 - .../Contents.json | 38 - .../background.cyan.colorset/Contents.json | 20 - .../Contents.json | 20 - .../Contents.json | 38 - .../Contents.json | 38 - .../Contents.json | 38 - .../Contents.json | 38 - .../Contents.json | 38 - .../Resources/eu-ES.lproj/InfoPlist.strings | 4 + .../Resources/sv-FI.lproj/InfoPlist.strings | 4 + .../Scene/Account/AccountListViewModel.swift | 6 +- .../Scene/Account/AccountViewController.swift | 12 +- .../Cell/AccountListTableViewCell.swift | 9 +- .../Cell/AddAccountTableViewCell.swift | 2 + Mastodon/Scene/Account/View/BadgeButton.swift | 2 + .../Account/View/DragIndicatorView.swift | 2 + .../AutoCompleteViewModel+State.swift | 105 +- .../Cell/AutoCompleteTableViewCell.swift | 13 +- ...seStatusAttachmentCollectionViewCell.swift | 2 + ...sPollExpiresOptionCollectionViewCell.swift | 2 + ...lOptionAppendEntryCollectionViewCell.swift | 2 + ...seStatusPollOptionCollectionViewCell.swift | 2 + ...jiPickerHeaderCollectionReusableView.swift | 2 + .../Scene/Compose/ComposeViewController.swift | 226 +-- .../Compose/ComposeViewModel+DataSource.swift | 629 +++++--- .../ComposeViewModel+PublishState.swift | 35 +- Mastodon/Scene/Compose/ComposeViewModel.swift | 531 +++---- ...eRepliedToStatusContentTableViewCell.swift | 10 +- ...ComposeStatusAttachmentTableViewCell.swift | 2 + .../ComposeStatusContentTableViewCell.swift | 20 +- .../ComposeStatusPollTableViewCell.swift | 3 +- ...tachmentContainerView+EmptyStateView.swift | 2 + .../View/AttachmentContainerView.swift | 2 + .../Compose/View/ComposeToolbarView.swift | 2 + .../Compose/View/ReplicaStatusView.swift | 261 ---- .../View/StatusContentWarningEditorView.swift | 2 + ...ineViewController+DataSourceProvider.swift | 34 + ...shtagTimelineViewController+Provider.swift | 95 -- .../HashtagTimelineViewController.swift | 343 ++--- .../HashtagTimelineViewModel+Diffable.swift | 145 +- ...tagTimelineViewModel+LoadLatestState.swift | 104 -- ...tagTimelineViewModel+LoadMiddleState.swift | 131 -- ...tagTimelineViewModel+LoadOldestState.swift | 103 +- .../HashtagTimelineViewModel.swift | 71 +- ...ineViewController+DataSourceProvider.swift | 44 + ...meTimelineViewController+DebugAction.swift | 444 +++--- .../HomeTimelineViewController+Provider.swift | 95 -- .../HomeTimelineViewController.swift | 297 ++-- .../HomeTimelineViewModel+Diffable.swift | 388 +++-- ...omeTimelineViewModel+LoadLatestState.swift | 110 +- ...omeTimelineViewModel+LoadMiddleState.swift | 108 -- ...omeTimelineViewModel+LoadOldestState.swift | 79 +- .../HomeTimeline/HomeTimelineViewModel.swift | 170 ++- .../HomeTimelineNavigationBarTitleView.swift | 2 + .../MediaPreviewViewController.swift | 75 +- .../MediaPreview/MediaPreviewViewModel.swift | 222 +-- .../MediaPreviewImageViewController.swift | 64 +- .../Image/MediaPreviewImageViewModel.swift | 61 +- .../Button/NotificationAvatarButton.swift | 3 +- .../NotificationTableViewCell+ViewModel.swift | 49 + .../Cell/NotificationTableViewCell.swift | 73 + .../NotificationTableViewCellDelegate.swift | 63 + ...ineViewController+DataSourceProvider.swift | 44 + .../NotificationTimelineViewController.swift | 141 ++ ...tificationTimelineViewModel+Diffable.swift | 124 ++ ...ionTimelineViewModel+LoadOldestState.swift | 146 ++ .../NotificationTimelineViewModel.swift | 159 ++ ...icationViewController+StatusProvider.swift | 77 - .../NotificationViewController.swift | 1030 ++++++------- .../NotificationViewModel+Diffable.swift | 181 +-- ...otificationViewModel+LoadLatestState.swift | 95 -- ...otificationViewModel+LoadOldestState.swift | 146 -- .../Notification/NotificationViewModel.swift | 265 ++-- .../NotificationStatusTableViewCell.swift | 373 ----- .../MastodonConfirmEmailViewController.swift | 39 +- .../MastodonPickServerViewController.swift | 2 + .../TableViewCell/PickServerCell.swift | 2 + .../PickServerLoaderTableViewCell.swift | 2 + .../View/PickServerCategoryView.swift | 2 + .../View/PickServerEmptyStateView.swift | 2 + ...ckServerServerSectionTableHeaderView.swift | 2 + .../MastodonRegisterAvatarTableViewCell.swift | 2 + ...donRegisterPasswordHintTableViewCell.swift | 2 + ...stodonRegisterTextFieldTableViewCell.swift | 2 + ...astodonRegisterViewController+Avatar.swift | 2 + .../MastodonRegisterViewController.swift | 2 + .../MastodonRegisterViewModel+Diffable.swift | 2 + .../Register/MastodonRegisterViewModel.swift | 2 + .../Cell/ServerRulesTableViewCell.swift | 2 + .../MastodonServerRulesViewController.swift | 2 + .../MastodonServerRulesViewModel.swift | 2 + .../Share/NavigationActionView.swift | 2 + .../OnboardingHeadlineTableViewCell.swift | 2 + .../OnboardingViewControllerAppearance.swift | 2 + .../View/WelcomeIllustrationView.swift | 2 + .../Welcome/View/WizardCardView.swift | 2 + .../Welcome/WelcomeViewController.swift | 15 +- ...ofileFieldAddEntryCollectionViewCell.swift | 78 + .../Cell/ProfileFieldCollectionViewCell.swift | 87 ++ .../ProfileFieldEditCollectionViewCell.swift | 132 ++ .../About/ProfileAboutViewController.swift | 168 +++ .../ProfileAboutViewModel+Diffable.swift | 84 ++ .../Profile/About/ProfileAboutViewModel.swift | 106 ++ ...iteViewController+DataSourceProvider.swift | 34 + .../FavoriteViewController+Provider.swift | 95 -- .../Favorite/FavoriteViewController.swift | 196 +-- .../Favorite/FavoriteViewModel+Diffable.swift | 54 +- .../Favorite/FavoriteViewModel+State.swift | 100 +- .../Profile/Favorite/FavoriteViewModel.swift | 51 +- ...istViewController+DataSourceProvider.swift | 34 + .../FollowerListViewController+Provider.swift | 51 - .../Follower/FollowerListViewController.swift | 51 +- .../FollowerListViewModel+Diffable.swift | 26 +- .../FollowerListViewModel+State.swift | 95 +- .../Follower/FollowerListViewModel.swift | 3 +- ...istViewController+DataSourceProvider.swift | 34 + ...FollowingListViewController+Provider.swift | 51 - .../FollowingListViewController.swift | 48 +- .../FollowingListViewModel+Diffable.swift | 26 +- .../FollowingListViewModel+State.swift | 61 +- .../Following/FollowingListViewModel.swift | 1 + .../Header/ProfileHeaderViewController.swift | 231 +-- .../ProfileHeaderViewModel+Diffable.swift | 43 - .../Header/ProfileHeaderViewModel.swift | 201 +-- ...ofileFieldAddEntryCollectionViewCell.swift | 177 --- .../View/ProfileFieldCollectionViewCell.swift | 180 --- ...eFieldCollectionViewHeaderFooterView.swift | 13 +- .../Header/View/ProfileFieldView.swift | 141 -- .../Header/View/ProfileHeaderView.swift | 277 ++-- .../ProfileStatusDashboardMeterView.swift | 2 + .../View/ProfileStatusDashboardView.swift | 2 + .../ProfileViewController+UserProvider.swift | 27 - .../Scene/Profile/ProfileViewController.swift | 958 ++++++------ Mastodon/Scene/Profile/ProfileViewModel.swift | 161 ++- .../Profile/RemoteProfileViewModel.swift | 125 +- .../Paging/ProfilePagingViewModel.swift | 18 +- ...ineViewController+DataSourceProvider.swift | 34 + .../UserTimelineViewController+Provider.swift | 95 -- .../Timeline/UserTimelineViewController.swift | 174 +-- .../UserTimelineViewModel+Diffable.swift | 82 +- .../UserTimelineViewModel+State.swift | 106 +- .../Timeline/UserTimelineViewModel.swift | 102 +- ...ublicTimelineViewController+Provider.swift | 95 -- .../PublicTimelineViewController.swift | 239 --- .../PublicTimelineViewModel+Diffable.swift | 66 - ...licTimelineViewModel+LoadMiddleState.swift | 115 -- .../PublicTimelineViewModel+State.swift | 168 --- .../PublicTimelineViewModel.swift | 165 --- Mastodon/Scene/Report/ReportFooterView.swift | 2 + Mastodon/Scene/Report/ReportHeaderView.swift | 3 + .../Scene/Report/ReportViewController.swift | 12 +- .../Scene/Report/ReportViewModel+Data.swift | 219 +-- .../Report/ReportViewModel+Diffable.swift | 33 +- Mastodon/Scene/Report/ReportViewModel.swift | 42 +- .../Report/ReportedStatusTableviewCell.swift | 88 +- .../Root/MainTab/MainTabBarController.swift | 9 +- .../Root/Sidebar/SidebarViewController.swift | 8 +- .../Scene/Root/Sidebar/SidebarViewModel.swift | 2 + .../SidebarAddAccountCollectionViewCell.swift | 2 + .../Sidebar/View/SidebarListHeaderView.swift | 2 + .../Search/Cell/TrendCollectionViewCell.swift | 134 ++ ...dSectionHeaderCollectionReusableView.swift | 64 + ...hRecommendAccountsCollectionViewCell.swift | 210 --- ...earchRecommendTagsCollectionViewCell.swift | 170 --- .../Search/SearchViewController+Follow.swift | 110 -- .../SearchViewController+Recommend.swift | 118 -- .../Search/Search/SearchViewController.swift | 152 +- .../Search/SearchViewModel+Diffable.swift | 42 + .../Scene/Search/Search/SearchViewModel.swift | 110 +- .../Search/Search/View/LineChartView.swift | 11 +- .../SearchRecommendCollectionHeader.swift | 2 + .../SearchDetailViewController.swift | 19 +- .../SearchDetail/SearchDetailViewModel.swift | 2 + ...ySectionHeaderCollectionReusableView.swift | 80 + ...toryUserCollectionViewCell+ViewModel.swift | 27 + .../SearchHistoryUserCollectionViewCell.swift | 71 + ...oryViewController+DataSourceProvider.swift | 36 + .../SearchHistoryViewController.swift | 147 +- .../SearchHistoryViewModel+Diffable.swift | 66 + .../SearchHistoryViewModel.swift | 188 +-- .../View/SearchHistoryTableHeaderView.swift | 2 + .../Cell/HashtagTableViewCell.swift | 53 + ...ultViewController+DataSourceProvider.swift | 77 + ...hResultViewController+StatusProvider.swift | 75 - .../SearchResultViewController.swift | 195 +-- .../SearchResultViewModel+Diffable.swift | 90 ++ .../SearchResultViewModel+State.swift | 137 +- .../SearchResult/SearchResultViewModel.swift | 292 ++-- .../SearchResultTableViewCell.swift | 281 ---- .../Settings/SettingsViewController.swift | 2 + .../Scene/Settings/View/AppearanceView.swift | 2 + .../SettingsAppearanceTableViewCell.swift | 2 + .../Cell/SettingsToggleTableViewCell.swift | 2 + .../Settings/View/SettingsSectionHeader.swift | 2 + ...ontextMenuImagePreviewViewController.swift | 20 +- .../ContextMenuImagePreviewViewModel.swift | 16 +- .../Button/AvatarStackContainerButton.swift | 177 --- .../View/Button/HitTestExpandedButton.swift | 18 - .../View/Button/PrimaryActionButton.swift | 2 + .../View/Container/AudioContainerView.swift | 2 + ...ContainerView+MediaTypeIndicotorView.swift | 2 + .../Content/ContentWarningOverlayView.swift | 2 + ...ubleTitleLabelNavigationBarTitleView.swift | 2 + .../Content/MediaView+Configuration.swift | 50 + .../Content/NavigationBarProgressView.swift | 2 + .../NotificationView+Configuration.swift | 205 +++ .../PollOptionView+Configuration.swift | 108 ++ .../Content/StatusView+Configuration.swift | 412 ++++++ .../Scene/Share/View/Content/StatusView.swift | 725 ---------- .../View/Content/TimelineHeaderView.swift | 106 +- .../View/Content/UserView+Configuration.swift | 49 + .../View/ImageView/AvatarImageView.swift | 11 - .../PollOptionTableViewCell.swift | 151 -- .../StatusTableViewCell+ViewModel.swift | 57 + .../TableviewCell/StatusTableViewCell.swift | 573 ++++---- .../StatusTableViewCellDelegate.swift | 74 + ...tusThreadRootTableViewCell+ViewModel.swift | 46 + .../StatusThreadRootTableViewCell.swift | 85 ++ .../ThreadReplyLoaderTableViewCell.swift | 2 + .../TimelineFooterTableViewCell.swift | 2 + .../TimelineLoaderTableViewCell.swift | 2 + ...eMiddleLoaderTableViewCell+ViewModel.swift | 50 + .../TimelineMiddleLoaderTableViewCell.swift | 8 +- .../UserTableViewCell+ViewModel.swift | 41 + .../TableviewCell/UserTableViewCell.swift | 109 +- .../View/ToolBar/ActionToolBarContainer.swift | 229 --- .../ViewModel/AudioContainerViewModel.swift | 195 +-- .../ViewModel/MosaicImageViewModel.swift | 88 +- .../SuggestionAccountCollectionViewCell.swift | 2 + .../SuggestionAccountViewController.swift | 84 +- .../SuggestionAccountViewModel.swift | 64 +- .../SuggestionAccountTableViewCell.swift | 4 +- .../Scene/Thread/CachedThreadViewModel.swift | 6 +- .../MastodonStatusThreadViewModel.swift | 278 ++++ .../Scene/Thread/RemoteThreadViewModel.swift | 86 +- ...eadViewController+DataSourceProvider.swift | 36 + .../ThreadViewController+Provider.swift | 96 -- .../Scene/Thread/ThreadViewController.swift | 319 ++-- .../Thread/ThreadViewModel+Diffable.swift | 573 +++++--- .../ThreadViewModel+LoadThreadState.swift | 115 +- Mastodon/Scene/Thread/ThreadViewModel.swift | 440 +++--- ...wViewControllerAnimatedTransitioning.swift | 10 +- .../MediaPreviewTransitionController.swift | 4 +- .../MediaPreviewTransitionItem.swift | 14 +- .../MediaPreviewableViewController.swift | 12 +- .../Scene/Wizard/WizardViewController.swift | 2 + .../APIService/APIService+APIError.swift | 1 + .../APIService/APIService+Account.swift | 156 +- .../Service/APIService/APIService+Block.swift | 249 ++-- .../APIService/APIService+Favorite.swift | 261 ++-- .../APIService/APIService+Follow.swift | 266 ++-- .../APIService/APIService+FollowRequest.swift | 172 +-- .../APIService/APIService+Follower.swift | 58 +- .../APIService/APIService+Following.swift | 66 +- .../APIService+HashtagTimeline.swift | 54 +- .../APIService/APIService+HomeTimeline.swift | 97 +- .../Service/APIService/APIService+Mute.swift | 209 +-- .../APIService/APIService+Notification.swift | 196 +-- .../Service/APIService/APIService+Poll.swift | 227 +-- .../APIService+PublicTimeline.swift | 65 - .../APIService/APIService+Reblog.swift | 209 ++- .../APIService/APIService+Recommend.swift | 108 +- .../APIService/APIService+Relationship.swift | 90 +- .../APIService/APIService+Search.swift | 71 +- .../APIService+Status+Publish.swift | 55 +- .../APIService/APIService+Status.swift | 120 +- .../APIService/APIService+Thread.swift | 57 +- .../Service/APIService/APIService+Trend.swift | 24 + .../APIService/APIService+UserTimeline.swift | 54 +- .../APIService+CoreData+MastodonUser.swift | 133 -- .../CoreData/APIService+CoreData+Status.swift | 225 --- .../CoreData/APIService+CoreData+Tag.swift | 66 - .../APIService+Persist+PersistCache.swift | 66 - .../APIService+Persist+PersistMemo.swift | 226 --- .../Persist/APIService+Persist+Status.swift | 263 ---- Mastodon/Service/AudioPlaybackService.swift | 10 +- Mastodon/Service/AuthenticationService.swift | 3 + Mastodon/Service/BlockDomainService.swift | 150 +- .../Service/BlurhashImageCacheService.swift | 33 +- Mastodon/Service/NotificationService.swift | 5 +- Mastodon/Service/SettingService.swift | 2 + .../Service/StatusPrefetchingService.swift | 152 -- .../Service/ThemeService/MastodonTheme.swift | 1 + .../Service/ThemeService/SystemTheme.swift | 1 + Mastodon/Service/VideoPlaybackService.swift | 20 +- Mastodon/State/AppContext.swift | 6 - Mastodon/Supporting Files/SceneDelegate.swift | 14 +- .../AutoGenerateProtocolDelegate.swift | 10 + ...AutoGenerateProtocolDelegate.swifttemplate | 11 + .../AutoGenerateProtocolRelayDelegate.swift | 10 + ...enerateProtocolRelayDelegate.swifttemplate | 51 + .../AutoGenerateTableViewDelegate.stencil | 29 + .../AutoGenerateTableViewDelegate.swift | 10 + MastodonIntent/Info.plist | 2 +- MastodonIntent/SendPostIntentHandler.swift | 46 +- MastodonIntent/eu-ES.lproj/Intents.strings | 52 + .../eu-ES.lproj/Intents.stringsdict | 54 + MastodonIntent/sv-FI.lproj/Intents.strings | 52 + .../sv-FI.lproj/Intents.stringsdict | 54 + MastodonIntent/sv_FI.lproj/Intents.strings | 51 + MastodonSDK/Package.swift | 41 +- .../Assets.xcassets/Asset/Contents.json | 0 .../Asset/email.imageset/Contents.json | 0 .../Asset/email.imageset/c1 1~universal.pdf | Bin .../Asset/friends.imageset/Contents.json | 0 .../Asset/friends.imageset/friends 1.png | Bin .../Asset/friends.imageset/friends 2.png | Bin .../Asset/friends.imageset/friends 3.png | Bin .../mastodon.text.logo.imageset/Contents.json | 0 .../mastodon.title.logo.pdf | 0 .../Assets.xcassets/Circles/Contents.json | 0 .../plus.circle.fill.imageset/Contents.json | 0 .../plus.circle.fill.pdf | 0 .../plus.circle.imageset/Contents.json | 0 .../plus.circle.imageset/plus.circle.pdf | 0 .../Colors/Border/Contents.json | 0 .../compose.poll.colorset/Contents.json | 0 .../Border/searchCard.colorset/Contents.json | 6 +- .../Border/status.colorset/Contents.json | 6 +- .../Colors/Button/Contents.json | 0 .../action.toolbar.colorset/Contents.json | 12 +- .../Button/disabled.colorset/Contents.json | 0 .../Button/inactive.colorset/Contents.json | 12 +- .../Assets.xcassets/Colors/Contents.json | 0 .../Assets.xcassets/Colors/Icon/Contents.json | 0 .../Colors/Icon/plus.colorset}/Contents.json | 6 +- .../Colors/Label/Contents.json | 0 .../Label/primary.colorset/Contents.json | 6 +- .../primary.reverse.colorset/Contents.json | 0 .../Label/secondary.colorset/Contents.json | 12 +- .../Label/tertiary.colorset/Contents.json | 6 +- .../Colors/Notification/Contents.json | 0 .../favourite.colorset/Contents.json | 6 +- .../mention.colorset}/Contents.json | 12 +- .../reblog.colorset}/Contents.json | 12 +- .../Assets.xcassets/Colors/Poll/Contents.json | 0 .../Poll/disabled.colorset/Contents.json | 0 .../Colors/Shadow/Contents.json | 0 .../Shadow/SearchCard.colorset/Contents.json | 6 +- .../Colors/Slider/Contents.json | 0 .../Slider/track.colorset/Contents.json | 12 +- .../Colors/TextField/Contents.json | 0 .../background.colorset/Contents.json | 12 +- .../TextField/invalid.colorset/Contents.json | 0 .../TextField/valid.colorset/Contents.json | 6 +- .../alert.yellow.colorset/Contents.json | 0 .../badge.background.colorset}/Contents.json | 6 +- .../battleshipGrey.colorset/Contents.json | 6 +- .../Colors/brand.blue.colorset/Contents.json | 38 + .../Contents.json | 38 + .../danger.border.colorset/Contents.json | 0 .../Colors/danger.colorset/Contents.json | 20 + .../Colors/disabled.colorset/Contents.json | 38 + .../Colors/inactive.colorset/Contents.json | 38 + .../Contents.json | 0 .../success.green.colorset/Contents.json | 0 .../system.orange.colorset/Contents.json | 20 + .../Connectivity/Contents.json | 0 .../photo.fill.split.imageset/Contents.json | 0 .../photo.fill.split.imageset/Frame 2.pdf | 0 .../Assets.xcassets}/Contents.json | 0 .../Assets.xcassets/Human/Contents.json | 0 .../Contents.json | 0 .../emojiIconDark.pdf | 0 .../emojiIconLight.pdf | 0 .../Assets.xcassets/Scene/Contents.json | 0 .../Scene/Onboarding/Contents.json | 0 .../avatar.placeholder.imageset/Contents.json | 0 .../avatar.placeholder.imageset/Frame 82.jpg | Bin .../Frame 82@2x.png | Bin .../Frame 82@3x.png | Bin .../Contents.json | 38 + .../Contents.json | 12 +- .../Contents.json | 38 + .../Contents.json | 38 + .../Contents.json | 38 + .../Contents.json | 12 +- .../Contents.json | 6 +- .../Scene/Profile/Banner/Contents.json | 0 .../Contents.json | 12 +- .../Contents.json | 6 +- .../username.gray.colorset/Contents.json | 0 .../Scene/Profile/Contents.json | 0 .../Scene/Sidebar/Contents.json | 0 .../Scene/Sidebar/logo.imageset/Contents.json | 0 .../Scene/Sidebar/logo.imageset/logo.pdf | 0 .../Scene/Welcome/Contents.json | 0 .../Scene/Welcome/illustration/Contents.json | 0 .../background.cyan.colorset/Contents.json | 20 + .../cloud.base.extend.imageset/Contents.json | 0 .../cloud.base.extend.png | Bin .../cloud.base.extend@2x.png | Bin .../cloud.base.extend@3x.png | Bin .../cloud.base.imageset/Contents.json | 0 .../untitled10007Group61.png | Bin .../untitled10007Group61@2x.png | Bin .../untitled10007Group61@3x.png | Bin .../Contents.json | 0 .../untitled10006Group21.png | Bin .../untitled10006Group21@2x.png | Bin .../untitled10006Group21@3x.png | Bin .../Contents.json | 0 .../elephant.three.on.grass.extend.png | Bin .../elephant.three.on.grass.extend@2x.png | Bin .../elephant.three.on.grass.extend@3x.png | Bin .../Contents.json | 0 .../untitled10003Group11.png | Bin .../untitled10003Group11@2x.png | Bin .../untitled10003Group11@3x.png | Bin .../Contents.json | 0 .../untitled10005Group101.png | Bin .../untitled10005Group101@2x.png | Bin .../untitled10005Group101@3x.png | Bin .../Contents.json | 0 .../untitled10004Group111.png | Bin .../untitled10004Group111@2x.png | Bin .../untitled10004Group111@3x.png | Bin .../Contents.json | 0 .../mastodon.logo.black.pdf | 0 .../Contents.json | 0 .../mastodon.logo.black.large.pdf | 0 .../mastodon.logo.imageset/Contents.json | 0 .../mastodon.logo.imageset/logotypeFull1.pdf | 0 .../Contents.json | 0 .../logotypeFull1.large.pdf | Bin .../Contents.json | 20 + .../Assets.xcassets/Settings/Contents.json | 0 .../black.auto.imageset/Contents.json | 0 .../black.auto.imageset/Mixed_Black_Light.png | Bin .../Settings/black.imageset/Contents.json | 0 .../Settings/black.imageset/Home Black.png | Bin .../Settings/dark.auto.imageset/Contents.json | 0 .../dark.auto.imageset/Mixed_Dark_Light.png | Bin .../Settings/dark.imageset/Contents.json | 0 .../Settings/dark.imageset/Home Dark.png | Bin .../Settings/light.imageset/Contents.json | 0 .../Settings/light.imageset/Home Light.png | Bin .../Assets.xcassets/Theme/Contents.json | 0 .../Theme/Mastodon}/Background/Contents.json | 0 .../Contents.json | 0 .../Contents.json | 6 +- .../Contents.json | 0 .../Contents.json | 0 .../Contents.json | 0 .../Contents.json | 0 .../sidebar.background.colorset/Contents.json | 6 +- .../system.background.colorset/Contents.json | 0 .../Contents.json | 6 +- .../Contents.json | 0 .../Contents.json | 6 +- .../Contents.json | 0 .../Contents.json | 6 +- .../Contents.json | 0 .../Contents.json | 0 .../Theme/Mastodon/Contents.json | 0 .../Contents.json | 0 .../Mastodon/separator.colorset/Contents.json | 0 .../Contents.json | 38 + .../Theme/system/Background/Contents.json | 6 + .../Contents.json | 0 .../Contents.json | 38 + .../Contents.json | 0 .../Contents.json | 0 .../Contents.json | 6 +- .../Contents.json | 38 + .../sidebar.background.colorset/Contents.json | 6 +- .../system.background.colorset/Contents.json | 0 .../Contents.json | 6 +- .../Contents.json | 6 +- .../Contents.json | 12 +- .../Contents.json | 6 +- .../Contents.json | 38 + .../Contents.json | 6 +- .../Contents.json | 6 +- .../Theme/system/Contents.json | 0 .../Contents.json | 0 .../system/separator.colorset/Contents.json | 12 +- .../Contents.json | 38 + .../MastodonAsset/Generated/Assets.swift | 259 ++++ .../MastodonAsset/MastodonAsset+Bundle.swift | 14 + .../MastodonExtension/Collection.swift | 66 + .../Sources/MastodonExtension/Publisher.swift | 90 ++ .../Sources/MastodonExtension}/UIButton.swift | 8 +- .../Sources/MastodonExtension/UIView.swift | 14 + .../Generated/Strings.swift | 1155 +++++++++++++++ .../Resources/ar.lproj/Localizable.strings | 0 .../ar.lproj/Localizable.stringsdict | 0 .../Resources/ca.lproj/Localizable.strings | 0 .../ca.lproj/Localizable.stringsdict | 0 .../Resources/de.lproj/Localizable.strings | 0 .../de.lproj/Localizable.stringsdict | 0 .../Resources/en.lproj/Localizable.strings | 0 .../en.lproj/Localizable.stringsdict | 0 .../es-419.lproj/Localizable.strings | 0 .../es-419.lproj/Localizable.stringsdict | 0 .../Resources/es.lproj/Localizable.strings | 0 .../es.lproj/Localizable.stringsdict | 0 .../Resources/fr.lproj/Localizable.strings | 0 .../fr.lproj/Localizable.stringsdict | 0 .../Resources/gd-GB.lproj/Localizable.strings | 0 .../gd-GB.lproj/Localizable.stringsdict | 0 .../Resources/ja.lproj/Localizable.strings | 0 .../ja.lproj/Localizable.stringsdict | 0 .../Resources/ku-TR.lproj/Localizable.strings | 0 .../ku-TR.lproj/Localizable.stringsdict | 0 .../Resources/nl.lproj/Localizable.strings | 0 .../nl.lproj/Localizable.stringsdict | 0 .../Resources/ru.lproj/Localizable.strings | 0 .../ru.lproj/Localizable.stringsdict | 0 .../Resources/sv_FI.lproj/Localizable.strings | 349 +++++ .../sv_FI.lproj/Localizable.stringsdict | 390 +++++ .../Resources/th.lproj/Localizable.strings | 0 .../th.lproj/Localizable.stringsdict | 0 .../zh-Hans.lproj/Localizable.strings | 0 .../zh-Hans.lproj/Localizable.stringsdict | 0 .../Entity/Mastodon+Entity+Tag.swift | 12 +- .../Sources/MastodonUI/Extension/Date.swift | 61 + .../Extension/FLAnimatedImageView.swift | 90 ++ .../MastodonUI}/Extension/MetaLabel.swift | 56 +- .../Extension/UIContentSizeCategory.swift | 27 + .../Extension/UITapGestureRecognizer.swift | 27 + .../Model/PlaintextMetaContent.swift | 22 + .../MastodonUI/Model/Poll/PollItem.swift | 14 + .../MastodonUI/Model/Poll/PollSection.swift | 12 + .../Sources/MastodonUI/UserIdentifier.swift | 14 + .../View/Button/AvatarButton.swift | 32 +- .../View/Button/CircleAvatarButton.swift | 10 +- .../View/Button/HitTestExpandedButton.swift | 18 + .../View/Button/RoundedEdgesButton.swift | 8 +- .../MediaGridContainerView+ViewModel.swift | 58 + .../Container/MediaGridContainerView.swift | 337 +++++ .../View/Container/TouchBlockingView.swift | 8 +- .../Content/MediaView+Configuration.swift | 97 ++ .../MastodonUI/View/Content/MediaView.swift | 277 ++++ .../Content/NotificationView+ViewModel.swift | 151 ++ .../View/Content/NotificationView.swift | 394 +++++ .../Content/PollOptionView+ViewModel.swift | 180 +++ .../View/Content/PollOptionView.swift | 115 +- .../View/Content/StatusMetricView.swift | 96 ++ .../View/Content/StatusView+ViewModel.swift | 525 +++++++ .../MastodonUI/View/Content/StatusView.swift | 694 +++++++++ .../View/Content/UserView+ViewModel.swift | 65 + .../MastodonUI/View/Content/UserView.swift | 100 ++ .../View/Control/ActionToolbarContainer.swift | 279 ++++ .../Control/ContentWarningOverlayView.swift | 83 ++ .../View/Control/StripProgressView.swift | 18 +- .../View/ImageView/AvatarImageView.swift | 126 ++ .../MastodonUI/View/MastodonMenu.swift | 146 ++ .../PollOptionTableViewCell.swift | 65 + .../DeleteBackwardResponseTextField.swift | 8 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- Podfile | 1 + Podfile.lock | 8 +- README.md | 2 +- ShareActionExtension/Info.plist | 2 +- .../Scene/ShareViewController.swift | 2 + .../Scene/ShareViewModel.swift | 13 +- .../Scene/View/ComposeToolbarView.swift | 2 + .../Scene/View/StatusAttachmentView.swift | 38 +- ...tatusAttachmentViewModel+UploadState.swift | 1 + .../View/StatusAttachmentViewModel.swift | 2 + swiftgen.yml | 16 +- update_localization.sh | 2 +- 754 files changed, 29810 insertions(+), 25213 deletions(-) create mode 100644 CoreDataStack/.sourcery.yml create mode 100644 CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents create mode 100644 CoreDataStack/Entity/App/Feed.swift rename CoreDataStack/Entity/{ => App}/HomeTimelineIndex.swift (100%) rename CoreDataStack/Entity/{ => App}/Setting.swift (100%) delete mode 100644 CoreDataStack/Entity/Attachment.swift rename CoreDataStack/Entity/{ => Mastodon}/Application.swift (100%) rename CoreDataStack/Entity/{ => Mastodon}/DomainBlock.swift (100%) rename CoreDataStack/Entity/{ => Mastodon}/Emoji.swift (100%) rename CoreDataStack/Entity/{ => Mastodon}/History.swift (100%) rename CoreDataStack/Entity/{ => Mastodon}/Instance.swift (100%) rename CoreDataStack/Entity/{ => Mastodon}/MastodonAuthentication.swift (100%) create mode 100644 CoreDataStack/Entity/Mastodon/MastodonUser.swift create mode 100644 CoreDataStack/Entity/Mastodon/Notification.swift create mode 100644 CoreDataStack/Entity/Mastodon/Poll.swift create mode 100644 CoreDataStack/Entity/Mastodon/PollOption.swift rename CoreDataStack/Entity/{ => Mastodon}/PrivateNote.swift (100%) create mode 100644 CoreDataStack/Entity/Mastodon/SearchHistory.swift create mode 100644 CoreDataStack/Entity/Mastodon/Status.swift rename CoreDataStack/Entity/{ => Mastodon}/Subscription.swift (100%) rename CoreDataStack/Entity/{ => Mastodon}/SubscriptionAlerts.swift (100%) create mode 100644 CoreDataStack/Entity/Mastodon/Tag.swift delete mode 100644 CoreDataStack/Entity/MastodonUser.swift delete mode 100644 CoreDataStack/Entity/Mention.swift delete mode 100644 CoreDataStack/Entity/Notification.swift delete mode 100644 CoreDataStack/Entity/Poll.swift delete mode 100644 CoreDataStack/Entity/PollOption.swift delete mode 100644 CoreDataStack/Entity/SearchHistory.swift delete mode 100644 CoreDataStack/Entity/Status.swift delete mode 100644 CoreDataStack/Entity/Tag.swift create mode 100644 CoreDataStack/Entity/Transient/Acct.swift create mode 100644 CoreDataStack/Entity/Transient/Feed+Kind.swift create mode 100644 CoreDataStack/Entity/Transient/MastodonAttachment.swift create mode 100644 CoreDataStack/Entity/Transient/MastodonEmoji.swift create mode 100644 CoreDataStack/Entity/Transient/MastodonField.swift create mode 100644 CoreDataStack/Entity/Transient/MastodonMention.swift create mode 100644 CoreDataStack/Entity/Transient/MastodonNotificationType.swift create mode 100644 CoreDataStack/Entity/Transient/MastodonTagHistory.swift create mode 100644 CoreDataStack/Entity/Transient/MastodonVisibility.swift create mode 100644 CoreDataStack/Template/AutoGenerateProperty.swift create mode 100644 CoreDataStack/Template/AutoGenerateRelationship.swift create mode 100644 CoreDataStack/Template/AutoUpdatableObject.swift create mode 100644 CoreDataStack/Template/Stencil/AutoGenerateProperty.stencil create mode 100644 CoreDataStack/Template/Stencil/AutoGenerateRelationship.stencil create mode 100644 CoreDataStack/Template/Stencil/AutoUpdatableObject.stencil create mode 100644 CoreDataStack/Utility/ManagedObjectRecord.swift delete mode 100644 Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - ASDK.xcscheme create mode 100644 Mastodon/.sourcery.yml create mode 100644 Mastodon/Activity/ShareActivityProvider.swift delete mode 100644 Mastodon/Deprecated/PickServerCategoriesCell.swift delete mode 100644 Mastodon/Deprecated/PickServerSearchCell.swift create mode 100644 Mastodon/Diffiable/FetchedResultsController/FeedFetchedResultsController.swift delete mode 100644 Mastodon/Diffiable/Poll/PollItem.swift delete mode 100644 Mastodon/Diffiable/Poll/PollSection.swift create mode 100644 Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift create mode 100644 Mastodon/Diffiable/Report/ReportItem.swift create mode 100644 Mastodon/Diffiable/Report/ReportSection.swift delete mode 100644 Mastodon/Diffiable/Search/RecommendAccountSection.swift delete mode 100644 Mastodon/Diffiable/Search/RecommendHashTagSection.swift create mode 100644 Mastodon/Diffiable/Search/SearchItem.swift create mode 100644 Mastodon/Diffiable/Search/SearchSection.swift delete mode 100644 Mastodon/Diffiable/Status/Item.swift delete mode 100644 Mastodon/Diffiable/Status/ReportSection.swift create mode 100644 Mastodon/Diffiable/Status/StatusItem.swift delete mode 100644 Mastodon/Extension/CoreDataStack/Attachment.swift delete mode 100644 Mastodon/Extension/CoreDataStack/Emojis.swift delete mode 100644 Mastodon/Extension/CoreDataStack/Fields.swift delete mode 100644 Mastodon/Extension/CoreDataStack/MastodonUser+Property.swift delete mode 100644 Mastodon/Extension/CoreDataStack/NotificationType.swift delete mode 100644 Mastodon/Generated/Assets.swift create mode 100644 Mastodon/Generated/AutoGenerateProtocolDelegate.generated.swift create mode 100644 Mastodon/Generated/AutoGenerateProtocolRelayDelegate.generated.swift create mode 100644 Mastodon/Generated/AutoGenerateTableViewDelegate.generated.swift delete mode 100644 Mastodon/Generated/Strings.swift create mode 100644 Mastodon/Persistence/Extension/MastodonEmoji.swift create mode 100644 Mastodon/Persistence/Extension/MastodonField.swift create mode 100644 Mastodon/Persistence/Extension/MastodonMention.swift create mode 100644 Mastodon/Persistence/Extension/MastodonUser+Property.swift create mode 100644 Mastodon/Persistence/Extension/Notification+Property.swift create mode 100644 Mastodon/Persistence/Extension/Poll+Property.swift create mode 100644 Mastodon/Persistence/Extension/PollOption+Property.swift create mode 100644 Mastodon/Persistence/Extension/Status+Property.swift create mode 100644 Mastodon/Persistence/Extension/Tag+Property.swift create mode 100644 Mastodon/Persistence/Persistence+MastodonUser.swift create mode 100644 Mastodon/Persistence/Persistence+Notification.swift create mode 100644 Mastodon/Persistence/Persistence+Poll.swift create mode 100644 Mastodon/Persistence/Persistence+PollOption.swift create mode 100644 Mastodon/Persistence/Persistence+SearchHistory.swift create mode 100644 Mastodon/Persistence/Persistence+Status.swift create mode 100644 Mastodon/Persistence/Persistence+Tag.swift create mode 100644 Mastodon/Persistence/Persistence.swift create mode 100644 Mastodon/Persistence/Protocol/MastodonEmojiContainer.swift create mode 100644 Mastodon/Persistence/Protocol/MastodonFieldContainer.swift create mode 100644 Mastodon/Persistence/Protocol/MastodonMentionContainer.swift delete mode 100644 Mastodon/Protocol/AvatarConfigurableView.swift delete mode 100644 Mastodon/Protocol/LoadMoreConfigurableTableViewContainer.swift create mode 100644 Mastodon/Protocol/NamingState.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Block.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Favorite.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Follow.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Hashtag.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Media.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Meta.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Model.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Mute.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Profile.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Reblog.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+SearchHistory.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Status.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade+Thread.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceFacade.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceProvider+UITableViewDelegate.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceProvider.swift delete mode 100644 Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewCellDelegate.swift delete mode 100644 Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewKeyCommandNavigateable.swift delete mode 100644 Mastodon/Protocol/StatusProvider/StatusProvider+TableViewControllerNavigateable.swift delete mode 100644 Mastodon/Protocol/StatusProvider/StatusProvider+UITableViewDataSourcePrefetching.swift delete mode 100644 Mastodon/Protocol/StatusProvider/StatusProvider+UITableViewDelegate.swift delete mode 100644 Mastodon/Protocol/StatusProvider/StatusProvider.swift delete mode 100644 Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift delete mode 100644 Mastodon/Protocol/TableViewCellHeightCacheableContainer.swift delete mode 100644 Mastodon/Protocol/UserProvider/UserProvider.swift delete mode 100644 Mastodon/Protocol/UserProvider/UserProviderFacade+UITableViewDelegate.swift delete mode 100644 Mastodon/Protocol/UserProvider/UserProviderFacade.swift delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/brand.blue.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/brand.blue.darken.20.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/danger.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/disabled.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/inactive.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/system.orange.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/background.cyan.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.selection.background.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Theme/Mastodon/tab.bar.item.inactive.icon.color.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Theme/system/tab.bar.item.inactive.icon.color.colorset/Contents.json create mode 100644 Mastodon/Resources/eu-ES.lproj/InfoPlist.strings create mode 100644 Mastodon/Resources/sv-FI.lproj/InfoPlist.strings rename Mastodon/Scene/Compose/{CollectionViewCell => TableViewCell}/ComposeStatusContentTableViewCell.swift (93%) delete mode 100644 Mastodon/Scene/Compose/View/ReplicaStatusView.swift create mode 100644 Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController+DataSourceProvider.swift delete mode 100644 Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController+Provider.swift delete mode 100644 Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadLatestState.swift delete mode 100644 Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadMiddleState.swift create mode 100644 Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DataSourceProvider.swift delete mode 100644 Mastodon/Scene/HomeTimeline/HomeTimelineViewController+Provider.swift delete mode 100644 Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadMiddleState.swift create mode 100644 Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift create mode 100644 Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift create mode 100644 Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift create mode 100644 Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController+DataSourceProvider.swift create mode 100644 Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift create mode 100644 Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+Diffable.swift create mode 100644 Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+LoadOldestState.swift create mode 100644 Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift delete mode 100644 Mastodon/Scene/Notification/NotificationViewController+StatusProvider.swift delete mode 100644 Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift delete mode 100644 Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift delete mode 100644 Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift create mode 100644 Mastodon/Scene/Profile/About/Cell/ProfileFieldAddEntryCollectionViewCell.swift create mode 100644 Mastodon/Scene/Profile/About/Cell/ProfileFieldCollectionViewCell.swift create mode 100644 Mastodon/Scene/Profile/About/Cell/ProfileFieldEditCollectionViewCell.swift create mode 100644 Mastodon/Scene/Profile/About/ProfileAboutViewController.swift create mode 100644 Mastodon/Scene/Profile/About/ProfileAboutViewModel+Diffable.swift create mode 100644 Mastodon/Scene/Profile/About/ProfileAboutViewModel.swift create mode 100644 Mastodon/Scene/Profile/Favorite/FavoriteViewController+DataSourceProvider.swift delete mode 100644 Mastodon/Scene/Profile/Favorite/FavoriteViewController+Provider.swift create mode 100644 Mastodon/Scene/Profile/Follower/FollowerListViewController+DataSourceProvider.swift delete mode 100644 Mastodon/Scene/Profile/Follower/FollowerListViewController+Provider.swift create mode 100644 Mastodon/Scene/Profile/Following/FollowingListViewController+DataSourceProvider.swift delete mode 100644 Mastodon/Scene/Profile/Following/FollowingListViewController+Provider.swift delete mode 100644 Mastodon/Scene/Profile/Header/ProfileHeaderViewModel+Diffable.swift delete mode 100644 Mastodon/Scene/Profile/Header/View/ProfileFieldAddEntryCollectionViewCell.swift delete mode 100644 Mastodon/Scene/Profile/Header/View/ProfileFieldCollectionViewCell.swift delete mode 100644 Mastodon/Scene/Profile/Header/View/ProfileFieldView.swift delete mode 100644 Mastodon/Scene/Profile/ProfileViewController+UserProvider.swift create mode 100644 Mastodon/Scene/Profile/Timeline/UserTimelineViewController+DataSourceProvider.swift delete mode 100644 Mastodon/Scene/Profile/Timeline/UserTimelineViewController+Provider.swift delete mode 100644 Mastodon/Scene/PublicTimeline/PublicTimelineViewController+Provider.swift delete mode 100644 Mastodon/Scene/PublicTimeline/PublicTimelineViewController.swift delete mode 100644 Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+Diffable.swift delete mode 100644 Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+LoadMiddleState.swift delete mode 100644 Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+State.swift delete mode 100644 Mastodon/Scene/PublicTimeline/PublicTimelineViewModel.swift create mode 100644 Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift create mode 100644 Mastodon/Scene/Search/Search/Cell/TrendSectionHeaderCollectionReusableView.swift delete mode 100644 Mastodon/Scene/Search/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift delete mode 100644 Mastodon/Scene/Search/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift delete mode 100644 Mastodon/Scene/Search/Search/SearchViewController+Follow.swift delete mode 100644 Mastodon/Scene/Search/Search/SearchViewController+Recommend.swift create mode 100644 Mastodon/Scene/Search/Search/SearchViewModel+Diffable.swift create mode 100644 Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistorySectionHeaderCollectionReusableView.swift create mode 100644 Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistoryUserCollectionViewCell+ViewModel.swift create mode 100644 Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistoryUserCollectionViewCell.swift create mode 100644 Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController+DataSourceProvider.swift create mode 100644 Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel+Diffable.swift create mode 100644 Mastodon/Scene/Search/SearchDetail/SearchResult/Cell/HashtagTableViewCell.swift create mode 100644 Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController+DataSourceProvider.swift delete mode 100644 Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController+StatusProvider.swift create mode 100644 Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+Diffable.swift delete mode 100644 Mastodon/Scene/Search/SearchDetail/TableViewCell/SearchResultTableViewCell.swift delete mode 100644 Mastodon/Scene/Share/View/Button/AvatarStackContainerButton.swift delete mode 100644 Mastodon/Scene/Share/View/Button/HitTestExpandedButton.swift create mode 100644 Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift create mode 100644 Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift create mode 100644 Mastodon/Scene/Share/View/Content/PollOptionView+Configuration.swift create mode 100644 Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift delete mode 100644 Mastodon/Scene/Share/View/Content/StatusView.swift create mode 100644 Mastodon/Scene/Share/View/Content/UserView+Configuration.swift delete mode 100644 Mastodon/Scene/Share/View/ImageView/AvatarImageView.swift delete mode 100644 Mastodon/Scene/Share/View/TableviewCell/PollOptionTableViewCell.swift create mode 100644 Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift create mode 100644 Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift create mode 100644 Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift create mode 100644 Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift create mode 100644 Mastodon/Scene/Share/View/TableviewCell/TimelineMiddleLoaderTableViewCell+ViewModel.swift create mode 100644 Mastodon/Scene/Share/View/TableviewCell/UserTableViewCell+ViewModel.swift delete mode 100644 Mastodon/Scene/Share/View/ToolBar/ActionToolBarContainer.swift create mode 100644 Mastodon/Scene/Thread/MastodonStatusThreadViewModel.swift create mode 100644 Mastodon/Scene/Thread/ThreadViewController+DataSourceProvider.swift delete mode 100644 Mastodon/Scene/Thread/ThreadViewController+Provider.swift delete mode 100644 Mastodon/Service/APIService/APIService+PublicTimeline.swift create mode 100644 Mastodon/Service/APIService/APIService+Trend.swift delete mode 100644 Mastodon/Service/APIService/CoreData/APIService+CoreData+MastodonUser.swift delete mode 100644 Mastodon/Service/APIService/CoreData/APIService+CoreData+Status.swift delete mode 100644 Mastodon/Service/APIService/CoreData/APIService+CoreData+Tag.swift delete mode 100644 Mastodon/Service/APIService/Persist/APIService+Persist+PersistCache.swift delete mode 100644 Mastodon/Service/APIService/Persist/APIService+Persist+PersistMemo.swift delete mode 100644 Mastodon/Service/APIService/Persist/APIService+Persist+Status.swift delete mode 100644 Mastodon/Service/StatusPrefetchingService.swift create mode 100644 Mastodon/Template/AutoGenerateProtocolDelegate.swift create mode 100644 Mastodon/Template/AutoGenerateProtocolDelegate.swifttemplate create mode 100644 Mastodon/Template/AutoGenerateProtocolRelayDelegate.swift create mode 100644 Mastodon/Template/AutoGenerateProtocolRelayDelegate.swifttemplate create mode 100644 Mastodon/Template/AutoGenerateTableViewDelegate.stencil create mode 100644 Mastodon/Template/AutoGenerateTableViewDelegate.swift create mode 100644 MastodonIntent/eu-ES.lproj/Intents.strings create mode 100644 MastodonIntent/eu-ES.lproj/Intents.stringsdict create mode 100644 MastodonIntent/sv-FI.lproj/Intents.strings create mode 100644 MastodonIntent/sv-FI.lproj/Intents.stringsdict create mode 100644 MastodonIntent/sv_FI.lproj/Intents.strings rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Asset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Asset/email.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Asset/email.imageset/c1 1~universal.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Asset/friends.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Asset/friends.imageset/friends 1.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Asset/friends.imageset/friends 2.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Asset/friends.imageset/friends 3.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Asset/mastodon.text.logo.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Asset/mastodon.text.logo.imageset/mastodon.title.logo.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Circles/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Circles/plus.circle.fill.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Circles/plus.circle.fill.imageset/plus.circle.fill.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Circles/plus.circle.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Circles/plus.circle.imageset/plus.circle.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Border/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Border/compose.poll.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Border/searchCard.colorset/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Border/status.colorset/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Button/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Button/action.toolbar.colorset/Contents.json (76%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Button/disabled.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Button/inactive.colorset/Contents.json (76%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Icon/Contents.json (100%) rename {Mastodon/Resources/Assets.xcassets/Colors/badge.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Icon/plus.colorset}/Contents.json (74%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Label/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Label/primary.colorset/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Label/primary.reverse.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json (76%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Label/tertiary.colorset/Contents.json (74%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Notification/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json (74%) rename {Mastodon/Resources/Assets.xcassets/Colors/Notification/reblog.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/mention.colorset}/Contents.json (76%) rename {Mastodon/Resources/Assets.xcassets/Colors/Notification/mention.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/reblog.colorset}/Contents.json (76%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Poll/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Poll/disabled.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Shadow/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Shadow/SearchCard.colorset/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Slider/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/Slider/track.colorset/Contents.json (76%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/TextField/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/TextField/background.colorset/Contents.json (76%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/TextField/invalid.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/TextField/valid.colorset/Contents.json (74%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/alert.yellow.colorset/Contents.json (100%) rename {Mastodon/Resources/Assets.xcassets/Colors/Icon/plus.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/badge.background.colorset}/Contents.json (74%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json (74%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/brand.blue.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/brand.blue.darken.20.colorset/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/danger.border.colorset/Contents.json (100%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/danger.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/disabled.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/inactive.colorset/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/media.type.indicotor.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Colors/success.green.colorset/Contents.json (100%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/system.orange.colorset/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Connectivity/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Connectivity/photo.fill.split.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Connectivity/photo.fill.split.imageset/Frame 2.pdf (100%) rename {Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background => MastodonSDK/Sources/MastodonAsset/Assets.xcassets}/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Human/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Human/face.smiling.adaptive.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconDark.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconLight.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Onboarding/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82.jpg (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@2x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@3x.png (100%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json (76%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json (76%) rename {Mastodon/Resources/Assets.xcassets/Theme/system/Background/profile.field.collection.view.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/textField.background.colorset}/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Profile/Banner/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Profile/Banner/bio.edit.background.gray.colorset/Contents.json (76%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Profile/Banner/name.edit.background.gray.colorset/Contents.json (74%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Profile/Banner/username.gray.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Profile/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Sidebar/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Sidebar/logo.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Sidebar/logo.imageset/logo.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/Contents.json (100%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/background.cyan.colorset/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@2x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@3x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@2x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@3x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@2x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@3x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@2x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@3x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@2x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@3x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@2x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@3x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@2x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@3x.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/mastodon.logo.black.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/mastodon.logo.black.large.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/logotypeFull1.pdf (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/logotypeFull1.large.pdf (100%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/black.auto.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/black.auto.imageset/Mixed_Black_Light.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/black.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/black.imageset/Home Black.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/dark.auto.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/dark.auto.imageset/Mixed_Dark_Light.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/dark.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/dark.imageset/Home Dark.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/light.imageset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Settings/light.imageset/Home Light.png (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Contents.json (100%) rename {Mastodon/Resources/Assets.xcassets/Theme/system => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon}/Background/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/compose.toolbar.background.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/content.warning.overlay.background.colorset/Contents.json (88%) rename {Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/tab.bar.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/navigation.bar.background.colorset}/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/profile.field.collection.view.background.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/secondary.grouped.system.background.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/secondary.system.background.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/system.background.colorset/Contents.json (100%) rename {Mastodon/Resources/Assets.xcassets/Scene/Onboarding/textField.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset}/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/system.grouped.background.colorset/Contents.json (100%) rename {Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/navigation.bar.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tab.bar.background.colorset}/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.background.colorset/Contents.json (100%) rename {Mastodon/Resources/Assets.xcassets/Theme/system => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon}/Background/table.view.cell.selection.background.colorset/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.background.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.grouped.background.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/notification.status.border.color.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/Mastodon/separator.colorset/Contents.json (100%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/tab.bar.item.inactive.icon.color.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/Background/compose.toolbar.background.colorset/Contents.json (100%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json rename {Mastodon/Resources/Assets.xcassets/Theme/system/Background/tab.bar.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/navigation.bar.background.colorset}/Contents.json (100%) rename {Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/profile.field.collection.view.background.colorset}/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json (88%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/Background/system.background.colorset/Contents.json (100%) rename {Mastodon/Resources/Assets.xcassets/Theme/system/Background/table.view.cell.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset}/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json (88%) rename {Mastodon/Resources/Assets.xcassets/Theme/system/Background/navigation.bar.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tab.bar.background.colorset}/Contents.json (76%) rename {Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset => MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/table.view.cell.background.colorset}/Contents.json (88%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/table.view.cell.selection.background.colorset/Contents.json rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/Background/tertiary.system.background.colorset/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json (88%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/notification.status.border.color.colorset/Contents.json (100%) rename {Mastodon/Resources => MastodonSDK/Sources/MastodonAsset}/Assets.xcassets/Theme/system/separator.colorset/Contents.json (76%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/tab.bar.item.inactive.icon.color.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift create mode 100644 MastodonSDK/Sources/MastodonAsset/MastodonAsset+Bundle.swift create mode 100644 MastodonSDK/Sources/MastodonExtension/Collection.swift create mode 100644 MastodonSDK/Sources/MastodonExtension/Publisher.swift rename {Mastodon/Extension => MastodonSDK/Sources/MastodonExtension}/UIButton.swift (89%) create mode 100644 MastodonSDK/Sources/MastodonExtension/UIView.swift create mode 100644 MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ar.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ar.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ca.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ca.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/de.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/de.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/en.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/en.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/es-419.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/es-419.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/es.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/es.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/fr.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/fr.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/gd-GB.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/gd-GB.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ja.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ja.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ku-TR.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ku-TR.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/nl.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/nl.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ru.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/ru.lproj/Localizable.stringsdict (100%) create mode 100644 MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings create mode 100644 MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.stringsdict rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/th.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/th.lproj/Localizable.stringsdict (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/zh-Hans.lproj/Localizable.strings (100%) rename {Mastodon => MastodonSDK/Sources/MastodonLocalization}/Resources/zh-Hans.lproj/Localizable.stringsdict (100%) create mode 100644 MastodonSDK/Sources/MastodonUI/Extension/Date.swift create mode 100644 MastodonSDK/Sources/MastodonUI/Extension/FLAnimatedImageView.swift rename {Mastodon => MastodonSDK/Sources/MastodonUI}/Extension/MetaLabel.swift (73%) create mode 100644 MastodonSDK/Sources/MastodonUI/Extension/UIContentSizeCategory.swift create mode 100644 MastodonSDK/Sources/MastodonUI/Extension/UITapGestureRecognizer.swift create mode 100644 MastodonSDK/Sources/MastodonUI/Model/PlaintextMetaContent.swift create mode 100644 MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift create mode 100644 MastodonSDK/Sources/MastodonUI/Model/Poll/PollSection.swift create mode 100644 MastodonSDK/Sources/MastodonUI/UserIdentifier.swift rename {Mastodon/Scene/Share => MastodonSDK/Sources/MastodonUI}/View/Button/AvatarButton.swift (77%) rename {Mastodon/Scene/Share => MastodonSDK/Sources/MastodonUI}/View/Button/CircleAvatarButton.swift (58%) create mode 100644 MastodonSDK/Sources/MastodonUI/View/Button/HitTestExpandedButton.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift rename {Mastodon/Scene/Share => MastodonSDK/Sources/MastodonUI}/View/Container/TouchBlockingView.swift (69%) create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView+ViewModel.swift rename {Mastodon/Scene/Share => MastodonSDK/Sources/MastodonUI}/View/Content/PollOptionView.swift (67%) create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/StatusMetricView.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/UserView+ViewModel.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Content/UserView.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Control/ContentWarningOverlayView.swift rename {Mastodon/Scene/Share => MastodonSDK/Sources/MastodonUI}/View/Control/StripProgressView.swift (91%) create mode 100644 MastodonSDK/Sources/MastodonUI/View/ImageView/AvatarImageView.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/MastodonMenu.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/TableViewCell/PollOptionTableViewCell.swift rename {Mastodon/Scene/Share => MastodonSDK/Sources/MastodonUI}/View/TextField/DeleteBackwardResponseTextField.swift (61%) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index f652792e2..697cdf4d2 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 90 + 91 diff --git a/CoreDataStack/.sourcery.yml b/CoreDataStack/.sourcery.yml new file mode 100644 index 000000000..ac3ddce88 --- /dev/null +++ b/CoreDataStack/.sourcery.yml @@ -0,0 +1,6 @@ +sources: + - . +templates: + - ./Template +output: + Generated \ No newline at end of file diff --git a/CoreDataStack/CoreData.xcdatamodeld/.xccurrentversion b/CoreDataStack/CoreData.xcdatamodeld/.xccurrentversion index 3d5e5761c..cdd244c9c 100644 --- a/CoreDataStack/CoreData.xcdatamodeld/.xccurrentversion +++ b/CoreDataStack/CoreData.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - CoreData 2.xcdatamodel + CoreData 3.xcdatamodel diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData 2.xcdatamodel/contents b/CoreDataStack/CoreData.xcdatamodeld/CoreData 2.xcdatamodel/contents index 6d576ca15..f4a7b8016 100644 --- a/CoreDataStack/CoreData.xcdatamodeld/CoreData 2.xcdatamodel/contents +++ b/CoreDataStack/CoreData.xcdatamodeld/CoreData 2.xcdatamodel/contents @@ -1,5 +1,5 @@ - + diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents b/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents new file mode 100644 index 000000000..cba342dfe --- /dev/null +++ b/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CoreDataStack/Entity/App/Feed.swift b/CoreDataStack/Entity/App/Feed.swift new file mode 100644 index 000000000..0a44a4093 --- /dev/null +++ b/CoreDataStack/Entity/App/Feed.swift @@ -0,0 +1,198 @@ +// +// Feed.swift +// CoreDataStack +// +// Created by MainasuK on 2022-1-11. +// + +import Foundation +import CoreData + +final public class Feed: NSManagedObject { + + @NSManaged public private(set) var acctRaw: String + // sourcery: autoGenerateProperty + public var acct: Acct { + get { + Acct(rawValue: acctRaw) ?? .none + } + set { + acctRaw = newValue.rawValue + } + } + + @NSManaged public private(set) var kindRaw: String + // sourcery: autoGenerateProperty + public var kind: Kind { + get { + Kind(rawValue: kindRaw) ?? .none + } + set { + kindRaw = newValue.rawValue + } + } + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var hasMore: Bool + // sourcery: autoUpdatableObject + @NSManaged public private(set) var isLoadingMore: Bool + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var createdAt: Date + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var updatedAt: Date + + // one-to-one relationship + @NSManaged public private(set) var status: Status? + @NSManaged public private(set) var notification: Notification? + +} + +extension Feed { + + @discardableResult + public static func insert( + into context: NSManagedObjectContext, + property: Property + ) -> Feed { + let object: Feed = context.insertObject() + object.configure(property: property) + return object + } + +} + +extension Feed: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \Feed.createdAt, ascending: false)] + } +} + +extension Feed { + + static func predicate(kind: Kind) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Feed.kindRaw), kind.rawValue) + } + + static func predicate(acct: Acct) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Feed.acctRaw), acct.rawValue) + } + + public static func predicate(kind: Kind, acct: Acct) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + Feed.predicate(kind: kind), + Feed.predicate(acct: acct) + ]) + } + + public static func nonePredicate() -> NSPredicate { + return predicate(kind: .none, acct: .none) + } + + public static func hasMorePredicate() -> NSPredicate { + return NSPredicate(format: "%K == YES", #keyPath(Feed.hasMore)) + } + + public static func hasNotificationPredicate() -> NSPredicate { + return NSPredicate(format: "%K != nil", #keyPath(Feed.notification)) + } + + public static func notificationTypePredicate(types: [MastodonNotificationType]) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + hasNotificationPredicate(), + NSPredicate( + format: "%K.%K IN %@", + #keyPath(Feed.notification), + #keyPath(Notification.typeRaw), + types.map { $0.rawValue } + ) + ]) + } + +} + +// MARK: - AutoGenerateProperty +extension Feed: AutoGenerateProperty { + // sourcery:inline:Feed.AutoGenerateProperty + + // Generated using Sourcery + // DO NOT EDIT + public struct Property { + public let acct: Acct + public let kind: Kind + public let hasMore: Bool + public let createdAt: Date + public let updatedAt: Date + + public init( + acct: Acct, + kind: Kind, + hasMore: Bool, + createdAt: Date, + updatedAt: Date + ) { + self.acct = acct + self.kind = kind + self.hasMore = hasMore + self.createdAt = createdAt + self.updatedAt = updatedAt + } + } + + public func configure(property: Property) { + self.acct = property.acct + self.kind = property.kind + self.hasMore = property.hasMore + self.createdAt = property.createdAt + self.updatedAt = property.updatedAt + } + + public func update(property: Property) { + update(hasMore: property.hasMore) + update(createdAt: property.createdAt) + update(updatedAt: property.updatedAt) + } + // sourcery:end +} + +// MARK: - AutoUpdatableObject +extension Feed: AutoUpdatableObject { + // sourcery:inline:Feed.AutoUpdatableObject + + // Generated using Sourcery + // DO NOT EDIT + public func update(hasMore: Bool) { + if self.hasMore != hasMore { + self.hasMore = hasMore + } + } + public func update(isLoadingMore: Bool) { + if self.isLoadingMore != isLoadingMore { + self.isLoadingMore = isLoadingMore + } + } + public func update(createdAt: Date) { + if self.createdAt != createdAt { + self.createdAt = createdAt + } + } + public func update(updatedAt: Date) { + if self.updatedAt != updatedAt { + self.updatedAt = updatedAt + } + } + // sourcery:end +} + +public protocol FeedIndexable { + var feeds: Set { get } + func feed(kind: Feed.Kind, acct: Feed.Acct) -> Feed? +} + +extension FeedIndexable { + public func feed(kind: Feed.Kind, acct: Feed.Acct) -> Feed? { + return feeds.first(where: { feed in + feed.kind == kind && feed.acct == acct + }) + } +} diff --git a/CoreDataStack/Entity/HomeTimelineIndex.swift b/CoreDataStack/Entity/App/HomeTimelineIndex.swift similarity index 100% rename from CoreDataStack/Entity/HomeTimelineIndex.swift rename to CoreDataStack/Entity/App/HomeTimelineIndex.swift diff --git a/CoreDataStack/Entity/Setting.swift b/CoreDataStack/Entity/App/Setting.swift similarity index 100% rename from CoreDataStack/Entity/Setting.swift rename to CoreDataStack/Entity/App/Setting.swift diff --git a/CoreDataStack/Entity/Attachment.swift b/CoreDataStack/Entity/Attachment.swift deleted file mode 100644 index f3f5d262d..000000000 --- a/CoreDataStack/Entity/Attachment.swift +++ /dev/null @@ -1,126 +0,0 @@ -// -// Attachment.swift -// CoreDataStack -// -// Created by MainasuK Cirno on 2021-2-23. -// - -import CoreData -import Foundation - -public final class Attachment: NSManagedObject { - public typealias ID = String - - @NSManaged public private(set) var id: ID - @NSManaged public private(set) var domain: String - @NSManaged public private(set) var typeRaw: String - @NSManaged public private(set) var url: String - @NSManaged public private(set) var previewURL: String? - - @NSManaged public private(set) var remoteURL: String? - @NSManaged public private(set) var metaData: Data? - @NSManaged public private(set) var textURL: String? - @NSManaged public private(set) var descriptionString: String? - @NSManaged public private(set) var blurhash: String? - - @NSManaged public private(set) var createdAt: Date - @NSManaged public private(set) var updatedAt: Date - @NSManaged public private(set) var index: NSNumber - - // many-to-one relationship - @NSManaged public private(set) var status: Status? - -} - -public extension Attachment { - - override func awakeFromInsert() { - super.awakeFromInsert() - setPrimitiveValue(Date(), forKey: #keyPath(Attachment.createdAt)) - } - - @discardableResult - static func insert( - into context: NSManagedObjectContext, - property: Property - ) -> Attachment { - let attachment: Attachment = context.insertObject() - - attachment.domain = property.domain - attachment.index = property.index - - attachment.id = property.id - attachment.typeRaw = property.typeRaw - attachment.url = property.url - attachment.previewURL = property.previewURL - - attachment.remoteURL = property.remoteURL - attachment.metaData = property.metaData - attachment.textURL = property.textURL - attachment.descriptionString = property.descriptionString - attachment.blurhash = property.blurhash - - attachment.updatedAt = property.networkDate - - return attachment - } - - func didUpdate(at networkDate: Date) { - self.updatedAt = networkDate - } - -} - -public extension Attachment { - struct Property { - public let domain: String - public let index: NSNumber - - public let id: ID - public let typeRaw: String - public let url: String - - public let previewURL: String? - public let remoteURL: String? - public let metaData: Data? - public let textURL: String? - public let descriptionString: String? - public let blurhash: String? - - public let networkDate: Date - - public init( - domain: String, - index: Int, - id: Attachment.ID, - typeRaw: String, - url: String, - previewURL: String?, - remoteURL: String?, - metaData: Data?, - textURL: String?, - descriptionString: String?, - blurhash: String?, - networkDate: Date - ) { - self.domain = domain - self.index = NSNumber(value: index) - self.id = id - self.typeRaw = typeRaw - self.url = url - self.previewURL = previewURL - self.remoteURL = remoteURL - self.metaData = metaData - self.textURL = textURL - self.descriptionString = descriptionString - self.blurhash = blurhash - self.networkDate = networkDate - } - } -} - -extension Attachment: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \Attachment.createdAt, ascending: false)] - } -} diff --git a/CoreDataStack/Entity/Application.swift b/CoreDataStack/Entity/Mastodon/Application.swift similarity index 100% rename from CoreDataStack/Entity/Application.swift rename to CoreDataStack/Entity/Mastodon/Application.swift diff --git a/CoreDataStack/Entity/DomainBlock.swift b/CoreDataStack/Entity/Mastodon/DomainBlock.swift similarity index 100% rename from CoreDataStack/Entity/DomainBlock.swift rename to CoreDataStack/Entity/Mastodon/DomainBlock.swift diff --git a/CoreDataStack/Entity/Emoji.swift b/CoreDataStack/Entity/Mastodon/Emoji.swift similarity index 100% rename from CoreDataStack/Entity/Emoji.swift rename to CoreDataStack/Entity/Mastodon/Emoji.swift diff --git a/CoreDataStack/Entity/History.swift b/CoreDataStack/Entity/Mastodon/History.swift similarity index 100% rename from CoreDataStack/Entity/History.swift rename to CoreDataStack/Entity/Mastodon/History.swift diff --git a/CoreDataStack/Entity/Instance.swift b/CoreDataStack/Entity/Mastodon/Instance.swift similarity index 100% rename from CoreDataStack/Entity/Instance.swift rename to CoreDataStack/Entity/Mastodon/Instance.swift diff --git a/CoreDataStack/Entity/MastodonAuthentication.swift b/CoreDataStack/Entity/Mastodon/MastodonAuthentication.swift similarity index 100% rename from CoreDataStack/Entity/MastodonAuthentication.swift rename to CoreDataStack/Entity/Mastodon/MastodonAuthentication.swift diff --git a/CoreDataStack/Entity/Mastodon/MastodonUser.swift b/CoreDataStack/Entity/Mastodon/MastodonUser.swift new file mode 100644 index 000000000..3def7efd8 --- /dev/null +++ b/CoreDataStack/Entity/Mastodon/MastodonUser.swift @@ -0,0 +1,604 @@ +// +// MastodonUser.swift +// CoreDataStack +// +// Created by MainasuK Cirno on 2021/1/27. +// + +import CoreData +import Foundation + +final public class MastodonUser: NSManagedObject { + + public typealias ID = String + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var identifier: ID + // sourcery: autoGenerateProperty + @NSManaged public private(set) var domain: String + // sourcery: autoGenerateProperty + @NSManaged public private(set) var id: ID + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var acct: String + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var username: String + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var displayName: String + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var avatar: String + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var avatarStatic: String? + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var header: String + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var headerStatic: String? + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var note: String? + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var url: String? + + @NSManaged public private(set) var emojisData: Data? + @NSManaged public private(set) var fieldsData: Data? + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var statusesCount: Int64 + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var followingCount: Int64 + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var followersCount: Int64 + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var locked: Bool + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var bot: Bool + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var suspended: Bool + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var createdAt: Date + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var updatedAt: Date + + // one-to-one relationship + @NSManaged public private(set) var pinnedStatus: Status? + @NSManaged public private(set) var mastodonAuthentication: MastodonAuthentication? + + // one-to-many relationship + @NSManaged public private(set) var statuses: Set + @NSManaged public private(set) var notifications: Set + @NSManaged public private(set) var searchHistories: Set + + // many-to-many relationship + @NSManaged public private(set) var favourite: Set + @NSManaged public private(set) var reblogged: Set + @NSManaged public private(set) var muted: Set + @NSManaged public private(set) var bookmarked: Set + @NSManaged public private(set) var votePollOptions: Set + @NSManaged public private(set) var votePolls: Set + // relationships + @NSManaged public private(set) var following: Set + @NSManaged public private(set) var followingBy: Set + @NSManaged public private(set) var followRequested: Set + @NSManaged public private(set) var followRequestedBy: Set + @NSManaged public private(set) var muting: Set + @NSManaged public private(set) var mutingBy: Set + @NSManaged public private(set) var blocking: Set + @NSManaged public private(set) var blockingBy: Set + @NSManaged public private(set) var endorsed: Set + @NSManaged public private(set) var endorsedBy: Set + @NSManaged public private(set) var domainBlocking: Set + @NSManaged public private(set) var domainBlockingBy: Set + +} + +extension MastodonUser { + // sourcery: autoUpdatableObject, autoGenerateProperty + @objc public var emojis: [MastodonEmoji] { + get { + let keyPath = #keyPath(MastodonUser.emojis) + willAccessValue(forKey: keyPath) + let _data = primitiveValue(forKey: keyPath) as? Data + didAccessValue(forKey: keyPath) + do { + guard let data = _data else { return [] } + let emojis = try JSONDecoder().decode([MastodonEmoji].self, from: data) + return emojis + } catch { + assertionFailure(error.localizedDescription) + return [] + } + } + set { + let keyPath = #keyPath(MastodonUser.emojis) + let data = try? JSONEncoder().encode(newValue) + willChangeValue(forKey: keyPath) + setPrimitiveValue(data, forKey: keyPath) + didChangeValue(forKey: keyPath) + } + } + + // sourcery: autoUpdatableObject, autoGenerateProperty + @objc public var fields: [MastodonField] { + get { + let keyPath = #keyPath(MastodonUser.fields) + willAccessValue(forKey: keyPath) + let _data = primitiveValue(forKey: keyPath) as? Data + didAccessValue(forKey: keyPath) + do { + guard let data = _data else { return [] } + let fields = try JSONDecoder().decode([MastodonField].self, from: data) + return fields + } catch { + assertionFailure(error.localizedDescription) + return [] + } + } + set { + let keyPath = #keyPath(MastodonUser.fields) + let data = try? JSONEncoder().encode(newValue) + willChangeValue(forKey: keyPath) + setPrimitiveValue(data, forKey: keyPath) + didChangeValue(forKey: keyPath) + } + } +} + +extension MastodonUser { + + @discardableResult + public static func insert( + into context: NSManagedObjectContext, + property: Property + ) -> MastodonUser { + let object: MastodonUser = context.insertObject() + object.configure(property: property) + return object + } + +} + +extension MastodonUser: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \MastodonUser.createdAt, ascending: false)] + } +} + +extension MastodonUser { + + static func predicate(domain: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(MastodonUser.domain), domain) + } + + static func predicate(id: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(MastodonUser.id), id) + } + + public static func predicate(domain: String, id: String) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + MastodonUser.predicate(domain: domain), + MastodonUser.predicate(id: id) + ]) + } + + static func predicate(ids: [String]) -> NSPredicate { + return NSPredicate(format: "%K IN %@", #keyPath(MastodonUser.id), ids) + } + + public static func predicate(domain: String, ids: [String]) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + MastodonUser.predicate(domain: domain), + MastodonUser.predicate(ids: ids) + ]) + } + + static func predicate(username: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(MastodonUser.username), username) + } + + public static func predicate(domain: String, username: String) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + MastodonUser.predicate(domain: domain), + MastodonUser.predicate(username: username) + ]) + } + +} + + +extension MastodonUser { + + public func findSearchHistory( + domain: String, + userID: MastodonUser.ID + ) -> SearchHistory? { + return searchHistories.first { searchHistory in + return searchHistory.domain == domain + && searchHistory.userID == userID + } + } + + public func findSearchHistory(for user: MastodonUser) -> SearchHistory? { + return searchHistories.first { searchHistory in + return searchHistory.domain == user.domain + && searchHistory.userID == user.id + } + } + +} + +// MARK: - AutoGenerateProperty +extension MastodonUser: AutoGenerateProperty { + // sourcery:inline:MastodonUser.AutoGenerateProperty + + // Generated using Sourcery + // DO NOT EDIT + public struct Property { + public let identifier: ID + public let domain: String + public let id: ID + public let acct: String + public let username: String + public let displayName: String + public let avatar: String + public let avatarStatic: String? + public let header: String + public let headerStatic: String? + public let note: String? + public let url: String? + public let statusesCount: Int64 + public let followingCount: Int64 + public let followersCount: Int64 + public let locked: Bool + public let bot: Bool + public let suspended: Bool + public let createdAt: Date + public let updatedAt: Date + public let emojis: [MastodonEmoji] + public let fields: [MastodonField] + + public init( + identifier: ID, + domain: String, + id: ID, + acct: String, + username: String, + displayName: String, + avatar: String, + avatarStatic: String?, + header: String, + headerStatic: String?, + note: String?, + url: String?, + statusesCount: Int64, + followingCount: Int64, + followersCount: Int64, + locked: Bool, + bot: Bool, + suspended: Bool, + createdAt: Date, + updatedAt: Date, + emojis: [MastodonEmoji], + fields: [MastodonField] + ) { + self.identifier = identifier + self.domain = domain + self.id = id + self.acct = acct + self.username = username + self.displayName = displayName + self.avatar = avatar + self.avatarStatic = avatarStatic + self.header = header + self.headerStatic = headerStatic + self.note = note + self.url = url + self.statusesCount = statusesCount + self.followingCount = followingCount + self.followersCount = followersCount + self.locked = locked + self.bot = bot + self.suspended = suspended + self.createdAt = createdAt + self.updatedAt = updatedAt + self.emojis = emojis + self.fields = fields + } + } + + public func configure(property: Property) { + self.identifier = property.identifier + self.domain = property.domain + self.id = property.id + self.acct = property.acct + self.username = property.username + self.displayName = property.displayName + self.avatar = property.avatar + self.avatarStatic = property.avatarStatic + self.header = property.header + self.headerStatic = property.headerStatic + self.note = property.note + self.url = property.url + self.statusesCount = property.statusesCount + self.followingCount = property.followingCount + self.followersCount = property.followersCount + self.locked = property.locked + self.bot = property.bot + self.suspended = property.suspended + self.createdAt = property.createdAt + self.updatedAt = property.updatedAt + self.emojis = property.emojis + self.fields = property.fields + } + + public func update(property: Property) { + update(acct: property.acct) + update(username: property.username) + update(displayName: property.displayName) + update(avatar: property.avatar) + update(avatarStatic: property.avatarStatic) + update(header: property.header) + update(headerStatic: property.headerStatic) + update(note: property.note) + update(url: property.url) + update(statusesCount: property.statusesCount) + update(followingCount: property.followingCount) + update(followersCount: property.followersCount) + update(locked: property.locked) + update(bot: property.bot) + update(suspended: property.suspended) + update(createdAt: property.createdAt) + update(updatedAt: property.updatedAt) + update(emojis: property.emojis) + update(fields: property.fields) + } + // sourcery:end +} + +//extension MastodonUser { +// public struct Property { +// public let identifier: String +// public let domain: String +// +// public let id: String +// public let acct: String +// public let username: String +// public let displayName: String +// public let avatar: String +// public let avatarStatic: String? +// public let header: String +// public let headerStatic: String? +// public let note: String? +// public let url: String? +// public let emojisData: Data? +// public let fieldsData: Data? +// public let statusesCount: Int +// public let followingCount: Int +// public let followersCount: Int +// public let locked: Bool +// public let bot: Bool? +// public let suspended: Bool? +// +// public let createdAt: Date +// public let networkDate: Date +// +// public init( +// id: String, +// domain: String, +// acct: String, +// username: String, +// displayName: String, +// avatar: String, +// avatarStatic: String?, +// header: String, +// headerStatic: String?, +// note: String?, +// url: String?, +// emojisData: Data?, +// fieldsData: Data?, +// statusesCount: Int, +// followingCount: Int, +// followersCount: Int, +// locked: Bool, +// bot: Bool?, +// suspended: Bool?, +// createdAt: Date, +// networkDate: Date +// ) { +// self.identifier = id + "@" + domain +// self.domain = domain +// self.id = id +// self.acct = acct +// self.username = username +// self.displayName = displayName +// self.avatar = avatar +// self.avatarStatic = avatarStatic +// self.header = header +// self.headerStatic = headerStatic +// self.note = note +// self.url = url +// self.emojisData = emojisData +// self.fieldsData = fieldsData +// self.statusesCount = statusesCount +// self.followingCount = followingCount +// self.followersCount = followersCount +// self.locked = locked +// self.bot = bot +// self.suspended = suspended +// self.createdAt = createdAt +// self.networkDate = networkDate +// } +// } +//} + +// MARK: - AutoUpdatableObject +extension MastodonUser: AutoUpdatableObject { + // sourcery:inline:MastodonUser.AutoUpdatableObject + + // Generated using Sourcery + // DO NOT EDIT + public func update(acct: String) { + if self.acct != acct { + self.acct = acct + } + } + public func update(username: String) { + if self.username != username { + self.username = username + } + } + public func update(displayName: String) { + if self.displayName != displayName { + self.displayName = displayName + } + } + public func update(avatar: String) { + if self.avatar != avatar { + self.avatar = avatar + } + } + public func update(avatarStatic: String?) { + if self.avatarStatic != avatarStatic { + self.avatarStatic = avatarStatic + } + } + public func update(header: String) { + if self.header != header { + self.header = header + } + } + public func update(headerStatic: String?) { + if self.headerStatic != headerStatic { + self.headerStatic = headerStatic + } + } + public func update(note: String?) { + if self.note != note { + self.note = note + } + } + public func update(url: String?) { + if self.url != url { + self.url = url + } + } + public func update(statusesCount: Int64) { + if self.statusesCount != statusesCount { + self.statusesCount = statusesCount + } + } + public func update(followingCount: Int64) { + if self.followingCount != followingCount { + self.followingCount = followingCount + } + } + public func update(followersCount: Int64) { + if self.followersCount != followersCount { + self.followersCount = followersCount + } + } + public func update(locked: Bool) { + if self.locked != locked { + self.locked = locked + } + } + public func update(bot: Bool) { + if self.bot != bot { + self.bot = bot + } + } + public func update(suspended: Bool) { + if self.suspended != suspended { + self.suspended = suspended + } + } + public func update(createdAt: Date) { + if self.createdAt != createdAt { + self.createdAt = createdAt + } + } + public func update(updatedAt: Date) { + if self.updatedAt != updatedAt { + self.updatedAt = updatedAt + } + } + public func update(emojis: [MastodonEmoji]) { + if self.emojis != emojis { + self.emojis = emojis + } + } + public func update(fields: [MastodonField]) { + if self.fields != fields { + self.fields = fields + } + } + // sourcery:end + + public func update(isFollowing: Bool, by mastodonUser: MastodonUser) { + if isFollowing { + if !self.followingBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.followingBy)).add(mastodonUser) + } + } else { + if self.followingBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.followingBy)).remove(mastodonUser) + } + } + } + public func update(isFollowRequested: Bool, by mastodonUser: MastodonUser) { + if isFollowRequested { + if !self.followRequestedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.followRequestedBy)).add(mastodonUser) + } + } else { + if self.followRequestedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.followRequestedBy)).remove(mastodonUser) + } + } + } + public func update(isMuting: Bool, by mastodonUser: MastodonUser) { + if isMuting { + if !self.mutingBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.mutingBy)).add(mastodonUser) + } + } else { + if self.mutingBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.mutingBy)).remove(mastodonUser) + } + } + } + public func update(isBlocking: Bool, by mastodonUser: MastodonUser) { + if isBlocking { + if !self.blockingBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.blockingBy)).add(mastodonUser) + } + } else { + if self.blockingBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.blockingBy)).remove(mastodonUser) + } + } + } + public func update(isEndorsed: Bool, by mastodonUser: MastodonUser) { + if isEndorsed { + if !self.endorsedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.endorsedBy)).add(mastodonUser) + } + } else { + if self.endorsedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.endorsedBy)).remove(mastodonUser) + } + } + } + public func update(isDomainBlocking: Bool, by mastodonUser: MastodonUser) { + if isDomainBlocking { + if !self.domainBlockingBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.domainBlockingBy)).add(mastodonUser) + } + } else { + if self.domainBlockingBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(MastodonUser.domainBlockingBy)).remove(mastodonUser) + } + } + } + +} diff --git a/CoreDataStack/Entity/Mastodon/Notification.swift b/CoreDataStack/Entity/Mastodon/Notification.swift new file mode 100644 index 000000000..85019b0dc --- /dev/null +++ b/CoreDataStack/Entity/Mastodon/Notification.swift @@ -0,0 +1,207 @@ +// +// Notification.swift +// CoreDataStack +// +// Created by sxiaojian on 2021/4/13. +// + +import Foundation +import CoreData + +public final class Notification: NSManagedObject { + public typealias ID = String + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var id: ID + // sourcery: autoGenerateProperty + @NSManaged public private(set) var typeRaw: String + // sourcery: autoGenerateProperty + @NSManaged public private(set) var domain: String + // sourcery: autoGenerateProperty + @NSManaged public private(set) var userID: String + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var createAt: Date + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var updatedAt: Date + + // one-to-one relationship + // sourcery: autoGenerateRelationship + @NSManaged public private(set) var account: MastodonUser + // sourcery: autoGenerateRelationship + @NSManaged public private(set) var status: Status? + + // many-to-one relationship + @NSManaged public private(set) var feeds: Set + +} + +extension Notification: FeedIndexable { } + +extension Notification { + @discardableResult + public static func insert( + into context: NSManagedObjectContext, + property: Property, + relationship: Relationship + ) -> Notification { + let object: Notification = context.insertObject() + + object.configure(property: property) + object.configure(relationship: relationship) + + return object + } +} + +extension Notification: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \Notification.createAt, ascending: false)] + } +} + +extension Notification { + static func predicate(domain: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Notification.domain), domain) + } + + static func predicate(userID: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Notification.userID), userID) + } + + static func predicate(id: ID) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Notification.id), id) + } + + static func predicate(typeRaw: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Notification.typeRaw), typeRaw) + } + + public static func predicate( + domain: String, + userID: String, + id: ID + ) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + Notification.predicate(domain: domain), + Notification.predicate(userID: userID), + Notification.predicate(id: id) + ]) + } + + public static func predicate( + domain: String, + userID: String, + typeRaw: String? = nil + ) -> NSPredicate { + if let typeRaw = typeRaw { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + Notification.predicate(domain: domain), + Notification.predicate(typeRaw: typeRaw), + Notification.predicate(userID: userID), + ]) + } else { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + Notification.predicate(domain: domain), + Notification.predicate(userID: userID) + ]) + } + } + + public static func predicate(validTypesRaws types: [String]) -> NSPredicate { + return NSPredicate(format: "%K IN %@", #keyPath(Notification.typeRaw), types) + } + +} + +// MARK: - AutoGenerateProperty +extension Notification: AutoGenerateProperty { + // sourcery:inline:Notification.AutoGenerateProperty + + // Generated using Sourcery + // DO NOT EDIT + public struct Property { + public let id: ID + public let typeRaw: String + public let domain: String + public let userID: String + public let createAt: Date + public let updatedAt: Date + + public init( + id: ID, + typeRaw: String, + domain: String, + userID: String, + createAt: Date, + updatedAt: Date + ) { + self.id = id + self.typeRaw = typeRaw + self.domain = domain + self.userID = userID + self.createAt = createAt + self.updatedAt = updatedAt + } + } + + public func configure(property: Property) { + self.id = property.id + self.typeRaw = property.typeRaw + self.domain = property.domain + self.userID = property.userID + self.createAt = property.createAt + self.updatedAt = property.updatedAt + } + + public func update(property: Property) { + update(updatedAt: property.updatedAt) + } + // sourcery:end +} + +// MARK: - AutoGenerateRelationship +extension Notification: AutoGenerateRelationship { + // sourcery:inline:Notification.AutoGenerateRelationship + + // Generated using Sourcery + // DO NOT EDIT + public struct Relationship { + public let account: MastodonUser + public let status: Status? + + public init( + account: MastodonUser, + status: Status? + ) { + self.account = account + self.status = status + } + } + + public func configure(relationship: Relationship) { + self.account = relationship.account + self.status = relationship.status + } + // sourcery:end +} + +// MARK: - AutoUpdatableObject +extension Notification: AutoUpdatableObject { + // sourcery:inline:Notification.AutoUpdatableObject + + // Generated using Sourcery + // DO NOT EDIT + public func update(updatedAt: Date) { + if self.updatedAt != updatedAt { + self.updatedAt = updatedAt + } + } + // sourcery:end +} + +extension Notification { + public func attach(feed: Feed) { + mutableSetValue(forKey: #keyPath(Notification.feeds)).add(feed) + } +} diff --git a/CoreDataStack/Entity/Mastodon/Poll.swift b/CoreDataStack/Entity/Mastodon/Poll.swift new file mode 100644 index 000000000..a237f5399 --- /dev/null +++ b/CoreDataStack/Entity/Mastodon/Poll.swift @@ -0,0 +1,326 @@ +// +// Poll.swift +// CoreDataStack +// +// Created by MainasuK Cirno on 2021-3-2. +// + +import Foundation +import CoreData + +public final class Poll: NSManagedObject { + public typealias ID = String + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var domain: String + // sourcery: autoGenerateProperty + @NSManaged public private(set) var id: ID + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var expiresAt: Date? + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var expired: Bool + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var multiple: Bool + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var votesCount: Int64 + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var votersCount: Int64 + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var createdAt: Date + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var updatedAt: Date + + // sourcery: autoUpdatableObject + @NSManaged public private(set) var isVoting: Bool + + // one-to-one relationship + @NSManaged public private(set) var status: Status + + // one-to-many relationship + @NSManaged public private(set) var options: Set + + // many-to-many relationship + @NSManaged public private(set) var votedBy: Set? +} + +extension Poll { + + @discardableResult + public static func insert( + into context: NSManagedObjectContext, + property: Property + ) -> Poll { + let object: Poll = context.insertObject() + + object.configure(property: property) + + return object + } + +} + +extension Poll: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \Poll.createdAt, ascending: false)] + } +} + +extension Poll { + static func predicate(domain: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Poll.domain), domain) + } + + static func predicate(id: ID) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Poll.id), id) + } + + static func predicate(ids: [ID]) -> NSPredicate { + return NSPredicate(format: "%K IN %@", #keyPath(Poll.id), ids) + } + + public static func predicate(domain: String, id: ID) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + predicate(domain: domain), + predicate(id: id) + ]) + } + + public static func predicate(domain: String, ids: [ID]) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + predicate(domain: domain), + predicate(ids: ids) + ]) + } +} + +//extension Poll { +// +// public override func awakeFromInsert() { +// super.awakeFromInsert() +// setPrimitiveValue(Date(), forKey: #keyPath(Poll.createdAt)) +// } +// +// @discardableResult +// public static func insert( +// into context: NSManagedObjectContext, +// property: Property, +// votedBy: MastodonUser?, +// options: [PollOption] +// ) -> Poll { +// let poll: Poll = context.insertObject() +// +// poll.id = property.id +// poll.expiresAt = property.expiresAt +// poll.expired = property.expired +// poll.multiple = property.multiple +// poll.votesCount = property.votesCount +// poll.votersCount = property.votersCount +// +// +// poll.updatedAt = property.networkDate +// +// if let votedBy = votedBy { +// poll.mutableSetValue(forKey: #keyPath(Poll.votedBy)).add(votedBy) +// } +// poll.mutableSetValue(forKey: #keyPath(Poll.options)).addObjects(from: options) +// +// return poll +// } +// +// public func update(expiresAt: Date?) { +// if self.expiresAt != expiresAt { +// self.expiresAt = expiresAt +// } +// } +// +// public func update(expired: Bool) { +// if self.expired != expired { +// self.expired = expired +// } +// } +// +// public func update(votesCount: Int) { +// if self.votesCount.intValue != votesCount { +// self.votesCount = NSNumber(value: votesCount) +// } +// } +// +// public func update(votersCount: Int?) { +// if self.votersCount?.intValue != votersCount { +// self.votersCount = votersCount.flatMap { NSNumber(value: $0) } +// } +// } +// +// public func update(voted: Bool, by: MastodonUser) { +// if voted { +// if !(votedBy ?? Set()).contains(by) { +// mutableSetValue(forKey: #keyPath(Poll.votedBy)).add(by) +// } +// } else { +// if (votedBy ?? Set()).contains(by) { +// mutableSetValue(forKey: #keyPath(Poll.votedBy)).remove(by) +// } +// } +// } +// +// public func didUpdate(at networkDate: Date) { +// self.updatedAt = networkDate +// } +// +//} + +//extension Poll { +// public struct Property { +// public let id: ID +// public let expiresAt: Date? +// public let expired: Bool +// public let multiple: Bool +// public let votesCount: NSNumber +// public let votersCount: NSNumber? +// +// public let networkDate: Date +// +// public init( +// id: Poll.ID, +// expiresAt: Date?, +// expired: Bool, +// multiple: Bool, +// votesCount: Int, +// votersCount: Int?, +// networkDate: Date +// ) { +// self.id = id +// self.expiresAt = expiresAt +// self.expired = expired +// self.multiple = multiple +// self.votesCount = NSNumber(value: votesCount) +// self.votersCount = votersCount.flatMap { NSNumber(value: $0) } +// self.networkDate = networkDate +// } +// } +//} + +// MARK: - AutoGenerateProperty +extension Poll: AutoGenerateProperty { + // sourcery:inline:Poll.AutoGenerateProperty + + // Generated using Sourcery + // DO NOT EDIT + public struct Property { + public let domain: String + public let id: ID + public let expiresAt: Date? + public let expired: Bool + public let multiple: Bool + public let votesCount: Int64 + public let votersCount: Int64 + public let createdAt: Date + public let updatedAt: Date + + public init( + domain: String, + id: ID, + expiresAt: Date?, + expired: Bool, + multiple: Bool, + votesCount: Int64, + votersCount: Int64, + createdAt: Date, + updatedAt: Date + ) { + self.domain = domain + self.id = id + self.expiresAt = expiresAt + self.expired = expired + self.multiple = multiple + self.votesCount = votesCount + self.votersCount = votersCount + self.createdAt = createdAt + self.updatedAt = updatedAt + } + } + + public func configure(property: Property) { + self.domain = property.domain + self.id = property.id + self.expiresAt = property.expiresAt + self.expired = property.expired + self.multiple = property.multiple + self.votesCount = property.votesCount + self.votersCount = property.votersCount + self.createdAt = property.createdAt + self.updatedAt = property.updatedAt + } + + public func update(property: Property) { + update(expiresAt: property.expiresAt) + update(expired: property.expired) + update(votesCount: property.votesCount) + update(votersCount: property.votersCount) + update(updatedAt: property.updatedAt) + } + // sourcery:end + +} + +// MARK: - AutoUpdatableObject +extension Poll: AutoUpdatableObject { + // sourcery:inline:Poll.AutoUpdatableObject + + // Generated using Sourcery + // DO NOT EDIT + public func update(expiresAt: Date?) { + if self.expiresAt != expiresAt { + self.expiresAt = expiresAt + } + } + public func update(expired: Bool) { + if self.expired != expired { + self.expired = expired + } + } + public func update(votesCount: Int64) { + if self.votesCount != votesCount { + self.votesCount = votesCount + } + } + public func update(votersCount: Int64) { + if self.votersCount != votersCount { + self.votersCount = votersCount + } + } + public func update(updatedAt: Date) { + if self.updatedAt != updatedAt { + self.updatedAt = updatedAt + } + } + public func update(isVoting: Bool) { + if self.isVoting != isVoting { + self.isVoting = isVoting + } + } + // sourcery:end + + public func update(voted: Bool, by: MastodonUser) { + if voted { + if !(votedBy ?? Set()).contains(by) { + mutableSetValue(forKey: #keyPath(Poll.votedBy)).add(by) + } + } else { + if (votedBy ?? Set()).contains(by) { + mutableSetValue(forKey: #keyPath(Poll.votedBy)).remove(by) + } + } + } + + public func attach(options: [PollOption]) { + for option in options { + guard !self.options.contains(option) else { continue } + self.mutableSetValue(forKey: #keyPath(Poll.options)).add(option) + } + } +} diff --git a/CoreDataStack/Entity/Mastodon/PollOption.swift b/CoreDataStack/Entity/Mastodon/PollOption.swift new file mode 100644 index 000000000..2799dd0a0 --- /dev/null +++ b/CoreDataStack/Entity/Mastodon/PollOption.swift @@ -0,0 +1,199 @@ +// +// PollOption.swift +// CoreDataStack +// +// Created by MainasuK Cirno on 2021-3-2. +// + +import Foundation +import CoreData + +public final class PollOption: NSManagedObject { + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var index: Int64 + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var title: String + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var votesCount: Int64 + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var createdAt: Date + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var updatedAt: Date + + // sourcery: autoUpdatableObject + @NSManaged public private(set) var isSelected: Bool + + // many-to-one relationship + @NSManaged public private(set) var poll: Poll + + // many-to-many relationship + @NSManaged public private(set) var votedBy: Set? +} + + +extension PollOption { + + @discardableResult + public static func insert( + into context: NSManagedObjectContext, + property: Property + ) -> PollOption { + let object: PollOption = context.insertObject() + + object.configure(property: property) + + return object + } + +} + +extension PollOption: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \PollOption.createdAt, ascending: false)] + } +} + +//extension PollOption { +// +// public override func awakeFromInsert() { +// super.awakeFromInsert() +// setPrimitiveValue(Date(), forKey: #keyPath(PollOption.createdAt)) +// } +// +// @discardableResult +// public static func insert( +// into context: NSManagedObjectContext, +// property: Property, +// votedBy: MastodonUser? +// ) -> PollOption { +// let option: PollOption = context.insertObject() +// +// option.index = property.index +// option.title = property.title +// option.votesCount = property.votesCount +// option.updatedAt = property.networkDate +// +// if let votedBy = votedBy { +// option.mutableSetValue(forKey: #keyPath(PollOption.votedBy)).add(votedBy) +// } +// +// return option +// } +// +// public func update(votesCount: Int?) { +// if self.votesCount?.intValue != votesCount { +// self.votesCount = votesCount.flatMap { NSNumber(value: $0) } +// } +// } +// +// public func didUpdate(at networkDate: Date) { +// self.updatedAt = networkDate +// } +// +//} + +//extension PollOption { +// public struct Property { +// public let index: NSNumber +// public let title: String +// public let votesCount: NSNumber? +// +// public let networkDate: Date +// +// public init(index: Int, title: String, votesCount: Int?, networkDate: Date) { +// self.index = NSNumber(value: index) +// self.title = title +// self.votesCount = votesCount.flatMap { NSNumber(value: $0) } +// self.networkDate = networkDate +// } +// } +//} +// + +// MARK: - AutoGenerateProperty +extension PollOption: AutoGenerateProperty { + // sourcery:inline:PollOption.AutoGenerateProperty + + // Generated using Sourcery + // DO NOT EDIT + public struct Property { + public let index: Int64 + public let title: String + public let votesCount: Int64 + public let createdAt: Date + public let updatedAt: Date + + public init( + index: Int64, + title: String, + votesCount: Int64, + createdAt: Date, + updatedAt: Date + ) { + self.index = index + self.title = title + self.votesCount = votesCount + self.createdAt = createdAt + self.updatedAt = updatedAt + } + } + + public func configure(property: Property) { + self.index = property.index + self.title = property.title + self.votesCount = property.votesCount + self.createdAt = property.createdAt + self.updatedAt = property.updatedAt + } + + public func update(property: Property) { + update(title: property.title) + update(votesCount: property.votesCount) + update(updatedAt: property.updatedAt) + } + // sourcery:end +} + +// MARK: - AutoUpdatableObject +extension PollOption: AutoUpdatableObject { + // sourcery:inline:PollOption.AutoUpdatableObject + + // Generated using Sourcery + // DO NOT EDIT + public func update(title: String) { + if self.title != title { + self.title = title + } + } + public func update(votesCount: Int64) { + if self.votesCount != votesCount { + self.votesCount = votesCount + } + } + public func update(updatedAt: Date) { + if self.updatedAt != updatedAt { + self.updatedAt = updatedAt + } + } + public func update(isSelected: Bool) { + if self.isSelected != isSelected { + self.isSelected = isSelected + } + } + // sourcery:end + + public func update(voted: Bool, by: MastodonUser) { + if voted { + if !(self.votedBy ?? Set()).contains(by) { + self.mutableSetValue(forKey: #keyPath(PollOption.votedBy)).add(by) + } + } else { + if (self.votedBy ?? Set()).contains(by) { + self.mutableSetValue(forKey: #keyPath(PollOption.votedBy)).remove(by) + } + } + } +} diff --git a/CoreDataStack/Entity/PrivateNote.swift b/CoreDataStack/Entity/Mastodon/PrivateNote.swift similarity index 100% rename from CoreDataStack/Entity/PrivateNote.swift rename to CoreDataStack/Entity/Mastodon/PrivateNote.swift diff --git a/CoreDataStack/Entity/Mastodon/SearchHistory.swift b/CoreDataStack/Entity/Mastodon/SearchHistory.swift new file mode 100644 index 000000000..c3c6d28c3 --- /dev/null +++ b/CoreDataStack/Entity/Mastodon/SearchHistory.swift @@ -0,0 +1,158 @@ +// +// SearchHistory.swift +// CoreDataStack +// +// Created by sxiaojian on 2021/4/7. +// + +import Foundation +import CoreData + +public final class SearchHistory: NSManagedObject { + public typealias ID = UUID + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var identifier: ID + // sourcery: autoGenerateProperty + @NSManaged public private(set) var domain: String + // sourcery: autoGenerateProperty + @NSManaged public private(set) var userID: MastodonUser.ID + // sourcery: autoGenerateProperty + @NSManaged public private(set) var createAt: Date + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var updatedAt: Date + + // many-to-one relationship + // sourcery: autoGenerateRelationship + @NSManaged public private(set) var account: MastodonUser? + // sourcery: autoGenerateRelationship + @NSManaged public private(set) var hashtag: Tag? + // sourcery: autoGenerateRelationship + @NSManaged public private(set) var status: Status? + +} + +extension SearchHistory { + @discardableResult + public static func insert( + into context: NSManagedObjectContext, + property: Property, + relationship: Relationship + ) -> SearchHistory { + let object: SearchHistory = context.insertObject() + + object.configure(property: property) + object.configure(relationship: relationship) + + return object + } +} + +extension SearchHistory: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \SearchHistory.updatedAt, ascending: false)] + } +} + +extension SearchHistory { + static func predicate(domain: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(SearchHistory.domain), domain) + } + + static func predicate(userID: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(SearchHistory.userID), userID) + } + + public static func predicate(domain: String, userID: String) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + predicate(domain: domain), + predicate(userID: userID) + ]) + } +} + +// MARK: - AutoGenerateProperty +extension SearchHistory: AutoGenerateProperty { + // sourcery:inline:SearchHistory.AutoGenerateProperty + + // Generated using Sourcery + // DO NOT EDIT + public struct Property { + public let identifier: ID + public let domain: String + public let userID: MastodonUser.ID + public let createAt: Date + public let updatedAt: Date + + public init( + identifier: ID, + domain: String, + userID: MastodonUser.ID, + createAt: Date, + updatedAt: Date + ) { + self.identifier = identifier + self.domain = domain + self.userID = userID + self.createAt = createAt + self.updatedAt = updatedAt + } + } + + public func configure(property: Property) { + self.identifier = property.identifier + self.domain = property.domain + self.userID = property.userID + self.createAt = property.createAt + self.updatedAt = property.updatedAt + } + + public func update(property: Property) { + update(updatedAt: property.updatedAt) + } + // sourcery:end +} + +// MARK: - AutoGenerateRelationship +extension SearchHistory: AutoGenerateRelationship { + // sourcery:inline:SearchHistory.AutoGenerateRelationship + + // Generated using Sourcery + // DO NOT EDIT + public struct Relationship { + public let account: MastodonUser? + public let hashtag: Tag? + public let status: Status? + + public init( + account: MastodonUser?, + hashtag: Tag?, + status: Status? + ) { + self.account = account + self.hashtag = hashtag + self.status = status + } + } + + public func configure(relationship: Relationship) { + self.account = relationship.account + self.hashtag = relationship.hashtag + self.status = relationship.status + } + // sourcery:end +} + +// MARK: - AutoUpdatableObject +extension SearchHistory: AutoUpdatableObject { + // sourcery:inline:SearchHistory.AutoUpdatableObject + + // Generated using Sourcery + // DO NOT EDIT + public func update(updatedAt: Date) { + if self.updatedAt != updatedAt { + self.updatedAt = updatedAt + } + } + // sourcery:end +} diff --git a/CoreDataStack/Entity/Mastodon/Status.swift b/CoreDataStack/Entity/Mastodon/Status.swift new file mode 100644 index 000000000..c506536df --- /dev/null +++ b/CoreDataStack/Entity/Mastodon/Status.swift @@ -0,0 +1,802 @@ +// +// Status.swift +// CoreDataStack +// +// Created by MainasuK Cirno on 2021/1/27. +// + +import CoreData +import Foundation + +public final class Status: NSManagedObject { + public typealias ID = String + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var identifier: ID + // sourcery: autoGenerateProperty + @NSManaged public private(set) var domain: String + // sourcery: autoGenerateProperty + @NSManaged public private(set) var id: String + // sourcery: autoGenerateProperty + @NSManaged public private(set) var uri: String + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var createdAt: Date + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var content: String + + @NSManaged public private(set) var visibilityRaw: String + // sourcery: autoUpdatableObject, autoGenerateProperty + public var visibility: MastodonVisibility { + get { + let rawValue = visibilityRaw + return MastodonVisibility(rawValue: rawValue) ?? ._other(rawValue) + } + set { + visibilityRaw = newValue.rawValue + } + } + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var sensitive: Bool + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var spoilerText: String? + + @NSManaged public private(set) var application: Application? + + // Informational + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var reblogsCount: Int64 + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var favouritesCount: Int64 + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var repliesCount: Int64 + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var url: String? + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var inReplyToID: Status.ID? + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var inReplyToAccountID: MastodonUser.ID? + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var language: String? // (ISO 639 Part 1 two-letter language code) + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var text: String? + + // many-to-one relationship + // sourcery: autoGenerateRelationship + @NSManaged public private(set) var author: MastodonUser + // sourcery: autoGenerateRelationship + @NSManaged public private(set) var reblog: Status? + // sourcery: autoUpdatableObject + @NSManaged public private(set) var replyTo: Status? + + // many-to-many relationship + @NSManaged public private(set) var favouritedBy: Set + @NSManaged public private(set) var rebloggedBy: Set + @NSManaged public private(set) var mutedBy: Set + @NSManaged public private(set) var bookmarkedBy: Set + + // one-to-one relationship + @NSManaged public private(set) var pinnedBy: MastodonUser? + // sourcery: autoGenerateRelationship + @NSManaged public private(set) var poll: Poll? + + // one-to-many relationship + @NSManaged public private(set) var feeds: Set + + @NSManaged public private(set) var reblogFrom: Set +// @NSManaged public private(set) var mentions: Set? +// @NSManaged public private(set) var homeTimelineIndexes: Set? +// @NSManaged public private(set) var mediaAttachments: Set? + @NSManaged public private(set) var replyFrom: Set + @NSManaged public private(set) var notifications: Set + @NSManaged public private(set) var searchHistories: Set + + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var updatedAt: Date + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var deletedAt: Date? + // sourcery: autoUpdatableObject + @NSManaged public private(set) var revealedAt: Date? +} + +extension Status { + // sourcery: autoUpdatableObject, autoGenerateProperty + @objc public var attachments: [MastodonAttachment] { + get { + let keyPath = #keyPath(Status.attachments) + willAccessValue(forKey: keyPath) + let _data = primitiveValue(forKey: keyPath) as? Data + didAccessValue(forKey: keyPath) + do { + guard let data = _data else { return [] } + let attachments = try JSONDecoder().decode([MastodonAttachment].self, from: data) + return attachments + } catch { + assertionFailure(error.localizedDescription) + return [] + } + } + set { + let keyPath = #keyPath(Status.attachments) + let data = try? JSONEncoder().encode(newValue) + willChangeValue(forKey: keyPath) + setPrimitiveValue(data, forKey: keyPath) + didChangeValue(forKey: keyPath) + } + } + + // sourcery: autoUpdatableObject, autoGenerateProperty + @objc public var emojis: [MastodonEmoji] { + get { + let keyPath = #keyPath(Status.emojis) + willAccessValue(forKey: keyPath) + let _data = primitiveValue(forKey: keyPath) as? Data + didAccessValue(forKey: keyPath) + do { + guard let data = _data else { return [] } + let emojis = try JSONDecoder().decode([MastodonEmoji].self, from: data) + return emojis + } catch { + assertionFailure(error.localizedDescription) + return [] + } + } + set { + let keyPath = #keyPath(Status.emojis) + let data = try? JSONEncoder().encode(newValue) + willChangeValue(forKey: keyPath) + setPrimitiveValue(data, forKey: keyPath) + didChangeValue(forKey: keyPath) + } + } + + // sourcery: autoUpdatableObject, autoGenerateProperty + @objc public var mentions: [MastodonMention] { + get { + let keyPath = #keyPath(Status.mentions) + willAccessValue(forKey: keyPath) + let _data = primitiveValue(forKey: keyPath) as? Data + didAccessValue(forKey: keyPath) + do { + guard let data = _data else { return [] } + let emojis = try JSONDecoder().decode([MastodonMention].self, from: data) + return emojis + } catch { + assertionFailure(error.localizedDescription) + return [] + } + } + set { + let keyPath = #keyPath(Status.mentions) + let data = try? JSONEncoder().encode(newValue) + willChangeValue(forKey: keyPath) + setPrimitiveValue(data, forKey: keyPath) + didChangeValue(forKey: keyPath) + } + } +} + +extension Status: FeedIndexable { } + +extension Status { + + @discardableResult + public static func insert( + into context: NSManagedObjectContext, + property: Property, + relationship: Relationship + ) -> Status { + let object: Status = context.insertObject() + + object.configure(property: property) + object.configure(relationship: relationship) + + return object + } + +// @discardableResult +// public static func insert( +// into context: NSManagedObjectContext, +// property: Property, +// author: MastodonUser, +// reblog: Status?, +// application: Application?, +// replyTo: Status?, +// poll: Poll?, +// mentions: [Mention]?, +// mediaAttachments: [Attachment]?, +// favouritedBy: MastodonUser?, +// rebloggedBy: MastodonUser?, +// mutedBy: MastodonUser?, +// bookmarkedBy: MastodonUser?, +// pinnedBy: MastodonUser? +// ) -> Status { +// let status: Status = context.insertObject() +// +// status.identifier = property.identifier +// status.domain = property.domain +// +// status.id = property.id +// status.uri = property.uri +// status.createdAt = property.createdAt +// status.content = property.content +// +// status.visibility = property.visibility +// status.sensitive = property.sensitive +// status.spoilerText = property.spoilerText +// status.application = application +// +// status.emojisData = property.emojisData +// +// status.reblogsCount = property.reblogsCount +// status.favouritesCount = property.favouritesCount +// status.repliesCount = property.repliesCount +// +// status.url = property.url +// status.inReplyToID = property.inReplyToID +// status.inReplyToAccountID = property.inReplyToAccountID +// +// status.language = property.language +// status.text = property.text +// +// status.author = author +// status.reblog = reblog +// +// status.pinnedBy = pinnedBy +// status.poll = poll +// +// if let mentions = mentions { +// status.mutableSetValue(forKey: #keyPath(Status.mentions)).addObjects(from: mentions) +// } +// if let mediaAttachments = mediaAttachments { +// status.mutableSetValue(forKey: #keyPath(Status.mediaAttachments)).addObjects(from: mediaAttachments) +// } +// if let favouritedBy = favouritedBy { +// status.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).add(favouritedBy) +// } +// if let rebloggedBy = rebloggedBy { +// status.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).add(rebloggedBy) +// } +// if let mutedBy = mutedBy { +// status.mutableSetValue(forKey: #keyPath(Status.mutedBy)).add(mutedBy) +// } +// if let bookmarkedBy = bookmarkedBy { +// status.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).add(bookmarkedBy) +// } +// +// status.updatedAt = property.networkDate +// +// return status +// } +// +// public func update(emojisData: Data?) { +// if self.emojisData != emojisData { +// self.emojisData = emojisData +// } +// } +// +// public func update(reblogsCount: NSNumber) { +// if self.reblogsCount.intValue != reblogsCount.intValue { +// self.reblogsCount = reblogsCount +// } +// } +// +// public func update(favouritesCount: NSNumber) { +// if self.favouritesCount.intValue != favouritesCount.intValue { +// self.favouritesCount = favouritesCount +// } +// } +// +// public func update(repliesCount: NSNumber?) { +// guard let count = repliesCount else { +// return +// } +// if self.repliesCount?.intValue != count.intValue { +// self.repliesCount = repliesCount +// } +// } +// +// public func update(replyTo: Status?) { +// if self.replyTo != replyTo { +// self.replyTo = replyTo +// } +// } +// +// public func update(liked: Bool, by mastodonUser: MastodonUser) { +// if liked { +// if !(self.favouritedBy ?? Set()).contains(mastodonUser) { +// self.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).add(mastodonUser) +// } +// } else { +// if (self.favouritedBy ?? Set()).contains(mastodonUser) { +// self.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).remove(mastodonUser) +// } +// } +// } +// +// public func update(reblogged: Bool, by mastodonUser: MastodonUser) { +// if reblogged { +// if !(self.rebloggedBy ?? Set()).contains(mastodonUser) { +// self.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).add(mastodonUser) +// } +// } else { +// if (self.rebloggedBy ?? Set()).contains(mastodonUser) { +// self.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).remove(mastodonUser) +// } +// } +// } +// +// public func update(muted: Bool, by mastodonUser: MastodonUser) { +// if muted { +// if !(self.mutedBy ?? Set()).contains(mastodonUser) { +// self.mutableSetValue(forKey: #keyPath(Status.mutedBy)).add(mastodonUser) +// } +// } else { +// if (self.mutedBy ?? Set()).contains(mastodonUser) { +// self.mutableSetValue(forKey: #keyPath(Status.mutedBy)).remove(mastodonUser) +// } +// } +// } +// +// public func update(bookmarked: Bool, by mastodonUser: MastodonUser) { +// if bookmarked { +// if !(self.bookmarkedBy ?? Set()).contains(mastodonUser) { +// self.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).add(mastodonUser) +// } +// } else { +// if (self.bookmarkedBy ?? Set()).contains(mastodonUser) { +// self.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).remove(mastodonUser) +// } +// } +// } +// +// public func didUpdate(at networkDate: Date) { +// self.updatedAt = networkDate +// } + +} + +extension Status: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + return [NSSortDescriptor(keyPath: \Status.createdAt, ascending: false)] + } +} + +extension Status { + + static func predicate(domain: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Status.domain), domain) + } + + static func predicate(id: String) -> NSPredicate { + return NSPredicate(format: "%K == %@", #keyPath(Status.id), id) + } + + public static func predicate(domain: String, id: String) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + predicate(domain: domain), + predicate(id: id) + ]) + } + + static func predicate(ids: [String]) -> NSPredicate { + return NSPredicate(format: "%K IN %@", #keyPath(Status.id), ids) + } + + public static func predicate(domain: String, ids: [String]) -> NSPredicate { + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + predicate(domain: domain), + predicate(ids: ids) + ]) + } + + public static func notDeleted() -> NSPredicate { + return NSPredicate(format: "%K == nil", #keyPath(Status.deletedAt)) + } + + public static func deleted() -> NSPredicate { + return NSPredicate(format: "%K != nil", #keyPath(Status.deletedAt)) + } + +} + +// MARK: - AutoGenerateProperty +extension Status: AutoGenerateProperty { + // sourcery:inline:Status.AutoGenerateProperty + + // Generated using Sourcery + // DO NOT EDIT + public struct Property { + public let identifier: ID + public let domain: String + public let id: String + public let uri: String + public let createdAt: Date + public let content: String + public let visibility: MastodonVisibility + public let sensitive: Bool + public let spoilerText: String? + public let reblogsCount: Int64 + public let favouritesCount: Int64 + public let repliesCount: Int64 + public let url: String? + public let inReplyToID: Status.ID? + public let inReplyToAccountID: MastodonUser.ID? + public let language: String? + public let text: String? + public let updatedAt: Date + public let deletedAt: Date? + public let attachments: [MastodonAttachment] + public let emojis: [MastodonEmoji] + public let mentions: [MastodonMention] + + public init( + identifier: ID, + domain: String, + id: String, + uri: String, + createdAt: Date, + content: String, + visibility: MastodonVisibility, + sensitive: Bool, + spoilerText: String?, + reblogsCount: Int64, + favouritesCount: Int64, + repliesCount: Int64, + url: String?, + inReplyToID: Status.ID?, + inReplyToAccountID: MastodonUser.ID?, + language: String?, + text: String?, + updatedAt: Date, + deletedAt: Date?, + attachments: [MastodonAttachment], + emojis: [MastodonEmoji], + mentions: [MastodonMention] + ) { + self.identifier = identifier + self.domain = domain + self.id = id + self.uri = uri + self.createdAt = createdAt + self.content = content + self.visibility = visibility + self.sensitive = sensitive + self.spoilerText = spoilerText + self.reblogsCount = reblogsCount + self.favouritesCount = favouritesCount + self.repliesCount = repliesCount + self.url = url + self.inReplyToID = inReplyToID + self.inReplyToAccountID = inReplyToAccountID + self.language = language + self.text = text + self.updatedAt = updatedAt + self.deletedAt = deletedAt + self.attachments = attachments + self.emojis = emojis + self.mentions = mentions + } + } + + public func configure(property: Property) { + self.identifier = property.identifier + self.domain = property.domain + self.id = property.id + self.uri = property.uri + self.createdAt = property.createdAt + self.content = property.content + self.visibility = property.visibility + self.sensitive = property.sensitive + self.spoilerText = property.spoilerText + self.reblogsCount = property.reblogsCount + self.favouritesCount = property.favouritesCount + self.repliesCount = property.repliesCount + self.url = property.url + self.inReplyToID = property.inReplyToID + self.inReplyToAccountID = property.inReplyToAccountID + self.language = property.language + self.text = property.text + self.updatedAt = property.updatedAt + self.deletedAt = property.deletedAt + self.attachments = property.attachments + self.emojis = property.emojis + self.mentions = property.mentions + } + + public func update(property: Property) { + update(createdAt: property.createdAt) + update(content: property.content) + update(visibility: property.visibility) + update(sensitive: property.sensitive) + update(spoilerText: property.spoilerText) + update(reblogsCount: property.reblogsCount) + update(favouritesCount: property.favouritesCount) + update(repliesCount: property.repliesCount) + update(url: property.url) + update(inReplyToID: property.inReplyToID) + update(inReplyToAccountID: property.inReplyToAccountID) + update(language: property.language) + update(text: property.text) + update(updatedAt: property.updatedAt) + update(deletedAt: property.deletedAt) + update(attachments: property.attachments) + update(emojis: property.emojis) + update(mentions: property.mentions) + } + // sourcery:end +} + +// MARK: - AutoGenerateRelationship +extension Status: AutoGenerateRelationship { + // sourcery:inline:Status.AutoGenerateRelationship + + // Generated using Sourcery + // DO NOT EDIT + public struct Relationship { + public let author: MastodonUser + public let reblog: Status? + public let poll: Poll? + + public init( + author: MastodonUser, + reblog: Status?, + poll: Poll? + ) { + self.author = author + self.reblog = reblog + self.poll = poll + } + } + + public func configure(relationship: Relationship) { + self.author = relationship.author + self.reblog = relationship.reblog + self.poll = relationship.poll + } + // sourcery:end +} + +// MARK: - AutoUpdatableObject +extension Status: AutoUpdatableObject { + // sourcery:inline:Status.AutoUpdatableObject + + // Generated using Sourcery + // DO NOT EDIT + public func update(createdAt: Date) { + if self.createdAt != createdAt { + self.createdAt = createdAt + } + } + public func update(content: String) { + if self.content != content { + self.content = content + } + } + public func update(visibility: MastodonVisibility) { + if self.visibility != visibility { + self.visibility = visibility + } + } + public func update(sensitive: Bool) { + if self.sensitive != sensitive { + self.sensitive = sensitive + } + } + public func update(spoilerText: String?) { + if self.spoilerText != spoilerText { + self.spoilerText = spoilerText + } + } + public func update(reblogsCount: Int64) { + if self.reblogsCount != reblogsCount { + self.reblogsCount = reblogsCount + } + } + public func update(favouritesCount: Int64) { + if self.favouritesCount != favouritesCount { + self.favouritesCount = favouritesCount + } + } + public func update(repliesCount: Int64) { + if self.repliesCount != repliesCount { + self.repliesCount = repliesCount + } + } + public func update(url: String?) { + if self.url != url { + self.url = url + } + } + public func update(inReplyToID: Status.ID?) { + if self.inReplyToID != inReplyToID { + self.inReplyToID = inReplyToID + } + } + public func update(inReplyToAccountID: MastodonUser.ID?) { + if self.inReplyToAccountID != inReplyToAccountID { + self.inReplyToAccountID = inReplyToAccountID + } + } + public func update(language: String?) { + if self.language != language { + self.language = language + } + } + public func update(text: String?) { + if self.text != text { + self.text = text + } + } + public func update(replyTo: Status?) { + if self.replyTo != replyTo { + self.replyTo = replyTo + } + } + public func update(updatedAt: Date) { + if self.updatedAt != updatedAt { + self.updatedAt = updatedAt + } + } + public func update(deletedAt: Date?) { + if self.deletedAt != deletedAt { + self.deletedAt = deletedAt + } + } + public func update(revealedAt: Date?) { + if self.revealedAt != revealedAt { + self.revealedAt = revealedAt + } + } + public func update(attachments: [MastodonAttachment]) { + if self.attachments != attachments { + self.attachments = attachments + } + } + public func update(emojis: [MastodonEmoji]) { + if self.emojis != emojis { + self.emojis = emojis + } + } + public func update(mentions: [MastodonMention]) { + if self.mentions != mentions { + self.mentions = mentions + } + } + // sourcery:end + + public func update(liked: Bool, by mastodonUser: MastodonUser) { + if liked { + if !self.favouritedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).add(mastodonUser) + } + } else { + if self.favouritedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).remove(mastodonUser) + } + } + } + + public func update(reblogged: Bool, by mastodonUser: MastodonUser) { + if reblogged { + if !self.rebloggedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).add(mastodonUser) + } + } else { + if self.rebloggedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).remove(mastodonUser) + } + } + } + + public func update(muted: Bool, by mastodonUser: MastodonUser) { + if muted { + if !self.mutedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(Status.mutedBy)).add(mastodonUser) + } + } else { + if self.mutedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(Status.mutedBy)).remove(mastodonUser) + } + } + } + + public func update(bookmarked: Bool, by mastodonUser: MastodonUser) { + if bookmarked { + if !self.bookmarkedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).add(mastodonUser) + } + } else { + if self.bookmarkedBy.contains(mastodonUser) { + self.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).remove(mastodonUser) + } + } + } + + public func update(isReveal: Bool) { + revealedAt = isReveal ? Date() : nil + } +} + +extension Status { + public func attach(feed: Feed) { + mutableSetValue(forKey: #keyPath(Status.feeds)).add(feed) + } +} + + +//extension Status { +// public struct Property { +// +// public let identifier: ID +// public let domain: String +// +// public let id: String +// public let uri: String +// public let createdAt: Date +// public let content: String +// +// public let visibility: String? +// public let sensitive: Bool +// public let spoilerText: String? +// +// public let emojisData: Data? +// +// public let reblogsCount: NSNumber +// public let favouritesCount: NSNumber +// public let repliesCount: NSNumber? +// +// public let url: String? +// public let inReplyToID: Status.ID? +// public let inReplyToAccountID: MastodonUser.ID? +// public let language: String? // (ISO 639 Part @1 two-letter language code) +// public let text: String? +// +// public let networkDate: Date +// +// public init( +// domain: String, +// id: String, +// uri: String, +// createdAt: Date, +// content: String, +// visibility: String?, +// sensitive: Bool, +// spoilerText: String?, +// emojisData: Data?, +// reblogsCount: NSNumber, +// favouritesCount: NSNumber, +// repliesCount: NSNumber?, +// url: String?, +// inReplyToID: Status.ID?, +// inReplyToAccountID: MastodonUser.ID?, +// language: String?, +// text: String?, +// networkDate: Date +// ) { +// self.identifier = id + "@" + domain +// self.domain = domain +// self.id = id +// self.uri = uri +// self.createdAt = createdAt +// self.content = content +// self.visibility = visibility +// self.sensitive = sensitive +// self.spoilerText = spoilerText +// self.emojisData = emojisData +// self.reblogsCount = reblogsCount +// self.favouritesCount = favouritesCount +// self.repliesCount = repliesCount +// self.url = url +// self.inReplyToID = inReplyToID +// self.inReplyToAccountID = inReplyToAccountID +// self.language = language +// self.text = text +// self.networkDate = networkDate +// } +// +// } +//} +// diff --git a/CoreDataStack/Entity/Subscription.swift b/CoreDataStack/Entity/Mastodon/Subscription.swift similarity index 100% rename from CoreDataStack/Entity/Subscription.swift rename to CoreDataStack/Entity/Mastodon/Subscription.swift diff --git a/CoreDataStack/Entity/SubscriptionAlerts.swift b/CoreDataStack/Entity/Mastodon/SubscriptionAlerts.swift similarity index 100% rename from CoreDataStack/Entity/SubscriptionAlerts.swift rename to CoreDataStack/Entity/Mastodon/SubscriptionAlerts.swift diff --git a/CoreDataStack/Entity/Mastodon/Tag.swift b/CoreDataStack/Entity/Mastodon/Tag.swift new file mode 100644 index 000000000..b5c335db3 --- /dev/null +++ b/CoreDataStack/Entity/Mastodon/Tag.swift @@ -0,0 +1,218 @@ +// +// Tag.swift +// CoreDataStack +// +// Created by sxiaojian on 2021/2/1. +// + +import CoreData +import Foundation + +public final class Tag: NSManagedObject { + public typealias ID = UUID + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var identifier: ID + // sourcery: autoGenerateProperty + @NSManaged public private(set) var domain: String + // sourcery: autoGenerateProperty + @NSManaged public private(set) var createAt: Date + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var updatedAt: Date + + // sourcery: autoGenerateProperty + @NSManaged public private(set) var name: String + // sourcery: autoUpdatableObject, autoGenerateProperty + @NSManaged public private(set) var url: String + + // one-to-one relationship + + // many-to-many relationship + + // one-to-many relationship + @NSManaged public private(set) var searchHistories: Set +} + +extension Tag { + // sourcery: autoUpdatableObject, autoGenerateProperty + @objc public var histories: [MastodonTagHistory] { + get { + let keyPath = #keyPath(Tag.histories) + willAccessValue(forKey: keyPath) + let _data = primitiveValue(forKey: keyPath) as? Data + didAccessValue(forKey: keyPath) + do { + guard let data = _data else { return [] } + let attachments = try JSONDecoder().decode([MastodonTagHistory].self, from: data) + return attachments + } catch { + assertionFailure(error.localizedDescription) + return [] + } + } + set { + let keyPath = #keyPath(Tag.histories) + let data = try? JSONEncoder().encode(newValue) + willChangeValue(forKey: keyPath) + setPrimitiveValue(data, forKey: keyPath) + didChangeValue(forKey: keyPath) + } + } +} + +extension Tag { + @discardableResult + public static func insert( + into context: NSManagedObjectContext, + property: Property + ) -> Tag { + let object: Tag = context.insertObject() + + object.configure(property: property) + + return object + } +} + + +extension Tag: Managed { + public static var defaultSortDescriptors: [NSSortDescriptor] { + [NSSortDescriptor(keyPath: \Tag.createAt, ascending: false)] + } +} + +public extension Tag { + + static func predicate(domain: String) -> NSPredicate { + NSPredicate(format: "%K == %@", #keyPath(Tag.domain), domain) + } + + static func predicate(name: String) -> NSPredicate { + NSPredicate(format: "%K == %@", #keyPath(Tag.name), name) + } + + static func predicate(domain: String, name: String) -> NSPredicate { + NSCompoundPredicate(andPredicateWithSubpredicates: [ + predicate(domain: domain), + predicate(name: name), + ]) + } +} + +// MARK: - AutoGenerateProperty +extension Tag: AutoGenerateProperty { + // sourcery:inline:Tag.AutoGenerateProperty + + // Generated using Sourcery + // DO NOT EDIT + public struct Property { + public let identifier: ID + public let domain: String + public let createAt: Date + public let updatedAt: Date + public let name: String + public let url: String + public let histories: [MastodonTagHistory] + + public init( + identifier: ID, + domain: String, + createAt: Date, + updatedAt: Date, + name: String, + url: String, + histories: [MastodonTagHistory] + ) { + self.identifier = identifier + self.domain = domain + self.createAt = createAt + self.updatedAt = updatedAt + self.name = name + self.url = url + self.histories = histories + } + } + + public func configure(property: Property) { + self.identifier = property.identifier + self.domain = property.domain + self.createAt = property.createAt + self.updatedAt = property.updatedAt + self.name = property.name + self.url = property.url + self.histories = property.histories + } + + public func update(property: Property) { + update(updatedAt: property.updatedAt) + update(url: property.url) + update(histories: property.histories) + } + // sourcery:end +} + +// MARK: - AutoUpdatableObject +extension Tag: AutoUpdatableObject { + // sourcery:inline:Tag.AutoUpdatableObject + + // Generated using Sourcery + // DO NOT EDIT + public func update(updatedAt: Date) { + if self.updatedAt != updatedAt { + self.updatedAt = updatedAt + } + } + public func update(url: String) { + if self.url != url { + self.url = url + } + } + public func update(histories: [MastodonTagHistory]) { + if self.histories != histories { + self.histories = histories + } + } + // sourcery:end +} + + +extension Tag { + + public func findSearchHistory(domain: String, userID: MastodonUser.ID) -> SearchHistory? { + return searchHistories.first { searchHistory in + return searchHistory.domain == domain + && searchHistory.userID == userID + } + } + + public func findSearchHistory(for user: MastodonUser) -> SearchHistory? { + return searchHistories.first { searchHistory in + return searchHistory.domain == user.domain + && searchHistory.userID == user.id + } + } + +} + +public extension Tag { +// func updateHistory(index: Int, day: Date, uses: String, account: String) { +// let histories = self.histories.sorted { +// $0.createAt.compare($1.createAt) == .orderedAscending +// } +// guard index < histories.count else { return } +// let history = histories[index] +// history.update(day: day) +// history.update(uses: uses) +// history.update(accounts: account) +// } +// +// func appendHistory(history: History) { +// self.mutableSetValue(forKeyPath: #keyPath(Tag.histories)).add(history) +// } +// +// func update(url: String) { +// if self.url != url { +// self.url = url +// } +// } +} diff --git a/CoreDataStack/Entity/MastodonUser.swift b/CoreDataStack/Entity/MastodonUser.swift deleted file mode 100644 index 913aa1f16..000000000 --- a/CoreDataStack/Entity/MastodonUser.swift +++ /dev/null @@ -1,407 +0,0 @@ -// -// MastodonUser.swift -// CoreDataStack -// -// Created by MainasuK Cirno on 2021/1/27. -// - -import CoreData -import Foundation - -final public class MastodonUser: NSManagedObject { - - public typealias ID = String - - @NSManaged public private(set) var identifier: ID - @NSManaged public private(set) var domain: String - - @NSManaged public private(set) var id: ID - @NSManaged public private(set) var acct: String - @NSManaged public private(set) var username: String - @NSManaged public private(set) var displayName: String - @NSManaged public private(set) var avatar: String - @NSManaged public private(set) var avatarStatic: String? - @NSManaged public private(set) var header: String - @NSManaged public private(set) var headerStatic: String? - @NSManaged public private(set) var note: String? - @NSManaged public private(set) var url: String? - - @NSManaged public private(set) var emojisData: Data? - @NSManaged public private(set) var fieldsData: Data? - - @NSManaged public private(set) var statusesCount: NSNumber - @NSManaged public private(set) var followingCount: NSNumber - @NSManaged public private(set) var followersCount: NSNumber - - @NSManaged public private(set) var locked: Bool - @NSManaged public private(set) var bot: Bool - @NSManaged public private(set) var suspended: Bool - - @NSManaged public private(set) var createdAt: Date - @NSManaged public private(set) var updatedAt: Date - - // one-to-one relationship - @NSManaged public private(set) var pinnedStatus: Status? - @NSManaged public private(set) var mastodonAuthentication: MastodonAuthentication? - - // one-to-many relationship - @NSManaged public private(set) var statuses: Set? - @NSManaged public private(set) var notifications: Set? - @NSManaged public private(set) var searchHistories: Set - - // many-to-many relationship - @NSManaged public private(set) var favourite: Set? - @NSManaged public private(set) var reblogged: Set? - @NSManaged public private(set) var muted: Set? - @NSManaged public private(set) var bookmarked: Set? - @NSManaged public private(set) var votePollOptions: Set? - @NSManaged public private(set) var votePolls: Set? - // relationships - @NSManaged public private(set) var following: Set? - @NSManaged public private(set) var followingBy: Set? - @NSManaged public private(set) var followRequested: Set? - @NSManaged public private(set) var followRequestedBy: Set? - @NSManaged public private(set) var muting: Set? - @NSManaged public private(set) var mutingBy: Set? - @NSManaged public private(set) var blocking: Set? - @NSManaged public private(set) var blockingBy: Set? - @NSManaged public private(set) var endorsed: Set? - @NSManaged public private(set) var endorsedBy: Set? - @NSManaged public private(set) var domainBlocking: Set? - @NSManaged public private(set) var domainBlockingBy: Set? - -} - -extension MastodonUser { - - @discardableResult - public static func insert( - into context: NSManagedObjectContext, - property: Property - ) -> MastodonUser { - let user: MastodonUser = context.insertObject() - - user.identifier = property.identifier - user.domain = property.domain - - user.id = property.id - user.acct = property.acct - user.username = property.username - user.displayName = property.displayName - user.avatar = property.avatar - user.avatarStatic = property.avatarStatic - user.header = property.header - user.headerStatic = property.headerStatic - user.note = property.note - user.url = property.url - user.emojisData = property.emojisData - user.fieldsData = property.fieldsData - - user.statusesCount = NSNumber(value: property.statusesCount) - user.followingCount = NSNumber(value: property.followingCount) - user.followersCount = NSNumber(value: property.followersCount) - - user.locked = property.locked - user.bot = property.bot ?? false - user.suspended = property.suspended ?? false - - // Mastodon do not provide relationship on the `Account` - // Update relationship via attribute updating interface - - user.createdAt = property.createdAt - user.updatedAt = property.networkDate - - return user - } - - - public func update(acct: String) { - if self.acct != acct { - self.acct = acct - } - } - public func update(username: String) { - if self.username != username { - self.username = username - } - } - public func update(displayName: String) { - if self.displayName != displayName { - self.displayName = displayName - } - } - public func update(avatar: String) { - if self.avatar != avatar { - self.avatar = avatar - } - } - public func update(avatarStatic: String?) { - if self.avatarStatic != avatarStatic { - self.avatarStatic = avatarStatic - } - } - public func update(header: String) { - if self.header != header { - self.header = header - } - } - public func update(headerStatic: String?) { - if self.headerStatic != headerStatic { - self.headerStatic = headerStatic - } - } - public func update(note: String?) { - if self.note != note { - self.note = note - } - } - public func update(url: String?) { - if self.url != url { - self.url = url - } - } - public func update(emojisData: Data?) { - if self.emojisData != emojisData { - self.emojisData = emojisData - } - } - public func update(fieldsData: Data?) { - if self.fieldsData != fieldsData { - self.fieldsData = fieldsData - } - } - public func update(statusesCount: Int) { - if self.statusesCount.intValue != statusesCount { - self.statusesCount = NSNumber(value: statusesCount) - } - } - public func update(followingCount: Int) { - if self.followingCount.intValue != followingCount { - self.followingCount = NSNumber(value: followingCount) - } - } - public func update(followersCount: Int) { - if self.followersCount.intValue != followersCount { - self.followersCount = NSNumber(value: followersCount) - } - } - public func update(locked: Bool) { - if self.locked != locked { - self.locked = locked - } - } - public func update(bot: Bool) { - if self.bot != bot { - self.bot = bot - } - } - public func update(suspended: Bool) { - if self.suspended != suspended { - self.suspended = suspended - } - } - - public func update(isFollowing: Bool, by mastodonUser: MastodonUser) { - if isFollowing { - if !(self.followingBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.followingBy)).add(mastodonUser) - } - } else { - if (self.followingBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.followingBy)).remove(mastodonUser) - } - } - } - public func update(isFollowRequested: Bool, by mastodonUser: MastodonUser) { - if isFollowRequested { - if !(self.followRequestedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.followRequestedBy)).add(mastodonUser) - } - } else { - if (self.followRequestedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.followRequestedBy)).remove(mastodonUser) - } - } - } - public func update(isMuting: Bool, by mastodonUser: MastodonUser) { - if isMuting { - if !(self.mutingBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.mutingBy)).add(mastodonUser) - } - } else { - if (self.mutingBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.mutingBy)).remove(mastodonUser) - } - } - } - public func update(isBlocking: Bool, by mastodonUser: MastodonUser) { - if isBlocking { - if !(self.blockingBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.blockingBy)).add(mastodonUser) - } - } else { - if (self.blockingBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.blockingBy)).remove(mastodonUser) - } - } - } - public func update(isEndorsed: Bool, by mastodonUser: MastodonUser) { - if isEndorsed { - if !(self.endorsedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.endorsedBy)).add(mastodonUser) - } - } else { - if (self.endorsedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.endorsedBy)).remove(mastodonUser) - } - } - } - public func update(isDomainBlocking: Bool, by mastodonUser: MastodonUser) { - if isDomainBlocking { - if !(self.domainBlockingBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.domainBlockingBy)).add(mastodonUser) - } - } else { - if (self.domainBlockingBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(MastodonUser.domainBlockingBy)).remove(mastodonUser) - } - } - } - - public func didUpdate(at networkDate: Date) { - self.updatedAt = networkDate - } - -} - -extension MastodonUser { - public func findSearchHistory(domain: String, userID: MastodonUser.ID) -> SearchHistory? { - return searchHistories.first { searchHistory in - return searchHistory.domain == domain - && searchHistory.userID == userID - } - } -} - -extension MastodonUser { - public struct Property { - public let identifier: String - public let domain: String - - public let id: String - public let acct: String - public let username: String - public let displayName: String - public let avatar: String - public let avatarStatic: String? - public let header: String - public let headerStatic: String? - public let note: String? - public let url: String? - public let emojisData: Data? - public let fieldsData: Data? - public let statusesCount: Int - public let followingCount: Int - public let followersCount: Int - public let locked: Bool - public let bot: Bool? - public let suspended: Bool? - - public let createdAt: Date - public let networkDate: Date - - public init( - id: String, - domain: String, - acct: String, - username: String, - displayName: String, - avatar: String, - avatarStatic: String?, - header: String, - headerStatic: String?, - note: String?, - url: String?, - emojisData: Data?, - fieldsData: Data?, - statusesCount: Int, - followingCount: Int, - followersCount: Int, - locked: Bool, - bot: Bool?, - suspended: Bool?, - createdAt: Date, - networkDate: Date - ) { - self.identifier = id + "@" + domain - self.domain = domain - self.id = id - self.acct = acct - self.username = username - self.displayName = displayName - self.avatar = avatar - self.avatarStatic = avatarStatic - self.header = header - self.headerStatic = headerStatic - self.note = note - self.url = url - self.emojisData = emojisData - self.fieldsData = fieldsData - self.statusesCount = statusesCount - self.followingCount = followingCount - self.followersCount = followersCount - self.locked = locked - self.bot = bot - self.suspended = suspended - self.createdAt = createdAt - self.networkDate = networkDate - } - } -} - -extension MastodonUser: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \MastodonUser.createdAt, ascending: false)] - } -} - -extension MastodonUser { - - static func predicate(domain: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(MastodonUser.domain), domain) - } - - static func predicate(id: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(MastodonUser.id), id) - } - - public static func predicate(domain: String, id: String) -> NSPredicate { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - MastodonUser.predicate(domain: domain), - MastodonUser.predicate(id: id) - ]) - } - - static func predicate(ids: [String]) -> NSPredicate { - return NSPredicate(format: "%K IN %@", #keyPath(MastodonUser.id), ids) - } - - public static func predicate(domain: String, ids: [String]) -> NSPredicate { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - MastodonUser.predicate(domain: domain), - MastodonUser.predicate(ids: ids) - ]) - } - - static func predicate(username: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(MastodonUser.username), username) - } - - public static func predicate(domain: String, username: String) -> NSPredicate { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - MastodonUser.predicate(domain: domain), - MastodonUser.predicate(username: username) - ]) - } - -} diff --git a/CoreDataStack/Entity/Mention.swift b/CoreDataStack/Entity/Mention.swift deleted file mode 100644 index 864ca4948..000000000 --- a/CoreDataStack/Entity/Mention.swift +++ /dev/null @@ -1,71 +0,0 @@ -// -// Mention.swift -// CoreDataStack -// -// Created by sxiaojian on 2021/2/1. -// - -import CoreData -import Foundation - -public final class Mention: NSManagedObject { - public typealias ID = UUID - - @NSManaged public private(set) var index: NSNumber - - @NSManaged public private(set) var identifier: ID - @NSManaged public private(set) var id: String - @NSManaged public private(set) var createAt: Date - - @NSManaged public private(set) var username: String - @NSManaged public private(set) var acct: String - @NSManaged public private(set) var url: String - - // many-to-one relationship - @NSManaged public private(set) var status: Status -} - -public extension Mention { - override func awakeFromInsert() { - super.awakeFromInsert() - - setPrimitiveValue(UUID(), forKey: #keyPath(Mention.identifier)) - } - - @discardableResult - static func insert( - into context: NSManagedObjectContext, - property: Property, - index: Int - ) -> Mention { - let mention: Mention = context.insertObject() - mention.index = NSNumber(value: index) - mention.id = property.id - mention.username = property.username - mention.acct = property.acct - mention.url = property.url - return mention - } -} - -public extension Mention { - struct Property { - public let id: String - public let username: String - public let acct: String - public let url: String - - public init(id: String, username: String, acct: String, url: String) { - self.id = id - self.username = username - self.acct = acct - self.url = url - } - } -} - -extension Mention: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \Mention.createAt, ascending: false)] - } -} diff --git a/CoreDataStack/Entity/Notification.swift b/CoreDataStack/Entity/Notification.swift deleted file mode 100644 index 04f8e9fdf..000000000 --- a/CoreDataStack/Entity/Notification.swift +++ /dev/null @@ -1,115 +0,0 @@ -// -// MastodonNotification.swift -// CoreDataStack -// -// Created by sxiaojian on 2021/4/13. -// - -import Foundation -import CoreData - -public final class MastodonNotification: NSManagedObject { - public typealias ID = UUID - @NSManaged public private(set) var identifier: ID - @NSManaged public private(set) var id: String - @NSManaged public private(set) var createAt: Date - @NSManaged public private(set) var updatedAt: Date - @NSManaged public private(set) var typeRaw: String - @NSManaged public private(set) var account: MastodonUser - @NSManaged public private(set) var status: Status? - - @NSManaged public private(set) var domain: String - @NSManaged public private(set) var userID: String -} - -extension MastodonNotification { - public override func awakeFromInsert() { - super.awakeFromInsert() - setPrimitiveValue(UUID(), forKey: #keyPath(MastodonNotification.identifier)) - } -} - -public extension MastodonNotification { - @discardableResult - static func insert( - into context: NSManagedObjectContext, - domain: String, - userID: String, - networkDate: Date, - property: Property - ) -> MastodonNotification { - let notification: MastodonNotification = context.insertObject() - notification.id = property.id - notification.createAt = property.createdAt - notification.updatedAt = networkDate - notification.typeRaw = property.typeRaw - notification.account = property.account - notification.status = property.status - notification.domain = domain - notification.userID = userID - return notification - } -} - -public extension MastodonNotification { - struct Property { - public init(id: String, - typeRaw: String, - account: MastodonUser, - status: Status?, - createdAt: Date - ) { - self.id = id - self.typeRaw = typeRaw - self.account = account - self.status = status - self.createdAt = createdAt - } - - public let id: String - public let typeRaw: String - public let account: MastodonUser - public let status: Status? - public let createdAt: Date - } -} - -extension MastodonNotification { - static func predicate(domain: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.domain), domain) - } - - static func predicate(userID: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.userID), userID) - } - - static func predicate(typeRaw: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(MastodonNotification.typeRaw), typeRaw) - } - - public static func predicate(domain: String, userID: String, typeRaw: String? = nil) -> NSPredicate { - if let typeRaw = typeRaw { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - MastodonNotification.predicate(domain: domain), - MastodonNotification.predicate(typeRaw: typeRaw), - MastodonNotification.predicate(userID: userID), - ]) - } else { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - MastodonNotification.predicate(domain: domain), - MastodonNotification.predicate(userID: userID) - ]) - } - } - - public static func predicate(validTypesRaws types: [String]) -> NSPredicate { - return NSPredicate(format: "%K IN %@", #keyPath(MastodonNotification.typeRaw), types) - } - -} - -extension MastodonNotification: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \MastodonNotification.createAt, ascending: false)] - } -} diff --git a/CoreDataStack/Entity/Poll.swift b/CoreDataStack/Entity/Poll.swift deleted file mode 100644 index 3ab48b444..000000000 --- a/CoreDataStack/Entity/Poll.swift +++ /dev/null @@ -1,145 +0,0 @@ -// -// Poll.swift -// CoreDataStack -// -// Created by MainasuK Cirno on 2021-3-2. -// - -import Foundation -import CoreData - -public final class Poll: NSManagedObject { - public typealias ID = String - - @NSManaged public private(set) var id: ID - @NSManaged public private(set) var expiresAt: Date? - @NSManaged public private(set) var expired: Bool - @NSManaged public private(set) var multiple: Bool - @NSManaged public private(set) var votesCount: NSNumber - @NSManaged public private(set) var votersCount: NSNumber? - - @NSManaged public private(set) var createdAt: Date - @NSManaged public private(set) var updatedAt: Date - - // one-to-one relationship - @NSManaged public private(set) var status: Status - - // one-to-many relationship - @NSManaged public private(set) var options: Set - - // many-to-many relationship - @NSManaged public private(set) var votedBy: Set? -} - -extension Poll { - - public override func awakeFromInsert() { - super.awakeFromInsert() - setPrimitiveValue(Date(), forKey: #keyPath(Poll.createdAt)) - } - - @discardableResult - public static func insert( - into context: NSManagedObjectContext, - property: Property, - votedBy: MastodonUser?, - options: [PollOption] - ) -> Poll { - let poll: Poll = context.insertObject() - - poll.id = property.id - poll.expiresAt = property.expiresAt - poll.expired = property.expired - poll.multiple = property.multiple - poll.votesCount = property.votesCount - poll.votersCount = property.votersCount - - - poll.updatedAt = property.networkDate - - if let votedBy = votedBy { - poll.mutableSetValue(forKey: #keyPath(Poll.votedBy)).add(votedBy) - } - poll.mutableSetValue(forKey: #keyPath(Poll.options)).addObjects(from: options) - - return poll - } - - public func update(expiresAt: Date?) { - if self.expiresAt != expiresAt { - self.expiresAt = expiresAt - } - } - - public func update(expired: Bool) { - if self.expired != expired { - self.expired = expired - } - } - - public func update(votesCount: Int) { - if self.votesCount.intValue != votesCount { - self.votesCount = NSNumber(value: votesCount) - } - } - - public func update(votersCount: Int?) { - if self.votersCount?.intValue != votersCount { - self.votersCount = votersCount.flatMap { NSNumber(value: $0) } - } - } - - public func update(voted: Bool, by: MastodonUser) { - if voted { - if !(votedBy ?? Set()).contains(by) { - mutableSetValue(forKey: #keyPath(Poll.votedBy)).add(by) - } - } else { - if (votedBy ?? Set()).contains(by) { - mutableSetValue(forKey: #keyPath(Poll.votedBy)).remove(by) - } - } - } - - public func didUpdate(at networkDate: Date) { - self.updatedAt = networkDate - } - -} - -extension Poll { - public struct Property { - public let id: ID - public let expiresAt: Date? - public let expired: Bool - public let multiple: Bool - public let votesCount: NSNumber - public let votersCount: NSNumber? - - public let networkDate: Date - - public init( - id: Poll.ID, - expiresAt: Date?, - expired: Bool, - multiple: Bool, - votesCount: Int, - votersCount: Int?, - networkDate: Date - ) { - self.id = id - self.expiresAt = expiresAt - self.expired = expired - self.multiple = multiple - self.votesCount = NSNumber(value: votesCount) - self.votersCount = votersCount.flatMap { NSNumber(value: $0) } - self.networkDate = networkDate - } - } -} - -extension Poll: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \Poll.createdAt, ascending: false)] - } -} diff --git a/CoreDataStack/Entity/PollOption.swift b/CoreDataStack/Entity/PollOption.swift deleted file mode 100644 index 8917a7533..000000000 --- a/CoreDataStack/Entity/PollOption.swift +++ /dev/null @@ -1,98 +0,0 @@ -// -// PollOption.swift -// CoreDataStack -// -// Created by MainasuK Cirno on 2021-3-2. -// - -import Foundation -import CoreData - -public final class PollOption: NSManagedObject { - @NSManaged public private(set) var index: NSNumber - @NSManaged public private(set) var title: String - @NSManaged public private(set) var votesCount: NSNumber? - - @NSManaged public private(set) var createdAt: Date - @NSManaged public private(set) var updatedAt: Date - - // many-to-one relationship - @NSManaged public private(set) var poll: Poll - - // many-to-many relationship - @NSManaged public private(set) var votedBy: Set? -} - -extension PollOption { - - public override func awakeFromInsert() { - super.awakeFromInsert() - setPrimitiveValue(Date(), forKey: #keyPath(PollOption.createdAt)) - } - - @discardableResult - public static func insert( - into context: NSManagedObjectContext, - property: Property, - votedBy: MastodonUser? - ) -> PollOption { - let option: PollOption = context.insertObject() - - option.index = property.index - option.title = property.title - option.votesCount = property.votesCount - option.updatedAt = property.networkDate - - if let votedBy = votedBy { - option.mutableSetValue(forKey: #keyPath(PollOption.votedBy)).add(votedBy) - } - - return option - } - - public func update(votesCount: Int?) { - if self.votesCount?.intValue != votesCount { - self.votesCount = votesCount.flatMap { NSNumber(value: $0) } - } - } - - public func update(voted: Bool, by: MastodonUser) { - if voted { - if !(self.votedBy ?? Set()).contains(by) { - self.mutableSetValue(forKey: #keyPath(PollOption.votedBy)).add(by) - } - } else { - if (self.votedBy ?? Set()).contains(by) { - self.mutableSetValue(forKey: #keyPath(PollOption.votedBy)).remove(by) - } - } - } - - public func didUpdate(at networkDate: Date) { - self.updatedAt = networkDate - } - -} - -extension PollOption { - public struct Property { - public let index: NSNumber - public let title: String - public let votesCount: NSNumber? - - public let networkDate: Date - - public init(index: Int, title: String, votesCount: Int?, networkDate: Date) { - self.index = NSNumber(value: index) - self.title = title - self.votesCount = votesCount.flatMap { NSNumber(value: $0) } - self.networkDate = networkDate - } - } -} - -extension PollOption: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \PollOption.createdAt, ascending: false)] - } -} diff --git a/CoreDataStack/Entity/SearchHistory.swift b/CoreDataStack/Entity/SearchHistory.swift deleted file mode 100644 index 05e441906..000000000 --- a/CoreDataStack/Entity/SearchHistory.swift +++ /dev/null @@ -1,118 +0,0 @@ -// -// SearchHistory.swift -// CoreDataStack -// -// Created by sxiaojian on 2021/4/7. -// - -import Foundation -import CoreData - -public final class SearchHistory: NSManagedObject { - public typealias ID = UUID - @NSManaged public private(set) var identifier: ID - @NSManaged public private(set) var domain: String - @NSManaged public private(set) var userID: MastodonUser.ID - @NSManaged public private(set) var createAt: Date - @NSManaged public private(set) var updatedAt: Date - - // many-to-one relationship - @NSManaged public private(set) var account: MastodonUser? - @NSManaged public private(set) var hashtag: Tag? - @NSManaged public private(set) var status: Status? - -} - -extension SearchHistory { - public override func awakeFromInsert() { - super.awakeFromInsert() - setPrimitiveValue(UUID(), forKey: #keyPath(SearchHistory.identifier)) - setPrimitiveValue(Date(), forKey: #keyPath(SearchHistory.createAt)) - setPrimitiveValue(Date(), forKey: #keyPath(SearchHistory.updatedAt)) - } - -// public override func willSave() { -// super.willSave() -// setPrimitiveValue(Date(), forKey: #keyPath(SearchHistory.updatedAt)) -// } - - @discardableResult - public static func insert( - into context: NSManagedObjectContext, - property: Property, - account: MastodonUser - ) -> SearchHistory { - let searchHistory: SearchHistory = context.insertObject() - searchHistory.domain = property.domain - searchHistory.userID = property.userID - searchHistory.account = account - return searchHistory - } - - @discardableResult - public static func insert( - into context: NSManagedObjectContext, - property: Property, - hashtag: Tag - ) -> SearchHistory { - let searchHistory: SearchHistory = context.insertObject() - searchHistory.domain = property.domain - searchHistory.userID = property.userID - searchHistory.hashtag = hashtag - return searchHistory - } - - @discardableResult - public static func insert( - into context: NSManagedObjectContext, - property: Property, - status: Status - ) -> SearchHistory { - let searchHistory: SearchHistory = context.insertObject() - searchHistory.domain = property.domain - searchHistory.userID = property.userID - searchHistory.status = status - return searchHistory - } -} - -extension SearchHistory { - public func update(updatedAt: Date) { - setValue(updatedAt, forKey: #keyPath(SearchHistory.updatedAt)) - } -} - -extension SearchHistory { - public struct Property { - public let domain: String - public let userID: MastodonUser.ID - - public init(domain: String, userID: MastodonUser.ID) { - self.domain = domain - self.userID = userID - } - } -} - -extension SearchHistory: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \SearchHistory.updatedAt, ascending: false)] - } -} - -extension SearchHistory { - static func predicate(domain: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(SearchHistory.domain), domain) - } - - static func predicate(userID: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(SearchHistory.userID), userID) - } - - public static func predicate(domain: String, userID: String) -> NSPredicate { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - predicate(domain: domain), - predicate(userID: userID) - ]) - } -} diff --git a/CoreDataStack/Entity/Status.swift b/CoreDataStack/Entity/Status.swift deleted file mode 100644 index ee168e418..000000000 --- a/CoreDataStack/Entity/Status.swift +++ /dev/null @@ -1,355 +0,0 @@ -// -// Status.swift -// CoreDataStack -// -// Created by MainasuK Cirno on 2021/1/27. -// - -import CoreData -import Foundation - -public final class Status: NSManagedObject { - public typealias ID = String - - @NSManaged public private(set) var identifier: ID - @NSManaged public private(set) var domain: String - - @NSManaged public private(set) var id: String - @NSManaged public private(set) var uri: String - @NSManaged public private(set) var createdAt: Date - @NSManaged public private(set) var content: String - - @NSManaged public private(set) var visibility: String? - @NSManaged public private(set) var sensitive: Bool - @NSManaged public private(set) var spoilerText: String? - @NSManaged public private(set) var application: Application? - - @NSManaged public private(set) var emojisData: Data? - - // Informational - @NSManaged public private(set) var reblogsCount: NSNumber - @NSManaged public private(set) var favouritesCount: NSNumber - @NSManaged public private(set) var repliesCount: NSNumber? - - @NSManaged public private(set) var url: String? - @NSManaged public private(set) var inReplyToID: Status.ID? - @NSManaged public private(set) var inReplyToAccountID: MastodonUser.ID? - - @NSManaged public private(set) var language: String? // (ISO 639 Part 1 two-letter language code) - @NSManaged public private(set) var text: String? - - // many-to-one relationship - @NSManaged public private(set) var author: MastodonUser - @NSManaged public private(set) var reblog: Status? - @NSManaged public private(set) var replyTo: Status? - - // many-to-many relationship - @NSManaged public private(set) var favouritedBy: Set? - @NSManaged public private(set) var rebloggedBy: Set? - @NSManaged public private(set) var mutedBy: Set? - @NSManaged public private(set) var bookmarkedBy: Set? - - // one-to-one relationship - @NSManaged public private(set) var pinnedBy: MastodonUser? - @NSManaged public private(set) var poll: Poll? - - // one-to-many relationship - @NSManaged public private(set) var reblogFrom: Set? - @NSManaged public private(set) var mentions: Set? - @NSManaged public private(set) var homeTimelineIndexes: Set? - @NSManaged public private(set) var mediaAttachments: Set? - @NSManaged public private(set) var replyFrom: Set? - - @NSManaged public private(set) var inNotifications: Set? - - @NSManaged public private(set) var searchHistories: Set - - @NSManaged public private(set) var updatedAt: Date - @NSManaged public private(set) var deletedAt: Date? - @NSManaged public private(set) var revealedAt: Date? -} - -extension Status { - - @discardableResult - public static func insert( - into context: NSManagedObjectContext, - property: Property, - author: MastodonUser, - reblog: Status?, - application: Application?, - replyTo: Status?, - poll: Poll?, - mentions: [Mention]?, - mediaAttachments: [Attachment]?, - favouritedBy: MastodonUser?, - rebloggedBy: MastodonUser?, - mutedBy: MastodonUser?, - bookmarkedBy: MastodonUser?, - pinnedBy: MastodonUser? - ) -> Status { - let status: Status = context.insertObject() - - status.identifier = property.identifier - status.domain = property.domain - - status.id = property.id - status.uri = property.uri - status.createdAt = property.createdAt - status.content = property.content - - status.visibility = property.visibility - status.sensitive = property.sensitive - status.spoilerText = property.spoilerText - status.application = application - - status.emojisData = property.emojisData - - status.reblogsCount = property.reblogsCount - status.favouritesCount = property.favouritesCount - status.repliesCount = property.repliesCount - - status.url = property.url - status.inReplyToID = property.inReplyToID - status.inReplyToAccountID = property.inReplyToAccountID - - status.language = property.language - status.text = property.text - - status.author = author - status.reblog = reblog - - status.pinnedBy = pinnedBy - status.poll = poll - - if let mentions = mentions { - status.mutableSetValue(forKey: #keyPath(Status.mentions)).addObjects(from: mentions) - } - if let mediaAttachments = mediaAttachments { - status.mutableSetValue(forKey: #keyPath(Status.mediaAttachments)).addObjects(from: mediaAttachments) - } - if let favouritedBy = favouritedBy { - status.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).add(favouritedBy) - } - if let rebloggedBy = rebloggedBy { - status.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).add(rebloggedBy) - } - if let mutedBy = mutedBy { - status.mutableSetValue(forKey: #keyPath(Status.mutedBy)).add(mutedBy) - } - if let bookmarkedBy = bookmarkedBy { - status.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).add(bookmarkedBy) - } - - status.updatedAt = property.networkDate - - return status - } - - public func update(emojisData: Data?) { - if self.emojisData != emojisData { - self.emojisData = emojisData - } - } - - public func update(reblogsCount: NSNumber) { - if self.reblogsCount.intValue != reblogsCount.intValue { - self.reblogsCount = reblogsCount - } - } - - public func update(favouritesCount: NSNumber) { - if self.favouritesCount.intValue != favouritesCount.intValue { - self.favouritesCount = favouritesCount - } - } - - public func update(repliesCount: NSNumber?) { - guard let count = repliesCount else { - return - } - if self.repliesCount?.intValue != count.intValue { - self.repliesCount = repliesCount - } - } - - public func update(replyTo: Status?) { - if self.replyTo != replyTo { - self.replyTo = replyTo - } - } - - public func update(liked: Bool, by mastodonUser: MastodonUser) { - if liked { - if !(self.favouritedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).add(mastodonUser) - } - } else { - if (self.favouritedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).remove(mastodonUser) - } - } - } - - public func update(reblogged: Bool, by mastodonUser: MastodonUser) { - if reblogged { - if !(self.rebloggedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).add(mastodonUser) - } - } else { - if (self.rebloggedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).remove(mastodonUser) - } - } - } - - public func update(muted: Bool, by mastodonUser: MastodonUser) { - if muted { - if !(self.mutedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(Status.mutedBy)).add(mastodonUser) - } - } else { - if (self.mutedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(Status.mutedBy)).remove(mastodonUser) - } - } - } - - public func update(bookmarked: Bool, by mastodonUser: MastodonUser) { - if bookmarked { - if !(self.bookmarkedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).add(mastodonUser) - } - } else { - if (self.bookmarkedBy ?? Set()).contains(mastodonUser) { - self.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).remove(mastodonUser) - } - } - } - - public func update(isReveal: Bool) { - revealedAt = isReveal ? Date() : nil - } - - public func didUpdate(at networkDate: Date) { - self.updatedAt = networkDate - } - -} - -extension Status { - public struct Property { - - public let identifier: ID - public let domain: String - - public let id: String - public let uri: String - public let createdAt: Date - public let content: String - - public let visibility: String? - public let sensitive: Bool - public let spoilerText: String? - - public let emojisData: Data? - - public let reblogsCount: NSNumber - public let favouritesCount: NSNumber - public let repliesCount: NSNumber? - - public let url: String? - public let inReplyToID: Status.ID? - public let inReplyToAccountID: MastodonUser.ID? - public let language: String? // (ISO 639 Part @1 two-letter language code) - public let text: String? - - public let networkDate: Date - - public init( - domain: String, - id: String, - uri: String, - createdAt: Date, - content: String, - visibility: String?, - sensitive: Bool, - spoilerText: String?, - emojisData: Data?, - reblogsCount: NSNumber, - favouritesCount: NSNumber, - repliesCount: NSNumber?, - url: String?, - inReplyToID: Status.ID?, - inReplyToAccountID: MastodonUser.ID?, - language: String?, - text: String?, - networkDate: Date - ) { - self.identifier = id + "@" + domain - self.domain = domain - self.id = id - self.uri = uri - self.createdAt = createdAt - self.content = content - self.visibility = visibility - self.sensitive = sensitive - self.spoilerText = spoilerText - self.emojisData = emojisData - self.reblogsCount = reblogsCount - self.favouritesCount = favouritesCount - self.repliesCount = repliesCount - self.url = url - self.inReplyToID = inReplyToID - self.inReplyToAccountID = inReplyToAccountID - self.language = language - self.text = text - self.networkDate = networkDate - } - - } -} - -extension Status: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \Status.createdAt, ascending: false)] - } -} - -extension Status { - - static func predicate(domain: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(Status.domain), domain) - } - - static func predicate(id: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(Status.id), id) - } - - public static func predicate(domain: String, id: String) -> NSPredicate { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - predicate(domain: domain), - predicate(id: id) - ]) - } - - static func predicate(ids: [String]) -> NSPredicate { - return NSPredicate(format: "%K IN %@", #keyPath(Status.id), ids) - } - - public static func predicate(domain: String, ids: [String]) -> NSPredicate { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - predicate(domain: domain), - predicate(ids: ids) - ]) - } - - public static func notDeleted() -> NSPredicate { - return NSPredicate(format: "%K == nil", #keyPath(Status.deletedAt)) - } - - public static func deleted() -> NSPredicate { - return NSPredicate(format: "%K != nil", #keyPath(Status.deletedAt)) - } - -} diff --git a/CoreDataStack/Entity/Tag.swift b/CoreDataStack/Entity/Tag.swift deleted file mode 100644 index fa9e098de..000000000 --- a/CoreDataStack/Entity/Tag.swift +++ /dev/null @@ -1,112 +0,0 @@ -// -// Tag.swift -// CoreDataStack -// -// Created by sxiaojian on 2021/2/1. -// - -import CoreData -import Foundation - -public final class Tag: NSManagedObject { - public typealias ID = UUID - @NSManaged public private(set) var identifier: ID - @NSManaged public private(set) var createAt: Date - @NSManaged public private(set) var updatedAt: Date - - @NSManaged public private(set) var name: String - @NSManaged public private(set) var url: String - - // one-to-one relationship - - // many-to-many relationship - - // one-to-many relationship - @NSManaged public private(set) var histories: Set? - @NSManaged public private(set) var searchHistories: Set -} - -public extension Tag { - override func awakeFromInsert() { - super.awakeFromInsert() - setPrimitiveValue(UUID(), forKey: #keyPath(Tag.identifier)) - setPrimitiveValue(Date(), forKey: #keyPath(Tag.createAt)) - setPrimitiveValue(Date(), forKey: #keyPath(Tag.updatedAt)) - } - - override func willSave() { - super.willSave() - setPrimitiveValue(Date(), forKey: #keyPath(Tag.updatedAt)) - } - - @discardableResult - static func insert( - into context: NSManagedObjectContext, - property: Property - ) -> Tag { - let tag: Tag = context.insertObject() - tag.name = property.name - tag.url = property.url - if let histories = property.histories { - tag.mutableSetValue(forKey: #keyPath(Tag.histories)).addObjects(from: histories) - } - return tag - } -} - -extension Tag { - public func findSearchHistory(domain: String, userID: MastodonUser.ID) -> SearchHistory? { - return searchHistories.first { searchHistory in - return searchHistory.domain == domain - && searchHistory.userID == userID - } - } -} - -public extension Tag { - struct Property { - public let name: String - public let url: String - public let histories: [History]? - - public init(name: String, url: String, histories: [History]?) { - self.name = name - self.url = url - self.histories = histories - } - } -} - -public extension Tag { - func updateHistory(index: Int, day: Date, uses: String, account: String) { - guard let histories = self.histories?.sorted(by: { - $0.createAt.compare($1.createAt) == .orderedAscending - }) else { return } - let history = histories[index] - history.update(day: day) - history.update(uses: uses) - history.update(accounts: account) - } - - func appendHistory(history: History) { - self.mutableSetValue(forKeyPath: #keyPath(Tag.histories)).add(history) - } - - func update(url: String) { - if self.url != url { - self.url = url - } - } -} - -extension Tag: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - [NSSortDescriptor(keyPath: \Tag.createAt, ascending: false)] - } -} - -public extension Tag { - static func predicate(name: String) -> NSPredicate { - NSPredicate(format: "%K == %@", #keyPath(Tag.name), name) - } -} diff --git a/CoreDataStack/Entity/Transient/Acct.swift b/CoreDataStack/Entity/Transient/Acct.swift new file mode 100644 index 000000000..fe59bb9d4 --- /dev/null +++ b/CoreDataStack/Entity/Transient/Acct.swift @@ -0,0 +1,46 @@ +// +// Feed+Acct.swift +// Feed+Acct +// +// Created by Cirno MainasuK on 2021-8-26. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation + +extension Feed { + public enum Acct: RawRepresentable { + case none + case mastodon(domain: String, userID: MastodonUser.ID) + + public init?(rawValue: String) { + let components = rawValue.split(separator: "@", maxSplits: 2) + guard components.count == 3 else { return nil } + let userID = String(components[1]).escape + let domain = String(components[2]).escape + + switch components[0] { + case "M": + self = .mastodon(domain: domain, userID: userID) + default: + self = .none + } + + } + + public var rawValue: String { + switch self { + case .none: + return "none@userID@domain" + case .mastodon(let domain, let userID): + return "M@\(userID.escape)@\(domain.escape)" + } + } + } +} + +extension String { + fileprivate var escape: String { + replacingOccurrences(of: "@", with: "_at_") + } +} diff --git a/CoreDataStack/Entity/Transient/Feed+Kind.swift b/CoreDataStack/Entity/Transient/Feed+Kind.swift new file mode 100644 index 000000000..de32d9490 --- /dev/null +++ b/CoreDataStack/Entity/Transient/Feed+Kind.swift @@ -0,0 +1,17 @@ +// +// Feed+Kind.swift +// CoreDataStack +// +// Created by MainasuK on 2022-1-11. +// + +import Foundation + +extension Feed { + public enum Kind: String, CaseIterable, Hashable { + case none + case home + case notificationAll + case notificationMentions + } +} diff --git a/CoreDataStack/Entity/Transient/MastodonAttachment.swift b/CoreDataStack/Entity/Transient/MastodonAttachment.swift new file mode 100644 index 000000000..aa25ada19 --- /dev/null +++ b/CoreDataStack/Entity/Transient/MastodonAttachment.swift @@ -0,0 +1,58 @@ +// +// MastodonAttachment.swift +// MastodonAttachment +// +// Created by Cirno MainasuK on 2021-8-30. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation +import CoreGraphics + +public final class MastodonAttachment: NSObject, Codable { + public typealias ID = String + + public let id: ID + public let kind: Kind + public let size: CGSize + public let focus: CGPoint? + public let blurhash: String? + public let assetURL: String? + public let previewURL: String? + public let textURL: String? + public let durationMS: Int? + public let altDescription: String? + + public init( + id: MastodonAttachment.ID, + kind: MastodonAttachment.Kind, + size: CGSize, + focus: CGPoint?, + blurhash: String?, + assetURL: String?, + previewURL: String?, + textURL: String?, + durationMS: Int?, + altDescription: String? + ) { + self.id = id + self.kind = kind + self.size = size + self.focus = focus + self.blurhash = blurhash + self.assetURL = assetURL + self.previewURL = previewURL + self.textURL = textURL + self.durationMS = durationMS + self.altDescription = altDescription + } +} + +extension MastodonAttachment { + public enum Kind: String, Codable { + case image + case video + case gifv + case audio + } +} diff --git a/CoreDataStack/Entity/Transient/MastodonEmoji.swift b/CoreDataStack/Entity/Transient/MastodonEmoji.swift new file mode 100644 index 000000000..b067849c6 --- /dev/null +++ b/CoreDataStack/Entity/Transient/MastodonEmoji.swift @@ -0,0 +1,30 @@ +// +// MastodonEmoji.swift +// MastodonEmoji +// +// Created by Cirno MainasuK on 2021-9-2. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation + +public final class MastodonEmoji: NSObject, Codable { + public let code: String + public let url: String + public let staticURL: String + public let visibleInPicker: Bool + public let category: String? + + public init(code: + String, url: + String, staticURL: + String, visibleInPicker: + Bool, category: String? + ) { + self.code = code + self.url = url + self.staticURL = staticURL + self.visibleInPicker = visibleInPicker + self.category = category + } +} diff --git a/CoreDataStack/Entity/Transient/MastodonField.swift b/CoreDataStack/Entity/Transient/MastodonField.swift new file mode 100644 index 000000000..507f6f9a3 --- /dev/null +++ b/CoreDataStack/Entity/Transient/MastodonField.swift @@ -0,0 +1,25 @@ +// +// MastodonField.swift +// CoreDataStack +// +// Created by Cirno MainasuK on 2021-9-18. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation + +public final class MastodonField: NSObject, Codable { + public let name: String + public let value: String + public let verifiedAt: Date? + + public init( + name: String, + value: String, + verifiedAt: Date? + ) { + self.name = name + self.value = value + self.verifiedAt = verifiedAt + } +} diff --git a/CoreDataStack/Entity/Transient/MastodonMention.swift b/CoreDataStack/Entity/Transient/MastodonMention.swift new file mode 100644 index 000000000..ee53222c4 --- /dev/null +++ b/CoreDataStack/Entity/Transient/MastodonMention.swift @@ -0,0 +1,31 @@ +// +// MastodonMention.swift +// CoreDataStack +// +// Created by MainasuK on 2022-1-17. +// + +import Foundation + +public final class MastodonMention: NSObject, Codable { + + public typealias ID = String + + public let id: ID + public let username: String + public let acct: String + public let url: String + + public init( + id: MastodonMention.ID, + username: String, + acct: String, + url: String + ) { + self.id = id + self.username = username + self.acct = acct + self.url = url + } + +} diff --git a/CoreDataStack/Entity/Transient/MastodonNotificationType.swift b/CoreDataStack/Entity/Transient/MastodonNotificationType.swift new file mode 100644 index 000000000..a982fda93 --- /dev/null +++ b/CoreDataStack/Entity/Transient/MastodonNotificationType.swift @@ -0,0 +1,46 @@ +// +// MastodonNotificationType.swift +// CoreDataStack +// +// Created by MainasuK on 2022-1-21. +// + +import Foundation + +public enum MastodonNotificationType: RawRepresentable { + case follow + case followRequest + case mention + case reblog + case favourite // same to API + case poll + case status + + case _other(String) + + public init?(rawValue: String) { + switch rawValue { + case "follow": self = .follow + case "followRequest": self = .followRequest + case "mention": self = .mention + case "reblog": self = .reblog + case "favourite": self = .favourite + case "poll": self = .poll + case "status": self = .status + default: self = ._other(rawValue) + } + } + + public var rawValue: String { + switch self { + case .follow: return "follow" + case .followRequest: return "followRequest" + case .mention: return "mention" + case .reblog: return "reblog" + case .favourite: return "favourite" + case .poll: return "poll" + case .status: return "status" + case ._other(let value): return value + } + } +} diff --git a/CoreDataStack/Entity/Transient/MastodonTagHistory.swift b/CoreDataStack/Entity/Transient/MastodonTagHistory.swift new file mode 100644 index 000000000..f2d1cf712 --- /dev/null +++ b/CoreDataStack/Entity/Transient/MastodonTagHistory.swift @@ -0,0 +1,24 @@ +// +// MastodonTagHistory.swift +// CoreDataStack +// +// Created by MainasuK on 2022-1-20. +// + +import Foundation + +public final class MastodonTagHistory: NSObject, Codable { + + /// UNIX timestamp on midnight of the given day + public let day: Date + public let uses: String + public let accounts: String + + public init(day: Date, uses: String, accounts: String) { + self.day = day + self.uses = uses + self.accounts = accounts + } + +} + diff --git a/CoreDataStack/Entity/Transient/MastodonVisibility.swift b/CoreDataStack/Entity/Transient/MastodonVisibility.swift new file mode 100644 index 000000000..798db208a --- /dev/null +++ b/CoreDataStack/Entity/Transient/MastodonVisibility.swift @@ -0,0 +1,38 @@ +// +// MastodonVisibility.swift +// MastodonVisibility +// +// Created by Cirno MainasuK on 2021-8-27. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation + +public enum MastodonVisibility: RawRepresentable { + case `public` + case unlisted + case `private` + case direct + + case _other(String) + + public init?(rawValue: String) { + switch rawValue { + case "public": self = .public + case "unlisted": self = .unlisted + case "private": self = .private + case "direct": self = .direct + default: self = ._other(rawValue) + } + } + + public var rawValue: String { + switch self { + case .public: return "public" + case .unlisted: return "unlisted" + case .private: return "private" + case .direct: return "direct" + case ._other(let value): return value + } + } +} diff --git a/CoreDataStack/Extension/NSManagedObjectContext.swift b/CoreDataStack/Extension/NSManagedObjectContext.swift index e3f6600c7..a3baf4dc4 100644 --- a/CoreDataStack/Extension/NSManagedObjectContext.swift +++ b/CoreDataStack/Extension/NSManagedObjectContext.swift @@ -47,3 +47,66 @@ extension NSManagedObjectContext { } } } + +extension NSManagedObjectContext { + public func perform(block: @escaping () throws -> T) async throws -> T { + if #available(iOSApplicationExtension 15.0, *) { + return try await perform(schedule: .enqueued) { + try block() + } + } else { + return try await withCheckedThrowingContinuation { continuation in + self.perform { + do { + let value = try block() + continuation.resume(returning: value) + } catch { + continuation.resume(throwing: error) + } + } + } // end return + } + } + + public func performChanges(block: @escaping () throws -> T) async throws -> T { + if #available(iOS 15.0, *) { + return try await perform(schedule: .enqueued) { + let value = try block() + try self.saveOrRollback() + return value + } + } else { + return try await withCheckedThrowingContinuation { continuation in + self.perform { + do { + let value = try block() + try self.saveOrRollback() + continuation.resume(returning: value) + } catch { + continuation.resume(throwing: error) + } + } + } // end return + } + } // end func +} + +extension NSManagedObjectContext { + static let objectCacheKey = "ObjectCacheKey" + private typealias ObjectCache = [String: NSManagedObject] + + public func cache( + _ object: NSManagedObject?, + key: String + ) { + var cache = userInfo[NSManagedObjectContext.objectCacheKey] as? ObjectCache ?? [:] + cache[key] = object + userInfo[NSManagedObjectContext.objectCacheKey] = cache + } + + public func cache(froKey key: String) -> NSManagedObject? { + guard let cache = userInfo[NSManagedObjectContext.objectCacheKey] as? ObjectCache + else { return nil } + return cache[key] + } +} diff --git a/CoreDataStack/Info.plist b/CoreDataStack/Info.plist index f652792e2..697cdf4d2 100644 --- a/CoreDataStack/Info.plist +++ b/CoreDataStack/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 90 + 91 diff --git a/CoreDataStack/Stack/ManagedObjectContextObjectsDidChange.swift b/CoreDataStack/Stack/ManagedObjectContextObjectsDidChange.swift index 980a2a5e1..33cbf08d6 100644 --- a/CoreDataStack/Stack/ManagedObjectContextObjectsDidChange.swift +++ b/CoreDataStack/Stack/ManagedObjectContextObjectsDidChange.swift @@ -10,10 +10,10 @@ import CoreData public struct ManagedObjectContextObjectsDidChangeNotification { - public let notification: Notification + public let notification: Foundation.Notification public let managedObjectContext: NSManagedObjectContext - public init?(notification: Notification) { + public init?(notification: Foundation.Notification) { guard notification.name == .NSManagedObjectContextObjectsDidChange, let managedObjectContext = notification.object as? NSManagedObjectContext else { return nil diff --git a/CoreDataStack/Stack/ManagedObjectObserver.swift b/CoreDataStack/Stack/ManagedObjectObserver.swift index 3681fee95..c1fbb5b82 100644 --- a/CoreDataStack/Stack/ManagedObjectObserver.swift +++ b/CoreDataStack/Stack/ManagedObjectObserver.swift @@ -2,7 +2,8 @@ // ManagedObjectObserver.swift // CoreDataStack // -// Created by sxiaojian on 2021/2/8. +// Created by Cirno MainasuK on 2020-6-12. +// Copyright © 2020 Dimension. All rights reserved. // import Foundation @@ -15,6 +16,26 @@ final public class ManagedObjectObserver { extension ManagedObjectObserver { + public static func observe(context: NSManagedObjectContext) -> AnyPublisher { + + return NotificationCenter.default.publisher(for: .NSManagedObjectContextObjectsDidChange, object: context) + .tryMap { notification in + guard let notification = ManagedObjectContextObjectsDidChangeNotification(notification: notification) else { + throw Error.notManagedObjectChangeNotification + } + + let changeTypes = ManagedObjectObserver.changeTypes(in: notification) + return Changes( + changeTypes: changeTypes, + changeNotification: notification + ) + } + .mapError { error -> Error in + return (error as? Error) ?? .unknown(error) + } + .eraseToAnyPublisher() + } + public static func observe(object: NSManagedObject) -> AnyPublisher { guard let context = object.managedObjectContext else { return Fail(error: .noManagedObjectContext).eraseToAnyPublisher() @@ -41,10 +62,26 @@ extension ManagedObjectObserver { } extension ManagedObjectObserver { + private static func changeTypes(in notification: ManagedObjectContextObjectsDidChangeNotification) -> [ChangeType] { + var changeTypes: [ChangeType] = [] + + let deleted = notification.deletedObjects.union(notification.invalidedObjects) + for object in deleted { + changeTypes.append(.delete(object)) + } + + let updated = notification.updatedObjects.union(notification.refreshedObjects) + for object in updated { + changeTypes.append(.update(object)) + } + + return changeTypes + } + private static func changeType(of object: NSManagedObject, in notification: ManagedObjectContextObjectsDidChangeNotification) -> ChangeType? { let deleted = notification.deletedObjects.union(notification.invalidedObjects) if notification.invalidatedAllObjects || deleted.contains(where: { $0 === object }) { - return .delete + return .delete(object) } let updated = notification.updatedObjects.union(notification.refreshedObjects) @@ -57,6 +94,16 @@ extension ManagedObjectObserver { } extension ManagedObjectObserver { + public struct Changes { + public let changeTypes: [ChangeType] + public let changeNotification: ManagedObjectContextObjectsDidChangeNotification + + init(changeTypes: [ManagedObjectObserver.ChangeType], changeNotification: ManagedObjectContextObjectsDidChangeNotification) { + self.changeTypes = changeTypes + self.changeNotification = changeNotification + } + } + public struct Change { public let changeType: ChangeType? public let changeNotification: ManagedObjectContextObjectsDidChangeNotification @@ -65,10 +112,10 @@ extension ManagedObjectObserver { self.changeType = changeType self.changeNotification = changeNotification } - } + public enum ChangeType { - case delete + case delete(NSManagedObject) case update(NSManagedObject) } diff --git a/CoreDataStack/Template/AutoGenerateProperty.swift b/CoreDataStack/Template/AutoGenerateProperty.swift new file mode 100644 index 000000000..e36b93690 --- /dev/null +++ b/CoreDataStack/Template/AutoGenerateProperty.swift @@ -0,0 +1,14 @@ +// +// AutoGenerateProperty.swift +// AutoGenerateProperty +// +// Created by Cirno MainasuK on 2021-8-18. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation + +// Stencil protocol +protocol AutoGenerateProperty { } + +// - autoGenerateProperty diff --git a/CoreDataStack/Template/AutoGenerateRelationship.swift b/CoreDataStack/Template/AutoGenerateRelationship.swift new file mode 100644 index 000000000..caeed0deb --- /dev/null +++ b/CoreDataStack/Template/AutoGenerateRelationship.swift @@ -0,0 +1,14 @@ +// +// AutoGenerateRelationship.swift +// AutoGenerateRelationship +// +// Created by Cirno MainasuK on 2021-8-19. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation + +// Stencil protocol +protocol AutoGenerateRelationship { } + +// - autoGenerateRelationship diff --git a/CoreDataStack/Template/AutoUpdatableObject.swift b/CoreDataStack/Template/AutoUpdatableObject.swift new file mode 100644 index 000000000..ad031db2a --- /dev/null +++ b/CoreDataStack/Template/AutoUpdatableObject.swift @@ -0,0 +1,14 @@ +// +// AutoUpdatableObject.swift +// AutoUpdatableObject +// +// Created by Cirno MainasuK on 2021-8-18. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation + +// Stencil protocol +protocol AutoUpdatableObject { } + +// - autoUpdatableObject diff --git a/CoreDataStack/Template/Stencil/AutoGenerateProperty.stencil b/CoreDataStack/Template/Stencil/AutoGenerateProperty.stencil new file mode 100644 index 000000000..2c14bab23 --- /dev/null +++ b/CoreDataStack/Template/Stencil/AutoGenerateProperty.stencil @@ -0,0 +1,45 @@ +{% for type in types.implementing.AutoGenerateProperty %} +// sourcery:inline:{{type.name}}.AutoGenerateProperty + +// Generated using Sourcery +// DO NOT EDIT +public struct Property { + {% for variable in type.variables|instance where + variable|annotated:"autoGenerateProperty" + %} + public let {{variable.name}}: {{variable.typeName}} + {% endfor %} + + public init( + {% for variable in type.variables|instance where + variable|annotated:"autoGenerateProperty" + %} + {{variable.name}}: {{variable.typeName}}{% if not forloop.last %},{% endif %} + {% endfor %} + ) { + {% for variable in type.variables|instance where + variable|annotated:"autoGenerateProperty" + %} + self.{{variable.name}} = {{variable.name}} + {% endfor %} + } +} + +public func configure(property: Property) { + {% for variable in type.variables|instance where + variable|annotated:"autoGenerateProperty" + %} + self.{{variable.name}} = property.{{variable.name}} + {% endfor %} +} + +public func update(property: Property) { + {% for variable in type.variables|instance where + variable|annotated:"autoUpdatableObject" and + variable|annotated:"autoGenerateProperty" + %} + update({{variable.name}}: property.{{variable.name}}) + {% endfor %} +} +// sourcery:end +{% endfor %} diff --git a/CoreDataStack/Template/Stencil/AutoGenerateRelationship.stencil b/CoreDataStack/Template/Stencil/AutoGenerateRelationship.stencil new file mode 100644 index 000000000..8b5490238 --- /dev/null +++ b/CoreDataStack/Template/Stencil/AutoGenerateRelationship.stencil @@ -0,0 +1,29 @@ +{% for type in types.implementing.AutoGenerateRelationship %} +// sourcery:inline:{{type.name}}.AutoGenerateRelationship + +// Generated using Sourcery +// DO NOT EDIT +public struct Relationship { + {% for variable in type.storedVariables|annotated:"autoGenerateRelationship" %} + public let {{variable.name}}: {{variable.typeName}} + {% endfor %} + + public init( + {% for variable in type.storedVariables|annotated:"autoGenerateRelationship" %} + {{variable.name}}: {{variable.typeName}}{% if not forloop.last %},{% endif %} + {% endfor %} + ) { + {% for variable in type.storedVariables|annotated:"autoGenerateRelationship" %} + self.{{variable.name}} = {{variable.name}} + {% endfor %} + } +} + +public func configure(relationship: Relationship) { + {% for variable in type.storedVariables|annotated:"autoGenerateRelationship" %} + self.{{variable.name}} = relationship.{{variable.name}} + {% endfor %} +} + +// sourcery:end +{% endfor %} diff --git a/CoreDataStack/Template/Stencil/AutoUpdatableObject.stencil b/CoreDataStack/Template/Stencil/AutoUpdatableObject.stencil new file mode 100644 index 000000000..4e81c8b44 --- /dev/null +++ b/CoreDataStack/Template/Stencil/AutoUpdatableObject.stencil @@ -0,0 +1,16 @@ +{% for type in types.implementing.AutoUpdatableObject %} +// sourcery:inline:{{type.name}}.AutoUpdatableObject + +// Generated using Sourcery +// DO NOT EDIT +{% for variable in type.variables|instance where +variable|annotated:"autoUpdatableObject" +%} +public func update({{variable.name}}: {{variable.typeName}}) { + if self.{{variable.name}} != {{variable.name}} { + self.{{variable.name}} = {{variable.name}} + } +} +{% endfor %} +// sourcery:end +{% endfor %} diff --git a/CoreDataStack/Utility/ManagedObjectRecord.swift b/CoreDataStack/Utility/ManagedObjectRecord.swift new file mode 100644 index 000000000..dbdce6c39 --- /dev/null +++ b/CoreDataStack/Utility/ManagedObjectRecord.swift @@ -0,0 +1,32 @@ +// +// ManagedObjectRecord.swift +// ManagedObjectRecord +// +// Created by Cirno MainasuK on 2021-8-25. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation +import CoreData + +public class ManagedObjectRecord: Hashable { + + public let objectID: NSManagedObjectID + + public init(objectID: NSManagedObjectID) { + self.objectID = objectID + } + + public func object(in managedObjectContext: NSManagedObjectContext) -> T? { + return managedObjectContext.object(with: objectID) as? T + } + + public static func == (lhs: ManagedObjectRecord, rhs: ManagedObjectRecord) -> Bool { + return lhs.objectID == rhs.objectID + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(objectID) + } + +} diff --git a/CoreDataStackTests/Info.plist b/CoreDataStackTests/Info.plist index f652792e2..697cdf4d2 100644 --- a/CoreDataStackTests/Info.plist +++ b/CoreDataStackTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 90 + 91 diff --git a/Localization/StringsConvertor/Sources/StringsConvertor/main.swift b/Localization/StringsConvertor/Sources/StringsConvertor/main.swift index 6507986be..79ee6b492 100644 --- a/Localization/StringsConvertor/Sources/StringsConvertor/main.swift +++ b/Localization/StringsConvertor/Sources/StringsConvertor/main.swift @@ -1,11 +1,6 @@ import os.log import Foundation -let currentFileURL = URL(fileURLWithPath: "\(#file)", isDirectory: false) -let packageRootURL = currentFileURL.deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent() -let inputDirectoryURL = packageRootURL.appendingPathComponent("input", isDirectory: true) -let outputDirectoryURL = packageRootURL.appendingPathComponent("output", isDirectory: true) - // conver i18n JSON templates to strings files private func convert(from inputDirectoryURL: URL, to outputDirectory: URL) { do { @@ -17,7 +12,6 @@ private func convert(from inputDirectoryURL: URL, to outputDirectory: URL) { for inputLanguageDirectoryURL in inputLanguageDirectoryURLs { let language = inputLanguageDirectoryURL.lastPathComponent guard let mappedLanguage = map(language: language) else { continue } - let outputDirectoryURL = outputDirectory.appendingPathComponent(mappedLanguage + ".lproj", isDirectory: true) os_log("%{public}s[%{public}ld], %{public}s: process %s -> %s", ((#file as NSString).lastPathComponent), #line, #function, language, mappedLanguage) let fileURLs = try FileManager.default.contentsOfDirectory( @@ -29,9 +23,19 @@ private func convert(from inputDirectoryURL: URL, to outputDirectory: URL) { os_log("%{public}s[%{public}ld], %{public}s: process %s", ((#file as NSString).lastPathComponent), #line, #function, jsonURL.debugDescription) let filename = jsonURL.deletingPathExtension().lastPathComponent guard let (mappedFilename, keyStyle) = map(filename: filename) else { continue } - let outputFileURL = outputDirectoryURL.appendingPathComponent(mappedFilename).appendingPathExtension("strings") + guard let bundle = bundle(filename: filename) else { continue } + + let outputDirectoryURL = outputDirectory + .appendingPathComponent(bundle, isDirectory: true) + .appendingPathComponent(mappedLanguage + ".lproj", isDirectory: true) + + let outputFileURL = outputDirectoryURL + .appendingPathComponent(mappedFilename) + .appendingPathExtension("strings") + let strings = try process(url: jsonURL, keyStyle: keyStyle) try? FileManager.default.createDirectory(at: outputDirectoryURL, withIntermediateDirectories: true, attributes: nil) + try strings.write(to: outputFileURL, atomically: true, encoding: .utf8) } } @@ -44,6 +48,7 @@ private func convert(from inputDirectoryURL: URL, to outputDirectory: URL) { private func map(language: String) -> String? { switch language { case "ar_SA": return "ar" // Arabic (Saudi Arabia) + case "eu_ES": return "eu-ES" // Basque case "ca_ES": return "ca" // Catalan case "zh_CN": return "zh-Hans" // Chinese Simplified case "nl_NL": return "nl" // Dutch @@ -56,6 +61,7 @@ private func map(language: String) -> String? { case "gd_GB": return "gd-GB" // Scottish Gaelic case "es_ES": return "es" // Spanish case "es_AR": return "es-419" // Spanish, Argentina + case "sv_FI": return "sv_FI" // Swedish, Finland case "th_TH": return "th" // Thai default: return nil } @@ -69,6 +75,14 @@ private func map(filename: String) -> (filename: String, keyStyle: Parser.KeySty } } +private func bundle(filename: String) -> String? { + switch filename { + case "app": return "module" + case "ios-infoPlist": return "main" + default: return nil + } +} + private func process(url: URL, keyStyle: Parser.KeyStyle) throws -> String { do { let data = try Data(contentsOf: url) @@ -115,9 +129,16 @@ private func move(from inputDirectoryURL: URL, to outputDirectoryURL: URL, pathE } } -// i18n from "input" to "output" + +let currentFileURL = URL(fileURLWithPath: "\(#file)", isDirectory: false) +let packageRootURL = currentFileURL.deletingLastPathComponent().deletingLastPathComponent().deletingLastPathComponent() + +let inputDirectoryURL = packageRootURL.appendingPathComponent("input", isDirectory: true) +let outputDirectoryURL = packageRootURL.appendingPathComponent("output", isDirectory: true) convert(from: inputDirectoryURL, to: outputDirectoryURL) -move(from: inputDirectoryURL, to: outputDirectoryURL, pathExtension: "stringsdict") + +let moduleDirectoryURL = outputDirectoryURL.appendingPathComponent("module", isDirectory: true) +move(from: inputDirectoryURL, to: moduleDirectoryURL, pathExtension: "stringsdict") // i18n from "Intents/input" to "Intents/output" let intentsDirectoryURL = packageRootURL.appendingPathComponent("Intents", isDirectory: true) diff --git a/Localization/app.json b/Localization/app.json index 0071f6f95..b6da7c4ea 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -412,14 +412,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +482,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -564,4 +576,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index b79fb9010..16a36e6d7 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -11,11 +11,8 @@ 0F2021FB2613262F000C64BF /* HashtagTimelineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F2021FA2613262F000C64BF /* HashtagTimelineViewController.swift */; }; 0F202201261326E6000C64BF /* HashtagTimelineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F202200261326E6000C64BF /* HashtagTimelineViewModel.swift */; }; 0F20220726134DA4000C64BF /* HashtagTimelineViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F20220626134DA4000C64BF /* HashtagTimelineViewModel+Diffable.swift */; }; - 0F20220D26134E3F000C64BF /* HashtagTimelineViewModel+LoadLatestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F20220C26134E3F000C64BF /* HashtagTimelineViewModel+LoadLatestState.swift */; }; 0F202213261351F5000C64BF /* APIService+HashtagTimeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F202212261351F5000C64BF /* APIService+HashtagTimeline.swift */; }; - 0F202227261411BB000C64BF /* HashtagTimelineViewController+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F202226261411BA000C64BF /* HashtagTimelineViewController+Provider.swift */; }; 0F20222D261457EE000C64BF /* HashtagTimelineViewModel+LoadOldestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F20222C261457EE000C64BF /* HashtagTimelineViewModel+LoadOldestState.swift */; }; - 0F20223326145E51000C64BF /* HashtagTimelineViewModel+LoadMiddleState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F20223226145E51000C64BF /* HashtagTimelineViewModel+LoadMiddleState.swift */; }; 0F20223926146553000C64BF /* Array.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F20223826146553000C64BF /* Array.swift */; }; 0FAA0FDF25E0B57E0017CCDE /* WelcomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FAA0FDE25E0B57E0017CCDE /* WelcomeViewController.swift */; }; 0FAA101225E105390017CCDE /* PrimaryActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FAA101125E105390017CCDE /* PrimaryActionButton.swift */; }; @@ -23,18 +20,13 @@ 0FAA102725E1126A0017CCDE /* MastodonPickServerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FAA102625E1126A0017CCDE /* MastodonPickServerViewController.swift */; }; 0FB3D2F725E4C24D00AAD544 /* MastodonPickServerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D2F625E4C24D00AAD544 /* MastodonPickServerViewModel.swift */; }; 0FB3D2FE25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D2FD25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift */; }; - 0FB3D30825E524C600AAD544 /* PickServerCategoriesCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D30725E524C600AAD544 /* PickServerCategoriesCell.swift */; }; 0FB3D30F25E525CD00AAD544 /* PickServerCategoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D30E25E525CD00AAD544 /* PickServerCategoryView.swift */; }; 0FB3D31E25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D31D25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift */; }; - 0FB3D33225E5F50E00AAD544 /* PickServerSearchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D33125E5F50E00AAD544 /* PickServerSearchCell.swift */; }; 0FB3D33825E6401400AAD544 /* PickServerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D33725E6401400AAD544 /* PickServerCell.swift */; }; 164F0EBC267D4FE400249499 /* BoopSound.caf in Resources */ = {isa = PBXBuildFile; fileRef = 164F0EBB267D4FE400249499 /* BoopSound.caf */; }; 18BC7629F65E6DB12CB8416D /* Pods_Mastodon_MastodonUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */; }; - 2D04F42525C255B9003F936F /* APIService+PublicTimeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D04F42425C255B9003F936F /* APIService+PublicTimeline.swift */; }; 2D084B8D26258EA3003AA3AF /* NotificationViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */; }; - 2D084B9326259545003AA3AF /* NotificationViewModel+LoadLatestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */; }; 2D0B7A1D261D839600B44727 /* SearchHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D0B7A1C261D839600B44727 /* SearchHistory.swift */; }; - 2D152A8C25C295CC009AA50C /* StatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D152A8B25C295CC009AA50C /* StatusView.swift */; }; 2D152A9225C2980C009AA50C /* UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D152A9125C2980C009AA50C /* UIFont.swift */; }; 2D198643261BF09500F0B013 /* SearchResultItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198642261BF09500F0B013 /* SearchResultItem.swift */; }; 2D198649261C0B8500F0B013 /* SearchResultSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198648261C0B8500F0B013 /* SearchResultSection.swift */; }; @@ -42,33 +34,21 @@ 2D206B8625F5FB0900143C56 /* Double.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B8525F5FB0900143C56 /* Double.swift */; }; 2D206B8C25F6015000143C56 /* AudioPlaybackService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */; }; 2D206B9225F60EA700143C56 /* UIControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B9125F60EA700143C56 /* UIControl.swift */; }; - 2D24E11D2626D8B100A59D4F /* NotificationStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */; }; 2D24E1232626ED9D00A59D4F /* UIView+Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */; }; - 2D24E12D2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E12C2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift */; }; 2D32EAAC25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */; }; 2D32EABA25CB9B0500C9ED86 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAB925CB9B0500C9ED86 /* UIView.swift */; }; - 2D32EADA25CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAD925CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift */; }; - 2D34D9CB261489930081BFC0 /* SearchViewController+Recommend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D34D9CA261489930081BFC0 /* SearchViewController+Recommend.swift */; }; 2D34D9D126148D9E0081BFC0 /* APIService+Recommend.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D34D9D026148D9E0081BFC0 /* APIService+Recommend.swift */; }; 2D34D9DB261494120081BFC0 /* APIService+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D34D9DA261494120081BFC0 /* APIService+Search.swift */; }; - 2D34D9E226149C920081BFC0 /* SearchRecommendTagsCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D34D9E126149C920081BFC0 /* SearchRecommendTagsCollectionViewCell.swift */; }; 2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D35237926256D920031AF25 /* NotificationSection.swift */; }; 2D364F7225E66D7500204FDC /* MastodonResendEmailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D364F7125E66D7500204FDC /* MastodonResendEmailViewController.swift */; }; 2D364F7825E66D8300204FDC /* MastodonResendEmailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D364F7725E66D8300204FDC /* MastodonResendEmailViewModel.swift */; }; 2D38F1C625CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1C525CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift */; }; 2D38F1D525CD465300561493 /* HomeTimelineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1D425CD465300561493 /* HomeTimelineViewController.swift */; }; - 2D38F1DF25CD46A400561493 /* HomeTimelineViewController+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1DE25CD46A400561493 /* HomeTimelineViewController+Provider.swift */; }; 2D38F1E525CD46C100561493 /* HomeTimelineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1E425CD46C100561493 /* HomeTimelineViewModel.swift */; }; 2D38F1EB25CD477000561493 /* HomeTimelineViewModel+LoadLatestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1EA25CD477000561493 /* HomeTimelineViewModel+LoadLatestState.swift */; }; - 2D38F1F125CD477D00561493 /* HomeTimelineViewModel+LoadMiddleState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1F025CD477D00561493 /* HomeTimelineViewModel+LoadMiddleState.swift */; }; 2D38F1F725CD47AC00561493 /* HomeTimelineViewModel+LoadOldestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1F625CD47AC00561493 /* HomeTimelineViewModel+LoadOldestState.swift */; }; - 2D38F1FE25CD481700561493 /* StatusProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1FD25CD481700561493 /* StatusProvider.swift */; }; 2D38F20825CD491300561493 /* DisposeBagCollectable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F20725CD491300561493 /* DisposeBagCollectable.swift */; }; 2D3F9E0425DFA133004262D9 /* UITapGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D3F9E0325DFA133004262D9 /* UITapGestureRecognizer.swift */; }; - 2D42FF7E25C82218004A627A /* ActionToolBarContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D42FF7D25C82218004A627A /* ActionToolBarContainer.swift */; }; - 2D42FF8525C8224F004A627A /* HitTestExpandedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D42FF8425C8224F004A627A /* HitTestExpandedButton.swift */; }; - 2D42FF8F25C8228A004A627A /* UIButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D42FF8E25C8228A004A627A /* UIButton.swift */; }; - 2D45E5BF25C9549700A6D639 /* PublicTimelineViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D45E5BE25C9549700A6D639 /* PublicTimelineViewModel+State.swift */; }; 2D4AD89C263165B500613EFC /* SuggestionAccountCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D4AD89B263165B500613EFC /* SuggestionAccountCollectionViewCell.swift */; }; 2D4AD8A226316CD200613EFC /* SelectedAccountSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D4AD8A126316CD200613EFC /* SelectedAccountSection.swift */; }; 2D4AD8A826316D3500613EFC /* SelectedAccountItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D4AD8A726316D3500613EFC /* SelectedAccountItem.swift */; }; @@ -83,30 +63,20 @@ 2D607AD826242FC500B70763 /* NotificationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D607AD726242FC500B70763 /* NotificationViewModel.swift */; }; 2D6125472625436B00299647 /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6125462625436B00299647 /* Notification.swift */; }; 2D61254D262547C200299647 /* APIService+Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61254C262547C200299647 /* APIService+Notification.swift */; }; - 2D61335825C188A000CAE157 /* APIService+Persist+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61335725C188A000CAE157 /* APIService+Persist+Status.swift */; }; 2D61335E25C1894B00CAE157 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61335D25C1894B00CAE157 /* APIService.swift */; }; 2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */ = {isa = PBXBuildFile; productRef = 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */; }; 2D650FAB25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D650FAA25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift */; }; 2D694A7425F9EB4E0038ADDC /* ContentWarningOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D694A7325F9EB4E0038ADDC /* ContentWarningOverlayView.swift */; }; - 2D69CFF425CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D69CFF325CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift */; }; - 2D69D00A25CAA00300C3A1B2 /* APIService+CoreData+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D69D00925CAA00300C3A1B2 /* APIService+CoreData+Status.swift */; }; 2D6DE40026141DF600A63F6A /* SearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6DE3FF26141DF600A63F6A /* SearchViewModel.swift */; }; - 2D76316525C14BD100929FB9 /* PublicTimelineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D76316425C14BD100929FB9 /* PublicTimelineViewController.swift */; }; - 2D76316B25C14D4C00929FB9 /* PublicTimelineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D76316A25C14D4C00929FB9 /* PublicTimelineViewModel.swift */; }; - 2D76317D25C14DF500929FB9 /* PublicTimelineViewController+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D76317C25C14DF400929FB9 /* PublicTimelineViewController+Provider.swift */; }; - 2D76318325C14E8F00929FB9 /* PublicTimelineViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D76318225C14E8F00929FB9 /* PublicTimelineViewModel+Diffable.swift */; }; 2D76319F25C1521200929FB9 /* StatusSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D76319E25C1521200929FB9 /* StatusSection.swift */; }; 2D7631A825C1535600929FB9 /* StatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D7631A725C1535600929FB9 /* StatusTableViewCell.swift */; }; - 2D7631B325C159F700929FB9 /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D7631B225C159F700929FB9 /* Item.swift */; }; 2D7867192625B77500211898 /* NotificationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D7867182625B77500211898 /* NotificationItem.swift */; }; - 2D79E701261EA5550011E398 /* APIService+CoreData+Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D79E700261EA5550011E398 /* APIService+CoreData+Tag.swift */; }; 2D82B9FF25E7863200E36F0F /* OnboardingViewControllerAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D82B9FE25E7863200E36F0F /* OnboardingViewControllerAppearance.swift */; }; 2D82BA0525E7897700E36F0F /* MastodonResendEmailViewModelNavigationDelegateShim.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D82BA0425E7897700E36F0F /* MastodonResendEmailViewModelNavigationDelegateShim.swift */; }; 2D8434F525FF465D00EECE90 /* HomeTimelineNavigationBarTitleViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D8434F425FF465D00EECE90 /* HomeTimelineNavigationBarTitleViewModel.swift */; }; 2D8434FB25FF46B300EECE90 /* HomeTimelineNavigationBarTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D8434FA25FF46B300EECE90 /* HomeTimelineNavigationBarTitleView.swift */; }; 2D84350525FF858100EECE90 /* UIScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D84350425FF858100EECE90 /* UIScrollView.swift */; }; 2D8FCA082637EABB00137F46 /* APIService+FollowRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D8FCA072637EABB00137F46 /* APIService+FollowRequest.swift */; }; - 2D927F0225C7E4F2004F19B8 /* Mention.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F0125C7E4F2004F19B8 /* Mention.swift */; }; 2D927F0825C7E9A8004F19B8 /* Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F0725C7E9A8004F19B8 /* Tag.swift */; }; 2D927F0E25C7E9C9004F19B8 /* History.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F0D25C7E9C9004F19B8 /* History.swift */; }; 2D927F1425C7EDD9004F19B8 /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F1325C7EDD9004F19B8 /* Emoji.swift */; }; @@ -127,16 +97,11 @@ 2DAC9E46262FC9FD0062E1A6 /* SuggestionAccountTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DAC9E45262FC9FD0062E1A6 /* SuggestionAccountTableViewCell.swift */; }; 2DB72C8C262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DB72C8B262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift */; }; 2DCB73FD2615C13900EC03D4 /* SearchRecommendCollectionHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DCB73FC2615C13900EC03D4 /* SearchRecommendCollectionHeader.swift */; }; - 2DE0FAC12615F04D00CDF649 /* RecommendHashTagSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DE0FAC02615F04D00CDF649 /* RecommendHashTagSection.swift */; }; - 2DE0FAC82615F5F000CDF649 /* SearchRecommendAccountsCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DE0FAC72615F5F000CDF649 /* SearchRecommendAccountsCollectionViewCell.swift */; }; 2DE0FACE2615F7AD00CDF649 /* RecommendAccountSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DE0FACD2615F7AD00CDF649 /* RecommendAccountSection.swift */; }; 2DF123A725C3B0210020F248 /* ActiveLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF123A625C3B0210020F248 /* ActiveLabel.swift */; }; - 2DF75B9B25D0E27500694EC8 /* StatusProviderFacade.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75B9A25D0E27500694EC8 /* StatusProviderFacade.swift */; }; - 2DF75BA125D0E29D00694EC8 /* StatusProvider+StatusTableViewCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75BA025D0E29D00694EC8 /* StatusProvider+StatusTableViewCellDelegate.swift */; }; 2DF75BA725D10E1000694EC8 /* APIService+Favorite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75BA625D10E1000694EC8 /* APIService+Favorite.swift */; }; 2DF75BB925D1474100694EC8 /* ManagedObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75BB825D1474100694EC8 /* ManagedObjectObserver.swift */; }; 2DF75BC725D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75BC625D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift */; }; - 2DFAD5372617010500F9EE7C /* SearchResultTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DFAD5362617010500F9EE7C /* SearchResultTableViewCell.swift */; }; 4278334D6033AEEE0A1C5155 /* Pods_ShareActionExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A32B0CACBF35F4CC3CFAA043 /* Pods_ShareActionExtension.framework */; }; 5B24BBDA262DB14800A9381B /* ReportViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */; }; 5B24BBDB262DB14800A9381B /* ReportViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */; }; @@ -168,9 +133,7 @@ 5DF1054725F8870E00D6C0D4 /* VideoPlayerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1054625F8870E00D6C0D4 /* VideoPlayerViewModel.swift */; }; 5DF1056425F887CB00D6C0D4 /* AVPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1056325F887CB00D6C0D4 /* AVPlayer.swift */; }; 5DF1057925F88A1D00D6C0D4 /* PlayerContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1057825F88A1D00D6C0D4 /* PlayerContainerView.swift */; }; - 5DF1057F25F88A4100D6C0D4 /* TouchBlockingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1057E25F88A4100D6C0D4 /* TouchBlockingView.swift */; }; 5DF1058525F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1058425F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift */; }; - 5DFC35DF262068D20045711D /* SearchViewController+Follow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DFC35DE262068D20045711D /* SearchViewController+Follow.swift */; }; 5E0DEC05797A7E6933788DDB /* Pods_MastodonTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 452147B2903DF38070FE56A2 /* Pods_MastodonTests.framework */; }; 5E44BF88AD33646E64727BCF /* Pods_MastodonTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD92E0F10BDE4FE7C4B999F2 /* Pods_MastodonTests.framework */; }; 87FFDA5D898A5C42ADCB35E7 /* Pods_Mastodon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4ABE34829701A4496C5BB64 /* Pods_Mastodon.framework */; }; @@ -183,6 +146,20 @@ DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0140CE25C42AEE00F9F3CF /* OSLog.swift */; }; DB01E23326A98F0900C3965B /* MastodonMeta in Frameworks */ = {isa = PBXBuildFile; productRef = DB01E23226A98F0900C3965B /* MastodonMeta */; }; DB01E23526A98F0900C3965B /* MetaTextKit in Frameworks */ = {isa = PBXBuildFile; productRef = DB01E23426A98F0900C3965B /* MetaTextKit */; }; + DB023D26279FFB0A005AC798 /* ShareActivityProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D25279FFB0A005AC798 /* ShareActivityProvider.swift */; }; + DB023D2827A0FABD005AC798 /* NotificationTableViewCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D2727A0FABD005AC798 /* NotificationTableViewCellDelegate.swift */; }; + DB023D2A27A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D2927A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift */; }; + DB023D2C27A10464005AC798 /* NotificationTimelineViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D2B27A10464005AC798 /* NotificationTimelineViewController+DataSourceProvider.swift */; }; + DB025B78278D606A002F581E /* StatusItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B77278D606A002F581E /* StatusItem.swift */; }; + DB025B84278D6272002F581E /* AutoGenerateProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B81278D6271002F581E /* AutoGenerateProperty.swift */; }; + DB025B85278D6272002F581E /* AutoUpdatableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B82278D6272002F581E /* AutoUpdatableObject.swift */; }; + DB025B86278D6272002F581E /* AutoGenerateRelationship.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B83278D6272002F581E /* AutoGenerateRelationship.swift */; }; + DB025B89278D6339002F581E /* Feed.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B88278D6339002F581E /* Feed.swift */; }; + DB025B8C278D6374002F581E /* Acct.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B8B278D6374002F581E /* Acct.swift */; }; + DB025B90278D6489002F581E /* Feed+Kind.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B8F278D6489002F581E /* Feed+Kind.swift */; }; + DB025B93278D6501002F581E /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B92278D6501002F581E /* Persistence.swift */; }; + DB025B95278D6530002F581E /* Persistence+MastodonUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B94278D6530002F581E /* Persistence+MastodonUser.swift */; }; + DB025B97278D66D5002F581E /* MastodonUser+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B96278D66D5002F581E /* MastodonUser+Property.swift */; }; DB029E95266A20430062874E /* MastodonAuthenticationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB029E94266A20430062874E /* MastodonAuthenticationController.swift */; }; DB02CDAB26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB02CDAA26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift */; }; DB02CDBF2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB02CDBE2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift */; }; @@ -206,23 +183,44 @@ DB084B5725CBC56C00F898ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB084B5625CBC56C00F898ED /* Status.swift */; }; DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */; }; DB0C946526A6FD4D0088FB11 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB0C946426A6FD4D0088FB11 /* AlamofireImage */; }; - DB0C946B26A700AB0088FB11 /* MastodonUser+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0C946A26A700AB0088FB11 /* MastodonUser+Property.swift */; }; - DB0C946C26A700CE0088FB11 /* MastodonUser+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0C946A26A700AB0088FB11 /* MastodonUser+Property.swift */; }; - DB0C946F26A7D2A80088FB11 /* AvatarImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0C946E26A7D2A80088FB11 /* AvatarImageView.swift */; }; - DB0C947226A7D2D70088FB11 /* AvatarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0C947126A7D2D70088FB11 /* AvatarButton.swift */; }; DB0C947726A7FE840088FB11 /* NotificationAvatarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0C947626A7FE840088FB11 /* NotificationAvatarButton.swift */; }; - DB0E91EA26A9675100BD2ACC /* MetaLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0E91E926A9675100BD2ACC /* MetaLabel.swift */; }; DB0EF72B26FDB1D200347686 /* SidebarListCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0EF72A26FDB1D200347686 /* SidebarListCollectionViewCell.swift */; }; DB0EF72E26FDB24F00347686 /* SidebarListContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0EF72D26FDB24F00347686 /* SidebarListContentView.swift */; }; DB0F8150264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0F814F264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift */; }; + DB0FCB68279507EF006C02E2 /* DataSourceFacade+Meta.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB67279507EF006C02E2 /* DataSourceFacade+Meta.swift */; }; + DB0FCB6A27950CB3006C02E2 /* MastodonMention.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB6927950CB3006C02E2 /* MastodonMention.swift */; }; + DB0FCB6C27950E29006C02E2 /* MastodonMentionContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB6B27950E29006C02E2 /* MastodonMentionContainer.swift */; }; + DB0FCB6E27950E6B006C02E2 /* MastodonMention.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB6D27950E6B006C02E2 /* MastodonMention.swift */; }; + DB0FCB7027951368006C02E2 /* TimelineMiddleLoaderTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB6F27951368006C02E2 /* TimelineMiddleLoaderTableViewCell+ViewModel.swift */; }; + DB0FCB7227952986006C02E2 /* NamingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB7127952986006C02E2 /* NamingState.swift */; }; + DB0FCB7427956939006C02E2 /* DataSourceFacade+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB7327956939006C02E2 /* DataSourceFacade+Status.swift */; }; + DB0FCB76279571C5006C02E2 /* ThreadViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB75279571C5006C02E2 /* ThreadViewController+DataSourceProvider.swift */; }; + DB0FCB7827957678006C02E2 /* DataSourceProvider+UITableViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB7727957678006C02E2 /* DataSourceProvider+UITableViewDelegate.swift */; }; + DB0FCB7A279576A2006C02E2 /* DataSourceFacade+Thread.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB79279576A2006C02E2 /* DataSourceFacade+Thread.swift */; }; + DB0FCB7C2795821F006C02E2 /* StatusThreadRootTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB7B2795821F006C02E2 /* StatusThreadRootTableViewCell.swift */; }; + DB0FCB7E27958957006C02E2 /* StatusThreadRootTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB7D27958957006C02E2 /* StatusThreadRootTableViewCell+ViewModel.swift */; }; + DB0FCB8027968F70006C02E2 /* MastodonStatusThreadViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB7F27968F70006C02E2 /* MastodonStatusThreadViewModel.swift */; }; + DB0FCB822796AC78006C02E2 /* UserTimelineViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB812796AC78006C02E2 /* UserTimelineViewController+DataSourceProvider.swift */; }; + DB0FCB842796B2A2006C02E2 /* FavoriteViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB832796B2A2006C02E2 /* FavoriteViewController+DataSourceProvider.swift */; }; + DB0FCB862796BDA1006C02E2 /* SearchSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB852796BDA1006C02E2 /* SearchSection.swift */; }; + DB0FCB882796BDA9006C02E2 /* SearchItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB872796BDA9006C02E2 /* SearchItem.swift */; }; + DB0FCB8C2796BF8D006C02E2 /* SearchViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB8B2796BF8D006C02E2 /* SearchViewModel+Diffable.swift */; }; + DB0FCB8E2796C0B7006C02E2 /* TrendCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB8D2796C0B7006C02E2 /* TrendCollectionViewCell.swift */; }; + DB0FCB902796C5EB006C02E2 /* APIService+Trend.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB8F2796C5EB006C02E2 /* APIService+Trend.swift */; }; + DB0FCB922796DE19006C02E2 /* TrendSectionHeaderCollectionReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB912796DE19006C02E2 /* TrendSectionHeaderCollectionReusableView.swift */; }; + DB0FCB942797E2B0006C02E2 /* SearchResultViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB932797E2B0006C02E2 /* SearchResultViewModel+Diffable.swift */; }; + DB0FCB962797E6C2006C02E2 /* SearchResultViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB952797E6C2006C02E2 /* SearchResultViewController+DataSourceProvider.swift */; }; + DB0FCB982797F6BF006C02E2 /* UserTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB972797F6BF006C02E2 /* UserTableViewCell+ViewModel.swift */; }; + DB0FCB9A2797F7AD006C02E2 /* UserView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB992797F7AD006C02E2 /* UserView+Configuration.swift */; }; + DB0FCB9C27980AB6006C02E2 /* HashtagTimelineViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB9B27980AB6006C02E2 /* HashtagTimelineViewController+DataSourceProvider.swift */; }; DB118A8225E4B6E600FAB162 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DB118A8125E4B6E600FAB162 /* Preview Assets.xcassets */; }; + DB159C2B27A17BAC0068DC77 /* DataSourceFacade+Media.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB159C2A27A17BAC0068DC77 /* DataSourceFacade+Media.swift */; }; + DB179267278D5A4A00B71DEB /* MastodonSDK in Frameworks */ = {isa = PBXBuildFile; productRef = DB179266278D5A4A00B71DEB /* MastodonSDK */; }; DB1D186C25EF5BA7003F1F23 /* PollTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D186B25EF5BA7003F1F23 /* PollTableView.swift */; }; DB1D61CF26F1B33600DA8662 /* WelcomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D61CE26F1B33600DA8662 /* WelcomeViewModel.swift */; }; - DB1D842C26551A1C000346B3 /* StatusProvider+StatusTableViewKeyCommandNavigateable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D842B26551A1C000346B3 /* StatusProvider+StatusTableViewKeyCommandNavigateable.swift */; }; DB1D842E26552C4D000346B3 /* StatusTableViewControllerNavigateable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D842D26552C4D000346B3 /* StatusTableViewControllerNavigateable.swift */; }; DB1D843026566512000346B3 /* KeyboardPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D842F26566512000346B3 /* KeyboardPreference.swift */; }; DB1D843426579931000346B3 /* TableViewControllerNavigateable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D843326579931000346B3 /* TableViewControllerNavigateable.swift */; }; - DB1D843626579DB5000346B3 /* StatusProvider+TableViewControllerNavigateable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D843526579DB5000346B3 /* StatusProvider+TableViewControllerNavigateable.swift */; }; DB1D84382657B275000346B3 /* SegmentedControlNavigateable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1D84372657B275000346B3 /* SegmentedControlNavigateable.swift */; }; DB1E346825F518E20079D7DF /* CategoryPickerSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1E346725F518E20079D7DF /* CategoryPickerSection.swift */; }; DB1E347825F519300079D7DF /* PickServerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB1E347725F519300079D7DF /* PickServerItem.swift */; }; @@ -235,8 +233,27 @@ DB2B3ABC25E37E15007045F9 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = DB2B3ABE25E37E15007045F9 /* InfoPlist.strings */; }; DB2F073525E8ECF000957B2D /* AuthenticationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB2F073325E8ECF000957B2D /* AuthenticationViewModel.swift */; }; DB2FF510260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB2FF50F260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift */; }; + DB336F1C278D697E0031E64B /* MastodonUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAE225CA7181005A8AC7 /* MastodonUser.swift */; }; + DB336F1E278D6C3A0031E64B /* MastodonEmoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F1D278D6C3A0031E64B /* MastodonEmoji.swift */; }; + DB336F21278D6D960031E64B /* MastodonEmoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F20278D6D960031E64B /* MastodonEmoji.swift */; }; + DB336F23278D6DED0031E64B /* MastodonEmojiContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F22278D6DED0031E64B /* MastodonEmojiContainer.swift */; }; + DB336F26278D6E8F0031E64B /* MastodonField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F25278D6E8F0031E64B /* MastodonField.swift */; }; + DB336F28278D6EC70031E64B /* MastodonFieldContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F27278D6EC70031E64B /* MastodonFieldContainer.swift */; }; + DB336F2A278D6F2B0031E64B /* MastodonField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F29278D6F2B0031E64B /* MastodonField.swift */; }; + DB336F2C278D6FC30031E64B /* Persistence+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F2B278D6FC30031E64B /* Persistence+Status.swift */; }; + DB336F2E278D71AF0031E64B /* Status+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F2D278D71AF0031E64B /* Status+Property.swift */; }; + DB336F30278D723D0031E64B /* MastodonVisibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F2F278D723D0031E64B /* MastodonVisibility.swift */; }; + DB336F32278D77330031E64B /* Persistence+Poll.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F31278D77330031E64B /* Persistence+Poll.swift */; }; + DB336F34278D77730031E64B /* Persistence+PollOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F33278D77730031E64B /* Persistence+PollOption.swift */; }; + DB336F36278D77A40031E64B /* PollOption+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F35278D77A40031E64B /* PollOption+Property.swift */; }; + DB336F38278D7AAF0031E64B /* Poll+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F37278D7AAF0031E64B /* Poll+Property.swift */; }; + DB336F3A278D7D1F0031E64B /* ManagedObjectRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F39278D7D1F0031E64B /* ManagedObjectRecord.swift */; }; + DB336F3D278D80040031E64B /* FeedFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F3C278D80040031E64B /* FeedFetchedResultsController.swift */; }; + DB336F3F278E668C0031E64B /* StatusTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F3E278E668C0031E64B /* StatusTableViewCell+ViewModel.swift */; }; + DB336F41278E68480031E64B /* StatusView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F40278E68480031E64B /* StatusView+Configuration.swift */; }; + DB336F43278EB1690031E64B /* MediaView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F42278EB1680031E64B /* MediaView+Configuration.swift */; }; + DB336F45278EB1D70031E64B /* MastodonAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F44278EB1D70031E64B /* MastodonAttachment.swift */; }; DB35FC1F2612F1D9006193C9 /* ProfileRelationshipActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB35FC1E2612F1D9006193C9 /* ProfileRelationshipActionButton.swift */; }; - DB35FC252612FD7A006193C9 /* ProfileFieldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB35FC242612FD7A006193C9 /* ProfileFieldView.swift */; }; DB36679D268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB36679C268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift */; }; DB36679F268ABAF20027D07F /* ComposeStatusAttachmentSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB36679E268ABAF20027D07F /* ComposeStatusAttachmentSection.swift */; }; DB3667A1268ABB2E0027D07F /* ComposeStatusAttachmentItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB3667A0268ABB2E0027D07F /* ComposeStatusAttachmentItem.swift */; }; @@ -244,7 +261,6 @@ DB3667A6268AE2620027D07F /* ComposeStatusPollSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB3667A5268AE2620027D07F /* ComposeStatusPollSection.swift */; }; DB3667A8268AE2900027D07F /* ComposeStatusPollItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB3667A7268AE2900027D07F /* ComposeStatusPollItem.swift */; }; DB3D0FF325BAA61700EAA174 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB3D0FF225BAA61700EAA174 /* AlamofireImage */; }; - DB3D100D25BAA75E00EAA174 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DB3D100F25BAA75E00EAA174 /* Localizable.strings */; }; DB427DD625BAA00100D1B89D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DD525BAA00100D1B89D /* AppDelegate.swift */; }; DB427DD825BAA00100D1B89D /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DD725BAA00100D1B89D /* SceneDelegate.swift */; }; DB427DDD25BAA00100D1B89D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DB427DDB25BAA00100D1B89D /* Main.storyboard */; }; @@ -261,11 +277,8 @@ DB4481AD25EE155900BEFB67 /* Poll.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4481AC25EE155900BEFB67 /* Poll.swift */; }; DB4481B325EE16D000BEFB67 /* PollOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4481B225EE16D000BEFB67 /* PollOption.swift */; }; DB4481B925EE289600BEFB67 /* UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4481B825EE289600BEFB67 /* UITableView.swift */; }; - DB4481C625EE2ADA00BEFB67 /* PollSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4481C525EE2ADA00BEFB67 /* PollSection.swift */; }; - DB4481CC25EE2AFE00BEFB67 /* PollItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4481CB25EE2AFE00BEFB67 /* PollItem.swift */; }; DB45FAB625CA5485005A8AC7 /* UIAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAB525CA5485005A8AC7 /* UIAlertController.swift */; }; DB45FAD725CA6C76005A8AC7 /* UIBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAD625CA6C76005A8AC7 /* UIBarButtonItem.swift */; }; - DB45FADD25CA6F6B005A8AC7 /* APIService+CoreData+MastodonUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FADC25CA6F6B005A8AC7 /* APIService+CoreData+MastodonUser.swift */; }; DB45FAE325CA7181005A8AC7 /* MastodonUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAE225CA7181005A8AC7 /* MastodonUser.swift */; }; DB45FAED25CA7A9A005A8AC7 /* MastodonAuthentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAEC25CA7A9A005A8AC7 /* MastodonAuthentication.swift */; }; DB45FAF925CA80A2005A8AC7 /* APIService+CoreData+MastodonAuthentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAF825CA80A2005A8AC7 /* APIService+CoreData+MastodonAuthentication.swift */; }; @@ -273,11 +286,9 @@ DB45FB1D25CA9D23005A8AC7 /* APIService+HomeTimeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FB1C25CA9D23005A8AC7 /* APIService+HomeTimeline.swift */; }; DB47229725F9EFAD00DA7F53 /* NSManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB47229625F9EFAD00DA7F53 /* NSManagedObjectContext.swift */; }; DB482A3F261331E8008AE74C /* UserTimelineViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB482A3E261331E8008AE74C /* UserTimelineViewModel+State.swift */; }; - DB482A45261335BA008AE74C /* UserTimelineViewController+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB482A44261335BA008AE74C /* UserTimelineViewController+Provider.swift */; }; DB482A4B261340A7008AE74C /* APIService+UserTimeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB482A4A261340A7008AE74C /* APIService+UserTimeline.swift */; }; DB4924E226312AB200E9DB22 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4924E126312AB200E9DB22 /* NotificationService.swift */; }; DB4932B126F1FB5300EF46D4 /* WizardCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4932B026F1FB5300EF46D4 /* WizardCardView.swift */; }; - DB4932B326F2054200EF46D4 /* CircleAvatarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4932B226F2054200EF46D4 /* CircleAvatarButton.swift */; }; DB4932B726F30F0700EF46D4 /* Array.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F20223826146553000C64BF /* Array.swift */; }; DB4932B926F31AD300EF46D4 /* BadgeButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4932B826F31AD300EF46D4 /* BadgeButton.swift */; }; DB49A61425FF2C5600B98345 /* EmojiService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A61325FF2C5600B98345 /* EmojiService.swift */; }; @@ -289,7 +300,6 @@ DB4F0966269ED52200D62E92 /* SearchResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F0965269ED52200D62E92 /* SearchResultViewModel.swift */; }; DB4F0968269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F0967269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift */; }; DB4F096A269EDAD200D62E92 /* SearchResultViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F0969269EDAD200D62E92 /* SearchResultViewModel+State.swift */; }; - DB4F096C269EFA2000D62E92 /* SearchResultViewController+StatusProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F096B269EFA2000D62E92 /* SearchResultViewController+StatusProvider.swift */; }; DB4F097526A037F500D62E92 /* SearchHistoryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F097426A037F500D62E92 /* SearchHistoryViewModel.swift */; }; DB4F097B26A039FF00D62E92 /* SearchHistorySection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F097A26A039FF00D62E92 /* SearchHistorySection.swift */; }; DB4F097D26A03A5B00D62E92 /* SearchHistoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F097C26A03A5B00D62E92 /* SearchHistoryItem.swift */; }; @@ -299,17 +309,14 @@ DB51D172262832380062B7A1 /* BlurHashDecode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB51D170262832380062B7A1 /* BlurHashDecode.swift */; }; DB51D173262832380062B7A1 /* BlurHashEncode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB51D171262832380062B7A1 /* BlurHashEncode.swift */; }; DB552D4F26BBD10C00E481F6 /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = DB552D4E26BBD10C00E481F6 /* OrderedCollections */; }; - DB564BD0269F2F83001E39A7 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DB564BCE269F2F83001E39A7 /* Localizable.stringsdict */; }; DB564BD3269F3B35001E39A7 /* StatusFilterService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB564BD2269F3B35001E39A7 /* StatusFilterService.swift */; }; - DB59F0FE25EF5D96001F1DAB /* StatusProvider+UITableViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB59F0FD25EF5D96001F1DAB /* StatusProvider+UITableViewDelegate.swift */; }; - DB59F10425EF5EBC001F1DAB /* TableViewCellHeightCacheableContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB59F10325EF5EBC001F1DAB /* TableViewCellHeightCacheableContainer.swift */; }; DB59F10E25EF724F001F1DAB /* APIService+Poll.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB59F10D25EF724F001F1DAB /* APIService+Poll.swift */; }; - DB59F11825EFA35B001F1DAB /* StripProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB59F11725EFA35B001F1DAB /* StripProgressView.swift */; }; DB5B7295273112B100081888 /* FollowingListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B7294273112B100081888 /* FollowingListViewController.swift */; }; DB5B7298273112C800081888 /* FollowingListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B7297273112C800081888 /* FollowingListViewModel.swift */; }; - DB5B729A2731137900081888 /* FollowingListViewController+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B72992731137900081888 /* FollowingListViewController+Provider.swift */; }; DB5B729C273113C200081888 /* FollowingListViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B729B273113C200081888 /* FollowingListViewModel+Diffable.swift */; }; DB5B729E273113F300081888 /* FollowingListViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5B729D273113F300081888 /* FollowingListViewModel+State.swift */; }; + DB603111279EB38500A935FE /* DataSourceFacade+Mute.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB603110279EB38500A935FE /* DataSourceFacade+Mute.swift */; }; + DB603113279EBEBA00A935FE /* DataSourceFacade+Block.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB603112279EBEBA00A935FE /* DataSourceFacade+Block.swift */; }; DB6180DD263918E30018D199 /* MediaPreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6180DC263918E30018D199 /* MediaPreviewViewController.swift */; }; DB6180E02639194B0018D199 /* MediaPreviewPagingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6180DF2639194B0018D199 /* MediaPreviewPagingViewController.swift */; }; DB6180E326391A4C0018D199 /* ViewControllerAnimatedTransitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6180E226391A4C0018D199 /* ViewControllerAnimatedTransitioning.swift */; }; @@ -323,11 +330,43 @@ DB6180F626391D580018D199 /* MediaPreviewableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6180F526391D580018D199 /* MediaPreviewableViewController.swift */; }; DB6180F826391D660018D199 /* MediaPreviewingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6180F726391D660018D199 /* MediaPreviewingViewController.swift */; }; DB6180FA26391F2E0018D199 /* MediaPreviewViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6180F926391F2E0018D199 /* MediaPreviewViewModel.swift */; }; - DB63BE7F268DD1070011D3F9 /* NotificationViewController+StatusProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63BE7E268DD1070011D3F9 /* NotificationViewController+StatusProvider.swift */; }; + DB63F7452799056400455B82 /* HashtagTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F7442799056400455B82 /* HashtagTableViewCell.swift */; }; + DB63F74727990B0600455B82 /* DataSourceFacade+Hashtag.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F74627990B0600455B82 /* DataSourceFacade+Hashtag.swift */; }; + DB63F7492799126300455B82 /* FollowerListViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F7482799126300455B82 /* FollowerListViewController+DataSourceProvider.swift */; }; + DB63F74B279914A000455B82 /* FollowingListViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F74A279914A000455B82 /* FollowingListViewController+DataSourceProvider.swift */; }; + DB63F74D27993F5B00455B82 /* SearchHistoryUserCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F74C27993F5B00455B82 /* SearchHistoryUserCollectionViewCell.swift */; }; + DB63F74F2799405600455B82 /* SearchHistoryViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F74E2799405600455B82 /* SearchHistoryViewModel+Diffable.swift */; }; + DB63F752279944AA00455B82 /* SearchHistorySectionHeaderCollectionReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F751279944AA00455B82 /* SearchHistorySectionHeaderCollectionReusableView.swift */; }; + DB63F7542799491600455B82 /* DataSourceFacade+SearchHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F7532799491600455B82 /* DataSourceFacade+SearchHistory.swift */; }; + DB63F756279949BD00455B82 /* Persistence+SearchHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F755279949BD00455B82 /* Persistence+SearchHistory.swift */; }; + DB63F75A279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F759279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift */; }; + DB63F75C279956D000455B82 /* Persistence+Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F75B279956D000455B82 /* Persistence+Tag.swift */; }; + DB63F75E27995B3B00455B82 /* Tag+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F75D27995B3B00455B82 /* Tag+Property.swift */; }; + DB63F76027995ECE00455B82 /* MastodonTagHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F75F27995ECE00455B82 /* MastodonTagHistory.swift */; }; + DB63F76227996B6600455B82 /* SearchHistoryViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F76127996B6600455B82 /* SearchHistoryViewController+DataSourceProvider.swift */; }; + DB63F764279A5E3C00455B82 /* NotificationTimelineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F763279A5E3C00455B82 /* NotificationTimelineViewController.swift */; }; + DB63F767279A5EB300455B82 /* NotificationTimelineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F766279A5EB300455B82 /* NotificationTimelineViewModel.swift */; }; + DB63F769279A5EBB00455B82 /* NotificationTimelineViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F768279A5EBB00455B82 /* NotificationTimelineViewModel+Diffable.swift */; }; + DB63F76B279A5ED300455B82 /* NotificationTimelineViewModel+LoadOldestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F76A279A5ED300455B82 /* NotificationTimelineViewModel+LoadOldestState.swift */; }; + DB63F76D279A67BD00455B82 /* MastodonNotificationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F76C279A67BD00455B82 /* MastodonNotificationType.swift */; }; + DB63F76F279A7D1100455B82 /* NotificationTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F76E279A7D1100455B82 /* NotificationTableViewCell.swift */; }; + DB63F771279A858500455B82 /* Persistence+Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F770279A858500455B82 /* Persistence+Notification.swift */; }; + DB63F773279A87DC00455B82 /* Notification+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F772279A87DC00455B82 /* Notification+Property.swift */; }; + DB63F775279A997D00455B82 /* NotificationTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F774279A997D00455B82 /* NotificationTableViewCell+ViewModel.swift */; }; + DB63F777279A9A2A00455B82 /* NotificationView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F776279A9A2A00455B82 /* NotificationView+Configuration.swift */; }; + DB63F779279ABF9C00455B82 /* DataSourceFacade+Reblog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F778279ABF9C00455B82 /* DataSourceFacade+Reblog.swift */; }; + DB63F77B279ACAE500455B82 /* DataSourceFacade+Favorite.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F77A279ACAE500455B82 /* DataSourceFacade+Favorite.swift */; }; DB647C5926F1EA2700F7F82C /* WizardPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB647C5826F1EA2700F7F82C /* WizardPreference.swift */; }; + DB65C63727A2AF6C008BAC2E /* ReportItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB65C63627A2AF6C008BAC2E /* ReportItem.swift */; }; DB66728C25F9F8DC00D60309 /* ComposeViewModel+DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB66728B25F9F8DC00D60309 /* ComposeViewModel+DataSource.swift */; }; DB66729625F9F91600D60309 /* ComposeStatusSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB66729525F9F91600D60309 /* ComposeStatusSection.swift */; }; DB66729C25F9F91F00D60309 /* ComposeStatusItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB66729B25F9F91F00D60309 /* ComposeStatusItem.swift */; }; + DB6746E7278ED633008A6B94 /* MastodonAuthenticationBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC50C0278ED49200AF0CC6 /* MastodonAuthenticationBox.swift */; }; + DB6746E8278ED639008A6B94 /* MastodonAuthenticationBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC50C0278ED49200AF0CC6 /* MastodonAuthenticationBox.swift */; }; + DB6746E9278ED63F008A6B94 /* MastodonAuthenticationBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC50C0278ED49200AF0CC6 /* MastodonAuthenticationBox.swift */; }; + DB6746EB278ED8B0008A6B94 /* PollOptionView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6746EA278ED8B0008A6B94 /* PollOptionView+Configuration.swift */; }; + DB6746ED278F45F0008A6B94 /* AutoGenerateProtocolRelayDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6746EC278F45F0008A6B94 /* AutoGenerateProtocolRelayDelegate.swift */; }; + DB6746F0278F463B008A6B94 /* AutoGenerateProtocolDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6746EF278F463B008A6B94 /* AutoGenerateProtocolDelegate.swift */; }; DB67D08427312970006A36CF /* APIService+Following.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB67D08327312970006A36CF /* APIService+Following.swift */; }; DB67D08627312E67006A36CF /* WizardViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB67D08527312E67006A36CF /* WizardViewController.swift */; }; DB67D089273256D7006A36CF /* StoreReviewPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB67D088273256D7006A36CF /* StoreReviewPreference.swift */; }; @@ -347,18 +386,24 @@ DB68A04A25E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68A04925E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift */; }; DB68A05D25E9055900CFDF14 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DB68A05C25E9055900CFDF14 /* Settings.bundle */; }; DB68A06325E905E000CFDF14 /* UIApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68A06225E905E000CFDF14 /* UIApplication.swift */; }; + DB697DD1278F4871004EF2F7 /* AutoGenerateTableViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB697DD0278F4871004EF2F7 /* AutoGenerateTableViewDelegate.swift */; }; + DB697DD4278F4927004EF2F7 /* StatusTableViewCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB697DD3278F4927004EF2F7 /* StatusTableViewCellDelegate.swift */; }; + DB697DD6278F4C29004EF2F7 /* DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB697DD5278F4C29004EF2F7 /* DataSourceProvider.swift */; }; + DB697DD9278F4CED004EF2F7 /* HomeTimelineViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB697DD8278F4CED004EF2F7 /* HomeTimelineViewController+DataSourceProvider.swift */; }; + DB697DDB278F4DE3004EF2F7 /* DataSourceProvider+StatusTableViewCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB697DDA278F4DE3004EF2F7 /* DataSourceProvider+StatusTableViewCellDelegate.swift */; }; + DB697DDD278F521D004EF2F7 /* DataSourceFacade.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB697DDC278F521D004EF2F7 /* DataSourceFacade.swift */; }; + DB697DDF278F524F004EF2F7 /* DataSourceFacade+Profile.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB697DDE278F524F004EF2F7 /* DataSourceFacade+Profile.swift */; }; + DB697DE1278F5296004EF2F7 /* DataSourceFacade+Model.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB697DE0278F5296004EF2F7 /* DataSourceFacade+Model.swift */; }; DB6B35182601FA3400DC1E11 /* MastodonAttachmentService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B35172601FA3400DC1E11 /* MastodonAttachmentService.swift */; }; DB6B351E2601FAEE00DC1E11 /* ComposeStatusAttachmentCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B351D2601FAEE00DC1E11 /* ComposeStatusAttachmentCollectionViewCell.swift */; }; DB6B74EF272FB55000C70B6E /* FollowerListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B74EE272FB55000C70B6E /* FollowerListViewController.swift */; }; DB6B74F2272FB67600C70B6E /* FollowerListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B74F1272FB67600C70B6E /* FollowerListViewModel.swift */; }; DB6B74F4272FBAE700C70B6E /* FollowerListViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B74F3272FBAE700C70B6E /* FollowerListViewModel+Diffable.swift */; }; DB6B74F6272FBCDB00C70B6E /* FollowerListViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B74F5272FBCDB00C70B6E /* FollowerListViewModel+State.swift */; }; - DB6B74F8272FBFB100C70B6E /* FollowerListViewController+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B74F7272FBFB100C70B6E /* FollowerListViewController+Provider.swift */; }; DB6B74FA272FC2B500C70B6E /* APIService+Follower.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B74F9272FC2B500C70B6E /* APIService+Follower.swift */; }; DB6B74FC272FF55800C70B6E /* UserSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B74FB272FF55800C70B6E /* UserSection.swift */; }; DB6B74FE272FF59000C70B6E /* UserItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B74FD272FF59000C70B6E /* UserItem.swift */; }; DB6B7500272FF73800C70B6E /* UserTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B74FF272FF73800C70B6E /* UserTableViewCell.swift */; }; - DB6B75022730060700C70B6E /* UserProviderFacade+UITableViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B75012730060700C70B6E /* UserProviderFacade+UITableViewDelegate.swift */; }; DB6B750427300B4000C70B6E /* TimelineFooterTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B750327300B4000C70B6E /* TimelineFooterTableViewCell.swift */; }; DB6C8C0F25F0A6AE00AAA452 /* Mastodon+Entity+Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6C8C0E25F0A6AE00AAA452 /* Mastodon+Entity+Error.swift */; }; DB6D1B3D2636857500ACB481 /* AppearancePreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D1B3C2636857500ACB481 /* AppearancePreference.swift */; }; @@ -378,11 +423,6 @@ DB6F5E38264E994A009108F4 /* AutoCompleteTopChevronView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6F5E37264E994A009108F4 /* AutoCompleteTopChevronView.swift */; }; DB71C7CB271D5A0300BE3819 /* LineChartView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71C7CA271D5A0300BE3819 /* LineChartView.swift */; }; DB71C7CD271D7F4300BE3819 /* CurveAlgorithm.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71C7CC271D7F4300BE3819 /* CurveAlgorithm.swift */; }; - DB71FD2C25F86A5100512AE1 /* AvatarStackContainerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71FD2B25F86A5100512AE1 /* AvatarStackContainerButton.swift */; }; - DB71FD3625F8A16C00512AE1 /* APIService+Persist+PersistMemo.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71FD3525F8A16C00512AE1 /* APIService+Persist+PersistMemo.swift */; }; - DB71FD3C25F8A1C500512AE1 /* APIService+Persist+PersistCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71FD3B25F8A1C500512AE1 /* APIService+Persist+PersistCache.swift */; }; - DB71FD4625F8C6D200512AE1 /* StatusProvider+UITableViewDataSourcePrefetching.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71FD4525F8C6D200512AE1 /* StatusProvider+UITableViewDataSourcePrefetching.swift */; }; - DB71FD4C25F8C80E00512AE1 /* StatusPrefetchingService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71FD4B25F8C80E00512AE1 /* StatusPrefetchingService.swift */; }; DB71FD5225F8CCAA00512AE1 /* APIService+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71FD5125F8CCAA00512AE1 /* APIService+Status.swift */; }; DB72601C25E36A2100235243 /* MastodonServerRulesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB72601B25E36A2100235243 /* MastodonServerRulesViewController.swift */; }; DB72602725E36A6F00235243 /* MastodonServerRulesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB72602625E36A6F00235243 /* MastodonServerRulesViewModel.swift */; }; @@ -406,9 +446,7 @@ DB852D1C26FB021500FC9D81 /* RootSplitViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */; }; DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */; }; DB87D4452609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D4442609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift */; }; - DB87D44B2609C11900D12C0D /* PollOptionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D44A2609C11900D12C0D /* PollOptionView.swift */; }; DB87D4512609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D4502609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift */; }; - DB87D4572609DD5300D12C0D /* DeleteBackwardResponseTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D4562609DD5300D12C0D /* DeleteBackwardResponseTextField.swift */; }; DB89B9F725C10FD0008580ED /* CoreDataStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */; }; DB89B9FE25C10FD0008580ED /* CoreDataStackTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89B9FD25C10FD0008580ED /* CoreDataStackTests.swift */; }; DB89BA0025C10FD0008580ED /* CoreDataStack.h in Headers */ = {isa = PBXBuildFile; fileRef = DB89B9F025C10FD0008580ED /* CoreDataStack.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -431,13 +469,13 @@ DB8AF55025C13703002E6C99 /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF54F25C13703002E6C99 /* MainTabBarController.swift */; }; DB8AF55D25C138B7002E6C99 /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF55C25C138B7002E6C99 /* UIViewController.swift */; }; DB8AF56825C13E2A002E6C99 /* HomeTimelineIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF56725C13E2A002E6C99 /* HomeTimelineIndex.swift */; }; + DB8F7076279E954700E1225B /* DataSourceFacade+Follow.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8F7075279E954700E1225B /* DataSourceFacade+Follow.swift */; }; DB8FABC726AEC7B2008E5AF4 /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB8FAB9E26AEC3A2008E5AF4 /* Intents.framework */; }; DB8FABCA26AEC7B2008E5AF4 /* IntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8FABC926AEC7B2008E5AF4 /* IntentHandler.swift */; }; DB8FABCE26AEC7B2008E5AF4 /* MastodonIntent.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = DB8FABC626AEC7B2008E5AF4 /* MastodonIntent.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; DB8FABD726AEC873008E5AF4 /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; DB8FABDC26AEC87B008E5AF4 /* CoreDataStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */; }; DB9282B225F3222800823B15 /* PickServerEmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9282B125F3222800823B15 /* PickServerEmptyStateView.swift */; }; - DB92CF7225E7BB98002C1017 /* PollOptionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB92CF7125E7BB98002C1017 /* PollOptionTableViewCell.swift */; }; DB938EE62623F50700E5B6C1 /* ThreadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938EE52623F50700E5B6C1 /* ThreadViewController.swift */; }; DB938EED2623F79B00E5B6C1 /* ThreadViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938EEC2623F79B00E5B6C1 /* ThreadViewModel.swift */; }; DB938F0326240EA300E5B6C1 /* CachedThreadViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938F0226240EA300E5B6C1 /* CachedThreadViewModel.swift */; }; @@ -445,14 +483,10 @@ DB938F0F2624119800E5B6C1 /* ThreadViewModel+LoadThreadState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938F0E2624119800E5B6C1 /* ThreadViewModel+LoadThreadState.swift */; }; DB938F1526241FDF00E5B6C1 /* APIService+Thread.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938F1426241FDF00E5B6C1 /* APIService+Thread.swift */; }; DB938F1F2624382F00E5B6C1 /* ThreadViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938F1E2624382F00E5B6C1 /* ThreadViewModel+Diffable.swift */; }; - DB938F25262438D600E5B6C1 /* ThreadViewController+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938F24262438D600E5B6C1 /* ThreadViewController+Provider.swift */; }; DB938F3326243D6200E5B6C1 /* TimelineTopLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938F3226243D6200E5B6C1 /* TimelineTopLoaderTableViewCell.swift */; }; - DB97131F2666078B00BD1E90 /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB97131E2666078B00BD1E90 /* Date.swift */; }; DB98336B25C9420100AD9700 /* APIService+App.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98336A25C9420100AD9700 /* APIService+App.swift */; }; DB98337125C9443200AD9700 /* APIService+Authentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98337025C9443200AD9700 /* APIService+Authentication.swift */; }; DB98337F25C9452D00AD9700 /* APIService+APIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98337E25C9452D00AD9700 /* APIService+APIError.swift */; }; - DB98338725C945ED00AD9700 /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98338525C945ED00AD9700 /* Strings.swift */; }; - DB98338825C945ED00AD9700 /* Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98338625C945ED00AD9700 /* Assets.swift */; }; DB98339C25C96DE600AD9700 /* APIService+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98339B25C96DE600AD9700 /* APIService+Account.swift */; }; DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */; }; DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */ = {isa = PBXBuildFile; productRef = DB9A487D2603456B008B817C /* UITextView+Placeholder */; }; @@ -464,8 +498,6 @@ DB9D6BFF25E4F5940051B173 /* ProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BFE25E4F5940051B173 /* ProfileViewController.swift */; }; DB9D6C0E25E4F9780051B173 /* MosaicImageViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6C0D25E4F9780051B173 /* MosaicImageViewContainer.swift */; }; DB9D6C2425E502C60051B173 /* MosaicImageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6C2225E502C60051B173 /* MosaicImageViewModel.swift */; }; - DB9D6C2E25E504AC0051B173 /* Attachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6C2D25E504AC0051B173 /* Attachment.swift */; }; - DB9D6C3825E508BE0051B173 /* Attachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6C3725E508BE0051B173 /* Attachment.swift */; }; DB9D7C21269824B80054B3DF /* APIService+Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D7C20269824B80054B3DF /* APIService+Filter.swift */; }; DB9E0D6F25EE008500CFDD76 /* UIInterpolatingMotionEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9E0D6E25EE008500CFDD76 /* UIInterpolatingMotionEffect.swift */; }; DB9F58EC26EF435000E7BBE9 /* AccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9F58EB26EF435000E7BBE9 /* AccountViewController.swift */; }; @@ -473,7 +505,6 @@ DB9F58F126EF512300E7BBE9 /* AccountListTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9F58F026EF512300E7BBE9 /* AccountListTableViewCell.swift */; }; DBA088DF26958164003EB4B2 /* UserFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA088DE26958164003EB4B2 /* UserFetchedResultsController.swift */; }; DBA0A11325FB3FC10079C110 /* ComposeToolbarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA0A11225FB3FC10079C110 /* ComposeToolbarView.swift */; }; - DBA1DB80268F84F80052DB59 /* NotificationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA1DB7F268F84F80052DB59 /* NotificationType.swift */; }; DBA465932696B495002B41DB /* APIService+WebFinger.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA465922696B495002B41DB /* APIService+WebFinger.swift */; }; DBA465952696E387002B41DB /* AppPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA465942696E387002B41DB /* AppPreference.swift */; }; DBA4B0F626C269880077136E /* Intents.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DBA4B0F926C269880077136E /* Intents.stringsdict */; }; @@ -487,23 +518,17 @@ DBA5E7AB263BD3F5004598BB /* TimelineTableViewCellContextMenuConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA5E7AA263BD3F5004598BB /* TimelineTableViewCellContextMenuConfiguration.swift */; }; DBA94434265CBB5300C537E1 /* ProfileFieldSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA94433265CBB5300C537E1 /* ProfileFieldSection.swift */; }; DBA94436265CBB7400C537E1 /* ProfileFieldItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA94435265CBB7400C537E1 /* ProfileFieldItem.swift */; }; - DBA94438265CBD4D00C537E1 /* ProfileHeaderViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA94437265CBD4D00C537E1 /* ProfileHeaderViewModel+Diffable.swift */; }; - DBA9443A265CC0FC00C537E1 /* Fields.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA94439265CC0FC00C537E1 /* Fields.swift */; }; DBA9443E265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA9443D265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift */; }; DBA94440265D137600C537E1 /* Mastodon+Entity+Field.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA9443F265D137600C537E1 /* Mastodon+Entity+Field.swift */; }; DBABE3EC25ECAC4B00879EE5 /* WelcomeIllustrationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBABE3EB25ECAC4B00879EE5 /* WelcomeIllustrationView.swift */; }; DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC6482267D0B21007FE9FD /* DifferenceKit */; }; DBAC649E267DFE43007FE9FD /* DiffableDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC649D267DFE43007FE9FD /* DiffableDataSources */; }; DBAC64A1267E6D02007FE9FD /* Fuzi in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC64A0267E6D02007FE9FD /* Fuzi */; }; - DBAE3F682615DD60004B8251 /* UserProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F672615DD60004B8251 /* UserProvider.swift */; }; - DBAE3F822615DDA3004B8251 /* ProfileViewController+UserProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F812615DDA3004B8251 /* ProfileViewController+UserProvider.swift */; }; - DBAE3F882615DDF4004B8251 /* UserProviderFacade.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F872615DDF4004B8251 /* UserProviderFacade.swift */; }; DBAE3F8E2616E0B1004B8251 /* APIService+Block.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F8D2616E0B1004B8251 /* APIService+Block.swift */; }; DBAE3F942616E28B004B8251 /* APIService+Follow.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F932616E28B004B8251 /* APIService+Follow.swift */; }; DBAE3F9E2616E308004B8251 /* APIService+Mute.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F9D2616E308004B8251 /* APIService+Mute.swift */; }; DBAE3FAF26172FC0004B8251 /* RemoteProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3FAE26172FC0004B8251 /* RemoteProfileViewModel.swift */; }; DBAEDE5C267A058D00D25FF5 /* BlurhashImageCacheService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAEDE5B267A058D00D25FF5 /* BlurhashImageCacheService.swift */; }; - DBAFB7352645463500371D5F /* Emojis.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAFB7342645463500371D5F /* Emojis.swift */; }; DBB3BA2A26A81C020004F2D4 /* FLAnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */; }; DBB3BA2B26A81D060004F2D4 /* FLAnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */; }; DBB525082611EAC0002F1F29 /* Tabman in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* Tabman */; }; @@ -522,19 +547,12 @@ DBB8AB4826AED09C00F6D281 /* MastodonSDK in Frameworks */ = {isa = PBXBuildFile; productRef = DBB8AB4726AED09C00F6D281 /* MastodonSDK */; }; DBB8AB4A26AED0B500F6D281 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB8AB4926AED0B500F6D281 /* APIService.swift */; }; DBB8AB4C26AED11300F6D281 /* APIService+APIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98337E25C9452D00AD9700 /* APIService+APIError.swift */; }; - DBB8AB4D26AED12B00F6D281 /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98338525C945ED00AD9700 /* Strings.swift */; }; - DBB8AB4E26AED12E00F6D281 /* Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98338625C945ED00AD9700 /* Assets.swift */; }; DBB8AB4F26AED13F00F6D281 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DB427DDE25BAA00100D1B89D /* Assets.xcassets */; }; - DBB8AB5026AED14400F6D281 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DB564BCE269F2F83001E39A7 /* Localizable.stringsdict */; }; - DBB8AB5126AED14600F6D281 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DB3D100F25BAA75E00EAA174 /* Localizable.strings */; }; DBB8AB5226AED1B300F6D281 /* APIService+Status+Publish.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF07A26A6BCE8006D7ED1 /* APIService+Status+Publish.swift */; }; - DBB8AB5326AED25100F6D281 /* MastodonAuthenticationBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF07626A691FB006D7ED1 /* MastodonAuthenticationBox.swift */; }; DBB9759C262462E1004620BD /* ThreadMetaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB9759B262462E1004620BD /* ThreadMetaView.swift */; }; DBBC24A826A52F9000398BB9 /* ComposeToolbarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24A726A52F9000398BB9 /* ComposeToolbarView.swift */; }; DBBC24AA26A5301B00398BB9 /* MastodonSDK in Frameworks */ = {isa = PBXBuildFile; productRef = DBBC24A926A5301B00398BB9 /* MastodonSDK */; }; DBBC24AC26A53D9300398BB9 /* ComposeStatusContentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24AB26A53D9300398BB9 /* ComposeStatusContentTableViewCell.swift */; }; - DBBC24AE26A53DC100398BB9 /* ReplicaStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24AD26A53DC100398BB9 /* ReplicaStatusView.swift */; }; - DBBC24B526A540AE00398BB9 /* AvatarConfigurableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24B426A540AE00398BB9 /* AvatarConfigurableView.swift */; }; DBBC24B826A5421800398BB9 /* CommonOSLog in Frameworks */ = {isa = PBXBuildFile; productRef = DBBC24B726A5421800398BB9 /* CommonOSLog */; }; DBBC24BC26A542F500398BB9 /* ThemeService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24BB26A542F500398BB9 /* ThemeService.swift */; }; DBBC24C026A5443100398BB9 /* MastodonTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24BE26A5443100398BB9 /* MastodonTheme.swift */; }; @@ -545,12 +563,11 @@ DBBC24C826A5456400398BB9 /* ThemeService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24BB26A542F500398BB9 /* ThemeService.swift */; }; DBBC24C926A5456400398BB9 /* MastodonTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24BE26A5443100398BB9 /* MastodonTheme.swift */; }; DBBC24CB26A546C000398BB9 /* ThemePreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD376AB2692ECDB007FEC24 /* ThemePreference.swift */; }; - DBBC24CD26A5471E00398BB9 /* MastodonExtension in Frameworks */ = {isa = PBXBuildFile; productRef = DBBC24CC26A5471E00398BB9 /* MastodonExtension */; }; DBBC24CF26A547AE00398BB9 /* ThemeService+Appearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24CE26A547AE00398BB9 /* ThemeService+Appearance.swift */; }; DBBC24D126A5484F00398BB9 /* UITextView+Placeholder in Frameworks */ = {isa = PBXBuildFile; productRef = DBBC24D026A5484F00398BB9 /* UITextView+Placeholder */; }; - DBBC24D226A5488600398BB9 /* AvatarConfigurableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24B426A540AE00398BB9 /* AvatarConfigurableView.swift */; }; DBBC24DC26A54BCB00398BB9 /* MastodonRegex.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24D626A54BCB00398BB9 /* MastodonRegex.swift */; }; DBBC24DE26A54BCB00398BB9 /* MastodonMetricFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24D826A54BCB00398BB9 /* MastodonMetricFormatter.swift */; }; + DBBC50BF278ED0E700AF0CC6 /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC50BE278ED0E700AF0CC6 /* Date.swift */; }; DBBE1B4525F3474B0081417A /* MastodonPickServerAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBE1B4425F3474B0081417A /* MastodonPickServerAppearance.swift */; }; DBBF1DBF2652401B00E5B703 /* AutoCompleteViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBF1DBE2652401B00E5B703 /* AutoCompleteViewModel.swift */; }; DBBF1DC226524D2900E5B703 /* AutoCompleteTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBF1DC126524D2900E5B703 /* AutoCompleteTableViewCell.swift */; }; @@ -562,13 +579,7 @@ DBC6461826A170AB00B0E31B /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DBC6461626A170AB00B0E31B /* MainInterface.storyboard */; }; DBC6461C26A170AB00B0E31B /* ShareActionExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = DBC6461226A170AB00B0E31B /* ShareActionExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; DBC6462326A1712000B0E31B /* ShareViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC6462226A1712000B0E31B /* ShareViewModel.swift */; }; - DBC6462526A1720B00B0E31B /* MastodonUI in Frameworks */ = {isa = PBXBuildFile; productRef = DBC6462426A1720B00B0E31B /* MastodonUI */; }; - DBC6462626A1736000B0E31B /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DB564BCE269F2F83001E39A7 /* Localizable.stringsdict */; }; - DBC6462726A1736000B0E31B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DB3D100F25BAA75E00EAA174 /* Localizable.strings */; }; DBC6462826A1736300B0E31B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DB427DDE25BAA00100D1B89D /* Assets.xcassets */; }; - DBC6462926A1736700B0E31B /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98338525C945ED00AD9700 /* Strings.swift */; }; - DBC6462B26A1738900B0E31B /* MastodonUI in Frameworks */ = {isa = PBXBuildFile; productRef = DBC6462A26A1738900B0E31B /* MastodonUI */; }; - DBC6462C26A176B000B0E31B /* Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98338625C945ED00AD9700 /* Assets.swift */; }; DBC6463326A195DB00B0E31B /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; DBC6463726A195DB00B0E31B /* CoreDataStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */; }; DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC7A671260C897100E57475 /* StatusContentWarningEditorView.swift */; }; @@ -594,7 +605,6 @@ DBE3CDFB261C6CA500430CC6 /* FavoriteViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CDFA261C6CA500430CC6 /* FavoriteViewModel.swift */; }; DBE3CE01261D623D00430CC6 /* FavoriteViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CE00261D623D00430CC6 /* FavoriteViewModel+State.swift */; }; DBE3CE07261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CE06261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift */; }; - DBE3CE0D261D767100430CC6 /* FavoriteViewController+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CE0C261D767100430CC6 /* FavoriteViewController+Provider.swift */; }; DBE3CE13261D7D4200430CC6 /* StatusTableViewControllerAspect.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CE12261D7D4200430CC6 /* StatusTableViewControllerAspect.swift */; }; DBE54AC62636C89F004E7C0B /* NotificationPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */; }; DBE54ACC2636C8FD004E7C0B /* NotificationPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */; }; @@ -613,6 +623,10 @@ DBF96326262EC0A6001D8D25 /* AuthenticationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DBF96325262EC0A6001D8D25 /* AuthenticationServices.framework */; }; DBF9814A265E24F500E4BA07 /* ProfileFieldCollectionViewHeaderFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF98149265E24F500E4BA07 /* ProfileFieldCollectionViewHeaderFooterView.swift */; }; DBF9814C265E339500E4BA07 /* ProfileFieldAddEntryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF9814B265E339500E4BA07 /* ProfileFieldAddEntryCollectionViewCell.swift */; }; + DBFEEC96279BDC67004F81DD /* ProfileAboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEEC95279BDC67004F81DD /* ProfileAboutViewController.swift */; }; + DBFEEC99279BDCDE004F81DD /* ProfileAboutViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEEC98279BDCDE004F81DD /* ProfileAboutViewModel.swift */; }; + DBFEEC9B279BDDD9004F81DD /* ProfileAboutViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEEC9A279BDDD9004F81DD /* ProfileAboutViewModel+Diffable.swift */; }; + DBFEEC9D279C12C1004F81DD /* ProfileFieldEditCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEEC9C279C12C1004F81DD /* ProfileFieldEditCollectionViewCell.swift */; }; DBFEF05B26A57715006D7ED1 /* ComposeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF05726A576EE006D7ED1 /* ComposeViewModel.swift */; }; DBFEF05C26A57715006D7ED1 /* StatusEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF05526A576EE006D7ED1 /* StatusEditorView.swift */; }; DBFEF05D26A57715006D7ED1 /* ContentWarningEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF05826A576EE006D7ED1 /* ContentWarningEditorView.swift */; }; @@ -625,8 +639,6 @@ DBFEF06F26A690C4006D7ED1 /* APIService+APIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98337E25C9452D00AD9700 /* APIService+APIError.swift */; }; DBFEF07326A6913D006D7ED1 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF07226A6913D006D7ED1 /* APIService.swift */; }; DBFEF07526A69192006D7ED1 /* APIService+Media.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A488F26035963008B817C /* APIService+Media.swift */; }; - DBFEF07726A691FB006D7ED1 /* MastodonAuthenticationBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF07626A691FB006D7ED1 /* MastodonAuthenticationBox.swift */; }; - DBFEF07826A69209006D7ED1 /* MastodonAuthenticationBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF07626A691FB006D7ED1 /* MastodonAuthenticationBox.swift */; }; DBFEF07B26A6BCE8006D7ED1 /* APIService+Status+Publish.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF07A26A6BCE8006D7ED1 /* APIService+Status+Publish.swift */; }; DBFEF07C26A6BD0A006D7ED1 /* APIService+Status+Publish.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBFEF07A26A6BCE8006D7ED1 /* APIService+Status+Publish.swift */; }; EE93E8E8F9E0C39EAAEBD92F /* Pods_AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F4A2A2D7000E477CA459ADA9 /* Pods_AppShared.framework */; }; @@ -780,11 +792,8 @@ 0F2021FA2613262F000C64BF /* HashtagTimelineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagTimelineViewController.swift; sourceTree = ""; }; 0F202200261326E6000C64BF /* HashtagTimelineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagTimelineViewModel.swift; sourceTree = ""; }; 0F20220626134DA4000C64BF /* HashtagTimelineViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HashtagTimelineViewModel+Diffable.swift"; sourceTree = ""; }; - 0F20220C26134E3F000C64BF /* HashtagTimelineViewModel+LoadLatestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HashtagTimelineViewModel+LoadLatestState.swift"; sourceTree = ""; }; 0F202212261351F5000C64BF /* APIService+HashtagTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+HashtagTimeline.swift"; sourceTree = ""; }; - 0F202226261411BA000C64BF /* HashtagTimelineViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HashtagTimelineViewController+Provider.swift"; sourceTree = ""; }; 0F20222C261457EE000C64BF /* HashtagTimelineViewModel+LoadOldestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HashtagTimelineViewModel+LoadOldestState.swift"; sourceTree = ""; }; - 0F20223226145E51000C64BF /* HashtagTimelineViewModel+LoadMiddleState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HashtagTimelineViewModel+LoadMiddleState.swift"; sourceTree = ""; }; 0F20223826146553000C64BF /* Array.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Array.swift; sourceTree = ""; }; 0FAA0FDE25E0B57E0017CCDE /* WelcomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeViewController.swift; sourceTree = ""; }; 0FAA101125E105390017CCDE /* PrimaryActionButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimaryActionButton.swift; sourceTree = ""; }; @@ -792,19 +801,14 @@ 0FAA102625E1126A0017CCDE /* MastodonPickServerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonPickServerViewController.swift; sourceTree = ""; }; 0FB3D2F625E4C24D00AAD544 /* MastodonPickServerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonPickServerViewModel.swift; sourceTree = ""; }; 0FB3D2FD25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingHeadlineTableViewCell.swift; sourceTree = ""; }; - 0FB3D30725E524C600AAD544 /* PickServerCategoriesCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerCategoriesCell.swift; sourceTree = ""; }; 0FB3D30E25E525CD00AAD544 /* PickServerCategoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerCategoryView.swift; sourceTree = ""; }; 0FB3D31D25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerCategoryCollectionViewCell.swift; sourceTree = ""; }; - 0FB3D33125E5F50E00AAD544 /* PickServerSearchCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerSearchCell.swift; sourceTree = ""; }; 0FB3D33725E6401400AAD544 /* PickServerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerCell.swift; sourceTree = ""; }; 159AC43EFE0A1F95FCB358A4 /* Pods-MastodonIntent.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonIntent.release.xcconfig"; path = "Target Support Files/Pods-MastodonIntent/Pods-MastodonIntent.release.xcconfig"; sourceTree = ""; }; 164F0EBB267D4FE400249499 /* BoopSound.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = BoopSound.caf; sourceTree = ""; }; 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk - debug.xcconfig"; sourceTree = ""; }; - 2D04F42425C255B9003F936F /* APIService+PublicTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+PublicTimeline.swift"; sourceTree = ""; }; 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+Diffable.swift"; sourceTree = ""; }; - 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+LoadLatestState.swift"; sourceTree = ""; }; 2D0B7A1C261D839600B44727 /* SearchHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistory.swift; sourceTree = ""; }; - 2D152A8B25C295CC009AA50C /* StatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusView.swift; sourceTree = ""; }; 2D152A9125C2980C009AA50C /* UIFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFont.swift; sourceTree = ""; }; 2D198642261BF09500F0B013 /* SearchResultItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultItem.swift; sourceTree = ""; }; 2D198648261C0B8500F0B013 /* SearchResultSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultSection.swift; sourceTree = ""; }; @@ -812,33 +816,21 @@ 2D206B8525F5FB0900143C56 /* Double.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Double.swift; sourceTree = ""; }; 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioPlaybackService.swift; sourceTree = ""; }; 2D206B9125F60EA700143C56 /* UIControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIControl.swift; sourceTree = ""; }; - 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationStatusTableViewCell.swift; sourceTree = ""; }; 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Gesture.swift"; sourceTree = ""; }; - 2D24E12C2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+LoadOldestState.swift"; sourceTree = ""; }; 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineMiddleLoaderTableViewCell.swift; sourceTree = ""; }; 2D32EAB925CB9B0500C9ED86 /* UIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIView.swift; sourceTree = ""; }; - 2D32EAD925CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PublicTimelineViewModel+LoadMiddleState.swift"; sourceTree = ""; }; - 2D34D9CA261489930081BFC0 /* SearchViewController+Recommend.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchViewController+Recommend.swift"; sourceTree = ""; }; 2D34D9D026148D9E0081BFC0 /* APIService+Recommend.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Recommend.swift"; sourceTree = ""; }; 2D34D9DA261494120081BFC0 /* APIService+Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Search.swift"; sourceTree = ""; }; - 2D34D9E126149C920081BFC0 /* SearchRecommendTagsCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecommendTagsCollectionViewCell.swift; sourceTree = ""; }; 2D35237926256D920031AF25 /* NotificationSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationSection.swift; sourceTree = ""; }; 2D364F7125E66D7500204FDC /* MastodonResendEmailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonResendEmailViewController.swift; sourceTree = ""; }; 2D364F7725E66D8300204FDC /* MastodonResendEmailViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonResendEmailViewModel.swift; sourceTree = ""; }; 2D38F1C525CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentOffsetAdjustableTimelineViewControllerDelegate.swift; sourceTree = ""; }; 2D38F1D425CD465300561493 /* HomeTimelineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineViewController.swift; sourceTree = ""; }; - 2D38F1DE25CD46A400561493 /* HomeTimelineViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeTimelineViewController+Provider.swift"; sourceTree = ""; }; 2D38F1E425CD46C100561493 /* HomeTimelineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineViewModel.swift; sourceTree = ""; }; 2D38F1EA25CD477000561493 /* HomeTimelineViewModel+LoadLatestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeTimelineViewModel+LoadLatestState.swift"; sourceTree = ""; }; - 2D38F1F025CD477D00561493 /* HomeTimelineViewModel+LoadMiddleState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeTimelineViewModel+LoadMiddleState.swift"; sourceTree = ""; }; 2D38F1F625CD47AC00561493 /* HomeTimelineViewModel+LoadOldestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeTimelineViewModel+LoadOldestState.swift"; sourceTree = ""; }; - 2D38F1FD25CD481700561493 /* StatusProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusProvider.swift; sourceTree = ""; }; 2D38F20725CD491300561493 /* DisposeBagCollectable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisposeBagCollectable.swift; sourceTree = ""; }; 2D3F9E0325DFA133004262D9 /* UITapGestureRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITapGestureRecognizer.swift; sourceTree = ""; }; - 2D42FF7D25C82218004A627A /* ActionToolBarContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionToolBarContainer.swift; sourceTree = ""; }; - 2D42FF8425C8224F004A627A /* HitTestExpandedButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HitTestExpandedButton.swift; sourceTree = ""; }; - 2D42FF8E25C8228A004A627A /* UIButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButton.swift; sourceTree = ""; }; - 2D45E5BE25C9549700A6D639 /* PublicTimelineViewModel+State.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PublicTimelineViewModel+State.swift"; sourceTree = ""; }; 2D4AD89B263165B500613EFC /* SuggestionAccountCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuggestionAccountCollectionViewCell.swift; sourceTree = ""; }; 2D4AD8A126316CD200613EFC /* SelectedAccountSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectedAccountSection.swift; sourceTree = ""; }; 2D4AD8A726316D3500613EFC /* SelectedAccountItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectedAccountItem.swift; sourceTree = ""; }; @@ -852,29 +844,19 @@ 2D607AD726242FC500B70763 /* NotificationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewModel.swift; sourceTree = ""; }; 2D6125462625436B00299647 /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = ""; }; 2D61254C262547C200299647 /* APIService+Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Notification.swift"; sourceTree = ""; }; - 2D61335725C188A000CAE157 /* APIService+Persist+Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Persist+Status.swift"; sourceTree = ""; }; 2D61335D25C1894B00CAE157 /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; }; 2D650FAA25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Error+Detail.swift"; sourceTree = ""; }; 2D694A7325F9EB4E0038ADDC /* ContentWarningOverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentWarningOverlayView.swift; sourceTree = ""; }; - 2D69CFF325CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadMoreConfigurableTableViewContainer.swift; sourceTree = ""; }; - 2D69D00925CAA00300C3A1B2 /* APIService+CoreData+Status.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+Status.swift"; sourceTree = ""; }; 2D6DE3FF26141DF600A63F6A /* SearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewModel.swift; sourceTree = ""; }; - 2D76316425C14BD100929FB9 /* PublicTimelineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublicTimelineViewController.swift; sourceTree = ""; }; - 2D76316A25C14D4C00929FB9 /* PublicTimelineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublicTimelineViewModel.swift; sourceTree = ""; }; - 2D76317C25C14DF400929FB9 /* PublicTimelineViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PublicTimelineViewController+Provider.swift"; sourceTree = ""; }; - 2D76318225C14E8F00929FB9 /* PublicTimelineViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PublicTimelineViewModel+Diffable.swift"; sourceTree = ""; }; 2D76319E25C1521200929FB9 /* StatusSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusSection.swift; sourceTree = ""; }; 2D7631A725C1535600929FB9 /* StatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusTableViewCell.swift; sourceTree = ""; }; - 2D7631B225C159F700929FB9 /* Item.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Item.swift; sourceTree = ""; }; 2D7867182625B77500211898 /* NotificationItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationItem.swift; sourceTree = ""; }; - 2D79E700261EA5550011E398 /* APIService+CoreData+Tag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+Tag.swift"; sourceTree = ""; }; 2D82B9FE25E7863200E36F0F /* OnboardingViewControllerAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingViewControllerAppearance.swift; sourceTree = ""; }; 2D82BA0425E7897700E36F0F /* MastodonResendEmailViewModelNavigationDelegateShim.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonResendEmailViewModelNavigationDelegateShim.swift; sourceTree = ""; }; 2D8434F425FF465D00EECE90 /* HomeTimelineNavigationBarTitleViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineNavigationBarTitleViewModel.swift; sourceTree = ""; }; 2D8434FA25FF46B300EECE90 /* HomeTimelineNavigationBarTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineNavigationBarTitleView.swift; sourceTree = ""; }; 2D84350425FF858100EECE90 /* UIScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIScrollView.swift; sourceTree = ""; }; 2D8FCA072637EABB00137F46 /* APIService+FollowRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+FollowRequest.swift"; sourceTree = ""; }; - 2D927F0125C7E4F2004F19B8 /* Mention.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Mention.swift; sourceTree = ""; }; 2D927F0725C7E9A8004F19B8 /* Tag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tag.swift; sourceTree = ""; }; 2D927F0D25C7E9C9004F19B8 /* History.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = History.swift; sourceTree = ""; }; 2D927F1325C7EDD9004F19B8 /* Emoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Emoji.swift; sourceTree = ""; }; @@ -895,16 +877,11 @@ 2DAC9E45262FC9FD0062E1A6 /* SuggestionAccountTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuggestionAccountTableViewCell.swift; sourceTree = ""; }; 2DB72C8B262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Notification+Type.swift"; sourceTree = ""; }; 2DCB73FC2615C13900EC03D4 /* SearchRecommendCollectionHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecommendCollectionHeader.swift; sourceTree = ""; }; - 2DE0FAC02615F04D00CDF649 /* RecommendHashTagSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendHashTagSection.swift; sourceTree = ""; }; - 2DE0FAC72615F5F000CDF649 /* SearchRecommendAccountsCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchRecommendAccountsCollectionViewCell.swift; sourceTree = ""; }; 2DE0FACD2615F7AD00CDF649 /* RecommendAccountSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendAccountSection.swift; sourceTree = ""; }; 2DF123A625C3B0210020F248 /* ActiveLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActiveLabel.swift; sourceTree = ""; }; - 2DF75B9A25D0E27500694EC8 /* StatusProviderFacade.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusProviderFacade.swift; sourceTree = ""; }; - 2DF75BA025D0E29D00694EC8 /* StatusProvider+StatusTableViewCellDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusProvider+StatusTableViewCellDelegate.swift"; sourceTree = ""; }; 2DF75BA625D10E1000694EC8 /* APIService+Favorite.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Favorite.swift"; sourceTree = ""; }; 2DF75BB825D1474100694EC8 /* ManagedObjectObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedObjectObserver.swift; sourceTree = ""; }; 2DF75BC625D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedObjectContextObjectsDidChange.swift; sourceTree = ""; }; - 2DFAD5362617010500F9EE7C /* SearchResultTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultTableViewCell.swift; sourceTree = ""; }; 2E1F6A67FDF9771D3E064FDC /* Pods-Mastodon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.debug.xcconfig"; sourceTree = ""; }; 374AA339A20E0FAC75BCDA6D /* Pods_NotificationService.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NotificationService.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3B7FD8F28DDA8FBCE5562B78 /* Pods-NotificationService.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.asdk - debug.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.asdk - debug.xcconfig"; sourceTree = ""; }; @@ -943,9 +920,7 @@ 5DF1054625F8870E00D6C0D4 /* VideoPlayerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlayerViewModel.swift; sourceTree = ""; }; 5DF1056325F887CB00D6C0D4 /* AVPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AVPlayer.swift; sourceTree = ""; }; 5DF1057825F88A1D00D6C0D4 /* PlayerContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerContainerView.swift; sourceTree = ""; }; - 5DF1057E25F88A4100D6C0D4 /* TouchBlockingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TouchBlockingView.swift; sourceTree = ""; }; 5DF1058425F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NeedsDependency+AVPlayerViewControllerDelegate.swift"; sourceTree = ""; }; - 5DFC35DE262068D20045711D /* SearchViewController+Follow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchViewController+Follow.swift"; sourceTree = ""; }; 6130CBE4B26E3C976ACC1688 /* Pods-ShareActionExtension.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareActionExtension.asdk - debug.xcconfig"; path = "Target Support Files/Pods-ShareActionExtension/Pods-ShareActionExtension.asdk - debug.xcconfig"; sourceTree = ""; }; 75E3471C898DDD9631729B6E /* Pods-Mastodon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.release.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.release.xcconfig"; sourceTree = ""; }; 77EE917BC055E6621C0452B6 /* Pods-ShareActionExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareActionExtension.debug.xcconfig"; path = "Target Support Files/Pods-ShareActionExtension/Pods-ShareActionExtension.debug.xcconfig"; sourceTree = ""; }; @@ -974,6 +949,24 @@ DB0009A826AEE5DC009B9D2D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; name = Base; path = Base.lproj/Intents.intentdefinition; sourceTree = ""; }; DB0009AD26AEE5E4009B9D2D /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Intents.strings; sourceTree = ""; }; DB0140CE25C42AEE00F9F3CF /* OSLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OSLog.swift; sourceTree = ""; }; + DB023D25279FFB0A005AC798 /* ShareActivityProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareActivityProvider.swift; sourceTree = ""; }; + DB023D2727A0FABD005AC798 /* NotificationTableViewCellDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationTableViewCellDelegate.swift; sourceTree = ""; }; + DB023D2927A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceProvider+NotificationTableViewCellDelegate.swift"; sourceTree = ""; }; + DB023D2B27A10464005AC798 /* NotificationTimelineViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationTimelineViewController+DataSourceProvider.swift"; sourceTree = ""; }; + DB025B77278D606A002F581E /* StatusItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusItem.swift; sourceTree = ""; }; + DB025B79278D6138002F581E /* CoreData 3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "CoreData 3.xcdatamodel"; sourceTree = ""; }; + DB025B7D278D6247002F581E /* AutoGenerateProperty.stencil */ = {isa = PBXFileReference; lastKnownFileType = text; path = AutoGenerateProperty.stencil; sourceTree = ""; }; + DB025B7E278D6247002F581E /* AutoUpdatableObject.stencil */ = {isa = PBXFileReference; lastKnownFileType = text; path = AutoUpdatableObject.stencil; sourceTree = ""; }; + DB025B7F278D6247002F581E /* AutoGenerateRelationship.stencil */ = {isa = PBXFileReference; lastKnownFileType = text; path = AutoGenerateRelationship.stencil; sourceTree = ""; }; + DB025B81278D6271002F581E /* AutoGenerateProperty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoGenerateProperty.swift; sourceTree = ""; }; + DB025B82278D6272002F581E /* AutoUpdatableObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoUpdatableObject.swift; sourceTree = ""; }; + DB025B83278D6272002F581E /* AutoGenerateRelationship.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoGenerateRelationship.swift; sourceTree = ""; }; + DB025B88278D6339002F581E /* Feed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Feed.swift; sourceTree = ""; }; + DB025B8B278D6374002F581E /* Acct.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Acct.swift; sourceTree = ""; }; + DB025B8F278D6489002F581E /* Feed+Kind.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Feed+Kind.swift"; sourceTree = ""; }; + DB025B92278D6501002F581E /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = ""; }; + DB025B94278D6530002F581E /* Persistence+MastodonUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+MastodonUser.swift"; sourceTree = ""; }; + DB025B96278D66D5002F581E /* MastodonUser+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonUser+Property.swift"; sourceTree = ""; }; DB029E94266A20430062874E /* MastodonAuthenticationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAuthenticationController.swift; sourceTree = ""; }; DB02CDAA26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadReplyLoaderTableViewCell.swift; sourceTree = ""; }; DB02CDBE2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveUserInterfaceStyleBarButtonItem.swift; sourceTree = ""; }; @@ -996,24 +989,50 @@ DB0618092785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterAvatarTableViewCell.swift; sourceTree = ""; }; DB084B5625CBC56C00F898ED /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = ""; }; DB0AC6FB25CD02E600D75117 /* APIService+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Instance.swift"; sourceTree = ""; }; - DB0C946A26A700AB0088FB11 /* MastodonUser+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonUser+Property.swift"; sourceTree = ""; }; - DB0C946E26A7D2A80088FB11 /* AvatarImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarImageView.swift; sourceTree = ""; }; - DB0C947126A7D2D70088FB11 /* AvatarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarButton.swift; sourceTree = ""; }; DB0C947626A7FE840088FB11 /* NotificationAvatarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationAvatarButton.swift; sourceTree = ""; }; - DB0E91E926A9675100BD2ACC /* MetaLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaLabel.swift; sourceTree = ""; }; DB0EF72A26FDB1D200347686 /* SidebarListCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarListCollectionViewCell.swift; sourceTree = ""; }; DB0EF72D26FDB24F00347686 /* SidebarListContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarListContentView.swift; sourceTree = ""; }; - DB0F814D264CFFD300F2A12B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; DB0F814E264CFFD300F2A12B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = ""; }; DB0F814F264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerLoaderTableViewCell.swift; sourceTree = ""; }; + DB0FCB67279507EF006C02E2 /* DataSourceFacade+Meta.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Meta.swift"; sourceTree = ""; }; + DB0FCB6927950CB3006C02E2 /* MastodonMention.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonMention.swift; sourceTree = ""; }; + DB0FCB6B27950E29006C02E2 /* MastodonMentionContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonMentionContainer.swift; sourceTree = ""; }; + DB0FCB6D27950E6B006C02E2 /* MastodonMention.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonMention.swift; sourceTree = ""; }; + DB0FCB6F27951368006C02E2 /* TimelineMiddleLoaderTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TimelineMiddleLoaderTableViewCell+ViewModel.swift"; sourceTree = ""; }; + DB0FCB7127952986006C02E2 /* NamingState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NamingState.swift; sourceTree = ""; }; + DB0FCB7327956939006C02E2 /* DataSourceFacade+Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Status.swift"; sourceTree = ""; }; + DB0FCB75279571C5006C02E2 /* ThreadViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ThreadViewController+DataSourceProvider.swift"; sourceTree = ""; }; + DB0FCB7727957678006C02E2 /* DataSourceProvider+UITableViewDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceProvider+UITableViewDelegate.swift"; sourceTree = ""; }; + DB0FCB79279576A2006C02E2 /* DataSourceFacade+Thread.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Thread.swift"; sourceTree = ""; }; + DB0FCB7B2795821F006C02E2 /* StatusThreadRootTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusThreadRootTableViewCell.swift; sourceTree = ""; }; + DB0FCB7D27958957006C02E2 /* StatusThreadRootTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusThreadRootTableViewCell+ViewModel.swift"; sourceTree = ""; }; + DB0FCB7F27968F70006C02E2 /* MastodonStatusThreadViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonStatusThreadViewModel.swift; sourceTree = ""; }; + DB0FCB812796AC78006C02E2 /* UserTimelineViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserTimelineViewController+DataSourceProvider.swift"; sourceTree = ""; }; + DB0FCB832796B2A2006C02E2 /* FavoriteViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewController+DataSourceProvider.swift"; sourceTree = ""; }; + DB0FCB852796BDA1006C02E2 /* SearchSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchSection.swift; sourceTree = ""; }; + DB0FCB872796BDA9006C02E2 /* SearchItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchItem.swift; sourceTree = ""; }; + DB0FCB8B2796BF8D006C02E2 /* SearchViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchViewModel+Diffable.swift"; sourceTree = ""; }; + DB0FCB8D2796C0B7006C02E2 /* TrendCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrendCollectionViewCell.swift; sourceTree = ""; }; + DB0FCB8F2796C5EB006C02E2 /* APIService+Trend.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Trend.swift"; sourceTree = ""; }; + DB0FCB912796DE19006C02E2 /* TrendSectionHeaderCollectionReusableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrendSectionHeaderCollectionReusableView.swift; sourceTree = ""; }; + DB0FCB932797E2B0006C02E2 /* SearchResultViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchResultViewModel+Diffable.swift"; sourceTree = ""; }; + DB0FCB952797E6C2006C02E2 /* SearchResultViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchResultViewController+DataSourceProvider.swift"; sourceTree = ""; }; + DB0FCB972797F6BF006C02E2 /* UserTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserTableViewCell+ViewModel.swift"; sourceTree = ""; }; + DB0FCB992797F7AD006C02E2 /* UserView+Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserView+Configuration.swift"; sourceTree = ""; }; + DB0FCB9B27980AB6006C02E2 /* HashtagTimelineViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HashtagTimelineViewController+DataSourceProvider.swift"; sourceTree = ""; }; DB118A8125E4B6E600FAB162 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + DB126A4C278C063F005726EE /* eu-ES */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "eu-ES"; path = "eu-ES.lproj/Intents.strings"; sourceTree = ""; }; + DB126A4F278C063F005726EE /* eu-ES */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "eu-ES"; path = "eu-ES.lproj/InfoPlist.strings"; sourceTree = ""; }; + DB126A50278C063F005726EE /* eu-ES */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "eu-ES"; path = "eu-ES.lproj/Intents.stringsdict"; sourceTree = ""; }; + DB126A56278C088D005726EE /* sv-FI */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-FI"; path = "sv-FI.lproj/Intents.strings"; sourceTree = ""; }; + DB126A59278C088D005726EE /* sv-FI */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "sv-FI"; path = "sv-FI.lproj/InfoPlist.strings"; sourceTree = ""; }; + DB126A5A278C088D005726EE /* sv-FI */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "sv-FI"; path = "sv-FI.lproj/Intents.stringsdict"; sourceTree = ""; }; + DB159C2A27A17BAC0068DC77 /* DataSourceFacade+Media.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Media.swift"; sourceTree = ""; }; DB1D186B25EF5BA7003F1F23 /* PollTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollTableView.swift; sourceTree = ""; }; DB1D61CE26F1B33600DA8662 /* WelcomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeViewModel.swift; sourceTree = ""; }; - DB1D842B26551A1C000346B3 /* StatusProvider+StatusTableViewKeyCommandNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusProvider+StatusTableViewKeyCommandNavigateable.swift"; sourceTree = ""; }; DB1D842D26552C4D000346B3 /* StatusTableViewControllerNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusTableViewControllerNavigateable.swift; sourceTree = ""; }; DB1D842F26566512000346B3 /* KeyboardPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardPreference.swift; sourceTree = ""; }; DB1D843326579931000346B3 /* TableViewControllerNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableViewControllerNavigateable.swift; sourceTree = ""; }; - DB1D843526579DB5000346B3 /* StatusProvider+TableViewControllerNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusProvider+TableViewControllerNavigateable.swift"; sourceTree = ""; }; DB1D84372657B275000346B3 /* SegmentedControlNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegmentedControlNavigateable.swift; sourceTree = ""; }; DB1E346725F518E20079D7DF /* CategoryPickerSection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CategoryPickerSection.swift; sourceTree = ""; }; DB1E347725F519300079D7DF /* PickServerItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PickServerItem.swift; sourceTree = ""; }; @@ -1027,8 +1046,26 @@ DB2B3ABD25E37E15007045F9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; DB2F073325E8ECF000957B2D /* AuthenticationViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthenticationViewModel.swift; sourceTree = ""; }; DB2FF50F260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollExpiresOptionCollectionViewCell.swift; sourceTree = ""; }; + DB336F1D278D6C3A0031E64B /* MastodonEmoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonEmoji.swift; sourceTree = ""; }; + DB336F20278D6D960031E64B /* MastodonEmoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonEmoji.swift; sourceTree = ""; }; + DB336F22278D6DED0031E64B /* MastodonEmojiContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonEmojiContainer.swift; sourceTree = ""; }; + DB336F25278D6E8F0031E64B /* MastodonField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonField.swift; sourceTree = ""; }; + DB336F27278D6EC70031E64B /* MastodonFieldContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonFieldContainer.swift; sourceTree = ""; }; + DB336F29278D6F2B0031E64B /* MastodonField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonField.swift; sourceTree = ""; }; + DB336F2B278D6FC30031E64B /* Persistence+Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+Status.swift"; sourceTree = ""; }; + DB336F2D278D71AF0031E64B /* Status+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Status+Property.swift"; sourceTree = ""; }; + DB336F2F278D723D0031E64B /* MastodonVisibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonVisibility.swift; sourceTree = ""; }; + DB336F31278D77330031E64B /* Persistence+Poll.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+Poll.swift"; sourceTree = ""; }; + DB336F33278D77730031E64B /* Persistence+PollOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+PollOption.swift"; sourceTree = ""; }; + DB336F35278D77A40031E64B /* PollOption+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PollOption+Property.swift"; sourceTree = ""; }; + DB336F37278D7AAF0031E64B /* Poll+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Poll+Property.swift"; sourceTree = ""; }; + DB336F39278D7D1F0031E64B /* ManagedObjectRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedObjectRecord.swift; sourceTree = ""; }; + DB336F3C278D80040031E64B /* FeedFetchedResultsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedFetchedResultsController.swift; sourceTree = ""; }; + DB336F3E278E668C0031E64B /* StatusTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusTableViewCell+ViewModel.swift"; sourceTree = ""; }; + DB336F40278E68480031E64B /* StatusView+Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusView+Configuration.swift"; sourceTree = ""; }; + DB336F42278EB1680031E64B /* MediaView+Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MediaView+Configuration.swift"; sourceTree = ""; }; + DB336F44278EB1D70031E64B /* MastodonAttachment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAttachment.swift; sourceTree = ""; }; DB35FC1E2612F1D9006193C9 /* ProfileRelationshipActionButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileRelationshipActionButton.swift; sourceTree = ""; }; - DB35FC242612FD7A006193C9 /* ProfileFieldView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldView.swift; sourceTree = ""; }; DB36679C268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusAttachmentTableViewCell.swift; sourceTree = ""; }; DB36679E268ABAF20027D07F /* ComposeStatusAttachmentSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusAttachmentSection.swift; sourceTree = ""; }; DB3667A0268ABB2E0027D07F /* ComposeStatusAttachmentItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusAttachmentItem.swift; sourceTree = ""; }; @@ -1036,7 +1073,6 @@ DB3667A5268AE2620027D07F /* ComposeStatusPollSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollSection.swift; sourceTree = ""; }; DB3667A7268AE2900027D07F /* ComposeStatusPollItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollItem.swift; sourceTree = ""; }; DB3D0FED25BAA42200EAA174 /* MastodonSDK */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MastodonSDK; sourceTree = ""; }; - DB3D100E25BAA75E00EAA174 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; DB427DD225BAA00100D1B89D /* Mastodon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mastodon.app; sourceTree = BUILT_PRODUCTS_DIR; }; DB427DD525BAA00100D1B89D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; DB427DD725BAA00100D1B89D /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -1059,11 +1095,8 @@ DB4481AC25EE155900BEFB67 /* Poll.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Poll.swift; sourceTree = ""; }; DB4481B225EE16D000BEFB67 /* PollOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollOption.swift; sourceTree = ""; }; DB4481B825EE289600BEFB67 /* UITableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UITableView.swift; sourceTree = ""; }; - DB4481C525EE2ADA00BEFB67 /* PollSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollSection.swift; sourceTree = ""; }; - DB4481CB25EE2AFE00BEFB67 /* PollItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollItem.swift; sourceTree = ""; }; DB45FAB525CA5485005A8AC7 /* UIAlertController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIAlertController.swift; sourceTree = ""; }; DB45FAD625CA6C76005A8AC7 /* UIBarButtonItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIBarButtonItem.swift; sourceTree = ""; }; - DB45FADC25CA6F6B005A8AC7 /* APIService+CoreData+MastodonUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+MastodonUser.swift"; sourceTree = ""; }; DB45FAE225CA7181005A8AC7 /* MastodonUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonUser.swift; sourceTree = ""; }; DB45FAEC25CA7A9A005A8AC7 /* MastodonAuthentication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAuthentication.swift; sourceTree = ""; }; DB45FAF825CA80A2005A8AC7 /* APIService+CoreData+MastodonAuthentication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+MastodonAuthentication.swift"; sourceTree = ""; }; @@ -1071,11 +1104,9 @@ DB45FB1C25CA9D23005A8AC7 /* APIService+HomeTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+HomeTimeline.swift"; sourceTree = ""; }; DB47229625F9EFAD00DA7F53 /* NSManagedObjectContext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSManagedObjectContext.swift; sourceTree = ""; }; DB482A3E261331E8008AE74C /* UserTimelineViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserTimelineViewModel+State.swift"; sourceTree = ""; }; - DB482A44261335BA008AE74C /* UserTimelineViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserTimelineViewController+Provider.swift"; sourceTree = ""; }; DB482A4A261340A7008AE74C /* APIService+UserTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+UserTimeline.swift"; sourceTree = ""; }; DB4924E126312AB200E9DB22 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; DB4932B026F1FB5300EF46D4 /* WizardCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WizardCardView.swift; sourceTree = ""; }; - DB4932B226F2054200EF46D4 /* CircleAvatarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CircleAvatarButton.swift; sourceTree = ""; }; DB4932B826F31AD300EF46D4 /* BadgeButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgeButton.swift; sourceTree = ""; }; DB49A61325FF2C5600B98345 /* EmojiService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiService.swift; sourceTree = ""; }; DB49A61E25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EmojiService+CustomEmojiViewModel.swift"; sourceTree = ""; }; @@ -1083,13 +1114,9 @@ DB49A62A25FF36C700B98345 /* APIService+CustomEmoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+CustomEmoji.swift"; sourceTree = ""; }; DB49A63C25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PlayerContainerView+MediaTypeIndicotorView.swift"; sourceTree = ""; }; DB4B777F26CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Intents.strings; sourceTree = ""; }; - DB4B778026CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Localizable.stringsdict; sourceTree = ""; }; - DB4B778126CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; DB4B778226CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; DB4B778326CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Intents.stringsdict; sourceTree = ""; }; DB4B778426CA500E00B087B3 /* gd-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "gd-GB"; path = "gd-GB.lproj/Intents.strings"; sourceTree = ""; }; - DB4B778526CA500E00B087B3 /* gd-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "gd-GB"; path = "gd-GB.lproj/Localizable.stringsdict"; sourceTree = ""; }; - DB4B778626CA500E00B087B3 /* gd-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "gd-GB"; path = "gd-GB.lproj/Localizable.strings"; sourceTree = ""; }; DB4B778726CA500E00B087B3 /* gd-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "gd-GB"; path = "gd-GB.lproj/InfoPlist.strings"; sourceTree = ""; }; DB4B778826CA500E00B087B3 /* gd-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "gd-GB"; path = "gd-GB.lproj/Intents.stringsdict"; sourceTree = ""; }; DB4B778926CA504100B087B3 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = es; path = es.lproj/Intents.stringsdict; sourceTree = ""; }; @@ -1102,15 +1129,12 @@ DB4B779026CA504900B087B3 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Intents.stringsdict; sourceTree = ""; }; DB4B779126CA504A00B087B3 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ja; path = ja.lproj/Intents.stringsdict; sourceTree = ""; }; DB4B779226CA50BA00B087B3 /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = th; path = th.lproj/Intents.strings; sourceTree = ""; }; - DB4B779326CA50BA00B087B3 /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = th; path = th.lproj/Localizable.stringsdict; sourceTree = ""; }; - DB4B779426CA50BA00B087B3 /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = th; path = th.lproj/Localizable.strings; sourceTree = ""; }; DB4B779526CA50BA00B087B3 /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = th; path = th.lproj/InfoPlist.strings; sourceTree = ""; }; DB4B779626CA50BA00B087B3 /* th */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = th; path = th.lproj/Intents.stringsdict; sourceTree = ""; }; DB4F0962269ED06300D62E92 /* SearchResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultViewController.swift; sourceTree = ""; }; DB4F0965269ED52200D62E92 /* SearchResultViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultViewModel.swift; sourceTree = ""; }; DB4F0967269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistoryTableHeaderView.swift; sourceTree = ""; }; DB4F0969269EDAD200D62E92 /* SearchResultViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchResultViewModel+State.swift"; sourceTree = ""; }; - DB4F096B269EFA2000D62E92 /* SearchResultViewController+StatusProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchResultViewController+StatusProvider.swift"; sourceTree = ""; }; DB4F097426A037F500D62E92 /* SearchHistoryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistoryViewModel.swift; sourceTree = ""; }; DB4F097A26A039FF00D62E92 /* SearchHistorySection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistorySection.swift; sourceTree = ""; }; DB4F097C26A03A5B00D62E92 /* SearchHistoryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistoryItem.swift; sourceTree = ""; }; @@ -1119,18 +1143,14 @@ DB4FFC2A269EC39600D62E92 /* SearchTransitionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchTransitionController.swift; sourceTree = ""; }; DB51D170262832380062B7A1 /* BlurHashDecode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlurHashDecode.swift; sourceTree = ""; }; DB51D171262832380062B7A1 /* BlurHashEncode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlurHashEncode.swift; sourceTree = ""; }; - DB564BCF269F2F83001E39A7 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ar; path = ar.lproj/Localizable.stringsdict; sourceTree = ""; }; - DB564BD1269F2F8A001E39A7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = ""; }; DB564BD2269F3B35001E39A7 /* StatusFilterService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusFilterService.swift; sourceTree = ""; }; - DB59F0FD25EF5D96001F1DAB /* StatusProvider+UITableViewDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusProvider+UITableViewDelegate.swift"; sourceTree = ""; }; - DB59F10325EF5EBC001F1DAB /* TableViewCellHeightCacheableContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableViewCellHeightCacheableContainer.swift; sourceTree = ""; }; DB59F10D25EF724F001F1DAB /* APIService+Poll.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Poll.swift"; sourceTree = ""; }; - DB59F11725EFA35B001F1DAB /* StripProgressView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StripProgressView.swift; sourceTree = ""; }; DB5B7294273112B100081888 /* FollowingListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowingListViewController.swift; sourceTree = ""; }; DB5B7297273112C800081888 /* FollowingListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowingListViewModel.swift; sourceTree = ""; }; - DB5B72992731137900081888 /* FollowingListViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FollowingListViewController+Provider.swift"; sourceTree = ""; }; DB5B729B273113C200081888 /* FollowingListViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FollowingListViewModel+Diffable.swift"; sourceTree = ""; }; DB5B729D273113F300081888 /* FollowingListViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FollowingListViewModel+State.swift"; sourceTree = ""; }; + DB603110279EB38500A935FE /* DataSourceFacade+Mute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Mute.swift"; sourceTree = ""; }; + DB603112279EBEBA00A935FE /* DataSourceFacade+Block.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Block.swift"; sourceTree = ""; }; DB6180DC263918E30018D199 /* MediaPreviewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewViewController.swift; sourceTree = ""; }; DB6180DF2639194B0018D199 /* MediaPreviewPagingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewPagingViewController.swift; sourceTree = ""; }; DB6180E226391A4C0018D199 /* ViewControllerAnimatedTransitioning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewControllerAnimatedTransitioning.swift; sourceTree = ""; }; @@ -1144,11 +1164,40 @@ DB6180F526391D580018D199 /* MediaPreviewableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewableViewController.swift; sourceTree = ""; }; DB6180F726391D660018D199 /* MediaPreviewingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewingViewController.swift; sourceTree = ""; }; DB6180F926391F2E0018D199 /* MediaPreviewViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewViewModel.swift; sourceTree = ""; }; - DB63BE7E268DD1070011D3F9 /* NotificationViewController+StatusProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewController+StatusProvider.swift"; sourceTree = ""; }; + DB63F7442799056400455B82 /* HashtagTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagTableViewCell.swift; sourceTree = ""; }; + DB63F74627990B0600455B82 /* DataSourceFacade+Hashtag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Hashtag.swift"; sourceTree = ""; }; + DB63F7482799126300455B82 /* FollowerListViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FollowerListViewController+DataSourceProvider.swift"; sourceTree = ""; }; + DB63F74A279914A000455B82 /* FollowingListViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FollowingListViewController+DataSourceProvider.swift"; sourceTree = ""; }; + DB63F74C27993F5B00455B82 /* SearchHistoryUserCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistoryUserCollectionViewCell.swift; sourceTree = ""; }; + DB63F74E2799405600455B82 /* SearchHistoryViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchHistoryViewModel+Diffable.swift"; sourceTree = ""; }; + DB63F751279944AA00455B82 /* SearchHistorySectionHeaderCollectionReusableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistorySectionHeaderCollectionReusableView.swift; sourceTree = ""; }; + DB63F7532799491600455B82 /* DataSourceFacade+SearchHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+SearchHistory.swift"; sourceTree = ""; }; + DB63F755279949BD00455B82 /* Persistence+SearchHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+SearchHistory.swift"; sourceTree = ""; }; + DB63F759279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchHistoryUserCollectionViewCell+ViewModel.swift"; sourceTree = ""; }; + DB63F75B279956D000455B82 /* Persistence+Tag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+Tag.swift"; sourceTree = ""; }; + DB63F75D27995B3B00455B82 /* Tag+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Tag+Property.swift"; sourceTree = ""; }; + DB63F75F27995ECE00455B82 /* MastodonTagHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonTagHistory.swift; sourceTree = ""; }; + DB63F76127996B6600455B82 /* SearchHistoryViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchHistoryViewController+DataSourceProvider.swift"; sourceTree = ""; }; + DB63F763279A5E3C00455B82 /* NotificationTimelineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationTimelineViewController.swift; sourceTree = ""; }; + DB63F766279A5EB300455B82 /* NotificationTimelineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationTimelineViewModel.swift; sourceTree = ""; }; + DB63F768279A5EBB00455B82 /* NotificationTimelineViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationTimelineViewModel+Diffable.swift"; sourceTree = ""; }; + DB63F76A279A5ED300455B82 /* NotificationTimelineViewModel+LoadOldestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationTimelineViewModel+LoadOldestState.swift"; sourceTree = ""; }; + DB63F76C279A67BD00455B82 /* MastodonNotificationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonNotificationType.swift; sourceTree = ""; }; + DB63F76E279A7D1100455B82 /* NotificationTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationTableViewCell.swift; sourceTree = ""; }; + DB63F770279A858500455B82 /* Persistence+Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+Notification.swift"; sourceTree = ""; }; + DB63F772279A87DC00455B82 /* Notification+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+Property.swift"; sourceTree = ""; }; + DB63F774279A997D00455B82 /* NotificationTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationTableViewCell+ViewModel.swift"; sourceTree = ""; }; + DB63F776279A9A2A00455B82 /* NotificationView+Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationView+Configuration.swift"; sourceTree = ""; }; + DB63F778279ABF9C00455B82 /* DataSourceFacade+Reblog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Reblog.swift"; sourceTree = ""; }; + DB63F77A279ACAE500455B82 /* DataSourceFacade+Favorite.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Favorite.swift"; sourceTree = ""; }; DB647C5826F1EA2700F7F82C /* WizardPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WizardPreference.swift; sourceTree = ""; }; + DB65C63627A2AF6C008BAC2E /* ReportItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportItem.swift; sourceTree = ""; }; DB66728B25F9F8DC00D60309 /* ComposeViewModel+DataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ComposeViewModel+DataSource.swift"; sourceTree = ""; }; DB66729525F9F91600D60309 /* ComposeStatusSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusSection.swift; sourceTree = ""; }; DB66729B25F9F91F00D60309 /* ComposeStatusItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusItem.swift; sourceTree = ""; }; + DB6746EA278ED8B0008A6B94 /* PollOptionView+Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PollOptionView+Configuration.swift"; sourceTree = ""; }; + DB6746EC278F45F0008A6B94 /* AutoGenerateProtocolRelayDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoGenerateProtocolRelayDelegate.swift; sourceTree = ""; }; + DB6746EF278F463B008A6B94 /* AutoGenerateProtocolDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoGenerateProtocolDelegate.swift; sourceTree = ""; }; DB67D08327312970006A36CF /* APIService+Following.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Following.swift"; sourceTree = ""; }; DB67D08527312E67006A36CF /* WizardViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WizardViewController.swift; sourceTree = ""; }; DB67D088273256D7006A36CF /* StoreReviewPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreReviewPreference.swift; sourceTree = ""; }; @@ -1164,18 +1213,24 @@ DB68A04925E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdaptiveStatusBarStyleNavigationController.swift; sourceTree = ""; }; DB68A05C25E9055900CFDF14 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; DB68A06225E905E000CFDF14 /* UIApplication.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIApplication.swift; sourceTree = ""; }; + DB697DD0278F4871004EF2F7 /* AutoGenerateTableViewDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoGenerateTableViewDelegate.swift; sourceTree = ""; }; + DB697DD3278F4927004EF2F7 /* StatusTableViewCellDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusTableViewCellDelegate.swift; sourceTree = ""; }; + DB697DD5278F4C29004EF2F7 /* DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataSourceProvider.swift; sourceTree = ""; }; + DB697DD8278F4CED004EF2F7 /* HomeTimelineViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeTimelineViewController+DataSourceProvider.swift"; sourceTree = ""; }; + DB697DDA278F4DE3004EF2F7 /* DataSourceProvider+StatusTableViewCellDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceProvider+StatusTableViewCellDelegate.swift"; sourceTree = ""; }; + DB697DDC278F521D004EF2F7 /* DataSourceFacade.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataSourceFacade.swift; sourceTree = ""; }; + DB697DDE278F524F004EF2F7 /* DataSourceFacade+Profile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Profile.swift"; sourceTree = ""; }; + DB697DE0278F5296004EF2F7 /* DataSourceFacade+Model.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Model.swift"; sourceTree = ""; }; DB6B35172601FA3400DC1E11 /* MastodonAttachmentService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAttachmentService.swift; sourceTree = ""; }; DB6B351D2601FAEE00DC1E11 /* ComposeStatusAttachmentCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusAttachmentCollectionViewCell.swift; sourceTree = ""; }; DB6B74EE272FB55000C70B6E /* FollowerListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowerListViewController.swift; sourceTree = ""; }; DB6B74F1272FB67600C70B6E /* FollowerListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FollowerListViewModel.swift; sourceTree = ""; }; DB6B74F3272FBAE700C70B6E /* FollowerListViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FollowerListViewModel+Diffable.swift"; sourceTree = ""; }; DB6B74F5272FBCDB00C70B6E /* FollowerListViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FollowerListViewModel+State.swift"; sourceTree = ""; }; - DB6B74F7272FBFB100C70B6E /* FollowerListViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FollowerListViewController+Provider.swift"; sourceTree = ""; }; DB6B74F9272FC2B500C70B6E /* APIService+Follower.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Follower.swift"; sourceTree = ""; }; DB6B74FB272FF55800C70B6E /* UserSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSection.swift; sourceTree = ""; }; DB6B74FD272FF59000C70B6E /* UserItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserItem.swift; sourceTree = ""; }; DB6B74FF272FF73800C70B6E /* UserTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserTableViewCell.swift; sourceTree = ""; }; - DB6B75012730060700C70B6E /* UserProviderFacade+UITableViewDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserProviderFacade+UITableViewDelegate.swift"; sourceTree = ""; }; DB6B750327300B4000C70B6E /* TimelineFooterTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineFooterTableViewCell.swift; sourceTree = ""; }; DB6C8C0E25F0A6AE00AAA452 /* Mastodon+Entity+Error.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Error.swift"; sourceTree = ""; }; DB6D1B3C2636857500ACB481 /* AppearancePreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppearancePreference.swift; sourceTree = ""; }; @@ -1194,11 +1249,6 @@ DB6F5E37264E994A009108F4 /* AutoCompleteTopChevronView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoCompleteTopChevronView.swift; sourceTree = ""; }; DB71C7CA271D5A0300BE3819 /* LineChartView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LineChartView.swift; sourceTree = ""; }; DB71C7CC271D7F4300BE3819 /* CurveAlgorithm.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurveAlgorithm.swift; sourceTree = ""; }; - DB71FD2B25F86A5100512AE1 /* AvatarStackContainerButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarStackContainerButton.swift; sourceTree = ""; }; - DB71FD3525F8A16C00512AE1 /* APIService+Persist+PersistMemo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Persist+PersistMemo.swift"; sourceTree = ""; }; - DB71FD3B25F8A1C500512AE1 /* APIService+Persist+PersistCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Persist+PersistCache.swift"; sourceTree = ""; }; - DB71FD4525F8C6D200512AE1 /* StatusProvider+UITableViewDataSourcePrefetching.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusProvider+UITableViewDataSourcePrefetching.swift"; sourceTree = ""; }; - DB71FD4B25F8C80E00512AE1 /* StatusPrefetchingService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusPrefetchingService.swift; sourceTree = ""; }; DB71FD5125F8CCAA00512AE1 /* APIService+Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Status.swift"; sourceTree = ""; }; DB72601B25E36A2100235243 /* MastodonServerRulesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonServerRulesViewController.swift; sourceTree = ""; }; DB72602625E36A6F00235243 /* MastodonServerRulesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonServerRulesViewModel.swift; sourceTree = ""; }; @@ -1222,9 +1272,7 @@ DB852D1B26FB021500FC9D81 /* RootSplitViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootSplitViewController.swift; sourceTree = ""; }; DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarViewModel.swift; sourceTree = ""; }; DB87D4442609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollOptionCollectionViewCell.swift; sourceTree = ""; }; - DB87D44A2609C11900D12C0D /* PollOptionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollOptionView.swift; sourceTree = ""; }; DB87D4502609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollOptionAppendEntryCollectionViewCell.swift; sourceTree = ""; }; - DB87D4562609DD5300D12C0D /* DeleteBackwardResponseTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteBackwardResponseTextField.swift; sourceTree = ""; }; DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreDataStack.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DB89B9F025C10FD0008580ED /* CoreDataStack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreDataStack.h; sourceTree = ""; }; DB89B9F125C10FD0008580ED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -1249,6 +1297,7 @@ DB8AF54F25C13703002E6C99 /* MainTabBarController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = ""; }; DB8AF55C25C138B7002E6C99 /* UIViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewController.swift; sourceTree = ""; }; DB8AF56725C13E2A002E6C99 /* HomeTimelineIndex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineIndex.swift; sourceTree = ""; }; + DB8F7075279E954700E1225B /* DataSourceFacade+Follow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Follow.swift"; sourceTree = ""; }; DB8FAB9E26AEC3A2008E5AF4 /* Intents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Intents.framework; path = System/Library/Frameworks/Intents.framework; sourceTree = SDKROOT; }; DB8FABA926AEC3A2008E5AF4 /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; }; DB8FABC626AEC7B2008E5AF4 /* MastodonIntent.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = MastodonIntent.appex; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1256,7 +1305,6 @@ DB8FABCB26AEC7B2008E5AF4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; DB8FABD626AEC864008E5AF4 /* MastodonIntent.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = MastodonIntent.entitlements; sourceTree = ""; }; DB9282B125F3222800823B15 /* PickServerEmptyStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerEmptyStateView.swift; sourceTree = ""; }; - DB92CF7125E7BB98002C1017 /* PollOptionTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollOptionTableViewCell.swift; sourceTree = ""; }; DB938EE52623F50700E5B6C1 /* ThreadViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadViewController.swift; sourceTree = ""; }; DB938EEC2623F79B00E5B6C1 /* ThreadViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadViewModel.swift; sourceTree = ""; }; DB938F0226240EA300E5B6C1 /* CachedThreadViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CachedThreadViewModel.swift; sourceTree = ""; }; @@ -1264,14 +1312,10 @@ DB938F0E2624119800E5B6C1 /* ThreadViewModel+LoadThreadState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ThreadViewModel+LoadThreadState.swift"; sourceTree = ""; }; DB938F1426241FDF00E5B6C1 /* APIService+Thread.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Thread.swift"; sourceTree = ""; }; DB938F1E2624382F00E5B6C1 /* ThreadViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ThreadViewModel+Diffable.swift"; sourceTree = ""; }; - DB938F24262438D600E5B6C1 /* ThreadViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ThreadViewController+Provider.swift"; sourceTree = ""; }; DB938F3226243D6200E5B6C1 /* TimelineTopLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineTopLoaderTableViewCell.swift; sourceTree = ""; }; - DB97131E2666078B00BD1E90 /* Date.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Date.swift; sourceTree = ""; }; DB98336A25C9420100AD9700 /* APIService+App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+App.swift"; sourceTree = ""; }; DB98337025C9443200AD9700 /* APIService+Authentication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Authentication.swift"; sourceTree = ""; }; DB98337E25C9452D00AD9700 /* APIService+APIError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+APIError.swift"; sourceTree = ""; }; - DB98338525C945ED00AD9700 /* Strings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Strings.swift; sourceTree = ""; }; - DB98338625C945ED00AD9700 /* Assets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Assets.swift; sourceTree = ""; }; DB98339B25C96DE600AD9700 /* APIService+Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Account.swift"; sourceTree = ""; }; DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AttachmentContainerView+EmptyStateView.swift"; sourceTree = ""; }; DB9A488926034D40008B817C /* ComposeViewModel+PublishState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ComposeViewModel+PublishState.swift"; sourceTree = ""; }; @@ -1282,8 +1326,6 @@ DB9D6BFE25E4F5940051B173 /* ProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewController.swift; sourceTree = ""; }; DB9D6C0D25E4F9780051B173 /* MosaicImageViewContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MosaicImageViewContainer.swift; sourceTree = ""; }; DB9D6C2225E502C60051B173 /* MosaicImageViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MosaicImageViewModel.swift; sourceTree = ""; }; - DB9D6C2D25E504AC0051B173 /* Attachment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Attachment.swift; sourceTree = ""; }; - DB9D6C3725E508BE0051B173 /* Attachment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Attachment.swift; sourceTree = ""; }; DB9D7C20269824B80054B3DF /* APIService+Filter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Filter.swift"; sourceTree = ""; }; DB9E0D6E25EE008500CFDD76 /* UIInterpolatingMotionEffect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIInterpolatingMotionEffect.swift; sourceTree = ""; }; DB9F58EB26EF435000E7BBE9 /* AccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewController.swift; sourceTree = ""; }; @@ -1291,36 +1333,21 @@ DB9F58F026EF512300E7BBE9 /* AccountListTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountListTableViewCell.swift; sourceTree = ""; }; DBA088DE26958164003EB4B2 /* UserFetchedResultsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserFetchedResultsController.swift; sourceTree = ""; }; DBA0A11225FB3FC10079C110 /* ComposeToolbarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeToolbarView.swift; sourceTree = ""; }; - DBA1DB7F268F84F80052DB59 /* NotificationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationType.swift; sourceTree = ""; }; DBA465922696B495002B41DB /* APIService+WebFinger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+WebFinger.swift"; sourceTree = ""; }; DBA465942696E387002B41DB /* AppPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppPreference.swift; sourceTree = ""; }; DBA4B0D326BD10AC0077136E /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Intents.strings"; sourceTree = ""; }; - DBA4B0D426BD10AD0077136E /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.stringsdict"; sourceTree = ""; }; - DBA4B0D526BD10AD0077136E /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; DBA4B0D626BD10AD0077136E /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; DBA4B0D726BD10F40077136E /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Intents.strings; sourceTree = ""; }; - DBA4B0D826BD10F40077136E /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ca; path = ca.lproj/Localizable.stringsdict; sourceTree = ""; }; - DBA4B0D926BD10F40077136E /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = ""; }; DBA4B0DA26BD10F40077136E /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/InfoPlist.strings; sourceTree = ""; }; DBA4B0DB26BD11130077136E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Intents.strings; sourceTree = ""; }; - DBA4B0DC26BD11130077136E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Localizable.stringsdict; sourceTree = ""; }; - DBA4B0DD26BD11130077136E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; DBA4B0DE26BD11130077136E /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/InfoPlist.strings; sourceTree = ""; }; DBA4B0DF26BD11C70077136E /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Intents.strings; sourceTree = ""; }; - DBA4B0E026BD11C70077136E /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = es; path = es.lproj/Localizable.stringsdict; sourceTree = ""; }; - DBA4B0E126BD11C80077136E /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; DBA4B0E226BD11C80077136E /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; DBA4B0E326BD11D10077136E /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/Intents.strings"; sourceTree = ""; }; - DBA4B0E426BD11D10077136E /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "es-419"; path = "es-419.lproj/Localizable.stringsdict"; sourceTree = ""; }; - DBA4B0E526BD11D10077136E /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/Localizable.strings"; sourceTree = ""; }; DBA4B0E626BD11D10077136E /* es-419 */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-419"; path = "es-419.lproj/InfoPlist.strings"; sourceTree = ""; }; DBA4B0E826C153820077136E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Intents.strings; sourceTree = ""; }; - DBA4B0E926C153820077136E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Localizable.stringsdict; sourceTree = ""; }; - DBA4B0EA26C153820077136E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; DBA4B0EB26C153820077136E /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; DBA4B0EC26C153B10077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Intents.strings; sourceTree = ""; }; - DBA4B0ED26C153B10077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = nl; path = nl.lproj/Localizable.stringsdict; sourceTree = ""; }; - DBA4B0EE26C153B20077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; DBA4B0EF26C153B20077136E /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = ""; }; DBA4B0F526C2621D0077136E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Intents.strings; sourceTree = ""; }; DBA4B0F826C269880077136E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Intents.stringsdict; sourceTree = ""; }; @@ -1332,20 +1359,14 @@ DBA5E7AA263BD3F5004598BB /* TimelineTableViewCellContextMenuConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineTableViewCellContextMenuConfiguration.swift; sourceTree = ""; }; DBA94433265CBB5300C537E1 /* ProfileFieldSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldSection.swift; sourceTree = ""; }; DBA94435265CBB7400C537E1 /* ProfileFieldItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldItem.swift; sourceTree = ""; }; - DBA94437265CBD4D00C537E1 /* ProfileHeaderViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileHeaderViewModel+Diffable.swift"; sourceTree = ""; }; - DBA94439265CC0FC00C537E1 /* Fields.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fields.swift; sourceTree = ""; }; DBA9443D265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldCollectionViewCell.swift; sourceTree = ""; }; DBA9443F265D137600C537E1 /* Mastodon+Entity+Field.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Field.swift"; sourceTree = ""; }; DBABE3EB25ECAC4B00879EE5 /* WelcomeIllustrationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeIllustrationView.swift; sourceTree = ""; }; - DBAE3F672615DD60004B8251 /* UserProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProvider.swift; sourceTree = ""; }; - DBAE3F812615DDA3004B8251 /* ProfileViewController+UserProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileViewController+UserProvider.swift"; sourceTree = ""; }; - DBAE3F872615DDF4004B8251 /* UserProviderFacade.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProviderFacade.swift; sourceTree = ""; }; DBAE3F8D2616E0B1004B8251 /* APIService+Block.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Block.swift"; sourceTree = ""; }; DBAE3F932616E28B004B8251 /* APIService+Follow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Follow.swift"; sourceTree = ""; }; DBAE3F9D2616E308004B8251 /* APIService+Mute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Mute.swift"; sourceTree = ""; }; DBAE3FAE26172FC0004B8251 /* RemoteProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteProfileViewModel.swift; sourceTree = ""; }; DBAEDE5B267A058D00D25FF5 /* BlurhashImageCacheService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurhashImageCacheService.swift; sourceTree = ""; }; - DBAFB7342645463500371D5F /* Emojis.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Emojis.swift; sourceTree = ""; }; DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLAnimatedImageView.swift; sourceTree = ""; }; DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileSegmentedViewController.swift; sourceTree = ""; }; DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePagingViewController.swift; sourceTree = ""; }; @@ -1363,8 +1384,6 @@ DBB9759B262462E1004620BD /* ThreadMetaView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreadMetaView.swift; sourceTree = ""; }; DBBC24A726A52F9000398BB9 /* ComposeToolbarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeToolbarView.swift; sourceTree = ""; }; DBBC24AB26A53D9300398BB9 /* ComposeStatusContentTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusContentTableViewCell.swift; sourceTree = ""; }; - DBBC24AD26A53DC100398BB9 /* ReplicaStatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplicaStatusView.swift; sourceTree = ""; }; - DBBC24B426A540AE00398BB9 /* AvatarConfigurableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarConfigurableView.swift; sourceTree = ""; }; DBBC24BB26A542F500398BB9 /* ThemeService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeService.swift; sourceTree = ""; }; DBBC24BE26A5443100398BB9 /* MastodonTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonTheme.swift; sourceTree = ""; }; DBBC24BF26A5443100398BB9 /* SystemTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemTheme.swift; sourceTree = ""; }; @@ -1372,6 +1391,8 @@ DBBC24CE26A547AE00398BB9 /* ThemeService+Appearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ThemeService+Appearance.swift"; sourceTree = ""; }; DBBC24D626A54BCB00398BB9 /* MastodonRegex.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MastodonRegex.swift; sourceTree = ""; }; DBBC24D826A54BCB00398BB9 /* MastodonMetricFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MastodonMetricFormatter.swift; sourceTree = ""; }; + DBBC50BE278ED0E700AF0CC6 /* Date.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Date.swift; sourceTree = ""; }; + DBBC50C0278ED49200AF0CC6 /* MastodonAuthenticationBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAuthenticationBox.swift; sourceTree = ""; }; DBBE1B4425F3474B0081417A /* MastodonPickServerAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonPickServerAppearance.swift; sourceTree = ""; }; DBBF1DBE2652401B00E5B703 /* AutoCompleteViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoCompleteViewModel.swift; sourceTree = ""; }; DBBF1DC126524D2900E5B703 /* AutoCompleteTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoCompleteTableViewCell.swift; sourceTree = ""; }; @@ -1400,8 +1421,6 @@ DBD376B1269302A4007FEC24 /* UITableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITableViewCell.swift; sourceTree = ""; }; DBD9148F25DF6D8D00903DFD /* APIService+Onboarding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Onboarding.swift"; sourceTree = ""; }; DBDC1CF9272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ku-TR"; path = "ku-TR.lproj/Intents.strings"; sourceTree = ""; }; - DBDC1CFA272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "ku-TR"; path = "ku-TR.lproj/Localizable.stringsdict"; sourceTree = ""; }; - DBDC1CFB272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ku-TR"; path = "ku-TR.lproj/Localizable.strings"; sourceTree = ""; }; DBDC1CFC272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ku-TR"; path = "ku-TR.lproj/InfoPlist.strings"; sourceTree = ""; }; DBDC1CFD272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "ku-TR"; path = "ku-TR.lproj/Intents.stringsdict"; sourceTree = ""; }; DBE0821425CD382600FD6BBD /* MastodonRegisterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterViewController.swift; sourceTree = ""; }; @@ -1412,7 +1431,6 @@ DBE3CDFA261C6CA500430CC6 /* FavoriteViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteViewModel.swift; sourceTree = ""; }; DBE3CE00261D623D00430CC6 /* FavoriteViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewModel+State.swift"; sourceTree = ""; }; DBE3CE06261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewModel+Diffable.swift"; sourceTree = ""; }; - DBE3CE0C261D767100430CC6 /* FavoriteViewController+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewController+Provider.swift"; sourceTree = ""; }; DBE3CE12261D7D4200430CC6 /* StatusTableViewControllerAspect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusTableViewControllerAspect.swift; sourceTree = ""; }; DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationPreference.swift; sourceTree = ""; }; DBF156DD27006F5D00EC00B7 /* CoreData 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "CoreData 2.xcdatamodel"; sourceTree = ""; }; @@ -1434,6 +1452,10 @@ DBF96325262EC0A6001D8D25 /* AuthenticationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AuthenticationServices.framework; path = System/Library/Frameworks/AuthenticationServices.framework; sourceTree = SDKROOT; }; DBF98149265E24F500E4BA07 /* ProfileFieldCollectionViewHeaderFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldCollectionViewHeaderFooterView.swift; sourceTree = ""; }; DBF9814B265E339500E4BA07 /* ProfileFieldAddEntryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldAddEntryCollectionViewCell.swift; sourceTree = ""; }; + DBFEEC95279BDC67004F81DD /* ProfileAboutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileAboutViewController.swift; sourceTree = ""; }; + DBFEEC98279BDCDE004F81DD /* ProfileAboutViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileAboutViewModel.swift; sourceTree = ""; }; + DBFEEC9A279BDDD9004F81DD /* ProfileAboutViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileAboutViewModel+Diffable.swift"; sourceTree = ""; }; + DBFEEC9C279C12C1004F81DD /* ProfileFieldEditCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldEditCollectionViewCell.swift; sourceTree = ""; }; DBFEF05526A576EE006D7ED1 /* StatusEditorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusEditorView.swift; sourceTree = ""; }; DBFEF05626A576EE006D7ED1 /* ComposeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeView.swift; sourceTree = ""; }; DBFEF05726A576EE006D7ED1 /* ComposeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeViewModel.swift; sourceTree = ""; }; @@ -1444,13 +1466,10 @@ DBFEF06726A58D07006D7ED1 /* ShareActionExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareActionExtension.entitlements; sourceTree = ""; }; DBFEF06C26A67FB7006D7ED1 /* StatusAttachmentViewModel+UploadState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusAttachmentViewModel+UploadState.swift"; sourceTree = ""; }; DBFEF07226A6913D006D7ED1 /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; }; - DBFEF07626A691FB006D7ED1 /* MastodonAuthenticationBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAuthenticationBox.swift; sourceTree = ""; }; DBFEF07A26A6BCE8006D7ED1 /* APIService+Status+Publish.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Status+Publish.swift"; sourceTree = ""; }; DDB1B139FA8EA26F510D58B6 /* Pods-AppShared.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.asdk - release.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.asdk - release.xcconfig"; sourceTree = ""; }; E5C7236E58D14A0322FE00F2 /* Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig"; sourceTree = ""; }; E9AABD3D26B64B8C00E237DA /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Intents.strings; sourceTree = ""; }; - E9AABD3E26B64B8D00E237DA /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ja; path = ja.lproj/Localizable.stringsdict; sourceTree = ""; }; - E9AABD3F26B64B8D00E237DA /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; E9AABD4026B64B8D00E237DA /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/InfoPlist.strings; sourceTree = ""; }; EC6E707B68A67DB08EC288FA /* Pods-MastodonTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.debug.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.debug.xcconfig"; sourceTree = ""; }; ECA373ABA86BE3C2D7ED878E /* Pods-AppShared.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.release.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.release.xcconfig"; sourceTree = ""; }; @@ -1468,7 +1487,6 @@ files = ( DB0140BD25C40D7500F9F3CF /* CommonOSLog in Frameworks */, DB89BA0325C10FD0008580ED /* CoreDataStack.framework in Frameworks */, - DBC6462B26A1738900B0E31B /* MastodonUI in Frameworks */, DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */, 2D939AC825EE14620076FA61 /* CropViewController in Frameworks */, DBB525082611EAC0002F1F29 /* Tabman in Frameworks */, @@ -1549,7 +1567,6 @@ buildActionMask = 2147483647; files = ( DBBC24B826A5421800398BB9 /* CommonOSLog in Frameworks */, - DBC6462526A1720B00B0E31B /* MastodonUI in Frameworks */, DBC6463726A195DB00B0E31B /* CoreDataStack.framework in Frameworks */, DBBC24D126A5484F00398BB9 /* UITextView+Placeholder in Frameworks */, DBBC24AA26A5301B00398BB9 /* MastodonSDK in Frameworks */, @@ -1563,8 +1580,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DBBC24CD26A5471E00398BB9 /* MastodonExtension in Frameworks */, DB00CA972632DDB600A54956 /* CommonOSLog in Frameworks */, + DB179267278D5A4A00B71DEB /* MastodonSDK in Frameworks */, DB6D9F42263527CE008423CD /* AlamofireImage in Frameworks */, DB6804A52637CDCC00430867 /* AppShared.framework in Frameworks */, B914FC6B0B8AF18573C0B291 /* Pods_NotificationService.framework in Frameworks */, @@ -1578,12 +1595,10 @@ isa = PBXGroup; children = ( 0F2021FA2613262F000C64BF /* HashtagTimelineViewController.swift */, - 0F202226261411BA000C64BF /* HashtagTimelineViewController+Provider.swift */, + DB0FCB9B27980AB6006C02E2 /* HashtagTimelineViewController+DataSourceProvider.swift */, 0F202200261326E6000C64BF /* HashtagTimelineViewModel.swift */, 0F20220626134DA4000C64BF /* HashtagTimelineViewModel+Diffable.swift */, - 0F20220C26134E3F000C64BF /* HashtagTimelineViewModel+LoadLatestState.swift */, 0F20222C261457EE000C64BF /* HashtagTimelineViewModel+LoadOldestState.swift */, - 0F20223226145E51000C64BF /* HashtagTimelineViewModel+LoadMiddleState.swift */, ); path = HashtagTimeline; sourceTree = ""; @@ -1687,10 +1702,13 @@ 2D152A8A25C295B8009AA50C /* Content */ = { isa = PBXGroup; children = ( - 2D152A8B25C295CC009AA50C /* StatusView.swift */, + DB336F40278E68480031E64B /* StatusView+Configuration.swift */, + DB336F42278EB1680031E64B /* MediaView+Configuration.swift */, + DB6746EA278ED8B0008A6B94 /* PollOptionView+Configuration.swift */, + DB0FCB992797F7AD006C02E2 /* UserView+Configuration.swift */, + DB63F776279A9A2A00455B82 /* NotificationView+Configuration.swift */, 2D694A7325F9EB4E0038ADDC /* ContentWarningOverlayView.swift */, 2D571B2E26004EC000540450 /* NavigationBarProgressView.swift */, - DB87D44A2609C11900D12C0D /* PollOptionView.swift */, DBE3CDCE261C42ED00430CC6 /* TimelineHeaderView.swift */, 0F1E2D0A2615C39400C38565 /* DoubleTitleLabelNavigationBarTitleView.swift */, DBB9759B262462E1004620BD /* ThreadMetaView.swift */, @@ -1698,21 +1716,23 @@ path = Content; sourceTree = ""; }; - 2D34D9E026149C550081BFC0 /* CollectionViewCell */ = { + 2D34D9E026149C550081BFC0 /* Cell */ = { isa = PBXGroup; children = ( - 2D34D9E126149C920081BFC0 /* SearchRecommendTagsCollectionViewCell.swift */, - 2DE0FAC72615F5F000CDF649 /* SearchRecommendAccountsCollectionViewCell.swift */, + DB0FCB8D2796C0B7006C02E2 /* TrendCollectionViewCell.swift */, + DB0FCB912796DE19006C02E2 /* TrendSectionHeaderCollectionReusableView.swift */, ); - path = CollectionViewCell; + path = Cell; sourceTree = ""; }; - 2D35237F26256F470031AF25 /* TableViewCell */ = { + 2D35237F26256F470031AF25 /* Cell */ = { isa = PBXGroup; children = ( - 2D24E11C2626D8B100A59D4F /* NotificationStatusTableViewCell.swift */, + DB023D2727A0FABD005AC798 /* NotificationTableViewCellDelegate.swift */, + DB63F76E279A7D1100455B82 /* NotificationTableViewCell.swift */, + DB63F774279A997D00455B82 /* NotificationTableViewCell+ViewModel.swift */, ); - path = TableViewCell; + path = Cell; sourceTree = ""; }; 2D364F7025E66D5B00204FDC /* ResendEmail */ = { @@ -1730,46 +1750,19 @@ children = ( DB1F239626117C360057430E /* View */, 2D38F1D425CD465300561493 /* HomeTimelineViewController.swift */, - 2D38F1DE25CD46A400561493 /* HomeTimelineViewController+Provider.swift */, + DB697DD8278F4CED004EF2F7 /* HomeTimelineViewController+DataSourceProvider.swift */, 2D5A3D6125CFD9CB002347D6 /* HomeTimelineViewController+DebugAction.swift */, 2D38F1E425CD46C100561493 /* HomeTimelineViewModel.swift */, 2D5A3D2725CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift */, 2D38F1EA25CD477000561493 /* HomeTimelineViewModel+LoadLatestState.swift */, - 2D38F1F025CD477D00561493 /* HomeTimelineViewModel+LoadMiddleState.swift */, 2D38F1F625CD47AC00561493 /* HomeTimelineViewModel+LoadOldestState.swift */, ); path = HomeTimeline; sourceTree = ""; }; - 2D38F1FC25CD47D900561493 /* StatusProvider */ = { - isa = PBXGroup; - children = ( - 2D38F1FD25CD481700561493 /* StatusProvider.swift */, - 2DF75B9A25D0E27500694EC8 /* StatusProviderFacade.swift */, - 2DF75BA025D0E29D00694EC8 /* StatusProvider+StatusTableViewCellDelegate.swift */, - DB59F0FD25EF5D96001F1DAB /* StatusProvider+UITableViewDelegate.swift */, - DB71FD4525F8C6D200512AE1 /* StatusProvider+UITableViewDataSourcePrefetching.swift */, - DB1D843526579DB5000346B3 /* StatusProvider+TableViewControllerNavigateable.swift */, - DB1D842B26551A1C000346B3 /* StatusProvider+StatusTableViewKeyCommandNavigateable.swift */, - ); - path = StatusProvider; - sourceTree = ""; - }; - 2D42FF7C25C82207004A627A /* ToolBar */ = { - isa = PBXGroup; - children = ( - 2D42FF7D25C82218004A627A /* ActionToolBarContainer.swift */, - ); - path = ToolBar; - sourceTree = ""; - }; 2D42FF8325C82245004A627A /* Button */ = { isa = PBXGroup; children = ( - DB0C947126A7D2D70088FB11 /* AvatarButton.swift */, - DB4932B226F2054200EF46D4 /* CircleAvatarButton.swift */, - DB71FD2B25F86A5100512AE1 /* AvatarStackContainerButton.swift */, - 2D42FF8425C8224F004A627A /* HitTestExpandedButton.swift */, 0FAA101125E105390017CCDE /* PrimaryActionButton.swift */, ); path = Button; @@ -1819,7 +1812,6 @@ 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */, 2DA6054625F716A2006356F9 /* PlaybackState.swift */, 5DF1054025F886D400D6C0D4 /* VideoPlaybackService.swift */, - DB71FD4B25F8C80E00512AE1 /* StatusPrefetchingService.swift */, DBC7A67B260DFADE00E57475 /* StatusPublishService.swift */, 2D9DB966263A76FB007C1D71 /* BlockDomainService.swift */, DB4924E126312AB200E9DB22 /* NotificationService.swift */, @@ -1833,25 +1825,11 @@ path = Service; sourceTree = ""; }; - 2D61335625C1887F00CAE157 /* Persist */ = { - isa = PBXGroup; - children = ( - 2D61335725C188A000CAE157 /* APIService+Persist+Status.swift */, - DB71FD3525F8A16C00512AE1 /* APIService+Persist+PersistMemo.swift */, - DB71FD3B25F8A1C500512AE1 /* APIService+Persist+PersistCache.swift */, - ); - path = Persist; - sourceTree = ""; - }; 2D69CFF225CA9E2200C3A1B2 /* Protocol */ = { isa = PBXGroup; children = ( - 2D38F1FC25CD47D900561493 /* StatusProvider */, - DBAE3F742615DD63004B8251 /* UserProvider */, - DBBC24B426A540AE00398BB9 /* AvatarConfigurableView.swift */, - 2D69CFF325CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift */, + DB697DD7278F4C34004EF2F7 /* Provider */, 2D5A3D3725CF8D9F002347D6 /* ScrollViewContainer.swift */, - DB59F10325EF5EBC001F1DAB /* TableViewCellHeightCacheableContainer.swift */, 2D38F1C525CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift */, 2D38F20725CD491300561493 /* DisposeBagCollectable.swift */, 5DF1058425F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift */, @@ -1859,23 +1837,11 @@ DB1D84372657B275000346B3 /* SegmentedControlNavigateable.swift */, DB1D843326579931000346B3 /* TableViewControllerNavigateable.swift */, DB1D842D26552C4D000346B3 /* StatusTableViewControllerNavigateable.swift */, + DB0FCB7127952986006C02E2 /* NamingState.swift */, ); path = Protocol; sourceTree = ""; }; - 2D76316325C14BAC00929FB9 /* PublicTimeline */ = { - isa = PBXGroup; - children = ( - 2D76316425C14BD100929FB9 /* PublicTimelineViewController.swift */, - 2D76317C25C14DF400929FB9 /* PublicTimelineViewController+Provider.swift */, - 2D76316A25C14D4C00929FB9 /* PublicTimelineViewModel.swift */, - 2D32EAD925CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift */, - 2D76318225C14E8F00929FB9 /* PublicTimelineViewModel+Diffable.swift */, - 2D45E5BE25C9549700A6D639 /* PublicTimelineViewModel+State.swift */, - ); - path = PublicTimeline; - sourceTree = ""; - }; 2D76319C25C151DE00929FB9 /* Diffiable */ = { isa = PBXGroup; children = ( @@ -1883,8 +1849,9 @@ DB0617FB27855B740030EE79 /* Account */, DB0617F827855B170030EE79 /* User */, DB0617F927855B460030EE79 /* Profile */, + DB0FCB892796BE1E006C02E2 /* RecommandAccount */, DB4F097926A039C400D62E92 /* Status */, - DB0617F627855AF30030EE79 /* Poll */, + DB65C63527A2AF52008BAC2E /* Report */, DB4F097626A0398000D62E92 /* Compose */, DB0617F727855B010030EE79 /* Notification */, DB4F097726A039A200D62E92 /* Search */, @@ -1911,12 +1878,9 @@ children = ( 2DA504672601ADBA008F4E6C /* Decoration */, 2D42FF8325C82245004A627A /* Button */, - 2D42FF7C25C82207004A627A /* ToolBar */, DB9D6C1325E4F97A0051B173 /* Container */, DBA9B90325F1D4420012E7B6 /* Control */, 2D152A8A25C295B8009AA50C /* Content */, - DB0C947026A7D2AB0088FB11 /* ImageView */, - DB87D45C2609DE6600D12C0D /* TextField */, DB1D187125EF5BBD003F1F23 /* TableView */, 2D7631A625C1533800929FB9 /* TableviewCell */, ); @@ -1926,16 +1890,21 @@ 2D7631A625C1533800929FB9 /* TableviewCell */ = { isa = PBXGroup; children = ( + DB697DD3278F4927004EF2F7 /* StatusTableViewCellDelegate.swift */, 2D7631A725C1535600929FB9 /* StatusTableViewCell.swift */, + DB336F3E278E668C0031E64B /* StatusTableViewCell+ViewModel.swift */, + DB0FCB7B2795821F006C02E2 /* StatusThreadRootTableViewCell.swift */, + DB0FCB7D27958957006C02E2 /* StatusThreadRootTableViewCell+ViewModel.swift */, + DB6B74FF272FF73800C70B6E /* UserTableViewCell.swift */, + DB0FCB972797F6BF006C02E2 /* UserTableViewCell+ViewModel.swift */, 2DA7D04325CA52B200804E11 /* TimelineLoaderTableViewCell.swift */, DB938F3226243D6200E5B6C1 /* TimelineTopLoaderTableViewCell.swift */, 2DA7D04925CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift */, 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */, + DB0FCB6F27951368006C02E2 /* TimelineMiddleLoaderTableViewCell+ViewModel.swift */, DBE3CDBA261C427900430CC6 /* TimelineHeaderTableViewCell.swift */, DB6B750327300B4000C70B6E /* TimelineFooterTableViewCell.swift */, DB02CDAA26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift */, - DB92CF7125E7BB98002C1017 /* PollOptionTableViewCell.swift */, - DB6B74FF272FF73800C70B6E /* UserTableViewCell.swift */, ); path = TableviewCell; sourceTree = ""; @@ -1985,12 +1954,12 @@ path = Stack; sourceTree = ""; }; - 2DFAD5212616F8E300F9EE7C /* TableViewCell */ = { + 2DFAD5212616F8E300F9EE7C /* Cell */ = { isa = PBXGroup; children = ( - 2DFAD5362617010500F9EE7C /* SearchResultTableViewCell.swift */, + DB63F7442799056400455B82 /* HashtagTableViewCell.swift */, ); - path = TableViewCell; + path = Cell; sourceTree = ""; }; 3FE14AD363ED19AE7FF210A6 /* Frameworks */ = { @@ -2077,34 +2046,97 @@ path = Onboarding; sourceTree = ""; }; + DB025B7A278D6234002F581E /* Template */ = { + isa = PBXGroup; + children = ( + DB025B80278D6252002F581E /* Stencil */, + DB025B81278D6271002F581E /* AutoGenerateProperty.swift */, + DB025B83278D6272002F581E /* AutoGenerateRelationship.swift */, + DB025B82278D6272002F581E /* AutoUpdatableObject.swift */, + ); + path = Template; + sourceTree = ""; + }; + DB025B80278D6252002F581E /* Stencil */ = { + isa = PBXGroup; + children = ( + DB025B7D278D6247002F581E /* AutoGenerateProperty.stencil */, + DB025B7F278D6247002F581E /* AutoGenerateRelationship.stencil */, + DB025B7E278D6247002F581E /* AutoUpdatableObject.stencil */, + ); + path = Stencil; + sourceTree = ""; + }; + DB025B8A278D6367002F581E /* App */ = { + isa = PBXGroup; + children = ( + DB025B88278D6339002F581E /* Feed.swift */, + DB8AF56725C13E2A002E6C99 /* HomeTimelineIndex.swift */, + 5B90C46D26259B2C0002E742 /* Setting.swift */, + ); + path = App; + sourceTree = ""; + }; + DB025B8D278D6377002F581E /* Transient */ = { + isa = PBXGroup; + children = ( + DB025B8B278D6374002F581E /* Acct.swift */, + DB025B8F278D6489002F581E /* Feed+Kind.swift */, + DB336F1D278D6C3A0031E64B /* MastodonEmoji.swift */, + DB336F25278D6E8F0031E64B /* MastodonField.swift */, + DB0FCB6927950CB3006C02E2 /* MastodonMention.swift */, + DB336F2F278D723D0031E64B /* MastodonVisibility.swift */, + DB336F44278EB1D70031E64B /* MastodonAttachment.swift */, + DB63F75F27995ECE00455B82 /* MastodonTagHistory.swift */, + DB63F76C279A67BD00455B82 /* MastodonNotificationType.swift */, + ); + path = Transient; + sourceTree = ""; + }; + DB025B91278D64F0002F581E /* Persistence */ = { + isa = PBXGroup; + children = ( + DB025B98278D66D8002F581E /* Extension */, + DB336F24278D6DF40031E64B /* Protocol */, + DB025B92278D6501002F581E /* Persistence.swift */, + DB025B94278D6530002F581E /* Persistence+MastodonUser.swift */, + DB336F2B278D6FC30031E64B /* Persistence+Status.swift */, + DB336F31278D77330031E64B /* Persistence+Poll.swift */, + DB336F33278D77730031E64B /* Persistence+PollOption.swift */, + DB63F75B279956D000455B82 /* Persistence+Tag.swift */, + DB63F755279949BD00455B82 /* Persistence+SearchHistory.swift */, + DB63F770279A858500455B82 /* Persistence+Notification.swift */, + ); + path = Persistence; + sourceTree = ""; + }; + DB025B98278D66D8002F581E /* Extension */ = { + isa = PBXGroup; + children = ( + DB025B96278D66D5002F581E /* MastodonUser+Property.swift */, + DB336F2D278D71AF0031E64B /* Status+Property.swift */, + DB336F37278D7AAF0031E64B /* Poll+Property.swift */, + DB336F35278D77A40031E64B /* PollOption+Property.swift */, + DB63F75D27995B3B00455B82 /* Tag+Property.swift */, + DB63F772279A87DC00455B82 /* Notification+Property.swift */, + DB336F20278D6D960031E64B /* MastodonEmoji.swift */, + DB336F29278D6F2B0031E64B /* MastodonField.swift */, + DB0FCB6D27950E6B006C02E2 /* MastodonMention.swift */, + ); + path = Extension; + sourceTree = ""; + }; DB03F7F1268990A2007B274C /* TableViewCell */ = { isa = PBXGroup; children = ( DB03F7F22689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift */, + DBBC24AB26A53D9300398BB9 /* ComposeStatusContentTableViewCell.swift */, DB36679C268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift */, DB3667A3268AE2370027D07F /* ComposeStatusPollTableViewCell.swift */, ); path = TableViewCell; sourceTree = ""; }; - DB0617F3278436360030EE79 /* Deprecated */ = { - isa = PBXGroup; - children = ( - 0FB3D33125E5F50E00AAD544 /* PickServerSearchCell.swift */, - 0FB3D30725E524C600AAD544 /* PickServerCategoriesCell.swift */, - ); - path = Deprecated; - sourceTree = ""; - }; - DB0617F627855AF30030EE79 /* Poll */ = { - isa = PBXGroup; - children = ( - DB4481C525EE2ADA00BEFB67 /* PollSection.swift */, - DB4481CB25EE2AFE00BEFB67 /* PollItem.swift */, - ); - path = Poll; - sourceTree = ""; - }; DB0617F727855B010030EE79 /* Notification */ = { isa = PBXGroup; children = ( @@ -2173,27 +2205,14 @@ children = ( DB084B5625CBC56C00F898ED /* Status.swift */, DB45FAE225CA7181005A8AC7 /* MastodonUser.swift */, - DB0C946A26A700AB0088FB11 /* MastodonUser+Property.swift */, - DB9D6C3725E508BE0051B173 /* Attachment.swift */, DB6D9F6E2635807F008423CD /* Setting.swift */, DB6D9F4826353FD6008423CD /* Subscription.swift */, DB6D9F4F2635761F008423CD /* SubscriptionAlerts.swift */, - DBAFB7342645463500371D5F /* Emojis.swift */, - DBA94439265CC0FC00C537E1 /* Fields.swift */, - DBA1DB7F268F84F80052DB59 /* NotificationType.swift */, DB73BF46271199CA00781945 /* Instance.swift */, ); path = CoreDataStack; sourceTree = ""; }; - DB0C947026A7D2AB0088FB11 /* ImageView */ = { - isa = PBXGroup; - children = ( - DB0C946E26A7D2A80088FB11 /* AvatarImageView.swift */, - ); - path = ImageView; - sourceTree = ""; - }; DB0C947826A7FE950088FB11 /* Button */ = { isa = PBXGroup; children = ( @@ -2213,6 +2232,14 @@ path = View; sourceTree = ""; }; + DB0FCB892796BE1E006C02E2 /* RecommandAccount */ = { + isa = PBXGroup; + children = ( + 2DE0FACD2615F7AD00CDF649 /* RecommendAccountSection.swift */, + ); + path = RecommandAccount; + sourceTree = ""; + }; DB1D187125EF5BBD003F1F23 /* TableView */ = { isa = PBXGroup; children = ( @@ -2230,6 +2257,47 @@ path = View; sourceTree = ""; }; + DB336F1F278D6C8F0031E64B /* Mastodon */ = { + isa = PBXGroup; + children = ( + DB89BA2625C110B4008580ED /* Status.swift */, + DB8AF52425C131D1002E6C99 /* MastodonUser.swift */, + 2D9DB968263A833E007C1D71 /* DomainBlock.swift */, + 2D6125462625436B00299647 /* Notification.swift */, + 2D0B7A1C261D839600B44727 /* SearchHistory.swift */, + 2D927F0725C7E9A8004F19B8 /* Tag.swift */, + 2D927F0D25C7E9C9004F19B8 /* History.swift */, + 2D927F1325C7EDD9004F19B8 /* Emoji.swift */, + DB45FAEC25CA7A9A005A8AC7 /* MastodonAuthentication.swift */, + 2DA7D05625CA693F00804E11 /* Application.swift */, + DB4481AC25EE155900BEFB67 /* Poll.swift */, + DB4481B225EE16D000BEFB67 /* PollOption.swift */, + DBCC3B9A2615849F0045B23D /* PrivateNote.swift */, + 5B90C46C26259B2C0002E742 /* Subscription.swift */, + 5B90C47E26259BA90002E742 /* SubscriptionAlerts.swift */, + DB73BF4027118B6D00781945 /* Instance.swift */, + ); + path = Mastodon; + sourceTree = ""; + }; + DB336F24278D6DF40031E64B /* Protocol */ = { + isa = PBXGroup; + children = ( + DB336F22278D6DED0031E64B /* MastodonEmojiContainer.swift */, + DB336F27278D6EC70031E64B /* MastodonFieldContainer.swift */, + DB0FCB6B27950E29006C02E2 /* MastodonMentionContainer.swift */, + ); + path = Protocol; + sourceTree = ""; + }; + DB336F3B278D7D260031E64B /* Utility */ = { + isa = PBXGroup; + children = ( + DB336F39278D7D1F0031E64B /* ManagedObjectRecord.swift */, + ); + path = Utility; + sourceTree = ""; + }; DB3D0FF725BAA68500EAA174 /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -2249,8 +2317,6 @@ DBF3B73E2733EAED00E21627 /* local-codes.json */, DB427DDE25BAA00100D1B89D /* Assets.xcassets */, DB118A8125E4B6E600FAB162 /* Preview Assets.xcassets */, - DB564BCE269F2F83001E39A7 /* Localizable.stringsdict */, - DB3D100F25BAA75E00EAA174 /* Localizable.strings */, DB2B3ABE25E37E15007045F9 /* InfoPlist.strings */, ); path = Resources; @@ -2299,7 +2365,6 @@ children = ( DB427DE325BAA00100D1B89D /* Info.plist */, DB89BA1025C10FF5008580ED /* Mastodon.entitlements */, - DB0617F3278436360030EE79 /* Deprecated */, 2D76319C25C151DE00929FB9 /* Diffiable */, DB8AF52A25C13561002E6C99 /* State */, 2D61335525C1886800CAE157 /* Service */, @@ -2309,9 +2374,10 @@ 2D5A3D0125CF8640002347D6 /* Vender */, DB73B495261F030D002E9E9F /* Activity */, DBBC24D526A54BCB00398BB9 /* Helper */, + DB025B91278D64F0002F581E /* Persistence */, DB5086CB25CC0DB400C2C187 /* Preference */, 2D69CFF225CA9E2200C3A1B2 /* Protocol */, - DB98338425C945ED00AD9700 /* Generated */, + DB6746EE278F45F3008A6B94 /* Template */, DB3D0FF825BAA6B200EAA174 /* Resources */, DB3D0FF725BAA68500EAA174 /* Supporting Files */, ); @@ -2340,7 +2406,6 @@ isa = PBXGroup; children = ( DB45FB0925CA87BC005A8AC7 /* CoreData */, - 2D61335625C1887F00CAE157 /* Persist */, 2D61335D25C1894B00CAE157 /* APIService.swift */, DB98337E25C9452D00AD9700 /* APIService+APIError.swift */, DBD9148F25DF6D8D00903DFD /* APIService+Onboarding.swift */, @@ -2350,7 +2415,6 @@ DB98337025C9443200AD9700 /* APIService+Authentication.swift */, DB98339B25C96DE600AD9700 /* APIService+Account.swift */, 2D9DB96A263A91D1007C1D71 /* APIService+DomainBlock.swift */, - 2D04F42425C255B9003F936F /* APIService+PublicTimeline.swift */, DB45FB1C25CA9D23005A8AC7 /* APIService+HomeTimeline.swift */, DB482A4A261340A7008AE74C /* APIService+UserTimeline.swift */, DBA465922696B495002B41DB /* APIService+WebFinger.swift */, @@ -2363,6 +2427,7 @@ 2D61254C262547C200299647 /* APIService+Notification.swift */, DB9A488F26035963008B817C /* APIService+Media.swift */, 2D34D9D026148D9E0081BFC0 /* APIService+Recommend.swift */, + DB0FCB8F2796C5EB006C02E2 /* APIService+Trend.swift */, 2D34D9DA261494120081BFC0 /* APIService+Search.swift */, 0F202212261351F5000C64BF /* APIService+HashtagTimeline.swift */, DB6B74F9272FC2B500C70B6E /* APIService+Follower.swift */, @@ -2382,10 +2447,7 @@ DB45FB0925CA87BC005A8AC7 /* CoreData */ = { isa = PBXGroup; children = ( - 2D69D00925CAA00300C3A1B2 /* APIService+CoreData+Status.swift */, - DB45FADC25CA6F6B005A8AC7 /* APIService+CoreData+MastodonUser.swift */, DB45FAF825CA80A2005A8AC7 /* APIService+CoreData+MastodonAuthentication.swift */, - 2D79E700261EA5550011E398 /* APIService+CoreData+Tag.swift */, DB6D9F56263577D2008423CD /* APIService+CoreData+Setting.swift */, 5B90C48A26259C120002E742 /* APIService+CoreData+Subscriptions.swift */, DB73BF44271195AC00781945 /* APIService+CoreData+Instance.swift */, @@ -2407,9 +2469,11 @@ DB4F0964269ED06700D62E92 /* SearchResult */ = { isa = PBXGroup; children = ( + 2DFAD5212616F8E300F9EE7C /* Cell */, DB4F0962269ED06300D62E92 /* SearchResultViewController.swift */, - DB4F096B269EFA2000D62E92 /* SearchResultViewController+StatusProvider.swift */, + DB0FCB952797E6C2006C02E2 /* SearchResultViewController+DataSourceProvider.swift */, DB4F0965269ED52200D62E92 /* SearchResultViewModel.swift */, + DB0FCB932797E2B0006C02E2 /* SearchResultViewModel+Diffable.swift */, DB4F0969269EDAD200D62E92 /* SearchResultViewModel+State.swift */, ); path = SearchResult; @@ -2435,8 +2499,8 @@ DB4F097726A039A200D62E92 /* Search */ = { isa = PBXGroup; children = ( - 2DE0FAC02615F04D00CDF649 /* RecommendHashTagSection.swift */, - 2DE0FACD2615F7AD00CDF649 /* RecommendAccountSection.swift */, + DB0FCB852796BDA1006C02E2 /* SearchSection.swift */, + DB0FCB872796BDA9006C02E2 /* SearchItem.swift */, 2D198648261C0B8500F0B013 /* SearchResultSection.swift */, 2D198642261BF09500F0B013 /* SearchResultItem.swift */, DB4F097A26A039FF00D62E92 /* SearchHistorySection.swift */, @@ -2464,8 +2528,7 @@ isa = PBXGroup; children = ( 2D76319E25C1521200929FB9 /* StatusSection.swift */, - 2D7631B225C159F700929FB9 /* Item.swift */, - 5BB04FF4262F0E6D0043BFF6 /* ReportSection.swift */, + DB025B77278D606A002F581E /* StatusItem.swift */, ); path = Status; sourceTree = ""; @@ -2505,7 +2568,6 @@ DB55D32225FB4D320002F825 /* View */ = { isa = PBXGroup; children = ( - DBBC24AD26A53DC100398BB9 /* ReplicaStatusView.swift */, DB03F7F42689B782007B274C /* ComposeTableView.swift */, DBA0A11225FB3FC10079C110 /* ComposeToolbarView.swift */, DB8190C52601FF0400020C08 /* AttachmentContainerView.swift */, @@ -2521,7 +2583,7 @@ isa = PBXGroup; children = ( DB5B7294273112B100081888 /* FollowingListViewController.swift */, - DB5B72992731137900081888 /* FollowingListViewController+Provider.swift */, + DB63F74A279914A000455B82 /* FollowingListViewController+DataSourceProvider.swift */, DB5B7297273112C800081888 /* FollowingListViewModel.swift */, DB5B729B273113C200081888 /* FollowingListViewModel+Diffable.swift */, DB5B729D273113F300081888 /* FollowingListViewModel+State.swift */, @@ -2580,6 +2642,47 @@ path = Image; sourceTree = ""; }; + DB63F7502799449300455B82 /* Cell */ = { + isa = PBXGroup; + children = ( + DB63F74C27993F5B00455B82 /* SearchHistoryUserCollectionViewCell.swift */, + DB63F759279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift */, + DB63F751279944AA00455B82 /* SearchHistorySectionHeaderCollectionReusableView.swift */, + ); + path = Cell; + sourceTree = ""; + }; + DB63F765279A5E5600455B82 /* NotificationTimeline */ = { + isa = PBXGroup; + children = ( + DB63F763279A5E3C00455B82 /* NotificationTimelineViewController.swift */, + DB023D2B27A10464005AC798 /* NotificationTimelineViewController+DataSourceProvider.swift */, + DB63F766279A5EB300455B82 /* NotificationTimelineViewModel.swift */, + DB63F768279A5EBB00455B82 /* NotificationTimelineViewModel+Diffable.swift */, + DB63F76A279A5ED300455B82 /* NotificationTimelineViewModel+LoadOldestState.swift */, + ); + path = NotificationTimeline; + sourceTree = ""; + }; + DB65C63527A2AF52008BAC2E /* Report */ = { + isa = PBXGroup; + children = ( + 5BB04FF4262F0E6D0043BFF6 /* ReportSection.swift */, + DB65C63627A2AF6C008BAC2E /* ReportItem.swift */, + ); + path = Report; + sourceTree = ""; + }; + DB6746EE278F45F3008A6B94 /* Template */ = { + isa = PBXGroup; + children = ( + DB6746EC278F45F0008A6B94 /* AutoGenerateProtocolRelayDelegate.swift */, + DB6746EF278F463B008A6B94 /* AutoGenerateProtocolDelegate.swift */, + DB697DD0278F4871004EF2F7 /* AutoGenerateTableViewDelegate.swift */, + ); + path = Template; + sourceTree = ""; + }; DB67D08727312E6A006A36CF /* Wizard */ = { isa = PBXGroup; children = ( @@ -2622,11 +2725,36 @@ path = NavigationController; sourceTree = ""; }; + DB697DD7278F4C34004EF2F7 /* Provider */ = { + isa = PBXGroup; + children = ( + DB697DDC278F521D004EF2F7 /* DataSourceFacade.swift */, + DB697DE0278F5296004EF2F7 /* DataSourceFacade+Model.swift */, + DB697DDE278F524F004EF2F7 /* DataSourceFacade+Profile.swift */, + DB8F7075279E954700E1225B /* DataSourceFacade+Follow.swift */, + DB603110279EB38500A935FE /* DataSourceFacade+Mute.swift */, + DB603112279EBEBA00A935FE /* DataSourceFacade+Block.swift */, + DB0FCB7327956939006C02E2 /* DataSourceFacade+Status.swift */, + DB63F778279ABF9C00455B82 /* DataSourceFacade+Reblog.swift */, + DB63F77A279ACAE500455B82 /* DataSourceFacade+Favorite.swift */, + DB0FCB67279507EF006C02E2 /* DataSourceFacade+Meta.swift */, + DB0FCB79279576A2006C02E2 /* DataSourceFacade+Thread.swift */, + DB63F74627990B0600455B82 /* DataSourceFacade+Hashtag.swift */, + DB63F7532799491600455B82 /* DataSourceFacade+SearchHistory.swift */, + DB159C2A27A17BAC0068DC77 /* DataSourceFacade+Media.swift */, + DB697DD5278F4C29004EF2F7 /* DataSourceProvider.swift */, + DB697DDA278F4DE3004EF2F7 /* DataSourceProvider+StatusTableViewCellDelegate.swift */, + DB023D2927A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift */, + DB0FCB7727957678006C02E2 /* DataSourceProvider+UITableViewDelegate.swift */, + ); + path = Provider; + sourceTree = ""; + }; DB6B74F0272FB55400C70B6E /* Follower */ = { isa = PBXGroup; children = ( DB6B74EE272FB55000C70B6E /* FollowerListViewController.swift */, - DB6B74F7272FBFB100C70B6E /* FollowerListViewController+Provider.swift */, + DB63F7482799126300455B82 /* FollowerListViewController+DataSourceProvider.swift */, DB6B74F1272FB67600C70B6E /* FollowerListViewModel.swift */, DB6B74F3272FBAE700C70B6E /* FollowerListViewModel+Diffable.swift */, DB6B74F5272FBCDB00C70B6E /* FollowerListViewModel+State.swift */, @@ -2677,6 +2805,7 @@ isa = PBXGroup; children = ( DB73B48F261F030A002E9E9F /* SafariActivity.swift */, + DB023D25279FFB0A005AC798 /* ShareActivityProvider.swift */, ); path = Activity; sourceTree = ""; @@ -2699,7 +2828,6 @@ DB789A2125F9F76D0071ACA0 /* CollectionViewCell */ = { isa = PBXGroup; children = ( - DBBC24AB26A53D9300398BB9 /* ComposeStatusContentTableViewCell.swift */, DB6B351D2601FAEE00DC1E11 /* ComposeStatusAttachmentCollectionViewCell.swift */, DB87D4442609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift */, DB87D4502609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift */, @@ -2732,25 +2860,19 @@ path = Root; sourceTree = ""; }; - DB87D45C2609DE6600D12C0D /* TextField */ = { - isa = PBXGroup; - children = ( - DB87D4562609DD5300D12C0D /* DeleteBackwardResponseTextField.swift */, - ); - path = TextField; - sourceTree = ""; - }; DB89B9EF25C10FD0008580ED /* CoreDataStack */ = { isa = PBXGroup; children = ( + 2DF75BB725D1473400694EC8 /* Stack */, + DB89BA2C25C110B7008580ED /* Entity */, + DB336F3B278D7D260031E64B /* Utility */, + DB89BA1725C1107F008580ED /* Extension */, + DB89BA4025C1165F008580ED /* Protocol */, + DB025B7A278D6234002F581E /* Template */, DB89B9F125C10FD0008580ED /* Info.plist */, DB89B9F025C10FD0008580ED /* CoreDataStack.h */, DB89BA1125C1105C008580ED /* CoreDataStack.swift */, DB89BA3525C1145C008580ED /* CoreData.xcdatamodeld */, - 2DF75BB725D1473400694EC8 /* Stack */, - DB89BA4025C1165F008580ED /* Protocol */, - DB89BA1725C1107F008580ED /* Extension */, - DB89BA2C25C110B7008580ED /* Entity */, ); path = CoreDataStack; sourceTree = ""; @@ -2778,26 +2900,9 @@ DB89BA2C25C110B7008580ED /* Entity */ = { isa = PBXGroup; children = ( - DB89BA2625C110B4008580ED /* Status.swift */, - 2D9DB968263A833E007C1D71 /* DomainBlock.swift */, - 2D6125462625436B00299647 /* Notification.swift */, - 2D0B7A1C261D839600B44727 /* SearchHistory.swift */, - DB8AF52425C131D1002E6C99 /* MastodonUser.swift */, - DB8AF56725C13E2A002E6C99 /* HomeTimelineIndex.swift */, - 2D927F0125C7E4F2004F19B8 /* Mention.swift */, - 2D927F0725C7E9A8004F19B8 /* Tag.swift */, - 2D927F0D25C7E9C9004F19B8 /* History.swift */, - 2D927F1325C7EDD9004F19B8 /* Emoji.swift */, - DB45FAEC25CA7A9A005A8AC7 /* MastodonAuthentication.swift */, - 2DA7D05625CA693F00804E11 /* Application.swift */, - DB9D6C2D25E504AC0051B173 /* Attachment.swift */, - DB4481AC25EE155900BEFB67 /* Poll.swift */, - DB4481B225EE16D000BEFB67 /* PollOption.swift */, - DBCC3B9A2615849F0045B23D /* PrivateNote.swift */, - 5B90C46D26259B2C0002E742 /* Setting.swift */, - 5B90C46C26259B2C0002E742 /* Subscription.swift */, - 5B90C47E26259BA90002E742 /* SubscriptionAlerts.swift */, - DB73BF4027118B6D00781945 /* Instance.swift */, + DB025B8A278D6367002F581E /* App */, + DB025B8D278D6377002F581E /* Transient */, + DB336F1F278D6C8F0031E64B /* Mastodon */, ); path = Entity; sourceTree = ""; @@ -2848,17 +2953,16 @@ DB67D08727312E6A006A36CF /* Wizard */, DB9F58ED26EF435800E7BBE9 /* Account */, 2D38F1D325CD463600561493 /* HomeTimeline */, - 2D76316325C14BAC00929FB9 /* PublicTimeline */, - 5B24BBD6262DB14800A9381B /* Report */, 0F2021F5261325ED000C64BF /* HashtagTimeline */, - 2DAC9E36262FC20B0062E1A6 /* SuggestionAccount */, - DB9D6BEE25E4F5370051B173 /* Search */, - 5B90C455262599800002E742 /* Settings */, DB9D6BFD25E4F57B0051B173 /* Notification */, - DB9D6C0825E4F5A60051B173 /* Profile */, - DB789A1025F9F29B0071ACA0 /* Compose */, DB938EEB2623F52600E5B6C1 /* Thread */, + 5B24BBD6262DB14800A9381B /* Report */, + DB9D6BEE25E4F5370051B173 /* Search */, + DB789A1025F9F29B0071ACA0 /* Compose */, DB6180DE263919350018D199 /* MediaPreview */, + 2DAC9E36262FC20B0062E1A6 /* SuggestionAccount */, + DB9D6C0825E4F5A60051B173 /* Profile */, + 5B90C455262599800002E742 /* Settings */, ); path = Scene; sourceTree = ""; @@ -2872,16 +2976,13 @@ 5DF1056325F887CB00D6C0D4 /* AVPlayer.swift */, 0F20223826146553000C64BF /* Array.swift */, 2D206B8525F5FB0900143C56 /* Double.swift */, - DB97131E2666078B00BD1E90 /* Date.swift */, DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */, - DB0E91E926A9675100BD2ACC /* MetaLabel.swift */, DB68586325E619B700F0A850 /* NSKeyValueObservation.swift */, DB47229625F9EFAD00DA7F53 /* NSManagedObjectContext.swift */, DB0140CE25C42AEE00F9F3CF /* OSLog.swift */, 2D939AB425EDD8A90076FA61 /* String.swift */, DB68A06225E905E000CFDF14 /* UIApplication.swift */, DB45FAB525CA5485005A8AC7 /* UIAlertController.swift */, - 2D42FF8E25C8228A004A627A /* UIButton.swift */, DB45FAD625CA6C76005A8AC7 /* UIBarButtonItem.swift */, DB4481B825EE289600BEFB67 /* UITableView.swift */, DBD376B1269302A4007FEC24 /* UITableViewCell.swift */, @@ -2898,6 +2999,7 @@ DBCC3B35261440BA0045B23D /* UINavigationController.swift */, DB73BF4827140BA300781945 /* UICollectionViewDiffableDataSource.swift */, DB73BF4A27140C0800781945 /* UITableViewDiffableDataSource.swift */, + DBBC50BE278ED0E700AF0CC6 /* Date.swift */, ); path = Extension; sourceTree = ""; @@ -2920,12 +3022,13 @@ isa = PBXGroup; children = ( DB938EE52623F50700E5B6C1 /* ThreadViewController.swift */, - DB938F24262438D600E5B6C1 /* ThreadViewController+Provider.swift */, + DB0FCB75279571C5006C02E2 /* ThreadViewController+DataSourceProvider.swift */, DB938EEC2623F79B00E5B6C1 /* ThreadViewModel.swift */, DB938F1E2624382F00E5B6C1 /* ThreadViewModel+Diffable.swift */, DB938F0E2624119800E5B6C1 /* ThreadViewModel+LoadThreadState.swift */, DB938F0226240EA300E5B6C1 /* CachedThreadViewModel.swift */, DB938F0826240F3C00E5B6C1 /* RemoteThreadViewModel.swift */, + DB0FCB7F27968F70006C02E2 /* MastodonStatusThreadViewModel.swift */, ); path = Thread; sourceTree = ""; @@ -2940,15 +3043,6 @@ name = "Recovered References"; sourceTree = ""; }; - DB98338425C945ED00AD9700 /* Generated */ = { - isa = PBXGroup; - children = ( - DB98338525C945ED00AD9700 /* Strings.swift */, - DB98338625C945ED00AD9700 /* Assets.swift */, - ); - path = Generated; - sourceTree = ""; - }; DB9A489B26036E19008B817C /* MastodonAttachmentService */ = { isa = PBXGroup; children = ( @@ -2970,14 +3064,12 @@ DB9D6BFD25E4F57B0051B173 /* Notification */ = { isa = PBXGroup; children = ( + DB63F765279A5E5600455B82 /* NotificationTimeline */, DB0C947826A7FE950088FB11 /* Button */, - 2D35237F26256F470031AF25 /* TableViewCell */, + 2D35237F26256F470031AF25 /* Cell */, DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */, - DB63BE7E268DD1070011D3F9 /* NotificationViewController+StatusProvider.swift */, 2D607AD726242FC500B70763 /* NotificationViewModel.swift */, 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */, - 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */, - 2D24E12C2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift */, ); path = Notification; sourceTree = ""; @@ -2991,8 +3083,8 @@ DBE3CDF1261C6B3100430CC6 /* Favorite */, DB6B74F0272FB55400C70B6E /* Follower */, DB5B7296273112B400081888 /* Following */, + DBFEEC97279BDC6A004F81DD /* About */, DB9D6BFE25E4F5940051B173 /* ProfileViewController.swift */, - DBAE3F812615DDA3004B8251 /* ProfileViewController+UserProvider.swift */, DBB5255D2611F07A002F1F29 /* ProfileViewModel.swift */, DBCC3B8E26148F7B0045B23D /* CachedProfileViewModel.swift */, DBAE3FAE26172FC0004B8251 /* RemoteProfileViewModel.swift */, @@ -3008,7 +3100,6 @@ 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */, 5DF1057825F88A1D00D6C0D4 /* PlayerContainerView.swift */, DB49A63C25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift */, - 5DF1057E25F88A4100D6C0D4 /* TouchBlockingView.swift */, ); path = Container; sourceTree = ""; @@ -3074,7 +3165,6 @@ DBA9B90325F1D4420012E7B6 /* Control */ = { isa = PBXGroup; children = ( - DB59F11725EFA35B001F1DAB /* StripProgressView.swift */, DB02CDBE2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift */, ); path = Control; @@ -3090,16 +3180,6 @@ path = View; sourceTree = ""; }; - DBAE3F742615DD63004B8251 /* UserProvider */ = { - isa = PBXGroup; - children = ( - DBAE3F672615DD60004B8251 /* UserProvider.swift */, - DBAE3F872615DDF4004B8251 /* UserProviderFacade.swift */, - DB6B75012730060700C70B6E /* UserProviderFacade+UITableViewDelegate.swift */, - ); - path = UserProvider; - sourceTree = ""; - }; DBB525132611EBB1002F1F29 /* Segmented */ = { isa = PBXGroup; children = ( @@ -3122,7 +3202,7 @@ isa = PBXGroup; children = ( DBB525352611ECEB002F1F29 /* UserTimelineViewController.swift */, - DB482A44261335BA008AE74C /* UserTimelineViewController+Provider.swift */, + DB0FCB812796AC78006C02E2 /* UserTimelineViewController+DataSourceProvider.swift */, DBB525552611EDCA002F1F29 /* UserTimelineViewModel.swift */, DBCBED1626132DB500B49291 /* UserTimelineViewModel+Diffable.swift */, DB482A3E261331E8008AE74C /* UserTimelineViewModel+State.swift */, @@ -3136,7 +3216,6 @@ DBB525732612D5A5002F1F29 /* View */, DBB525402611ED54002F1F29 /* ProfileHeaderViewController.swift */, DB7F48442620241000796008 /* ProfileHeaderViewModel.swift */, - DBA94437265CBD4D00C537E1 /* ProfileHeaderViewModel+Diffable.swift */, ); path = Header; sourceTree = ""; @@ -3148,9 +3227,6 @@ DBB5256D2612D5A1002F1F29 /* ProfileStatusDashboardView.swift */, DBB525842612D6DD002F1F29 /* ProfileStatusDashboardMeterView.swift */, DB35FC1E2612F1D9006193C9 /* ProfileRelationshipActionButton.swift */, - DB35FC242612FD7A006193C9 /* ProfileFieldView.swift */, - DBA9443D265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift */, - DBF9814B265E339500E4BA07 /* ProfileFieldAddEntryCollectionViewCell.swift */, DBF98149265E24F500E4BA07 /* ProfileFieldCollectionViewHeaderFooterView.swift */, ); path = View; @@ -3180,8 +3256,8 @@ isa = PBXGroup; children = ( DBBC24D626A54BCB00398BB9 /* MastodonRegex.swift */, + DBBC50C0278ED49200AF0CC6 /* MastodonAuthenticationBox.swift */, DBBC24D826A54BCB00398BB9 /* MastodonMetricFormatter.swift */, - DBFEF07626A691FB006D7ED1 /* MastodonAuthenticationBox.swift */, DBF3B7402733EB9400E21627 /* MastodonLocalCode.swift */, ); path = Helper; @@ -3218,6 +3294,7 @@ DBCBED2226132E1D00B49291 /* FetchedResultsController */ = { isa = PBXGroup; children = ( + DB336F3C278D80040031E64B /* FeedFetchedResultsController.swift */, DBCBED1C26132E1A00B49291 /* StatusFetchedResultsController.swift */, DBA088DE26958164003EB4B2 /* UserFetchedResultsController.swift */, DB6D9F75263587C7008423CD /* SettingFetchedResultController.swift */, @@ -3242,7 +3319,7 @@ isa = PBXGroup; children = ( DBE3CDEB261C6B2900430CC6 /* FavoriteViewController.swift */, - DBE3CE0C261D767100430CC6 /* FavoriteViewController+Provider.swift */, + DB0FCB832796B2A2006C02E2 /* FavoriteViewController+DataSourceProvider.swift */, DBE3CDFA261C6CA500430CC6 /* FavoriteViewModel.swift */, DBE3CE06261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift */, DBE3CE00261D623D00430CC6 /* FavoriteViewModel+State.swift */, @@ -3253,7 +3330,6 @@ DBF1D24F269DAF6100C1C08A /* SearchDetail */ = { isa = PBXGroup; children = ( - 2DFAD5212616F8E300F9EE7C /* TableViewCell */, DB4F0964269ED06700D62E92 /* SearchResult */, DBF1D252269DB01700C1C08A /* SearchHistory */, DBF1D24D269DAF5D00C1C08A /* SearchDetailViewController.swift */, @@ -3265,9 +3341,12 @@ DBF1D252269DB01700C1C08A /* SearchHistory */ = { isa = PBXGroup; children = ( + DB63F7502799449300455B82 /* Cell */, DB4F098026A0475500D62E92 /* View */, DBF1D250269DB01200C1C08A /* SearchHistoryViewController.swift */, + DB63F76127996B6600455B82 /* SearchHistoryViewController+DataSourceProvider.swift */, DB4F097426A037F500D62E92 /* SearchHistoryViewModel.swift */, + DB63F74E2799405600455B82 /* SearchHistoryViewModel+Diffable.swift */, ); path = SearchHistory; sourceTree = ""; @@ -3275,12 +3354,11 @@ DBF1D253269DB02C00C1C08A /* Search */ = { isa = PBXGroup; children = ( - 2D34D9E026149C550081BFC0 /* CollectionViewCell */, + 2D34D9E026149C550081BFC0 /* Cell */, 2DE0FAC62615F5D200CDF649 /* View */, DB9D6BE825E4F5340051B173 /* SearchViewController.swift */, - 2D34D9CA261489930081BFC0 /* SearchViewController+Recommend.swift */, - 5DFC35DE262068D20045711D /* SearchViewController+Follow.swift */, 2D6DE3FF26141DF600A63F6A /* SearchViewModel.swift */, + DB0FCB8B2796BF8D006C02E2 /* SearchViewModel+Diffable.swift */, ); path = Search; sourceTree = ""; @@ -3298,6 +3376,27 @@ path = NotificationService; sourceTree = ""; }; + DBFEEC97279BDC6A004F81DD /* About */ = { + isa = PBXGroup; + children = ( + DBFEEC9E279C12CD004F81DD /* Cell */, + DBFEEC95279BDC67004F81DD /* ProfileAboutViewController.swift */, + DBFEEC98279BDCDE004F81DD /* ProfileAboutViewModel.swift */, + DBFEEC9A279BDDD9004F81DD /* ProfileAboutViewModel+Diffable.swift */, + ); + path = About; + sourceTree = ""; + }; + DBFEEC9E279C12CD004F81DD /* Cell */ = { + isa = PBXGroup; + children = ( + DBA9443D265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift */, + DBFEEC9C279C12C1004F81DD /* ProfileFieldEditCollectionViewCell.swift */, + DBF9814B265E339500E4BA07 /* ProfileFieldAddEntryCollectionViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; DBFEF05426A576EE006D7ED1 /* View */ = { isa = PBXGroup; children = ( @@ -3366,6 +3465,8 @@ 5532CB85BBE168B25B20720B /* [CP] Embed Pods Frameworks */, DB89BA0825C10FD0008580ED /* Embed Frameworks */, DBF8AE1B263293E400C9C23C /* Embed App Extensions */, + DB025B8E278D6448002F581E /* ShellScript */, + DB697DD2278F48D5004EF2F7 /* ShellScript */, ); buildRules = ( ); @@ -3391,7 +3492,6 @@ DBAC649D267DFE43007FE9FD /* DiffableDataSources */, DBAC64A0267E6D02007FE9FD /* Fuzi */, DBF7A0FB26830C33004176A2 /* FPSIndicator */, - DBC6462A26A1738900B0E31B /* MastodonUI */, DB01E23226A98F0900C3965B /* MastodonMeta */, DB01E23426A98F0900C3965B /* MetaTextKit */, DB552D4E26BBD10C00E481F6 /* OrderedCollections */, @@ -3540,7 +3640,6 @@ ); name = ShareActionExtension; packageProductDependencies = ( - DBC6462426A1720B00B0E31B /* MastodonUI */, DBBC24A926A5301B00398BB9 /* MastodonSDK */, DBBC24B726A5421800398BB9 /* CommonOSLog */, DBBC24D026A5484F00398BB9 /* UITextView+Placeholder */, @@ -3568,7 +3667,7 @@ packageProductDependencies = ( DB00CA962632DDB600A54956 /* CommonOSLog */, DB6D9F41263527CE008423CD /* AlamofireImage */, - DBBC24CC26A5471E00398BB9 /* MastodonExtension */, + DB179266278D5A4A00B71DEB /* MastodonSDK */, ); productName = NotificationService; productReference = DBF8AE13263293E400C9C23C /* NotificationService.appex */; @@ -3638,6 +3737,8 @@ "gd-GB", th, "ku-TR", + "eu-ES", + "sv-FI", ); mainGroup = DB427DC925BAA00100D1B89D; packageReferences = ( @@ -3682,8 +3783,6 @@ files = ( 164F0EBC267D4FE400249499 /* BoopSound.caf in Resources */, DB427DE225BAA00100D1B89D /* LaunchScreen.storyboard in Resources */, - DB564BD0269F2F83001E39A7 /* Localizable.stringsdict in Resources */, - DB3D100D25BAA75E00EAA174 /* Localizable.strings in Resources */, DB427DDF25BAA00100D1B89D /* Assets.xcassets in Resources */, DB427DDD25BAA00100D1B89D /* Main.storyboard in Resources */, DBA4B0F626C269880077136E /* Intents.stringsdict in Resources */, @@ -3735,8 +3834,6 @@ files = ( DBA4B0F726C269880077136E /* Intents.stringsdict in Resources */, DBB8AB4F26AED13F00F6D281 /* Assets.xcassets in Resources */, - DBB8AB5126AED14600F6D281 /* Localizable.strings in Resources */, - DBB8AB5026AED14400F6D281 /* Localizable.stringsdict in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3745,9 +3842,7 @@ buildActionMask = 2147483647; files = ( DBC6461826A170AB00B0E31B /* MainInterface.storyboard in Resources */, - DBC6462726A1736000B0E31B /* Localizable.strings in Resources */, DBC6462826A1736300B0E31B /* Assets.xcassets in Resources */, - DBC6462626A1736000B0E31B /* Localizable.stringsdict in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3910,6 +4005,23 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; + DB025B8E278D6448002F581E /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ -f \"${PODS_ROOT}/Sourcery/bin/sourcery\" ]]; then\n \"${PODS_ROOT}/Sourcery/bin/sourcery\" --config ./CoreDataStack\nelse\n echo \"warning: Sourcery is not installed. Run 'pod install --repo-update' to install it.\"\nfi\n"; + }; DB3D100425BAA71500EAA174 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -3927,6 +4039,23 @@ shellPath = /bin/sh; shellScript = "if [[ -f \"${PODS_ROOT}/SwiftGen/bin/swiftgen\" ]]; then\n \"${PODS_ROOT}/SwiftGen/bin/swiftgen\" \nelse\n echo \"warning: SwiftGen is not installed. Run 'pod install --repo-update' to install it.\"\nfi\n"; }; + DB697DD2278F48D5004EF2F7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ -f \"${PODS_ROOT}/Sourcery/bin/sourcery\" ]]; then\n \"${PODS_ROOT}/Sourcery/bin/sourcery\" --config ./Mastodon\nelse\n echo \"warning: Sourcery is not installed. Run 'pod install --repo-update' to install it.\"\nfi\n"; + }; E139F888AA77A10B890BFED6 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -3975,38 +4104,42 @@ files = ( DBB525212611EBD6002F1F29 /* ProfilePagingViewController.swift in Sources */, DB6180EB26391C140018D199 /* MediaPreviewTransitionItem.swift in Sources */, + DB63F74727990B0600455B82 /* DataSourceFacade+Hashtag.swift in Sources */, DB98337125C9443200AD9700 /* APIService+Authentication.swift in Sources */, DBE3CDCF261C42ED00430CC6 /* TimelineHeaderView.swift in Sources */, + DB6746E7278ED633008A6B94 /* MastodonAuthenticationBox.swift in Sources */, DBAE3F8E2616E0B1004B8251 /* APIService+Block.swift in Sources */, - 5DF1057F25F88A4100D6C0D4 /* TouchBlockingView.swift in Sources */, DB1D843426579931000346B3 /* TableViewControllerNavigateable.swift in Sources */, - DB5B729A2731137900081888 /* FollowingListViewController+Provider.swift in Sources */, 0FAA0FDF25E0B57E0017CCDE /* WelcomeViewController.swift in Sources */, 2D206B8C25F6015000143C56 /* AudioPlaybackService.swift in Sources */, + DB65C63727A2AF6C008BAC2E /* ReportItem.swift in Sources */, 2D59819B25E4A581000FB903 /* MastodonConfirmEmailViewController.swift in Sources */, DB45FB1D25CA9D23005A8AC7 /* APIService+HomeTimeline.swift in Sources */, DBA94440265D137600C537E1 /* Mastodon+Entity+Field.swift in Sources */, DB49A61425FF2C5600B98345 /* EmojiService.swift in Sources */, DBBF1DC7265251D400E5B703 /* AutoCompleteViewModel+State.swift in Sources */, DB03A793272A7E5700EE37C5 /* SidebarListHeaderView.swift in Sources */, + DB336F2E278D71AF0031E64B /* Status+Property.swift in Sources */, DB4FFC2B269EC39600D62E92 /* SearchToSearchDetailViewControllerAnimatedTransitioning.swift in Sources */, DBCC3B9526157E6E0045B23D /* APIService+Relationship.swift in Sources */, DB5B7298273112C800081888 /* FollowingListViewModel.swift in Sources */, - 2D7631B325C159F700929FB9 /* Item.swift in Sources */, 5DF1054125F886D400D6C0D4 /* VideoPlaybackService.swift in Sources */, DB6B35182601FA3400DC1E11 /* MastodonAttachmentService.swift in Sources */, 0FB3D2F725E4C24D00AAD544 /* MastodonPickServerViewModel.swift in Sources */, + DBBC50BF278ED0E700AF0CC6 /* Date.swift in Sources */, 2D61335E25C1894B00CAE157 /* APIService.swift in Sources */, 2D9DB967263A76FB007C1D71 /* BlockDomainService.swift in Sources */, + DB336F43278EB1690031E64B /* MediaView+Configuration.swift in Sources */, DB66729625F9F91600D60309 /* ComposeStatusSection.swift in Sources */, DB482A3F261331E8008AE74C /* UserTimelineViewModel+State.swift in Sources */, 2D38F1F725CD47AC00561493 /* HomeTimelineViewModel+LoadOldestState.swift in Sources */, - 2DFAD5372617010500F9EE7C /* SearchResultTableViewCell.swift in Sources */, DB447681260B3ED600B66B82 /* CustomEmojiPickerSection.swift in Sources */, 5BB04FEF262F0DCB0043BFF6 /* ReportViewModel+Data.swift in Sources */, + DB0FCB7427956939006C02E2 /* DataSourceFacade+Status.swift in Sources */, 5B8E055826319E47006E3C53 /* ReportFooterView.swift in Sources */, DBB525502611ED6D002F1F29 /* ProfileHeaderView.swift in Sources */, - 0FB3D33225E5F50E00AAD544 /* PickServerSearchCell.swift in Sources */, + DB63F75A279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift in Sources */, + DB023D26279FFB0A005AC798 /* ShareActivityProvider.swift in Sources */, DB71FD5225F8CCAA00512AE1 /* APIService+Status.swift in Sources */, DB8481152788121200BBEABA /* MastodonRegisterTextFieldTableViewCell.swift in Sources */, 5D0393962612D266007FE196 /* WebViewModel.swift in Sources */, @@ -4014,6 +4147,8 @@ 2D5A3D3825CF8D9F002347D6 /* ScrollViewContainer.swift in Sources */, DB6180EF26391CA50018D199 /* MediaPreviewImageViewController.swift in Sources */, DB1E347825F519300079D7DF /* PickServerItem.swift in Sources */, + DB336F3F278E668C0031E64B /* StatusTableViewCell+ViewModel.swift in Sources */, + DB63F764279A5E3C00455B82 /* NotificationTimelineViewController.swift in Sources */, DBA5A53126F08EF000CACBAA /* DragIndicatorView.swift in Sources */, DB1FD45A25F27898004CFCFC /* CategoryPickerItem.swift in Sources */, DB6180F626391D580018D199 /* MediaPreviewableViewController.swift in Sources */, @@ -4022,103 +4157,104 @@ DB443CD42694627B00159B29 /* AppearanceView.swift in Sources */, DBF1D24E269DAF5D00C1C08A /* SearchDetailViewController.swift in Sources */, DB8AF53025C13561002E6C99 /* AppContext.swift in Sources */, - DB92CF7225E7BB98002C1017 /* PollOptionTableViewCell.swift in Sources */, DB72602725E36A6F00235243 /* MastodonServerRulesViewModel.swift in Sources */, + DB336F36278D77A40031E64B /* PollOption+Property.swift in Sources */, 2D364F7225E66D7500204FDC /* MastodonResendEmailViewController.swift in Sources */, - DB0C946F26A7D2A80088FB11 /* AvatarImageView.swift in Sources */, - 2D38F1F125CD477D00561493 /* HomeTimelineViewModel+LoadMiddleState.swift in Sources */, DB68A06325E905E000CFDF14 /* UIApplication.swift in Sources */, DB02CDAB26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift in Sources */, - DB63BE7F268DD1070011D3F9 /* NotificationViewController+StatusProvider.swift in Sources */, DB0617FF27855D6C0030EE79 /* MastodonServerRulesViewModel+Diffable.swift in Sources */, DBB5255E2611F07A002F1F29 /* ProfileViewModel.swift in Sources */, + DB0FCB982797F6BF006C02E2 /* UserTableViewCell+ViewModel.swift in Sources */, 2D8434FB25FF46B300EECE90 /* HomeTimelineNavigationBarTitleView.swift in Sources */, + DB697DD6278F4C29004EF2F7 /* DataSourceProvider.swift in Sources */, + DB0FCB8E2796C0B7006C02E2 /* TrendCollectionViewCell.swift in Sources */, 0F1E2D0B2615C39400C38565 /* DoubleTitleLabelNavigationBarTitleView.swift in Sources */, - DBA1DB80268F84F80052DB59 /* NotificationType.swift in Sources */, + DB697DD9278F4CED004EF2F7 /* HomeTimelineViewController+DataSourceProvider.swift in Sources */, DB9A488A26034D40008B817C /* ComposeViewModel+PublishState.swift in Sources */, DB45FAD725CA6C76005A8AC7 /* UIBarButtonItem.swift in Sources */, 2DA504692601ADE7008F4E6C /* SawToothView.swift in Sources */, DBA465952696E387002B41DB /* AppPreference.swift in Sources */, - DB87D4572609DD5300D12C0D /* DeleteBackwardResponseTextField.swift in Sources */, 2D8434F525FF465D00EECE90 /* HomeTimelineNavigationBarTitleViewModel.swift in Sources */, DB938F0F2624119800E5B6C1 /* ThreadViewModel+LoadThreadState.swift in Sources */, DB6180F226391CF40018D199 /* MediaPreviewImageViewModel.swift in Sources */, DBA5E7A3263AD0A3004598BB /* PhotoLibraryService.swift in Sources */, 5DDDF1932617442700311060 /* Mastodon+Entity+Account.swift in Sources */, - DBAE3F882615DDF4004B8251 /* UserProviderFacade.swift in Sources */, + DB63F767279A5EB300455B82 /* NotificationTimelineViewModel.swift in Sources */, 2D607AD826242FC500B70763 /* NotificationViewModel.swift in Sources */, DBABE3EC25ECAC4B00879EE5 /* WelcomeIllustrationView.swift in Sources */, DB564BD3269F3B35001E39A7 /* StatusFilterService.swift in Sources */, - DB71FD4625F8C6D200512AE1 /* StatusProvider+UITableViewDataSourcePrefetching.swift in Sources */, + DB0FCB9C27980AB6006C02E2 /* HashtagTimelineViewController+DataSourceProvider.swift in Sources */, + DB63F76F279A7D1100455B82 /* NotificationTableViewCell.swift in Sources */, DB297B1B2679FAE200704C90 /* PlaceholderImageCacheService.swift in Sources */, + DB0FCB8C2796BF8D006C02E2 /* SearchViewModel+Diffable.swift in Sources */, 2D8FCA082637EABB00137F46 /* APIService+FollowRequest.swift in Sources */, DB03A795272A981400EE37C5 /* ContentSplitViewController.swift in Sources */, - 2D152A8C25C295CC009AA50C /* StatusView.swift in Sources */, DBBC24DE26A54BCB00398BB9 /* MastodonMetricFormatter.swift in Sources */, DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */, DBB3BA2A26A81C020004F2D4 /* FLAnimatedImageView.swift in Sources */, + DB6746ED278F45F0008A6B94 /* AutoGenerateProtocolRelayDelegate.swift in Sources */, DB0618032785A7100030EE79 /* RegisterSection.swift in Sources */, - 2DE0FAC82615F5F000CDF649 /* SearchRecommendAccountsCollectionViewCell.swift in Sources */, + DB63F76B279A5ED300455B82 /* NotificationTimelineViewModel+LoadOldestState.swift in Sources */, DBF1D251269DB01200C1C08A /* SearchHistoryViewController.swift in Sources */, - 2D42FF8525C8224F004A627A /* HitTestExpandedButton.swift in Sources */, + DB0FCB7C2795821F006C02E2 /* StatusThreadRootTableViewCell.swift in Sources */, DB72601C25E36A2100235243 /* MastodonServerRulesViewController.swift in Sources */, DBB5250E2611EBAF002F1F29 /* ProfileSegmentedViewController.swift in Sources */, - 2D42FF8F25C8228A004A627A /* UIButton.swift in Sources */, DBF156DF2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift in Sources */, DB0617F1278413D00030EE79 /* PickServerServerSectionTableHeaderView.swift in Sources */, + DB0FCB7E27958957006C02E2 /* StatusThreadRootTableViewCell+ViewModel.swift in Sources */, DB789A0B25F9F2950071ACA0 /* ComposeViewController.swift in Sources */, DB938F0926240F3C00E5B6C1 /* RemoteThreadViewModel.swift in Sources */, DB0617ED277F02C50030EE79 /* OnboardingNavigationController.swift in Sources */, DB0617F527855AB90030EE79 /* ServerRuleSection.swift in Sources */, - DBBC24AE26A53DC100398BB9 /* ReplicaStatusView.swift in Sources */, DB75BF1E263C1C1B00EDBF1F /* CustomScheduler.swift in Sources */, 0FAA102725E1126A0017CCDE /* MastodonPickServerViewController.swift in Sources */, - DB59F0FE25EF5D96001F1DAB /* StatusProvider+UITableViewDelegate.swift in Sources */, DB6B74FE272FF59000C70B6E /* UserItem.swift in Sources */, DB68586425E619B700F0A850 /* NSKeyValueObservation.swift in Sources */, DBE3CE07261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift in Sources */, - 2D61335825C188A000CAE157 /* APIService+Persist+Status.swift in Sources */, 2D34D9DB261494120081BFC0 /* APIService+Search.swift in Sources */, 5B90C48B26259C120002E742 /* APIService+CoreData+Subscriptions.swift in Sources */, DBB5256E2612D5A1002F1F29 /* ProfileStatusDashboardView.swift in Sources */, DBA9443E265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift in Sources */, + DB025B93278D6501002F581E /* Persistence.swift in Sources */, 2D24E1232626ED9D00A59D4F /* UIView+Gesture.swift in Sources */, + DBFEEC9D279C12C1004F81DD /* ProfileFieldEditCollectionViewCell.swift in Sources */, DB45FAE325CA7181005A8AC7 /* MastodonUser.swift in Sources */, DBA088DF26958164003EB4B2 /* UserFetchedResultsController.swift in Sources */, DB2FF510260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift in Sources */, 0F202213261351F5000C64BF /* APIService+HashtagTimeline.swift in Sources */, DB0AC6FC25CD02E600D75117 /* APIService+Instance.swift in Sources */, DBBC24DC26A54BCB00398BB9 /* MastodonRegex.swift in Sources */, - 2D69D00A25CAA00300C3A1B2 /* APIService+CoreData+Status.swift in Sources */, - DB4481C625EE2ADA00BEFB67 /* PollSection.swift in Sources */, DBCBED1726132DB500B49291 /* UserTimelineViewModel+Diffable.swift in Sources */, - DB71FD4C25F8C80E00512AE1 /* StatusPrefetchingService.swift in Sources */, 2DE0FACE2615F7AD00CDF649 /* RecommendAccountSection.swift in Sources */, 2DAC9E3E262FC2400062E1A6 /* SuggestionAccountViewModel.swift in Sources */, DB3667A8268AE2900027D07F /* ComposeStatusPollItem.swift in Sources */, DB49A62B25FF36C700B98345 /* APIService+CustomEmoji.swift in Sources */, + DB603113279EBEBA00A935FE /* DataSourceFacade+Block.swift in Sources */, + DB336F32278D77330031E64B /* Persistence+Poll.swift in Sources */, + DB63F777279A9A2A00455B82 /* NotificationView+Configuration.swift in Sources */, DBCBED1D26132E1A00B49291 /* StatusFetchedResultsController.swift in Sources */, - 2D79E701261EA5550011E398 /* APIService+CoreData+Tag.swift in Sources */, DB029E95266A20430062874E /* MastodonAuthenticationController.swift in Sources */, DB0C947726A7FE840088FB11 /* NotificationAvatarButton.swift in Sources */, + DB336F34278D77730031E64B /* Persistence+PollOption.swift in Sources */, 5B90C461262599800002E742 /* SettingsLinkTableViewCell.swift in Sources */, DB6180DD263918E30018D199 /* MediaPreviewViewController.swift in Sources */, DBE3CDEC261C6B2900430CC6 /* FavoriteViewController.swift in Sources */, DB938EE62623F50700E5B6C1 /* ThreadViewController.swift in Sources */, DB6180F426391D110018D199 /* MediaPreviewImageView.swift in Sources */, + DB336F41278E68480031E64B /* StatusView+Configuration.swift in Sources */, DBF9814A265E24F500E4BA07 /* ProfileFieldCollectionViewHeaderFooterView.swift in Sources */, 2D939AB525EDD8A90076FA61 /* String.swift in Sources */, DB4481B925EE289600BEFB67 /* UITableView.swift in Sources */, DBE3CDBB261C427900430CC6 /* TimelineHeaderTableViewCell.swift in Sources */, + DB159C2B27A17BAC0068DC77 /* DataSourceFacade+Media.swift in Sources */, 0FAA101C25E10E760017CCDE /* UIFont.swift in Sources */, 2D38F1D525CD465300561493 /* HomeTimelineViewController.swift in Sources */, - DB97131F2666078B00BD1E90 /* Date.swift in Sources */, - DB98338825C945ED00AD9700 /* Assets.swift in Sources */, DB6180E926391BDF0018D199 /* MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift in Sources */, DB6B351E2601FAEE00DC1E11 /* ComposeStatusAttachmentCollectionViewCell.swift in Sources */, + DB8F7076279E954700E1225B /* DataSourceFacade+Follow.swift in Sources */, DB36679F268ABAF20027D07F /* ComposeStatusAttachmentSection.swift in Sources */, 2DA7D04425CA52B200804E11 /* TimelineLoaderTableViewCell.swift in Sources */, - DB87D44B2609C11900D12C0D /* PollOptionView.swift in Sources */, + DB63F7542799491600455B82 /* DataSourceFacade+SearchHistory.swift in Sources */, DBF1572F27046F1A00EC00B7 /* SecondaryPlaceholderViewController.swift in Sources */, DB03F7F32689AEA3007B274C /* ComposeRepliedToStatusContentTableViewCell.swift in Sources */, 2D4AD8A826316D3500613EFC /* SelectedAccountItem.swift in Sources */, @@ -4135,10 +4271,10 @@ 0F202201261326E6000C64BF /* HashtagTimelineViewModel.swift in Sources */, DB6D9F9726367249008423CD /* SettingsViewController.swift in Sources */, DB4F097F26A03DA600D62E92 /* SearchHistoryFetchedResultController.swift in Sources */, + DB63F7452799056400455B82 /* HashtagTableViewCell.swift in Sources */, DBD9149025DF6D8D00903DFD /* APIService+Onboarding.swift in Sources */, DBAE3FAF26172FC0004B8251 /* RemoteProfileViewModel.swift in Sources */, - DBE3CE0D261D767100430CC6 /* FavoriteViewController+Provider.swift in Sources */, - 2D084B9326259545003AA3AF /* NotificationViewModel+LoadLatestState.swift in Sources */, + DB0FCB7227952986006C02E2 /* NamingState.swift in Sources */, DB73BF47271199CA00781945 /* Instance.swift in Sources */, DB0F8150264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift in Sources */, DB98337F25C9452D00AD9700 /* APIService+APIError.swift in Sources */, @@ -4148,12 +4284,12 @@ DB5B729E273113F300081888 /* FollowingListViewModel+State.swift in Sources */, 2DF123A725C3B0210020F248 /* ActiveLabel.swift in Sources */, 5DDDF1A92617489F00311060 /* Mastodon+Entity+History.swift in Sources */, - DB59F11825EFA35B001F1DAB /* StripProgressView.swift in Sources */, - DB59F10425EF5EBC001F1DAB /* TableViewCellHeightCacheableContainer.swift in Sources */, DBF9814C265E339500E4BA07 /* ProfileFieldAddEntryCollectionViewCell.swift in Sources */, + DB63F76227996B6600455B82 /* SearchHistoryViewController+DataSourceProvider.swift in Sources */, DB73BF4927140BA300781945 /* UICollectionViewDiffableDataSource.swift in Sources */, DBA5E7AB263BD3F5004598BB /* TimelineTableViewCellContextMenuConfiguration.swift in Sources */, DB73B490261F030A002E9E9F /* SafariActivity.swift in Sources */, + DB63F7492799126300455B82 /* FollowerListViewController+DataSourceProvider.swift in Sources */, DB6D1B44263691CF00ACB481 /* Mastodon+API+Subscriptions+Policy.swift in Sources */, DB9A48962603685D008B817C /* MastodonAttachmentService+UploadState.swift in Sources */, 2D198643261BF09500F0B013 /* SearchResultItem.swift in Sources */, @@ -4161,36 +4297,35 @@ DB66728C25F9F8DC00D60309 /* ComposeViewModel+DataSource.swift in Sources */, DB6180E02639194B0018D199 /* MediaPreviewPagingViewController.swift in Sources */, DBE0822425CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift in Sources */, - 2DF75B9B25D0E27500694EC8 /* StatusProviderFacade.swift in Sources */, 5B90C45E262599800002E742 /* SettingsViewModel.swift in Sources */, 2D82B9FF25E7863200E36F0F /* OnboardingViewControllerAppearance.swift in Sources */, 5DF1054725F8870E00D6C0D4 /* VideoPlayerViewModel.swift in Sources */, DB73BF43271192BB00781945 /* InstanceService.swift in Sources */, DB67D08427312970006A36CF /* APIService+Following.swift in Sources */, - DBA9443A265CC0FC00C537E1 /* Fields.swift in Sources */, - 2DE0FAC12615F04D00CDF649 /* RecommendHashTagSection.swift in Sources */, + DB025B78278D606A002F581E /* StatusItem.swift in Sources */, + DB697DD4278F4927004EF2F7 /* StatusTableViewCellDelegate.swift in Sources */, + DB0FCB902796C5EB006C02E2 /* APIService+Trend.swift in Sources */, DBA5E7A5263BD28C004598BB /* ContextMenuImagePreviewViewModel.swift in Sources */, DB9D7C21269824B80054B3DF /* APIService+Filter.swift in Sources */, 2D38F1E525CD46C100561493 /* HomeTimelineViewModel.swift in Sources */, + DB0FCB842796B2A2006C02E2 /* FavoriteViewController+DataSourceProvider.swift in Sources */, DBCC3B36261440BA0045B23D /* UINavigationController.swift in Sources */, DBB525852612D6DD002F1F29 /* ProfileStatusDashboardMeterView.swift in Sources */, + DB0FCB68279507EF006C02E2 /* DataSourceFacade+Meta.swift in Sources */, + DB63F75C279956D000455B82 /* Persistence+Tag.swift in Sources */, 2D84350525FF858100EECE90 /* UIScrollView.swift in Sources */, DB49A61F25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift in Sources */, - 2D76316B25C14D4C00929FB9 /* PublicTimelineViewModel.swift in Sources */, 5B24BBDB262DB14800A9381B /* ReportViewModel+Diffable.swift in Sources */, - DB71FD3C25F8A1C500512AE1 /* APIService+Persist+PersistCache.swift in Sources */, 2DA6055125F74407006356F9 /* AudioContainerViewModel.swift in Sources */, DB4F0968269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift in Sources */, 0FB3D2FE25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift in Sources */, 5DA732CC2629CEF500A92342 /* UIView+Remove.swift in Sources */, DBAEDE5C267A058D00D25FF5 /* BlurhashImageCacheService.swift in Sources */, - 2D38F1DF25CD46A400561493 /* HomeTimelineViewController+Provider.swift in Sources */, DB1D843026566512000346B3 /* KeyboardPreference.swift in Sources */, DB852D1926FAEB6B00FC9D81 /* SidebarViewController.swift in Sources */, 2D206B9225F60EA700143C56 /* UIControl.swift in Sources */, 2D9DB96B263A91D1007C1D71 /* APIService+DomainBlock.swift in Sources */, DBBF1DC92652538500E5B703 /* AutoCompleteSection.swift in Sources */, - 2D45E5BF25C9549700A6D639 /* PublicTimelineViewModel+State.swift in Sources */, DB8AF55D25C138B7002E6C99 /* UIViewController.swift in Sources */, DB7F48452620241000796008 /* ProfileHeaderViewModel.swift in Sources */, DB647C5926F1EA2700F7F82C /* WizardPreference.swift in Sources */, @@ -4198,12 +4333,11 @@ 5DDDF1992617447F00311060 /* Mastodon+Entity+Tag.swift in Sources */, 5B90C45F262599800002E742 /* SettingsToggleTableViewCell.swift in Sources */, 2D694A7425F9EB4E0038ADDC /* ContentWarningOverlayView.swift in Sources */, + DB0FCB7827957678006C02E2 /* DataSourceProvider+UITableViewDelegate.swift in Sources */, DB4932B126F1FB5300EF46D4 /* WizardCardView.swift in Sources */, - DBAE3F682615DD60004B8251 /* UserProvider.swift in Sources */, DB6D9F76263587C7008423CD /* SettingFetchedResultController.swift in Sources */, DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */, 5D0393902612D259007FE196 /* WebViewController.swift in Sources */, - DB4481CC25EE2AFE00BEFB67 /* PollItem.swift in Sources */, DB6B74FA272FC2B500C70B6E /* APIService+Follower.swift in Sources */, DB6B74F4272FBAE700C70B6E /* FollowerListViewModel+Diffable.swift in Sources */, DB6B74F2272FB67600C70B6E /* FollowerListViewModel.swift in Sources */, @@ -4212,21 +4346,23 @@ DB0009A626AEE5DC009B9D2D /* Intents.intentdefinition in Sources */, 5B90C462262599800002E742 /* SettingsSectionHeader.swift in Sources */, DB44768B260B3F2100B66B82 /* CustomEmojiPickerItem.swift in Sources */, - 2DF75BA125D0E29D00694EC8 /* StatusProvider+StatusTableViewCellDelegate.swift in Sources */, 5DF1056425F887CB00D6C0D4 /* AVPlayer.swift in Sources */, DBBF1DCB2652539E00E5B703 /* AutoCompleteItem.swift in Sources */, DB84811727883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift in Sources */, 2DA6054725F716A2006356F9 /* PlaybackState.swift in Sources */, DB35FC1F2612F1D9006193C9 /* ProfileRelationshipActionButton.swift in Sources */, DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */, + DB025B95278D6530002F581E /* Persistence+MastodonUser.swift in Sources */, DB3667A6268AE2620027D07F /* ComposeStatusPollSection.swift in Sources */, DB6B750427300B4000C70B6E /* TimelineFooterTableViewCell.swift in Sources */, DB59F10E25EF724F001F1DAB /* APIService+Poll.swift in Sources */, DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */, + DB63F769279A5EBB00455B82 /* NotificationTimelineViewModel+Diffable.swift in Sources */, DB47229725F9EFAD00DA7F53 /* NSManagedObjectContext.swift in Sources */, + DB63F75E27995B3B00455B82 /* Tag+Property.swift in Sources */, + DBFEEC9B279BDDD9004F81DD /* ProfileAboutViewModel+Diffable.swift in Sources */, 2D34D9D126148D9E0081BFC0 /* APIService+Recommend.swift in Sources */, DBB525562611EDCA002F1F29 /* UserTimelineViewModel.swift in Sources */, - 2D42FF7E25C82218004A627A /* ActionToolBarContainer.swift in Sources */, DB0618012785732C0030EE79 /* ServerRulesTableViewCell.swift in Sources */, DB221B16260C395900AEFE46 /* CustomEmojiPickerInputViewModel.swift in Sources */, DB0617EF277F12720030EE79 /* NavigationActionView.swift in Sources */, @@ -4236,21 +4372,27 @@ DB3667A1268ABB2E0027D07F /* ComposeStatusAttachmentItem.swift in Sources */, DB1D186C25EF5BA7003F1F23 /* PollTableView.swift in Sources */, DBA94434265CBB5300C537E1 /* ProfileFieldSection.swift in Sources */, + DB336F28278D6EC70031E64B /* MastodonFieldContainer.swift in Sources */, DBF156E42702DB3F00EC00B7 /* HandleTapAction.swift in Sources */, 2D5981A125E4A593000FB903 /* MastodonConfirmEmailViewModel.swift in Sources */, DB6B74F6272FBCDB00C70B6E /* FollowerListViewModel+State.swift in Sources */, - DB4F096C269EFA2000D62E92 /* SearchResultViewController+StatusProvider.swift in Sources */, DB87D4452609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift in Sources */, + DB336F2C278D6FC30031E64B /* Persistence+Status.swift in Sources */, + DB336F2A278D6F2B0031E64B /* MastodonField.swift in Sources */, + DB0FCB7A279576A2006C02E2 /* DataSourceFacade+Thread.swift in Sources */, DB9F58EF26EF491E00E7BBE9 /* AccountListViewModel.swift in Sources */, DB6D9F7D26358ED4008423CD /* SettingsSection.swift in Sources */, - DB0E91EA26A9675100BD2ACC /* MetaLabel.swift in Sources */, + DB0FCB9A2797F7AD006C02E2 /* UserView+Configuration.swift in Sources */, + DB023D2827A0FABD005AC798 /* NotificationTableViewCellDelegate.swift in Sources */, DB8AF55025C13703002E6C99 /* MainTabBarController.swift in Sources */, + DB023D2C27A10464005AC798 /* NotificationTimelineViewController+DataSourceProvider.swift in Sources */, DB9D6BE925E4F5340051B173 /* SearchViewController.swift in Sources */, 2D38F1C625CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift in Sources */, DBF1D257269DBAC600C1C08A /* SearchDetailViewModel.swift in Sources */, DB03F7F52689B782007B274C /* ComposeTableView.swift in Sources */, - 2D24E11D2626D8B100A59D4F /* NotificationStatusTableViewCell.swift in Sources */, DB6C8C0F25F0A6AE00AAA452 /* Mastodon+Entity+Error.swift in Sources */, + DB0FCB76279571C5006C02E2 /* ThreadViewController+DataSourceProvider.swift in Sources */, + DB0FCB7027951368006C02E2 /* TimelineMiddleLoaderTableViewCell+ViewModel.swift in Sources */, DB1E346825F518E20079D7DF /* CategoryPickerSection.swift in Sources */, DB7274F4273BB9B200577D95 /* ListBatchFetchViewModel.swift in Sources */, DB0618052785A73D0030EE79 /* RegisterItem.swift in Sources */, @@ -4260,57 +4402,57 @@ DBB525642612C988002F1F29 /* MeProfileViewModel.swift in Sources */, DB6B74EF272FB55000C70B6E /* FollowerListViewController.swift in Sources */, 5BB04FE9262EFC300043BFF6 /* ReportedStatusTableviewCell.swift in Sources */, - DBAE3F822615DDA3004B8251 /* ProfileViewController+UserProvider.swift in Sources */, + DB0FCB942797E2B0006C02E2 /* SearchResultViewModel+Diffable.swift in Sources */, + DB63F752279944AA00455B82 /* SearchHistorySectionHeaderCollectionReusableView.swift in Sources */, DBBC24C426A544B900398BB9 /* Theme.swift in Sources */, DB938EED2623F79B00E5B6C1 /* ThreadViewModel.swift in Sources */, DBBC24AC26A53D9300398BB9 /* ComposeStatusContentTableViewCell.swift in Sources */, DBC7A67C260DFADE00E57475 /* StatusPublishService.swift in Sources */, 2DCB73FD2615C13900EC03D4 /* SearchRecommendCollectionHeader.swift in Sources */, DB852D1C26FB021500FC9D81 /* RootSplitViewController.swift in Sources */, + DB697DD1278F4871004EF2F7 /* AutoGenerateTableViewDelegate.swift in Sources */, DB02CDBF2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift in Sources */, DB1FD44425F26CCC004CFCFC /* PickServerSection.swift in Sources */, 0FB3D30F25E525CD00AAD544 /* PickServerCategoryView.swift in Sources */, DB6180E626391B550018D199 /* MediaPreviewTransitionController.swift in Sources */, 5BB04FDB262EA3070043BFF6 /* ReportHeaderView.swift in Sources */, + DB0FCB922796DE19006C02E2 /* TrendSectionHeaderCollectionReusableView.swift in Sources */, DB2F073525E8ECF000957B2D /* AuthenticationViewModel.swift in Sources */, + DB63F779279ABF9C00455B82 /* DataSourceFacade+Reblog.swift in Sources */, DB4F0963269ED06300D62E92 /* SearchResultViewController.swift in Sources */, DBBF1DC5265251C300E5B703 /* AutoCompleteViewModel+Diffable.swift in Sources */, + DB603111279EB38500A935FE /* DataSourceFacade+Mute.swift in Sources */, DB68A04A25E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift in Sources */, DBBC24BC26A542F500398BB9 /* ThemeService.swift in Sources */, + DB336F38278D7AAF0031E64B /* Poll+Property.swift in Sources */, 0FB3D33825E6401400AAD544 /* PickServerCell.swift in Sources */, DB6D9F8426358EEC008423CD /* SettingsItem.swift in Sources */, 2D364F7825E66D8300204FDC /* MastodonResendEmailViewModel.swift in Sources */, DBA465932696B495002B41DB /* APIService+WebFinger.swift in Sources */, DB8AF54525C13647002E6C99 /* NeedsDependency.swift in Sources */, + DB63F77B279ACAE500455B82 /* DataSourceFacade+Favorite.swift in Sources */, DB9D6BF825E4F5690051B173 /* NotificationViewController.swift in Sources */, 2DAC9E46262FC9FD0062E1A6 /* SuggestionAccountTableViewCell.swift in Sources */, DB4FFC2C269EC39600D62E92 /* SearchTransitionController.swift in Sources */, DBA5E7A9263BD3A4004598BB /* ContextMenuImagePreviewViewController.swift in Sources */, DBF156E22702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m in Sources */, - DB45FADD25CA6F6B005A8AC7 /* APIService+CoreData+MastodonUser.swift in Sources */, 2D32EABA25CB9B0500C9ED86 /* UIView.swift in Sources */, 2D38F20825CD491300561493 /* DisposeBagCollectable.swift in Sources */, DB6F5E35264E78E7009108F4 /* AutoCompleteViewController.swift in Sources */, - DBA94438265CBD4D00C537E1 /* ProfileHeaderViewModel+Diffable.swift in Sources */, - 0F20220D26134E3F000C64BF /* HashtagTimelineViewModel+LoadLatestState.swift in Sources */, + DB697DE1278F5296004EF2F7 /* DataSourceFacade+Model.swift in Sources */, DBCC3B8F26148F7B0045B23D /* CachedProfileViewModel.swift in Sources */, DB4F097526A037F500D62E92 /* SearchHistoryViewModel.swift in Sources */, DB49A63D25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift in Sources */, DB6180F826391D660018D199 /* MediaPreviewingViewController.swift in Sources */, DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */, - DB6B75022730060700C70B6E /* UserProviderFacade+UITableViewDelegate.swift in Sources */, - 2D34D9CB261489930081BFC0 /* SearchViewController+Recommend.swift in Sources */, DB71C7CB271D5A0300BE3819 /* LineChartView.swift in Sources */, DB938F1526241FDF00E5B6C1 /* APIService+Thread.swift in Sources */, - DB482A45261335BA008AE74C /* UserTimelineViewController+Provider.swift in Sources */, 2D206B8625F5FB0900143C56 /* Double.swift in Sources */, DB9F58F126EF512300E7BBE9 /* AccountListTableViewCell.swift in Sources */, 2D76319F25C1521200929FB9 /* StatusSection.swift in Sources */, - DB35FC252612FD7A006193C9 /* ProfileFieldView.swift in Sources */, DB938F0326240EA300E5B6C1 /* CachedThreadViewModel.swift in Sources */, DB6D9F6326357848008423CD /* SettingService.swift in Sources */, 2D650FAB25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift in Sources */, - 2D24E12D2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift in Sources */, DBA5A53526F0A36A00CACBAA /* AddAccountTableViewCell.swift in Sources */, 2DB72C8C262D764300CE6173 /* Mastodon+Entity+Notification+Type.swift in Sources */, 2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */, @@ -4318,6 +4460,7 @@ 2D4AD89C263165B500613EFC /* SuggestionAccountCollectionViewCell.swift in Sources */, DB447691260B406600B66B82 /* CustomEmojiPickerItemCollectionViewCell.swift in Sources */, DB9282B225F3222800823B15 /* PickServerEmptyStateView.swift in Sources */, + DB697DDF278F524F004EF2F7 /* DataSourceFacade+Profile.swift in Sources */, DB1FD45025F26FA1004CFCFC /* MastodonPickServerViewModel+Diffable.swift in Sources */, DBD376AC2692ECDB007FEC24 /* ThemePreference.swift in Sources */, DB4F097D26A03A5B00D62E92 /* SearchHistoryItem.swift in Sources */, @@ -4325,37 +4468,37 @@ DBAE3F9E2616E308004B8251 /* APIService+Mute.swift in Sources */, DB427DD625BAA00100D1B89D /* AppDelegate.swift in Sources */, DB6D9F57263577D2008423CD /* APIService+CoreData+Setting.swift in Sources */, + DB0FCB822796AC78006C02E2 /* UserTimelineViewController+DataSourceProvider.swift in Sources */, + DB63F773279A87DC00455B82 /* Notification+Property.swift in Sources */, DB9D6C0E25E4F9780051B173 /* MosaicImageViewContainer.swift in Sources */, DBCBCC0D2680B908000F5B51 /* HomeTimelinePreference.swift in Sources */, - DB71FD3625F8A16C00512AE1 /* APIService+Persist+PersistMemo.swift in Sources */, DB0EF72E26FDB24F00347686 /* SidebarListContentView.swift in Sources */, DBBE1B4525F3474B0081417A /* MastodonPickServerAppearance.swift in Sources */, - DB98338725C945ED00AD9700 /* Strings.swift in Sources */, 2D7867192625B77500211898 /* NotificationItem.swift in Sources */, DB45FAB625CA5485005A8AC7 /* UIAlertController.swift in Sources */, DBE0821525CD382600FD6BBD /* MastodonRegisterViewController.swift in Sources */, 2D5A3D0325CF8742002347D6 /* ControlContainableScrollViews.swift in Sources */, DB36679D268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift in Sources */, - DB0C947226A7D2D70088FB11 /* AvatarButton.swift in Sources */, DB98336B25C9420100AD9700 /* APIService+App.swift in Sources */, DBFEF07B26A6BCE8006D7ED1 /* APIService+Status+Publish.swift in Sources */, DBA0A11325FB3FC10079C110 /* ComposeToolbarView.swift in Sources */, - 2D32EADA25CBCC3300C9ED86 /* PublicTimelineViewModel+LoadMiddleState.swift in Sources */, 5B90C48526259BF10002E742 /* APIService+Subscriptions.swift in Sources */, + DBFEEC96279BDC67004F81DD /* ProfileAboutViewController.swift in Sources */, + DB63F74F2799405600455B82 /* SearchHistoryViewModel+Diffable.swift in Sources */, + DB336F23278D6DED0031E64B /* MastodonEmojiContainer.swift in Sources */, 0F20223926146553000C64BF /* Array.swift in Sources */, DB0EF72B26FDB1D200347686 /* SidebarListCollectionViewCell.swift in Sources */, 5B90C460262599800002E742 /* SettingsAppearanceTableViewCell.swift in Sources */, - DB0C946B26A700AB0088FB11 /* MastodonUser+Property.swift in Sources */, + DB63F74D27993F5B00455B82 /* SearchHistoryUserCollectionViewCell.swift in Sources */, DB8AF54425C13647002E6C99 /* SceneCoordinator.swift in Sources */, 5DF1058525F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift in Sources */, DB73BF45271195AC00781945 /* APIService+CoreData+Instance.swift in Sources */, + DB336F21278D6D960031E64B /* MastodonEmoji.swift in Sources */, DB1D84382657B275000346B3 /* SegmentedControlNavigateable.swift in Sources */, DB447697260B439000B66B82 /* CustomEmojiPickerHeaderCollectionReusableView.swift in Sources */, + DB025B97278D66D5002F581E /* MastodonUser+Property.swift in Sources */, DB45FAF925CA80A2005A8AC7 /* APIService+CoreData+MastodonAuthentication.swift in Sources */, - 2D04F42525C255B9003F936F /* APIService+PublicTimeline.swift in Sources */, - 2D34D9E226149C920081BFC0 /* SearchRecommendTagsCollectionViewCell.swift in Sources */, - 2D76317D25C14DF500929FB9 /* PublicTimelineViewController+Provider.swift in Sources */, - 0F20223326145E51000C64BF /* HashtagTimelineViewModel+LoadMiddleState.swift in Sources */, + DB0FCB6C27950E29006C02E2 /* MastodonMentionContainer.swift in Sources */, DB6D9F502635761F008423CD /* SubscriptionAlerts.swift in Sources */, 0F20220726134DA4000C64BF /* HashtagTimelineViewModel+Diffable.swift in Sources */, DBE54AC62636C89F004E7C0B /* NotificationPreference.swift in Sources */, @@ -4364,39 +4507,37 @@ DB0618072785A8880030EE79 /* MastodonRegisterViewModel+Diffable.swift in Sources */, DB6B74FC272FF55800C70B6E /* UserSection.swift in Sources */, 2DF75BA725D10E1000694EC8 /* APIService+Favorite.swift in Sources */, - DB9D6C3825E508BE0051B173 /* Attachment.swift in Sources */, - 5DFC35DF262068D20045711D /* SearchViewController+Follow.swift in Sources */, + DB0FCB862796BDA1006C02E2 /* SearchSection.swift in Sources */, DB8AF52E25C13561002E6C99 /* ViewStateStore.swift in Sources */, DB1D61CF26F1B33600DA8662 /* WelcomeViewModel.swift in Sources */, 2DA7D04A25CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift in Sources */, DB71C7CD271D7F4300BE3819 /* CurveAlgorithm.swift in Sources */, DBD376B2269302A4007FEC24 /* UITableViewCell.swift in Sources */, DB4F0966269ED52200D62E92 /* SearchResultViewModel.swift in Sources */, - 2D76318325C14E8F00929FB9 /* PublicTimelineViewModel+Diffable.swift in Sources */, DBBF1DBF2652401B00E5B703 /* AutoCompleteViewModel.swift in Sources */, DB6180FA26391F2E0018D199 /* MediaPreviewViewModel.swift in Sources */, - 0F202227261411BB000C64BF /* HashtagTimelineViewController+Provider.swift in Sources */, 2D7631A825C1535600929FB9 /* StatusTableViewCell.swift in Sources */, - 2D76316525C14BD100929FB9 /* PublicTimelineViewController.swift in Sources */, DB6B7500272FF73800C70B6E /* UserTableViewCell.swift in Sources */, DB1D842E26552C4D000346B3 /* StatusTableViewControllerNavigateable.swift in Sources */, DB938F1F2624382F00E5B6C1 /* ThreadViewModel+Diffable.swift in Sources */, - 2D69CFF425CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift in Sources */, DB482A4B261340A7008AE74C /* APIService+UserTimeline.swift in Sources */, DB427DD825BAA00100D1B89D /* SceneDelegate.swift in Sources */, DB4932B926F31AD300EF46D4 /* BadgeButton.swift in Sources */, 0F2021FB2613262F000C64BF /* HashtagTimelineViewController.swift in Sources */, + DB697DDD278F521D004EF2F7 /* DataSourceFacade.swift in Sources */, DBCC3B30261440A50045B23D /* UITabBarController.swift in Sources */, DB8190C62601FF0400020C08 /* AttachmentContainerView.swift in Sources */, + DB697DDB278F4DE3004EF2F7 /* DataSourceProvider+StatusTableViewCellDelegate.swift in Sources */, DB51D173262832380062B7A1 /* BlurHashEncode.swift in Sources */, 2D32EAAC25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift in Sources */, - DB71FD2C25F86A5100512AE1 /* AvatarStackContainerButton.swift in Sources */, DB87D4512609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift in Sources */, DBBC24C026A5443100398BB9 /* MastodonTheme.swift in Sources */, + DB0FCB8027968F70006C02E2 /* MastodonStatusThreadViewModel.swift in Sources */, + DB0FCB6E27950E6B006C02E2 /* MastodonMention.swift in Sources */, DB67D08627312E67006A36CF /* WizardViewController.swift in Sources */, - DBBC24B526A540AE00398BB9 /* AvatarConfigurableView.swift in Sources */, + DB6746EB278ED8B0008A6B94 /* PollOptionView+Configuration.swift in Sources */, DB9A489026035963008B817C /* APIService+Media.swift in Sources */, - DBFEF07726A691FB006D7ED1 /* MastodonAuthenticationBox.swift in Sources */, + DBFEEC99279BDCDE004F81DD /* ProfileAboutViewModel.swift in Sources */, DBBC24CF26A547AE00398BB9 /* ThemeService+Appearance.swift in Sources */, 2D198649261C0B8500F0B013 /* SearchResultSection.swift in Sources */, DB4F097B26A039FF00D62E92 /* SearchHistorySection.swift in Sources */, @@ -4407,38 +4548,39 @@ DB4924E226312AB200E9DB22 /* NotificationService.swift in Sources */, DB6D9F6F2635807F008423CD /* Setting.swift in Sources */, DB6F5E38264E994A009108F4 /* AutoCompleteTopChevronView.swift in Sources */, + DB6746F0278F463B008A6B94 /* AutoGenerateProtocolDelegate.swift in Sources */, DBB525412611ED54002F1F29 /* ProfileHeaderViewController.swift in Sources */, - DB6B74F8272FBFB100C70B6E /* FollowerListViewController+Provider.swift in Sources */, DB9D6BFF25E4F5940051B173 /* ProfileViewController.swift in Sources */, - DB4932B326F2054200EF46D4 /* CircleAvatarButton.swift in Sources */, - 0FB3D30825E524C600AAD544 /* PickServerCategoriesCell.swift in Sources */, + DB63F756279949BD00455B82 /* Persistence+SearchHistory.swift in Sources */, 2D4AD8A226316CD200613EFC /* SelectedAccountSection.swift in Sources */, + DB63F775279A997D00455B82 /* NotificationTableViewCell+ViewModel.swift in Sources */, DB0617EB277EF3820030EE79 /* GradientBorderView.swift in Sources */, DB789A1225F9F2CC0071ACA0 /* ComposeViewModel.swift in Sources */, + DB63F74B279914A000455B82 /* FollowingListViewController+DataSourceProvider.swift in Sources */, DBB525362611ECEB002F1F29 /* UserTimelineViewController.swift in Sources */, DB6D1B3D2636857500ACB481 /* AppearancePreference.swift in Sources */, DB938F3326243D6200E5B6C1 /* TimelineTopLoaderTableViewCell.swift in Sources */, DB3667A4268AE2370027D07F /* ComposeStatusPollTableViewCell.swift in Sources */, DBBF1DC226524D2900E5B703 /* AutoCompleteTableViewCell.swift in Sources */, - 2D38F1FE25CD481700561493 /* StatusProvider.swift in Sources */, 5B24BBE2262DB19100A9381B /* APIService+Report.swift in Sources */, DBF3B7412733EB9400E21627 /* MastodonLocalCode.swift in Sources */, DB4F096A269EDAD200D62E92 /* SearchResultViewModel+State.swift in Sources */, 5BB04FF5262F0E6D0043BFF6 /* ReportSection.swift in Sources */, DBA94436265CBB7400C537E1 /* ProfileFieldItem.swift in Sources */, - DB938F25262438D600E5B6C1 /* ThreadViewController+Provider.swift in Sources */, + DB023D2A27A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift in Sources */, + DB0FCB962797E6C2006C02E2 /* SearchResultViewController+DataSourceProvider.swift in Sources */, DB66729C25F9F91F00D60309 /* ComposeStatusItem.swift in Sources */, DB6180E326391A4C0018D199 /* ViewControllerAnimatedTransitioning.swift in Sources */, 0FB3D31E25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift in Sources */, - DB1D842C26551A1C000346B3 /* StatusProvider+StatusTableViewKeyCommandNavigateable.swift in Sources */, + DB0FCB882796BDA9006C02E2 /* SearchItem.swift in Sources */, 5DF1057925F88A1D00D6C0D4 /* PlayerContainerView.swift in Sources */, - DB1D843626579DB5000346B3 /* StatusProvider+TableViewControllerNavigateable.swift in Sources */, + DB336F3D278D80040031E64B /* FeedFetchedResultsController.swift in Sources */, DB6D9F4926353FD7008423CD /* Subscription.swift in Sources */, DB45FB0F25CA87D0005A8AC7 /* AuthenticationService.swift in Sources */, DB6180ED26391C6C0018D199 /* TransitioningMath.swift in Sources */, + DB63F771279A858500455B82 /* Persistence+Notification.swift in Sources */, 2D6DE40026141DF600A63F6A /* SearchViewModel.swift in Sources */, DB51D172262832380062B7A1 /* BlurHashDecode.swift in Sources */, - DBAFB7352645463500371D5F /* Emojis.swift in Sources */, DBCCC71E25F73297007E1AB6 /* APIService+Reblog.swift in Sources */, DBE3CE13261D7D4200430CC6 /* StatusTableViewControllerAspect.swift in Sources */, DB0617FD27855BFE0030EE79 /* ServerRuleItem.swift in Sources */, @@ -4479,36 +4621,48 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + DB025B8C278D6374002F581E /* Acct.swift in Sources */, 2DA7D05725CA693F00804E11 /* Application.swift in Sources */, 2D927F1425C7EDD9004F19B8 /* Emoji.swift in Sources */, + DB025B84278D6272002F581E /* AutoGenerateProperty.swift in Sources */, 2DF75BC725D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift in Sources */, + DB336F26278D6E8F0031E64B /* MastodonField.swift in Sources */, DB89BA1225C1105C008580ED /* CoreDataStack.swift in Sources */, + DB63F76027995ECE00455B82 /* MastodonTagHistory.swift in Sources */, + DB336F3A278D7D1F0031E64B /* ManagedObjectRecord.swift in Sources */, 5B90C46F26259B2C0002E742 /* Setting.swift in Sources */, DB89BA1C25C1107F008580ED /* NSManagedObjectContext.swift in Sources */, - DB9D6C2E25E504AC0051B173 /* Attachment.swift in Sources */, 2D927F0E25C7E9C9004F19B8 /* History.swift in Sources */, DBCC3B9B261584A00045B23D /* PrivateNote.swift in Sources */, DB89BA3725C1145C008580ED /* CoreData.xcdatamodeld in Sources */, DB73BF4127118B6D00781945 /* Instance.swift in Sources */, DB8AF52525C131D1002E6C99 /* MastodonUser.swift in Sources */, + DB336F30278D723D0031E64B /* MastodonVisibility.swift in Sources */, DB89BA1B25C1107F008580ED /* Collection.swift in Sources */, DB4481AD25EE155900BEFB67 /* Poll.swift in Sources */, DB89BA2725C110B4008580ED /* Status.swift in Sources */, + DB025B86278D6272002F581E /* AutoGenerateRelationship.swift in Sources */, 2D152A9225C2980C009AA50C /* UIFont.swift in Sources */, DB4481B325EE16D000BEFB67 /* PollOption.swift in Sources */, DB89BA4425C1165F008580ED /* Managed.swift in Sources */, 2D6125472625436B00299647 /* Notification.swift in Sources */, DB89BA4325C1165F008580ED /* NetworkUpdatable.swift in Sources */, DB8AF56825C13E2A002E6C99 /* HomeTimelineIndex.swift in Sources */, + DB025B85278D6272002F581E /* AutoUpdatableObject.swift in Sources */, DB45FAED25CA7A9A005A8AC7 /* MastodonAuthentication.swift in Sources */, + DB025B89278D6339002F581E /* Feed.swift in Sources */, 2DF75BB925D1474100694EC8 /* ManagedObjectObserver.swift in Sources */, - 2D927F0225C7E4F2004F19B8 /* Mention.swift in Sources */, + DB0FCB6A27950CB3006C02E2 /* MastodonMention.swift in Sources */, DB89BA1D25C1107F008580ED /* URL.swift in Sources */, + DB63F76D279A67BD00455B82 /* MastodonNotificationType.swift in Sources */, 2D9DB969263A833E007C1D71 /* DomainBlock.swift in Sources */, + DB025B90278D6489002F581E /* Feed+Kind.swift in Sources */, 2D0B7A1D261D839600B44727 /* SearchHistory.swift in Sources */, + DB336F1E278D6C3A0031E64B /* MastodonEmoji.swift in Sources */, 2D927F0825C7E9A8004F19B8 /* Tag.swift in Sources */, 5B90C46E26259B2C0002E742 /* Subscription.swift in Sources */, 5B90C47F26259BA90002E742 /* SubscriptionAlerts.swift in Sources */, + DB336F45278EB1D70031E64B /* MastodonAttachment.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4525,12 +4679,10 @@ buildActionMask = 2147483647; files = ( DB0009A726AEE5DC009B9D2D /* Intents.intentdefinition in Sources */, - DBB8AB4E26AED12E00F6D281 /* Assets.swift in Sources */, DBB8AB4626AECDE200F6D281 /* SendPostIntentHandler.swift in Sources */, - DBB8AB5326AED25100F6D281 /* MastodonAuthenticationBox.swift in Sources */, DBB8AB4A26AED0B500F6D281 /* APIService.swift in Sources */, DBB8AB4C26AED11300F6D281 /* APIService+APIError.swift in Sources */, - DBB8AB4D26AED12B00F6D281 /* Strings.swift in Sources */, + DB6746E9278ED63F008A6B94 /* MastodonAuthenticationBox.swift in Sources */, DBB8AB5226AED1B300F6D281 /* APIService+Status+Publish.swift in Sources */, DB8FABCA26AEC7B2008E5AF4 /* IntentHandler.swift in Sources */, ); @@ -4547,25 +4699,22 @@ DBFEF06D26A67FB7006D7ED1 /* StatusAttachmentViewModel+UploadState.swift in Sources */, DBBC24CB26A546C000398BB9 /* ThemePreference.swift in Sources */, DBFEF05F26A57715006D7ED1 /* StatusAuthorView.swift in Sources */, + DB336F1C278D697E0031E64B /* MastodonUser.swift in Sources */, DBFEF05D26A57715006D7ED1 /* ContentWarningEditorView.swift in Sources */, DBFEF07526A69192006D7ED1 /* APIService+Media.swift in Sources */, DBFEF06F26A690C4006D7ED1 /* APIService+APIError.swift in Sources */, DBFEF05C26A57715006D7ED1 /* StatusEditorView.swift in Sources */, DBBC24C726A5456400398BB9 /* SystemTheme.swift in Sources */, - DBC6462926A1736700B0E31B /* Strings.swift in Sources */, DBBC24C826A5456400398BB9 /* ThemeService.swift in Sources */, DBBC24C926A5456400398BB9 /* MastodonTheme.swift in Sources */, DBFEF07C26A6BD0A006D7ED1 /* APIService+Status+Publish.swift in Sources */, DBB3BA2B26A81D060004F2D4 /* FLAnimatedImageView.swift in Sources */, + DB6746E8278ED639008A6B94 /* MastodonAuthenticationBox.swift in Sources */, DBBC24A826A52F9000398BB9 /* ComposeToolbarView.swift in Sources */, DBFEF05B26A57715006D7ED1 /* ComposeViewModel.swift in Sources */, DBBC24C626A5456000398BB9 /* Theme.swift in Sources */, DBFEF06326A577F2006D7ED1 /* StatusAttachmentViewModel.swift in Sources */, - DBBC24D226A5488600398BB9 /* AvatarConfigurableView.swift in Sources */, - DBC6462C26A176B000B0E31B /* Assets.swift in Sources */, DBFEF06926A67E45006D7ED1 /* AppearancePreference.swift in Sources */, - DBFEF07826A69209006D7ED1 /* MastodonAuthenticationBox.swift in Sources */, - DB0C946C26A700CE0088FB11 /* MastodonUser+Property.swift in Sources */, DBC6461526A170AB00B0E31B /* ShareViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -4687,6 +4836,8 @@ DB4B778426CA500E00B087B3 /* gd-GB */, DB4B779226CA50BA00B087B3 /* th */, DBDC1CF9272C0FD600055C3D /* ku-TR */, + DB126A4C278C063F005726EE /* eu-ES */, + DB126A56278C088D005726EE /* sv-FI */, ); name = Intents.intentdefinition; sourceTree = ""; @@ -4708,31 +4859,12 @@ DB4B778726CA500E00B087B3 /* gd-GB */, DB4B779526CA50BA00B087B3 /* th */, DBDC1CFC272C0FD600055C3D /* ku-TR */, + DB126A4F278C063F005726EE /* eu-ES */, + DB126A59278C088D005726EE /* sv-FI */, ); name = InfoPlist.strings; sourceTree = ""; }; - DB3D100F25BAA75E00EAA174 /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - DB3D100E25BAA75E00EAA174 /* en */, - DB0F814D264CFFD300F2A12B /* ar */, - E9AABD3F26B64B8D00E237DA /* ja */, - DBA4B0D526BD10AD0077136E /* zh-Hans */, - DBA4B0D926BD10F40077136E /* ca */, - DBA4B0DD26BD11130077136E /* fr */, - DBA4B0E126BD11C80077136E /* es */, - DBA4B0E526BD11D10077136E /* es-419 */, - DBA4B0EA26C153820077136E /* de */, - DBA4B0EE26C153B20077136E /* nl */, - DB4B778126CA4EFA00B087B3 /* ru */, - DB4B778626CA500E00B087B3 /* gd-GB */, - DB4B779426CA50BA00B087B3 /* th */, - DBDC1CFB272C0FD600055C3D /* ku-TR */, - ); - name = Localizable.strings; - sourceTree = ""; - }; DB427DDB25BAA00100D1B89D /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( @@ -4749,27 +4881,6 @@ name = LaunchScreen.storyboard; sourceTree = ""; }; - DB564BCE269F2F83001E39A7 /* Localizable.stringsdict */ = { - isa = PBXVariantGroup; - children = ( - DB564BCF269F2F83001E39A7 /* ar */, - DB564BD1269F2F8A001E39A7 /* en */, - E9AABD3E26B64B8D00E237DA /* ja */, - DBA4B0D426BD10AD0077136E /* zh-Hans */, - DBA4B0D826BD10F40077136E /* ca */, - DBA4B0DC26BD11130077136E /* fr */, - DBA4B0E026BD11C70077136E /* es */, - DBA4B0E426BD11D10077136E /* es-419 */, - DBA4B0E926C153820077136E /* de */, - DBA4B0ED26C153B10077136E /* nl */, - DB4B778026CA4EFA00B087B3 /* ru */, - DB4B778526CA500E00B087B3 /* gd-GB */, - DB4B779326CA50BA00B087B3 /* th */, - DBDC1CFA272C0FD600055C3D /* ku-TR */, - ); - name = Localizable.stringsdict; - sourceTree = ""; - }; DBA4B0F926C269880077136E /* Intents.stringsdict */ = { isa = PBXVariantGroup; children = ( @@ -4787,6 +4898,8 @@ DB4B779126CA504A00B087B3 /* ja */, DB4B779626CA50BA00B087B3 /* th */, DBDC1CFD272C0FD600055C3D /* ku-TR */, + DB126A50278C063F005726EE /* eu-ES */, + DB126A5A278C088D005726EE /* sv-FI */, ); name = Intents.stringsdict; sourceTree = ""; @@ -4931,7 +5044,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4960,7 +5073,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -5068,11 +5181,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 90; + DYLIB_CURRENT_VERSION = 91; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5099,11 +5212,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 90; + DYLIB_CURRENT_VERSION = 91; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5128,11 +5241,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 90; + DYLIB_CURRENT_VERSION = 91; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = CoreDataStack/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5158,11 +5271,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 90; + DYLIB_CURRENT_VERSION = 91; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = CoreDataStack/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -5225,7 +5338,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5250,7 +5363,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5275,7 +5388,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5300,7 +5413,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5325,7 +5438,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5349,7 +5462,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 90; + CURRENT_PROJECT_VERSION = 91; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5638,6 +5751,10 @@ package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; productName = AlamofireImage; }; + DB179266278D5A4A00B71DEB /* MastodonSDK */ = { + isa = XCSwiftPackageProductDependency; + productName = MastodonSDK; + }; DB3D0FF225BAA61700EAA174 /* AlamofireImage */ = { isa = XCSwiftPackageProductDependency; package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; @@ -5701,23 +5818,11 @@ package = DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */; productName = CommonOSLog; }; - DBBC24CC26A5471E00398BB9 /* MastodonExtension */ = { - isa = XCSwiftPackageProductDependency; - productName = MastodonExtension; - }; DBBC24D026A5484F00398BB9 /* UITextView+Placeholder */ = { isa = XCSwiftPackageProductDependency; package = DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */; productName = "UITextView+Placeholder"; }; - DBC6462426A1720B00B0E31B /* MastodonUI */ = { - isa = XCSwiftPackageProductDependency; - productName = MastodonUI; - }; - DBC6462A26A1738900B0E31B /* MastodonUI */ = { - isa = XCSwiftPackageProductDependency; - productName = MastodonUI; - }; DBF7A0FB26830C33004176A2 /* FPSIndicator */ = { isa = XCSwiftPackageProductDependency; package = DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator" */; @@ -5729,10 +5834,11 @@ DB89BA3525C1145C008580ED /* CoreData.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + DB025B79278D6138002F581E /* CoreData 3.xcdatamodel */, DBF156DD27006F5D00EC00B7 /* CoreData 2.xcdatamodel */, DB89BA3625C1145C008580ED /* CoreData.xcdatamodel */, ); - currentVersion = DBF156DD27006F5D00EC00B7 /* CoreData 2.xcdatamodel */; + currentVersion = DB025B79278D6138002F581E /* CoreData 3.xcdatamodel */; path = CoreData.xcdatamodeld; sourceTree = ""; versionGroupType = wrapper.xcdatamodel; diff --git a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - ASDK.xcscheme b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - ASDK.xcscheme deleted file mode 100644 index 4ce52bd58..000000000 --- a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - ASDK.xcscheme +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 56e26925b..e8b961abd 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,18 +7,13 @@ AppShared.xcscheme_^#shared#^_ orderHint - 26 + 28 CoreDataStack.xcscheme_^#shared#^_ orderHint 27 - Mastodon - ASDK.xcscheme_^#shared#^_ - - orderHint - 2 - Mastodon - RTL.xcscheme_^#shared#^_ orderHint @@ -102,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 25 + 26 MastodonIntents.xcscheme_^#shared#^_ @@ -117,15 +112,36 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 3 + 2 ShareActionExtension.xcscheme_^#shared#^_ orderHint - 24 + 25 SuppressBuildableAutocreation - + + DB427DD125BAA00100D1B89D + + primary + + + DB427DE725BAA00100D1B89D + + primary + + + DB427DF225BAA00100D1B89D + + primary + + + DB89B9F525C10FD0008580ED + + primary + + + diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index e52bb1d95..f49285160 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -55,15 +55,6 @@ "version": "1.2.0" } }, - { - "package": "FLAnimatedImage", - "repositoryURL": "https://github.com/Flipboard/FLAnimatedImage", - "state": { - "branch": null, - "revision": "e7f9fd4681ae41bf6f3056db08af4f401d61da52", - "version": "1.0.16" - } - }, { "package": "FPSIndicator", "repositoryURL": "https://github.com/MainasuK/FPSIndicator.git", diff --git a/Mastodon/.sourcery.yml b/Mastodon/.sourcery.yml new file mode 100644 index 000000000..391430e55 --- /dev/null +++ b/Mastodon/.sourcery.yml @@ -0,0 +1,7 @@ +sources: + - . + - ../MastodonSDK/Sources +templates: + - ./Template +output: + Generated diff --git a/Mastodon/Activity/SafariActivity.swift b/Mastodon/Activity/SafariActivity.swift index a43e34f9a..d2c7b9246 100644 --- a/Mastodon/Activity/SafariActivity.swift +++ b/Mastodon/Activity/SafariActivity.swift @@ -7,6 +7,8 @@ import UIKit import SafariServices +import MastodonAsset +import MastodonLocalization final class SafariActivity: UIActivity { @@ -55,8 +57,10 @@ final class SafariActivity: UIActivity { return } - sceneCoordinator?.present(scene: .safari(url: url as URL), from: nil, transition: .safariPresent(animated: true, completion: nil)) - activityDidFinish(true) + Task { + await sceneCoordinator?.present(scene: .safari(url: url as URL), from: nil, transition: .safariPresent(animated: true, completion: nil)) + activityDidFinish(true) + } } } diff --git a/Mastodon/Activity/ShareActivityProvider.swift b/Mastodon/Activity/ShareActivityProvider.swift new file mode 100644 index 000000000..524a0427d --- /dev/null +++ b/Mastodon/Activity/ShareActivityProvider.swift @@ -0,0 +1,13 @@ +// +// ShareActivityProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-25. +// + +import UIKit + +protocol ShareActivityProvider { + var activities: [Any] { get } + var applicationActivities: [UIActivity] { get } +} diff --git a/Mastodon/Coordinator/SceneCoordinator.swift b/Mastodon/Coordinator/SceneCoordinator.swift index 49504fd1a..d6833947f 100644 --- a/Mastodon/Coordinator/SceneCoordinator.swift +++ b/Mastodon/Coordinator/SceneCoordinator.swift @@ -10,6 +10,8 @@ import SafariServices import CoreDataStack import MastodonSDK import PanModal +import MastodonAsset +import MastodonLocalization final public class SceneCoordinator { @@ -194,10 +196,6 @@ extension SceneCoordinator { case alertController(alertController: UIAlertController) case activityViewController(activityViewController: UIActivityViewController, sourceView: UIView?, barButtonItem: UIBarButtonItem?) - #if DEBUG - case publicTimeline - #endif - var isOnboarding: Bool { switch self { case .welcome, @@ -211,7 +209,7 @@ extension SceneCoordinator { return false } } - } + } // end enum Scene { } } extension SceneCoordinator { @@ -266,6 +264,7 @@ extension SceneCoordinator { } @discardableResult + @MainActor func present(scene: Scene, from sender: UIViewController?, transition: Transition) -> UIViewController? { guard let viewController = get(scene: scene) else { return nil @@ -481,12 +480,6 @@ private extension SceneCoordinator { let _viewController = ReportViewController() _viewController.viewModel = viewModel viewController = _viewController - #if DEBUG - case .publicTimeline: - let _viewController = PublicTimelineViewController() - _viewController.viewModel = PublicTimelineViewModel(context: appContext) - viewController = _viewController - #endif } setupDependency(for: viewController as? NeedsDependency) diff --git a/Mastodon/Deprecated/PickServerCategoriesCell.swift b/Mastodon/Deprecated/PickServerCategoriesCell.swift deleted file mode 100644 index b2ca1cc7d..000000000 --- a/Mastodon/Deprecated/PickServerCategoriesCell.swift +++ /dev/null @@ -1,145 +0,0 @@ -// -// PickServerCategoriesCell.swift -// Mastodon -// -// Created by BradGao on 2021/2/23. -// - -//import os.log -//import UIKit -//import MastodonSDK -// -//protocol PickServerCategoriesCellDelegate: AnyObject { -// func pickServerCategoriesCell(_ cell: PickServerCategoriesCell, collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) -//} -// -//final class PickServerCategoriesCell: UITableViewCell { -// -// weak var delegate: PickServerCategoriesCellDelegate? -// -// var diffableDataSource: UICollectionViewDiffableDataSource? -// -// let metricView = UIView() -// -// let collectionView: UICollectionView = { -// let flowLayout = UICollectionViewFlowLayout() -// flowLayout.scrollDirection = .horizontal -// let view = ControlContainableCollectionView(frame: .zero, collectionViewLayout: flowLayout) -// view.register(PickServerCategoryCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: PickServerCategoryCollectionViewCell.self)) -// view.backgroundColor = .clear -// view.showsHorizontalScrollIndicator = false -// view.showsVerticalScrollIndicator = false -// view.layer.masksToBounds = false -// view.translatesAutoresizingMaskIntoConstraints = false -// return view -// }() -// -// override func prepareForReuse() { -// super.prepareForReuse() -// -// delegate = nil -// } -// -// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { -// super.init(style: style, reuseIdentifier: reuseIdentifier) -// _init() -// } -// -// required init?(coder: NSCoder) { -// super.init(coder: coder) -// _init() -// } -//} -// -//extension PickServerCategoriesCell { -// -// private func _init() { -// selectionStyle = .none -// backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color -// configureMargin() -// -// metricView.translatesAutoresizingMaskIntoConstraints = false -// contentView.addSubview(metricView) -// NSLayoutConstraint.activate([ -// metricView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), -// metricView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), -// metricView.topAnchor.constraint(equalTo: contentView.topAnchor), -// metricView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), -// metricView.heightAnchor.constraint(equalToConstant: 80).priority(.defaultHigh), -// ]) -// -// contentView.addSubview(collectionView) -// NSLayoutConstraint.activate([ -// collectionView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), -// collectionView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), -// collectionView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 10), -// contentView.bottomAnchor.constraint(equalTo: collectionView.bottomAnchor, constant: 20), -// collectionView.heightAnchor.constraint(equalToConstant: 80).priority(.defaultHigh), -// ]) -// -// collectionView.delegate = self -// } -// -// override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { -// super.traitCollectionDidChange(previousTraitCollection) -// -// configureMargin() -// } -// -// override func layoutSubviews() { -// super.layoutSubviews() -// -// collectionView.collectionViewLayout.invalidateLayout() -// } -// -//} -// -//extension PickServerCategoriesCell { -// private func configureMargin() { -// switch traitCollection.horizontalSizeClass { -// case .regular: -// let margin = MastodonPickServerViewController.viewEdgeMargin -// contentView.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) -// default: -// contentView.layoutMargins = .zero -// } -// } -//} -// -//// MARK: - UICollectionViewDelegateFlowLayout -//extension PickServerCategoriesCell: UICollectionViewDelegateFlowLayout { -// -// func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription) -// collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally) -// delegate?.pickServerCategoriesCell(self, collectionView: collectionView, didSelectItemAt: indexPath) -// } -// -// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { -// layoutIfNeeded() -// return UIEdgeInsets(top: 0, left: metricView.frame.minX - collectionView.frame.minX, bottom: 0, right: collectionView.frame.maxX - metricView.frame.maxX) -// } -// -// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { -// return 16 -// } -// -// func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { -// return CGSize(width: 60, height: 80) -// } -// -//} -// -//extension PickServerCategoriesCell { -// -// override func accessibilityElementCount() -> Int { -// guard let diffableDataSource = diffableDataSource else { return 0 } -// return diffableDataSource.snapshot().itemIdentifiers.count -// } -// -// override func accessibilityElement(at index: Int) -> Any? { -// guard let item = collectionView.cellForItem(at: IndexPath(item: index, section: 0)) else { return nil } -// return item -// } -// -//} diff --git a/Mastodon/Deprecated/PickServerSearchCell.swift b/Mastodon/Deprecated/PickServerSearchCell.swift deleted file mode 100644 index 465e7ae29..000000000 --- a/Mastodon/Deprecated/PickServerSearchCell.swift +++ /dev/null @@ -1,171 +0,0 @@ -// -// PickServerSearchCell.swift -// Mastodon -// -// Created by BradGao on 2021/2/24. -// - -import UIKit - -//protocol PickServerSearchCellDelegate: AnyObject { -// func pickServerSearchCell(_ cell: PickServerSearchCell, searchTextDidChange searchText: String?) -//} -// -//class PickServerSearchCell: UITableViewCell { -// -// weak var delegate: PickServerSearchCellDelegate? -// -// private var bgView: UIView = { -// let view = UIView() -// view.backgroundColor = Asset.Theme.Mastodon.secondaryGroupedSystemBackground.color -// view.translatesAutoresizingMaskIntoConstraints = false -// view.layer.maskedCorners = [ -// .layerMinXMinYCorner, -// .layerMaxXMinYCorner -// ] -// view.layer.cornerCurve = .continuous -// view.layer.cornerRadius = MastodonPickServerAppearance.tableViewCornerRadius -// return view -// }() -// -// private var textFieldBgView: UIView = { -// let view = UIView() -// view.backgroundColor = Asset.Colors.TextField.background.color -// view.translatesAutoresizingMaskIntoConstraints = false -// view.layer.masksToBounds = true -// view.layer.cornerRadius = 6 -// view.layer.cornerCurve = .continuous -// return view -// }() -// -// let searchTextField: UITextField = { -// let textField = UITextField() -// textField.translatesAutoresizingMaskIntoConstraints = false -// textField.leftView = { -// let imageView = UIImageView( -// image: UIImage( -// systemName: "magnifyingglass", -// withConfiguration: UIImage.SymbolConfiguration(pointSize: 15, weight: .regular) -// ) -// ) -// imageView.tintColor = Asset.Colors.Label.secondary.color.withAlphaComponent(0.6) -// -// let containerView = UIView() -// imageView.translatesAutoresizingMaskIntoConstraints = false -// containerView.addSubview(imageView) -// NSLayoutConstraint.activate([ -// imageView.topAnchor.constraint(equalTo: containerView.topAnchor), -// imageView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor), -// imageView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), -// ]) -// -// let paddingView = UIView() -// paddingView.translatesAutoresizingMaskIntoConstraints = false -// containerView.addSubview(paddingView) -// NSLayoutConstraint.activate([ -// paddingView.topAnchor.constraint(equalTo: containerView.topAnchor), -// paddingView.leadingAnchor.constraint(equalTo: imageView.trailingAnchor), -// paddingView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), -// paddingView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), -// paddingView.widthAnchor.constraint(equalToConstant: 4).priority(.defaultHigh), -// ]) -// return containerView -// }() -// textField.leftViewMode = .always -// textField.font = .systemFont(ofSize: 15, weight: .regular) -// textField.tintColor = Asset.Colors.Label.primary.color -// textField.textColor = Asset.Colors.Label.primary.color -// textField.adjustsFontForContentSizeCategory = true -// textField.attributedPlaceholder = -// NSAttributedString(string: L10n.Scene.ServerPicker.Input.placeholder, -// attributes: [.font: UIFont.systemFont(ofSize: 15, weight: .regular), -// .foregroundColor: Asset.Colors.Label.secondary.color.withAlphaComponent(0.6)]) -// textField.clearButtonMode = .whileEditing -// textField.autocapitalizationType = .none -// textField.autocorrectionType = .no -// textField.returnKeyType = .done -// textField.keyboardType = .URL -// return textField -// }() -// -// override func prepareForReuse() { -// super.prepareForReuse() -// -// delegate = nil -// } -// -// override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { -// super.init(style: style, reuseIdentifier: reuseIdentifier) -// _init() -// } -// -// required init?(coder: NSCoder) { -// super.init(coder: coder) -// _init() -// } -//} -// -//extension PickServerSearchCell { -// private func _init() { -// selectionStyle = .none -// backgroundColor = Asset.Theme.Mastodon.systemGroupedBackground.color -// configureMargin() -// -// searchTextField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) -// searchTextField.delegate = self -// -// contentView.addSubview(bgView) -// contentView.addSubview(textFieldBgView) -// contentView.addSubview(searchTextField) -// -// NSLayoutConstraint.activate([ -// bgView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), -// bgView.topAnchor.constraint(equalTo: contentView.topAnchor), -// bgView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), -// bgView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), -// -// textFieldBgView.leadingAnchor.constraint(equalTo: bgView.leadingAnchor, constant: 14), -// textFieldBgView.topAnchor.constraint(equalTo: bgView.topAnchor, constant: 12), -// bgView.trailingAnchor.constraint(equalTo: textFieldBgView.trailingAnchor, constant: 14), -// bgView.bottomAnchor.constraint(equalTo: textFieldBgView.bottomAnchor, constant: 13), -// -// searchTextField.leadingAnchor.constraint(equalTo: textFieldBgView.leadingAnchor, constant: 11), -// searchTextField.topAnchor.constraint(equalTo: textFieldBgView.topAnchor, constant: 4), -// textFieldBgView.trailingAnchor.constraint(equalTo: searchTextField.trailingAnchor, constant: 11), -// textFieldBgView.bottomAnchor.constraint(equalTo: searchTextField.bottomAnchor, constant: 4), -// ]) -// } -// -// override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { -// super.traitCollectionDidChange(previousTraitCollection) -// -// configureMargin() -// } -//} -// -//extension PickServerSearchCell { -// private func configureMargin() { -// switch traitCollection.horizontalSizeClass { -// case .regular: -// let margin = MastodonPickServerViewController.viewEdgeMargin -// contentView.layoutMargins = UIEdgeInsets(top: 0, left: margin, bottom: 0, right: margin) -// default: -// contentView.layoutMargins = .zero -// } -// } -//} -// -//extension PickServerSearchCell { -// @objc private func textFieldDidChange(_ textField: UITextField) { -// delegate?.pickServerSearchCell(self, searchTextDidChange: textField.text) -// } -//} -// -//// MARK: - UITextFieldDelegate -//extension PickServerSearchCell: UITextFieldDelegate { -// -// func textFieldShouldReturn(_ textField: UITextField) -> Bool { -// textField.resignFirstResponder() -// return false -// } -//} diff --git a/Mastodon/Diffiable/Compose/AutoCompleteSection.swift b/Mastodon/Diffiable/Compose/AutoCompleteSection.swift index ed205b134..1a2bf45f0 100644 --- a/Mastodon/Diffiable/Compose/AutoCompleteSection.swift +++ b/Mastodon/Diffiable/Compose/AutoCompleteSection.swift @@ -8,6 +8,8 @@ import UIKit import MastodonSDK import MastodonMeta +import MastodonAsset +import MastodonLocalization enum AutoCompleteSection: Equatable, Hashable { case main @@ -80,7 +82,7 @@ extension AutoCompleteSection { } cell.subtitleLabel.text = "@" + account.acct cell.avatarImageView.isHidden = false - cell.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: URL(string: account.avatar))) + cell.avatarImageView.configure(configuration: .init(url: URL(string: account.avatar))) } private static func configureEmoji(cell: AutoCompleteTableViewCell, emoji: Mastodon.Entity.Emoji, isFirst: Bool) { @@ -90,7 +92,7 @@ extension AutoCompleteSection { // cell.subtitleLabel.text = isFirst ? L10n.Scene.Compose.AutoComplete.spaceToAdd : " " cell.subtitleLabel.text = " " cell.avatarImageView.isHidden = false - cell.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: URL(string: emoji.url))) + cell.avatarImageView.configure(configuration: .init(url: URL(string: emoji.url))) } } diff --git a/Mastodon/Diffiable/Compose/ComposeStatusItem.swift b/Mastodon/Diffiable/Compose/ComposeStatusItem.swift index c2c3f46d8..65650dcdc 100644 --- a/Mastodon/Diffiable/Compose/ComposeStatusItem.swift +++ b/Mastodon/Diffiable/Compose/ComposeStatusItem.swift @@ -9,11 +9,12 @@ import Foundation import Combine import CoreData import MastodonMeta +import CoreDataStack /// Note: update Equatable when change case enum ComposeStatusItem { - case replyTo(statusObjectID: NSManagedObjectID) - case input(replyToStatusObjectID: NSManagedObjectID?, attribute: ComposeStatusAttribute) + case replyTo(record: ManagedObjectRecord) + case input(replyTo: ManagedObjectRecord?, attribute: ComposeStatusAttribute) case attachment(attachmentAttribute: ComposeStatusAttachmentAttribute) case pollOption(pollOptionAttributes: [ComposeStatusPollItem.PollOptionAttribute], pollExpiresOptionAttribute: ComposeStatusPollItem.PollExpiresOptionAttribute) } @@ -21,26 +22,21 @@ enum ComposeStatusItem { extension ComposeStatusItem: Hashable { } extension ComposeStatusItem { - final class ComposeStatusAttribute: Equatable, Hashable { + final class ComposeStatusAttribute: Hashable { private let id = UUID() - - let avatarURL = CurrentValueSubject(nil) - let displayName = CurrentValueSubject(nil) - let emojiMeta = CurrentValueSubject([:]) - let username = CurrentValueSubject(nil) - let composeContent = CurrentValueSubject(nil) - let isContentWarningComposing = CurrentValueSubject(false) - let contentWarningContent = CurrentValueSubject("") + @Published var author: ManagedObjectRecord? + + @Published var composeContent: String? + + @Published var isContentWarningComposing = false + @Published var contentWarningContent = "" static func == (lhs: ComposeStatusAttribute, rhs: ComposeStatusAttribute) -> Bool { - return lhs.avatarURL.value == rhs.avatarURL.value && - lhs.displayName.value == rhs.displayName.value && - lhs.emojiMeta.value == rhs.emojiMeta.value && - lhs.username.value == rhs.username.value && - lhs.composeContent.value == rhs.composeContent.value && - lhs.isContentWarningComposing.value == rhs.isContentWarningComposing.value && - lhs.contentWarningContent.value == rhs.contentWarningContent.value + return lhs.author == rhs.author + && lhs.composeContent == rhs.composeContent + && lhs.isContentWarningComposing == rhs.isContentWarningComposing + && lhs.contentWarningContent == rhs.contentWarningContent } func hash(into hasher: inout Hasher) { diff --git a/Mastodon/Diffiable/Compose/ComposeStatusPollItem.swift b/Mastodon/Diffiable/Compose/ComposeStatusPollItem.swift index 2e45484c7..0a315454e 100644 --- a/Mastodon/Diffiable/Compose/ComposeStatusPollItem.swift +++ b/Mastodon/Diffiable/Compose/ComposeStatusPollItem.swift @@ -7,6 +7,8 @@ import Foundation import Combine +import MastodonAsset +import MastodonLocalization enum ComposeStatusPollItem { case pollOption(attribute: PollOptionAttribute) diff --git a/Mastodon/Diffiable/Compose/ComposeStatusSection.swift b/Mastodon/Diffiable/Compose/ComposeStatusSection.swift index 45b0656f4..45ed86783 100644 --- a/Mastodon/Diffiable/Compose/ComposeStatusSection.swift +++ b/Mastodon/Diffiable/Compose/ComposeStatusSection.swift @@ -14,7 +14,7 @@ import MastodonMeta import AlamofireImage enum ComposeStatusSection: Equatable, Hashable { - case repliedTo + case replyTo case status case attachment case poll @@ -24,43 +24,44 @@ extension ComposeStatusSection { enum ComposeKind { case post case hashtag(hashtag: String) - case mention(mastodonUserObjectID: NSManagedObjectID) - case reply(repliedToStatusObjectID: NSManagedObjectID) + case mention(user: ManagedObjectRecord) + case reply(status: ManagedObjectRecord) } } extension ComposeStatusSection { - static func configureStatusContent( + static func configure( cell: ComposeStatusContentTableViewCell, attribute: ComposeStatusItem.ComposeStatusAttribute ) { - // set avatar - attribute.avatarURL - .receive(on: DispatchQueue.main) - .sink { avatarURL in - cell.statusView.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: avatarURL)) - } - .store(in: &cell.disposeBag) - // set display name and username - Publishers.CombineLatest3( - attribute.displayName, - attribute.emojiMeta, - attribute.username - ) - .receive(on: DispatchQueue.main) - .sink { displayName, emojiMeta, username in - do { - let mastodonContent = MastodonContent(content: displayName ?? " ", emojis: emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.statusView.nameLabel.configure(content: metaContent) - } catch { - let metaContent = PlaintextMetaContent(string: " ") - cell.statusView.nameLabel.configure(content: metaContent) - } - cell.statusView.usernameLabel.text = username.flatMap { "@" + $0 } ?? " " - } - .store(in: &cell.disposeBag) +// cell.prepa +// // set avatar +// attribute.avatarURL +// .receive(on: DispatchQueue.main) +// .sink { avatarURL in +// cell.statusView.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: avatarURL)) +// } +// .store(in: &cell.disposeBag) +// // set display name and username +// Publishers.CombineLatest3( +// attribute.displayName, +// attribute.emojiMeta, +// attribute.username +// ) +// .receive(on: DispatchQueue.main) +// .sink { displayName, emojiMeta, username in +// do { +// let mastodonContent = MastodonContent(content: displayName ?? " ", emojis: emojiMeta) +// let metaContent = try MastodonMetaContent.convert(document: mastodonContent) +// cell.statusView.nameLabel.configure(content: metaContent) +// } catch { +// let metaContent = PlaintextMetaContent(string: " ") +// cell.statusView.nameLabel.configure(content: metaContent) +// } +// cell.statusView.usernameLabel.text = username.flatMap { "@" + $0 } ?? " " +// } +// .store(in: &cell.disposeBag) } } diff --git a/Mastodon/Diffiable/FetchedResultsController/FeedFetchedResultsController.swift b/Mastodon/Diffiable/FetchedResultsController/FeedFetchedResultsController.swift new file mode 100644 index 000000000..ab555c1c3 --- /dev/null +++ b/Mastodon/Diffiable/FetchedResultsController/FeedFetchedResultsController.swift @@ -0,0 +1,90 @@ +// +// FeedFetchedResultsController.swift +// FeedFetchedResultsController +// +// Created by Cirno MainasuK on 2021-8-19. +// Copyright © 2021 Twidere. All rights reserved. +// + +import os.log +import Foundation +import UIKit +import Combine +import CoreData +import CoreDataStack +import MastodonSDK + +final public class FeedFetchedResultsController: NSObject { + + public let logger = Logger(subsystem: "FeedFetchedResultsController", category: "DB") + + var disposeBag = Set() + + public let fetchedResultsController: NSFetchedResultsController + + // input + @Published public var predicate = Feed.predicate(kind: .none, acct: .none) + + // output + private let _objectIDs = PassthroughSubject<[NSManagedObjectID], Never>() + @Published public var records: [ManagedObjectRecord] = [] + + public init(managedObjectContext: NSManagedObjectContext) { + self.fetchedResultsController = { + let fetchRequest = Feed.sortedFetchRequest + // make sure initial query return empty results + fetchRequest.returnsObjectsAsFaults = false + fetchRequest.shouldRefreshRefetchedObjects = true + fetchRequest.fetchBatchSize = 15 + let controller = NSFetchedResultsController( + fetchRequest: fetchRequest, + managedObjectContext: managedObjectContext, + sectionNameKeyPath: nil, + cacheName: nil + ) + + return controller + }() + super.init() + + // debounce output to prevent UI update issues + _objectIDs + .throttle(for: 0.1, scheduler: DispatchQueue.main, latest: true) + .map { objectIDs in objectIDs.map { ManagedObjectRecord(objectID: $0) } } + .assign(to: &$records) + + fetchedResultsController.delegate = self + + $predicate + .removeDuplicates() + .receive(on: DispatchQueue.main) + .sink { [weak self] predicate in + guard let self = self else { return } + self.fetchedResultsController.fetchRequest.predicate = predicate + do { + try self.fetchedResultsController.performFetch() + } catch { + assertionFailure(error.localizedDescription) + } + } + .store(in: &disposeBag) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + } + +} + +// MARK: - NSFetchedResultsControllerDelegate +extension FeedFetchedResultsController: NSFetchedResultsControllerDelegate { + public func controller( + _ controller: NSFetchedResultsController, + didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference + ) { + os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + let snapshot = snapshot as NSDiffableDataSourceSnapshot + self._objectIDs.send(snapshot.itemIdentifiers) + } +} + diff --git a/Mastodon/Diffiable/FetchedResultsController/SearchHistoryFetchedResultController.swift b/Mastodon/Diffiable/FetchedResultsController/SearchHistoryFetchedResultController.swift index 6d4461eab..c3521c6fe 100644 --- a/Mastodon/Diffiable/FetchedResultsController/SearchHistoryFetchedResultController.swift +++ b/Mastodon/Diffiable/FetchedResultsController/SearchHistoryFetchedResultController.swift @@ -21,8 +21,9 @@ final class SearchHistoryFetchedResultController: NSObject { let userID = CurrentValueSubject(nil) // output - let objectIDs = CurrentValueSubject<[NSManagedObjectID], Never>([]) - + let _objectIDs = CurrentValueSubject<[NSManagedObjectID], Never>([]) + @Published var records: [ManagedObjectRecord] = [] + init(managedObjectContext: NSManagedObjectContext) { self.fetchedResultsController = { let fetchRequest = SearchHistory.sortedFetchRequest @@ -38,12 +39,18 @@ final class SearchHistoryFetchedResultController: NSObject { return controller }() super.init() + + // debounce output to prevent UI update issues + _objectIDs + .throttle(for: 0.1, scheduler: DispatchQueue.main, latest: true) + .map { objectIDs in objectIDs.map { ManagedObjectRecord(objectID: $0) } } + .assign(to: &$records) fetchedResultsController.delegate = self Publishers.CombineLatest( - self.domain.removeDuplicates(), - self.userID.removeDuplicates() + self.domain, + self.userID ) .receive(on: DispatchQueue.main) .sink { [weak self] domain, userID in @@ -67,6 +74,6 @@ extension SearchHistoryFetchedResultController: NSFetchedResultsControllerDelega os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) let objects = fetchedResultsController.fetchedObjects ?? [] - self.objectIDs.value = objects.map { $0.objectID } + self._objectIDs.value = objects.map { $0.objectID } } } diff --git a/Mastodon/Diffiable/FetchedResultsController/StatusFetchedResultsController.swift b/Mastodon/Diffiable/FetchedResultsController/StatusFetchedResultsController.swift index dd373b29f..10da3f3fa 100644 --- a/Mastodon/Diffiable/FetchedResultsController/StatusFetchedResultsController.swift +++ b/Mastodon/Diffiable/FetchedResultsController/StatusFetchedResultsController.swift @@ -23,7 +23,8 @@ final class StatusFetchedResultsController: NSObject { let statusIDs = CurrentValueSubject<[Mastodon.Entity.Status.ID], Never>([]) // output - let objectIDs = CurrentValueSubject<[NSManagedObjectID], Never>([]) + let _objectIDs = CurrentValueSubject<[NSManagedObjectID], Never>([]) + @Published var records: [ManagedObjectRecord] = [] init(managedObjectContext: NSManagedObjectContext, domain: String?, additionalTweetPredicate: NSPredicate?) { self.domain.value = domain ?? "" @@ -43,11 +44,17 @@ final class StatusFetchedResultsController: NSObject { }() super.init() + // debounce output to prevent UI update issues + _objectIDs + .throttle(for: 0.1, scheduler: DispatchQueue.main, latest: true) + .map { objectIDs in objectIDs.map { ManagedObjectRecord(objectID: $0) } } + .assign(to: &$records) + fetchedResultsController.delegate = self Publishers.CombineLatest( - self.domain.removeDuplicates().eraseToAnyPublisher(), - self.statusIDs.removeDuplicates().eraseToAnyPublisher() + self.domain.removeDuplicates(), + self.statusIDs.removeDuplicates() ) .receive(on: DispatchQueue.main) .sink { [weak self] domain, ids in @@ -68,6 +75,18 @@ final class StatusFetchedResultsController: NSObject { } +extension StatusFetchedResultsController { + + public func append(statusIDs: [Mastodon.Entity.Status.ID]) { + var result = self.statusIDs.value + for statusID in statusIDs where !result.contains(statusID) { + result.append(statusID) + } + self.statusIDs.value = result + } + +} + // MARK: - NSFetchedResultsControllerDelegate extension StatusFetchedResultsController: NSFetchedResultsControllerDelegate { func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { @@ -82,6 +101,6 @@ extension StatusFetchedResultsController: NSFetchedResultsControllerDelegate { } .sorted { $0.0 < $1.0 } .map { $0.1.objectID } - self.objectIDs.value = items + self._objectIDs.value = items } } diff --git a/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift b/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift index f46ee978d..9ff4c5e55 100644 --- a/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift +++ b/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift @@ -23,7 +23,8 @@ final class UserFetchedResultsController: NSObject { let userIDs = CurrentValueSubject<[Mastodon.Entity.Account.ID], Never>([]) // output - let objectIDs = CurrentValueSubject<[NSManagedObjectID], Never>([]) + let _objectIDs = CurrentValueSubject<[NSManagedObjectID], Never>([]) + @Published var records: [ManagedObjectRecord] = [] init(managedObjectContext: NSManagedObjectContext, domain: String?, additionalTweetPredicate: NSPredicate?) { self.domain.value = domain ?? "" @@ -42,12 +43,18 @@ final class UserFetchedResultsController: NSObject { return controller }() super.init() + + // debounce output to prevent UI update issues + _objectIDs + .throttle(for: 0.1, scheduler: DispatchQueue.main, latest: true) + .map { objectIDs in objectIDs.map { ManagedObjectRecord(objectID: $0) } } + .assign(to: &$records) fetchedResultsController.delegate = self Publishers.CombineLatest( - self.domain.removeDuplicates().eraseToAnyPublisher(), - self.userIDs.removeDuplicates().eraseToAnyPublisher() + self.domain.removeDuplicates(), + self.userIDs.removeDuplicates() ) .receive(on: DispatchQueue.main) .sink { [weak self] domain, ids in @@ -68,6 +75,18 @@ final class UserFetchedResultsController: NSObject { } +extension UserFetchedResultsController { + + public func append(userIDs: [Mastodon.Entity.Account.ID]) { + var result = self.userIDs.value + for userID in userIDs where !result.contains(userID) { + result.append(userID) + } + self.userIDs.value = result + } + +} + // MARK: - NSFetchedResultsControllerDelegate extension UserFetchedResultsController: NSFetchedResultsControllerDelegate { func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { @@ -82,6 +101,6 @@ extension UserFetchedResultsController: NSFetchedResultsControllerDelegate { } .sorted { $0.0 < $1.0 } .map { $0.1.objectID } - self.objectIDs.value = items + self._objectIDs.value = items } } diff --git a/Mastodon/Diffiable/Notification/NotificationItem.swift b/Mastodon/Diffiable/Notification/NotificationItem.swift index fc7d0e0d9..b0fdddb7f 100644 --- a/Mastodon/Diffiable/Notification/NotificationItem.swift +++ b/Mastodon/Diffiable/Notification/NotificationItem.swift @@ -7,50 +7,10 @@ import CoreData import Foundation +import CoreDataStack -enum NotificationItem { - case notification(objectID: NSManagedObjectID, attribute: Item.StatusAttribute) - case notificationStatus(objectID: NSManagedObjectID, attribute: Item.StatusAttribute) // display notification status without card wrapper +enum NotificationItem: Hashable { + case feed(record: ManagedObjectRecord) + case feedLoader(record: ManagedObjectRecord) case bottomLoader } - -extension NotificationItem: Equatable { - static func == (lhs: NotificationItem, rhs: NotificationItem) -> Bool { - switch (lhs, rhs) { - case (.notification(let idLeft, _), .notification(let idRight, _)): - return idLeft == idRight - case (.notificationStatus(let idLeft, _), .notificationStatus(let idRight, _)): - return idLeft == idRight - case (.bottomLoader, .bottomLoader): - return true - default: - return false - } - } -} - -extension NotificationItem: Hashable { - func hash(into hasher: inout Hasher) { - switch self { - case .notification(let id, _): - hasher.combine(id) - case .notificationStatus(let id, _): - hasher.combine(id) - case .bottomLoader: - hasher.combine(String(describing: NotificationItem.bottomLoader.self)) - } - } -} - -extension NotificationItem { - var statusObjectItem: StatusObjectItem? { - switch self { - case .notification(let objectID, _): - return .mastodonNotification(objectID: objectID) - case .notificationStatus(let objectID, _): - return .mastodonNotification(objectID: objectID) - case .bottomLoader: - return nil - } - } -} diff --git a/Mastodon/Diffiable/Notification/NotificationSection.swift b/Mastodon/Diffiable/Notification/NotificationSection.swift index 864785007..210d7ea10 100644 --- a/Mastodon/Diffiable/Notification/NotificationSection.swift +++ b/Mastodon/Diffiable/Notification/NotificationSection.swift @@ -13,234 +13,290 @@ import MastodonSDK import UIKit import MetaTextKit import MastodonMeta +import MastodonAsset +import MastodonLocalization enum NotificationSection: Equatable, Hashable { case main } extension NotificationSection { - static func tableViewDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, - managedObjectContext: NSManagedObjectContext, - delegate: NotificationTableViewCellDelegate, - statusTableViewCellDelegate: StatusTableViewCellDelegate + + struct Configuration { + weak var notificationTableViewCellDelegate: NotificationTableViewCellDelegate? + } + + static func diffableDataSource( + tableView: UITableView, + context: AppContext, + configuration: Configuration ) -> UITableViewDiffableDataSource { - UITableViewDiffableDataSource(tableView: tableView) { - [weak delegate, weak dependency] - (tableView, indexPath, notificationItem) -> UITableViewCell? in - guard let dependency = dependency else { return nil } - switch notificationItem { - case .notification(let objectID, let attribute): - guard let notification = try? managedObjectContext.existingObject(with: objectID) as? MastodonNotification, - !notification.isDeleted - else { return UITableViewCell() } - - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationStatusTableViewCell.self), for: indexPath) as! NotificationStatusTableViewCell - configure( - tableView: tableView, - cell: cell, - notification: notification, - dependency: dependency, - attribute: attribute - ) - cell.delegate = delegate - cell.isAccessibilityElement = true - NotificationSection.configureStatusAccessibilityLabel(cell: cell) + tableView.register(NotificationTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationTableViewCell.self)) + tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) + + return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in + switch item { + case .feed(let record): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationTableViewCell.self), for: indexPath) as! NotificationTableViewCell + context.managedObjectContext.performAndWait { + guard let feed = record.object(in: context.managedObjectContext) else { return } + configure( + context: context, + tableView: tableView, + cell: cell, + viewModel: NotificationTableViewCell.ViewModel(value: .feed(feed)), + configuration: configuration + ) + } return cell - - case .notificationStatus(objectID: let objectID, attribute: let attribute): - guard let notification = try? managedObjectContext.existingObject(with: objectID) as? MastodonNotification, - !notification.isDeleted, - let status = notification.status, - let requestUserID = dependency.context.authenticationService.activeMastodonAuthenticationBox.value?.userID - else { return UITableViewCell() } - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell - - // configure cell - StatusSection.configureStatusTableViewCell( - cell: cell, - tableView: tableView, - timelineContext: .notifications, - dependency: dependency, - readableLayoutFrame: tableView.readableContentGuide.layoutFrame, - status: status, - requestUserID: requestUserID, - statusItemAttribute: attribute - ) - cell.statusView.headerContainerView.isHidden = true // set header hide - cell.statusView.actionToolbarContainer.isHidden = true // set toolbar hide - cell.statusView.actionToolbarPlaceholderPaddingView.isHidden = false - cell.delegate = statusTableViewCellDelegate - cell.isAccessibilityElement = true - StatusSection.configureStatusAccessibilityLabel(cell: cell) - return cell - + case .feedLoader(let record): + return UITableViewCell() case .bottomLoader: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) as! TimelineBottomLoaderTableViewCell - cell.startAnimating() + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell + cell.activityIndicatorView.startAnimating() return cell } +// switch notificationItem { +// case .notification(let objectID, let attribute): +// guard let notification = try? managedObjectContext.existingObject(with: objectID) as? MastodonNotification, +// !notification.isDeleted +// else { return UITableViewCell() } +// +// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationStatusTableViewCell.self), for: indexPath) as! NotificationStatusTableViewCell +// configure( +// tableView: tableView, +// cell: cell, +// notification: notification, +// dependency: dependency, +// attribute: attribute +// ) +// cell.delegate = delegate +// cell.isAccessibilityElement = true +// NotificationSection.configureStatusAccessibilityLabel(cell: cell) +// return cell +// +// case .notificationStatus(objectID: let objectID, attribute: let attribute): +// guard let notification = try? managedObjectContext.existingObject(with: objectID) as? MastodonNotification, +// !notification.isDeleted, +// let status = notification.status, +// let requestUserID = dependency.context.authenticationService.activeMastodonAuthenticationBox.value?.userID +// else { return UITableViewCell() } +// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell +// +// // configure cell +// StatusSection.configureStatusTableViewCell( +// cell: cell, +// tableView: tableView, +// timelineContext: .notifications, +// dependency: dependency, +// readableLayoutFrame: tableView.readableContentGuide.layoutFrame, +// status: status, +// requestUserID: requestUserID, +// statusItemAttribute: attribute +// ) +// cell.statusView.headerContainerView.isHidden = true // set header hide +// cell.statusView.actionToolbarContainer.isHidden = true // set toolbar hide +// cell.statusView.actionToolbarPlaceholderPaddingView.isHidden = false +// cell.delegate = statusTableViewCellDelegate +// cell.isAccessibilityElement = true +// StatusSection.configureStatusAccessibilityLabel(cell: cell) +// return cell +// +// case .bottomLoader: +// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) as! TimelineBottomLoaderTableViewCell +// cell.startAnimating() +// return cell +// } } } } extension NotificationSection { + static func configure( + context: AppContext, tableView: UITableView, - cell: NotificationStatusTableViewCell, - notification: MastodonNotification, - dependency: NeedsDependency, - attribute: Item.StatusAttribute + cell: NotificationTableViewCell, + viewModel: NotificationTableViewCell.ViewModel, + configuration: Configuration ) { - // configure author - cell.configure( - with: AvatarConfigurableViewConfiguration( - avatarImageURL: notification.account.avatarImageURL() - ) + StatusSection.setupStatusPollDataSource( + context: context, + statusView: cell.notificationView.statusView ) - func createActionImage() -> UIImage? { - return UIImage( - systemName: notification.notificationType.actionImageName, - withConfiguration: UIImage.SymbolConfiguration( - pointSize: 12, weight: .semibold - ) - )? - .withTintColor(.systemBackground) - .af.imageAspectScaled(toFit: CGSize(width: 14, height: 14)) - } + StatusSection.setupStatusPollDataSource( + context: context, + statusView: cell.notificationView.quoteStatusView + ) - cell.avatarButton.badgeImageView.backgroundColor = notification.notificationType.color - cell.avatarButton.badgeImageView.image = createActionImage() - cell.traitCollectionDidChange - .receive(on: DispatchQueue.main) - .sink { [weak cell] in - guard let cell = cell else { return } - cell.avatarButton.badgeImageView.image = createActionImage() - } + context.authenticationService.activeMastodonAuthenticationBox + .map { $0 as UserIdentifier? } + .assign(to: \.userIdentifier, on: cell.notificationView.viewModel) .store(in: &cell.disposeBag) - // configure author name, notification description, timestamp - let nameText = notification.account.displayNameWithFallback - let titleLabelText: String = { - switch notification.notificationType { - case .favourite: return L10n.Scene.Notification.userFavoritedYourPost(nameText) - case .follow: return L10n.Scene.Notification.userFollowedYou(nameText) - case .followRequest: return L10n.Scene.Notification.userRequestedToFollowYou(nameText) - case .mention: return L10n.Scene.Notification.userMentionedYou(nameText) - case .poll: return L10n.Scene.Notification.userYourPollHasEnded(nameText) - case .reblog: return L10n.Scene.Notification.userRebloggedYourPost(nameText) - default: return "" - } - }() - - do { - let nameContent = MastodonContent(content: nameText, emojis: notification.account.emojiMeta) - let nameMetaContent = try MastodonMetaContent.convert(document: nameContent) - - let mastodonContent = MastodonContent(content: titleLabelText, emojis: notification.account.emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - - cell.titleLabel.configure(content: metaContent) - - if let nameRange = metaContent.string.range(of: nameMetaContent.string) { - let nsRange = NSRange(nameRange, in: metaContent.string) - cell.titleLabel.textStorage.addAttributes([ - .font: UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold), maximumPointSize: 20), - .foregroundColor: Asset.Colors.brandBlue.color, - ], range: nsRange) - } - - } catch { - let metaContent = PlaintextMetaContent(string: titleLabelText) - cell.titleLabel.configure(content: metaContent) - } - - let createAt = notification.createAt - cell.timestampLabel.text = createAt.localizedSlowedTimeAgoSinceNow - AppContext.shared.timestampUpdatePublisher - .receive(on: DispatchQueue.main) - .sink { [weak cell] _ in - guard let cell = cell else { return } - cell.timestampLabel.text = createAt.localizedSlowedTimeAgoSinceNow - } - .store(in: &cell.disposeBag) - - // configure follow request (if exist) - if case .followRequest = notification.notificationType { - cell.acceptButton.publisher(for: .touchUpInside) - .sink { [weak cell] _ in - guard let cell = cell else { return } - cell.delegate?.notificationTableViewCell(cell, notification: notification, acceptButtonDidPressed: cell.acceptButton) - } - .store(in: &cell.disposeBag) - cell.rejectButton.publisher(for: .touchUpInside) - .sink { [weak cell] _ in - guard let cell = cell else { return } - cell.delegate?.notificationTableViewCell(cell, notification: notification, rejectButtonDidPressed: cell.rejectButton) - } - .store(in: &cell.disposeBag) - cell.buttonStackView.isHidden = false - } else { - cell.buttonStackView.isHidden = true - } - - // configure status (if exist) - if let status = notification.status { - let frame = CGRect( - x: 0, - y: 0, - width: tableView.readableContentGuide.layoutFrame.width - NotificationStatusTableViewCell.statusPadding.left - NotificationStatusTableViewCell.statusPadding.right, - height: tableView.readableContentGuide.layoutFrame.height - ) - StatusSection.configure( - cell: cell, - tableView: tableView, - timelineContext: .notifications, - dependency: dependency, - readableLayoutFrame: frame, - status: status, - requestUserID: notification.userID, - statusItemAttribute: attribute - ) - cell.statusContainerView.isHidden = false - cell.containerStackView.alignment = .top - cell.containerStackViewBottomLayoutConstraint.constant = 0 - } else { - if case .followRequest = notification.notificationType { - cell.containerStackView.alignment = .top - } else { - cell.containerStackView.alignment = .center - } - cell.statusContainerView.isHidden = true - cell.containerStackViewBottomLayoutConstraint.constant = 5 // 5pt margin when no status view - } + cell.configure( + tableView: tableView, + viewModel: viewModel, + delegate: configuration.notificationTableViewCellDelegate + ) } - static func configureStatusAccessibilityLabel(cell: NotificationStatusTableViewCell) { - // FIXME: - cell.accessibilityLabel = { - var accessibilityViews: [UIView?] = [] - accessibilityViews.append(contentsOf: [ - cell.titleLabel, - cell.timestampLabel, - cell.statusView - ]) - if !cell.statusContainerView.isHidden { - if !cell.statusView.headerContainerView.isHidden { - accessibilityViews.append(cell.statusView.headerInfoLabel) - } - accessibilityViews.append(contentsOf: [ - cell.statusView.nameMetaLabel, - cell.statusView.dateLabel, - cell.statusView.contentMetaText.textView, - ]) - } - return accessibilityViews - .compactMap { $0?.accessibilityLabel } - .joined(separator: " ") - }() - } +// static func configure( +// tableView: UITableView, +// cell: NotificationStatusTableViewCell, +// notification: MastodonNotification, +// dependency: NeedsDependency, +// attribute: Item.StatusAttribute +// ) { +// // configure author +// cell.configure( +// with: AvatarConfigurableViewConfiguration( +// avatarImageURL: notification.account.avatarImageURL() +// ) +// ) +// +// func createActionImage() -> UIImage? { +// return UIImage( +// systemName: notification.notificationType.actionImageName, +// withConfiguration: UIImage.SymbolConfiguration( +// pointSize: 12, weight: .semibold +// ) +// )? +// .withTintColor(.systemBackground) +// .af.imageAspectScaled(toFit: CGSize(width: 14, height: 14)) +// } +// +// cell.avatarButton.badgeImageView.backgroundColor = notification.notificationType.color +// cell.avatarButton.badgeImageView.image = createActionImage() +// cell.traitCollectionDidChange +// .receive(on: DispatchQueue.main) +// .sink { [weak cell] in +// guard let cell = cell else { return } +// cell.avatarButton.badgeImageView.image = createActionImage() +// } +// .store(in: &cell.disposeBag) +// +// // configure author name, notification description, timestamp +// let nameText = notification.account.displayNameWithFallback +// let titleLabelText: String = { +// switch notification.notificationType { +// case .favourite: return L10n.Scene.Notification.userFavoritedYourPost(nameText) +// case .follow: return L10n.Scene.Notification.userFollowedYou(nameText) +// case .followRequest: return L10n.Scene.Notification.userRequestedToFollowYou(nameText) +// case .mention: return L10n.Scene.Notification.userMentionedYou(nameText) +// case .poll: return L10n.Scene.Notification.userYourPollHasEnded(nameText) +// case .reblog: return L10n.Scene.Notification.userRebloggedYourPost(nameText) +// default: return "" +// } +// }() +// +// do { +// let nameContent = MastodonContent(content: nameText, emojis: notification.account.emojiMeta) +// let nameMetaContent = try MastodonMetaContent.convert(document: nameContent) +// +// let mastodonContent = MastodonContent(content: titleLabelText, emojis: notification.account.emojiMeta) +// let metaContent = try MastodonMetaContent.convert(document: mastodonContent) +// +// cell.titleLabel.configure(content: metaContent) +// +// if let nameRange = metaContent.string.range(of: nameMetaContent.string) { +// let nsRange = NSRange(nameRange, in: metaContent.string) +// cell.titleLabel.textStorage.addAttributes([ +// .font: UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold), maximumPointSize: 20), +// .foregroundColor: Asset.Colors.brandBlue.color, +// ], range: nsRange) +// } +// +// } catch { +// let metaContent = PlaintextMetaContent(string: titleLabelText) +// cell.titleLabel.configure(content: metaContent) +// } +// +// let createAt = notification.createAt +// cell.timestampLabel.text = createAt.localizedSlowedTimeAgoSinceNow +// AppContext.shared.timestampUpdatePublisher +// .receive(on: DispatchQueue.main) +// .sink { [weak cell] _ in +// guard let cell = cell else { return } +// cell.timestampLabel.text = createAt.localizedSlowedTimeAgoSinceNow +// } +// .store(in: &cell.disposeBag) +// +// // configure follow request (if exist) +// if case .followRequest = notification.notificationType { +// cell.acceptButton.publisher(for: .touchUpInside) +// .sink { [weak cell] _ in +// guard let cell = cell else { return } +// cell.delegate?.notificationTableViewCell(cell, notification: notification, acceptButtonDidPressed: cell.acceptButton) +// } +// .store(in: &cell.disposeBag) +// cell.rejectButton.publisher(for: .touchUpInside) +// .sink { [weak cell] _ in +// guard let cell = cell else { return } +// cell.delegate?.notificationTableViewCell(cell, notification: notification, rejectButtonDidPressed: cell.rejectButton) +// } +// .store(in: &cell.disposeBag) +// cell.buttonStackView.isHidden = false +// } else { +// cell.buttonStackView.isHidden = true +// } +// +// // configure status (if exist) +// if let status = notification.status { +// let frame = CGRect( +// x: 0, +// y: 0, +// width: tableView.readableContentGuide.layoutFrame.width - NotificationStatusTableViewCell.statusPadding.left - NotificationStatusTableViewCell.statusPadding.right, +// height: tableView.readableContentGuide.layoutFrame.height +// ) +// StatusSection.configure( +// cell: cell, +// tableView: tableView, +// timelineContext: .notifications, +// dependency: dependency, +// readableLayoutFrame: frame, +// status: status, +// requestUserID: notification.userID, +// statusItemAttribute: attribute +// ) +// cell.statusContainerView.isHidden = false +// cell.containerStackView.alignment = .top +// cell.containerStackViewBottomLayoutConstraint.constant = 0 +// } else { +// if case .followRequest = notification.notificationType { +// cell.containerStackView.alignment = .top +// } else { +// cell.containerStackView.alignment = .center +// } +// cell.statusContainerView.isHidden = true +// cell.containerStackViewBottomLayoutConstraint.constant = 5 // 5pt margin when no status view +// } +// } +// +// static func configureStatusAccessibilityLabel(cell: NotificationStatusTableViewCell) { +// // FIXME: +// cell.accessibilityLabel = { +// var accessibilityViews: [UIView?] = [] +// accessibilityViews.append(contentsOf: [ +// cell.titleLabel, +// cell.timestampLabel, +// cell.statusView +// ]) +// if !cell.statusContainerView.isHidden { +// if !cell.statusView.headerContainerView.isHidden { +// accessibilityViews.append(cell.statusView.headerInfoLabel) +// } +// accessibilityViews.append(contentsOf: [ +// cell.statusView.nameMetaLabel, +// cell.statusView.dateLabel, +// cell.statusView.contentMetaText.textView, +// ]) +// } +// return accessibilityViews +// .compactMap { $0?.accessibilityLabel } +// .joined(separator: " ") +// }() +// } } diff --git a/Mastodon/Diffiable/Onboarding/CategoryPickerItem.swift b/Mastodon/Diffiable/Onboarding/CategoryPickerItem.swift index 53f9c9abd..f6f364108 100644 --- a/Mastodon/Diffiable/Onboarding/CategoryPickerItem.swift +++ b/Mastodon/Diffiable/Onboarding/CategoryPickerItem.swift @@ -7,6 +7,8 @@ import Foundation import MastodonSDK +import MastodonAsset +import MastodonLocalization /// Note: update Equatable when change case enum CategoryPickerItem { diff --git a/Mastodon/Diffiable/Onboarding/CategoryPickerSection.swift b/Mastodon/Diffiable/Onboarding/CategoryPickerSection.swift index 525d77206..b53b378d6 100644 --- a/Mastodon/Diffiable/Onboarding/CategoryPickerSection.swift +++ b/Mastodon/Diffiable/Onboarding/CategoryPickerSection.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization enum CategoryPickerSection: Equatable, Hashable { case main diff --git a/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift b/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift index 66abec44b..c13e4ab2c 100644 --- a/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift +++ b/Mastodon/Diffiable/Onboarding/ServerRuleSection.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization enum ServerRuleSection: Hashable { case header diff --git a/Mastodon/Diffiable/Poll/PollItem.swift b/Mastodon/Diffiable/Poll/PollItem.swift deleted file mode 100644 index 0622e1d32..000000000 --- a/Mastodon/Diffiable/Poll/PollItem.swift +++ /dev/null @@ -1,68 +0,0 @@ -// -// PollItem.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-2. -// - -import Foundation -import CoreData - -/// Note: update Equatable when change case -enum PollItem { - case option(objectID: NSManagedObjectID, attribute: Attribute) -} - - -extension PollItem { - class Attribute: Hashable { - - enum SelectState: Equatable, Hashable { - case none - case off - case on - } - - enum VoteState: Equatable, Hashable { - case hidden - case reveal(voted: Bool, percentage: Double, animated: Bool) - } - - var selectState: SelectState - var voteState: VoteState - - init(selectState: SelectState, voteState: VoteState) { - self.selectState = selectState - self.voteState = voteState - } - - static func == (lhs: PollItem.Attribute, rhs: PollItem.Attribute) -> Bool { - return lhs.selectState == rhs.selectState && - lhs.voteState == rhs.voteState - } - - func hash(into hasher: inout Hasher) { - hasher.combine(selectState) - hasher.combine(voteState) - } - } -} - -extension PollItem: Equatable { - static func == (lhs: PollItem, rhs: PollItem) -> Bool { - switch (lhs, rhs) { - case (.option(let objectIDLeft, _), .option(let objectIDRight, _)): - return objectIDLeft == objectIDRight - } - } -} - - -extension PollItem: Hashable { - func hash(into hasher: inout Hasher) { - switch self { - case .option(let objectID, _): - hasher.combine(objectID) - } - } -} diff --git a/Mastodon/Diffiable/Poll/PollSection.swift b/Mastodon/Diffiable/Poll/PollSection.swift deleted file mode 100644 index 682a2abc0..000000000 --- a/Mastodon/Diffiable/Poll/PollSection.swift +++ /dev/null @@ -1,120 +0,0 @@ -// -// PollSection.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-2. -// - -import UIKit -import CoreData -import CoreDataStack - -import MastodonSDK - -extension Mastodon.Entity.Attachment: Hashable { - public static func == (lhs: Mastodon.Entity.Attachment, rhs: Mastodon.Entity.Attachment) -> Bool { - return lhs.id == rhs.id - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(id) - } -} - -enum PollSection: Equatable, Hashable { - case main -} - -extension PollSection { - static func tableViewDiffableDataSource( - for tableView: UITableView, - managedObjectContext: NSManagedObjectContext - ) -> UITableViewDiffableDataSource { - return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in - switch item { - case .option(let objectID, let attribute): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: PollOptionTableViewCell.self), for: indexPath) as! PollOptionTableViewCell - managedObjectContext.performAndWait { - let option = managedObjectContext.object(with: objectID) as! PollOption - PollSection.configure(cell: cell, pollOption: option, pollItemAttribute: attribute) - - cell.isAccessibilityElement = true - cell.accessibilityLabel = { - var labels: [String] = [option.title] - if let percentage = cell.pollOptionView.optionPercentageLabel.text { - labels.append(percentage) - } - return labels.joined(separator: ",") - }() - } - return cell - } - } - } -} - -extension PollSection { - static func configure( - cell: PollOptionTableViewCell, - pollOption option: PollOption, - pollItemAttribute attribute: PollItem.Attribute - ) { - cell.pollOptionView.optionTextField.text = option.title - configure(cell: cell, selectState: attribute.selectState) - configure(cell: cell, voteState: attribute.voteState) - cell.attribute = attribute - cell.layoutIfNeeded() - cell.updateTextAppearance() - } -} - -extension PollSection { - - static func configure(cell: PollOptionTableViewCell, selectState state: PollItem.Attribute.SelectState) { - switch state { - case .none: - cell.pollOptionView.checkmarkBackgroundView.isHidden = true - cell.pollOptionView.checkmarkImageView.isHidden = true - case .off: - ThemeService.shared.currentTheme - .receive(on: DispatchQueue.main) - .sink { [weak cell] theme in - guard let cell = cell else { return } - cell.pollOptionView.checkmarkBackgroundView.backgroundColor = theme.tertiarySystemBackgroundColor - cell.pollOptionView.checkmarkBackgroundView.layer.borderColor = theme.tableViewCellSelectionBackgroundColor.withAlphaComponent(0.3).cgColor - } - .store(in: &cell.disposeBag) - cell.pollOptionView.checkmarkBackgroundView.layer.borderWidth = 1 - cell.pollOptionView.checkmarkBackgroundView.isHidden = false - cell.pollOptionView.checkmarkImageView.isHidden = true - case .on: - ThemeService.shared.currentTheme - .receive(on: DispatchQueue.main) - .sink { [weak cell] theme in - guard let cell = cell else { return } - cell.pollOptionView.checkmarkBackgroundView.backgroundColor = theme.tertiarySystemBackgroundColor - } - .store(in: &cell.disposeBag) - cell.pollOptionView.checkmarkBackgroundView.layer.borderColor = UIColor.clear.cgColor - cell.pollOptionView.checkmarkBackgroundView.layer.borderWidth = 0 - cell.pollOptionView.checkmarkBackgroundView.isHidden = false - cell.pollOptionView.checkmarkImageView.isHidden = false - } - } - - static func configure(cell: PollOptionTableViewCell, voteState state: PollItem.Attribute.VoteState) { - switch state { - case .hidden: - cell.pollOptionView.optionPercentageLabel.isHidden = true - cell.pollOptionView.voteProgressStripView.isHidden = true - cell.pollOptionView.voteProgressStripView.setProgress(0.0, animated: false) - case .reveal(let voted, let percentage, let animated): - cell.pollOptionView.optionPercentageLabel.isHidden = false - cell.pollOptionView.optionPercentageLabel.text = String(Int(100 * percentage)) + "%" - cell.pollOptionView.voteProgressStripView.isHidden = false - cell.pollOptionView.voteProgressStripView.tintColor = voted ? Asset.Colors.brandBlue.color : Asset.Colors.Poll.disabled.color - cell.pollOptionView.voteProgressStripView.setProgress(CGFloat(percentage), animated: animated) - } - } - -} diff --git a/Mastodon/Diffiable/Profile/ProfileFieldItem.swift b/Mastodon/Diffiable/Profile/ProfileFieldItem.swift index 781da1851..60651d72e 100644 --- a/Mastodon/Diffiable/Profile/ProfileFieldItem.swift +++ b/Mastodon/Diffiable/Profile/ProfileFieldItem.swift @@ -10,24 +10,10 @@ import Combine import MastodonSDK import MastodonMeta -enum ProfileFieldItem { - case field(field: FieldValue, attribute: FieldItemAttribute) - case addEntry(attribute: AddEntryItemAttribute) -} - -protocol ProfileFieldListSeparatorLineConfigurable: AnyObject { - var isLast: Bool { get set } -} - -extension ProfileFieldItem { - var listSeparatorLineConfigurable: ProfileFieldListSeparatorLineConfigurable? { - switch self { - case .field(_, let attribute): - return attribute - case .addEntry(let attribute): - return attribute - } - } +enum ProfileFieldItem: Hashable { + case field(field: FieldValue) + case editField(field: FieldValue) + case addEntry } extension ProfileFieldItem { @@ -36,17 +22,29 @@ extension ProfileFieldItem { var name: CurrentValueSubject var value: CurrentValueSubject + + let emojiMeta: MastodonContent.Emojis - init(id: UUID = UUID(), name: String, value: String) { + init( + id: UUID = UUID(), + name: String, + value: String, + emojiMeta: MastodonContent.Emojis + ) { self.id = id self.name = CurrentValueSubject(name) self.value = CurrentValueSubject(value) + self.emojiMeta = emojiMeta } - static func == (lhs: ProfileFieldItem.FieldValue, rhs: ProfileFieldItem.FieldValue) -> Bool { + static func == ( + lhs: ProfileFieldItem.FieldValue, + rhs: ProfileFieldItem.FieldValue + ) -> Bool { return lhs.id == rhs.id && lhs.name.value == rhs.name.value && lhs.value.value == rhs.value.value + && lhs.emojiMeta == rhs.emojiMeta } func hash(into hasher: inout Hasher) { @@ -54,50 +52,3 @@ extension ProfileFieldItem { } } } - -extension ProfileFieldItem { - class FieldItemAttribute: Equatable, ProfileFieldListSeparatorLineConfigurable { - let emojiMeta = CurrentValueSubject([:]) - - var isEditing = false - var isLast = false - - static func == (lhs: ProfileFieldItem.FieldItemAttribute, rhs: ProfileFieldItem.FieldItemAttribute) -> Bool { - return lhs.isEditing == rhs.isEditing - && lhs.isLast == rhs.isLast - } - } - - class AddEntryItemAttribute: Equatable, ProfileFieldListSeparatorLineConfigurable { - var isLast = false - - static func == (lhs: ProfileFieldItem.AddEntryItemAttribute, rhs: ProfileFieldItem.AddEntryItemAttribute) -> Bool { - return lhs.isLast == rhs.isLast - } - } -} - -extension ProfileFieldItem: Equatable { - static func == (lhs: ProfileFieldItem, rhs: ProfileFieldItem) -> Bool { - switch (lhs, rhs) { - case (.field(let fieldLeft, let attributeLeft), .field(let fieldRight, let attributeRight)): - return fieldLeft.id == fieldRight.id - && attributeLeft == attributeRight - case (.addEntry(let attributeLeft), .addEntry(let attributeRight)): - return attributeLeft == attributeRight - default: - return false - } - } -} - -extension ProfileFieldItem: Hashable { - func hash(into hasher: inout Hasher) { - switch self { - case .field(let field, _): - hasher.combine(field.id) - case .addEntry: - hasher.combine(String(describing: ProfileFieldItem.addEntry.self)) - } - } -} diff --git a/Mastodon/Diffiable/Profile/ProfileFieldSection.swift b/Mastodon/Diffiable/Profile/ProfileFieldSection.swift index e96a16e9e..fc2dee158 100644 --- a/Mastodon/Diffiable/Profile/ProfileFieldSection.swift +++ b/Mastodon/Diffiable/Profile/ProfileFieldSection.swift @@ -9,125 +9,124 @@ import os import UIKit import Combine import MastodonMeta +import MastodonLocalization enum ProfileFieldSection: Equatable, Hashable { case main } extension ProfileFieldSection { - static func collectionViewDiffableDataSource( - for collectionView: UICollectionView, - profileFieldCollectionViewCellDelegate: ProfileFieldCollectionViewCellDelegate, - profileFieldAddEntryCollectionViewCellDelegate: ProfileFieldAddEntryCollectionViewCellDelegate + + struct Configuration { + weak var profileFieldCollectionViewCellDelegate: ProfileFieldCollectionViewCellDelegate? + weak var profileFieldEditCollectionViewCellDelegate: ProfileFieldEditCollectionViewCellDelegate? + } + + static func diffableDataSource( + collectionView: UICollectionView, + context: AppContext, + configuration: Configuration ) -> UICollectionViewDiffableDataSource { - let dataSource = UICollectionViewDiffableDataSource(collectionView: collectionView) { - [ - weak profileFieldCollectionViewCellDelegate, - weak profileFieldAddEntryCollectionViewCellDelegate - ] collectionView, indexPath, item in + collectionView.register(ProfileFieldCollectionViewHeaderFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.headerReuseIdentifer) + collectionView.register(ProfileFieldCollectionViewHeaderFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.footerReuseIdentifer) + + let fieldCellRegistration = UICollectionView.CellRegistration { cell, indexPath, item in + guard case let .field(field) = item else { return } + + // set key + do { + let mastodonContent = MastodonContent(content: field.name.value, emojis: field.emojiMeta) + let metaContent = try MastodonMetaContent.convert(document: mastodonContent) + cell.keyMetaLabel.configure(content: metaContent) + } catch { + let content = PlaintextMetaContent(string: field.name.value) + cell.keyMetaLabel.configure(content: content) + } + + // set value + do { + let mastodonContent = MastodonContent(content: field.value.value, emojis: field.emojiMeta) + let metaContent = try MastodonMetaContent.convert(document: mastodonContent) + cell.valueMetaLabel.configure(content: metaContent) + } catch { + let content = PlaintextMetaContent(string: field.value.value) + cell.valueMetaLabel.configure(content: content) + } + + // set background + var backgroundConfiguration = UIBackgroundConfiguration.listPlainCell() + backgroundConfiguration.backgroundColor = UIColor.secondarySystemBackground + cell.backgroundConfiguration = backgroundConfiguration + + cell.delegate = configuration.profileFieldCollectionViewCellDelegate + } + + let editFieldCellRegistration = UICollectionView.CellRegistration { cell, indexPath, item in + guard case let .editField(field) = item else { return } + + cell.keyTextField.text = field.name.value + cell.valueTextField.text = field.value.value + + NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification, object: cell.keyTextField) + .compactMap { $0.object as? UITextField } + .map { $0.text ?? "" } + .removeDuplicates() + .assign(to: \.value, on: field.name) + .store(in: &cell.disposeBag) + + NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification, object: cell.valueTextField) + .compactMap { $0.object as? UITextField } + .map { $0.text ?? "" } + .removeDuplicates() + .assign(to: \.value, on: field.value) + .store(in: &cell.disposeBag) + + // set background + var backgroundConfiguration = UIBackgroundConfiguration.listPlainCell() + backgroundConfiguration.backgroundColor = UIColor.secondarySystemBackground + cell.backgroundConfiguration = backgroundConfiguration + + cell.delegate = configuration.profileFieldEditCollectionViewCellDelegate + } + + let addEntryCellRegistration = UICollectionView.CellRegistration { cell, indexPath, item in + guard case .addEntry = item else { return } + + var backgroundConfiguration = UIBackgroundConfiguration.listPlainCell() + backgroundConfiguration.backgroundColorTransformer = .init { [weak cell] _ in + guard let cell = cell else { + return .secondarySystemBackground + } + let state = cell.configurationState + if state.isHighlighted || state.isSelected { + return .secondarySystemBackground.withAlphaComponent(0.5) + } else { + return .secondarySystemBackground + } + } + cell.backgroundConfiguration = backgroundConfiguration + } + + let dataSource = UICollectionViewDiffableDataSource(collectionView: collectionView) { collectionView, indexPath, item in switch item { - case .field(let field, let attribute): - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: ProfileFieldCollectionViewCell.self), for: indexPath) as! ProfileFieldCollectionViewCell - - // set key - do { - let mastodonContent = MastodonContent(content: field.name.value, emojis: attribute.emojiMeta.value) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.fieldView.titleMetaLabel.configure(content: metaContent) - } catch { - let content = PlaintextMetaContent(string: field.name.value) - cell.fieldView.titleMetaLabel.configure(content: content) - } - cell.fieldView.titleTextField.text = field.name.value - Publishers.CombineLatest( - field.name.removeDuplicates(), - attribute.emojiMeta.removeDuplicates() + case .field: + return collectionView.dequeueConfiguredReusableCell( + using: fieldCellRegistration, + for: indexPath, + item: item ) - .receive(on: RunLoop.main) - .sink { [weak cell] name, emojiMeta in - guard let cell = cell else { return } - do { - let mastodonContent = MastodonContent(content: name, emojis: emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.fieldView.titleMetaLabel.configure(content: metaContent) - } catch { - let content = PlaintextMetaContent(string: name) - cell.fieldView.titleMetaLabel.configure(content: content) - } - // only bind label. The text field should only set once - } - .store(in: &cell.disposeBag) - - - // set value - do { - let mastodonContent = MastodonContent(content: field.value.value, emojis: attribute.emojiMeta.value) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.fieldView.valueMetaLabel.configure(content: metaContent) - } catch { - let content = PlaintextMetaContent(string: field.value.value) - cell.fieldView.valueMetaLabel.configure(content: content) - } - cell.fieldView.valueTextField.text = field.value.value - Publishers.CombineLatest( - field.value.removeDuplicates(), - attribute.emojiMeta.removeDuplicates() + case .editField: + return collectionView.dequeueConfiguredReusableCell( + using: editFieldCellRegistration, + for: indexPath, + item: item + ) + case .addEntry: + return collectionView.dequeueConfiguredReusableCell( + using: addEntryCellRegistration, + for: indexPath, + item: item ) - .receive(on: RunLoop.main) - .sink { [weak cell] value, emojiMeta in - guard let cell = cell else { return } - do { - let mastodonContent = MastodonContent(content: value, emojis: emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.fieldView.valueMetaLabel.configure(content: metaContent) - } catch { - let content = PlaintextMetaContent(string: value) - cell.fieldView.valueMetaLabel.configure(content: content) - } - // only bind label. The text field should only set once - } - .store(in: &cell.disposeBag) - - // bind editing - if attribute.isEditing { - cell.fieldView.name - .removeDuplicates() - .receive(on: RunLoop.main) - .assign(to: \.value, on: field.name) - .store(in: &cell.disposeBag) - cell.fieldView.value - .removeDuplicates() - .receive(on: RunLoop.main) - .assign(to: \.value, on: field.value) - .store(in: &cell.disposeBag) - } - - // setup editing state - cell.fieldView.titleTextField.isHidden = !attribute.isEditing - cell.fieldView.valueTextField.isHidden = !attribute.isEditing - cell.fieldView.titleMetaLabel.isHidden = attribute.isEditing - cell.fieldView.valueMetaLabel.isHidden = attribute.isEditing - - // set control hidden - let isHidden = !attribute.isEditing - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: update editing state: %s", ((#file as NSString).lastPathComponent), #line, #function, isHidden ? "true" : "false") - cell.editButton.isHidden = isHidden - cell.reorderBarImageView.isHidden = isHidden - - // update separator line - cell.bottomSeparatorLine.isHidden = attribute.isLast - - cell.delegate = profileFieldCollectionViewCellDelegate - - return cell - - case .addEntry(let attribute): - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: ProfileFieldAddEntryCollectionViewCell.self), for: indexPath) as! ProfileFieldAddEntryCollectionViewCell - - cell.bottomSeparatorLine.isHidden = attribute.isLast - cell.delegate = profileFieldAddEntryCollectionViewCellDelegate - - return cell } } @@ -135,6 +134,7 @@ extension ProfileFieldSection { switch kind { case UICollectionView.elementKindSectionHeader: let reusableView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.headerReuseIdentifer, for: indexPath) as! ProfileFieldCollectionViewHeaderFooterView + reusableView.frame.size.height = 20 return reusableView case UICollectionView.elementKindSectionFooter: let reusableView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.footerReuseIdentifer, for: indexPath) as! ProfileFieldCollectionViewHeaderFooterView diff --git a/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift b/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift new file mode 100644 index 000000000..d4943d324 --- /dev/null +++ b/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift @@ -0,0 +1,150 @@ +// +// RecommendAccountSection.swift +// Mastodon +// +// Created by sxiaojian on 2021/4/1. +// + +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import UIKit +import MetaTextKit +import MastodonMeta +import Combine + +enum RecommendAccountSection: Equatable, Hashable { + case main +} + +//extension RecommendAccountSection { +// static func collectionViewDiffableDataSource( +// for collectionView: UICollectionView, +// dependency: NeedsDependency, +// delegate: SearchRecommendAccountsCollectionViewCellDelegate, +// managedObjectContext: NSManagedObjectContext +// ) -> UICollectionViewDiffableDataSource { +// UICollectionViewDiffableDataSource(collectionView: collectionView) { [weak delegate] collectionView, indexPath, objectID -> UICollectionViewCell? in +// let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: SearchRecommendAccountsCollectionViewCell.self), for: indexPath) as! SearchRecommendAccountsCollectionViewCell +// managedObjectContext.performAndWait { +// let user = managedObjectContext.object(with: objectID) as! MastodonUser +// configure(cell: cell, user: user, dependency: dependency) +// } +// cell.delegate = delegate +// return cell +// } +// } +// +// static func configure( +// cell: SearchRecommendAccountsCollectionViewCell, +// user: MastodonUser, +// dependency: NeedsDependency +// ) { +// configureContent(cell: cell, user: user) +// +// if let currentMastodonUser = dependency.context.authenticationService.activeMastodonAuthentication.value?.user { +// configureFollowButton(with: user, currentMastodonUser: currentMastodonUser, followButton: cell.followButton) +// } +// +// Publishers.CombineLatest( +// ManagedObjectObserver.observe(object: user).eraseToAnyPublisher().mapError { $0 as Error }, +// dependency.context.authenticationService.activeMastodonAuthentication.setFailureType(to: Error.self) +// ) +// .receive(on: DispatchQueue.main) +// .sink { _ in +// // do nothing +// } receiveValue: { [weak cell] change, authentication in +// guard let cell = cell else { return } +// guard case .update(let object) = change.changeType, +// let user = object as? MastodonUser else { return } +// guard let currentMastodonUser = authentication?.user else { return } +// +// configureFollowButton(with: user, currentMastodonUser: currentMastodonUser, followButton: cell.followButton) +// } +// .store(in: &cell.disposeBag) +// +// } +// +// static func configureContent( +// cell: SearchRecommendAccountsCollectionViewCell, +// user: MastodonUser +// ) { +// do { +// let mastodonContent = MastodonContent(content: user.displayNameWithFallback, emojis: user.emojis.asDictionary) +// let metaContent = try MastodonMetaContent.convert(document: mastodonContent) +// cell.displayNameLabel.configure(content: metaContent) +// } catch { +// let metaContent = PlaintextMetaContent(string: user.displayNameWithFallback) +// cell.displayNameLabel.configure(content: metaContent) +// } +// cell.acctLabel.text = "@" + user.acct +// cell.avatarImageView.af.setImage( +// withURL: user.avatarImageURLWithFallback(domain: user.domain), +// placeholderImage: UIImage.placeholder(color: .systemFill), +// imageTransition: .crossDissolve(0.2) +// ) +// cell.headerImageView.af.setImage( +// withURL: URL(string: user.header)!, +// placeholderImage: UIImage.placeholder(color: .systemFill), +// imageTransition: .crossDissolve(0.2) +// ) +// } +// +// static func configureFollowButton( +// with mastodonUser: MastodonUser, +// currentMastodonUser: MastodonUser, +// followButton: HighlightDimmableButton +// ) { +// let relationshipActionSet = relationShipActionSet(mastodonUser: mastodonUser, currentMastodonUser: currentMastodonUser) +// followButton.setTitle(relationshipActionSet.title, for: .normal) +// } +// +// static func relationShipActionSet( +// mastodonUser: MastodonUser, +// currentMastodonUser: MastodonUser +// ) -> ProfileViewModel.RelationshipActionOptionSet { +// var relationshipActionSet = ProfileViewModel.RelationshipActionOptionSet([.follow]) +// let isFollowing = mastodonUser.followingBy.flatMap { $0.contains(currentMastodonUser) } ?? false +// if isFollowing { +// relationshipActionSet.insert(.following) +// } +// +// let isPending = mastodonUser.followRequestedBy.flatMap { $0.contains(currentMastodonUser) } ?? false +// if isPending { +// relationshipActionSet.insert(.pending) +// } +// +// let isBlocking = mastodonUser.blockingBy.flatMap { $0.contains(currentMastodonUser) } ?? false +// if isBlocking { +// relationshipActionSet.insert(.blocking) +// } +// +// let isBlockedBy = currentMastodonUser.blockingBy.flatMap { $0.contains(mastodonUser) } ?? false +// if isBlockedBy { +// relationshipActionSet.insert(.blocked) +// } +// return relationshipActionSet +// } +// +//} +// +//extension RecommendAccountSection { +// +// static func tableViewDiffableDataSource( +// for tableView: UITableView, +// managedObjectContext: NSManagedObjectContext, +// viewModel: SuggestionAccountViewModel, +// delegate: SuggestionAccountTableViewCellDelegate +// ) -> UITableViewDiffableDataSource { +// UITableViewDiffableDataSource(tableView: tableView) { [weak viewModel, weak delegate] (tableView, indexPath, objectID) -> UITableViewCell? in +// guard let viewModel = viewModel else { return nil } +// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SuggestionAccountTableViewCell.self)) as! SuggestionAccountTableViewCell +// let user = managedObjectContext.object(with: objectID) as! MastodonUser +// let isSelected = viewModel.selectedAccounts.value.contains(objectID) +// cell.delegate = delegate +// cell.config(with: user, isSelected: isSelected) +// return cell +// } +// } +//} diff --git a/Mastodon/Diffiable/Report/ReportItem.swift b/Mastodon/Diffiable/Report/ReportItem.swift new file mode 100644 index 000000000..3f6b5b75a --- /dev/null +++ b/Mastodon/Diffiable/Report/ReportItem.swift @@ -0,0 +1,12 @@ +// +// ReportItem.swift +// Mastodon +// +// Created by MainasuK on 2022-1-27. +// + +import Foundation + +enum ReportItem: Hashable { + +} diff --git a/Mastodon/Diffiable/Report/ReportSection.swift b/Mastodon/Diffiable/Report/ReportSection.swift new file mode 100644 index 000000000..9f2a1a09a --- /dev/null +++ b/Mastodon/Diffiable/Report/ReportSection.swift @@ -0,0 +1,70 @@ +// +// ReportSection.swift +// Mastodon +// +// Created by ihugo on 2021/4/20. +// + +import Combine +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import UIKit +import AVKit +import os.log +import MastodonAsset +import MastodonLocalization + +enum ReportSection: Equatable, Hashable { + case main +} + +extension ReportSection { + static func tableViewDiffableDataSource( + for tableView: UITableView, + dependency: ReportViewController, + managedObjectContext: NSManagedObjectContext, + timestampUpdatePublisher: AnyPublisher + ) -> UITableViewDiffableDataSource { + UITableViewDiffableDataSource(tableView: tableView) {[ + weak dependency + ] tableView, indexPath, item -> UITableViewCell? in + return UITableViewCell() + guard let dependency = dependency else { return UITableViewCell() } + +// switch item { +// case .reportStatus(let objectID, let attribute): +// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ReportedStatusTableViewCell.self), for: indexPath) as! ReportedStatusTableViewCell +// cell.dependency = dependency +// let activeMastodonAuthenticationBox = dependency.context.authenticationService.activeMastodonAuthenticationBox.value +// let requestUserID = activeMastodonAuthenticationBox?.userID ?? "" +// managedObjectContext.performAndWait { [weak dependency] in +// guard let dependency = dependency else { return } +// let status = managedObjectContext.object(with: objectID) as! Status +// StatusSection.configure( +// cell: cell, +// tableView: tableView, +// timelineContext: .report, +// dependency: dependency, +// readableLayoutFrame: tableView.readableContentGuide.layoutFrame, +// status: status, +// requestUserID: requestUserID, +// statusItemAttribute: attribute +// ) +// } +// +// // defalut to select the report status +// if attribute.isSelected { +// tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none) +// } else { +// tableView.deselectRow(at: indexPath, animated: false) +// } +// +// return cell +// default: +// return nil +// } + } + } +} diff --git a/Mastodon/Diffiable/Search/RecommendAccountSection.swift b/Mastodon/Diffiable/Search/RecommendAccountSection.swift deleted file mode 100644 index 3d6cff19e..000000000 --- a/Mastodon/Diffiable/Search/RecommendAccountSection.swift +++ /dev/null @@ -1,150 +0,0 @@ -// -// RecommendAccountSection.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/1. -// - -import CoreData -import CoreDataStack -import Foundation -import MastodonSDK -import UIKit -import MetaTextKit -import MastodonMeta -import Combine - -enum RecommendAccountSection: Equatable, Hashable { - case main -} - -extension RecommendAccountSection { - static func collectionViewDiffableDataSource( - for collectionView: UICollectionView, - dependency: NeedsDependency, - delegate: SearchRecommendAccountsCollectionViewCellDelegate, - managedObjectContext: NSManagedObjectContext - ) -> UICollectionViewDiffableDataSource { - UICollectionViewDiffableDataSource(collectionView: collectionView) { [weak delegate] collectionView, indexPath, objectID -> UICollectionViewCell? in - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: SearchRecommendAccountsCollectionViewCell.self), for: indexPath) as! SearchRecommendAccountsCollectionViewCell - managedObjectContext.performAndWait { - let user = managedObjectContext.object(with: objectID) as! MastodonUser - configure(cell: cell, user: user, dependency: dependency) - } - cell.delegate = delegate - return cell - } - } - - static func configure( - cell: SearchRecommendAccountsCollectionViewCell, - user: MastodonUser, - dependency: NeedsDependency - ) { - configureContent(cell: cell, user: user) - - if let currentMastodonUser = dependency.context.authenticationService.activeMastodonAuthentication.value?.user { - configureFollowButton(with: user, currentMastodonUser: currentMastodonUser, followButton: cell.followButton) - } - - Publishers.CombineLatest( - ManagedObjectObserver.observe(object: user).eraseToAnyPublisher().mapError { $0 as Error }, - dependency.context.authenticationService.activeMastodonAuthentication.setFailureType(to: Error.self) - ) - .receive(on: DispatchQueue.main) - .sink { _ in - // do nothing - } receiveValue: { [weak cell] change, authentication in - guard let cell = cell else { return } - guard case .update(let object) = change.changeType, - let user = object as? MastodonUser else { return } - guard let currentMastodonUser = authentication?.user else { return } - - configureFollowButton(with: user, currentMastodonUser: currentMastodonUser, followButton: cell.followButton) - } - .store(in: &cell.disposeBag) - - } - - static func configureContent( - cell: SearchRecommendAccountsCollectionViewCell, - user: MastodonUser - ) { - do { - let mastodonContent = MastodonContent(content: user.displayNameWithFallback, emojis: user.emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.displayNameLabel.configure(content: metaContent) - } catch { - let metaContent = PlaintextMetaContent(string: user.displayNameWithFallback) - cell.displayNameLabel.configure(content: metaContent) - } - cell.acctLabel.text = "@" + user.acct - cell.avatarImageView.af.setImage( - withURL: user.avatarImageURLWithFallback(domain: user.domain), - placeholderImage: UIImage.placeholder(color: .systemFill), - imageTransition: .crossDissolve(0.2) - ) - cell.headerImageView.af.setImage( - withURL: URL(string: user.header)!, - placeholderImage: UIImage.placeholder(color: .systemFill), - imageTransition: .crossDissolve(0.2) - ) - } - - static func configureFollowButton( - with mastodonUser: MastodonUser, - currentMastodonUser: MastodonUser, - followButton: HighlightDimmableButton - ) { - let relationshipActionSet = relationShipActionSet(mastodonUser: mastodonUser, currentMastodonUser: currentMastodonUser) - followButton.setTitle(relationshipActionSet.title, for: .normal) - } - - static func relationShipActionSet( - mastodonUser: MastodonUser, - currentMastodonUser: MastodonUser - ) -> ProfileViewModel.RelationshipActionOptionSet { - var relationshipActionSet = ProfileViewModel.RelationshipActionOptionSet([.follow]) - let isFollowing = mastodonUser.followingBy.flatMap { $0.contains(currentMastodonUser) } ?? false - if isFollowing { - relationshipActionSet.insert(.following) - } - - let isPending = mastodonUser.followRequestedBy.flatMap { $0.contains(currentMastodonUser) } ?? false - if isPending { - relationshipActionSet.insert(.pending) - } - - let isBlocking = mastodonUser.blockingBy.flatMap { $0.contains(currentMastodonUser) } ?? false - if isBlocking { - relationshipActionSet.insert(.blocking) - } - - let isBlockedBy = currentMastodonUser.blockingBy.flatMap { $0.contains(mastodonUser) } ?? false - if isBlockedBy { - relationshipActionSet.insert(.blocked) - } - return relationshipActionSet - } - -} - -extension RecommendAccountSection { - - static func tableViewDiffableDataSource( - for tableView: UITableView, - managedObjectContext: NSManagedObjectContext, - viewModel: SuggestionAccountViewModel, - delegate: SuggestionAccountTableViewCellDelegate - ) -> UITableViewDiffableDataSource { - UITableViewDiffableDataSource(tableView: tableView) { [weak viewModel, weak delegate] (tableView, indexPath, objectID) -> UITableViewCell? in - guard let viewModel = viewModel else { return nil } - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SuggestionAccountTableViewCell.self)) as! SuggestionAccountTableViewCell - let user = managedObjectContext.object(with: objectID) as! MastodonUser - let isSelected = viewModel.selectedAccounts.value.contains(objectID) - cell.delegate = delegate - cell.config(with: user, isSelected: isSelected) - return cell - } - } -} diff --git a/Mastodon/Diffiable/Search/RecommendHashTagSection.swift b/Mastodon/Diffiable/Search/RecommendHashTagSection.swift deleted file mode 100644 index 502086910..000000000 --- a/Mastodon/Diffiable/Search/RecommendHashTagSection.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// RecommendHashTagSection.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/1. -// - -import Foundation -import MastodonSDK -import UIKit - -enum RecommendHashTagSection: Equatable, Hashable { - case main -} - -extension RecommendHashTagSection { - static func collectionViewDiffableDataSource( - for collectionView: UICollectionView - ) -> UICollectionViewDiffableDataSource { - UICollectionViewDiffableDataSource(collectionView: collectionView) { collectionView, indexPath, tag -> UICollectionViewCell? in - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: SearchRecommendTagsCollectionViewCell.self), for: indexPath) as! SearchRecommendTagsCollectionViewCell - cell.config(with: tag) - return cell - } - } -} diff --git a/Mastodon/Diffiable/Search/SearchHistoryItem.swift b/Mastodon/Diffiable/Search/SearchHistoryItem.swift index de97eae34..ae156a81f 100644 --- a/Mastodon/Diffiable/Search/SearchHistoryItem.swift +++ b/Mastodon/Diffiable/Search/SearchHistoryItem.swift @@ -7,35 +7,9 @@ import Foundation import CoreData +import CoreDataStack -enum SearchHistoryItem { - case account(objectID: NSManagedObjectID) - case hashtag(objectID: NSManagedObjectID) - case status(objectID: NSManagedObjectID, attribute: Item.StatusAttribute) -} - -extension SearchHistoryItem: Hashable { - static func == (lhs: SearchHistoryItem, rhs: SearchHistoryItem) -> Bool { - switch (lhs, rhs) { - case (.account(let objectIDLeft), account(let objectIDRight)): - return objectIDLeft == objectIDRight - case (.hashtag(let objectIDLeft), hashtag(let objectIDRight)): - return objectIDLeft == objectIDRight - case (.status(let objectIDLeft, _), status(let objectIDRight, _)): - return objectIDLeft == objectIDRight - default: - return false - } - } - - func hash(into hasher: inout Hasher) { - switch self { - case .account(let objectID): - hasher.combine(objectID) - case .hashtag(let objectID): - hasher.combine(objectID) - case .status(let objectID, _): - hasher.combine(objectID) - } - } +enum SearchHistoryItem: Hashable { + case hashtag(ManagedObjectRecord) + case user(ManagedObjectRecord) } diff --git a/Mastodon/Diffiable/Search/SearchHistorySection.swift b/Mastodon/Diffiable/Search/SearchHistorySection.swift index b5c5cd8cc..dba1dc18a 100644 --- a/Mastodon/Diffiable/Search/SearchHistorySection.swift +++ b/Mastodon/Diffiable/Search/SearchHistorySection.swift @@ -13,28 +13,80 @@ enum SearchHistorySection: Hashable { } extension SearchHistorySection { - static func tableViewDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency - ) -> UITableViewDiffableDataSource { - UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in + + struct Configuration { + weak var searchHistorySectionHeaderCollectionReusableViewDelegate: SearchHistorySectionHeaderCollectionReusableViewDelegate? + } + + static func diffableDataSource( + collectionView: UICollectionView, + context: AppContext, + configuration: Configuration + ) -> UICollectionViewDiffableDataSource { + + let userCellRegister = UICollectionView.CellRegistration> { cell, indexPath, item in + context.managedObjectContext.performAndWait { + guard let user = item.object(in: context.managedObjectContext) else { return } + cell.configure(viewModel: .init(value: user)) + } + } + + let hashtagCellRegister = UICollectionView.CellRegistration> { cell, indexPath, item in + context.managedObjectContext.performAndWait { + guard let hashtag = item.object(in: context.managedObjectContext) else { return } + var contentConfiguration = cell.defaultContentConfiguration() + contentConfiguration.text = "#" + hashtag.name + cell.contentConfiguration = contentConfiguration + } + + var backgroundConfiguration = UIBackgroundConfiguration.listGroupedCell() + backgroundConfiguration.backgroundColorTransformer = .init { [weak cell] _ in + guard let state = cell?.configurationState else { + return ThemeService.shared.currentTheme.value.secondarySystemGroupedBackgroundColor + } + + if state.isHighlighted || state.isSelected { + return ThemeService.shared.currentTheme.value.tableViewCellSelectionBackgroundColor + } + return ThemeService.shared.currentTheme.value.secondarySystemGroupedBackgroundColor + } + cell.backgroundConfiguration = backgroundConfiguration + } + + let dataSource = UICollectionViewDiffableDataSource(collectionView: collectionView) { collectionView, indexPath, item in switch item { - case .account(let objectID): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SearchResultTableViewCell.self), for: indexPath) as! SearchResultTableViewCell - if let user = try? dependency.context.managedObjectContext.existingObject(with: objectID) as? MastodonUser { - cell.config(with: user) - } - return cell - case .hashtag(let objectID): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SearchResultTableViewCell.self), for: indexPath) as! SearchResultTableViewCell - if let hashtag = try? dependency.context.managedObjectContext.existingObject(with: objectID) as? Tag { - cell.config(with: hashtag) - } - return cell - case .status: - // Should not show status in the history list - return UITableViewCell() - } // end switch - } // end UITableViewDiffableDataSource + case .user(let record): + return collectionView.dequeueConfiguredReusableCell( + using: userCellRegister, + for: indexPath, item: record) + case .hashtag(let record): + return collectionView.dequeueConfiguredReusableCell( + using: hashtagCellRegister, + for: indexPath, item: record) + } + } + + let trendHeaderRegister = UICollectionView.SupplementaryRegistration(elementKind: UICollectionView.elementKindSectionHeader) { [weak dataSource] supplementaryView, elementKind, indexPath in + supplementaryView.delegate = configuration.searchHistorySectionHeaderCollectionReusableViewDelegate + + guard let dataSource = dataSource else { return } + let sections = dataSource.snapshot().sectionIdentifiers + guard indexPath.section < sections.count else { return } + let section = sections[indexPath.section] + } + + dataSource.supplementaryViewProvider = { (collectionView: UICollectionView, elementKind: String, indexPath: IndexPath) in + let fallback = UICollectionReusableView() + + switch elementKind { + case UICollectionView.elementKindSectionHeader: + return collectionView.dequeueConfiguredReusableSupplementary(using: trendHeaderRegister, for: indexPath) + default: + assertionFailure() + return fallback + } + } + + return dataSource } // end func } diff --git a/Mastodon/Diffiable/Search/SearchItem.swift b/Mastodon/Diffiable/Search/SearchItem.swift new file mode 100644 index 000000000..35d951130 --- /dev/null +++ b/Mastodon/Diffiable/Search/SearchItem.swift @@ -0,0 +1,13 @@ +// +// SearchItem.swift +// Mastodon +// +// Created by MainasuK on 2022-1-18. +// + +import Foundation +import MastodonSDK + +enum SearchItem: Hashable { + case trend(Mastodon.Entity.Tag) +} diff --git a/Mastodon/Diffiable/Search/SearchResultItem.swift b/Mastodon/Diffiable/Search/SearchResultItem.swift index 7f57c4355..813836925 100644 --- a/Mastodon/Diffiable/Search/SearchResultItem.swift +++ b/Mastodon/Diffiable/Search/SearchResultItem.swift @@ -5,14 +5,15 @@ // Created by sxiaojian on 2021/4/6. // -import CoreData import Foundation +import CoreData +import CoreDataStack import MastodonSDK -enum SearchResultItem { +enum SearchResultItem: Hashable { + case user(ManagedObjectRecord) + case status(ManagedObjectRecord) case hashtag(tag: Mastodon.Entity.Tag) - case account(account: Mastodon.Entity.Account) - case status(statusObjectID: NSManagedObjectID, attribute: Item.StatusAttribute) case bottomLoader(attribute: BottomLoaderAttribute) } @@ -26,7 +27,10 @@ extension SearchResultItem { self.isNoResult = isEmptyResult } - static func == (lhs: SearchResultItem.BottomLoaderAttribute, rhs: SearchResultItem.BottomLoaderAttribute) -> Bool { + static func == ( + lhs: SearchResultItem.BottomLoaderAttribute, + rhs: SearchResultItem.BottomLoaderAttribute + ) -> Bool { return lhs.id == rhs.id } @@ -35,60 +39,3 @@ extension SearchResultItem { } } } - -extension SearchResultItem: Equatable { - static func == (lhs: SearchResultItem, rhs: SearchResultItem) -> Bool { - switch (lhs, rhs) { - case (.hashtag(let tagLeft), .hashtag(let tagRight)): - return tagLeft == tagRight - case (.account(let accountLeft), .account(let accountRight)): - return accountLeft == accountRight - case (.status(let idLeft, _), .status(let idRight, _)): - return idLeft == idRight - case (.bottomLoader(let attributeLeft), .bottomLoader(let attributeRight)): - return attributeLeft == attributeRight - default: - return false - } - } -} - -extension SearchResultItem: Hashable { - func hash(into hasher: inout Hasher) { - switch self { - case .account(let account): - hasher.combine(String(describing: SearchResultItem.account.self)) - hasher.combine(account.id) - case .hashtag(let tag): - hasher.combine(String(describing: SearchResultItem.hashtag.self)) - hasher.combine(tag.name) - case .status(let id, _): - hasher.combine(id) - case .bottomLoader(let attribute): - hasher.combine(attribute) - } - } -} - -extension SearchResultItem { - var sortKey: String? { - switch self { - case .account(let account): return account.displayName.lowercased() - case .hashtag(let hashtag): return hashtag.name.lowercased() - default: return nil - } - } -} - -extension SearchResultItem { - var statusObjectItem: StatusObjectItem? { - switch self { - case .status(let objectID, _): - return .status(objectID: objectID) - case .hashtag, - .account, - .bottomLoader: - return nil - } - } -} diff --git a/Mastodon/Diffiable/Search/SearchResultSection.swift b/Mastodon/Diffiable/Search/SearchResultSection.swift index dcc52e15b..1b1ac3ec9 100644 --- a/Mastodon/Diffiable/Search/SearchResultSection.swift +++ b/Mastodon/Diffiable/Search/SearchResultSection.swift @@ -5,51 +5,70 @@ // Created by sxiaojian on 2021/4/6. // +import os.log import Foundation import MastodonSDK import UIKit import CoreData import CoreDataStack +import MastodonAsset +import MastodonLocalization +import MastodonUI -enum SearchResultSection: Equatable, Hashable { +enum SearchResultSection: Hashable { case main } extension SearchResultSection { + + static let logger = Logger(subsystem: "SearchResultSection", category: "logic") + + struct Configuration { + weak var statusViewTableViewCellDelegate: StatusTableViewCellDelegate? + weak var userTableViewCellDelegate: UserTableViewCellDelegate? + } + static func tableViewDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, - statusTableViewCellDelegate: StatusTableViewCellDelegate + tableView: UITableView, + context: AppContext, + configuration: Configuration ) -> UITableViewDiffableDataSource { - UITableViewDiffableDataSource(tableView: tableView) { [ - weak statusTableViewCellDelegate - ] tableView, indexPath, item -> UITableViewCell? in + tableView.register(UserTableViewCell.self, forCellReuseIdentifier: String(describing: UserTableViewCell.self)) + tableView.register(StatusTableViewCell.self, forCellReuseIdentifier: String(describing: StatusTableViewCell.self)) + tableView.register(HashtagTableViewCell.self, forCellReuseIdentifier: String(describing: HashtagTableViewCell.self)) + tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) + + return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in switch item { - case .account(let account): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SearchResultTableViewCell.self), for: indexPath) as! SearchResultTableViewCell - cell.config(with: account) - return cell - case .hashtag(let tag): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SearchResultTableViewCell.self), for: indexPath) as! SearchResultTableViewCell - cell.config(with: tag) - return cell - case .status(let statusObjectID, let attribute): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell - if let status = try? dependency.context.managedObjectContext.existingObject(with: statusObjectID) as? Status { - let activeMastodonAuthenticationBox = dependency.context.authenticationService.activeMastodonAuthenticationBox.value - let requestUserID = activeMastodonAuthenticationBox?.userID ?? "" - StatusSection.configure( - cell: cell, + case .user(let record): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: UserTableViewCell.self), for: indexPath) as! UserTableViewCell + context.managedObjectContext.performAndWait { + guard let user = record.object(in: context.managedObjectContext) else { return } + configure( + context: context, tableView: tableView, - timelineContext: .search, - dependency: dependency, - readableLayoutFrame: tableView.readableContentGuide.layoutFrame, - status: status, - requestUserID: requestUserID, - statusItemAttribute: attribute + cell: cell, + viewModel: .init(value: .user(user)), + configuration: configuration ) } - cell.delegate = statusTableViewCellDelegate + return cell + case .status(let record): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell + context.managedObjectContext.performAndWait { + guard let status = record.object(in: context.managedObjectContext) else { return } + configure( + context: context, + tableView: tableView, + cell: cell, + viewModel: StatusTableViewCell.ViewModel(value: .status(status)), + configuration: configuration + ) + } + return cell + case .hashtag(let tag): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: HashtagTableViewCell.self)) as! HashtagTableViewCell + cell.primaryLabel.configure(content: PlaintextMetaContent(string: "#" + tag.name)) return cell case .bottomLoader(let attribute): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) as! TimelineBottomLoaderTableViewCell @@ -63,7 +82,49 @@ extension SearchResultSection { cell.loadMoreLabel.isHidden = true } return cell - } // end switch + } } // end UITableViewDiffableDataSource } // end func } + +extension SearchResultSection { + + static func configure( + context: AppContext, + tableView: UITableView, + cell: StatusTableViewCell, + viewModel: StatusTableViewCell.ViewModel, + configuration: Configuration + ) { + StatusSection.setupStatusPollDataSource( + context: context, + statusView: cell.statusView + ) + + context.authenticationService.activeMastodonAuthenticationBox + .map { $0 as UserIdentifier? } + .assign(to: \.userIdentifier, on: cell.statusView.viewModel) + .store(in: &cell.disposeBag) + + cell.configure( + tableView: tableView, + viewModel: viewModel, + delegate: configuration.statusViewTableViewCellDelegate + ) + } + + static func configure( + context: AppContext, + tableView: UITableView, + cell: UserTableViewCell, + viewModel: UserTableViewCell.ViewModel, + configuration: Configuration + ) { + cell.configure( + tableView: tableView, + viewModel: viewModel, + delegate: configuration.userTableViewCellDelegate + ) + } + +} diff --git a/Mastodon/Diffiable/Search/SearchSection.swift b/Mastodon/Diffiable/Search/SearchSection.swift new file mode 100644 index 000000000..38c87a76e --- /dev/null +++ b/Mastodon/Diffiable/Search/SearchSection.swift @@ -0,0 +1,76 @@ +// +// SearchSection.swift +// Mastodon +// +// Created by MainasuK on 2022-1-18. +// + +import UIKit +import MastodonSDK +import MastodonLocalization + +enum SearchSection: Hashable { + case trend +} + +extension SearchSection { + + static func diffableDataSource( + collectionView: UICollectionView, + context: AppContext + ) -> UICollectionViewDiffableDataSource { + + let trendCellRegister = UICollectionView.CellRegistration { cell, indexPath, item in + cell.primaryLabel.text = "#" + item.name + cell.secondaryLabel.text = L10n.Scene.Search.Recommend.HashTag.peopleTalking(item.talkingPeopleCount ?? 0) + + cell.lineChartView.data = (item.history ?? []) + .sorted(by: { $0.day < $1.day }) // latest last + .map { entry in + guard let point = Int(entry.accounts) else { + return .zero + } + return CGFloat(point) + } + } + + let dataSource = UICollectionViewDiffableDataSource( + collectionView: collectionView + ) { collectionView, indexPath, item in + switch item { + case .trend(let hashtag): + let cell = collectionView.dequeueConfiguredReusableCell( + using: trendCellRegister, + for: indexPath, + item: hashtag + ) + return cell + } + } + + let trendHeaderRegister = UICollectionView.SupplementaryRegistration(elementKind: UICollectionView.elementKindSectionHeader) { supplementaryView, elementKind, indexPath in + // do nothing + } + + dataSource.supplementaryViewProvider = { [weak dataSource] (collectionView: UICollectionView, elementKind: String, indexPath: IndexPath) in + let fallback = UICollectionReusableView() + guard let dataSource = dataSource else { return fallback } + let sections = dataSource.snapshot().sectionIdentifiers + guard indexPath.section < sections.count else { return fallback } + let section = sections[indexPath.section] + + switch elementKind { + case UICollectionView.elementKindSectionHeader: + switch section { + case .trend: + return collectionView.dequeueConfiguredReusableSupplementary(using: trendHeaderRegister, for: indexPath) + } + default: + assertionFailure() + return fallback + } + } + + return dataSource + } // end func +} diff --git a/Mastodon/Diffiable/Settings/SettingsItem.swift b/Mastodon/Diffiable/Settings/SettingsItem.swift index ed472808a..99c956e7a 100644 --- a/Mastodon/Diffiable/Settings/SettingsItem.swift +++ b/Mastodon/Diffiable/Settings/SettingsItem.swift @@ -7,6 +7,8 @@ import UIKit import CoreData +import MastodonAsset +import MastodonLocalization enum SettingsItem { case appearance(settingObjectID: NSManagedObjectID) diff --git a/Mastodon/Diffiable/Settings/SettingsSection.swift b/Mastodon/Diffiable/Settings/SettingsSection.swift index f59c13587..ab0ec4e88 100644 --- a/Mastodon/Diffiable/Settings/SettingsSection.swift +++ b/Mastodon/Diffiable/Settings/SettingsSection.swift @@ -8,6 +8,8 @@ import UIKit import CoreData import CoreDataStack +import MastodonAsset +import MastodonLocalization enum SettingsSection: Hashable { case appearance diff --git a/Mastodon/Diffiable/Status/Item.swift b/Mastodon/Diffiable/Status/Item.swift deleted file mode 100644 index 220a7fdba..000000000 --- a/Mastodon/Diffiable/Status/Item.swift +++ /dev/null @@ -1,198 +0,0 @@ -// -// Item.swift -// Mastodon -// -// Created by sxiaojian on 2021/1/27. -// - -import Combine -import CoreData -import CoreDataStack -import Foundation -import MastodonSDK -import DifferenceKit - -/// Note: update Equatable when change case -enum Item { - // timeline - case homeTimelineIndex(objectID: NSManagedObjectID, attribute: StatusAttribute) - - // thread - case root(statusObjectID: NSManagedObjectID, attribute: StatusAttribute) - case reply(statusObjectID: NSManagedObjectID, attribute: StatusAttribute) - case leaf(statusObjectID: NSManagedObjectID, attribute: StatusAttribute) - case leafBottomLoader(statusObjectID: NSManagedObjectID) - - // normal list - case status(objectID: NSManagedObjectID, attribute: StatusAttribute) - - // loader - case homeMiddleLoader(upperTimelineIndexAnchorObjectID: NSManagedObjectID) - case publicMiddleLoader(statusID: String) - case topLoader - case bottomLoader - case emptyBottomLoader - - case emptyStateHeader(attribute: EmptyStateHeaderAttribute) - - // reports - case reportStatus(objectID: NSManagedObjectID, attribute: ReportStatusAttribute) -} - -extension Item { - class StatusAttribute { - var isSeparatorLineHidden: Bool - - /// is media loaded or not - let isImageLoaded = CurrentValueSubject(false) - - /// flag for current sensitive content reveal state - /// - /// - true: displaying sensitive content - /// - false: displaying content warning overlay - let isRevealing = CurrentValueSubject(false) - - init(isSeparatorLineHidden: Bool = false) { - self.isSeparatorLineHidden = isSeparatorLineHidden - } - } - - class EmptyStateHeaderAttribute: Hashable { - let id = UUID() - let reason: Reason - - enum Reason: Equatable { - case noStatusFound - case blocking(name: String?) - case blocked(name: String?) - case suspended(name: String?) - - static func == (lhs: Item.EmptyStateHeaderAttribute.Reason, rhs: Item.EmptyStateHeaderAttribute.Reason) -> Bool { - switch (lhs, rhs) { - case (.noStatusFound, noStatusFound): return true - case (.blocking(let nameLeft), blocking(let nameRight)): return nameLeft == nameRight - case (.blocked(let nameLeft), blocked(let nameRight)): return nameLeft == nameRight - case (.suspended(let nameLeft), .suspended(let nameRight)): return nameLeft == nameRight - default: return false - } - } - } - - init(reason: Reason) { - self.reason = reason - } - - static func == (lhs: Item.EmptyStateHeaderAttribute, rhs: Item.EmptyStateHeaderAttribute) -> Bool { - return lhs.reason == rhs.reason - } - - func hash(into hasher: inout Hasher) { - hasher.combine(id) - } - } - - class ReportStatusAttribute: StatusAttribute { - var isSelected: Bool - - init(isSeparatorLineHidden: Bool = false, isSelected: Bool = false) { - self.isSelected = isSelected - super.init(isSeparatorLineHidden: isSeparatorLineHidden) - } - } - -} - -extension Item: Equatable { - static func == (lhs: Item, rhs: Item) -> Bool { - switch (lhs, rhs) { - case (.homeTimelineIndex(let objectIDLeft, _), .homeTimelineIndex(let objectIDRight, _)): - return objectIDLeft == objectIDRight - case (.root(let objectIDLeft, _), .root(let objectIDRight, _)): - return objectIDLeft == objectIDRight - case (.reply(let objectIDLeft, _), .reply(let objectIDRight, _)): - return objectIDLeft == objectIDRight - case (.leaf(let objectIDLeft, _), .leaf(let objectIDRight, _)): - return objectIDLeft == objectIDRight - case (.leafBottomLoader(let objectIDLeft), .leafBottomLoader(let objectIDRight)): - return objectIDLeft == objectIDRight - case (.status(let objectIDLeft, _), .status(let objectIDRight, _)): - return objectIDLeft == objectIDRight - case (.homeMiddleLoader(let upperLeft), .homeMiddleLoader(let upperRight)): - return upperLeft == upperRight - case (.publicMiddleLoader(let upperLeft), .publicMiddleLoader(let upperRight)): - return upperLeft == upperRight - case (.topLoader, .topLoader): - return true - case (.bottomLoader, .bottomLoader): - return true - case (.emptyBottomLoader, .emptyBottomLoader): - return true - case (.emptyStateHeader(let attributeLeft), .emptyStateHeader(let attributeRight)): - return attributeLeft == attributeRight - case (.reportStatus(let objectIDLeft, _), .reportStatus(let objectIDRight, _)): - return objectIDLeft == objectIDRight - default: - return false - } - } -} - -extension Item: Hashable { - func hash(into hasher: inout Hasher) { - switch self { - case .homeTimelineIndex(let objectID, _): - hasher.combine(objectID) - case .root(let objectID, _): - hasher.combine(objectID) - case .reply(let objectID, _): - hasher.combine(objectID) - case .leaf(let objectID, _): - hasher.combine(objectID) - case .leafBottomLoader(let objectID): - hasher.combine(objectID) - case .status(let objectID, _): - hasher.combine(objectID) - case .homeMiddleLoader(upperTimelineIndexAnchorObjectID: let upper): - hasher.combine(String(describing: Item.homeMiddleLoader.self)) - hasher.combine(upper) - case .publicMiddleLoader(let upper): - hasher.combine(String(describing: Item.publicMiddleLoader.self)) - hasher.combine(upper) - case .topLoader: - hasher.combine(String(describing: Item.topLoader.self)) - case .bottomLoader: - hasher.combine(String(describing: Item.bottomLoader.self)) - case .emptyBottomLoader: - hasher.combine(String(describing: Item.emptyBottomLoader.self)) - case .emptyStateHeader(let attribute): - hasher.combine(attribute) - case .reportStatus(let objectID, _): - hasher.combine(objectID) - } - } -} - -extension Item: Differentiable { } - -extension Item { - var statusObjectItem: StatusObjectItem? { - switch self { - case .homeTimelineIndex(let objectID, _): - return .homeTimelineIndex(objectID: objectID) - case .root(let objectID, _), - .reply(let objectID, _), - .leaf(let objectID, _), - .status(let objectID, _), - .reportStatus(let objectID, _): - return .status(objectID: objectID) - case .leafBottomLoader, - .homeMiddleLoader, - .publicMiddleLoader, - .topLoader, - .bottomLoader, - .emptyBottomLoader, - .emptyStateHeader: - return nil - } - } -} diff --git a/Mastodon/Diffiable/Status/ReportSection.swift b/Mastodon/Diffiable/Status/ReportSection.swift deleted file mode 100644 index 5da10c399..000000000 --- a/Mastodon/Diffiable/Status/ReportSection.swift +++ /dev/null @@ -1,67 +0,0 @@ -// -// ReportSection.swift -// Mastodon -// -// Created by ihugo on 2021/4/20. -// - -import Combine -import CoreData -import CoreDataStack -import Foundation -import MastodonSDK -import UIKit -import AVKit -import os.log - -enum ReportSection: Equatable, Hashable { - case main -} - -extension ReportSection { - static func tableViewDiffableDataSource( - for tableView: UITableView, - dependency: ReportViewController, - managedObjectContext: NSManagedObjectContext, - timestampUpdatePublisher: AnyPublisher - ) -> UITableViewDiffableDataSource { - UITableViewDiffableDataSource(tableView: tableView) {[ - weak dependency - ] tableView, indexPath, item -> UITableViewCell? in - guard let dependency = dependency else { return UITableViewCell() } - - switch item { - case .reportStatus(let objectID, let attribute): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ReportedStatusTableViewCell.self), for: indexPath) as! ReportedStatusTableViewCell - cell.dependency = dependency - let activeMastodonAuthenticationBox = dependency.context.authenticationService.activeMastodonAuthenticationBox.value - let requestUserID = activeMastodonAuthenticationBox?.userID ?? "" - managedObjectContext.performAndWait { [weak dependency] in - guard let dependency = dependency else { return } - let status = managedObjectContext.object(with: objectID) as! Status - StatusSection.configure( - cell: cell, - tableView: tableView, - timelineContext: .report, - dependency: dependency, - readableLayoutFrame: tableView.readableContentGuide.layoutFrame, - status: status, - requestUserID: requestUserID, - statusItemAttribute: attribute - ) - } - - // defalut to select the report status - if attribute.isSelected { - tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none) - } else { - tableView.deselectRow(at: indexPath, animated: false) - } - - return cell - default: - return nil - } - } - } -} diff --git a/Mastodon/Diffiable/Status/StatusItem.swift b/Mastodon/Diffiable/Status/StatusItem.swift new file mode 100644 index 000000000..c10e410df --- /dev/null +++ b/Mastodon/Diffiable/Status/StatusItem.swift @@ -0,0 +1,84 @@ +// +// StatusItem.swift +// Mastodon +// +// Created by MainasuK on 2022-1-11. +// + +import Foundation +import CoreDataStack + +enum StatusItem: Hashable { + case feed(record: ManagedObjectRecord) + case feedLoader(record: ManagedObjectRecord) + case status(record: ManagedObjectRecord) + // case statusLoader(record: ManagedObjectRecord, context: StatusLoaderContext) + case thread(Thread) + case topLoader + case bottomLoader +} + +//extension StatusItem { +// final class StatusLoaderContext: Hashable { +// let id = UUID() +// @Published var isFetching = false +// +// static func == ( +// lhs: StatusItem.StatusLoaderContext, +// rhs: StatusItem.StatusLoaderContext +// ) -> Bool { +// return lhs.id == rhs.id +// } +// +// func hash(into hasher: inout Hasher) { +// hasher.combine(id) +// } +// } +//} + +extension StatusItem { + enum Thread: Hashable { + case root(context: Context) + case reply(context: Context) + case leaf(context: Context) + + public var record: ManagedObjectRecord { + switch self { + case .root(let threadContext), + .reply(let threadContext), + .leaf(let threadContext): + return threadContext.status + } + } + } +} + +extension StatusItem.Thread { + class Context: Hashable { + let status: ManagedObjectRecord + var displayUpperConversationLink: Bool + var displayBottomConversationLink: Bool + + init( + status: ManagedObjectRecord, + displayUpperConversationLink: Bool = false, + displayBottomConversationLink: Bool = false + ) { + self.status = status + self.displayUpperConversationLink = displayUpperConversationLink + self.displayBottomConversationLink = displayBottomConversationLink + } + + static func == (lhs: StatusItem.Thread.Context, rhs: StatusItem.Thread.Context) -> Bool { + return lhs.status == rhs.status + && lhs.displayUpperConversationLink == rhs.displayUpperConversationLink + && lhs.displayBottomConversationLink == rhs.displayBottomConversationLink + } + + func hash(into hasher: inout Hasher) { + hasher.combine(status) + hasher.combine(displayUpperConversationLink) + hasher.combine(displayBottomConversationLink) + } + } +} diff --git a/Mastodon/Diffiable/Status/StatusSection.swift b/Mastodon/Diffiable/Status/StatusSection.swift index 918b8b453..d3253ea7a 100644 --- a/Mastodon/Diffiable/Status/StatusSection.swift +++ b/Mastodon/Diffiable/Status/StatusSection.swift @@ -15,13 +15,14 @@ import AlamofireImage import MastodonMeta import MastodonSDK import NaturalLanguage +import MastodonUI // import LinkPresentation -protocol StatusCell: DisposeBagCollectable { - var statusView: StatusView { get } - var isFiltered: Bool { get set } -} +//protocol StatusCell: DisposeBagCollectable { +// var statusView: StatusView { get } +// var isFiltered: Bool { get set } +//} enum StatusSection: Equatable, Hashable { case main @@ -30,157 +31,277 @@ enum StatusSection: Equatable, Hashable { extension StatusSection { static let logger = Logger(subsystem: "StatusSection", category: "logic") + + struct Configuration { + weak var statusTableViewCellDelegate: StatusTableViewCellDelegate? + weak var timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate? + } - static func tableViewDiffableDataSource( - for tableView: UITableView, - timelineContext: TimelineContext, - dependency: NeedsDependency, - managedObjectContext: NSManagedObjectContext, - statusTableViewCellDelegate: StatusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate?, - threadReplyLoaderTableViewCellDelegate: ThreadReplyLoaderTableViewCellDelegate? - ) -> UITableViewDiffableDataSource { - UITableViewDiffableDataSource(tableView: tableView) { [ - weak dependency, - weak statusTableViewCellDelegate, - weak timelineMiddleLoaderTableViewCellDelegate, - weak threadReplyLoaderTableViewCellDelegate - ] tableView, indexPath, item -> UITableViewCell? in - guard let dependency = dependency else { return UITableViewCell() } - guard let statusTableViewCellDelegate = statusTableViewCellDelegate else { return UITableViewCell() } + static func diffableDataSource( + tableView: UITableView, + context: AppContext, + configuration: Configuration + ) -> UITableViewDiffableDataSource { + tableView.register(StatusTableViewCell.self, forCellReuseIdentifier: String(describing: StatusTableViewCell.self)) + tableView.register(TimelineMiddleLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineMiddleLoaderTableViewCell.self)) + tableView.register(StatusThreadRootTableViewCell.self, forCellReuseIdentifier: String(describing: StatusThreadRootTableViewCell.self)) + tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) + return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in switch item { - case .homeTimelineIndex(objectID: let objectID, let attribute): + case .feed(let record): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell - let timelineIndex = managedObjectContext.object(with: objectID) as? HomeTimelineIndex - - // note: force check optional for status - // status maybe here when delete in thread scene - guard let status = timelineIndex?.status, - let userID = timelineIndex?.userID else { - return cell - } - - // configure cell - configureStatusTableViewCell( - cell: cell, - tableView: tableView, - timelineContext: timelineContext, - dependency: dependency, - readableLayoutFrame: tableView.readableContentGuide.layoutFrame, - status: status, - requestUserID: userID, - statusItemAttribute: attribute - ) - cell.delegate = statusTableViewCellDelegate - cell.isAccessibilityElement = true - StatusSection.configureStatusAccessibilityLabel(cell: cell) - return cell - case .status(let objectID, let attribute), - .root(let objectID, let attribute), - .reply(let objectID, let attribute), - .leaf(let objectID, let attribute): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell - let activeMastodonAuthenticationBox = dependency.context.authenticationService.activeMastodonAuthenticationBox.value - let requestUserID = activeMastodonAuthenticationBox?.userID ?? "" - // configure cell - managedObjectContext.performAndWait { - let status = managedObjectContext.object(with: objectID) as! Status - StatusSection.configure( - cell: cell, + context.managedObjectContext.performAndWait { + guard let feed = record.object(in: context.managedObjectContext) else { return } + configure( + context: context, tableView: tableView, - timelineContext: timelineContext, - dependency: dependency, - readableLayoutFrame: tableView.readableContentGuide.layoutFrame, - status: status, - requestUserID: requestUserID, - statusItemAttribute: attribute + cell: cell, + viewModel: StatusTableViewCell.ViewModel(value: .feed(feed)), + configuration: configuration ) - - switch item { - case .root: - // allow select content - cell.statusView.contentMetaText.textView.isSelectable = true - // configure thread meta - StatusSection.configureThreadMeta(cell: cell, status: status) - ManagedObjectObserver.observe(object: status.reblog ?? status) - .receive(on: RunLoop.main) - .sink { _ in - // do nothing - } receiveValue: { change in - guard case .update(let object) = change.changeType, - let status = object as? Status else { return } - StatusSection.configureThreadMeta(cell: cell, status: status) - } - .store(in: &cell.disposeBag) - default: - break - } - } - cell.delegate = statusTableViewCellDelegate - switch item { - case .root: - // enable selection only for root - cell.statusView.contentMetaText.textView.isSelectable = true - cell.statusView.contentMetaText.textView.isAccessibilityElement = false - var accessibilityElements: [Any] = [] - accessibilityElements.append(cell.statusView.avatarView) - accessibilityElements.append(cell.statusView.nameMetaLabel) - accessibilityElements.append(cell.statusView.dateLabel) - // poll - accessibilityElements.append(cell.statusView.pollTableView) - accessibilityElements.append(cell.statusView.pollVoteCountLabel) - accessibilityElements.append(cell.statusView.pollCountdownLabel) - accessibilityElements.append(cell.statusView.pollVoteButton) - // TODO: a11y - accessibilityElements.append(cell.statusView.contentMetaText.textView) - accessibilityElements.append(contentsOf: cell.statusView.statusMosaicImageViewContainer.imageViews) - accessibilityElements.append(cell.statusView.playerContainerView) - accessibilityElements.append(cell.statusView.actionToolbarContainer) - accessibilityElements.append(cell.threadMetaView) - cell.accessibilityElements = accessibilityElements - default: - cell.isAccessibilityElement = true - StatusSection.configureStatusAccessibilityLabel(cell: cell) } return cell - case .leafBottomLoader: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ThreadReplyLoaderTableViewCell.self), for: indexPath) as! ThreadReplyLoaderTableViewCell - cell.delegate = threadReplyLoaderTableViewCellDelegate - return cell - case .publicMiddleLoader(let upperTimelineStatusID): + case .feedLoader(let record): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineMiddleLoaderTableViewCell.self), for: indexPath) as! TimelineMiddleLoaderTableViewCell - cell.delegate = timelineMiddleLoaderTableViewCellDelegate - timelineMiddleLoaderTableViewCellDelegate?.configure(cell: cell, upperTimelineStatusID: upperTimelineStatusID, timelineIndexobjectID: nil) + context.managedObjectContext.performAndWait { + guard let feed = record.object(in: context.managedObjectContext) else { return } + configure( + cell: cell, + feed: feed, + configuration: configuration + ) + } return cell - case .homeMiddleLoader(let upperTimelineIndexObjectID): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineMiddleLoaderTableViewCell.self), for: indexPath) as! TimelineMiddleLoaderTableViewCell - cell.delegate = timelineMiddleLoaderTableViewCellDelegate - timelineMiddleLoaderTableViewCellDelegate?.configure(cell: cell, upperTimelineStatusID: nil, timelineIndexobjectID: upperTimelineIndexObjectID) + case .status(let record): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell + context.managedObjectContext.performAndWait { + guard let status = record.object(in: context.managedObjectContext) else { return } + configure( + context: context, + tableView: tableView, + cell: cell, + viewModel: StatusTableViewCell.ViewModel(value: .status(status)), + configuration: configuration + ) + } + return cell + case .thread(let thread): + let cell = dequeueConfiguredReusableCell( + context: context, + tableView: tableView, + indexPath: indexPath, + configuration: ThreadCellRegistrationConfiguration( + thread: thread, + configuration: configuration + ) + ) return cell case .topLoader: let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell - cell.startAnimating() + cell.activityIndicatorView.startAnimating() return cell case .bottomLoader: let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell - cell.startAnimating() + cell.activityIndicatorView.startAnimating() return cell - case .emptyBottomLoader: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell - cell.stopAnimating() - cell.loadMoreLabel.text = " " - cell.loadMoreLabel.isHidden = false - return cell - case .emptyStateHeader(let attribute): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineHeaderTableViewCell.self), for: indexPath) as! TimelineHeaderTableViewCell - StatusSection.configureEmptyStateHeader(cell: cell, attribute: attribute) - return cell - case .reportStatus: - return UITableViewCell() } } + } // end func + +} + +extension StatusSection { + + struct ThreadCellRegistrationConfiguration { + let thread: StatusItem.Thread + let configuration: Configuration } + + static func dequeueConfiguredReusableCell( + context: AppContext, + tableView: UITableView, + indexPath: IndexPath, + configuration: ThreadCellRegistrationConfiguration + ) -> UITableViewCell { + let managedObjectContext = context.managedObjectContext + + switch configuration.thread { + case .root(let threadContext): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusThreadRootTableViewCell.self), for: indexPath) as! StatusThreadRootTableViewCell + managedObjectContext.performAndWait { + guard let status = threadContext.status.object(in: managedObjectContext) else { return } + StatusSection.configure( + context: context, + tableView: tableView, + cell: cell, + viewModel: StatusThreadRootTableViewCell.ViewModel(value: .status(status)), + configuration: configuration.configuration + ) + } + return cell + case .reply(let threadContext), + .leaf(let threadContext): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell + managedObjectContext.performAndWait { + guard let status = threadContext.status.object(in: managedObjectContext) else { return } + StatusSection.configure( + context: context, + tableView: tableView, + cell: cell, + viewModel: StatusTableViewCell.ViewModel(value: .status(status)), + configuration: configuration.configuration + ) + } + return cell + } + } + +} + +extension StatusSection { + + public static func setupStatusPollDataSource( + context: AppContext, + statusView: StatusView + ) { + let managedObjectContext = context.managedObjectContext + statusView.pollTableViewDiffableDataSource = UITableViewDiffableDataSource(tableView: statusView.pollTableView) { tableView, indexPath, item in + switch item { + case .option(let record): + // Fix cell reuse animation issue + let cell: PollOptionTableViewCell = { + let _cell = tableView.dequeueReusableCell(withIdentifier: String(describing: PollOptionTableViewCell.self) + "@\(indexPath.row)#\(indexPath.section)") as? PollOptionTableViewCell + _cell?.prepareForReuse() + return _cell ?? PollOptionTableViewCell() + }() + + context.authenticationService.activeMastodonAuthenticationBox + .map { $0 as UserIdentifier? } + .assign(to: \.userIdentifier, on: cell.pollOptionView.viewModel) + .store(in: &cell.disposeBag) + + managedObjectContext.performAndWait { + guard let option = record.object(in: managedObjectContext) else { + assertionFailure() + return + } + + cell.pollOptionView.configure(pollOption: option) + + // trigger update if needs + let needsUpdatePoll: Bool = { + // check first option in poll to trigger update poll only once + guard option.index == 0 else { return false } + + let poll = option.poll + guard !poll.expired else { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): poll expired. Skip update poll \(poll.id)") + return false + } + + let now = Date() + let timeIntervalSinceUpdate = now.timeIntervalSince(poll.updatedAt) + #if DEBUG + let autoRefreshTimeInterval: TimeInterval = 3 // speedup testing + #else + let autoRefreshTimeInterval: TimeInterval = 30 + #endif + + guard timeIntervalSinceUpdate > autoRefreshTimeInterval else { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): skip update poll \(poll.id) due to recent updated") + return false + } + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): update poll \(poll.id)…") + return true + }() + + if needsUpdatePoll, let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value + { + let pollRecord: ManagedObjectRecord = .init(objectID: option.poll.objectID) + Task { [weak context] in + guard let context = context else { return } + _ = try await context.apiService.poll( + poll: pollRecord, + authenticationBox: authenticationBox + ) + } + } + } // end managedObjectContext.performAndWait + return cell + } + } + var _snapshot = NSDiffableDataSourceSnapshot() + _snapshot.appendSections([.main]) + if #available(iOS 15.0, *) { + statusView.pollTableViewDiffableDataSource?.applySnapshotUsingReloadData(_snapshot) + } else { + statusView.pollTableViewDiffableDataSource?.apply(_snapshot, animatingDifferences: false) + } + } +} + +extension StatusSection { + + static func configure( + context: AppContext, + tableView: UITableView, + cell: StatusTableViewCell, + viewModel: StatusTableViewCell.ViewModel, + configuration: Configuration + ) { + setupStatusPollDataSource( + context: context, + statusView: cell.statusView + ) + + context.authenticationService.activeMastodonAuthenticationBox + .map { $0 as UserIdentifier? } + .assign(to: \.userIdentifier, on: cell.statusView.viewModel) + .store(in: &cell.disposeBag) + + cell.configure( + tableView: tableView, + viewModel: viewModel, + delegate: configuration.statusTableViewCellDelegate + ) + } + + static func configure( + context: AppContext, + tableView: UITableView, + cell: StatusThreadRootTableViewCell, + viewModel: StatusThreadRootTableViewCell.ViewModel, + configuration: Configuration + ) { + setupStatusPollDataSource( + context: context, + statusView: cell.statusView + ) + + context.authenticationService.activeMastodonAuthenticationBox + .map { $0 as UserIdentifier? } + .assign(to: \.userIdentifier, on: cell.statusView.viewModel) + .store(in: &cell.disposeBag) + + cell.configure( + tableView: tableView, + viewModel: viewModel, + delegate: configuration.statusTableViewCellDelegate + ) + } + + static func configure( + cell: TimelineMiddleLoaderTableViewCell, + feed: Feed, + configuration: Configuration + ) { + cell.configure( + feed: feed, + delegate: configuration.timelineMiddleLoaderTableViewCellDelegate + ) + } + } extension StatusSection { @@ -272,900 +393,6 @@ extension StatusSection { } -extension StatusSection { - - static func configureStatusTableViewCell( - cell: StatusTableViewCell, - tableView: UITableView, - timelineContext: TimelineContext, - dependency: NeedsDependency, - readableLayoutFrame: CGRect?, - status: Status, - requestUserID: String, - statusItemAttribute: Item.StatusAttribute - ) { - configure( - cell: cell, - tableView: tableView, - timelineContext: timelineContext, - dependency: dependency, - readableLayoutFrame: readableLayoutFrame, - status: status, - requestUserID: requestUserID, - statusItemAttribute: statusItemAttribute - ) - } - - static func configure( - cell: StatusCell, - tableView: UITableView, - timelineContext: TimelineContext, - dependency: NeedsDependency, - readableLayoutFrame: CGRect?, - status: Status, - requestUserID: String, - statusItemAttribute: Item.StatusAttribute - ) { - // safely cancel the listener when deleted - ManagedObjectObserver.observe(object: status.reblog ?? status) - .receive(on: RunLoop.main) - .sink { _ in - // do nothing - } receiveValue: { [weak cell] change in - guard let cell = cell else { return } - guard let changeType = change.changeType else { return } - if case .delete = changeType { - cell.disposeBag.removeAll() - } - } - .store(in: &cell.disposeBag) - - let content: MastodonMetaContent? = { - if let operation = dependency.context.statusPrefetchingService.statusContentOperations.removeValue(forKey: status.objectID), - let result = operation.result { - switch result { - case .success(let content): return content - case .failure: return nil - } - } else { - let document = MastodonContent( - content: (status.reblog ?? status).content, - emojis: (status.reblog ?? status).emojiMeta - ) - return try? MastodonMetaContent.convert(document: document) - } - }() - - if status.author.id == requestUserID || status.reblog?.author.id == requestUserID { - // do not filter myself - } else { - let needsFilter = StatusSection.needsFilterStatus( - content: content, - filters: AppContext.shared.statusFilterService.activeFilters.value, - timelineContext: timelineContext - ) - needsFilter - .receive(on: DispatchQueue.main) - .sink { [weak cell] needsFilter in - guard let cell = cell else { return } - cell.isFiltered = needsFilter - if needsFilter { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: filter out status: %s", ((#file as NSString).lastPathComponent), #line, #function, content?.original ?? "") - } - } - .store(in: &cell.disposeBag) - } - - // set header - StatusSection.configureStatusViewHeader(cell: cell, status: status) - // set author: name + username + avatar - StatusSection.configureStatusViewAuthor(cell: cell, status: status) - // set timestamp - let createdAt = (status.reblog ?? status).createdAt - cell.statusView.dateLabel.text = createdAt.localizedSlowedTimeAgoSinceNow - cell.statusView.dateLabel.accessibilityLabel = createdAt.timeAgoSinceNow - AppContext.shared.timestampUpdatePublisher - .receive(on: RunLoop.main) // will be paused when scrolling (on purpose) - .sink { [weak cell] _ in - guard let cell = cell else { return } - cell.statusView.dateLabel.text = createdAt.localizedSlowedTimeAgoSinceNow - cell.statusView.dateLabel.accessibilityLabel = createdAt.localizedSlowedTimeAgoSinceNow - } - .store(in: &cell.disposeBag) - // set content - StatusSection.configureStatusContent( - cell: cell, - status: status, - content: content, - readableLayoutFrame: readableLayoutFrame, - statusItemAttribute: statusItemAttribute - ) - // set content warning - StatusSection.configureContentWarningOverlay( - statusView: cell.statusView, - status: status, - tableView: tableView, - attribute: statusItemAttribute, - documentStore: dependency.context.documentStore, - animated: false - ) - // set poll - StatusSection.configurePoll( - cell: cell, - poll: (status.reblog ?? status).poll, - requestUserID: requestUserID, - updateProgressAnimated: false - ) - if let poll = (status.reblog ?? status).poll { - ManagedObjectObserver.observe(object: poll) - .sink { _ in - // do nothing - } receiveValue: { [weak cell] change in - guard let cell = cell else { return } - guard case .update(let object) = change.changeType, - let newPoll = object as? Poll else { return } - StatusSection.configurePoll( - cell: cell, - poll: newPoll, - requestUserID: requestUserID, - updateProgressAnimated: true - ) - } - .store(in: &cell.disposeBag) - } - // set action toolbar - if let cell = cell as? StatusTableViewCell { - StatusSection.configureActionToolBar( - cell: cell, - dependency: dependency, - status: status, - requestUserID: requestUserID - ) - - // separator line - cell.separatorLine.isHidden = statusItemAttribute.isSeparatorLineHidden - } - - // listen model changed - ManagedObjectObserver.observe(object: status) - .receive(on: RunLoop.main) - .sink { _ in - // do nothing - } receiveValue: { [weak cell] change in - guard let cell = cell else { return } - guard case .update(let object) = change.changeType, - let status = object as? Status, !status.isDeleted else { - return - } - // update header - StatusSection.configureStatusViewHeader(cell: cell, status: status) - } - .store(in: &cell.disposeBag) - ManagedObjectObserver.observe(object: status.reblog ?? status) - .receive(on: RunLoop.main) - .sink { _ in - // do nothing - } receiveValue: { [weak cell, weak tableView, weak dependency] change in - guard let cell = cell else { return } - guard let tableView = tableView else { return } - guard let dependency = dependency else { return } - guard case .update(let object) = change.changeType, - let status = object as? Status, !status.isDeleted else { - return - } - // update content warning overlay - StatusSection.configureContentWarningOverlay( - statusView: cell.statusView, - status: status, - tableView: tableView, - attribute: statusItemAttribute, - documentStore: dependency.context.documentStore, - animated: true - ) - // update action toolbar - if let cell = cell as? StatusTableViewCell { - StatusSection.configureActionToolBar( - cell: cell, - dependency: dependency, - status: status, - requestUserID: requestUserID - ) - } - } - .store(in: &cell.disposeBag) - } - - static func configureContentWarningOverlay( - statusView: StatusView, - status: Status, - tableView: UITableView, - attribute: Item.StatusAttribute, - documentStore: DocumentStore, - animated: Bool - ) { - statusView.contentWarningOverlayView.blurContentWarningTitleLabel.text = { - let spoilerText = (status.reblog ?? status).spoilerText ?? "" - if spoilerText.isEmpty { - return L10n.Common.Controls.Status.contentWarning - } else { - return spoilerText - } - }() - let appStartUpTimestamp = documentStore.appStartUpTimestamp - - switch (status.reblog ?? status).sensitiveType { - case .none: - statusView.revealContentWarningButton.isHidden = true - statusView.contentWarningOverlayView.isHidden = true - statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isHidden = true - statusView.updateContentWarningDisplay(isHidden: true, animated: false) - case .all: - statusView.revealContentWarningButton.isHidden = false - statusView.contentWarningOverlayView.isHidden = false - statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isHidden = true - statusView.playerContainerView.contentWarningOverlayView.isHidden = true - - if let revealedAt = status.revealedAt, revealedAt > appStartUpTimestamp { - attribute.isRevealing.value = true - statusView.updateRevealContentWarningButton(isRevealing: true) - statusView.updateContentWarningDisplay(isHidden: true, animated: animated) { [weak tableView] in - guard animated else { return } - DispatchQueue.main.async { - tableView?.beginUpdates() - tableView?.endUpdates() - } - } - } else { - attribute.isRevealing.value = false - statusView.updateRevealContentWarningButton(isRevealing: false) - statusView.updateContentWarningDisplay(isHidden: false, animated: animated) { [weak tableView] in - guard animated else { return } - DispatchQueue.main.async { - tableView?.beginUpdates() - tableView?.endUpdates() - } - } - } - case .media(let isSensitive): - if !isSensitive, documentStore.defaultRevealStatusDict[status.id] == nil { - documentStore.defaultRevealStatusDict[status.id] = true - } - statusView.revealContentWarningButton.isHidden = false - statusView.contentWarningOverlayView.isHidden = true - statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isHidden = false - statusView.playerContainerView.contentWarningOverlayView.isHidden = false - statusView.updateContentWarningDisplay(isHidden: true, animated: false) - - func updateContentOverlay() { - let needsReveal: Bool = { - if documentStore.defaultRevealStatusDict[status.id] == true { - return true - } - if let revealedAt = status.revealedAt, revealedAt > appStartUpTimestamp { - return true - } - - return false - }() - attribute.isRevealing.value = needsReveal - if needsReveal { - statusView.updateRevealContentWarningButton(isRevealing: true) - statusView.statusMosaicImageViewContainer.contentWarningOverlayView.update(isRevealing: true, style: .media) - statusView.playerContainerView.contentWarningOverlayView.update(isRevealing: true, style: .media) - } else { - statusView.updateRevealContentWarningButton(isRevealing: false) - statusView.statusMosaicImageViewContainer.contentWarningOverlayView.update(isRevealing: false, style: .media) - statusView.playerContainerView.contentWarningOverlayView.update(isRevealing: false, style: .media) - } - } - - if animated { - UIView.animate(withDuration: 0.33, delay: 0, options: .curveEaseInOut) { - updateContentOverlay() - } completion: { _ in - // do nothing - } - } else { - updateContentOverlay() - } - } - } - - static func configureThreadMeta( - cell: StatusTableViewCell, - status: Status - ) { - cell.selectionStyle = .none - - // set reblog count - let reblogCountTitle: String = { - let count = status.reblogsCount.intValue - return L10n.Plural.Count.reblog(count) - }() - cell.threadMetaView.reblogButton.setTitle(reblogCountTitle, for: .normal) - // set favorite count - let favoriteCountTitle: String = { - let count = status.favouritesCount.intValue - return L10n.Plural.Count.favorite(count) - }() - cell.threadMetaView.favoriteButton.setTitle(favoriteCountTitle, for: .normal) - // set date - cell.threadMetaView.dateLabel.text = { - let formatter = DateFormatter() - // make adaptive UI - if UIView.isZoomedMode || (reblogCountTitle.count + favoriteCountTitle.count > 20) { - formatter.dateStyle = .short - formatter.timeStyle = .short - } else { - formatter.dateStyle = .medium - formatter.timeStyle = .short - } - return formatter.string(from: status.createdAt) - }() - cell.threadMetaView.dateLabel.accessibilityLabel = DateFormatter.localizedString(from: status.createdAt, dateStyle: .medium, timeStyle: .short) - - cell.threadMetaView.isHidden = false - } - - static func configureStatusViewHeader( - cell: StatusCell, - status: Status - ) { - if status.reblog != nil { - cell.statusView.headerContainerView.isHidden = false - cell.statusView.headerIconLabel.configure(attributedString: StatusView.iconAttributedString(image: StatusView.reblogIconImage)) - let headerText: String = { - let author = status.author - let name = author.displayName.isEmpty ? author.username : author.displayName - return L10n.Common.Controls.Status.userReblogged(name) - }() - // sync set display name to avoid layout issue - do { - let mastodonContent = MastodonContent(content: headerText, emojis: status.author.emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.statusView.headerInfoLabel.configure(content: metaContent) - } catch { - cell.statusView.headerInfoLabel.reset() - } - cell.statusView.headerInfoLabel.accessibilityLabel = headerText - cell.statusView.headerInfoLabel.isAccessibilityElement = true - } else if status.inReplyToID != nil { - cell.statusView.headerContainerView.isHidden = false - cell.statusView.headerIconLabel.configure(attributedString: StatusView.iconAttributedString(image: StatusView.replyIconImage)) - let headerText: String = { - guard let replyTo = status.replyTo else { - return L10n.Common.Controls.Status.userRepliedTo("-") - } - let author = replyTo.author - let name = author.displayName.isEmpty ? author.username : author.displayName - return L10n.Common.Controls.Status.userRepliedTo(name) - }() - do { - let mastodonContent = MastodonContent(content: headerText, emojis: status.replyTo?.author.emojiMeta ?? [:]) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.statusView.headerInfoLabel.configure(content: metaContent) - } catch { - cell.statusView.headerInfoLabel.reset() - } - cell.statusView.headerInfoLabel.accessibilityLabel = headerText - cell.statusView.headerInfoLabel.isAccessibilityElement = status.replyTo != nil - } else { - cell.statusView.headerContainerView.isHidden = true - cell.statusView.headerInfoLabel.isAccessibilityElement = false - } - } - - static func configureStatusViewAuthor( - cell: StatusCell, - status: Status - ) { - // name - let author = (status.reblog ?? status).author - let nameContent = author.displayNameWithFallback - do { - let mastodonContent = MastodonContent(content: nameContent, emojis: author.emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.statusView.nameMetaLabel.configure(content: metaContent) - cell.statusView.nameMetaLabel.accessibilityLabel = metaContent.trimmed - } catch { - cell.statusView.nameMetaLabel.reset() - cell.statusView.nameMetaLabel.accessibilityLabel = "" - } - // username - cell.statusView.usernameLabel.text = "@" + author.acct - // avatar - if let reblog = status.reblog { - cell.statusView.avatarButton.isHidden = true - cell.statusView.avatarStackedContainerButton.isHidden = false - cell.statusView.avatarStackedContainerButton.topLeadingAvatarStackedImageView.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: reblog.author.avatarImageURL())) - cell.statusView.avatarStackedContainerButton.bottomTrailingAvatarStackedImageView.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: status.author.avatarImageURL())) - } else { - cell.statusView.avatarButton.isHidden = false - cell.statusView.avatarStackedContainerButton.isHidden = true - cell.statusView.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: status.author.avatarImageURL())) - } - } - - static func configureStatusContent( - cell: StatusCell, - status: Status, - content: MastodonMetaContent?, - readableLayoutFrame: CGRect?, - statusItemAttribute: Item.StatusAttribute - ) { - // set content - let paragraphStyle = cell.statusView.contentMetaText.paragraphStyle - if let language = (status.reblog ?? status).language { - let direction = Locale.characterDirection(forLanguage: language) - paragraphStyle.alignment = direction == .rightToLeft ? .right : .left - } else { - paragraphStyle.alignment = .natural - } - cell.statusView.contentMetaText.paragraphStyle = paragraphStyle - - if let content = content { - cell.statusView.contentMetaText.configure(content: content) - cell.statusView.contentMetaText.textView.accessibilityLabel = content.trimmed - } else { - cell.statusView.contentMetaText.textView.text = " " - cell.statusView.contentMetaText.textView.accessibilityLabel = "" - assertionFailure() - } - - cell.statusView.contentMetaText.textView.accessibilityTraits = [.staticText] - cell.statusView.contentMetaText.textView.accessibilityElementsHidden = false - cell.statusView.contentMetaText.textView.accessibilityLanguage = (status.reblog ?? status).language - - // set visibility - if let visibility = (status.reblog ?? status).visibilityEnum { - cell.statusView.updateVisibility(visibility: visibility) - cell.statusView.revealContentWarningButton.publisher(for: \.isHidden) - .receive(on: DispatchQueue.main) - .sink { [weak cell] isHidden in - cell?.statusView.visibilityImageView.isHidden = !isHidden - } - .store(in: &cell.disposeBag) - } else { - cell.statusView.visibilityImageView.isHidden = true - } - - // prepare media attachments - let mediaAttachments = Array((status.reblog ?? status).mediaAttachments ?? []).sorted { $0.index.compare($1.index) == .orderedAscending } - - // set image - let mosaicImageViewModel = MosaicImageViewModel(mediaAttachments: mediaAttachments) - let imageViewMaxSize: CGSize = { - let maxWidth: CGFloat = { - // use timelinePostView width as container width - // that width follows readable width and keep constant width after rotate - let containerFrame = readableLayoutFrame ?? cell.statusView.frame - var containerWidth = containerFrame.width - containerWidth -= 10 - containerWidth -= StatusView.avatarImageSize.width - return containerWidth - }() - let scale: CGFloat = { - switch mosaicImageViewModel.metas.count { - case 1: return 1.3 - default: return 0.7 - } - }() - return CGSize(width: maxWidth, height: floor(maxWidth * scale)) - }() - let mosaics: [MosaicImageViewContainer.ConfigurableMosaic] = { - if mosaicImageViewModel.metas.count == 1 { - let meta = mosaicImageViewModel.metas[0] - let mosaic = cell.statusView.statusMosaicImageViewContainer.setupImageView(aspectRatio: meta.size, maxSize: imageViewMaxSize) - return [mosaic] - } else { - let mosaics = cell.statusView.statusMosaicImageViewContainer.setupImageViews(count: mosaicImageViewModel.metas.count, maxSize: imageViewMaxSize) - return mosaics - } - }() - for (i, mosaic) in mosaics.enumerated() { - let imageView = mosaic.imageView - let blurhashOverlayImageView = mosaic.blurhashOverlayImageView - let meta = mosaicImageViewModel.metas[i] - - // set blurhash image - meta.blurhashImagePublisher() - .sink { image in - blurhashOverlayImageView.image = image - } - .store(in: &cell.disposeBag) - - // set image - let url: URL = { - if UIDevice.current.userInterfaceIdiom == .phone { - return meta.previewURL ?? meta.url - } - return meta.url - }() - - // let imageSize = CGSize( - // width: mosaic.imageViewSize.width * imageView.traitCollection.displayScale, - // height: mosaic.imageViewSize.height * imageView.traitCollection.displayScale - // ) - // let imageFilter = AspectScaledToFillSizeFilter(size: imageSize) - - imageView.af.setImage( - withURL: url, - placeholderImage: UIImage.placeholder(color: .systemFill), - imageTransition: .crossDissolve(0.2) - ) { response in - switch response.result { - case .success: - statusItemAttribute.isImageLoaded.value = true - case .failure: - break - } - } - - imageView.accessibilityLabel = meta.altText - - // setup media content overlay trigger - Publishers.CombineLatest( - statusItemAttribute.isImageLoaded, - statusItemAttribute.isRevealing - ) - .receive(on: DispatchQueue.main) // needs call immediately - .sink { [weak cell] isImageLoaded, isMediaRevealing in - guard let _ = cell else { return } - guard isImageLoaded else { - // always display blurhash image when before image loaded - blurhashOverlayImageView.alpha = 1 - blurhashOverlayImageView.isHidden = false - return - } - - // display blurhash image depends on revealing state - let animator = UIViewPropertyAnimator(duration: 0.33, curve: .easeInOut) - animator.addAnimations { - blurhashOverlayImageView.alpha = isMediaRevealing ? 0 : 1 - } - animator.startAnimation() - } - .store(in: &cell.disposeBag) - } - cell.statusView.statusMosaicImageViewContainer.isHidden = mosaicImageViewModel.metas.isEmpty - - // set audio - if let audioAttachment = mediaAttachments.filter({ $0.type == .audio }).first { - cell.statusView.audioView.isHidden = false - AudioContainerViewModel.configure(cell: cell, audioAttachment: audioAttachment, audioService: AppContext.shared.audioPlaybackService) - } else { - cell.statusView.audioView.isHidden = true - } - - // set GIF & video - let playerViewMaxSize: CGSize = { - let maxWidth: CGFloat = { - // use statusView width as container width - // that width follows readable width and keep constant width after rotate - let containerFrame = readableLayoutFrame ?? cell.statusView.frame - return containerFrame.width - }() - let scale: CGFloat = 1.3 - return CGSize(width: maxWidth, height: floor(maxWidth * scale)) - }() - - if let videoAttachment = mediaAttachments.filter({ $0.type == .gifv || $0.type == .video }).first, - let videoPlayerViewModel = AppContext.shared.videoPlaybackService.dequeueVideoPlayerViewModel(for: videoAttachment) { - var parent: UIViewController? - var playerViewControllerDelegate: AVPlayerViewControllerDelegate? = nil - switch cell { - case is StatusTableViewCell: - let statusTableViewCell = cell as! StatusTableViewCell - parent = statusTableViewCell.delegate?.parent() - playerViewControllerDelegate = statusTableViewCell.delegate?.playerViewControllerDelegate - case is NotificationStatusTableViewCell: - let notificationTableViewCell = cell as! NotificationStatusTableViewCell - parent = notificationTableViewCell.delegate?.parent() - case is ReportedStatusTableViewCell: - let reportTableViewCell = cell as! ReportedStatusTableViewCell - parent = reportTableViewCell.dependency - default: - parent = nil - assertionFailure("unknown cell") - } - let playerContainerView = cell.statusView.playerContainerView - let playerViewController = playerContainerView.setupPlayer( - aspectRatio: videoPlayerViewModel.videoSize, - maxSize: playerViewMaxSize, - parent: parent - ) - playerViewController.delegate = playerViewControllerDelegate - playerViewController.player = videoPlayerViewModel.player - playerViewController.showsPlaybackControls = videoPlayerViewModel.videoKind != .gif - playerContainerView.setMediaKind(kind: videoPlayerViewModel.videoKind) - switch videoPlayerViewModel.videoKind { - case .gif: - playerContainerView.setMediaIndicator(isHidden: false) - case .video: - playerContainerView.setMediaIndicator(isHidden: true) - } - playerContainerView.isHidden = false - - // set blurhash overlay - playerContainerView.isReadyForDisplay - .receive(on: DispatchQueue.main) - .sink { [weak playerContainerView] isReadyForDisplay in - guard let playerContainerView = playerContainerView else { return } - playerContainerView.blurhashOverlayImageView.alpha = isReadyForDisplay ? 0 : 1 - } - .store(in: &cell.disposeBag) - - if let blurhash = videoAttachment.blurhash, - let url = URL(string: videoAttachment.url) { - AppContext.shared.blurhashImageCacheService.image( - blurhash: blurhash, - size: playerContainerView.playerViewController.view.frame.size, - url: url - ) - .sink { image in - playerContainerView.blurhashOverlayImageView.image = image - } - .store(in: &cell.disposeBag) - } - - } else { - cell.statusView.playerContainerView.playerViewController.player?.pause() - cell.statusView.playerContainerView.playerViewController.player = nil - } - } - - static func configurePoll( - cell: StatusCell, - poll: Poll?, - requestUserID: String, - updateProgressAnimated: Bool - ) { - guard let poll = poll, - let managedObjectContext = poll.managedObjectContext - else { - cell.statusView.pollTableView.isHidden = true - cell.statusView.pollStatusStackView.isHidden = true - cell.statusView.pollVoteButton.isHidden = true - return - } - - cell.statusView.pollTableView.isHidden = false - cell.statusView.pollStatusStackView.isHidden = false - cell.statusView.pollVoteCountLabel.text = { - if poll.multiple { - let count = poll.votersCount?.intValue ?? 0 - return L10n.Plural.Count.voter(count) - } else { - let count = poll.votesCount.intValue - return L10n.Plural.Count.vote(count) - } - }() - if poll.expired { - cell.statusView.pollCountdownSubscription = nil - cell.statusView.pollCountdownLabel.text = L10n.Common.Controls.Status.Poll.closed - } else if let expiresAt = poll.expiresAt { - cell.statusView.pollCountdownLabel.text = expiresAt.localizedTimeLeft() - cell.statusView.pollCountdownSubscription = AppContext.shared.timestampUpdatePublisher - .sink { _ in cell.statusView.pollCountdownLabel.text = expiresAt.localizedTimeLeft() } - } else { - cell.statusView.pollCountdownSubscription = nil - cell.statusView.pollCountdownLabel.text = "-" - } - - cell.statusView.isUserInteractionEnabled = !poll.expired // make voice over touch passthroughable - cell.statusView.pollTableView.allowsSelection = !poll.expired - - let votedOptions = poll.options.filter { option in - (option.votedBy ?? Set()).map(\.id).contains(requestUserID) - } - let didVotedLocal = !votedOptions.isEmpty - let didVotedRemote = (poll.votedBy ?? Set()).map(\.id).contains(requestUserID) - cell.statusView.pollVoteButton.isEnabled = didVotedLocal - cell.statusView.pollVoteButton.isHidden = !poll.multiple ? true : (didVotedRemote || poll.expired) - - cell.statusView.pollTableViewDataSource = PollSection.tableViewDiffableDataSource( - for: cell.statusView.pollTableView, - managedObjectContext: managedObjectContext - ) - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - - let pollItems = poll.options - .sorted(by: { $0.index.intValue < $1.index.intValue }) - .map { option -> PollItem in - let attribute: PollItem.Attribute = { - let selectState: PollItem.Attribute.SelectState = { - // check didVotedRemote later to make the local change possible - if !votedOptions.isEmpty { - return votedOptions.contains(option) ? .on : .off - } else if poll.expired { - return .none - } else if didVotedRemote, votedOptions.isEmpty { - return .none - } else { - return .off - } - }() - let voteState: PollItem.Attribute.VoteState = { - var needsReveal: Bool - if poll.expired { - needsReveal = true - } else if didVotedRemote { - needsReveal = true - } else { - needsReveal = false - } - guard needsReveal else { return .hidden } - let percentage: Double = { - guard poll.votesCount.intValue > 0 else { return 0.0 } - return Double(option.votesCount?.intValue ?? 0) / Double(poll.votesCount.intValue) - }() - let voted = votedOptions.isEmpty ? true : votedOptions.contains(option) - return .reveal(voted: voted, percentage: percentage, animated: updateProgressAnimated) - }() - return PollItem.Attribute(selectState: selectState, voteState: voteState) - }() - let option = PollItem.option(objectID: option.objectID, attribute: attribute) - return option - } - snapshot.appendItems(pollItems, toSection: .main) - cell.statusView.pollTableViewDataSource?.apply(snapshot, animatingDifferences: false, completion: nil) - cell.statusView.pollTableViewHeightLayoutConstraint.constant = PollOptionTableViewCell.height * CGFloat(poll.options.count) - } - - static func configureActionToolBar( - cell: StatusTableViewCell, - dependency: NeedsDependency, - status: Status, - requestUserID: String - ) { - let status = status.reblog ?? status - - // set reply - let replyCountTitle: String = { - let count = status.repliesCount?.intValue ?? 0 - return StatusSection.formattedNumberTitleForActionButton(count) - }() - cell.statusView.actionToolbarContainer.replyButton.setTitle(replyCountTitle, for: .normal) - cell.statusView.actionToolbarContainer.replyButton.accessibilityValue = status.repliesCount.flatMap { - L10n.Plural.Count.reblog($0.intValue) - } ?? nil - // set reblog - let isReblogged = status.rebloggedBy.flatMap { $0.contains(where: { $0.id == requestUserID }) } ?? false - let reblogCountTitle: String = { - let count = status.reblogsCount.intValue - return StatusSection.formattedNumberTitleForActionButton(count) - }() - cell.statusView.actionToolbarContainer.reblogButton.setTitle(reblogCountTitle, for: .normal) - cell.statusView.actionToolbarContainer.isReblogButtonHighlight = isReblogged - cell.statusView.actionToolbarContainer.reblogButton.accessibilityLabel = isReblogged ? L10n.Common.Controls.Status.Actions.unreblog : L10n.Common.Controls.Status.Actions.reblog - cell.statusView.actionToolbarContainer.reblogButton.accessibilityValue = { - guard status.reblogsCount.intValue > 0 else { return nil } - return L10n.Plural.Count.reblog(status.reblogsCount.intValue) - }() - - // disable reblog if needs (except self) - cell.statusView.actionToolbarContainer.reblogButton.isEnabled = true - if let visibility = status.visibilityEnum, status.author.id != requestUserID { - switch visibility { - case .public, .unlisted: - break - default: - cell.statusView.actionToolbarContainer.reblogButton.isEnabled = false - } - } - - // set like - let isLike = status.favouritedBy.flatMap { $0.contains(where: { $0.id == requestUserID }) } ?? false - let favoriteCountTitle: String = { - let count = status.favouritesCount.intValue - return StatusSection.formattedNumberTitleForActionButton(count) - }() - cell.statusView.actionToolbarContainer.favoriteButton.setTitle(favoriteCountTitle, for: .normal) - cell.statusView.actionToolbarContainer.isFavoriteButtonHighlight = isLike - cell.statusView.actionToolbarContainer.favoriteButton.accessibilityLabel = isLike ? L10n.Common.Controls.Status.Actions.unfavorite : L10n.Common.Controls.Status.Actions.favorite - cell.statusView.actionToolbarContainer.favoriteButton.accessibilityValue = { - guard status.favouritesCount.intValue > 0 else { return nil } - return L10n.Plural.Count.favorite(status.favouritesCount.intValue) - }() - Publishers.CombineLatest( - dependency.context.blockDomainService.blockedDomains.setFailureType(to: ManagedObjectObserver.Error.self), - ManagedObjectObserver.observe(object: status.authorForUserProvider) - ) - .receive(on: RunLoop.main) - .sink(receiveCompletion: { _ in - // do nothing - }, receiveValue: { [weak dependency, weak cell] _, change in - guard let cell = cell else { return } - guard let dependency = dependency else { return } - switch change.changeType { - case .delete: - return - case .update(_): - break - case .none: - break - } - StatusSection.setupStatusMoreButtonMenu(cell: cell, dependency: dependency, status: status) - }) - .store(in: &cell.disposeBag) - setupStatusMoreButtonMenu(cell: cell, dependency: dependency, status: status) - } - - static func configureStatusAccessibilityLabel(cell: StatusTableViewCell) { - // FIXME: - cell.accessibilityLabel = { - var accessibilityViews: [UIView?] = [] - if !cell.statusView.headerContainerView.isHidden { - accessibilityViews.append(cell.statusView.headerInfoLabel) - } - accessibilityViews.append(contentsOf: [ - cell.statusView.nameMetaLabel, - cell.statusView.dateLabel, - cell.statusView.contentMetaText.textView, - ]) - return accessibilityViews - .compactMap { $0?.accessibilityLabel } - .joined(separator: " ") - }() - cell.statusView.actionToolbarContainer.isUserInteractionEnabled = !UIAccessibility.isVoiceOverRunning - } - -} - - -extension StatusSection { - static func configureEmptyStateHeader( - cell: TimelineHeaderTableViewCell, - attribute: Item.EmptyStateHeaderAttribute - ) { - cell.timelineHeaderView.iconImageView.image = attribute.reason.iconImage - cell.timelineHeaderView.messageLabel.text = attribute.reason.message - } -} - -extension StatusSection { - private static func formattedNumberTitleForActionButton(_ number: Int?) -> String { - guard let number = number, number > 0 else { return "" } - return String(number) - } - - private static func setupStatusMoreButtonMenu( - cell: StatusTableViewCell, - dependency: NeedsDependency, - status: Status - ) { - - guard let userProvider = dependency as? UserProvider else { fatalError() } - - guard let authenticationBox = dependency.context.authenticationService.activeMastodonAuthenticationBox.value else { - return - } - let author = status.authorForUserProvider - let isMyself = authenticationBox.userID == author.id - let isInSameDomain = authenticationBox.domain == author.domainFromAcct - let isMuting = (author.mutingBy ?? Set()).map(\.id).contains(authenticationBox.userID) - let isBlocking = (author.blockingBy ?? Set()).map(\.id).contains(authenticationBox.userID) - let isDomainBlocking = dependency.context.blockDomainService.blockedDomains.value.contains(author.domainFromAcct) - cell.statusView.actionToolbarContainer.moreButton.showsMenuAsPrimaryAction = true - cell.statusView.actionToolbarContainer.moreButton.menu = UserProviderFacade.createProfileActionMenu( - for: author, - isMyself: isMyself, - isMuting: isMuting, - isBlocking: isBlocking, - isInSameDomain: isInSameDomain, - isDomainBlocking: isDomainBlocking, - provider: userProvider, - cell: cell, - sourceView: cell.statusView.actionToolbarContainer.moreButton, - barButtonItem: nil, - shareUser: nil, - shareStatus: status - ) - } -} - class StatusContentOperation: Operation { let logger = Logger(subsystem: "StatusContentOperation", category: "logic") diff --git a/Mastodon/Diffiable/User/UserItem.swift b/Mastodon/Diffiable/User/UserItem.swift index bd15f35ea..ff533d897 100644 --- a/Mastodon/Diffiable/User/UserItem.swift +++ b/Mastodon/Diffiable/User/UserItem.swift @@ -7,10 +7,10 @@ import Foundation import CoreData +import CoreDataStack enum UserItem: Hashable { - case follower(objectID: NSManagedObjectID) - case following(objectID: NSManagedObjectID) + case user(record: ManagedObjectRecord) case bottomLoader case bottomHeader(text: String) } diff --git a/Mastodon/Diffiable/User/UserSection.swift b/Mastodon/Diffiable/User/UserSection.swift index 9c7e2f212..a42110d7a 100644 --- a/Mastodon/Diffiable/User/UserSection.swift +++ b/Mastodon/Diffiable/User/UserSection.swift @@ -19,23 +19,30 @@ enum UserSection: Hashable { extension UserSection { static let logger = Logger(subsystem: "StatusSection", category: "logic") + + struct Configuration { + weak var userTableViewCellDelegate: UserTableViewCellDelegate? + } - static func tableViewDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, - managedObjectContext: NSManagedObjectContext + static func diffableDataSource( + tableView: UITableView, + context: AppContext, + configuration: Configuration ) -> UITableViewDiffableDataSource { - UITableViewDiffableDataSource(tableView: tableView) { [ - weak dependency - ] tableView, indexPath, item -> UITableViewCell? in - guard let dependency = dependency else { return UITableViewCell() } + tableView.register(UserTableViewCell.self, forCellReuseIdentifier: String(describing: UserTableViewCell.self)) + + return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in switch item { - case .follower(let objectID), - .following(let objectID): + case .user(let record): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: UserTableViewCell.self), for: indexPath) as! UserTableViewCell - managedObjectContext.performAndWait { - let user = managedObjectContext.object(with: objectID) as! MastodonUser - configure(cell: cell, user: user) + context.managedObjectContext.performAndWait { + guard let user = record.object(in: context.managedObjectContext) else { return } + configure( + tableView: tableView, + cell: cell, + viewModel: .init(value: .user(user)), + configuration: configuration + ) } return cell case .bottomLoader: @@ -55,10 +62,17 @@ extension UserSection { extension UserSection { static func configure( + tableView: UITableView, cell: UserTableViewCell, - user: MastodonUser + viewModel: UserTableViewCell.ViewModel, + configuration: Configuration ) { - cell.configure(user: user) + + cell.configure( + tableView: tableView, + viewModel: viewModel, + delegate: configuration.userTableViewCellDelegate + ) } } diff --git a/Mastodon/Extension/CoreDataStack/Attachment.swift b/Mastodon/Extension/CoreDataStack/Attachment.swift deleted file mode 100644 index e17f9bfef..000000000 --- a/Mastodon/Extension/CoreDataStack/Attachment.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// Attachment.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-2-23. -// - -import Foundation -import CoreDataStack -import MastodonSDK - -extension Attachment { - - var type: Mastodon.Entity.Attachment.AttachmentType { - return Mastodon.Entity.Attachment.AttachmentType(rawValue: typeRaw) ?? ._other(typeRaw) - } - - var meta: Mastodon.Entity.Attachment.Meta? { - let decoder = JSONDecoder() - return metaData.flatMap { try? decoder.decode(Mastodon.Entity.Attachment.Meta.self, from: $0) } - } - -} diff --git a/Mastodon/Extension/CoreDataStack/Emojis.swift b/Mastodon/Extension/CoreDataStack/Emojis.swift deleted file mode 100644 index c318e8ed9..000000000 --- a/Mastodon/Extension/CoreDataStack/Emojis.swift +++ /dev/null @@ -1,40 +0,0 @@ -// -// Emojis.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-5-7. -// - -import Foundation -import MastodonSDK -import MastodonMeta - -protocol EmojiContainer { - var emojisData: Data? { get } -} - -// FIXME: `Mastodon.Entity.Account` extension - -extension EmojiContainer { - - static func encode(emojis: [Mastodon.Entity.Emoji]) -> Data? { - return try? JSONEncoder().encode(emojis) - } - - var emojis: [Mastodon.Entity.Emoji]? { - let decoder = JSONDecoder() - return emojisData.flatMap { try? decoder.decode([Mastodon.Entity.Emoji].self, from: $0) } - } - - var emojiMeta: MastodonContent.Emojis { - let isAnimated = !UserDefaults.shared.preferredStaticEmoji - - var dict = MastodonContent.Emojis() - for emoji in emojis ?? [] { - dict[emoji.shortcode] = isAnimated ? emoji.url : emoji.staticURL - } - return dict - } - -} - diff --git a/Mastodon/Extension/CoreDataStack/Fields.swift b/Mastodon/Extension/CoreDataStack/Fields.swift deleted file mode 100644 index 5674c08b2..000000000 --- a/Mastodon/Extension/CoreDataStack/Fields.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// Fields.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-5-25. -// - -import Foundation -import MastodonSDK - -protocol FieldContainer { - var fieldsData: Data? { get } -} - -extension FieldContainer { - - static func encode(fields: [Mastodon.Entity.Field]) -> Data? { - return try? JSONEncoder().encode(fields) - } - - var fields: [Mastodon.Entity.Field]? { - let decoder = JSONDecoder() - return fieldsData.flatMap { try? decoder.decode([Mastodon.Entity.Field].self, from: $0) } - } - -} - diff --git a/Mastodon/Extension/CoreDataStack/MastodonUser+Property.swift b/Mastodon/Extension/CoreDataStack/MastodonUser+Property.swift deleted file mode 100644 index 1e4e542f8..000000000 --- a/Mastodon/Extension/CoreDataStack/MastodonUser+Property.swift +++ /dev/null @@ -1,74 +0,0 @@ -// -// MastodonUser+Property.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-7-20. -// - -import Foundation -import CoreDataStack - -extension MastodonUser { - - var displayNameWithFallback: String { - return !displayName.isEmpty ? displayName : username - } - - var acctWithDomain: String { - if !acct.contains("@") { - // Safe concat due to username cannot contains "@" - return username + "@" + domain - } else { - return acct - } - } - - var domainFromAcct: String { - if !acct.contains("@") { - return domain - } else { - let domain = acct.split(separator: "@").last - return String(domain!) - } - } - -} - -extension MastodonUser { - - public func headerImageURL() -> URL? { - return URL(string: header) - } - - public func headerImageURLWithFallback(domain: String) -> URL { - return URL(string: header) ?? URL(string: "https://\(domain)/headers/original/missing.png")! - } - - public func avatarImageURL() -> URL? { - let string = UserDefaults.shared.preferredStaticAvatar ? avatarStatic ?? avatar : avatar - return URL(string: string) - } - - public func avatarImageURLWithFallback(domain: String) -> URL { - return avatarImageURL() ?? URL(string: "https://\(domain)/avatars/original/missing.png")! - } - -} - -extension MastodonUser { - - var profileURL: URL { - if let urlString = self.url, - let url = URL(string: urlString) { - return url - } else { - return URL(string: "https://\(self.domain)/@\(username)")! - } - } - - var activityItems: [Any] { - var items: [Any] = [] - items.append(profileURL) - return items - } -} diff --git a/Mastodon/Extension/CoreDataStack/MastodonUser.swift b/Mastodon/Extension/CoreDataStack/MastodonUser.swift index f914c8649..02a983680 100644 --- a/Mastodon/Extension/CoreDataStack/MastodonUser.swift +++ b/Mastodon/Extension/CoreDataStack/MastodonUser.swift @@ -9,33 +9,67 @@ import Foundation import CoreDataStack import MastodonSDK -extension MastodonUser.Property { - init(entity: Mastodon.Entity.Account, domain: String, networkDate: Date) { - self.init( - id: entity.id, - domain: domain, - acct: entity.acct, - username: entity.username, - displayName: entity.displayName, - avatar: entity.avatar, - avatarStatic: entity.avatarStatic, - header: entity.header, - headerStatic: entity.headerStatic, - note: entity.note, - url: entity.url, - emojisData: entity.emojis.flatMap { MastodonUser.encode(emojis: $0) }, - fieldsData: entity.fields.flatMap { MastodonUser.encode(fields: $0) }, - statusesCount: entity.statusesCount, - followingCount: entity.followingCount, - followersCount: entity.followersCount, - locked: entity.locked, - bot: entity.bot, - suspended: entity.suspended, - createdAt: entity.createdAt, - networkDate: networkDate - ) +extension MastodonUser { + + public var displayNameWithFallback: String { + return !displayName.isEmpty ? displayName : username } + + public var acctWithDomain: String { + if !acct.contains("@") { + // Safe concat due to username cannot contains "@" + return username + "@" + domain + } else { + return acct + } + } + + public var domainFromAcct: String { + if !acct.contains("@") { + return domain + } else { + let domain = acct.split(separator: "@").last + return String(domain!) + } + } + } -extension MastodonUser: EmojiContainer { } -extension MastodonUser: FieldContainer { } +extension MastodonUser { + + public func headerImageURL() -> URL? { + return URL(string: header) + } + + public func headerImageURLWithFallback(domain: String) -> URL { + return URL(string: header) ?? URL(string: "https://\(domain)/headers/original/missing.png")! + } + + public func avatarImageURL() -> URL? { + let string = UserDefaults.shared.preferredStaticAvatar ? avatarStatic ?? avatar : avatar + return URL(string: string) + } + + public func avatarImageURLWithFallback(domain: String) -> URL { + return avatarImageURL() ?? URL(string: "https://\(domain)/avatars/original/missing.png")! + } + +} + +extension MastodonUser { + + public var profileURL: URL { + if let urlString = self.url, + let url = URL(string: urlString) { + return url + } else { + return URL(string: "https://\(self.domain)/@\(username)")! + } + } + + public var activityItems: [Any] { + var items: [Any] = [] + items.append(profileURL) + return items + } +} diff --git a/Mastodon/Extension/CoreDataStack/NotificationType.swift b/Mastodon/Extension/CoreDataStack/NotificationType.swift deleted file mode 100644 index d954563ab..000000000 --- a/Mastodon/Extension/CoreDataStack/NotificationType.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// NotificationType.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-7-3. -// - -import Foundation -import CoreDataStack -import MastodonSDK - -extension MastodonNotification { - var notificationType: Mastodon.Entity.Notification.NotificationType { - return Mastodon.Entity.Notification.NotificationType(rawValue: typeRaw) ?? ._other(typeRaw) - } -} diff --git a/Mastodon/Extension/CoreDataStack/Status.swift b/Mastodon/Extension/CoreDataStack/Status.swift index 1c329c852..2e0cf516a 100644 --- a/Mastodon/Extension/CoreDataStack/Status.swift +++ b/Mastodon/Extension/CoreDataStack/Status.swift @@ -9,67 +9,42 @@ import CoreDataStack import Foundation import MastodonSDK -extension Status.Property { - init(entity: Mastodon.Entity.Status, domain: String, networkDate: Date) { - self.init( - domain: domain, - id: entity.id, - uri: entity.uri, - createdAt: entity.createdAt, - content: entity.content!, - visibility: entity.visibility?.rawValue, - sensitive: entity.sensitive ?? false, - spoilerText: entity.spoilerText, - emojisData: entity.emojis.flatMap { Status.encode(emojis: $0) }, - reblogsCount: NSNumber(value: entity.reblogsCount), - favouritesCount: NSNumber(value: entity.favouritesCount), - repliesCount: entity.repliesCount.flatMap { NSNumber(value: $0) }, - url: entity.url ?? entity.uri, - inReplyToID: entity.inReplyToID, - inReplyToAccountID: entity.inReplyToAccountID, - language: entity.language, - text: entity.text, - networkDate: networkDate - ) - } -} - extension Status { enum SensitiveType { case none case all case media(isSensitive: Bool) } - + var sensitiveType: SensitiveType { let spoilerText = self.spoilerText ?? "" - + // cast .all sensitive when has spoiter text if !spoilerText.isEmpty { return .all } - - if let firstAttachment = mediaAttachments?.first { + + if let firstAttachment = attachments.first { // cast .media when has non audio media - if firstAttachment.type != .audio { + if firstAttachment.kind != .audio { return .media(isSensitive: sensitive) } else { return .none } } - + // not sensitive return .none } } -extension Status { - var authorForUserProvider: MastodonUser { - let author = (reblog ?? self).author - return author - } -} - +//extension Status { +// var authorForUserProvider: MastodonUser { +// let author = (reblog ?? self).author +// return author +// } +//} +// extension Status { var statusURL: URL { if let urlString = self.url, @@ -80,7 +55,7 @@ extension Status { return URL(string: "https://\(self.domain)/web/statuses/\(self.id)")! } } - + var activityItems: [Any] { var items: [Any] = [] items.append(self.statusURL) @@ -88,11 +63,15 @@ extension Status { } } -extension Status: EmojiContainer { } +//extension Status { +// var visibilityEnum: Mastodon.Entity.Status.Visibility? { +// return visibility.flatMap { Mastodon.Entity.Status.Visibility(rawValue: $0) } +// } +//} extension Status { - var visibilityEnum: Mastodon.Entity.Status.Visibility? { - return visibility.flatMap { Mastodon.Entity.Status.Visibility(rawValue: $0) } + var asRecord: ManagedObjectRecord { + return .init(objectID: self.objectID) } } diff --git a/Mastodon/Extension/Date.swift b/Mastodon/Extension/Date.swift index 51d70cc0d..ea4202a74 100644 --- a/Mastodon/Extension/Date.swift +++ b/Mastodon/Extension/Date.swift @@ -2,30 +2,31 @@ // Date.swift // Mastodon // -// Created by MainasuK Cirno on 2021-6-1. +// Created by MainasuK on 2022-1-12. // import Foundation -import DateToolsSwift +import MastodonAsset +import MastodonLocalization extension Date { - static let relativeTimestampFormatter: RelativeDateTimeFormatter = { + public static let relativeTimestampFormatter: RelativeDateTimeFormatter = { let formatter = RelativeDateTimeFormatter() formatter.dateTimeStyle = .numeric formatter.unitsStyle = .full return formatter }() - var localizedSlowedTimeAgoSinceNow: String { + public var localizedSlowedTimeAgoSinceNow: String { return self.localizedTimeAgo(since: Date(), isSlowed: true, isAbbreviated: true) } - var localizedTimeAgoSinceNow: String { + public var localizedTimeAgoSinceNow: String { return self.localizedTimeAgo(since: Date(), isSlowed: false, isAbbreviated: false) } - func localizedTimeAgo(since date: Date, isSlowed: Bool, isAbbreviated: Bool) -> String { + public func localizedTimeAgo(since date: Date, isSlowed: Bool, isAbbreviated: Bool) -> String { let earlierDate = date < self ? date : self let latestDate = earlierDate == date ? self : date @@ -41,54 +42,3 @@ extension Date { } } - -extension Date { - - func localizedShortTimeAgo(since date: Date) -> String { - let earlierDate = date < self ? date : self - let latestDate = earlierDate == date ? self : date - - let components = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: earlierDate, to: latestDate) - - if components.year! > 0 { - return L10n.Date.Year.Ago.abbr(components.year!) - } else if components.month! > 0 { - return L10n.Date.Month.Ago.abbr(components.month!) - } else if components.day! > 0 { - return L10n.Date.Day.Ago.abbr(components.day!) - } else if components.hour! > 0 { - return L10n.Date.Hour.Ago.abbr(components.hour!) - } else if components.minute! > 0 { - return L10n.Date.Minute.Ago.abbr(components.minute!) - } else if components.second! > 0 { - return L10n.Date.Year.Ago.abbr(components.second!) - } else { - return "" - } - } - - func localizedTimeLeft() -> String { - let date = Date() - let earlierDate = date < self ? date : self - let latestDate = earlierDate == date ? self : date - - let components = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: earlierDate, to: latestDate) - - if components.year! > 0 { - return L10n.Date.Year.left(components.year!) - } else if components.month! > 0 { - return L10n.Date.Month.left(components.month!) - } else if components.day! > 0 { - return L10n.Date.Day.left(components.day!) - } else if components.hour! > 0 { - return L10n.Date.Hour.left(components.hour!) - } else if components.minute! > 0 { - return L10n.Date.Minute.left(components.minute!) - } else if components.second! > 0 { - return L10n.Date.Year.left(components.second!) - } else { - return "" - } - } - -} diff --git a/Mastodon/Extension/FLAnimatedImageView.swift b/Mastodon/Extension/FLAnimatedImageView.swift index 1e6e62ad8..c913cd2a6 100644 --- a/Mastodon/Extension/FLAnimatedImageView.swift +++ b/Mastodon/Extension/FLAnimatedImageView.swift @@ -10,6 +10,7 @@ import Combine import Alamofire import AlamofireImage import FLAnimatedImage +import UIKit private enum FLAnimatedImageViewAssociatedKeys { static var activeAvatarRequestURL = "FLAnimatedImageViewAssociatedKeys.activeAvatarRequestURL" @@ -36,7 +37,12 @@ extension FLAnimatedImageView { } } - func setImage(url: URL?, placeholder: UIImage?, scaleToSize: CGSize?) { + func setImage( + url: URL?, + placeholder: UIImage?, + scaleToSize: CGSize?, + completion: ((UIImage?) -> Void)? = nil + ) { // cancel task activeAvatarRequestURL = nil avatarRequestCancellable?.cancel() @@ -64,17 +70,17 @@ extension FLAnimatedImageView { DispatchQueue.main.async { [weak self] in guard let self = self else { return } - if self.activeAvatarRequestURL == url { - if let animatedImage = animatedImage { - self.animatedImage = animatedImage - } else { - self.image = image - } + guard self.activeAvatarRequestURL == url else { return } + if let animatedImage = animatedImage { + self.animatedImage = animatedImage + } else { + self.image = image } + completion?(image) } } case .failure: - break + completion?(nil) } } } diff --git a/Mastodon/Extension/MastodonSDK/Mastodon+API+Subscriptions+Policy.swift b/Mastodon/Extension/MastodonSDK/Mastodon+API+Subscriptions+Policy.swift index 24bbfdace..e85c8263e 100644 --- a/Mastodon/Extension/MastodonSDK/Mastodon+API+Subscriptions+Policy.swift +++ b/Mastodon/Extension/MastodonSDK/Mastodon+API+Subscriptions+Policy.swift @@ -7,6 +7,8 @@ import Foundation import MastodonSDK +import MastodonAsset +import MastodonLocalization extension Mastodon.API.Subscriptions.Policy { var title: String { diff --git a/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Error+Detail.swift b/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Error+Detail.swift index 312e4e3f0..b3771632c 100644 --- a/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Error+Detail.swift +++ b/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Error+Detail.swift @@ -7,6 +7,8 @@ import Foundation import MastodonSDK +import MastodonAsset +import MastodonLocalization extension Mastodon.Entity.Error.Detail: LocalizedError { diff --git a/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Notification+Type.swift b/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Notification+Type.swift index 2bddd9e97..2c5a2e46e 100644 --- a/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Notification+Type.swift +++ b/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Notification+Type.swift @@ -8,6 +8,8 @@ import Foundation import MastodonSDK import UIKit +import MastodonAsset +import MastodonLocalization extension Mastodon.Entity.Notification.NotificationType { public var color: UIColor { diff --git a/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Tag.swift b/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Tag.swift index caf819b38..2d0be6965 100644 --- a/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Tag.swift +++ b/Mastodon/Extension/MastodonSDK/Mastodon+Entity+Tag.swift @@ -16,3 +16,15 @@ extension Mastodon.Entity.Tag: Hashable { return lhs.name == rhs.name } } + +extension Mastodon.Entity.Tag { + + /// the sum of recent 2 days + public var talkingPeopleCount: Int? { + return history? + .prefix(2) + .compactMap { Int($0.accounts) } + .reduce(0, +) + } + +} diff --git a/Mastodon/Extension/UITableView.swift b/Mastodon/Extension/UITableView.swift index 3d96f97cd..74bdd2ed4 100644 --- a/Mastodon/Extension/UITableView.swift +++ b/Mastodon/Extension/UITableView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization extension UITableView { diff --git a/Mastodon/Extension/UIView.swift b/Mastodon/Extension/UIView.swift index 0f43dcedb..d4814b7ec 100644 --- a/Mastodon/Extension/UIView.swift +++ b/Mastodon/Extension/UIView.swift @@ -68,8 +68,3 @@ extension UIView { } } -extension UIView { - static var isZoomedMode: Bool { - return UIScreen.main.scale != UIScreen.main.nativeScale - } -} diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift deleted file mode 100644 index 410d81a24..000000000 --- a/Mastodon/Generated/Assets.swift +++ /dev/null @@ -1,272 +0,0 @@ -// swiftlint:disable all -// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen - -#if os(macOS) - import AppKit -#elseif os(iOS) - import UIKit -#elseif os(tvOS) || os(watchOS) - import UIKit -#endif - -// Deprecated typealiases -@available(*, deprecated, renamed: "ColorAsset.Color", message: "This typealias will be removed in SwiftGen 7.0") -internal typealias AssetColorTypeAlias = ColorAsset.Color -@available(*, deprecated, renamed: "ImageAsset.Image", message: "This typealias will be removed in SwiftGen 7.0") -internal typealias AssetImageTypeAlias = ImageAsset.Image - -// swiftlint:disable superfluous_disable_command file_length implicit_return - -// MARK: - Asset Catalogs - -// swiftlint:disable identifier_name line_length nesting type_body_length type_name -internal enum Asset { - internal static let accentColor = ColorAsset(name: "AccentColor") - internal enum Asset { - internal static let email = ImageAsset(name: "Asset/email") - internal static let friends = ImageAsset(name: "Asset/friends") - internal static let mastodonTextLogo = ImageAsset(name: "Asset/mastodon.text.logo") - } - internal enum Circles { - internal static let plusCircleFill = ImageAsset(name: "Circles/plus.circle.fill") - internal static let plusCircle = ImageAsset(name: "Circles/plus.circle") - } - internal enum Colors { - internal enum Border { - internal static let composePoll = ColorAsset(name: "Colors/Border/compose.poll") - internal static let searchCard = ColorAsset(name: "Colors/Border/searchCard") - internal static let status = ColorAsset(name: "Colors/Border/status") - } - internal enum Button { - internal static let actionToolbar = ColorAsset(name: "Colors/Button/action.toolbar") - internal static let disabled = ColorAsset(name: "Colors/Button/disabled") - internal static let inactive = ColorAsset(name: "Colors/Button/inactive") - } - internal enum Icon { - internal static let plus = ColorAsset(name: "Colors/Icon/plus") - } - internal enum Label { - internal static let primary = ColorAsset(name: "Colors/Label/primary") - internal static let primaryReverse = ColorAsset(name: "Colors/Label/primary.reverse") - internal static let secondary = ColorAsset(name: "Colors/Label/secondary") - internal static let tertiary = ColorAsset(name: "Colors/Label/tertiary") - } - internal enum Notification { - internal static let favourite = ColorAsset(name: "Colors/Notification/favourite") - internal static let mention = ColorAsset(name: "Colors/Notification/mention") - internal static let reblog = ColorAsset(name: "Colors/Notification/reblog") - } - internal enum Poll { - internal static let disabled = ColorAsset(name: "Colors/Poll/disabled") - } - internal enum Shadow { - internal static let searchCard = ColorAsset(name: "Colors/Shadow/SearchCard") - } - internal enum Slider { - internal static let track = ColorAsset(name: "Colors/Slider/track") - } - internal enum TextField { - internal static let background = ColorAsset(name: "Colors/TextField/background") - internal static let invalid = ColorAsset(name: "Colors/TextField/invalid") - internal static let valid = ColorAsset(name: "Colors/TextField/valid") - } - internal static let alertYellow = ColorAsset(name: "Colors/alert.yellow") - internal static let badgeBackground = ColorAsset(name: "Colors/badge.background") - internal static let battleshipGrey = ColorAsset(name: "Colors/battleshipGrey") - internal static let brandBlue = ColorAsset(name: "Colors/brand.blue") - internal static let brandBlueDarken20 = ColorAsset(name: "Colors/brand.blue.darken.20") - internal static let dangerBorder = ColorAsset(name: "Colors/danger.border") - internal static let danger = ColorAsset(name: "Colors/danger") - internal static let disabled = ColorAsset(name: "Colors/disabled") - internal static let inactive = ColorAsset(name: "Colors/inactive") - internal static let mediaTypeIndicotor = ColorAsset(name: "Colors/media.type.indicotor") - internal static let successGreen = ColorAsset(name: "Colors/success.green") - internal static let systemOrange = ColorAsset(name: "Colors/system.orange") - } - internal enum Connectivity { - internal static let photoFillSplit = ImageAsset(name: "Connectivity/photo.fill.split") - } - internal enum Human { - internal static let faceSmilingAdaptive = ImageAsset(name: "Human/face.smiling.adaptive") - } - internal enum Scene { - internal enum Onboarding { - internal static let avatarPlaceholder = ImageAsset(name: "Scene/Onboarding/avatar.placeholder") - internal static let navigationBackButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background") - internal static let navigationBackButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background.highlighted") - internal static let navigationNextButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background") - internal static let navigationNextButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background.highlighted") - internal static let onboardingBackground = ColorAsset(name: "Scene/Onboarding/onboarding.background") - internal static let searchBarBackground = ColorAsset(name: "Scene/Onboarding/search.bar.background") - internal static let textFieldBackground = ColorAsset(name: "Scene/Onboarding/textField.background") - } - internal enum Profile { - internal enum Banner { - internal static let bioEditBackgroundGray = ColorAsset(name: "Scene/Profile/Banner/bio.edit.background.gray") - internal static let nameEditBackgroundGray = ColorAsset(name: "Scene/Profile/Banner/name.edit.background.gray") - internal static let usernameGray = ColorAsset(name: "Scene/Profile/Banner/username.gray") - } - } - internal enum Sidebar { - internal static let logo = ImageAsset(name: "Scene/Sidebar/logo") - } - internal enum Welcome { - internal enum Illustration { - internal static let backgroundCyan = ColorAsset(name: "Scene/Welcome/illustration/background.cyan") - internal static let cloudBaseExtend = ImageAsset(name: "Scene/Welcome/illustration/cloud.base.extend") - internal static let cloudBase = ImageAsset(name: "Scene/Welcome/illustration/cloud.base") - internal static let elephantOnAirplaneWithContrail = ImageAsset(name: "Scene/Welcome/illustration/elephant.on.airplane.with.contrail") - internal static let elephantThreeOnGrassExtend = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass.extend") - internal static let elephantThreeOnGrass = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass") - internal static let elephantThreeOnGrassWithTreeThree = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three") - internal static let elephantThreeOnGrassWithTreeTwo = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two") - } - internal static let mastodonLogoBlack = ImageAsset(name: "Scene/Welcome/mastodon.logo.black") - internal static let mastodonLogoBlackLarge = ImageAsset(name: "Scene/Welcome/mastodon.logo.black.large") - internal static let mastodonLogo = ImageAsset(name: "Scene/Welcome/mastodon.logo") - internal static let mastodonLogoLarge = ImageAsset(name: "Scene/Welcome/mastodon.logo.large") - internal static let signInButtonBackground = ColorAsset(name: "Scene/Welcome/sign.in.button.background") - } - } - internal enum Settings { - internal static let blackAuto = ImageAsset(name: "Settings/black.auto") - internal static let black = ImageAsset(name: "Settings/black") - internal static let darkAuto = ImageAsset(name: "Settings/dark.auto") - internal static let dark = ImageAsset(name: "Settings/dark") - internal static let light = ImageAsset(name: "Settings/light") - } - internal enum Theme { - internal enum Mastodon { - internal static let composeToolbarBackground = ColorAsset(name: "Theme/Mastodon/compose.toolbar.background") - internal static let contentWarningOverlayBackground = ColorAsset(name: "Theme/Mastodon/content.warning.overlay.background") - internal static let navigationBarBackground = ColorAsset(name: "Theme/Mastodon/navigation.bar.background") - internal static let profileFieldCollectionViewBackground = ColorAsset(name: "Theme/Mastodon/profile.field.collection.view.background") - internal static let secondaryGroupedSystemBackground = ColorAsset(name: "Theme/Mastodon/secondary.grouped.system.background") - internal static let secondarySystemBackground = ColorAsset(name: "Theme/Mastodon/secondary.system.background") - internal static let sidebarBackground = ColorAsset(name: "Theme/Mastodon/sidebar.background") - internal static let systemBackground = ColorAsset(name: "Theme/Mastodon/system.background") - internal static let systemElevatedBackground = ColorAsset(name: "Theme/Mastodon/system.elevated.background") - internal static let systemGroupedBackground = ColorAsset(name: "Theme/Mastodon/system.grouped.background") - internal static let tabBarBackground = ColorAsset(name: "Theme/Mastodon/tab.bar.background") - internal static let tableViewCellBackground = ColorAsset(name: "Theme/Mastodon/table.view.cell.background") - internal static let tableViewCellSelectionBackground = ColorAsset(name: "Theme/Mastodon/table.view.cell.selection.background") - internal static let tertiarySystemBackground = ColorAsset(name: "Theme/Mastodon/tertiary.system.background") - internal static let tertiarySystemGroupedBackground = ColorAsset(name: "Theme/Mastodon/tertiary.system.grouped.background") - internal static let notificationStatusBorderColor = ColorAsset(name: "Theme/Mastodon/notification.status.border.color") - internal static let separator = ColorAsset(name: "Theme/Mastodon/separator") - internal static let tabBarItemInactiveIconColor = ColorAsset(name: "Theme/Mastodon/tab.bar.item.inactive.icon.color") - } - internal enum System { - internal static let composeToolbarBackground = ColorAsset(name: "Theme/system/compose.toolbar.background") - internal static let contentWarningOverlayBackground = ColorAsset(name: "Theme/system/content.warning.overlay.background") - internal static let navigationBarBackground = ColorAsset(name: "Theme/system/navigation.bar.background") - internal static let profileFieldCollectionViewBackground = ColorAsset(name: "Theme/system/profile.field.collection.view.background") - internal static let secondaryGroupedSystemBackground = ColorAsset(name: "Theme/system/secondary.grouped.system.background") - internal static let secondarySystemBackground = ColorAsset(name: "Theme/system/secondary.system.background") - internal static let sidebarBackground = ColorAsset(name: "Theme/system/sidebar.background") - internal static let systemBackground = ColorAsset(name: "Theme/system/system.background") - internal static let systemElevatedBackground = ColorAsset(name: "Theme/system/system.elevated.background") - internal static let systemGroupedBackground = ColorAsset(name: "Theme/system/system.grouped.background") - internal static let tabBarBackground = ColorAsset(name: "Theme/system/tab.bar.background") - internal static let tableViewCellBackground = ColorAsset(name: "Theme/system/table.view.cell.background") - internal static let tableViewCellSelectionBackground = ColorAsset(name: "Theme/system/table.view.cell.selection.background") - internal static let tertiarySystemBackground = ColorAsset(name: "Theme/system/tertiary.system.background") - internal static let tertiarySystemGroupedBackground = ColorAsset(name: "Theme/system/tertiary.system.grouped.background") - internal static let notificationStatusBorderColor = ColorAsset(name: "Theme/system/notification.status.border.color") - internal static let separator = ColorAsset(name: "Theme/system/separator") - internal static let tabBarItemInactiveIconColor = ColorAsset(name: "Theme/system/tab.bar.item.inactive.icon.color") - } - } -} -// swiftlint:enable identifier_name line_length nesting type_body_length type_name - -// MARK: - Implementation Details - -internal final class ColorAsset { - internal fileprivate(set) var name: String - - #if os(macOS) - internal typealias Color = NSColor - #elseif os(iOS) || os(tvOS) || os(watchOS) - internal typealias Color = UIColor - #endif - - @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) - internal private(set) lazy var color: Color = { - guard let color = Color(asset: self) else { - fatalError("Unable to load color asset named \(name).") - } - return color - }() - - fileprivate init(name: String) { - self.name = name - } -} - -internal extension ColorAsset.Color { - @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) - convenience init?(asset: ColorAsset) { - let bundle = BundleToken.bundle - #if os(iOS) || os(tvOS) - self.init(named: asset.name, in: bundle, compatibleWith: nil) - #elseif os(macOS) - self.init(named: NSColor.Name(asset.name), bundle: bundle) - #elseif os(watchOS) - self.init(named: asset.name) - #endif - } -} - -internal struct ImageAsset { - internal fileprivate(set) var name: String - - #if os(macOS) - internal typealias Image = NSImage - #elseif os(iOS) || os(tvOS) || os(watchOS) - internal typealias Image = UIImage - #endif - - internal var image: Image { - let bundle = BundleToken.bundle - #if os(iOS) || os(tvOS) - let image = Image(named: name, in: bundle, compatibleWith: nil) - #elseif os(macOS) - let name = NSImage.Name(self.name) - let image = (bundle == .main) ? NSImage(named: name) : bundle.image(forResource: name) - #elseif os(watchOS) - let image = Image(named: name) - #endif - guard let result = image else { - fatalError("Unable to load image asset named \(name).") - } - return result - } -} - -internal extension ImageAsset.Image { - @available(macOS, deprecated, - message: "This initializer is unsafe on macOS, please use the ImageAsset.image property") - convenience init?(asset: ImageAsset) { - #if os(iOS) || os(tvOS) - let bundle = BundleToken.bundle - self.init(named: asset.name, in: bundle, compatibleWith: nil) - #elseif os(macOS) - self.init(named: NSImage.Name(asset.name)) - #elseif os(watchOS) - self.init(named: asset.name) - #endif - } -} - -// swiftlint:disable convenience_type -private final class BundleToken { - static let bundle: Bundle = { - #if SWIFT_PACKAGE - return Bundle.module - #else - return Bundle(for: BundleToken.self) - #endif - }() -} -// swiftlint:enable convenience_type diff --git a/Mastodon/Generated/AutoGenerateProtocolDelegate.generated.swift b/Mastodon/Generated/AutoGenerateProtocolDelegate.generated.swift new file mode 100644 index 000000000..a771d3462 --- /dev/null +++ b/Mastodon/Generated/AutoGenerateProtocolDelegate.generated.swift @@ -0,0 +1,12 @@ +// Generated using Sourcery 1.6.1 — https://github.com/krzysztofzablocki/Sourcery +// DO NOT EDIT +// sourcery:inline:NotificationTableViewCellDelegate.AutoGenerateProtocolDelegate +notificationView(_ notificationView: NotificationView, menuButton button: UIButton, didSelectAction action: NotificationView.AuthorMenuAction, menuContext: NotificationView.AuthorMenuContext) +notificationView(_ notificationView: NotificationView, statusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) +notificationView(_ notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) +notificationView(_ notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) +notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) +notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) +// sourcery:end + + diff --git a/Mastodon/Generated/AutoGenerateProtocolRelayDelegate.generated.swift b/Mastodon/Generated/AutoGenerateProtocolRelayDelegate.generated.swift new file mode 100644 index 000000000..ae7cb25a6 --- /dev/null +++ b/Mastodon/Generated/AutoGenerateProtocolRelayDelegate.generated.swift @@ -0,0 +1,30 @@ +// Generated using Sourcery 1.6.1 — https://github.com/krzysztofzablocki/Sourcery +// DO NOT EDIT +// sourcery:inline:NotificationViewContainerTableViewCell.AutoGenerateProtocolRelayDelegate +func notificationView(_ notificationView: NotificationView, menuButton button: UIButton, didSelectAction action: NotificationView.AuthorMenuAction, menuContext: NotificationView.AuthorMenuContext) { + notificationView(notificationView, menuButton: button, didSelectAction: action, menuContext: menuContext) +} + +func notificationView(_ notificationView: NotificationView, statusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) { + notificationView(notificationView, statusView: statusView, authorAvatarButtonDidPressed: button) +} + +func notificationView(_ notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { + notificationView(notificationView, statusView: statusView, metaText: metaText, didSelectMeta: meta) +} + +func notificationView(_ notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) { + notificationView(notificationView, statusView: statusView, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action) +} + +func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) { + notificationView(notificationView, quoteStatusView: quoteStatusView, authorAvatarButtonDidPressed: button) +} + +func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { + notificationView(notificationView, quoteStatusView: quoteStatusView, metaText: metaText, didSelectMeta: meta) +} + +// sourcery:end + + diff --git a/Mastodon/Generated/AutoGenerateTableViewDelegate.generated.swift b/Mastodon/Generated/AutoGenerateTableViewDelegate.generated.swift new file mode 100644 index 000000000..b8c092f6a --- /dev/null +++ b/Mastodon/Generated/AutoGenerateTableViewDelegate.generated.swift @@ -0,0 +1,20 @@ +// Generated using Sourcery 1.6.1 — https://github.com/krzysztofzablocki/Sourcery +// DO NOT EDIT + + +// sourcery:inline:FollowingListViewController.AutoGenerateTableViewDelegate + +// Generated using Sourcery +// DO NOT EDIT +func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + aspectTableView(tableView, didSelectRowAt: indexPath) +} + +// sourcery:end + + + + + + + diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift deleted file mode 100644 index ebf9869c4..000000000 --- a/Mastodon/Generated/Strings.swift +++ /dev/null @@ -1,1167 +0,0 @@ -// swiftlint:disable all -// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen - -import Foundation - -// swiftlint:disable superfluous_disable_command file_length implicit_return - -// MARK: - Strings - -// swiftlint:disable explicit_type_interface function_parameter_count identifier_name line_length -// swiftlint:disable nesting type_body_length type_name vertical_whitespace_opening_braces -internal enum L10n { - - internal enum Common { - internal enum Alerts { - internal enum BlockDomain { - /// Block Domain - internal static let blockEntireDomain = L10n.tr("Localizable", "Common.Alerts.BlockDomain.BlockEntireDomain") - /// Are you really, really sure you want to block the entire %@? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed. - internal static func title(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Alerts.BlockDomain.Title", String(describing: p1)) - } - } - internal enum CleanCache { - /// Successfully cleaned %@ cache. - internal static func message(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Alerts.CleanCache.Message", String(describing: p1)) - } - /// Clean Cache - internal static let title = L10n.tr("Localizable", "Common.Alerts.CleanCache.Title") - } - internal enum Common { - /// Please try again. - internal static let pleaseTryAgain = L10n.tr("Localizable", "Common.Alerts.Common.PleaseTryAgain") - /// Please try again later. - internal static let pleaseTryAgainLater = L10n.tr("Localizable", "Common.Alerts.Common.PleaseTryAgainLater") - } - internal enum DeletePost { - /// Delete - internal static let delete = L10n.tr("Localizable", "Common.Alerts.DeletePost.Delete") - /// Are you sure you want to delete this post? - internal static let title = L10n.tr("Localizable", "Common.Alerts.DeletePost.Title") - } - internal enum DiscardPostContent { - /// Confirm to discard composed post content. - internal static let message = L10n.tr("Localizable", "Common.Alerts.DiscardPostContent.Message") - /// Discard Draft - internal static let title = L10n.tr("Localizable", "Common.Alerts.DiscardPostContent.Title") - } - internal enum EditProfileFailure { - /// Cannot edit profile. Please try again. - internal static let message = L10n.tr("Localizable", "Common.Alerts.EditProfileFailure.Message") - /// Edit Profile Error - internal static let title = L10n.tr("Localizable", "Common.Alerts.EditProfileFailure.Title") - } - internal enum PublishPostFailure { - /// Failed to publish the post.\nPlease check your internet connection. - internal static let message = L10n.tr("Localizable", "Common.Alerts.PublishPostFailure.Message") - /// Publish Failure - internal static let title = L10n.tr("Localizable", "Common.Alerts.PublishPostFailure.Title") - internal enum AttachmentsMessage { - /// Cannot attach more than one video. - internal static let moreThanOneVideo = L10n.tr("Localizable", "Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo") - /// Cannot attach a video to a post that already contains images. - internal static let videoAttachWithPhoto = L10n.tr("Localizable", "Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto") - } - } - internal enum SavePhotoFailure { - /// Please enable the photo library access permission to save the photo. - internal static let message = L10n.tr("Localizable", "Common.Alerts.SavePhotoFailure.Message") - /// Save Photo Failure - internal static let title = L10n.tr("Localizable", "Common.Alerts.SavePhotoFailure.Title") - } - internal enum ServerError { - /// Server Error - internal static let title = L10n.tr("Localizable", "Common.Alerts.ServerError.Title") - } - internal enum SignOut { - /// Sign Out - internal static let confirm = L10n.tr("Localizable", "Common.Alerts.SignOut.Confirm") - /// Are you sure you want to sign out? - internal static let message = L10n.tr("Localizable", "Common.Alerts.SignOut.Message") - /// Sign Out - internal static let title = L10n.tr("Localizable", "Common.Alerts.SignOut.Title") - } - internal enum SignUpFailure { - /// Sign Up Failure - internal static let title = L10n.tr("Localizable", "Common.Alerts.SignUpFailure.Title") - } - internal enum VoteFailure { - /// The poll has ended - internal static let pollEnded = L10n.tr("Localizable", "Common.Alerts.VoteFailure.PollEnded") - /// Vote Failure - internal static let title = L10n.tr("Localizable", "Common.Alerts.VoteFailure.Title") - } - } - internal enum Controls { - internal enum Actions { - /// Add - internal static let add = L10n.tr("Localizable", "Common.Controls.Actions.Add") - /// Back - internal static let back = L10n.tr("Localizable", "Common.Controls.Actions.Back") - /// Block %@ - internal static func blockDomain(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Actions.BlockDomain", String(describing: p1)) - } - /// Cancel - internal static let cancel = L10n.tr("Localizable", "Common.Controls.Actions.Cancel") - /// Compose - internal static let compose = L10n.tr("Localizable", "Common.Controls.Actions.Compose") - /// Confirm - internal static let confirm = L10n.tr("Localizable", "Common.Controls.Actions.Confirm") - /// Continue - internal static let `continue` = L10n.tr("Localizable", "Common.Controls.Actions.Continue") - /// Copy Photo - internal static let copyPhoto = L10n.tr("Localizable", "Common.Controls.Actions.CopyPhoto") - /// Delete - internal static let delete = L10n.tr("Localizable", "Common.Controls.Actions.Delete") - /// Discard - internal static let discard = L10n.tr("Localizable", "Common.Controls.Actions.Discard") - /// Done - internal static let done = L10n.tr("Localizable", "Common.Controls.Actions.Done") - /// Edit - internal static let edit = L10n.tr("Localizable", "Common.Controls.Actions.Edit") - /// Find people to follow - internal static let findPeople = L10n.tr("Localizable", "Common.Controls.Actions.FindPeople") - /// Manually search instead - internal static let manuallySearch = L10n.tr("Localizable", "Common.Controls.Actions.ManuallySearch") - /// Next - internal static let next = L10n.tr("Localizable", "Common.Controls.Actions.Next") - /// OK - internal static let ok = L10n.tr("Localizable", "Common.Controls.Actions.Ok") - /// Open - internal static let `open` = L10n.tr("Localizable", "Common.Controls.Actions.Open") - /// Open in Safari - internal static let openInSafari = L10n.tr("Localizable", "Common.Controls.Actions.OpenInSafari") - /// Preview - internal static let preview = L10n.tr("Localizable", "Common.Controls.Actions.Preview") - /// Previous - internal static let previous = L10n.tr("Localizable", "Common.Controls.Actions.Previous") - /// Remove - internal static let remove = L10n.tr("Localizable", "Common.Controls.Actions.Remove") - /// Reply - internal static let reply = L10n.tr("Localizable", "Common.Controls.Actions.Reply") - /// Report %@ - internal static func reportUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Actions.ReportUser", String(describing: p1)) - } - /// Save - internal static let save = L10n.tr("Localizable", "Common.Controls.Actions.Save") - /// Save Photo - internal static let savePhoto = L10n.tr("Localizable", "Common.Controls.Actions.SavePhoto") - /// See More - internal static let seeMore = L10n.tr("Localizable", "Common.Controls.Actions.SeeMore") - /// Settings - internal static let settings = L10n.tr("Localizable", "Common.Controls.Actions.Settings") - /// Share - internal static let share = L10n.tr("Localizable", "Common.Controls.Actions.Share") - /// Share Post - internal static let sharePost = L10n.tr("Localizable", "Common.Controls.Actions.SharePost") - /// Share %@ - internal static func shareUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Actions.ShareUser", String(describing: p1)) - } - /// Sign In - internal static let signIn = L10n.tr("Localizable", "Common.Controls.Actions.SignIn") - /// Sign Up - internal static let signUp = L10n.tr("Localizable", "Common.Controls.Actions.SignUp") - /// Skip - internal static let skip = L10n.tr("Localizable", "Common.Controls.Actions.Skip") - /// Take Photo - internal static let takePhoto = L10n.tr("Localizable", "Common.Controls.Actions.TakePhoto") - /// Try Again - internal static let tryAgain = L10n.tr("Localizable", "Common.Controls.Actions.TryAgain") - /// Unblock %@ - internal static func unblockDomain(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Actions.UnblockDomain", String(describing: p1)) - } - } - internal enum Friendship { - /// Block - internal static let block = L10n.tr("Localizable", "Common.Controls.Friendship.Block") - /// Block %@ - internal static func blockDomain(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Friendship.BlockDomain", String(describing: p1)) - } - /// Blocked - internal static let blocked = L10n.tr("Localizable", "Common.Controls.Friendship.Blocked") - /// Block %@ - internal static func blockUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Friendship.BlockUser", String(describing: p1)) - } - /// Edit Info - internal static let editInfo = L10n.tr("Localizable", "Common.Controls.Friendship.EditInfo") - /// Follow - internal static let follow = L10n.tr("Localizable", "Common.Controls.Friendship.Follow") - /// Following - internal static let following = L10n.tr("Localizable", "Common.Controls.Friendship.Following") - /// Mute - internal static let mute = L10n.tr("Localizable", "Common.Controls.Friendship.Mute") - /// Muted - internal static let muted = L10n.tr("Localizable", "Common.Controls.Friendship.Muted") - /// Mute %@ - internal static func muteUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Friendship.MuteUser", String(describing: p1)) - } - /// Pending - internal static let pending = L10n.tr("Localizable", "Common.Controls.Friendship.Pending") - /// Request - internal static let request = L10n.tr("Localizable", "Common.Controls.Friendship.Request") - /// Unblock - internal static let unblock = L10n.tr("Localizable", "Common.Controls.Friendship.Unblock") - /// Unblock %@ - internal static func unblockUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Friendship.UnblockUser", String(describing: p1)) - } - /// Unmute - internal static let unmute = L10n.tr("Localizable", "Common.Controls.Friendship.Unmute") - /// Unmute %@ - internal static func unmuteUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Friendship.UnmuteUser", String(describing: p1)) - } - } - internal enum Keyboard { - internal enum Common { - /// Compose New Post - internal static let composeNewPost = L10n.tr("Localizable", "Common.Controls.Keyboard.Common.ComposeNewPost") - /// Open Settings - internal static let openSettings = L10n.tr("Localizable", "Common.Controls.Keyboard.Common.OpenSettings") - /// Show Favorites - internal static let showFavorites = L10n.tr("Localizable", "Common.Controls.Keyboard.Common.ShowFavorites") - /// Switch to %@ - internal static func switchToTab(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Keyboard.Common.SwitchToTab", String(describing: p1)) - } - } - internal enum SegmentedControl { - /// Next Section - internal static let nextSection = L10n.tr("Localizable", "Common.Controls.Keyboard.SegmentedControl.NextSection") - /// Previous Section - internal static let previousSection = L10n.tr("Localizable", "Common.Controls.Keyboard.SegmentedControl.PreviousSection") - } - internal enum Timeline { - /// Next Post - internal static let nextStatus = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.NextStatus") - /// Open Author's Profile - internal static let openAuthorProfile = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.OpenAuthorProfile") - /// Open Reblogger's Profile - internal static let openRebloggerProfile = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.OpenRebloggerProfile") - /// Open Post - internal static let openStatus = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.OpenStatus") - /// Preview Image - internal static let previewImage = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.PreviewImage") - /// Previous Post - internal static let previousStatus = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.PreviousStatus") - /// Reply to Post - internal static let replyStatus = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.ReplyStatus") - /// Toggle Content Warning - internal static let toggleContentWarning = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.ToggleContentWarning") - /// Toggle Favorite on Post - internal static let toggleFavorite = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.ToggleFavorite") - /// Toggle Reblog on Post - internal static let toggleReblog = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.ToggleReblog") - } - } - internal enum Status { - /// Content Warning - internal static let contentWarning = L10n.tr("Localizable", "Common.Controls.Status.ContentWarning") - /// Tap anywhere to reveal - internal static let mediaContentWarning = L10n.tr("Localizable", "Common.Controls.Status.MediaContentWarning") - /// Show Post - internal static let showPost = L10n.tr("Localizable", "Common.Controls.Status.ShowPost") - /// Show user profile - internal static let showUserProfile = L10n.tr("Localizable", "Common.Controls.Status.ShowUserProfile") - /// %@ reblogged - internal static func userReblogged(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Status.UserReblogged", String(describing: p1)) - } - /// Replied to %@ - internal static func userRepliedTo(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Status.UserRepliedTo", String(describing: p1)) - } - internal enum Actions { - /// Favorite - internal static let favorite = L10n.tr("Localizable", "Common.Controls.Status.Actions.Favorite") - /// Menu - internal static let menu = L10n.tr("Localizable", "Common.Controls.Status.Actions.Menu") - /// Reblog - internal static let reblog = L10n.tr("Localizable", "Common.Controls.Status.Actions.Reblog") - /// Reply - internal static let reply = L10n.tr("Localizable", "Common.Controls.Status.Actions.Reply") - /// Unfavorite - internal static let unfavorite = L10n.tr("Localizable", "Common.Controls.Status.Actions.Unfavorite") - /// Undo reblog - internal static let unreblog = L10n.tr("Localizable", "Common.Controls.Status.Actions.Unreblog") - } - internal enum Poll { - /// Closed - internal static let closed = L10n.tr("Localizable", "Common.Controls.Status.Poll.Closed") - /// Vote - internal static let vote = L10n.tr("Localizable", "Common.Controls.Status.Poll.Vote") - } - internal enum Tag { - /// Email - internal static let email = L10n.tr("Localizable", "Common.Controls.Status.Tag.Email") - /// Emoji - internal static let emoji = L10n.tr("Localizable", "Common.Controls.Status.Tag.Emoji") - /// Hashtag - internal static let hashtag = L10n.tr("Localizable", "Common.Controls.Status.Tag.Hashtag") - /// Link - internal static let link = L10n.tr("Localizable", "Common.Controls.Status.Tag.Link") - /// Mention - internal static let mention = L10n.tr("Localizable", "Common.Controls.Status.Tag.Mention") - /// URL - internal static let url = L10n.tr("Localizable", "Common.Controls.Status.Tag.Url") - } - } - internal enum Tabs { - /// Home - internal static let home = L10n.tr("Localizable", "Common.Controls.Tabs.Home") - /// Notification - internal static let notification = L10n.tr("Localizable", "Common.Controls.Tabs.Notification") - /// Profile - internal static let profile = L10n.tr("Localizable", "Common.Controls.Tabs.Profile") - /// Search - internal static let search = L10n.tr("Localizable", "Common.Controls.Tabs.Search") - } - internal enum Timeline { - /// Filtered - internal static let filtered = L10n.tr("Localizable", "Common.Controls.Timeline.Filtered") - internal enum Header { - /// You can’t view this user’s profile\nuntil they unblock you. - internal static let blockedWarning = L10n.tr("Localizable", "Common.Controls.Timeline.Header.BlockedWarning") - /// You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them. - internal static let blockingWarning = L10n.tr("Localizable", "Common.Controls.Timeline.Header.BlockingWarning") - /// No Post Found - internal static let noStatusFound = L10n.tr("Localizable", "Common.Controls.Timeline.Header.NoStatusFound") - /// This user has been suspended. - internal static let suspendedWarning = L10n.tr("Localizable", "Common.Controls.Timeline.Header.SuspendedWarning") - /// You can’t view %@’s profile\nuntil they unblock you. - internal static func userBlockedWarning(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Timeline.Header.UserBlockedWarning", String(describing: p1)) - } - /// You can’t view %@’s profile\nuntil you unblock them.\nYour profile looks like this to them. - internal static func userBlockingWarning(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Timeline.Header.UserBlockingWarning", String(describing: p1)) - } - /// %@’s account has been suspended. - internal static func userSuspendedWarning(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Timeline.Header.UserSuspendedWarning", String(describing: p1)) - } - } - internal enum Loader { - /// Loading missing posts... - internal static let loadingMissingPosts = L10n.tr("Localizable", "Common.Controls.Timeline.Loader.LoadingMissingPosts") - /// Load missing posts - internal static let loadMissingPosts = L10n.tr("Localizable", "Common.Controls.Timeline.Loader.LoadMissingPosts") - /// Show more replies - internal static let showMoreReplies = L10n.tr("Localizable", "Common.Controls.Timeline.Loader.ShowMoreReplies") - } - internal enum Timestamp { - /// Now - internal static let now = L10n.tr("Localizable", "Common.Controls.Timeline.Timestamp.Now") - } - } - } - } - - internal enum Scene { - internal enum AccountList { - /// Add Account - internal static let addAccount = L10n.tr("Localizable", "Scene.AccountList.AddAccount") - /// Dismiss Account Switcher - internal static let dismissAccountSwitcher = L10n.tr("Localizable", "Scene.AccountList.DismissAccountSwitcher") - /// Current selected profile: %@. Double tap then hold to show account switcher - internal static func tabBarHint(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.AccountList.TabBarHint", String(describing: p1)) - } - } - internal enum Compose { - /// Publish - internal static let composeAction = L10n.tr("Localizable", "Scene.Compose.ComposeAction") - /// Type or paste what’s on your mind - internal static let contentInputPlaceholder = L10n.tr("Localizable", "Scene.Compose.ContentInputPlaceholder") - /// replying to %@ - internal static func replyingToUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Compose.ReplyingToUser", String(describing: p1)) - } - internal enum Accessibility { - /// Add Attachment - internal static let appendAttachment = L10n.tr("Localizable", "Scene.Compose.Accessibility.AppendAttachment") - /// Add Poll - internal static let appendPoll = L10n.tr("Localizable", "Scene.Compose.Accessibility.AppendPoll") - /// Custom Emoji Picker - internal static let customEmojiPicker = L10n.tr("Localizable", "Scene.Compose.Accessibility.CustomEmojiPicker") - /// Disable Content Warning - internal static let disableContentWarning = L10n.tr("Localizable", "Scene.Compose.Accessibility.DisableContentWarning") - /// Enable Content Warning - internal static let enableContentWarning = L10n.tr("Localizable", "Scene.Compose.Accessibility.EnableContentWarning") - /// Post Visibility Menu - internal static let postVisibilityMenu = L10n.tr("Localizable", "Scene.Compose.Accessibility.PostVisibilityMenu") - /// Remove Poll - internal static let removePoll = L10n.tr("Localizable", "Scene.Compose.Accessibility.RemovePoll") - } - internal enum Attachment { - /// This %@ is broken and can’t be\nuploaded to Mastodon. - internal static func attachmentBroken(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Compose.Attachment.AttachmentBroken", String(describing: p1)) - } - /// Describe the photo for the visually-impaired... - internal static let descriptionPhoto = L10n.tr("Localizable", "Scene.Compose.Attachment.DescriptionPhoto") - /// Describe the video for the visually-impaired... - internal static let descriptionVideo = L10n.tr("Localizable", "Scene.Compose.Attachment.DescriptionVideo") - /// photo - internal static let photo = L10n.tr("Localizable", "Scene.Compose.Attachment.Photo") - /// video - internal static let video = L10n.tr("Localizable", "Scene.Compose.Attachment.Video") - } - internal enum AutoComplete { - /// Space to add - internal static let spaceToAdd = L10n.tr("Localizable", "Scene.Compose.AutoComplete.SpaceToAdd") - } - internal enum ContentWarning { - /// Write an accurate warning here... - internal static let placeholder = L10n.tr("Localizable", "Scene.Compose.ContentWarning.Placeholder") - } - internal enum Keyboard { - /// Add Attachment - %@ - internal static func appendAttachmentEntry(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Compose.Keyboard.AppendAttachmentEntry", String(describing: p1)) - } - /// Discard Post - internal static let discardPost = L10n.tr("Localizable", "Scene.Compose.Keyboard.DiscardPost") - /// Publish Post - internal static let publishPost = L10n.tr("Localizable", "Scene.Compose.Keyboard.PublishPost") - /// Select Visibility - %@ - internal static func selectVisibilityEntry(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Compose.Keyboard.SelectVisibilityEntry", String(describing: p1)) - } - /// Toggle Content Warning - internal static let toggleContentWarning = L10n.tr("Localizable", "Scene.Compose.Keyboard.ToggleContentWarning") - /// Toggle Poll - internal static let togglePoll = L10n.tr("Localizable", "Scene.Compose.Keyboard.TogglePoll") - } - internal enum MediaSelection { - /// Browse - internal static let browse = L10n.tr("Localizable", "Scene.Compose.MediaSelection.Browse") - /// Take Photo - internal static let camera = L10n.tr("Localizable", "Scene.Compose.MediaSelection.Camera") - /// Photo Library - internal static let photoLibrary = L10n.tr("Localizable", "Scene.Compose.MediaSelection.PhotoLibrary") - } - internal enum Poll { - /// Duration: %@ - internal static func durationTime(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Compose.Poll.DurationTime", String(describing: p1)) - } - /// 1 Day - internal static let oneDay = L10n.tr("Localizable", "Scene.Compose.Poll.OneDay") - /// 1 Hour - internal static let oneHour = L10n.tr("Localizable", "Scene.Compose.Poll.OneHour") - /// Option %ld - internal static func optionNumber(_ p1: Int) -> String { - return L10n.tr("Localizable", "Scene.Compose.Poll.OptionNumber", p1) - } - /// 7 Days - internal static let sevenDays = L10n.tr("Localizable", "Scene.Compose.Poll.SevenDays") - /// 6 Hours - internal static let sixHours = L10n.tr("Localizable", "Scene.Compose.Poll.SixHours") - /// 30 minutes - internal static let thirtyMinutes = L10n.tr("Localizable", "Scene.Compose.Poll.ThirtyMinutes") - /// 3 Days - internal static let threeDays = L10n.tr("Localizable", "Scene.Compose.Poll.ThreeDays") - } - internal enum Title { - /// New Post - internal static let newPost = L10n.tr("Localizable", "Scene.Compose.Title.NewPost") - /// New Reply - internal static let newReply = L10n.tr("Localizable", "Scene.Compose.Title.NewReply") - } - internal enum Visibility { - /// Only people I mention - internal static let direct = L10n.tr("Localizable", "Scene.Compose.Visibility.Direct") - /// Followers only - internal static let `private` = L10n.tr("Localizable", "Scene.Compose.Visibility.Private") - /// Public - internal static let `public` = L10n.tr("Localizable", "Scene.Compose.Visibility.Public") - /// Unlisted - internal static let unlisted = L10n.tr("Localizable", "Scene.Compose.Visibility.Unlisted") - } - } - internal enum ConfirmEmail { - /// We just sent an email to %@,\ntap the link to confirm your account. - internal static func subtitle(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.ConfirmEmail.Subtitle", String(describing: p1)) - } - /// One last thing. - internal static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.Title") - internal enum Button { - /// I never got an email - internal static let dontReceiveEmail = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.DontReceiveEmail") - /// Open Email App - internal static let openEmailApp = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.OpenEmailApp") - } - internal enum DontReceiveEmail { - /// Check if your email address is correct as well as your junk folder if you haven’t. - internal static let description = L10n.tr("Localizable", "Scene.ConfirmEmail.DontReceiveEmail.Description") - /// Resend Email - internal static let resendEmail = L10n.tr("Localizable", "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail") - /// Check your email - internal static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.DontReceiveEmail.Title") - } - internal enum OpenEmailApp { - /// We just sent you an email. Check your junk folder if you haven’t. - internal static let description = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.Description") - /// Mail - internal static let mail = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.Mail") - /// Open Email Client - internal static let openEmailClient = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient") - /// Check your inbox. - internal static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.Title") - } - } - internal enum Favorite { - /// Your Favorites - internal static let title = L10n.tr("Localizable", "Scene.Favorite.Title") - } - internal enum Follower { - /// Followers from other servers are not displayed. - internal static let footer = L10n.tr("Localizable", "Scene.Follower.Footer") - } - internal enum Following { - /// Follows from other servers are not displayed. - internal static let footer = L10n.tr("Localizable", "Scene.Following.Footer") - } - internal enum HomeTimeline { - /// Home - internal static let title = L10n.tr("Localizable", "Scene.HomeTimeline.Title") - internal enum NavigationBarState { - /// See new posts - internal static let newPosts = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.NewPosts") - /// Offline - internal static let offline = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Offline") - /// Published! - internal static let published = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Published") - /// Publishing post... - internal static let publishing = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Publishing") - } - } - internal enum Notification { - /// %@ favorited your post - internal static func userFavoritedYourPost(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserFavorited Your Post", String(describing: p1)) - } - /// %@ followed you - internal static func userFollowedYou(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserFollowedYou", String(describing: p1)) - } - /// %@ mentioned you - internal static func userMentionedYou(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserMentionedYou", String(describing: p1)) - } - /// %@ reblogged your post - internal static func userRebloggedYourPost(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserRebloggedYourPost", String(describing: p1)) - } - /// %@ requested to follow you - internal static func userRequestedToFollowYou(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserRequestedToFollowYou", String(describing: p1)) - } - /// %@ Your poll has ended - internal static func userYourPollHasEnded(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserYourPollHasEnded", String(describing: p1)) - } - internal enum Keyobard { - /// Show Everything - internal static let showEverything = L10n.tr("Localizable", "Scene.Notification.Keyobard.ShowEverything") - /// Show Mentions - internal static let showMentions = L10n.tr("Localizable", "Scene.Notification.Keyobard.ShowMentions") - } - internal enum Title { - /// Everything - internal static let everything = L10n.tr("Localizable", "Scene.Notification.Title.Everything") - /// Mentions - internal static let mentions = L10n.tr("Localizable", "Scene.Notification.Title.Mentions") - } - } - internal enum Preview { - internal enum Keyboard { - /// Close Preview - internal static let closePreview = L10n.tr("Localizable", "Scene.Preview.Keyboard.ClosePreview") - /// Show Next - internal static let showNext = L10n.tr("Localizable", "Scene.Preview.Keyboard.ShowNext") - /// Show Previous - internal static let showPrevious = L10n.tr("Localizable", "Scene.Preview.Keyboard.ShowPrevious") - } - } - internal enum Profile { - internal enum Dashboard { - /// followers - internal static let followers = L10n.tr("Localizable", "Scene.Profile.Dashboard.Followers") - /// following - internal static let following = L10n.tr("Localizable", "Scene.Profile.Dashboard.Following") - /// posts - internal static let posts = L10n.tr("Localizable", "Scene.Profile.Dashboard.Posts") - } - internal enum Fields { - /// Add Row - internal static let addRow = L10n.tr("Localizable", "Scene.Profile.Fields.AddRow") - internal enum Placeholder { - /// Content - internal static let content = L10n.tr("Localizable", "Scene.Profile.Fields.Placeholder.Content") - /// Label - internal static let label = L10n.tr("Localizable", "Scene.Profile.Fields.Placeholder.Label") - } - } - internal enum RelationshipActionAlert { - internal enum ConfirmUnblockUsre { - /// Confirm to unblock %@ - internal static func message(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message", String(describing: p1)) - } - /// Unblock Account - internal static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title") - } - internal enum ConfirmUnmuteUser { - /// Confirm to unmute %@ - internal static func message(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message", String(describing: p1)) - } - /// Unmute Account - internal static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title") - } - } - internal enum SegmentedControl { - /// Media - internal static let media = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Media") - /// Posts - internal static let posts = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Posts") - /// Replies - internal static let replies = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Replies") - } - } - internal enum Register { - /// Tell us about you. - internal static let title = L10n.tr("Localizable", "Scene.Register.Title") - internal enum Error { - internal enum Item { - /// Agreement - internal static let agreement = L10n.tr("Localizable", "Scene.Register.Error.Item.Agreement") - /// Email - internal static let email = L10n.tr("Localizable", "Scene.Register.Error.Item.Email") - /// Locale - internal static let locale = L10n.tr("Localizable", "Scene.Register.Error.Item.Locale") - /// Password - internal static let password = L10n.tr("Localizable", "Scene.Register.Error.Item.Password") - /// Reason - internal static let reason = L10n.tr("Localizable", "Scene.Register.Error.Item.Reason") - /// Username - internal static let username = L10n.tr("Localizable", "Scene.Register.Error.Item.Username") - } - internal enum Reason { - /// %@ must be accepted - internal static func accepted(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.Accepted", String(describing: p1)) - } - /// %@ is required - internal static func blank(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.Blank", String(describing: p1)) - } - /// %@ contains a disallowed email provider - internal static func blocked(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.Blocked", String(describing: p1)) - } - /// %@ is not a supported value - internal static func inclusion(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.Inclusion", String(describing: p1)) - } - /// %@ is invalid - internal static func invalid(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.Invalid", String(describing: p1)) - } - /// %@ is a reserved keyword - internal static func reserved(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.Reserved", String(describing: p1)) - } - /// %@ is already in use - internal static func taken(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.Taken", String(describing: p1)) - } - /// %@ is too long - internal static func tooLong(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.TooLong", String(describing: p1)) - } - /// %@ is too short - internal static func tooShort(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.TooShort", String(describing: p1)) - } - /// %@ does not seem to exist - internal static func unreachable(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Register.Error.Reason.Unreachable", String(describing: p1)) - } - } - internal enum Special { - /// This is not a valid email address - internal static let emailInvalid = L10n.tr("Localizable", "Scene.Register.Error.Special.EmailInvalid") - /// Password is too short (must be at least 8 characters) - internal static let passwordTooShort = L10n.tr("Localizable", "Scene.Register.Error.Special.PasswordTooShort") - /// Username must only contain alphanumeric characters and underscores - internal static let usernameInvalid = L10n.tr("Localizable", "Scene.Register.Error.Special.UsernameInvalid") - /// Username is too long (can’t be longer than 30 characters) - internal static let usernameTooLong = L10n.tr("Localizable", "Scene.Register.Error.Special.UsernameTooLong") - } - } - internal enum Input { - internal enum Avatar { - /// Delete - internal static let delete = L10n.tr("Localizable", "Scene.Register.Input.Avatar.Delete") - } - internal enum DisplayName { - /// display name - internal static let placeholder = L10n.tr("Localizable", "Scene.Register.Input.DisplayName.Placeholder") - } - internal enum Email { - /// email - internal static let placeholder = L10n.tr("Localizable", "Scene.Register.Input.Email.Placeholder") - } - internal enum Invite { - /// Why do you want to join? - internal static let registrationUserInviteRequest = L10n.tr("Localizable", "Scene.Register.Input.Invite.RegistrationUserInviteRequest") - } - internal enum Password { - /// Your password needs at least eight characters - internal static let hint = L10n.tr("Localizable", "Scene.Register.Input.Password.Hint") - /// password - internal static let placeholder = L10n.tr("Localizable", "Scene.Register.Input.Password.Placeholder") - } - internal enum Username { - /// This username is taken. - internal static let duplicatePrompt = L10n.tr("Localizable", "Scene.Register.Input.Username.DuplicatePrompt") - /// username - internal static let placeholder = L10n.tr("Localizable", "Scene.Register.Input.Username.Placeholder") - } - } - } - internal enum Report { - /// Are there any other posts you’d like to add to the report? - internal static let content1 = L10n.tr("Localizable", "Scene.Report.Content1") - /// Is there anything the moderators should know about this report? - internal static let content2 = L10n.tr("Localizable", "Scene.Report.Content2") - /// Send Report - internal static let send = L10n.tr("Localizable", "Scene.Report.Send") - /// Send without comment - internal static let skipToSend = L10n.tr("Localizable", "Scene.Report.SkipToSend") - /// Step 1 of 2 - internal static let step1 = L10n.tr("Localizable", "Scene.Report.Step1") - /// Step 2 of 2 - internal static let step2 = L10n.tr("Localizable", "Scene.Report.Step2") - /// Type or paste additional comments - internal static let textPlaceholder = L10n.tr("Localizable", "Scene.Report.TextPlaceholder") - /// Report %@ - internal static func title(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Report.Title", String(describing: p1)) - } - } - internal enum Search { - /// Search - internal static let title = L10n.tr("Localizable", "Scene.Search.Title") - internal enum Recommend { - /// See All - internal static let buttonText = L10n.tr("Localizable", "Scene.Search.Recommend.ButtonText") - internal enum Accounts { - /// You may like to follow these accounts - internal static let description = L10n.tr("Localizable", "Scene.Search.Recommend.Accounts.Description") - /// Follow - internal static let follow = L10n.tr("Localizable", "Scene.Search.Recommend.Accounts.Follow") - /// Accounts you might like - internal static let title = L10n.tr("Localizable", "Scene.Search.Recommend.Accounts.Title") - } - internal enum HashTag { - /// Hashtags that are getting quite a bit of attention - internal static let description = L10n.tr("Localizable", "Scene.Search.Recommend.HashTag.Description") - /// %@ people are talking - internal static func peopleTalking(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Search.Recommend.HashTag.PeopleTalking", String(describing: p1)) - } - /// Trending on Mastodon - internal static let title = L10n.tr("Localizable", "Scene.Search.Recommend.HashTag.Title") - } - } - internal enum SearchBar { - /// Cancel - internal static let cancel = L10n.tr("Localizable", "Scene.Search.SearchBar.Cancel") - /// Search hashtags and users - internal static let placeholder = L10n.tr("Localizable", "Scene.Search.SearchBar.Placeholder") - } - internal enum Searching { - /// Clear - internal static let clear = L10n.tr("Localizable", "Scene.Search.Searching.Clear") - /// Recent searches - internal static let recentSearch = L10n.tr("Localizable", "Scene.Search.Searching.RecentSearch") - internal enum EmptyState { - /// No results - internal static let noResults = L10n.tr("Localizable", "Scene.Search.Searching.EmptyState.NoResults") - } - internal enum Segment { - /// All - internal static let all = L10n.tr("Localizable", "Scene.Search.Searching.Segment.All") - /// Hashtags - internal static let hashtags = L10n.tr("Localizable", "Scene.Search.Searching.Segment.Hashtags") - /// People - internal static let people = L10n.tr("Localizable", "Scene.Search.Searching.Segment.People") - /// Posts - internal static let posts = L10n.tr("Localizable", "Scene.Search.Searching.Segment.Posts") - } - } - } - internal enum ServerPicker { - /// Pick a server,\nany server. - internal static let title = L10n.tr("Localizable", "Scene.ServerPicker.Title") - internal enum Button { - /// See Less - internal static let seeLess = L10n.tr("Localizable", "Scene.ServerPicker.Button.SeeLess") - /// See More - internal static let seeMore = L10n.tr("Localizable", "Scene.ServerPicker.Button.SeeMore") - internal enum Category { - /// academia - internal static let academia = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Academia") - /// activism - internal static let activism = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Activism") - /// All - internal static let all = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.All") - /// Category: All - internal static let allAccessiblityDescription = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.AllAccessiblityDescription") - /// art - internal static let art = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Art") - /// food - internal static let food = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Food") - /// furry - internal static let furry = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Furry") - /// games - internal static let games = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Games") - /// general - internal static let general = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.General") - /// journalism - internal static let journalism = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Journalism") - /// lgbt - internal static let lgbt = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Lgbt") - /// music - internal static let music = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Music") - /// regional - internal static let regional = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Regional") - /// tech - internal static let tech = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Tech") - } - } - internal enum EmptyState { - /// Something went wrong while loading the data. Check your internet connection. - internal static let badNetwork = L10n.tr("Localizable", "Scene.ServerPicker.EmptyState.BadNetwork") - /// Finding available servers... - internal static let findingServers = L10n.tr("Localizable", "Scene.ServerPicker.EmptyState.FindingServers") - /// No results - internal static let noResults = L10n.tr("Localizable", "Scene.ServerPicker.EmptyState.NoResults") - } - internal enum Input { - /// Find a server or join your own... - internal static let placeholder = L10n.tr("Localizable", "Scene.ServerPicker.Input.Placeholder") - } - internal enum Label { - /// CATEGORY - internal static let category = L10n.tr("Localizable", "Scene.ServerPicker.Label.Category") - /// LANGUAGE - internal static let language = L10n.tr("Localizable", "Scene.ServerPicker.Label.Language") - /// USERS - internal static let users = L10n.tr("Localizable", "Scene.ServerPicker.Label.Users") - } - } - internal enum ServerRules { - /// privacy policy - internal static let privacyPolicy = L10n.tr("Localizable", "Scene.ServerRules.PrivacyPolicy") - /// By continuing, you’re subject to the terms of service and privacy policy for %@. - internal static func prompt(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.ServerRules.Prompt", String(describing: p1)) - } - /// These rules are set by the admins of %@. - internal static func subtitle(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.ServerRules.Subtitle", String(describing: p1)) - } - /// terms of service - internal static let termsOfService = L10n.tr("Localizable", "Scene.ServerRules.TermsOfService") - /// Some ground rules. - internal static let title = L10n.tr("Localizable", "Scene.ServerRules.Title") - internal enum Button { - /// I Agree - internal static let confirm = L10n.tr("Localizable", "Scene.ServerRules.Button.Confirm") - } - } - internal enum Settings { - /// Settings - internal static let title = L10n.tr("Localizable", "Scene.Settings.Title") - internal enum Footer { - /// Mastodon is open source software. You can report issues on GitHub at %@ (%@) - internal static func mastodonDescription(_ p1: Any, _ p2: Any) -> String { - return L10n.tr("Localizable", "Scene.Settings.Footer.MastodonDescription", String(describing: p1), String(describing: p2)) - } - } - internal enum Keyboard { - /// Close Settings Window - internal static let closeSettingsWindow = L10n.tr("Localizable", "Scene.Settings.Keyboard.CloseSettingsWindow") - } - internal enum Section { - internal enum Appearance { - /// Automatic - internal static let automatic = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Automatic") - /// Always Dark - internal static let dark = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Dark") - /// Always Light - internal static let light = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Light") - /// Appearance - internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Title") - } - internal enum BoringZone { - /// Account Settings - internal static let accountSettings = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.AccountSettings") - /// Privacy Policy - internal static let privacy = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Privacy") - /// Terms of Service - internal static let terms = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Terms") - /// The Boring Zone - internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Title") - } - internal enum Notifications { - /// Reblogs my post - internal static let boosts = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Boosts") - /// Favorites my post - internal static let favorites = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Favorites") - /// Follows me - internal static let follows = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Follows") - /// Mentions me - internal static let mentions = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Mentions") - /// Notifications - internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Title") - internal enum Trigger { - /// anyone - internal static let anyone = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Anyone") - /// anyone I follow - internal static let follow = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Follow") - /// a follower - internal static let follower = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Follower") - /// no one - internal static let noone = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Noone") - /// Notify me when - internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Title") - } - } - internal enum Preference { - /// Disable animated avatars - internal static let disableAvatarAnimation = L10n.tr("Localizable", "Scene.Settings.Section.Preference.DisableAvatarAnimation") - /// Disable animated emojis - internal static let disableEmojiAnimation = L10n.tr("Localizable", "Scene.Settings.Section.Preference.DisableEmojiAnimation") - /// Preferences - internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.Preference.Title") - /// True black dark mode - internal static let trueBlackDarkMode = L10n.tr("Localizable", "Scene.Settings.Section.Preference.TrueBlackDarkMode") - /// Use default browser to open links - internal static let usingDefaultBrowser = L10n.tr("Localizable", "Scene.Settings.Section.Preference.UsingDefaultBrowser") - } - internal enum SpicyZone { - /// Clear Media Cache - internal static let clear = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Clear") - /// Sign Out - internal static let signout = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Signout") - /// The Spicy Zone - internal static let title = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Title") - } - } - } - internal enum SuggestionAccount { - /// When you follow someone, you’ll see their posts in your home feed. - internal static let followExplain = L10n.tr("Localizable", "Scene.SuggestionAccount.FollowExplain") - /// Find People to Follow - internal static let title = L10n.tr("Localizable", "Scene.SuggestionAccount.Title") - } - internal enum Thread { - /// Post - internal static let backTitle = L10n.tr("Localizable", "Scene.Thread.BackTitle") - /// Post from %@ - internal static func title(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Thread.Title", String(describing: p1)) - } - } - internal enum Welcome { - /// Social networking\nback in your hands. - internal static let slogan = L10n.tr("Localizable", "Scene.Welcome.Slogan") - } - internal enum Wizard { - /// Double tap to dismiss this wizard - internal static let accessibilityHint = L10n.tr("Localizable", "Scene.Wizard.AccessibilityHint") - /// Switch between multiple accounts by holding the profile button. - internal static let multipleAccountSwitchIntroDescription = L10n.tr("Localizable", "Scene.Wizard.MultipleAccountSwitchIntroDescription") - /// New in Mastodon - internal static let newInMastodon = L10n.tr("Localizable", "Scene.Wizard.NewInMastodon") - } - } - - internal enum A11y { - internal enum Plural { - internal enum Count { - /// Plural format key: "Input limit exceeds %#@character_count@" - internal static func inputLimitExceeds(_ p1: Int) -> String { - return L10n.tr("Localizable", "a11y.plural.count.input_limit_exceeds", p1) - } - /// Plural format key: "Input limit remains %#@character_count@" - internal static func inputLimitRemains(_ p1: Int) -> String { - return L10n.tr("Localizable", "a11y.plural.count.input_limit_remains", p1) - } - internal enum Unread { - /// Plural format key: "%#@notification_count_unread_notification@" - internal static func notification(_ p1: Int) -> String { - return L10n.tr("Localizable", "a11y.plural.count.unread.notification", p1) - } - } - } - } - } - - internal enum Date { - internal enum Day { - /// Plural format key: "%#@count_day_left@" - internal static func `left`(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.day.left", p1) - } - internal enum Ago { - /// Plural format key: "%#@count_day_ago_abbr@" - internal static func abbr(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.day.ago.abbr", p1) - } - } - } - internal enum Hour { - /// Plural format key: "%#@count_hour_left@" - internal static func `left`(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.hour.left", p1) - } - internal enum Ago { - /// Plural format key: "%#@count_hour_ago_abbr@" - internal static func abbr(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.hour.ago.abbr", p1) - } - } - } - internal enum Minute { - /// Plural format key: "%#@count_minute_left@" - internal static func `left`(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.minute.left", p1) - } - internal enum Ago { - /// Plural format key: "%#@count_minute_ago_abbr@" - internal static func abbr(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.minute.ago.abbr", p1) - } - } - } - internal enum Month { - /// Plural format key: "%#@count_month_left@" - internal static func `left`(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.month.left", p1) - } - internal enum Ago { - /// Plural format key: "%#@count_month_ago_abbr@" - internal static func abbr(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.month.ago.abbr", p1) - } - } - } - internal enum Second { - /// Plural format key: "%#@count_second_left@" - internal static func `left`(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.second.left", p1) - } - internal enum Ago { - /// Plural format key: "%#@count_second_ago_abbr@" - internal static func abbr(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.second.ago.abbr", p1) - } - } - } - internal enum Year { - /// Plural format key: "%#@count_year_left@" - internal static func `left`(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.year.left", p1) - } - internal enum Ago { - /// Plural format key: "%#@count_year_ago_abbr@" - internal static func abbr(_ p1: Int) -> String { - return L10n.tr("Localizable", "date.year.ago.abbr", p1) - } - } - } - } - - internal enum Plural { - /// Plural format key: "%#@count_people_talking@" - internal static func peopleTalking(_ p1: Int) -> String { - return L10n.tr("Localizable", "plural.people_talking", p1) - } - internal enum Count { - /// Plural format key: "%#@favorite_count@" - internal static func favorite(_ p1: Int) -> String { - return L10n.tr("Localizable", "plural.count.favorite", p1) - } - /// Plural format key: "%#@count_follower@" - internal static func follower(_ p1: Int) -> String { - return L10n.tr("Localizable", "plural.count.follower", p1) - } - /// Plural format key: "%#@count_following@" - internal static func following(_ p1: Int) -> String { - return L10n.tr("Localizable", "plural.count.following", p1) - } - /// Plural format key: "%#@post_count@" - internal static func post(_ p1: Int) -> String { - return L10n.tr("Localizable", "plural.count.post", p1) - } - /// Plural format key: "%#@reblog_count@" - internal static func reblog(_ p1: Int) -> String { - return L10n.tr("Localizable", "plural.count.reblog", p1) - } - /// Plural format key: "%#@vote_count@" - internal static func vote(_ p1: Int) -> String { - return L10n.tr("Localizable", "plural.count.vote", p1) - } - /// Plural format key: "%#@voter_count@" - internal static func voter(_ p1: Int) -> String { - return L10n.tr("Localizable", "plural.count.voter", p1) - } - internal enum MetricFormatted { - /// Plural format key: "%@ %#@post_count@" - internal static func post(_ p1: Any, _ p2: Int) -> String { - return L10n.tr("Localizable", "plural.count.metric_formatted.post", String(describing: p1), p2) - } - } - } - } -} -// swiftlint:enable explicit_type_interface function_parameter_count identifier_name line_length -// swiftlint:enable nesting type_body_length type_name vertical_whitespace_opening_braces - -// MARK: - Implementation Details - -extension L10n { - private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String { - let format = BundleToken.bundle.localizedString(forKey: key, value: nil, table: table) - return String(format: format, locale: Locale.current, arguments: args) - } -} - -// swiftlint:disable convenience_type -private final class BundleToken { - static let bundle: Bundle = { - #if SWIFT_PACKAGE - return Bundle.module - #else - return Bundle(for: BundleToken.self) - #endif - }() -} -// swiftlint:enable convenience_type diff --git a/Mastodon/Helper/MastodonAuthenticationBox.swift b/Mastodon/Helper/MastodonAuthenticationBox.swift index 71ba50b5e..31c9649c6 100644 --- a/Mastodon/Helper/MastodonAuthenticationBox.swift +++ b/Mastodon/Helper/MastodonAuthenticationBox.swift @@ -6,10 +6,12 @@ // import Foundation -import MastodonSDK import CoreDataStack +import MastodonSDK +import MastodonUI -struct MastodonAuthenticationBox { +struct MastodonAuthenticationBox: UserIdentifier { + let authenticationRecord: ManagedObjectRecord let domain: String let userID: MastodonUser.ID let appAuthorization: Mastodon.API.OAuth.Authorization diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 8f0b7211c..693c5c6da 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 90 + 91 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/Mastodon/Persistence/Extension/MastodonEmoji.swift b/Mastodon/Persistence/Extension/MastodonEmoji.swift new file mode 100644 index 000000000..e9274a24d --- /dev/null +++ b/Mastodon/Persistence/Extension/MastodonEmoji.swift @@ -0,0 +1,34 @@ +// +// MastodonEmojis.swift +// MastodonEmojis +// +// Created by Cirno MainasuK on 2021-9-2. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation +import CoreDataStack +import MastodonSDK +import MastodonMeta + +extension MastodonEmoji { + public convenience init(emoji: Mastodon.Entity.Emoji) { + self.init( + code: emoji.shortcode, + url: emoji.url, + staticURL: emoji.staticURL, + visibleInPicker: emoji.visibleInPicker, + category: emoji.category + ) + } +} + +extension Collection where Element == MastodonEmoji { + public var asDictionary: MastodonContent.Emojis { + var dictionary: MastodonContent.Emojis = [:] + for emoji in self { + dictionary[emoji.code] = emoji.url + } + return dictionary + } +} diff --git a/Mastodon/Persistence/Extension/MastodonField.swift b/Mastodon/Persistence/Extension/MastodonField.swift new file mode 100644 index 000000000..4fa2ef971 --- /dev/null +++ b/Mastodon/Persistence/Extension/MastodonField.swift @@ -0,0 +1,21 @@ +// +// MastodonField.swift +// TwidereX +// +// Created by Cirno MainasuK on 2021-9-18. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation +import CoreDataStack +import MastodonSDK + +extension MastodonField { + public convenience init(field: Mastodon.Entity.Field) { + self.init( + name: field.name, + value: field.value, + verifiedAt: field.verifiedAt + ) + } +} diff --git a/Mastodon/Persistence/Extension/MastodonMention.swift b/Mastodon/Persistence/Extension/MastodonMention.swift new file mode 100644 index 000000000..6c3df37a5 --- /dev/null +++ b/Mastodon/Persistence/Extension/MastodonMention.swift @@ -0,0 +1,21 @@ +// +// MastodonMention.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import Foundation +import CoreDataStack +import MastodonSDK + +extension MastodonMention { + public convenience init(mention: Mastodon.Entity.Mention) { + self.init( + id: mention.id, + username: mention.username, + acct: mention.acct, + url: mention.url + ) + } +} diff --git a/Mastodon/Persistence/Extension/MastodonUser+Property.swift b/Mastodon/Persistence/Extension/MastodonUser+Property.swift new file mode 100644 index 000000000..cebe7f8af --- /dev/null +++ b/Mastodon/Persistence/Extension/MastodonUser+Property.swift @@ -0,0 +1,39 @@ +// +// MastodonUser+Property.swift +// Mastodon +// +// Created by MainasuK on 2022-1-11. +// + +import Foundation +import CoreDataStack +import MastodonSDK + +extension MastodonUser.Property { + init(entity: Mastodon.Entity.Account, domain: String, networkDate: Date) { + self.init( + identifier: entity.id + "@" + domain, + domain: domain, + id: entity.id, + acct: entity.acct, + username: entity.username, + displayName: entity.displayName, + avatar: entity.avatar, + avatarStatic: entity.avatarStatic, + header: entity.header, + headerStatic: entity.headerStatic, + note: entity.note, + url: entity.url, + statusesCount: Int64(entity.statusesCount), + followingCount: Int64(entity.followingCount), + followersCount: Int64(entity.followersCount), + locked: entity.locked, + bot: entity.bot ?? false, + suspended: entity.suspended ?? false, + createdAt: entity.createdAt, + updatedAt: networkDate, + emojis: entity.mastodonEmojis, + fields: entity.mastodonFields + ) + } +} diff --git a/Mastodon/Persistence/Extension/Notification+Property.swift b/Mastodon/Persistence/Extension/Notification+Property.swift new file mode 100644 index 000000000..4d125bd52 --- /dev/null +++ b/Mastodon/Persistence/Extension/Notification+Property.swift @@ -0,0 +1,29 @@ +// +// Notification+Property.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import Foundation +import CoreDataStack +import MastodonSDK +import class CoreDataStack.Notification + +extension Notification.Property { + public init( + entity: Mastodon.Entity.Notification, + domain: String, + userID: MastodonUser.ID, + networkDate: Date + ) { + self.init( + id: entity.id, + typeRaw: entity.type.rawValue, + domain: domain, + userID: userID, + createAt: entity.createdAt, + updatedAt: networkDate + ) + } +} diff --git a/Mastodon/Persistence/Extension/Poll+Property.swift b/Mastodon/Persistence/Extension/Poll+Property.swift new file mode 100644 index 000000000..f703d8e53 --- /dev/null +++ b/Mastodon/Persistence/Extension/Poll+Property.swift @@ -0,0 +1,30 @@ +// +// MastodonPoll.swift +// +// +// Created by MainasuK on 2021-12-9. +// + +import Foundation +import CoreDataStack +import MastodonSDK + +extension Poll.Property { + public init( + entity: Mastodon.Entity.Poll, + domain: String, + networkDate: Date + ) { + self.init( + domain: domain, + id: entity.id, + expiresAt: entity.expiresAt, + expired: entity.expired, + multiple: entity.multiple, + votesCount: Int64(entity.votesCount), + votersCount: Int64(entity.votersCount ?? 0), + createdAt: networkDate, + updatedAt: networkDate + ) + } +} diff --git a/Mastodon/Persistence/Extension/PollOption+Property.swift b/Mastodon/Persistence/Extension/PollOption+Property.swift new file mode 100644 index 000000000..4fa62979e --- /dev/null +++ b/Mastodon/Persistence/Extension/PollOption+Property.swift @@ -0,0 +1,26 @@ +// +// MastodonPollOption+Property.swift +// +// +// Created by MainasuK on 2021-12-9. +// + +import Foundation +import MastodonSDK +import CoreDataStack + +extension PollOption.Property { + public init( + index: Int, + entity: Mastodon.Entity.Poll.Option, + networkDate: Date + ) { + self.init( + index: Int64(index), + title: entity.title, + votesCount: Int64(entity.votesCount ?? 0), + createdAt: networkDate, + updatedAt: networkDate + ) + } +} diff --git a/Mastodon/Persistence/Extension/Status+Property.swift b/Mastodon/Persistence/Extension/Status+Property.swift new file mode 100644 index 000000000..c4508a997 --- /dev/null +++ b/Mastodon/Persistence/Extension/Status+Property.swift @@ -0,0 +1,91 @@ +// +// Status+Property.swift +// Mastodon +// +// Created by MainasuK on 2022-1-11. +// + +import Foundation +import CoreGraphics +import CoreDataStack +import MastodonSDK + +extension Status.Property { + init(entity: Mastodon.Entity.Status, domain: String, networkDate: Date) { + self.init( + identifier: entity.id + "@" + domain, + domain: domain, + id: entity.id, + uri: entity.uri, + createdAt: entity.createdAt, + content: entity.content ?? "", + visibility: entity.mastodonVisibility, + sensitive: entity.sensitive ?? false, + spoilerText: entity.spoilerText, + reblogsCount: Int64(entity.reblogsCount), + favouritesCount: Int64(entity.favouritesCount), + repliesCount: Int64(entity.repliesCount ?? 0), + url: entity.url, + inReplyToID: entity.inReplyToID, + inReplyToAccountID: entity.inReplyToAccountID, + language: entity.language, + text: entity.text, + updatedAt: networkDate, + deletedAt: nil, + attachments: entity.mastodonAttachments, + emojis: entity.mastodonEmojis, + mentions: entity.mastodonMentions + ) + } +} + +extension Mastodon.Entity.Status { + public var mastodonVisibility: MastodonVisibility { + let rawValue = visibility?.rawValue ?? "" + return MastodonVisibility(rawValue: rawValue) ?? ._other(rawValue) + } +} + +extension Mastodon.Entity.Status { + public var mastodonAttachments: [MastodonAttachment] { + guard let mediaAttachments = mediaAttachments else { return [] } + + let attachments = mediaAttachments.compactMap { media -> MastodonAttachment? in + guard let kind = media.attachmentKind, + let meta = media.meta, + let original = meta.original, + let width = original.width, // audio has width/height + let height = original.height + else { return nil } + + let durationMS: Int? = original.duration.flatMap { Int($0 * 1000) } + return MastodonAttachment( + id: media.id, + kind: kind, + size: CGSize(width: width, height: height), + focus: nil, // TODO: + blurhash: media.blurhash, + assetURL: media.url, + previewURL: media.previewURL, + textURL: media.textURL, + durationMS: durationMS, + altDescription: media.description + ) + } + + return attachments + } +} + +extension Mastodon.Entity.Attachment { + public var attachmentKind: MastodonAttachment.Kind? { + switch type { + case .unknown: return nil + case .image: return .image + case .gifv: return .gifv + case .video: return .video + case .audio: return .audio + case ._other: return nil + } + } +} diff --git a/Mastodon/Persistence/Extension/Tag+Property.swift b/Mastodon/Persistence/Extension/Tag+Property.swift new file mode 100644 index 000000000..633f7bddf --- /dev/null +++ b/Mastodon/Persistence/Extension/Tag+Property.swift @@ -0,0 +1,44 @@ +// +// Tag+Property.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import Foundation +import CoreDataStack +import MastodonSDK + +extension Tag.Property { + public init( + entity: Mastodon.Entity.Tag, + domain: String, + networkDate: Date + ) { + self.init( + identifier: UUID(), + domain: domain, + createAt: networkDate, + updatedAt: networkDate, + name: entity.name, + url: entity.url, + histories: { + guard let histories = entity.history else { return [] } + let result: [MastodonTagHistory] = histories.map { history in + return MastodonTagHistory(entity: history) + } + return result + }() + ) + } +} + +extension MastodonTagHistory { + public convenience init(entity: Mastodon.Entity.History) { + self.init( + day: entity.day, + uses: entity.uses, + accounts: entity.accounts + ) + } +} diff --git a/Mastodon/Persistence/Persistence+MastodonUser.swift b/Mastodon/Persistence/Persistence+MastodonUser.swift new file mode 100644 index 000000000..1406f75aa --- /dev/null +++ b/Mastodon/Persistence/Persistence+MastodonUser.swift @@ -0,0 +1,161 @@ +// +// Persistence+MastodonUser.swift +// Persistence+MastodonUser +// +// Created by Cirno MainasuK on 2021-8-18. +// Copyright © 2021 Twidere. All rights reserved. +// + +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import os.log + +extension Persistence.MastodonUser { + + public struct PersistContext { + public let domain: String + public let entity: Mastodon.Entity.Account + public let cache: Persistence.PersistCache? + public let networkDate: Date + public let log = OSLog.api + + public init( + domain: String, + entity: Mastodon.Entity.Account, + cache: Persistence.PersistCache?, + networkDate: Date + ) { + self.domain = domain + self.entity = entity + self.cache = cache + self.networkDate = networkDate + } + } + + public struct PersistResult { + public let user: MastodonUser + public let isNewInsertion: Bool + + public init( + user: MastodonUser, + isNewInsertion: Bool + ) { + self.user = user + self.isNewInsertion = isNewInsertion + } + } + + public static func createOrMerge( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> PersistResult { + if let oldMastodonUser = fetch(in: managedObjectContext, context: context) { + merge(mastodonUser: oldMastodonUser, context: context) + return PersistResult(user: oldMastodonUser, isNewInsertion: false) + } else { + let user = create(in: managedObjectContext, context: context) + return PersistResult(user: user, isNewInsertion: true) + } + } + +} + +extension Persistence.MastodonUser { + + public static func fetch( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> MastodonUser? { + if let cache = context.cache { + return cache.dictionary[context.entity.id] + } else { + let request = MastodonUser.sortedFetchRequest + request.predicate = MastodonUser.predicate( + domain: context.domain, + id: context.entity.id + ) + request.fetchLimit = 1 + do { + return try managedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + } + } + + @discardableResult + public static func create( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> MastodonUser { + let property = MastodonUser.Property( + entity: context.entity, + domain: context.domain, + networkDate: context.networkDate + ) + let user = MastodonUser.insert(into: managedObjectContext, property: property) + return user + } + + public static func merge( + mastodonUser user: MastodonUser, + context: PersistContext + ) { + guard context.networkDate > user.updatedAt else { return } + let property = MastodonUser.Property( + entity: context.entity, + domain: context.domain, + networkDate: context.networkDate + ) + user.update(property: property) + } + + private static func update( + mastodonUser user: MastodonUser, + context: PersistContext + ) { + // TODO: + } // end func update + +} + +extension Persistence.MastodonUser { + public struct RelationshipContext { + public let entity: Mastodon.Entity.Relationship + public let me: MastodonUser + public let networkDate: Date + public let log = OSLog.api + + public init( + entity: Mastodon.Entity.Relationship, + me: MastodonUser, + networkDate: Date + ) { + self.entity = entity + self.me = me + self.networkDate = networkDate + } + } + + public static func update( + mastodonUser user: MastodonUser, + context: RelationshipContext + ) { + guard context.entity.id != context.me.id else { return } // not update relationship for self + + let relationship = context.entity + let me = context.me + + user.update(isFollowing: relationship.following, by: me) + relationship.requested.flatMap { user.update(isFollowRequested: $0, by: me) } + // relationship.endorsed.flatMap { user.update(isEndorsed: $0, by: me) } + me.update(isFollowing: relationship.followedBy, by: user) + relationship.muting.flatMap { user.update(isMuting: $0, by: me) } + user.update(isBlocking: relationship.blocking, by: me) + relationship.domainBlocking.flatMap { user.update(isDomainBlocking: $0, by: me) } + relationship.blockedBy.flatMap { me.update(isBlocking: $0, by: user) } + } +} diff --git a/Mastodon/Persistence/Persistence+Notification.swift b/Mastodon/Persistence/Persistence+Notification.swift new file mode 100644 index 000000000..b8c2f27fd --- /dev/null +++ b/Mastodon/Persistence/Persistence+Notification.swift @@ -0,0 +1,199 @@ +// +// Persistence+Notification.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import os.log +import class CoreDataStack.Notification + +extension Persistence.Notification { + + public struct PersistContext { + public let domain: String + public let entity: Mastodon.Entity.Notification + public let me: MastodonUser + public let networkDate: Date + public let log = OSLog.api + + public init( + domain: String, + entity: Mastodon.Entity.Notification, + me: MastodonUser, + networkDate: Date + ) { + self.domain = domain + self.entity = entity + self.me = me + self.networkDate = networkDate + } + } + + public struct PersistResult { + public let notification: Notification + public let isNewInsertion: Bool + + public init( + notification: Notification, + isNewInsertion: Bool + ) { + self.notification = notification + self.isNewInsertion = isNewInsertion + } + } + + public static func createOrMerge( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> PersistResult { + + if let old = fetch(in: managedObjectContext, context: context) { + merge(object: old, context: context) + return PersistResult( + notification: old, + isNewInsertion: false + ) + } else { + let accountResult = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: context.domain, + entity: context.entity.account, + cache: nil, + networkDate: context.networkDate + ) + ) + let account = accountResult.user + + let status: Status? = { + guard let entity = context.entity.status else { return nil } + let result = Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: context.domain, + entity: entity, + me: context.me, + statusCache: nil, + userCache: nil, + networkDate: context.networkDate + ) + ) + return result.status + }() + + let relationship = Notification.Relationship( + account: account, + status: status + ) + + let object = create( + in: managedObjectContext, + context: context, + relationship: relationship + ) + + return PersistResult( + notification: object, + isNewInsertion: true + ) + } + } + +} + +extension Persistence.Notification { + + public static func fetch( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> Notification? { + let request = Notification.sortedFetchRequest + request.predicate = Notification.predicate( + domain: context.me.domain, + userID: context.me.id, + id: context.entity.id + ) + request.fetchLimit = 1 + do { + return try managedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + } + + @discardableResult + public static func create( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext, + relationship: Notification.Relationship + ) -> Notification { + let property = Notification.Property( + entity: context.entity, + domain: context.me.domain, + userID: context.me.id, + networkDate: context.networkDate + ) + let object = Notification.insert( + into: managedObjectContext, + property: property, + relationship: relationship + ) + update(object: object, context: context) + return object + } + + public static func merge( + object: Notification, + context: PersistContext + ) { + guard context.networkDate > object.updatedAt else { return } + let property = Notification.Property( + entity: context.entity, + domain: context.me.domain, + userID: context.me.id, + networkDate: context.networkDate + ) + object.update(property: property) + + if let status = object.status, let entity = context.entity.status { + let property = Status.Property( + entity: entity, + domain: context.domain, + networkDate: context.networkDate + ) + status.update(property: property) + } + + let accountProperty = MastodonUser.Property( + entity: context.entity.account, + domain: context.domain, + networkDate: context.networkDate + ) + object.account.update(property: accountProperty) + + if let author = object.status, let entity = context.entity.status { + let property = Status.Property( + entity: entity, + domain: context.domain, + networkDate: context.networkDate + ) + author.update(property: property) + } + + update(object: object, context: context) + } + + private static func update( + object: Notification, + context: PersistContext + ) { + // do nothing + } + +} diff --git a/Mastodon/Persistence/Persistence+Poll.swift b/Mastodon/Persistence/Persistence+Poll.swift new file mode 100644 index 000000000..1d6802aab --- /dev/null +++ b/Mastodon/Persistence/Persistence+Poll.swift @@ -0,0 +1,180 @@ +// +// Persistence+MastodonPoll.swift +// +// +// Created by MainasuK on 2021-12-9. +// + +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import os.log + +extension Persistence.Poll { + + public struct PersistContext { + public let domain: String + public let entity: Mastodon.Entity.Poll + public let me: MastodonUser? + public let networkDate: Date + public let log = OSLog.api + + public init( + domain: String, + entity: Mastodon.Entity.Poll, + me: MastodonUser?, + networkDate: Date + ) { + self.domain = domain + self.entity = entity + self.me = me + self.networkDate = networkDate + } + } + + public struct PersistResult { + public let poll: Poll + public let isNewInsertion: Bool + + public init( + poll: Poll, + isNewInsertion: Bool + ) { + self.poll = poll + self.isNewInsertion = isNewInsertion + } + + #if DEBUG + public let logger = Logger(subsystem: "Persistence.MastodonPoll.PersistResult", category: "Persist") + public func log() { + let pollInsertionFlag = isNewInsertion ? "+" : "-" + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(pollInsertionFlag)](\(poll.id)):") + } + #endif + } + + public static func createOrMerge( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> PersistResult { + + if let old = fetch(in: managedObjectContext, context: context) { + merge(poll: old, context: context) + return PersistResult( + poll: old, + isNewInsertion: false + ) + } else { + let options: [PollOption] = context.entity.options.enumerated().map { i, entity in + let optionResult = Persistence.PollOption.persist( + in: managedObjectContext, + context: Persistence.PollOption.PersistContext( + index: i, + entity: entity, + me: context.me, + networkDate: context.networkDate + ) + ) + return optionResult.option + } + + let poll = create( + in: managedObjectContext, + context: context + ) + poll.attach(options: options) + + return PersistResult( + poll: poll, + isNewInsertion: true + ) + } + } + +} + +extension Persistence.Poll { + + public static func fetch( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> Poll? { + let request = Poll.sortedFetchRequest + request.predicate = Poll.predicate(domain: context.domain, id: context.entity.id) + request.fetchLimit = 1 + do { + return try managedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + } + + @discardableResult + public static func create( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> Poll { + let property = Poll.Property( + entity: context.entity, + domain: context.domain, + networkDate: context.networkDate + ) + let poll = Poll.insert( + into: managedObjectContext, + property: property + ) + update(poll: poll, context: context) + return poll + } + + public static func merge( + poll: Poll, + context: PersistContext + ) { + guard context.networkDate > poll.updatedAt else { return } + let property = Poll.Property( + entity: context.entity, + domain: context.domain, + networkDate: context.networkDate + ) + poll.update(property: property) + update(poll: poll, context: context) + } + + public static func update( + poll: Poll, + context: PersistContext + ) { + let optionEntities = context.entity.options + let options = poll.options.sorted(by: { $0.index < $1.index }) + for (option, entity) in zip(options, optionEntities) { + Persistence.PollOption.merge( + option: option, + context: Persistence.PollOption.PersistContext( + index: Int(option.index), + entity: entity, + me: context.me, + networkDate: context.networkDate + ) + ) + } // end for in + + if let me = context.me { + if let voted = context.entity.voted { + poll.update(voted: voted, by: me) + } + + let ownVotes = context.entity.ownVotes ?? [] + for option in options { + let index = Int(option.index) + let isVote = ownVotes.contains(index) + option.update(voted: isVote, by: me) + } + } + + poll.update(updatedAt: context.networkDate) + } + +} diff --git a/Mastodon/Persistence/Persistence+PollOption.swift b/Mastodon/Persistence/Persistence+PollOption.swift new file mode 100644 index 000000000..1e284ac72 --- /dev/null +++ b/Mastodon/Persistence/Persistence+PollOption.swift @@ -0,0 +1,99 @@ +// +// Persistence+MastodonPollOption.swift +// +// +// Created by MainasuK on 2021-12-9. +// + +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import os.log + +extension Persistence.PollOption { + + public struct PersistContext { + public let index: Int + public let entity: Mastodon.Entity.Poll.Option + public let me: MastodonUser? + public let networkDate: Date + public let log = OSLog.api + + public init( + index: Int, + entity: Mastodon.Entity.Poll.Option, + me: MastodonUser?, + networkDate: Date + ) { + self.index = index + self.entity = entity + self.me = me + self.networkDate = networkDate + } + } + + public struct PersistResult { + public let option: PollOption + public let isNewInsertion: Bool + + public init( + option: PollOption, + isNewInsertion: Bool + ) { + self.option = option + self.isNewInsertion = isNewInsertion + } + } + + // the bare Poll.Option entity not supports merge from entity. + // use merge entry on MastodonPoll with exists option objects + public static func persist( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> PersistResult { + let option = create(in: managedObjectContext, context: context) + return PersistResult(option: option, isNewInsertion: true) + } + +} + +extension Persistence.PollOption { + + @discardableResult + public static func create( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> PollOption { + let property = PollOption.Property( + index: context.index, + entity: context.entity, + networkDate: context.networkDate + ) + let option = PollOption.insert(into: managedObjectContext, property: property) + update(option: option, context: context) + return option + } + + public static func merge( + option: PollOption, + context: PersistContext + ) { + guard context.networkDate > option.updatedAt else { return } + let property = PollOption.Property( + index: context.index, + entity: context.entity, + networkDate: context.networkDate + ) + option.update(property: property) + update(option: option, context: context) + } + + private static func update( + option: PollOption, + context: PersistContext + ) { + // Do nothing + } // end func update + +} diff --git a/Mastodon/Persistence/Persistence+SearchHistory.swift b/Mastodon/Persistence/Persistence+SearchHistory.swift new file mode 100644 index 000000000..58d4c8fb1 --- /dev/null +++ b/Mastodon/Persistence/Persistence+SearchHistory.swift @@ -0,0 +1,116 @@ +// +// Persistence+SearchHistory.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import os.log + +extension Persistence.SearchHistory { + + public struct PersistContext { + public let entity: Entity + public let me: MastodonUser + public let now: Date + public let log = OSLog.api + + public init( + entity: Entity, + me: MastodonUser, + now: Date + ) { + self.entity = entity + self.me = me + self.now = now + } + + public enum Entity: Hashable { + case user(MastodonUser) + case hashtag(Tag) + } + } + + public struct PersistResult { + public let searchHistory: SearchHistory + public let isNewInsertion: Bool + + public init( + searchHistory: SearchHistory, + isNewInsertion: Bool + ) { + self.searchHistory = searchHistory + self.isNewInsertion = isNewInsertion + } + } + + public static func createOrMerge( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> PersistResult { + if let old = fetch(in: managedObjectContext, context: context) { + update(searchHistory: old, context: context) + return PersistResult(searchHistory: old, isNewInsertion: false) + } else { + let object = create(in: managedObjectContext, context: context) + return PersistResult(searchHistory: object, isNewInsertion: true) + } + } + +} + +extension Persistence.SearchHistory { + + public static func fetch( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> SearchHistory? { + switch context.entity { + case .user(let user): + return user.findSearchHistory(for: context.me) + case .hashtag(let hashtag): + return hashtag.findSearchHistory(for: context.me) + } + } + + @discardableResult + public static func create( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> SearchHistory { + let property = SearchHistory.Property( + identifier: UUID(), + domain: context.me.domain, + userID: context.me.id, + createAt: context.now, + updatedAt: context.now + ) + let relationship: SearchHistory.Relationship = { + switch context.entity { + case .user(let user): + return SearchHistory.Relationship(account: user, hashtag: nil, status: nil) + case .hashtag(let hashtag): + return SearchHistory.Relationship(account: nil, hashtag: hashtag, status: nil) + } + }() + let searchHistory = SearchHistory.insert( + into: managedObjectContext, + property: property, + relationship: relationship + ) + update(searchHistory: searchHistory, context: context) + return searchHistory + } + + private static func update( + searchHistory: SearchHistory, + context: PersistContext + ) { + searchHistory.update(updatedAt: context.now) + } + +} diff --git a/Mastodon/Persistence/Persistence+Status.swift b/Mastodon/Persistence/Persistence+Status.swift new file mode 100644 index 000000000..b20df1496 --- /dev/null +++ b/Mastodon/Persistence/Persistence+Status.swift @@ -0,0 +1,220 @@ +// +// Persistence+Status.swift +// Persistence+Status +// +// Created by Cirno MainasuK on 2021-8-27. +// Copyright © 2021 Twidere. All rights reserved. +// + +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import os.log + +extension Persistence.Status { + + public struct PersistContext { + public let domain: String + public let entity: Mastodon.Entity.Status + public let me: MastodonUser? + public let statusCache: Persistence.PersistCache? + public let userCache: Persistence.PersistCache? + public let networkDate: Date + public let log = OSLog.api + + public init( + domain: String, + entity: Mastodon.Entity.Status, + me: MastodonUser?, + statusCache: Persistence.PersistCache?, + userCache: Persistence.PersistCache?, + networkDate: Date + ) { + self.domain = domain + self.entity = entity + self.me = me + self.statusCache = statusCache + self.userCache = userCache + self.networkDate = networkDate + } + } + + public struct PersistResult { + public let status: Status + public let isNewInsertion: Bool + public let isNewInsertionAuthor: Bool + + public init( + status: Status, + isNewInsertion: Bool, + isNewInsertionAuthor: Bool + ) { + self.status = status + self.isNewInsertion = isNewInsertion + self.isNewInsertionAuthor = isNewInsertionAuthor + } + + #if DEBUG + public let logger = Logger(subsystem: "Persistence.Status.PersistResult", category: "Persist") + public func log() { + let statusInsertionFlag = isNewInsertion ? "+" : "-" + let authorInsertionFlag = isNewInsertionAuthor ? "+" : "-" + let contentPreview = status.content.prefix(32).replacingOccurrences(of: "\n", with: " ") + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(statusInsertionFlag)](\(status.id))[\(authorInsertionFlag)](\(status.author.id))@\(status.author.username): \(contentPreview)") + } + #endif + } + + public static func createOrMerge( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> PersistResult { + + let reblog = context.entity.reblog.flatMap { entity -> Status in + let result = createOrMerge( + in: managedObjectContext, + context: PersistContext( + domain: context.domain, + entity: entity, + me: context.me, + statusCache: context.statusCache, + userCache: context.userCache, + networkDate: context.networkDate + ) + ) + return result.status + } + + if let oldStatus = fetch(in: managedObjectContext, context: context) { + merge(mastodonStatus: oldStatus, context: context) + return PersistResult( + status: oldStatus, + isNewInsertion: false, + isNewInsertionAuthor: false + ) + } else { + let poll: Poll? = { + guard let entity = context.entity.poll else { return nil } + let result = Persistence.Poll.createOrMerge( + in: managedObjectContext, + context: Persistence.Poll.PersistContext( + domain: context.domain, + entity: entity, + me: context.me, + networkDate: context.networkDate + ) + ) + return result.poll + }() + + let authorResult = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: context.domain, + entity: context.entity.account, + cache: context.userCache, + networkDate: context.networkDate + ) + ) + let author = authorResult.user + + let relationship = Status.Relationship( + author: author, + reblog: reblog, + poll: poll + ) + let status = create( + in: managedObjectContext, + context: context, + relationship: relationship + ) + + return PersistResult( + status: status, + isNewInsertion: true, + isNewInsertionAuthor: authorResult.isNewInsertion + ) + } + } + +} + +extension Persistence.Status { + + public static func fetch( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> Status? { + if let cache = context.statusCache { + return cache.dictionary[context.entity.id] + } else { + let request = Status.sortedFetchRequest + request.predicate = Status.predicate(domain: context.domain, id: context.entity.id) + request.fetchLimit = 1 + do { + return try managedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + } + } + + @discardableResult + public static func create( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext, + relationship: Status.Relationship + ) -> Status { + let property = Status.Property( + entity: context.entity, + domain: context.domain, + networkDate: context.networkDate + ) + let status = Status.insert( + into: managedObjectContext, + property: property, + relationship: relationship + ) + update(status: status, context: context) + return status + } + + public static func merge( + mastodonStatus status: Status, + context: PersistContext + ) { + guard context.networkDate > status.updatedAt else { return } + let property = Status.Property( + entity: context.entity, + domain: context.domain, + networkDate: context.networkDate + ) + status.update(property: property) + if let poll = status.poll, let entity = context.entity.poll { + Persistence.Poll.merge( + poll: poll, + context: Persistence.Poll.PersistContext( + domain: context.domain, + entity: entity, + me: context.me, + networkDate: context.networkDate + ) + ) + } + update(status: status, context: context) + } + + private static func update( + status: Status, + context: PersistContext + ) { + // update friendships + if let user = context.me { + context.entity.reblogged.flatMap { status.update(reblogged: $0, by: user) } + context.entity.favourited.flatMap { status.update(liked: $0, by: user) } + } + } + +} diff --git a/Mastodon/Persistence/Persistence+Tag.swift b/Mastodon/Persistence/Persistence+Tag.swift new file mode 100644 index 000000000..7092a52cd --- /dev/null +++ b/Mastodon/Persistence/Persistence+Tag.swift @@ -0,0 +1,130 @@ +// +// Persistence+Tag.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import os.log + +extension Persistence.Tag { + + public struct PersistContext { + public let domain: String + public let entity: Mastodon.Entity.Tag + public let me: MastodonUser? + public let networkDate: Date + public let log = OSLog.api + + public init( + domain: String, + entity: Mastodon.Entity.Tag, + me: MastodonUser?, + networkDate: Date + ) { + self.domain = domain + self.entity = entity + self.me = me + self.networkDate = networkDate + } + } + + public struct PersistResult { + public let tag: Tag + public let isNewInsertion: Bool + + public init( + tag: Tag, + isNewInsertion: Bool + ) { + self.tag = tag + self.isNewInsertion = isNewInsertion + } + } + + public static func createOrMerge( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> PersistResult { + if let old = fetch(in: managedObjectContext, context: context) { + merge(tag: old, context: context) + return PersistResult( + tag: old, + isNewInsertion: false + ) + } else { + let object = create( + in: managedObjectContext, + context: context + ) + + return PersistResult( + tag: object, + isNewInsertion: false + ) + } + } + +} + +extension Persistence.Tag { + + public static func fetch( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> Tag? { + let request = Tag.sortedFetchRequest + request.predicate = Tag.predicate(domain: context.domain, name: context.entity.name) + request.fetchLimit = 1 + do { + return try managedObjectContext.fetch(request).first + } catch { + assertionFailure(error.localizedDescription) + return nil + } + } + + @discardableResult + public static func create( + in managedObjectContext: NSManagedObjectContext, + context: PersistContext + ) -> Tag { + let property = Tag.Property( + entity: context.entity, + domain: context.domain, + networkDate: context.networkDate + ) + let object = Tag.insert( + into: managedObjectContext, + property: property + ) + update(tag: object, context: context) + return object + } + + public static func merge( + tag: Tag, + context: PersistContext + ) { + guard context.networkDate > tag.updatedAt else { return } + let property = Tag.Property( + entity: context.entity, + domain: context.domain, + networkDate: context.networkDate + ) + tag.update(property: property) + update(tag: tag, context: context) + } + + private static func update( + tag: Tag, + context: PersistContext + ) { + tag.update(updatedAt: context.networkDate) + } + +} diff --git a/Mastodon/Persistence/Persistence.swift b/Mastodon/Persistence/Persistence.swift new file mode 100644 index 000000000..350b603cc --- /dev/null +++ b/Mastodon/Persistence/Persistence.swift @@ -0,0 +1,33 @@ +// +// Persistence.swift +// Persistence +// +// Created by Cirno MainasuK on 2021-8-18. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation + +public enum Persistence { } + + +extension Persistence { + public enum MastodonUser { } + public enum Status { } + public enum Poll { } + public enum PollOption { } + public enum Tag { } + public enum SearchHistory { } + public enum Notification { } +} + +extension Persistence { + public class PersistCache { + var dictionary: [String : T] = [:] + + public init(dictionary: [String : T] = [:]) { + self.dictionary = dictionary + } + } +} + diff --git a/Mastodon/Persistence/Protocol/MastodonEmojiContainer.swift b/Mastodon/Persistence/Protocol/MastodonEmojiContainer.swift new file mode 100644 index 000000000..e3bb62f63 --- /dev/null +++ b/Mastodon/Persistence/Protocol/MastodonEmojiContainer.swift @@ -0,0 +1,26 @@ +// +// MastodonEmojiContainer.swift +// MastodonEmojiContainer +// +// Created by Cirno MainasuK on 2021-9-3. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation +import MastodonSDK +import CoreDataStack + +public protocol MastodonEmojiContainer { + var emojis: [Mastodon.Entity.Emoji]? { get } +} + +extension MastodonEmojiContainer { + public var mastodonEmojis: [MastodonEmoji] { + return emojis.flatMap { emojis in + emojis.map { MastodonEmoji(emoji: $0) } + } ?? [] + } +} + +extension Mastodon.Entity.Account: MastodonEmojiContainer { } +extension Mastodon.Entity.Status: MastodonEmojiContainer { } diff --git a/Mastodon/Persistence/Protocol/MastodonFieldContainer.swift b/Mastodon/Persistence/Protocol/MastodonFieldContainer.swift new file mode 100644 index 000000000..fe1d29941 --- /dev/null +++ b/Mastodon/Persistence/Protocol/MastodonFieldContainer.swift @@ -0,0 +1,25 @@ +// +// MastodonFieldContainer.swift +// MastodonFieldContainer +// +// Created by Cirno MainasuK on 2021-8-18. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation +import CoreDataStack +import MastodonSDK + +public protocol MastodonFieldContainer { + var fields: [Mastodon.Entity.Field]? { get } +} + +extension MastodonFieldContainer { + public var mastodonFields: [MastodonField] { + return fields.flatMap { fields in + fields.map { MastodonField(field: $0) } + } ?? [] + } +} + +extension Mastodon.Entity.Account: MastodonFieldContainer { } diff --git a/Mastodon/Persistence/Protocol/MastodonMentionContainer.swift b/Mastodon/Persistence/Protocol/MastodonMentionContainer.swift new file mode 100644 index 000000000..75cae7573 --- /dev/null +++ b/Mastodon/Persistence/Protocol/MastodonMentionContainer.swift @@ -0,0 +1,24 @@ +// +// MastodonMentionContainer.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import Foundation +import CoreDataStack +import MastodonSDK + +public protocol MastodonMentionContainer { + var mentions: [Mastodon.Entity.Mention]? { get } +} + +extension MastodonMentionContainer { + public var mastodonMentions: [MastodonMention] { + return mentions.flatMap { mentions in + mentions.map { MastodonMention(mention: $0) } + } ?? [] + } +} + +extension Mastodon.Entity.Status: MastodonMentionContainer { } diff --git a/Mastodon/Protocol/AvatarConfigurableView.swift b/Mastodon/Protocol/AvatarConfigurableView.swift deleted file mode 100644 index d771fa5a9..000000000 --- a/Mastodon/Protocol/AvatarConfigurableView.swift +++ /dev/null @@ -1,113 +0,0 @@ -// -// AvatarConfigurableView.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-2-4. -// - -import Foundation -import UIKit -import Combine -import AlamofireImage -import FLAnimatedImage - -protocol AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { get } - static var configurableAvatarImageCornerRadius: CGFloat { get } - var configurableAvatarImageView: FLAnimatedImageView? { get } - func configure(with configuration: AvatarConfigurableViewConfiguration) - func avatarConfigurableView(_ avatarConfigurableView: AvatarConfigurableView, didFinishConfiguration configuration: AvatarConfigurableViewConfiguration) -} - -extension AvatarConfigurableView { - - public func configure(with configuration: AvatarConfigurableViewConfiguration) { - let placeholderImage: UIImage = { - guard let placeholderImage = configuration.placeholderImage else { - #if APP_EXTENSION - let placeholderImage = configuration.placeholderImage ?? UIImage.placeholder(size: Self.configurableAvatarImageSize, color: .systemFill) - if Self.configurableAvatarImageCornerRadius < Self.configurableAvatarImageSize.width * 0.5 { - return placeholderImage - .af.imageAspectScaled(toFill: Self.configurableAvatarImageSize) - .af.imageRounded(withCornerRadius: Self.configurableAvatarImageCornerRadius, divideRadiusByImageScale: false) - } else { - return placeholderImage.af.imageRoundedIntoCircle() - } - #else - return AppContext.shared.placeholderImageCacheService.image( - color: .systemFill, - size: Self.configurableAvatarImageSize, - cornerRadius: Self.configurableAvatarImageCornerRadius - ) - #endif - } - return placeholderImage - }() - - // accessibility - configurableAvatarImageView?.accessibilityIgnoresInvertColors = true - - defer { - avatarConfigurableView(self, didFinishConfiguration: configuration) - } - - guard let configurableAvatarImageView = configurableAvatarImageView else { - return - } - - // set corner radius (due to GIF won't crop) - configurableAvatarImageView.layer.masksToBounds = true - configurableAvatarImageView.layer.cornerRadius = Self.configurableAvatarImageCornerRadius - configurableAvatarImageView.layer.cornerCurve = Self.configurableAvatarImageCornerRadius < Self.configurableAvatarImageSize.width * 0.5 ? .continuous :.circular - - // set border - configureLayerBorder(view: configurableAvatarImageView, configuration: configuration) - - configurableAvatarImageView.setImage( - url: configuration.avatarImageURL, - placeholder: placeholderImage, - scaleToSize: Self.configurableAvatarImageSize - ) - } - - func configureLayerBorder(view: UIView, configuration: AvatarConfigurableViewConfiguration) { - guard let borderWidth = configuration.borderWidth, borderWidth > 0, - let borderColor = configuration.borderColor else { - return - } - - view.layer.masksToBounds = true - view.layer.cornerRadius = Self.configurableAvatarImageCornerRadius - view.layer.cornerCurve = .continuous - view.layer.borderColor = borderColor.cgColor - view.layer.borderWidth = borderWidth - } - - func avatarConfigurableView(_ avatarConfigurableView: AvatarConfigurableView, didFinishConfiguration configuration: AvatarConfigurableViewConfiguration) { } - -} - -struct AvatarConfigurableViewConfiguration { - - let avatarImageURL: URL? - let placeholderImage: UIImage? - let borderColor: UIColor? - let borderWidth: CGFloat? - - let keepImageCorner: Bool - - init( - avatarImageURL: URL?, - placeholderImage: UIImage? = nil, - borderColor: UIColor? = nil, - borderWidth: CGFloat? = nil, - keepImageCorner: Bool = false // default clip corner on image - ) { - self.avatarImageURL = avatarImageURL - self.placeholderImage = placeholderImage - self.borderColor = borderColor - self.borderWidth = borderWidth - self.keepImageCorner = keepImageCorner - } - -} diff --git a/Mastodon/Protocol/LoadMoreConfigurableTableViewContainer.swift b/Mastodon/Protocol/LoadMoreConfigurableTableViewContainer.swift deleted file mode 100644 index 4f32be54a..000000000 --- a/Mastodon/Protocol/LoadMoreConfigurableTableViewContainer.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// LoadMoreConfigurableTableViewContainer.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/3. -// - -import UIKit -import GameplayKit - -/// The tableView container driven by state machines with "LoadMore" logic -protocol LoadMoreConfigurableTableViewContainer: UIViewController { - - associatedtype BottomLoaderTableViewCell: UITableViewCell - associatedtype LoadingState: GKState - - var loadMoreConfigurableTableView: UITableView { get } - var loadMoreConfigurableStateMachine: GKStateMachine { get } - func handleScrollViewDidScroll(_ scrollView: UIScrollView) -} - -extension LoadMoreConfigurableTableViewContainer { - func handleScrollViewDidScroll(_ scrollView: UIScrollView) { - guard scrollView === loadMoreConfigurableTableView else { return } - - // check if current scroll position is the bottom of table - let contentOffsetY = loadMoreConfigurableTableView.contentOffset.y - let bottomVisiblePageContentOffsetY = loadMoreConfigurableTableView.contentSize.height - (1.5 * loadMoreConfigurableTableView.visibleSize.height) - guard contentOffsetY > bottomVisiblePageContentOffsetY else { - return - } - - let cells = loadMoreConfigurableTableView.visibleCells.compactMap { $0 as? BottomLoaderTableViewCell } - guard let loaderTableViewCell = cells.first else { return } - - if let tabBar = tabBarController?.tabBar, let window = view.window { - let loaderTableViewCellFrameInWindow = loadMoreConfigurableTableView.convert(loaderTableViewCell.frame, to: nil) - let windowHeight = window.frame.height - let loaderAppear = (loaderTableViewCellFrameInWindow.origin.y + 0.8 * loaderTableViewCell.frame.height) < (windowHeight - tabBar.frame.height) - if loaderAppear { - loadMoreConfigurableStateMachine.enter(LoadingState.self) - } else { - // do nothing - } - } else { - loadMoreConfigurableStateMachine.enter(LoadingState.self) - } - } -} diff --git a/Mastodon/Protocol/NamingState.swift b/Mastodon/Protocol/NamingState.swift new file mode 100644 index 000000000..edf6265e8 --- /dev/null +++ b/Mastodon/Protocol/NamingState.swift @@ -0,0 +1,12 @@ +// +// NamingState.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import Foundation + +protocol NamingState { + var name: String { get } +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Block.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Block.swift new file mode 100644 index 000000000..a1bf3136f --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Block.swift @@ -0,0 +1,25 @@ +// +// DataSourceFacade+Block.swift +// Mastodon +// +// Created by MainasuK on 2022-1-24. +// + +import UIKit +import CoreDataStack + +extension DataSourceFacade { + static func responseToUserBlockAction( + dependency: NeedsDependency, + user: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws { + let selectionFeedbackGenerator = UISelectionFeedbackGenerator() + await selectionFeedbackGenerator.selectionChanged() + + _ = try await dependency.context.apiService.toggleBlock( + user: user, + authenticationBox: authenticationBox + ) + } // end func +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Favorite.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Favorite.swift new file mode 100644 index 000000000..a248ed42c --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Favorite.swift @@ -0,0 +1,26 @@ +// +// DataSourceFacade+Favorite.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import UIKit +import CoreData +import CoreDataStack + +extension DataSourceFacade { + static func responseToStatusFavoriteAction( + provider: DataSourceProvider, + status: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws { + let selectionFeedbackGenerator = UISelectionFeedbackGenerator() + await selectionFeedbackGenerator.selectionChanged() + + _ = try await provider.context.apiService.favorite( + record: status, + authenticationBox: authenticationBox + ) + } +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Follow.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Follow.swift new file mode 100644 index 000000000..b4f2362c3 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Follow.swift @@ -0,0 +1,25 @@ +// +// DataSourceFacade+Follow.swift +// Mastodon +// +// Created by MainasuK on 2022-1-24. +// + +import UIKit +import CoreDataStack + +extension DataSourceFacade { + static func responseToUserFollowAction( + dependency: NeedsDependency, + user: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws { + let selectionFeedbackGenerator = UISelectionFeedbackGenerator() + await selectionFeedbackGenerator.selectionChanged() + + _ = try await dependency.context.apiService.toggleFollow( + user: user, + authenticationBox: authenticationBox + ) + } // end func +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Hashtag.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Hashtag.swift new file mode 100644 index 000000000..7abde62fe --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Hashtag.swift @@ -0,0 +1,67 @@ +// +// DataSourceFacade+Hashtag.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import UIKit +import CoreDataStack +import MastodonSDK + +extension DataSourceFacade { + @MainActor + static func coordinateToHashtagScene( + provider: DataSourceProvider, + tag: DataSourceItem.TagKind + ) async { + switch tag { + case .entity(let entity): + await coordinateToHashtagScene(provider: provider, tag: entity) + case .record(let record): + await coordinateToHashtagScene(provider: provider, tag: record) + } + } + + @MainActor + static func coordinateToHashtagScene( + provider: DataSourceProvider, + tag: Mastodon.Entity.Tag + ) async { + let hashtagTimelineViewModel = HashtagTimelineViewModel( + context: provider.context, + hashtag: tag.name + ) + + provider.coordinator.present( + scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), + from: provider, + transition: .show + ) + } + + @MainActor + static func coordinateToHashtagScene( + provider: DataSourceProvider, + tag: ManagedObjectRecord + ) async { + let managedObjectContext = provider.context.managedObjectContext + let _name: String? = try? await managedObjectContext.perform { + guard let tag = tag.object(in: managedObjectContext) else { return nil } + return tag.name + } + + guard let name = _name else { return } + + let hashtagTimelineViewModel = HashtagTimelineViewModel( + context: provider.context, + hashtag: name + ) + + provider.coordinator.present( + scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), + from: provider, + transition: .show + ) + } +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Media.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Media.swift new file mode 100644 index 000000000..329a7f39c --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Media.swift @@ -0,0 +1,233 @@ +// +// DataSourceFacade+Media.swift +// Mastodon +// +// Created by MainasuK on 2022-1-26. +// + +import UIKit +import CoreDataStack +import MastodonUI +import MastodonLocalization + +extension DataSourceFacade { + + @MainActor + static func coordinateToMediaPreviewScene( + dependency: NeedsDependency & MediaPreviewableViewController, + mediaPreviewItem: MediaPreviewViewModel.PreviewItem, + mediaPreviewTransitionItem: MediaPreviewTransitionItem + ) { + let mediaPreviewViewModel = MediaPreviewViewModel( + context: dependency.context, + item: mediaPreviewItem, + transitionItem: mediaPreviewTransitionItem + ) + dependency.coordinator.present( + scene: .mediaPreview(viewModel: mediaPreviewViewModel), + from: dependency, + transition: .custom(transitioningDelegate: dependency.mediaPreviewTransitionController) + ) + } + +} + +extension DataSourceFacade { + + struct AttachmentPreviewContext { + let containerView: ContainerView + let mediaView: MediaView + let index: Int + + enum ContainerView { + case mediaView(MediaView) + case mediaGridContainerView(MediaGridContainerView) + } + + func thumbnails() async -> [UIImage?] { + switch containerView { + case .mediaView(let mediaView): + let thumbnail = await mediaView.thumbnail() + return [thumbnail] + case .mediaGridContainerView(let mediaGridContainerView): + let thumbnails = await mediaGridContainerView.mediaViews.parallelMap { mediaView in + return await mediaView.thumbnail() + } + return thumbnails + } + } + } + + @MainActor + static func coordinateToMediaPreviewScene( + dependency: NeedsDependency & MediaPreviewableViewController, + status: ManagedObjectRecord, + previewContext: AttachmentPreviewContext + ) async throws { + let managedObjectContext = dependency.context.managedObjectContext + let attachments: [MastodonAttachment] = try await managedObjectContext.perform { + guard let _status = status.object(in: managedObjectContext) else { return [] } + let status = _status.reblog ?? _status + return status.attachments + } + + let thumbnails = await previewContext.thumbnails() + + let _source: MediaPreviewTransitionItem.Source? = { + switch previewContext.containerView { + case .mediaView(let mediaView): + return .attachment(mediaView) + case .mediaGridContainerView(let mediaGridContainerView): + return .attachments(mediaGridContainerView) + } + }() + guard let source = _source else { + return + } + + let mediaPreviewTransitionItem: MediaPreviewTransitionItem = { + let item = MediaPreviewTransitionItem( + source: source, + previewableViewController: dependency + ) + + let mediaView = previewContext.mediaView + + item.initialFrame = { + let initialFrame = mediaView.superview!.convert(mediaView.frame, to: nil) + assert(initialFrame != .zero) + return initialFrame + }() + + let thumbnail = mediaView.thumbnail() + item.image = thumbnail + + item.aspectRatio = { + if let thumbnail = thumbnail { + return thumbnail.size + } + let index = previewContext.index + guard index < attachments.count else { return nil } + let size = attachments[index].size + return size + }() + + return item + }() + + + let mediaPreviewItem = MediaPreviewViewModel.PreviewItem.attachment(.init( + attachments: attachments, + initialIndex: previewContext.index, + thumbnails: thumbnails + )) + + coordinateToMediaPreviewScene( + dependency: dependency, + mediaPreviewItem: mediaPreviewItem, + mediaPreviewTransitionItem: mediaPreviewTransitionItem + ) + } + +} + +extension DataSourceFacade { + + struct ImagePreviewContext { + let imageView: UIImageView + let containerView: ContainerView + + enum ContainerView { + case profileAvatar(ProfileHeaderView) + case profileBanner(ProfileHeaderView) + } + + func thumbnail() async -> UIImage? { + return await imageView.image + } + } + + @MainActor + static func coordinateToMediaPreviewScene( + dependency: NeedsDependency & MediaPreviewableViewController, + user: ManagedObjectRecord, + previewContext: ImagePreviewContext + ) async throws { + let managedObjectContext = dependency.context.managedObjectContext + + var _avatarAssetURL: String? + var _headerAssetURL: String? + + try await managedObjectContext.perform { + guard let user = user.object(in: managedObjectContext) else { return } + _avatarAssetURL = user.avatar + _headerAssetURL = user.header + } + + let thumbnail = await previewContext.thumbnail() + + let source: MediaPreviewTransitionItem.Source = { + switch previewContext.containerView { + case .profileAvatar(let view): return .profileAvatar(view) + case .profileBanner(let view): return .profileBanner(view) + } + }() + + let mediaPreviewTransitionItem: MediaPreviewTransitionItem = { + let item = MediaPreviewTransitionItem( + source: source, + previewableViewController: dependency + ) + + let imageView = previewContext.imageView + item.initialFrame = { + let initialFrame = imageView.superview!.convert(imageView.frame, to: nil) + assert(initialFrame != .zero) + return initialFrame + }() + + item.image = thumbnail + + item.aspectRatio = { + if let thumbnail = thumbnail { + return thumbnail.size + } + return CGSize(width: 100, height: 100) + }() + + item.sourceImageViewCornerRadius = { + switch previewContext.containerView { + case .profileAvatar: + return ProfileHeaderView.avatarImageViewCornerRadius + case .profileBanner: + return 0 + } + }() + + return item + }() + + + let mediaPreviewItem: MediaPreviewViewModel.PreviewItem = { + switch previewContext.containerView { + case .profileAvatar: + return .profileAvatar(.init( + assetURL: _avatarAssetURL, + thumbnail: thumbnail + )) + case .profileBanner: + return .profileAvatar(.init( + assetURL: _headerAssetURL, + thumbnail: thumbnail + )) + } + }() + + coordinateToMediaPreviewScene( + dependency: dependency, + mediaPreviewItem: mediaPreviewItem, + mediaPreviewTransitionItem: mediaPreviewTransitionItem + ) + } + +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Meta.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Meta.swift new file mode 100644 index 000000000..bf54f70ad --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Meta.swift @@ -0,0 +1,73 @@ +// +// DataSourceFacade+Meta.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import Foundation +import CoreDataStack +import MetaTextKit + +extension DataSourceFacade { + + static func responseToMetaTextAction( + provider: DataSourceProvider, + target: StatusTarget, + status: ManagedObjectRecord, + meta: Meta + ) async throws { + let _redirectRecord = await DataSourceFacade.status( + managedObjectContext: provider.context.managedObjectContext, + status: status, + target: target + ) + guard let redirectRecord = _redirectRecord else { return } + + await responseToMetaTextAction( + provider: provider, + status: redirectRecord, + meta: meta + ) + + } + + static func responseToMetaTextAction( + provider: DataSourceProvider, + status: ManagedObjectRecord, + meta: Meta + ) async { + switch meta { + case .url(_, _, let url, _), + .mention(_, let url, _) where url.lowercased().hasPrefix("http"): + // note: + // some server mark the normal url as "u-url" class. highlighted content is a URL + guard let url = URL(string: url) else { return } + if let domain = provider.context.authenticationService.activeMastodonAuthenticationBox.value?.domain, url.host == domain, + url.pathComponents.count >= 4, + url.pathComponents[0] == "/", + url.pathComponents[1] == "web", + url.pathComponents[2] == "statuses" { + let statusID = url.pathComponents[3] + let threadViewModel = RemoteThreadViewModel(context: provider.context, statusID: statusID) + await provider.coordinator.present(scene: .thread(viewModel: threadViewModel), from: nil, transition: .show) + } else { + await provider.coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) + } + case .hashtag(_, let hashtag, _): + let hashtagTimelineViewModel = HashtagTimelineViewModel(context: provider.context, hashtag: hashtag) + await provider.coordinator.present(scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: provider, transition: .show) + case .mention(_, let mention, let userInfo): + await coordinateToProfileScene( + provider: provider, + status: status, + mention: mention, + userInfo: userInfo + ) + default: + assertionFailure() + break + } + } + +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift new file mode 100644 index 000000000..66110764e --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift @@ -0,0 +1,53 @@ +// +// DataSourceFacade+Model.swift +// Mastodon +// +// Created by MainasuK on 2022-1-13. +// + +import Foundation +import CoreData +import CoreDataStack + +extension DataSourceFacade { + static func status( + managedObjectContext: NSManagedObjectContext, + status: ManagedObjectRecord, + target: StatusTarget + ) async -> ManagedObjectRecord? { + return try? await managedObjectContext.perform { + guard let object = status.object(in: managedObjectContext) else { return nil } + return DataSourceFacade.status(status: object, target: target) + .flatMap { ManagedObjectRecord(objectID: $0.objectID) } + } + } +} + +extension DataSourceFacade { + static func author( + managedObjectContext: NSManagedObjectContext, + status: ManagedObjectRecord, + target: StatusTarget + ) async -> ManagedObjectRecord? { + return try? await managedObjectContext.perform { + guard let object = status.object(in: managedObjectContext) else { return nil } + return DataSourceFacade.status(status: object, target: target) + .flatMap { $0.author } + .flatMap { ManagedObjectRecord(objectID: $0.objectID) } + } + } +} + +extension DataSourceFacade { + static func status( + status: Status, + target: StatusTarget + ) -> Status? { + switch target { + case .status: + return status.reblog ?? status + case .repost: + return status + } + } +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Mute.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Mute.swift new file mode 100644 index 000000000..421d5046c --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Mute.swift @@ -0,0 +1,25 @@ +// +// DataSourceFacade+Mute.swift +// Mastodon +// +// Created by MainasuK on 2022-1-24. +// + +import UIKit +import CoreDataStack + +extension DataSourceFacade { + static func responseToUserMuteAction( + dependency: NeedsDependency, + user: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws { + let selectionFeedbackGenerator = UISelectionFeedbackGenerator() + await selectionFeedbackGenerator.selectionChanged() + + _ = try await dependency.context.apiService.toggleMute( + user: user, + authenticationBox: authenticationBox + ) + } // end func +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Profile.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Profile.swift new file mode 100644 index 000000000..36eaab621 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Profile.swift @@ -0,0 +1,374 @@ +// +// DataSourceFacade+Profile.swift +// Mastodon +// +// Created by MainasuK on 2022-1-13. +// + +import UIKit +import CoreDataStack + +extension DataSourceFacade { + + static func coordinateToProfileScene( + provider: DataSourceProvider, + target: StatusTarget, + status: ManagedObjectRecord + ) async { + let _redirectRecord = await DataSourceFacade.author( + managedObjectContext: provider.context.managedObjectContext, + status: status, + target: target + ) + guard let redirectRecord = _redirectRecord else { + assertionFailure() + return + } + await coordinateToProfileScene( + provider: provider, + user: redirectRecord + ) + } + + @MainActor + static func coordinateToProfileScene( + provider: DataSourceProvider, + user: ManagedObjectRecord + ) async { + guard let user = user.object(in: provider.context.managedObjectContext) else { + assertionFailure() + return + } + + let profileViewModel = CachedProfileViewModel( + context: provider.context, + mastodonUser: user + ) + + provider.coordinator.present( + scene: .profile(viewModel: profileViewModel), + from: provider, + transition: .show + ) + } + +} + +extension DataSourceFacade { + + static func coordinateToProfileScene( + provider: DataSourceProvider, + status: ManagedObjectRecord, + mention: String, // username, + userInfo: [AnyHashable: Any]? + ) async { + guard let authenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { return } + let domain = authenticationBox.domain + + let href = userInfo?["href"] as? String + guard let url = href.flatMap({ URL(string: $0) }) else { return } + + let managedObjectContext = provider.context.managedObjectContext + let mentions = try? await managedObjectContext.perform { + return status.object(in: managedObjectContext)?.mentions ?? [] + } + + guard let mention = mentions?.first(where: { $0.username == mention }) else { + await provider.coordinator.present( + scene: .safari(url: url), + from: provider, + transition: .safariPresent(animated: true, completion: nil) + ) + return + } + + let userID = mention.id + let profileViewModel: ProfileViewModel = { + // check if self + guard userID != authenticationBox.userID else { + return MeProfileViewModel(context: provider.context) + } + + let request = MastodonUser.sortedFetchRequest + request.fetchLimit = 1 + request.predicate = MastodonUser.predicate(domain: domain, id: userID) + let _user = provider.context.managedObjectContext.safeFetch(request).first + + if let user = _user { + return CachedProfileViewModel(context: provider.context, mastodonUser: user) + } else { + return RemoteProfileViewModel(context: provider.context, userID: userID) + } + }() + + await provider.coordinator.present( + scene: .profile(viewModel: profileViewModel), + from: provider, + transition: .show + ) + } + +} + +extension DataSourceFacade { + + struct ProfileActionMenuContext { + let isMuting: Bool + let isBlocking: Bool + let isMyself: Bool + + let cell: UITableViewCell? + let sourceView: UIView? + let barButtonItem: UIBarButtonItem? + } + + @MainActor + static func createProfileActionMenu( + dependency: NeedsDependency, + user: ManagedObjectRecord + ) -> UIMenu { + var children: [UIMenuElement] = [] +// let name = mastodonUser.displayNameWithFallback +// +// if let shareUser = shareUser { +// let shareAction = UIAction( +// title: L10n.Common.Controls.Actions.shareUser(name), +// image: UIImage(systemName: "square.and.arrow.up"), +// identifier: nil, +// discoverabilityTitle: nil, +// attributes: [], +// state: .off +// ) { [weak provider, weak sourceView, weak barButtonItem] _ in +// guard let provider = provider else { return } +// let activityViewController = createActivityViewControllerForMastodonUser(mastodonUser: shareUser, dependency: provider) +// provider.coordinator.present( +// scene: .activityViewController( +// activityViewController: activityViewController, +// sourceView: sourceView, +// barButtonItem: barButtonItem +// ), +// from: provider, +// transition: .activityViewControllerPresent(animated: true, completion: nil) +// ) +// } +// children.append(shareAction) +// } +// +// if let shareStatus = shareStatus { +// let shareAction = UIAction( +// title: L10n.Common.Controls.Actions.sharePost, +// image: UIImage(systemName: "square.and.arrow.up"), +// identifier: nil, +// discoverabilityTitle: nil, +// attributes: [], +// state: .off +// ) { [weak provider, weak sourceView, weak barButtonItem] _ in +// guard let provider = provider else { return } +// let activityViewController = createActivityViewControllerForMastodonUser(status: shareStatus, dependency: provider) +// provider.coordinator.present( +// scene: .activityViewController( +// activityViewController: activityViewController, +// sourceView: sourceView, +// barButtonItem: barButtonItem +// ), +// from: provider, +// transition: .activityViewControllerPresent(animated: true, completion: nil) +// ) +// } +// children.append(shareAction) +// } +// +// if !isMyself { +// // mute +// let muteAction = UIAction( +// title: isMuting ? L10n.Common.Controls.Friendship.unmuteUser(name) : L10n.Common.Controls.Friendship.mute, +// image: isMuting ? UIImage(systemName: "speaker") : UIImage(systemName: "speaker.slash"), +// discoverabilityTitle: isMuting ? nil : L10n.Common.Controls.Friendship.muteUser(name), +// attributes: isMuting ? [] : .destructive, +// state: .off +// ) { [weak provider, weak cell] _ in +// guard let provider = provider else { return } +// +// UserProviderFacade.toggleUserMuteRelationship( +// provider: provider, +// cell: cell +// ) +// .sink { _ in +// // do nothing +// } receiveValue: { _ in +// // do nothing +// } +// .store(in: &provider.context.disposeBag) +// } +// if isMuting { +// children.append(muteAction) +// } else { +// let muteMenu = UIMenu(title: L10n.Common.Controls.Friendship.muteUser(name), image: UIImage(systemName: "speaker.slash"), options: [], children: [muteAction]) +// children.append(muteMenu) +// } +// } +// +// if !isMyself { +// // block +// let blockAction = UIAction( +// title: isBlocking ? L10n.Common.Controls.Friendship.unblockUser(name) : L10n.Common.Controls.Friendship.block, +// image: isBlocking ? UIImage(systemName: "hand.raised.slash") : UIImage(systemName: "hand.raised"), +// discoverabilityTitle: isBlocking ? nil : L10n.Common.Controls.Friendship.blockUser(name), +// attributes: isBlocking ? [] : .destructive, +// state: .off +// ) { [weak provider, weak cell] _ in +// guard let provider = provider else { return } +// +// UserProviderFacade.toggleUserBlockRelationship( +// provider: provider, +// cell: cell +// ) +// .sink { _ in +// // do nothing +// } receiveValue: { _ in +// // do nothing +// } +// .store(in: &provider.context.disposeBag) +// } +// if isBlocking { +// children.append(blockAction) +// } else { +// let blockMenu = UIMenu(title: L10n.Common.Controls.Friendship.blockUser(name), image: UIImage(systemName: "hand.raised"), options: [], children: [blockAction]) +// children.append(blockMenu) +// } +// } +// +// if !isMyself { +// let reportAction = UIAction( +// title: L10n.Common.Controls.Actions.reportUser(name), +// image: UIImage(systemName: "flag"), +// identifier: nil, +// discoverabilityTitle: nil, +// attributes: [], +// state: .off +// ) { [weak provider] _ in +// guard let provider = provider else { return } +// guard let authenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { +// return +// } +// let viewModel = ReportViewModel( +// context: provider.context, +// domain: authenticationBox.domain, +// user: mastodonUser, +// status: nil +// ) +// provider.coordinator.present( +// scene: .report(viewModel: viewModel), +// from: provider, +// transition: .modal(animated: true, completion: nil) +// ) +// } +// children.append(reportAction) +// } +// +// if !isInSameDomain { +// if isDomainBlocking { +// let unblockDomainAction = UIAction( +// title: L10n.Common.Controls.Actions.unblockDomain(mastodonUser.domainFromAcct), +// image: UIImage(systemName: "nosign"), +// identifier: nil, +// discoverabilityTitle: nil, +// attributes: [], +// state: .off +// ) { [weak provider, weak cell] _ in +// guard let provider = provider else { return } +// provider.context.blockDomainService.unblockDomain(userProvider: provider, cell: cell) +// } +// children.append(unblockDomainAction) +// } else { +// let blockDomainAction = UIAction( +// title: L10n.Common.Controls.Actions.blockDomain(mastodonUser.domainFromAcct), +// image: UIImage(systemName: "nosign"), +// identifier: nil, +// discoverabilityTitle: nil, +// attributes: [], +// state: .off +// ) { [weak provider, weak cell] _ in +// guard let provider = provider else { return } +// +// let alertController = UIAlertController(title: L10n.Common.Alerts.BlockDomain.title(mastodonUser.domainFromAcct), message: nil, preferredStyle: .alert) +// let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .default) { _ in } +// alertController.addAction(cancelAction) +// let blockDomainAction = UIAlertAction(title: L10n.Common.Alerts.BlockDomain.blockEntireDomain, style: .destructive) { [weak provider, weak cell] _ in +// guard let provider = provider else { return } +// provider.context.blockDomainService.blockDomain(userProvider: provider, cell: cell) +// } +// alertController.addAction(blockDomainAction) +// provider.present(alertController, animated: true, completion: nil) +// } +// children.append(blockDomainAction) +// } +// } +// +// if let status = shareStatus, isMyself { +// let deleteAction = UIAction( +// title: L10n.Common.Controls.Actions.delete, +// image: UIImage(systemName: "delete.left"), +// identifier: nil, +// discoverabilityTitle: nil, +// attributes: [.destructive], +// state: .off +// ) { [weak provider] _ in +// guard let provider = provider else { return } +// +// let alertController = UIAlertController(title: L10n.Common.Alerts.DeletePost.title, message: nil, preferredStyle: .alert) +// let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .default) { _ in } +// alertController.addAction(cancelAction) +// let deleteAction = UIAlertAction(title: L10n.Common.Alerts.DeletePost.delete, style: .destructive) { [weak provider] _ in +// guard let provider = provider else { return } +// guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { return } +// provider.context.apiService.deleteStatus( +// domain: activeMastodonAuthenticationBox.domain, +// statusID: status.id, +// authorizationBox: activeMastodonAuthenticationBox +// ) +// .sink { _ in +// // do nothing +// } receiveValue: { _ in +// // do nothing +// } +// .store(in: &provider.context.disposeBag) +// } +// alertController.addAction(deleteAction) +// provider.present(alertController, animated: true, completion: nil) +// } +// children.append(deleteAction) +// } + + return UIMenu(title: "", options: [], children: children) + } + + static func createActivityViewController( + dependency: NeedsDependency, + user: ManagedObjectRecord + ) async throws -> UIActivityViewController? { + let managedObjectContext = dependency.context.managedObjectContext + let activityItems: [Any] = try await managedObjectContext.perform { + guard let user = user.object(in: managedObjectContext) else { return [] } + return user.activityItems + } + guard !activityItems.isEmpty else { + assertionFailure() + return nil + } + + let activityViewController = await UIActivityViewController( + activityItems: activityItems, + applicationActivities: [SafariActivity(sceneCoordinator: dependency.coordinator)] + ) + return activityViewController + } + + static func createActivityViewControllerForMastodonUser(status: Status, dependency: NeedsDependency) -> UIActivityViewController { + let activityViewController = UIActivityViewController( + activityItems: status.activityItems, + applicationActivities: [SafariActivity(sceneCoordinator: dependency.coordinator)] + ) + return activityViewController + } +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Reblog.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Reblog.swift new file mode 100644 index 000000000..359b285d4 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Reblog.swift @@ -0,0 +1,26 @@ +// +// DataSourceFacade+Reblog.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import UIKit +import CoreDataStack +import MastodonUI + +extension DataSourceFacade { + static func responseToStatusReblogAction( + provider: DataSourceProvider, + status: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws { + let selectionFeedbackGenerator = UISelectionFeedbackGenerator() + await selectionFeedbackGenerator.selectionChanged() + + _ = try await provider.context.apiService.reblog( + record: status, + authenticationBox: authenticationBox + ) + } // end func +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+SearchHistory.swift b/Mastodon/Protocol/Provider/DataSourceFacade+SearchHistory.swift new file mode 100644 index 000000000..cbc6bf348 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+SearchHistory.swift @@ -0,0 +1,116 @@ +// +// DataSourceFacade+SearchHistory.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import Foundation +import CoreDataStack + +extension DataSourceFacade { + + static func responseToCreateSearchHistory( + provider: DataSourceProvider, + item: DataSourceItem + ) async { + switch item { + case .status: + break // not create search history for status + case .user(let record): + let authenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value + let managedObjectContext = provider.context.backgroundManagedObjectContext + + try? await managedObjectContext.performChanges { + guard let me = authenticationBox?.authenticationRecord.object(in: managedObjectContext)?.user else { return } + guard let user = record.object(in: managedObjectContext) else { return } + _ = Persistence.SearchHistory.createOrMerge( + in: managedObjectContext, + context: Persistence.SearchHistory.PersistContext( + entity: .user(user), + me: me, + now: Date() + ) + ) + } // end try? await managedObjectContext.performChanges { … } + case .hashtag(let tag): + let _authenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value + let managedObjectContext = provider.context.backgroundManagedObjectContext + + switch tag { + case .entity(let entity): + try? await managedObjectContext.performChanges { + guard let authenticationBox = _authenticationBox else { return } + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { return } + + let now = Date() + + let result = Persistence.Tag.createOrMerge( + in: managedObjectContext, + context: Persistence.Tag.PersistContext( + domain: authenticationBox.domain, + entity: entity, + me: me, + networkDate: now + ) + ) + + _ = Persistence.SearchHistory.createOrMerge( + in: managedObjectContext, + context: Persistence.SearchHistory.PersistContext( + entity: .hashtag(result.tag), + me: me, + now: now + ) + ) + } // end try? await managedObjectContext.performChanges { … } + case .record(let record): + try? await managedObjectContext.performChanges { + guard let authenticationBox = _authenticationBox else { return } + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { return } + guard let tag = record.object(in: managedObjectContext) else { return } + + let now = Date() + + _ = Persistence.SearchHistory.createOrMerge( + in: managedObjectContext, + context: Persistence.SearchHistory.PersistContext( + entity: .hashtag(tag), + me: me, + now: now + ) + ) + } // end try? await managedObjectContext.performChanges { … } + } // end switch tag { … } + case .notification: + assertionFailure() + } // end switch item { … } + } // end func + +} + +extension DataSourceFacade { + + static func responseToDeleteSearchHistory( + provider: DataSourceProvider + ) async throws { + let _authenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value + let managedObjectContext = provider.context.backgroundManagedObjectContext + + try await managedObjectContext.performChanges { + guard let authenticationBox = _authenticationBox else { return } + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { return } + let request = SearchHistory.sortedFetchRequest + request.predicate = SearchHistory.predicate( + domain: authenticationBox.domain, + userID: authenticationBox.userID + ) + let searchHistories = managedObjectContext.safeFetch(request) + + for searchHistory in searchHistories { + managedObjectContext.delete(searchHistory) + } + } // end try await managedObjectContext.performChanges { … } + } // end func + +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift new file mode 100644 index 000000000..5d3b06951 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift @@ -0,0 +1,259 @@ +// +// DataSourceFacade+Status.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import UIKit +import CoreDataStack +import MastodonUI +import MastodonLocalization + +extension DataSourceFacade { + + static func responseToDeleteStatus( + dependency: NeedsDependency, + status: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws { + _ = try await dependency.context.apiService.deleteStatus( + status: status, + authenticationBox: authenticationBox + ) + } + +} + +extension DataSourceFacade { + + @MainActor + public static func responseToStatusShareAction( + provider: DataSourceProvider, + status: ManagedObjectRecord, + button: UIButton + ) async throws { + let activityViewController = try await createActivityViewController( + provider: provider, + status: status + ) + provider.coordinator.present( + scene: .activityViewController( + activityViewController: activityViewController, + sourceView: button, + barButtonItem: nil + ), + from: provider, + transition: .activityViewControllerPresent(animated: true, completion: nil) + ) + } + + private static func createActivityViewController( + provider: DataSourceProvider, + status: ManagedObjectRecord + ) async throws -> UIActivityViewController { + var activityItems: [Any] = try await provider.context.managedObjectContext.perform { + guard let status = status.object(in: provider.context.managedObjectContext) else { return [] } + let url = status.url ?? status.uri + return [URL(string: url)].compactMap { $0 } as [Any] + } + var applicationActivities: [UIActivity] = [ + SafariActivity(sceneCoordinator: provider.coordinator), // open URL + ] + + if let provider = provider as? ShareActivityProvider { + activityItems.append(contentsOf: provider.activities) + applicationActivities.append(contentsOf: provider.applicationActivities) + } + + let activityViewController = await UIActivityViewController( + activityItems: activityItems, + applicationActivities: applicationActivities + ) + return activityViewController + } +} + +extension DataSourceFacade { + @MainActor + static func responseToActionToolbar( + provider: DataSourceProvider, + status: ManagedObjectRecord, + action: ActionToolbarContainer.Action, + authenticationBox: MastodonAuthenticationBox, + sender: UIButton + ) async throws { + let managedObjectContext = provider.context.managedObjectContext + let _status: ManagedObjectRecord? = try? await managedObjectContext.perform { + guard let object = status.object(in: managedObjectContext) else { return nil } + let objectID = (object.reblog ?? object).objectID + return .init(objectID: objectID) + } + guard let status = _status else { + assertionFailure() + return + } + + switch action { + case .reply: + guard let authenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { return } + let selectionFeedbackGenerator = UISelectionFeedbackGenerator() + selectionFeedbackGenerator.selectionChanged() + + let composeViewModel = ComposeViewModel( + context: provider.context, + composeKind: .reply(status: status), + authenticationBox: authenticationBox + ) + provider.coordinator.present( + scene: .compose(viewModel: composeViewModel), + from: provider, + transition: .modal(animated: true, completion: nil) + ) + case .reblog: + try await DataSourceFacade.responseToStatusReblogAction( + provider: provider, + status: status, + authenticationBox: authenticationBox + ) + case .like: + try await DataSourceFacade.responseToStatusFavoriteAction( + provider: provider, + status: status, + authenticationBox: authenticationBox + ) + case .share: + try await DataSourceFacade.responseToStatusShareAction( + provider: provider, + status: status, + button: sender + ) + } // end switch + } // end func + +} + +extension DataSourceFacade { + + struct MenuContext { + let author: ManagedObjectRecord? + let status: ManagedObjectRecord? + let button: UIButton? + let barButtonItem: UIBarButtonItem? + } + + @MainActor + static func responseToMenuAction( + dependency: NeedsDependency & UIViewController, + action: MastodonMenu.Action, + menuContext: MenuContext, + authenticationBox: MastodonAuthenticationBox + ) async throws { + switch action { + case .muteUser(let actionContext): + let alertController = UIAlertController( + title: actionContext.isMuting ? "Unmute Account" : "Mute Account", + message: actionContext.isMuting ? "Confirm to unmute \(actionContext.name)" : "Confirm to mute \(actionContext.name)", + preferredStyle: .alert + ) + let confirmAction = UIAlertAction( + title: actionContext.isMuting ? L10n.Common.Controls.Friendship.unmute : L10n.Common.Controls.Friendship.mute, + style: .destructive + ) { [weak dependency] _ in + guard let dependency = dependency else { return } + Task { + let managedObjectContext = dependency.context.managedObjectContext + let _user: ManagedObjectRecord? = try? await managedObjectContext.perform { + guard let user = menuContext.author?.object(in: managedObjectContext) else { return nil } + return ManagedObjectRecord(objectID: user.objectID) + } + guard let user = _user else { return } + try await DataSourceFacade.responseToUserMuteAction( + dependency: dependency, + user: user, + authenticationBox: authenticationBox + ) + } // end Task + } + alertController.addAction(confirmAction) + let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .cancel, handler: nil) + alertController.addAction(cancelAction) + dependency.present(alertController, animated: true, completion: nil) + case .blockUser(let actionContext): + let alertController = UIAlertController( + title: actionContext.isBlocking ? "Unblock Account" : "Block Account", + message: actionContext.isBlocking ? "Confirm to unblock \(actionContext.name)" : "Confirm to block \(actionContext.name)", + preferredStyle: .alert + ) + let confirmAction = UIAlertAction( + title: actionContext.isBlocking ? L10n.Common.Controls.Friendship.unblock : L10n.Common.Controls.Friendship.block, + style: .destructive + ) { [weak dependency] _ in + guard let dependency = dependency else { return } + Task { + let managedObjectContext = dependency.context.managedObjectContext + let _user: ManagedObjectRecord? = try? await managedObjectContext.perform { + guard let user = menuContext.author?.object(in: managedObjectContext) else { return nil } + return ManagedObjectRecord(objectID: user.objectID) + } + guard let user = _user else { return } + try await DataSourceFacade.responseToUserBlockAction( + dependency: dependency, + user: user, + authenticationBox: authenticationBox + ) + } // end Task + } + alertController.addAction(confirmAction) + let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .cancel, handler: nil) + alertController.addAction(cancelAction) + dependency.present(alertController, animated: true, completion: nil) + case .reportUser: + assertionFailure() + case .shareUser: + guard let user = menuContext.author else { + assertionFailure() + return + } + let _activityViewController = try await DataSourceFacade.createActivityViewController( + dependency: dependency, + user: user + ) + guard let activityViewController = _activityViewController else { return } + dependency.coordinator.present( + scene: .activityViewController( + activityViewController: activityViewController, + sourceView: menuContext.button, + barButtonItem: menuContext.barButtonItem + ), + from: dependency, + transition: .activityViewControllerPresent(animated: true, completion: nil) + ) + case .deleteStatus: + let alertController = UIAlertController( + title: "Delete Post", + message: "Are you sure you want to delete this post?", + preferredStyle: .alert + ) + let confirmAction = UIAlertAction( + title: L10n.Common.Controls.Actions.delete, + style: .destructive + ) { [weak dependency] _ in + guard let dependency = dependency else { return } + guard let status = menuContext.status else { return } + Task { + try await DataSourceFacade.responseToDeleteStatus( + dependency: dependency, + status: status, + authenticationBox: authenticationBox + ) + } // end Task + } + alertController.addAction(confirmAction) + let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .cancel, handler: nil) + alertController.addAction(cancelAction) + dependency.present(alertController, animated: true, completion: nil) + + } + } // end func +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Thread.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Thread.swift new file mode 100644 index 000000000..269504215 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Thread.swift @@ -0,0 +1,55 @@ +// +// DataSourceFacade+Thread.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import Foundation +import CoreData +import CoreDataStack + +extension DataSourceFacade { + static func coordinateToStatusThreadScene( + provider: DataSourceProvider, + target: StatusTarget, + status: ManagedObjectRecord + ) async { + let _root: StatusItem.Thread? = await { + let _redirectRecord = await DataSourceFacade.status( + managedObjectContext: provider.context.managedObjectContext, + status: status, + target: target + ) + guard let redirectRecord = _redirectRecord else { return nil } + + let threadContext = StatusItem.Thread.Context(status: redirectRecord) + return StatusItem.Thread.root(context: threadContext) + }() + guard let root = _root else { + assertionFailure() + return + } + + await coordinateToStatusThreadScene( + provider: provider, + root: root + ) + } + + @MainActor + static func coordinateToStatusThreadScene( + provider: DataSourceProvider, + root: StatusItem.Thread + ) async { + let threadViewModel = ThreadViewModel( + context: provider.context, + optionalRoot: root + ) + provider.coordinator.present( + scene: .thread(viewModel: threadViewModel), + from: provider, + transition: .show + ) + } +} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade.swift b/Mastodon/Protocol/Provider/DataSourceFacade.swift new file mode 100644 index 000000000..809aab424 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceFacade.swift @@ -0,0 +1,16 @@ +// +// DataSourceFacade.swift +// DataSourceFacade +// +// Created by Cirno MainasuK on 2021-8-30. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation + +enum DataSourceFacade { + enum StatusTarget { + case status // remove repost wrapper + case repost // keep repost wrapper + } +} diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift new file mode 100644 index 000000000..dff1e5f02 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift @@ -0,0 +1,225 @@ +// +// DataSourceProvider+NotificationTableViewCellDelegate.swift +// Mastodon +// +// Created by MainasuK on 2022-1-26. +// + +import UIKit +import MetaTextKit +import MastodonUI +import CoreDataStack + +// MARK: - Notification AuthorMenuAction +extension NotificationTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + menuButton button: UIButton, + didSelectAction action: MastodonMenu.Action + ) { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(notification) = item else { + assertionFailure("only works for status data provider") + return + } + + let _author: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } + return .init(objectID: notification.account.objectID) + } + guard let author = _author else { + assertionFailure() + return + } + + try await DataSourceFacade.responseToMenuAction( + dependency: self, + action: action, + menuContext: .init( + author: author, + status: nil, + button: button, + barButtonItem: nil + ), + authenticationBox: authenticationBox + ) + } // end Task + } +} + +// MARK: - Notification Author Avatar +extension NotificationTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + authorAvatarButtonDidPressed button: AvatarButton + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(notification) = item else { + assertionFailure("only works for status data provider") + return + } + let _author: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } + return .init(objectID: notification.account.objectID) + } + guard let author = _author else { + assertionFailure() + return + } + await DataSourceFacade.coordinateToProfileScene( + provider: self, + user: author + ) + } // end Task + } +} + +// MARK: - Status Content +extension NotificationTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + statusView: StatusView, + metaText: MetaText, + didSelectMeta meta: Meta + ) { + Task { + try await responseToStatusMeta(cell, didSelectMeta: meta) + } // end Task + } +} + +// MARK: - Status Toolbar +extension NotificationTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, + buttonDidPressed button: UIButton, + action: ActionToolbarContainer.Action + ) { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(notification) = item else { + assertionFailure("only works for status data provider") + return + } + let _status: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } + guard let status = notification.status else { return nil } + return .init(objectID: status.objectID) + } + guard let status = _status else { + assertionFailure() + return + } + try await DataSourceFacade.responseToActionToolbar( + provider: self, + status: status, + action: action, + authenticationBox: authenticationBox, + sender: button + ) + } // end Task + } +} + + +// MARK: - Status Author Avatar +extension NotificationTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + quoteStatusView: StatusView, + authorAvatarButtonDidPressed button: AvatarButton + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(notification) = item else { + assertionFailure("only works for status data provider") + return + } + let _author: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } + guard let status = notification.status else { return nil } + return .init(objectID: status.author.objectID) + } + guard let author = _author else { + assertionFailure() + return + } + await DataSourceFacade.coordinateToProfileScene( + provider: self, + user: author + ) + } // end Task + } +} + +// MARK: - Status Content +extension NotificationTableViewCellDelegate where Self: DataSourceProvider { + + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + quoteStatusView: StatusView, metaText: MetaText, + didSelectMeta meta: Meta + ) { + Task { + try await responseToStatusMeta(cell, didSelectMeta: meta) + } // end Task + } + + private func responseToStatusMeta( + _ cell: UITableViewCell, + didSelectMeta meta: Meta + ) async throws { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(notification) = item else { + assertionFailure("only works for status data provider") + return + } + let _status: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } + guard let status = notification.status else { return nil } + return .init(objectID: status.objectID) + } + guard let status = _status else { + assertionFailure() + return + } + try await DataSourceFacade.responseToMetaTextAction( + provider: self, + target: .status, + status: status, + meta: meta + ) + } + +} diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift new file mode 100644 index 000000000..9c5d3912c --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift @@ -0,0 +1,344 @@ +// +// DataSourceProvider+StatusTableViewCellDelegate.swift +// Mastodon +// +// Created by MainasuK on 2022-1-13. +// + +import UIKit +import MetaTextKit +import MastodonUI +import CoreDataStack + +// MARK: - header +extension StatusTableViewCellDelegate where Self: DataSourceProvider { + + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + headerDidPressed header: UIView + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + await DataSourceFacade.coordinateToProfileScene( + provider: self, + target: .status, // without reblog header + status: status + ) + } + } + +} + +// MARK: - avatar button +extension StatusTableViewCellDelegate where Self: DataSourceProvider { + + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + authorAvatarButtonDidPressed button: AvatarButton + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + await DataSourceFacade.coordinateToProfileScene( + provider: self, + target: .status, + status: status + ) + } + } + +} + +// MARK: - content +extension StatusTableViewCellDelegate where Self: DataSourceProvider { + + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + metaText: MetaText, + didSelectMeta meta: Meta + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + + try await DataSourceFacade.responseToMetaTextAction( + provider: self, + target: .status, + status: status, + meta: meta + ) + } + } + +} + +// MARK: - media +extension StatusTableViewCellDelegate where Self: DataSourceProvider & MediaPreviewableViewController { + + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + mediaGridContainerView: MediaGridContainerView, + mediaView: MediaView, + didSelectMediaViewAt index: Int + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + try await DataSourceFacade.coordinateToMediaPreviewScene( + dependency: self, + status: status, + previewContext: DataSourceFacade.AttachmentPreviewContext( + containerView: .mediaGridContainerView(mediaGridContainerView), + mediaView: mediaView, + index: index + ) + ) + } // end Task + } + +} + + +// MARK: - poll +extension StatusTableViewCellDelegate where Self: DataSourceProvider { + + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + pollTableView tableView: UITableView, + didSelectRowAt indexPath: IndexPath + ) { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + guard let pollTableViewDiffableDataSource = statusView.pollTableViewDiffableDataSource else { return } + guard let pollItem = pollTableViewDiffableDataSource.itemIdentifier(for: indexPath) else { return } + + let managedObjectContext = context.managedObjectContext + + Task { + guard case let .option(pollOption) = pollItem else { + assertionFailure("only works for status data provider") + return + } + + var _poll: ManagedObjectRecord? + var _isMultiple: Bool? + var _choice: Int? + + try await managedObjectContext.performChanges { + guard let pollOption = pollOption.object(in: managedObjectContext) else { return } + let poll = pollOption.poll + _poll = .init(objectID: poll.objectID) + + _isMultiple = poll.multiple + guard !poll.isVoting else { return } + + if !poll.multiple { + for option in poll.options where option != pollOption { + option.update(isSelected: false) + } + + // mark voting + poll.update(isVoting: true) + // set choice + _choice = Int(pollOption.index) + } + + pollOption.update(isSelected: !pollOption.isSelected) + poll.update(updatedAt: Date()) + } + + // Trigger vote API request for + guard let poll = _poll, + _isMultiple == false, + let choice = _choice + else { return } + + do { + _ = try await context.apiService.vote( + poll: poll, + choices: [choice], + authenticationBox: authenticationBox + ) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): vote poll for \(choice) success") + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): vote poll fail: \(error.localizedDescription)") + + // restore voting state + try await managedObjectContext.performChanges { + guard let pollOption = pollOption.object(in: managedObjectContext) else { return } + let poll = pollOption.poll + poll.update(isVoting: false) + } + } + + } // end Task + } + + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + pollVoteButtonPressed button: UIButton + ) { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + guard let pollTableViewDiffableDataSource = statusView.pollTableViewDiffableDataSource else { return } + guard let firstPollItem = pollTableViewDiffableDataSource.snapshot().itemIdentifiers.first else { return } + guard case let .option(firstPollOption) = firstPollItem else { return } + + let managedObjectContext = context.managedObjectContext + + Task { + var _poll: ManagedObjectRecord? + var _choices: [Int]? + + try await managedObjectContext.performChanges { + guard let poll = firstPollOption.object(in: managedObjectContext)?.poll else { return } + _poll = .init(objectID: poll.objectID) + + guard poll.multiple else { return } + + // mark voting + poll.update(isVoting: true) + // set choice + _choices = poll.options + .filter { $0.isSelected } + .map { Int($0.index) } + + poll.update(updatedAt: Date()) + } + + // Trigger vote API request for + guard let poll = _poll, + let choices = _choices + else { return } + + do { + _ = try await context.apiService.vote( + poll: poll, + choices: choices, + authenticationBox: authenticationBox + ) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): vote poll for \(choices) success") + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): vote poll fail: \(error.localizedDescription)") + + // restore voting state + try await managedObjectContext.performChanges { + guard let poll = poll.object(in: managedObjectContext) else { return } + poll.update(isVoting: false) + } + } + + } // end Task + } + +} + +// MARK: - toolbar +extension StatusTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + actionToolbarContainer: ActionToolbarContainer, + buttonDidPressed button: UIButton, + action: ActionToolbarContainer.Action + ) { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + + try await DataSourceFacade.responseToActionToolbar( + provider: self, + status: status, + action: action, + authenticationBox: authenticationBox, + sender: button + ) + } // end Task + } + +} + +extension StatusTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + menuButton button: UIButton, + didSelectAction action: MastodonMenu.Action + ) { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + let _author: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let _status = status.object(in: self.context.managedObjectContext) else { return nil } + let author = (_status.reblog ?? _status).author + return .init(objectID: author.objectID) + } + guard let author = _author else { + assertionFailure() + return + } + + try await DataSourceFacade.responseToMenuAction( + dependency: self, + action: action, + menuContext: .init( + author: author, + status: status, + button: button, + barButtonItem: nil + ), + authenticationBox: authenticationBox + ) + } // end Task + } + +} diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+UITableViewDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+UITableViewDelegate.swift new file mode 100644 index 000000000..3968df110 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceProvider+UITableViewDelegate.swift @@ -0,0 +1,274 @@ +// +// DataSourceProvider+UITableViewDelegate.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import os.log +import UIKit +import CoreDataStack +import MastodonLocalization + +extension UITableViewDelegate where Self: DataSourceProvider { + + func aspectTableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): indexPath: \(indexPath.debugDescription)") + Task { + let source = DataSourceItem.Source(tableViewCell: nil, indexPath: indexPath) + guard let item = await item(from: source) else { + return + } + switch item { + case .status(let status): + await DataSourceFacade.coordinateToStatusThreadScene( + provider: self, + target: .status, // remove reblog wrapper + status: status + ) + case .user(let user): + await DataSourceFacade.coordinateToProfileScene( + provider: self, + user: user + ) + case .hashtag(let tag): + await DataSourceFacade.coordinateToHashtagScene( + provider: self, + tag: tag + ) + case .notification(let notification): + let managedObjectContext = context.managedObjectContext + + let _status: ManagedObjectRecord? = try await managedObjectContext.perform { + guard let notification = notification.object(in: managedObjectContext) else { return nil } + guard let status = notification.status else { return nil } + return .init(objectID: status.objectID) + } + if let status = _status { + await DataSourceFacade.coordinateToStatusThreadScene( + provider: self, + target: .status, // remove reblog wrapper + status: status + ) + } else { + let _author: ManagedObjectRecord? = try await managedObjectContext.perform { + guard let notification = notification.object(in: managedObjectContext) else { return nil } + return .init(objectID: notification.account.objectID) + } + if let author = _author { + await DataSourceFacade.coordinateToProfileScene( + provider: self, + user: author + ) + } + } + } + } // end Task + } // end func + +} + +extension UITableViewDelegate where Self: DataSourceProvider & MediaPreviewableViewController { + + func aspectTableView( + _ tableView: UITableView, + contextMenuConfigurationForRowAt + indexPath: IndexPath, point: CGPoint + ) -> UIContextMenuConfiguration? { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + + guard let cell = tableView.cellForRow(at: indexPath) as? StatusViewContainerTableViewCell else { return nil } + + let mediaViews = cell.statusView.mediaGridContainerView.mediaViews + +// if cell.statusView.mediaGridContainerView.viewModel.isContentWarningOverlayDisplay == true { +// return nil +// } + + for (i, mediaView) in mediaViews.enumerated() { + let pointInMediaView = mediaView.convert(point, from: tableView) + guard mediaView.point(inside: pointInMediaView, with: nil) else { + continue + } + guard let image = mediaView.thumbnail(), + let assetURLString = mediaView.configuration?.assetURL, + let assetURL = URL(string: assetURLString), + let resourceType = mediaView.configuration?.resourceType + else { + // not provide preview unless thumbnail ready + return nil + } + + let contextMenuImagePreviewViewModel = ContextMenuImagePreviewViewModel( + assetURL: assetURL, + thumbnail: image, + aspectRatio: image.size + ) + + let configuration = TimelineTableViewCellContextMenuConfiguration(identifier: nil) { () -> UIViewController? in + if UIDevice.current.userInterfaceIdiom == .pad && mediaViews.count == 1 { + return nil + } + let previewProvider = ContextMenuImagePreviewViewController() + previewProvider.viewModel = contextMenuImagePreviewViewModel + return previewProvider + + } actionProvider: { _ -> UIMenu? in + return UIMenu( + title: "", + image: nil, + identifier: nil, + options: [], + children: [ + UIAction( + title: L10n.Common.Controls.Actions.savePhoto, + image: UIImage(systemName: "square.and.arrow.down"), + attributes: [], + state: .off + ) { [weak self] _ in + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: save photo", ((#file as NSString).lastPathComponent), #line, #function) + guard let self = self else { return } + Task { @MainActor in + do { + try await self.context.photoLibraryService.save( + imageSource: .url(assetURL) + ).singleOutput() + } catch { + guard let error = error as? PhotoLibraryService.PhotoLibraryError, + case .noPermission = error + else { return } + let alertController = SettingService.openSettingsAlertController( + title: L10n.Common.Alerts.SavePhotoFailure.title, + message: L10n.Common.Alerts.SavePhotoFailure.message + ) + self.coordinator.present( + scene: .alertController(alertController: alertController), + from: self, + transition: .alertController(animated: true, completion: nil) + ) + } + } // end Task + }, + UIAction( + title: L10n.Common.Controls.Actions.copyPhoto, + image: UIImage(systemName: "doc.on.doc"), + identifier: nil, + discoverabilityTitle: nil, + attributes: [], + state: .off + ) { [weak self] _ in + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: copy photo", ((#file as NSString).lastPathComponent), #line, #function) + guard let self = self else { return } + Task { + try await self.context.photoLibraryService.copy( + imageSource: .url(assetURL) + ).singleOutput() + } + }, + UIAction( + title: L10n.Common.Controls.Actions.share, + image: UIImage(systemName: "square.and.arrow.up")!, + identifier: nil, + discoverabilityTitle: nil, + attributes: [], + state: .off + ) { [weak self] _ in + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: share", ((#file as NSString).lastPathComponent), #line, #function) + guard let self = self else { return } + Task { + let applicationActivities: [UIActivity] = [ + SafariActivity(sceneCoordinator: self.coordinator) + ] + let activityViewController = UIActivityViewController( + activityItems: [assetURL], + applicationActivities: applicationActivities + ) + activityViewController.popoverPresentationController?.sourceView = mediaView + self.present(activityViewController, animated: true, completion: nil) + } + } + ] + ) + } + configuration.indexPath = indexPath + configuration.index = i + return configuration + } // end for … in … + + return nil + } + + func aspectTableView( + _ tableView: UITableView, + previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration + ) -> UITargetedPreview? { + return aspectTableView(tableView, configuration: configuration) + } + + func aspectTableView( + _ tableView: UITableView, + previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration + ) -> UITargetedPreview? { + return aspectTableView(tableView, configuration: configuration) + } + + private func aspectTableView( + _ tableView: UITableView, + configuration: UIContextMenuConfiguration + ) -> UITargetedPreview? { + guard let configuration = configuration as? TimelineTableViewCellContextMenuConfiguration else { return nil } + guard let indexPath = configuration.indexPath, let index = configuration.index else { return nil } + if let cell = tableView.cellForRow(at: indexPath) as? StatusViewContainerTableViewCell { + let mediaViews = cell.statusView.mediaGridContainerView.mediaViews + guard index < mediaViews.count else { return nil } + let mediaView = mediaViews[index] + let parameters = UIPreviewParameters() + parameters.backgroundColor = .clear + parameters.visiblePath = UIBezierPath(roundedRect: mediaView.bounds, cornerRadius: MediaView.cornerRadius) + return UITargetedPreview(view: mediaView, parameters: parameters) + } else { + return nil + } + } + + func aspectTableView( + _ tableView: UITableView, + willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, + animator: UIContextMenuInteractionCommitAnimating + ) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + + guard let configuration = configuration as? TimelineTableViewCellContextMenuConfiguration else { return } + guard let indexPath = configuration.indexPath, let index = configuration.index else { return } + guard let cell = tableView.cellForRow(at: indexPath) as? StatusViewContainerTableViewCell else { return } + let mediaGridContainerView = cell.statusView.mediaGridContainerView + let mediaViews = mediaGridContainerView.mediaViews + guard index < mediaViews.count else { return } + let mediaView = mediaViews[index] + + animator.addCompletion { + Task { [weak self] in + guard let self = self else { return } + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await self.item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + try await DataSourceFacade.coordinateToMediaPreviewScene( + dependency: self, + status: status, + previewContext: DataSourceFacade.AttachmentPreviewContext( + containerView: .mediaGridContainerView(mediaGridContainerView), + mediaView: mediaView, + index: index + ) + ) + } // end Task + } // end animator.addCompletion { … } + + } +} diff --git a/Mastodon/Protocol/Provider/DataSourceProvider.swift b/Mastodon/Protocol/Provider/DataSourceProvider.swift new file mode 100644 index 000000000..425e40417 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceProvider.swift @@ -0,0 +1,50 @@ +// +// DataSourceProvider.swift +// DataSourceProvider +// +// Created by Cirno MainasuK on 2021-8-30. +// Copyright © 2021 Twidere. All rights reserved. +// + +import os.log +import UIKit +import CoreDataStack +import MastodonSDK +import class CoreDataStack.Notification + +enum DataSourceItem: Hashable { + case status(record: ManagedObjectRecord) + case user(record: ManagedObjectRecord) + case hashtag(tag: TagKind) + case notification(record: ManagedObjectRecord) +} + +extension DataSourceItem { + enum TagKind: Hashable { + case entity(Mastodon.Entity.Tag) + case record(ManagedObjectRecord) + } +} + +extension DataSourceItem { + struct Source { + let collectionViewCell: UICollectionViewCell? + let tableViewCell: UITableViewCell? + let indexPath: IndexPath? + + init( + collectionViewCell: UICollectionViewCell? = nil, + tableViewCell: UITableViewCell? = nil, + indexPath: IndexPath? = nil + ) { + self.collectionViewCell = collectionViewCell + self.tableViewCell = tableViewCell + self.indexPath = indexPath + } + } +} + +protocol DataSourceProvider: NeedsDependency & UIViewController { + var logger: Logger { get } + func item(from source: DataSourceItem.Source) async -> DataSourceItem? +} diff --git a/Mastodon/Protocol/SegmentedControlNavigateable.swift b/Mastodon/Protocol/SegmentedControlNavigateable.swift index ed76de21f..097e0b3ad 100644 --- a/Mastodon/Protocol/SegmentedControlNavigateable.swift +++ b/Mastodon/Protocol/SegmentedControlNavigateable.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization typealias SegmentedControlNavigateable = SegmentedControlNavigateableCore & SegmentedControlNavigateableRelay diff --git a/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewCellDelegate.swift deleted file mode 100644 index 5dab05295..000000000 --- a/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewCellDelegate.swift +++ /dev/null @@ -1,194 +0,0 @@ -// -// StatusProvider+StatusTableViewCellDelegate.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/8. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack -import MastodonSDK -import Meta -import MetaTextKit - -// MARK: - StatusViewDelegate -extension StatusTableViewCellDelegate where Self: StatusProvider { - - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, headerInfoLabelDidPressed label: UILabel) { - StatusProviderFacade.coordinateToStatusAuthorProfileScene(for: .secondary, provider: self, cell: cell) - } - - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) { - StatusProviderFacade.coordinateToStatusAuthorProfileScene(for: .primary, provider: self, cell: cell) - } - - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { - StatusProviderFacade.responseToStatusMetaTextAction(provider: self, cell: cell, metaText: metaText, didSelectMeta: meta) - } - - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { - StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) - } - - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) - } - -} - -// MARK: - ActionToolbarContainerDelegate -extension StatusTableViewCellDelegate where Self: StatusProvider { - - func statusTableViewCell(_ cell: StatusTableViewCell, actionToolbarContainer: ActionToolbarContainer, replyButtonDidPressed sender: UIButton) { - StatusProviderFacade.responseToStatusReplyAction(provider: self, cell: cell) - } - - func statusTableViewCell(_ cell: StatusTableViewCell, actionToolbarContainer: ActionToolbarContainer, reblogButtonDidPressed sender: UIButton) { - StatusProviderFacade.responseToStatusReblogAction(provider: self, cell: cell) - } - - func statusTableViewCell(_ cell: StatusTableViewCell, actionToolbarContainer: ActionToolbarContainer, likeButtonDidPressed sender: UIButton) { - StatusProviderFacade.responseToStatusLikeAction(provider: self, cell: cell) - } - -} - -// MARK: - MosciaImageViewContainerDelegate -extension StatusTableViewCellDelegate where Self: StatusProvider { - - - func statusTableViewCell(_ cell: StatusTableViewCell, mosaicImageViewContainer: MosaicImageViewContainer, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) - } - - func statusTableViewCell(_ cell: StatusTableViewCell, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) - } - - func statusTableViewCell(_ cell: StatusTableViewCell, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) - } - -} - -extension StatusTableViewCellDelegate where Self: StatusProvider & MediaPreviewableViewController { - func statusTableViewCell(_ cell: StatusTableViewCell, mosaicImageViewContainer: MosaicImageViewContainer, didTapImageView imageView: UIImageView, atIndex index: Int) { - if UIAccessibility.isVoiceOverRunning, !(self is ThreadViewController) { - StatusProviderFacade.coordinateToStatusThreadScene(for: .primary, provider: self, cell: cell) - } else { - StatusProviderFacade.coordinateToStatusMediaPreviewScene(provider: self, cell: cell, mosaicImageView: mosaicImageViewContainer, didTapImageView: imageView, atIndex: index) - } - } -} - -// MARK: - PollTableView -extension StatusTableViewCellDelegate where Self: StatusProvider { - - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, pollVoteButtonPressed button: UIButton) { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - status(for: cell, indexPath: nil) - .receive(on: DispatchQueue.main) - .setFailureType(to: Error.self) - .compactMap { status -> AnyPublisher, Error>? in - guard let status = (status?.reblog ?? status) else { return nil } - guard let poll = status.poll else { return nil } - - let votedOptions = poll.options.filter { ($0.votedBy ?? Set()).contains(where: { $0.id == activeMastodonAuthenticationBox.userID }) } - let choices = votedOptions.map { $0.index.intValue } - let domain = poll.status.domain - - button.isEnabled = false - - return self.context.apiService.vote( - domain: domain, - pollID: poll.id, - pollObjectID: poll.objectID, - choices: choices, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - } - .switchToLatest() - .sink(receiveCompletion: { completion in - switch completion { - case .failure(let error): - // TODO: handle error - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: multiple vote fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - button.isEnabled = true - case .finished: - break - } - }, receiveValue: { response in - // do nothing - }) - .store(in: &context.disposeBag) - } - - func statusTableViewCell(_ cell: StatusTableViewCell, pollTableView: PollTableView, didSelectRowAt indexPath: IndexPath) { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - guard let activeMastodonAuthentication = context.authenticationService.activeMastodonAuthentication.value else { return } - - guard let diffableDataSource = cell.statusView.pollTableViewDataSource else { return } - let item = diffableDataSource.itemIdentifier(for: indexPath) - guard case let .option(objectID, _) = item else { return } - guard let option = managedObjectContext.object(with: objectID) as? PollOption else { return } - - let poll = option.poll - let pollObjectID = option.poll.objectID - let domain = poll.status.domain - - if poll.multiple { - var votedOptions = poll.options.filter { ($0.votedBy ?? Set()).contains(where: { $0.id == activeMastodonAuthenticationBox.userID }) } - if votedOptions.contains(option) { - votedOptions.remove(option) - } else { - votedOptions.insert(option) - } - let choices = votedOptions.map { $0.index.intValue } - context.apiService.vote( - pollObjectID: option.poll.objectID, - mastodonUserObjectID: activeMastodonAuthentication.user.objectID, - choices: choices - ) - .handleEvents(receiveOutput: { _ in - // TODO: add haptic - }) - .receive(on: DispatchQueue.main) - .sink { completion in - // Do nothing - } receiveValue: { _ in - // Do nothing - } - .store(in: &context.disposeBag) - } else { - let choices = [option.index.intValue] - context.apiService.vote( - pollObjectID: pollObjectID, - mastodonUserObjectID: activeMastodonAuthentication.user.objectID, - choices: [option.index.intValue] - ) - .handleEvents(receiveOutput: { _ in - // TODO: add haptic - }) - .flatMap { pollID -> AnyPublisher, Error> in - return self.context.apiService.vote( - domain: domain, - pollID: pollID, - pollObjectID: pollObjectID, - choices: choices, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - } - .receive(on: DispatchQueue.main) - .sink { completion in - - } receiveValue: { response in - print(response.value) - } - .store(in: &context.disposeBag) - } - } - -} diff --git a/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewKeyCommandNavigateable.swift b/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewKeyCommandNavigateable.swift deleted file mode 100644 index 4503057a1..000000000 --- a/Mastodon/Protocol/StatusProvider/StatusProvider+StatusTableViewKeyCommandNavigateable.swift +++ /dev/null @@ -1,100 +0,0 @@ -// -// StatusProvider+KeyCommands.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-5-19. -// - -import os.log -import UIKit - -extension StatusTableViewControllerNavigateableCore where Self: StatusProvider & StatusTableViewControllerNavigateableRelay { - - var statusNavigationKeyCommands: [UIKeyCommand] { - StatusTableViewNavigation.allCases.map { navigation in - UIKeyCommand( - title: navigation.title, - image: nil, - action: #selector(Self.statusKeyCommandHandlerRelay(_:)), - input: navigation.input, - modifierFlags: navigation.modifierFlags, - propertyList: navigation.propertyList, - alternates: [], - discoverabilityTitle: nil, - attributes: [], - state: .off - ) - } - } - -} - -extension StatusTableViewControllerNavigateableCore where Self: StatusProvider { - - func statusKeyCommandHandler(_ sender: UIKeyCommand) { - guard let rawValue = sender.propertyList as? String, - let navigation = StatusTableViewNavigation(rawValue: rawValue) else { return } - - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: %s", ((#file as NSString).lastPathComponent), #line, #function, navigation.title) - switch navigation { - case .openAuthorProfile: openAuthorProfile() - case .openRebloggerProfile: openRebloggerProfile() - case .replyStatus: replyStatus() - case .toggleReblog: toggleReblog() - case .toggleFavorite: toggleFavorite() - case .toggleContentWarning: toggleContentWarning() - case .previewImage: previewImage() - } - } - -} - -// status coordinate -extension StatusTableViewControllerNavigateableCore where Self: StatusProvider { - - private func openAuthorProfile() { - guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } - StatusProviderFacade.coordinateToStatusAuthorProfileScene(for: .primary, provider: self, indexPath: indexPathForSelectedRow) - } - - private func openRebloggerProfile() { - guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } - StatusProviderFacade.coordinateToStatusAuthorProfileScene(for: .secondary, provider: self, indexPath: indexPathForSelectedRow) - } - - private func replyStatus() { - guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } - StatusProviderFacade.responseToStatusReplyAction(provider: self, indexPath: indexPathForSelectedRow) - } - - private func previewImage() { - guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } - guard let provider = self as? (StatusProvider & MediaPreviewableViewController) else { return } - guard let cell = tableView.cellForRow(at: indexPathForSelectedRow), - let presentable = cell as? MosaicImageViewContainerPresentable else { return } - let mosaicImageView = presentable.mosaicImageViewContainer - guard let imageView = mosaicImageView.imageViews.first else { return } - StatusProviderFacade.coordinateToStatusMediaPreviewScene(provider: provider, cell: cell, mosaicImageView: mosaicImageView, didTapImageView: imageView, atIndex: 0) - } - -} - -// toggle -extension StatusTableViewControllerNavigateableCore where Self: StatusProvider { - - private func toggleReblog() { - guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } - StatusProviderFacade.responseToStatusReblogAction(provider: self, indexPath: indexPathForSelectedRow) - } - - private func toggleFavorite() { - guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } - StatusProviderFacade.responseToStatusLikeAction(provider: self, indexPath: indexPathForSelectedRow) - } - - private func toggleContentWarning() { - guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } - StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, indexPath: indexPathForSelectedRow) - } - -} diff --git a/Mastodon/Protocol/StatusProvider/StatusProvider+TableViewControllerNavigateable.swift b/Mastodon/Protocol/StatusProvider/StatusProvider+TableViewControllerNavigateable.swift deleted file mode 100644 index 8be4acd59..000000000 --- a/Mastodon/Protocol/StatusProvider/StatusProvider+TableViewControllerNavigateable.swift +++ /dev/null @@ -1,153 +0,0 @@ -// -// StatusProvider+TableViewControllerNavigateable.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-5-21. -// - -import os.log -import UIKit - -extension TableViewControllerNavigateableCore where Self: TableViewControllerNavigateableRelay { - var navigationKeyCommands: [UIKeyCommand] { - TableViewNavigation.allCases.map { navigation in - UIKeyCommand( - title: navigation.title, - image: nil, - action: #selector(Self.navigateKeyCommandHandlerRelay(_:)), - input: navigation.input, - modifierFlags: navigation.modifierFlags, - propertyList: navigation.propertyList, - alternates: [], - discoverabilityTitle: nil, - attributes: [], - state: .off - ) - } - } -} - -extension TableViewControllerNavigateableCore { - - func navigateKeyCommandHandler(_ sender: UIKeyCommand) { - guard let rawValue = sender.propertyList as? String, - let navigation = TableViewNavigation(rawValue: rawValue) else { return } - - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: %s", ((#file as NSString).lastPathComponent), #line, #function, navigation.title) - switch navigation { - case .up: navigate(direction: .up) - case .down: navigate(direction: .down) - case .back: back() - case .open: open() - } - } - -} - - -// navigate status up/down -extension TableViewControllerNavigateableCore where Self: StatusProvider { - - func navigate(direction: TableViewNavigationDirection) { - if let indexPathForSelectedRow = tableView.indexPathForSelectedRow { - // navigate up/down on the current selected item - navigateToStatus(direction: direction, indexPath: indexPathForSelectedRow) - } else { - // set first visible item selected - navigateToFirstVisibleStatus() - } - } - - private func navigateToStatus(direction: TableViewNavigationDirection, indexPath: IndexPath) { - guard let diffableDataSource = tableViewDiffableDataSource else { return } - let items = diffableDataSource.snapshot().itemIdentifiers - guard let selectedItem = diffableDataSource.itemIdentifier(for: indexPath), - let selectedItemIndex = items.firstIndex(of: selectedItem) else { - return - } - - let _navigateToItem: Item? = { - var index = selectedItemIndex - while 0.. 1 { - // drop first when visible not the first cell of table - visibleItems.removeFirst() - } - guard let item = visibleItems.first, let indexPath = diffableDataSource.indexPath(for: item) else { return } - let scrollPosition: UITableView.ScrollPosition = overrideNavigationScrollPosition ?? Self.navigateScrollPosition(tableView: tableView, indexPath: indexPath) - tableView.selectRow(at: indexPath, animated: true, scrollPosition: scrollPosition) - } - - static func validNavigateableItem(_ item: Item) -> Bool { - switch item { - case .homeTimelineIndex, - .status, - .root, .leaf, .reply: - return true - default: - return false - } - } - -} - -extension TableViewControllerNavigateableCore { - // check is visible and not the first and last - static func navigateScrollPosition(tableView: UITableView, indexPath: IndexPath) -> UITableView.ScrollPosition { - let middleVisibleIndexPaths = (tableView.indexPathsForVisibleRows ?? []) - .sorted() - .dropFirst() - .dropLast() - guard middleVisibleIndexPaths.contains(indexPath) else { - return .top - } - guard middleVisibleIndexPaths.count > 2 else { - return .middle - } - return .none - } - -} - -extension TableViewControllerNavigateableCore where Self: StatusProvider { - func open() { - guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } - StatusProviderFacade.coordinateToStatusThreadScene(for: .primary, provider: self, indexPath: indexPathForSelectedRow) - } -} - -extension TableViewControllerNavigateableCore where Self: UIViewController { - func back() { - UserDefaults.shared.backKeyCommandPressDate = Date() - navigationController?.popViewController(animated: true) - } -} diff --git a/Mastodon/Protocol/StatusProvider/StatusProvider+UITableViewDataSourcePrefetching.swift b/Mastodon/Protocol/StatusProvider/StatusProvider+UITableViewDataSourcePrefetching.swift deleted file mode 100644 index 537f10c8c..000000000 --- a/Mastodon/Protocol/StatusProvider/StatusProvider+UITableViewDataSourcePrefetching.swift +++ /dev/null @@ -1,58 +0,0 @@ -// -// StatusProvider+UITableViewDataSourcePrefetching.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-10. -// - -import UIKit -import CoreData -import CoreDataStack - -extension StatusTableViewCellDelegate where Self: StatusProvider { - func handleTableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - let statusObjectItems = self.statusObjectItems(indexPaths: indexPaths) - self.context.statusPrefetchingService.prefetch(statusObjectItems: statusObjectItems) - - // prefetch reply status - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - let domain = activeMastodonAuthenticationBox.domain - let items = self.items(indexPaths: indexPaths) - - let managedObjectContext = context.managedObjectContext - managedObjectContext.perform { [weak self] in - guard let self = self else { return } - - var statuses: [Status] = [] - for item in items { - switch item { - case .homeTimelineIndex(let objectID, _): - guard let homeTimelineIndex = try? managedObjectContext.existingObject(with: objectID) as? HomeTimelineIndex else { continue } - statuses.append(homeTimelineIndex.status) - case .status(let objectID, _): - guard let status = try? managedObjectContext.existingObject(with: objectID) as? Status else { continue } - statuses.append(status) - default: - continue - } - } - - for status in statuses { - if let replyToID = status.inReplyToID, status.replyTo == nil { - self.context.statusPrefetchingService.prefetchReplyTo( - domain: domain, - statusObjectID: status.objectID, - statusID: status.id, - replyToStatusID: replyToID, - authorizationBox: activeMastodonAuthenticationBox - ) - } - } // end for in - } // end context.perform - } // end func - - func handleTableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) { - let statusObjectItems = self.statusObjectItems(indexPaths: indexPaths) - self.context.statusPrefetchingService.cancelPrefetch(statusObjectItems: statusObjectItems) - } -} diff --git a/Mastodon/Protocol/StatusProvider/StatusProvider+UITableViewDelegate.swift b/Mastodon/Protocol/StatusProvider/StatusProvider+UITableViewDelegate.swift deleted file mode 100644 index 1abfcf70b..000000000 --- a/Mastodon/Protocol/StatusProvider/StatusProvider+UITableViewDelegate.swift +++ /dev/null @@ -1,393 +0,0 @@ -// -// StatusProvider+UITableViewDelegate.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-3. -// - -import Combine -import CoreDataStack -import MastodonSDK -import os.log -import UIKit - -extension StatusTableViewCellDelegate where Self: StatusProvider { - - func handleTableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - // update poll when status appear - let now = Date() - var pollID: Mastodon.Entity.Poll.ID? - status(for: cell, indexPath: indexPath) - .compactMap { [weak self] status -> AnyPublisher, Error>? in - guard let self = self else { return nil } - guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else { return nil } - guard let status = (status?.reblog ?? status) else { return nil } - guard let poll = status.poll else { return nil } - pollID = poll.id - - // not expired AND last update > 60s - guard !poll.expired else { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: poll %s expired. Skip for update", (#file as NSString).lastPathComponent, #line, #function, poll.id) - return nil - } - let timeIntervalSinceUpdate = now.timeIntervalSince(poll.updatedAt) - #if DEBUG - let autoRefreshTimeInterval: TimeInterval = 3 // speedup testing - #else - let autoRefreshTimeInterval: TimeInterval = 60 - #endif - guard timeIntervalSinceUpdate > autoRefreshTimeInterval else { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: poll %s updated in the %.2fs. Skip for update", (#file as NSString).lastPathComponent, #line, #function, poll.id, timeIntervalSinceUpdate) - return nil - } - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: poll %s info update…", (#file as NSString).lastPathComponent, #line, #function, poll.id) - - return self.context.apiService.poll( - domain: status.domain, - pollID: poll.id, - pollObjectID: poll.objectID, - mastodonAuthenticationBox: authenticationBox - ) - } - .setFailureType(to: Error.self) - .switchToLatest() - .receive(on: DispatchQueue.main) - .sink(receiveCompletion: { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: poll %s info fail to update: %s", (#file as NSString).lastPathComponent, #line, #function, pollID ?? "?", error.localizedDescription) - case .finished: - break - } - }, receiveValue: { response in - let poll = response.value - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: poll %s info updated", (#file as NSString).lastPathComponent, #line, #function, poll.id) - }) - .store(in: &disposeBag) - - status(for: cell, indexPath: indexPath) - .receive(on: RunLoop.main) - .sink { [weak self] status in - guard let self = self else { return } - let status = status?.reblog ?? status - guard let media = (status?.mediaAttachments ?? Set()).first else { return } - guard let videoPlayerViewModel = self.context.videoPlaybackService.dequeueVideoPlayerViewModel(for: media) else { return } - - DispatchQueue.main.async { - videoPlayerViewModel.willDisplay() - } - } - .store(in: &disposeBag) - } - - func handleTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - // os_log("%{public}s[%{public}ld], %{public}s: indexPath %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription) - - status(for: cell, indexPath: indexPath) - .sink { [weak self] status in - guard let self = self else { return } - guard let media = (status?.mediaAttachments ?? Set()).first else { return } - - if let videoPlayerViewModel = self.context.videoPlaybackService.dequeueVideoPlayerViewModel(for: media) { - DispatchQueue.main.async { - videoPlayerViewModel.didEndDisplaying() - } - } - if let currentAudioAttachment = self.context.audioPlaybackService.attachment, - status?.mediaAttachments?.contains(currentAudioAttachment) == true { - self.context.audioPlaybackService.pause() - } - } - .store(in: &disposeBag) - } - - func handleTableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - StatusProviderFacade.coordinateToStatusThreadScene(for: .primary, provider: self, indexPath: indexPath) - } - -} - -extension StatusTableViewCellDelegate where Self: StatusProvider { - - private typealias ImagePreviewPresentableCell = UITableViewCell & DisposeBagCollectable & MosaicImageViewContainerPresentable - - func handleTableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { - guard let imagePreviewPresentableCell = tableView.cellForRow(at: indexPath) as? ImagePreviewPresentableCell else { return nil } - guard imagePreviewPresentableCell.isRevealing else { return nil } - - let status = self.status(for: nil, indexPath: indexPath) - - return contextMenuConfiguration(tableView, status: status, imagePreviewPresentableCell: imagePreviewPresentableCell, contextMenuConfigurationForRowAt: indexPath, point: point) - } - - private func contextMenuConfiguration( - _ tableView: UITableView, - status: Future, - imagePreviewPresentableCell presentable: ImagePreviewPresentableCell, - contextMenuConfigurationForRowAt indexPath: IndexPath, - point: CGPoint - ) -> UIContextMenuConfiguration? { - let imageViews = presentable.mosaicImageViewContainer.imageViews - guard !imageViews.isEmpty else { return nil } - - for (i, imageView) in imageViews.enumerated() { - let pointInImageView = imageView.convert(point, from: tableView) - guard imageView.point(inside: pointInImageView, with: nil) else { - continue - } - guard let image = imageView.image, image.size != CGSize(width: 1, height: 1) else { - // not provide preview until image ready - return nil - - } - // setup preview - let contextMenuImagePreviewViewModel = ContextMenuImagePreviewViewModel(aspectRatio: image.size, thumbnail: image) - status - .sink { status in - guard let status = (status?.reblog ?? status), - let media = status.mediaAttachments?.sorted(by:{ $0.index.compare($1.index) == .orderedAscending }), - i < media.count, let url = URL(string: media[i].url) else { - return - } - - contextMenuImagePreviewViewModel.url.value = url - } - .store(in: &contextMenuImagePreviewViewModel.disposeBag) - - // setup context menu - let contextMenuConfiguration = TimelineTableViewCellContextMenuConfiguration(identifier: nil) { () -> UIViewController? in - // know issue: preview size looks not as large as system default preview - let previewProvider = ContextMenuImagePreviewViewController() - previewProvider.viewModel = contextMenuImagePreviewViewModel - return previewProvider - } actionProvider: { _ -> UIMenu? in - let savePhotoAction = UIAction( - title: L10n.Common.Controls.Actions.savePhoto, image: UIImage(systemName: "square.and.arrow.down")!, identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off - ) { [weak self] _ in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: save photo", ((#file as NSString).lastPathComponent), #line, #function) - guard let self = self else { return } - self.attachment(of: status, index: i) - .setFailureType(to: Error.self) - .compactMap { attachment -> AnyPublisher? in - guard let attachment = attachment, let url = URL(string: attachment.url) else { return nil } - return self.context.photoLibraryService.save(imageSource: .url(url)) - } - .switchToLatest() - .sink(receiveCompletion: { [weak self] completion in - guard let self = self else { return } - switch completion { - case .failure(let error): - guard let error = error as? PhotoLibraryService.PhotoLibraryError, - case .noPermission = error else { return } - let alertController = SettingService.openSettingsAlertController(title: L10n.Common.Alerts.SavePhotoFailure.title, message: L10n.Common.Alerts.SavePhotoFailure.message) - self.coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) - case .finished: - break - } - }, receiveValue: { _ in - // do nothing - }) - .store(in: &self.context.disposeBag) - } - let copyPhotoAction = UIAction( - title: L10n.Common.Controls.Actions.copyPhoto, - image: UIImage(systemName: "doc.on.doc"), identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off - ) { [weak self] _ in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: copy photo", ((#file as NSString).lastPathComponent), #line, #function) - guard let self = self else { return } - self.attachment(of: status, index: i) - .setFailureType(to: Error.self) - .compactMap { attachment -> AnyPublisher? in - guard let attachment = attachment, let url = URL(string: attachment.url) else { return nil } - return self.context.photoLibraryService.copy(imageSource: .url(url)) - } - .switchToLatest() - .sink(receiveCompletion: { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: copy photo fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - break - } - }, receiveValue: { _ in - // do nothing - }) - .store(in: &self.context.disposeBag) - } - let shareAction = UIAction( - title: L10n.Common.Controls.Actions.share, image: UIImage(systemName: "square.and.arrow.up")!, identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off - ) { [weak self] _ in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: share", ((#file as NSString).lastPathComponent), #line, #function) - guard let self = self else { return } - self.attachment(of: status, index: i) - .sink(receiveValue: { [weak self] attachment in - guard let self = self else { return } - guard let attachment = attachment, let url = URL(string: attachment.url) else { return } - let applicationActivities: [UIActivity] = [ - SafariActivity(sceneCoordinator: self.coordinator) - ] - let activityViewController = UIActivityViewController( - activityItems: [url], - applicationActivities: applicationActivities - ) - activityViewController.popoverPresentationController?.sourceView = imageView - self.present(activityViewController, animated: true, completion: nil) - }) - .store(in: &self.context.disposeBag) - } - let children = [savePhotoAction, copyPhotoAction, shareAction] - return UIMenu(title: "", image: nil, children: children) - } - contextMenuConfiguration.indexPath = indexPath - contextMenuConfiguration.index = i - return contextMenuConfiguration - } - - return nil - } - - private func attachment(of status: Future, index: Int) -> AnyPublisher { - status - .map { status in - guard let status = status?.reblog ?? status else { return nil } - guard let media = status.mediaAttachments?.sorted(by: { $0.index.compare($1.index) == .orderedAscending }) else { return nil } - guard index < media.count else { return nil } - return media[index] - } - .eraseToAnyPublisher() - } - - func handleTableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - return _handleTableView(tableView, configuration: configuration) - } - - func handleTableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - return _handleTableView(tableView, configuration: configuration) - } - - private func _handleTableView(_ tableView: UITableView, configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - guard let configuration = configuration as? TimelineTableViewCellContextMenuConfiguration else { return nil } - guard let indexPath = configuration.indexPath, let index = configuration.index else { return nil } - guard let cell = tableView.cellForRow(at: indexPath) as? ImagePreviewPresentableCell else { - return nil - } - let imageViews = cell.mosaicImageViewContainer.imageViews - guard index < imageViews.count else { return nil } - let imageView = imageViews[index] - return UITargetedPreview(view: imageView, parameters: UIPreviewParameters()) - } - - func handleTableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { - guard let previewableViewController = self as? MediaPreviewableViewController else { return } - guard let configuration = configuration as? TimelineTableViewCellContextMenuConfiguration else { return } - guard let indexPath = configuration.indexPath, let index = configuration.index else { return } - guard let cell = tableView.cellForRow(at: indexPath) as? ImagePreviewPresentableCell else { return } - let imageViews = cell.mosaicImageViewContainer.imageViews - guard index < imageViews.count else { return } - let imageView = imageViews[index] - - let status = self.status(for: nil, indexPath: indexPath) - let initialFrame: CGRect? = { - guard let previewViewController = animator.previewViewController else { return nil } - return UIView.findContextMenuPreviewFrameInWindow(previewController: previewViewController) - }() - animator.preferredCommitStyle = .pop - animator.addCompletion { [weak self] in - guard let self = self else { return } - status - //.delay(for: .milliseconds(500), scheduler: DispatchQueue.main) - .sink { [weak self] status in - guard let self = self else { return } - guard let status = (status?.reblog ?? status) else { return } - - let meta = MediaPreviewViewModel.StatusImagePreviewMeta( - statusObjectID: status.objectID, - initialIndex: index, - preloadThumbnailImages: cell.mosaicImageViewContainer.thumbnails() - ) - let pushTransitionItem = MediaPreviewTransitionItem( - source: .mosaic(cell.mosaicImageViewContainer), - previewableViewController: previewableViewController - ) - pushTransitionItem.aspectRatio = { - if let image = imageView.image { - return image.size - } - guard let media = status.mediaAttachments?.sorted(by: { $0.index.compare($1.index) == .orderedAscending }) else { return nil } - guard index < media.count else { return nil } - let meta = media[index].meta - guard let width = meta?.original?.width, let height = meta?.original?.height else { return nil } - return CGSize(width: width, height: height) - }() - pushTransitionItem.sourceImageView = imageView - pushTransitionItem.initialFrame = { - if let initialFrame = initialFrame { - return initialFrame - } - return imageView.superview!.convert(imageView.frame, to: nil) - }() - pushTransitionItem.image = { - if let image = imageView.image { - return image - } - if index < cell.mosaicImageViewContainer.blurhashOverlayImageViews.count { - return cell.mosaicImageViewContainer.blurhashOverlayImageViews[index].image - } - - return nil - }() - let mediaPreviewViewModel = MediaPreviewViewModel( - context: self.context, - meta: meta, - pushTransitionItem: pushTransitionItem - ) - DispatchQueue.main.async { - self.coordinator.present(scene: .mediaPreview(viewModel: mediaPreviewViewModel), from: self, transition: .custom(transitioningDelegate: previewableViewController.mediaPreviewTransitionController)) - } - } - .store(in: &cell.disposeBag) - } - } - - - - -} - -extension UIView { - - // hack to retrieve preview view frame in window - fileprivate static func findContextMenuPreviewFrameInWindow( - previewController: UIViewController - ) -> CGRect? { - guard let window = previewController.view.window else { return nil } - - let targetViews = window.subviews - .map { $0.findSameSize(view: previewController.view) } - .flatMap { $0 } - for targetView in targetViews { - guard let targetViewSuperview = targetView.superview else { continue } - let frame = targetViewSuperview.convert(targetView.frame, to: nil) - guard frame.origin.x > 0, frame.origin.y > 0 else { continue } - return frame - } - - return nil - } - - private func findSameSize(view: UIView) -> [UIView] { - var views: [UIView] = [] - - if view.bounds.size == bounds.size { - views.append(self) - } - - for subview in subviews { - let targetViews = subview.findSameSize(view: view) - views.append(contentsOf: targetViews) - } - - return views - } - -} diff --git a/Mastodon/Protocol/StatusProvider/StatusProvider.swift b/Mastodon/Protocol/StatusProvider/StatusProvider.swift deleted file mode 100644 index 2f13b8d5a..000000000 --- a/Mastodon/Protocol/StatusProvider/StatusProvider.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// StatusProvider.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/5. -// - -import UIKit -import Combine -import CoreData -import CoreDataStack - -protocol StatusProvider: NeedsDependency & DisposeBagCollectable & UIViewController { - // async - func status() -> Future - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future - func status(for cell: UICollectionViewCell) -> Future - - // sync - var managedObjectContext: NSManagedObjectContext { get } - - @available(*, deprecated) - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { get } - @available(*, deprecated) - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? - @available(*, deprecated) - func items(indexPaths: [IndexPath]) -> [Item] - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] -} - -enum StatusObjectItem { - case status(objectID: NSManagedObjectID) - case homeTimelineIndex(objectID: NSManagedObjectID) - case mastodonNotification(objectID: NSManagedObjectID) // may not contains status -} diff --git a/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift b/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift deleted file mode 100644 index 68987c306..000000000 --- a/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift +++ /dev/null @@ -1,636 +0,0 @@ -// -// StatusProviderFacade.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/8. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack -import MastodonSDK -import Meta -import MetaTextKit - -enum StatusProviderFacade { } - -extension StatusProviderFacade { - - static func coordinateToStatusAuthorProfileScene(for target: Target, provider: StatusProvider) { - _coordinateToStatusAuthorProfileScene( - for: target, - provider: provider, - status: provider.status() - ) - } - - static func coordinateToStatusAuthorProfileScene(for target: Target, provider: StatusProvider, indexPath: IndexPath) { - _coordinateToStatusAuthorProfileScene( - for: target, - provider: provider, - status: provider.status(for: nil, indexPath: indexPath) - ) - } - - static func coordinateToStatusAuthorProfileScene(for target: Target, provider: StatusProvider, cell: UITableViewCell) { - _coordinateToStatusAuthorProfileScene( - for: target, - provider: provider, - status: provider.status(for: cell, indexPath: nil) - ) - } - - private static func _coordinateToStatusAuthorProfileScene(for target: Target, provider: StatusProvider, status: Future) { - status - .sink { [weak provider] status in - guard let provider = provider else { return } - let _status: Status? = { - switch target { - case .primary: return status?.reblog ?? status // original status - case .secondary: return status?.replyTo ?? status // reblog or reply to status - } - }() - guard let status = _status else { return } - - let mastodonUser = status.author - let profileViewModel = CachedProfileViewModel(context: provider.context, mastodonUser: mastodonUser) - DispatchQueue.main.async { - if provider.navigationController == nil { - let from = provider.presentingViewController ?? provider - provider.dismiss(animated: true) { - provider.coordinator.present(scene: .profile(viewModel: profileViewModel), from: from, transition: .show) - } - } else { - provider.coordinator.present(scene: .profile(viewModel: profileViewModel), from: provider, transition: .show) - } - } - } - .store(in: &provider.disposeBag) - } - -} - -extension StatusProviderFacade { - - static func coordinateToStatusThreadScene(for target: Target, provider: StatusProvider, indexPath: IndexPath) { - _coordinateToStatusThreadScene( - for: target, - provider: provider, - status: provider.status(for: nil, indexPath: indexPath) - ) - } - - static func coordinateToStatusThreadScene(for target: Target, provider: StatusProvider, cell: UITableViewCell) { - _coordinateToStatusThreadScene( - for: target, - provider: provider, - status: provider.status(for: cell, indexPath: nil) - ) - } - - private static func _coordinateToStatusThreadScene(for target: Target, provider: StatusProvider, status: Future) { - status - .sink { [weak provider] status in - guard let provider = provider else { return } - let _status: Status? = { - switch target { - case .primary: return status?.reblog ?? status // original status - case .secondary: return status // reblog or status - } - }() - guard let status = _status else { return } - - let threadViewModel = CachedThreadViewModel(context: provider.context, status: status) - DispatchQueue.main.async { - if provider.navigationController == nil { - let from = provider.presentingViewController ?? provider - provider.dismiss(animated: true) { - provider.coordinator.present(scene: .thread(viewModel: threadViewModel), from: from, transition: .show) - } - } else { - provider.coordinator.present(scene: .thread(viewModel: threadViewModel), from: provider, transition: .show) - } - } - } - .store(in: &provider.disposeBag) - } - -} - -extension StatusProviderFacade { - - static func responseToStatusMetaTextAction(provider: StatusProvider, cell: UITableViewCell, metaText: MetaText, didSelectMeta meta: Meta) { - switch meta { - case .url(_, _, let url, _), - .mention(_, let url, _) where url.lowercased().hasPrefix("http"): - // note: - // some server mark the normal url as "u-url" class. highlighted content is a URL - guard let url = URL(string: url) else { return } - if let domain = provider.context.authenticationService.activeMastodonAuthenticationBox.value?.domain, url.host == domain, - url.pathComponents.count >= 4, - url.pathComponents[0] == "/", - url.pathComponents[1] == "web", - url.pathComponents[2] == "statuses" { - let statusID = url.pathComponents[3] - let threadViewModel = RemoteThreadViewModel(context: provider.context, statusID: statusID) - provider.coordinator.present(scene: .thread(viewModel: threadViewModel), from: nil, transition: .show) - } else { - provider.coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) - } - case .hashtag(_, let hashtag, _): - let hashtagTimelineViewModel = HashtagTimelineViewModel(context: provider.context, hashtag: hashtag) - provider.coordinator.present(scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: provider, transition: .show) - case .mention(_, let mention, let userInfo): - let href = userInfo?["href"] as? String - coordinateToStatusMentionProfileScene(for: .primary, provider: provider, cell: cell, mention: mention, href: href) - default: - break - } - } - - private static func coordinateToStatusMentionProfileScene(for target: Target, provider: StatusProvider, cell: UITableViewCell, mention: String, href: String?) { - provider.status(for: cell, indexPath: nil) - .sink { [weak provider] status in - guard let provider = provider else { return } - guard let status = status else { return } - coordinateToStatusMentionProfileScene(for: target, provider: provider, status: status, mention: mention, href: href) - } - .store(in: &provider.disposeBag) - } - - private static func coordinateToStatusMentionProfileScene(for target: Target, provider: StatusProvider, status: Status, mention: String, href: String?) { - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { return } - let domain = activeMastodonAuthenticationBox.domain - - let status: Status = { - switch target { - case .primary: return status.reblog ?? status - case .secondary: return status - } - }() - - // cannot continue without meta - guard let mentionMeta = (status.mentions ?? Set()).first(where: { $0.username == mention }) else { - // present web page if possible - if let url = href.flatMap({ URL(string: $0) }) { - provider.coordinator.present(scene: .safari(url: url), from: provider, transition: .safariPresent(animated: true, completion: nil)) - } - return - } - - let userID = mentionMeta.id - - let profileViewModel: ProfileViewModel = { - // check if self - guard userID != activeMastodonAuthenticationBox.userID else { - return MeProfileViewModel(context: provider.context) - } - - let request = MastodonUser.sortedFetchRequest - request.fetchLimit = 1 - request.predicate = MastodonUser.predicate(domain: domain, id: userID) - let mastodonUser = provider.context.managedObjectContext.safeFetch(request).first - - if let mastodonUser = mastodonUser { - return CachedProfileViewModel(context: provider.context, mastodonUser: mastodonUser) - } else { - return RemoteProfileViewModel(context: provider.context, userID: userID) - } - }() - - DispatchQueue.main.async { - provider.coordinator.present(scene: .profile(viewModel: profileViewModel), from: provider, transition: .show) - } - } -} - -extension StatusProviderFacade { - - static func responseToStatusLikeAction(provider: StatusProvider) { - _responseToStatusLikeAction( - provider: provider, - status: provider.status() - ) - } - - static func responseToStatusLikeAction(provider: StatusProvider, cell: UITableViewCell) { - _responseToStatusLikeAction( - provider: provider, - status: provider.status(for: cell, indexPath: nil) - ) - } - - static func responseToStatusLikeAction(provider: StatusProvider, indexPath: IndexPath) { - _responseToStatusLikeAction( - provider: provider, - status: provider.status(for: nil, indexPath: indexPath) - ) - } - - private static func _responseToStatusLikeAction(provider: StatusProvider, status: Future) { - // prepare authentication - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { - assertionFailure() - return - } - - // prepare current user infos - guard let _currentMastodonUser = provider.context.authenticationService.activeMastodonAuthentication.value?.user else { - assertionFailure() - return - } - let mastodonUserID = activeMastodonAuthenticationBox.userID - assert(_currentMastodonUser.id == mastodonUserID) - let mastodonUserObjectID = _currentMastodonUser.objectID - - guard let context = provider.context else { return } - - // haptic feedback generator - let generator = UISelectionFeedbackGenerator() - // let responseFeedbackGenerator = UINotificationFeedbackGenerator() - - status - .compactMap { status -> (NSManagedObjectID, Mastodon.API.Favorites.FavoriteKind)? in - guard let status = status?.reblog ?? status else { return nil } - let favoriteKind: Mastodon.API.Favorites.FavoriteKind = { - let isLiked = status.favouritedBy.flatMap { $0.contains(where: { $0.id == mastodonUserID }) } ?? false - return isLiked ? .destroy : .create - }() - return (status.objectID, favoriteKind) - } - .map { statusObjectID, favoriteKind -> AnyPublisher<(Status.ID, Mastodon.API.Favorites.FavoriteKind), Error> in - return context.apiService.favorite( - statusObjectID: statusObjectID, - mastodonUserObjectID: mastodonUserObjectID, - favoriteKind: favoriteKind - ) - .map { statusID in (statusID, favoriteKind) } - .eraseToAnyPublisher() - } - .setFailureType(to: Error.self) - .eraseToAnyPublisher() - .switchToLatest() - .receive(on: DispatchQueue.main) - .handleEvents(receiveSubscription: { _ in - generator.prepare() - }, receiveOutput: { _, favoriteKind in - generator.selectionChanged() - os_log("%{public}s[%{public}ld], %{public}s: [Like] update local status like status to: %s", ((#file as NSString).lastPathComponent), #line, #function, favoriteKind == .create ? "like" : "unlike") - }, receiveCompletion: { completion in - // responseFeedbackGenerator.prepare() - switch completion { - case .failure: - // TODO: handle error - break - case .finished: - break - } - }) - .map { statusID, favoriteKind in - return context.apiService.favorite( - statusID: statusID, - favoriteKind: favoriteKind, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - } - .switchToLatest() - .receive(on: DispatchQueue.main) - .sink { [weak provider] completion in - guard let _ = provider else { return } - switch completion { - case .failure(let error): - // responseFeedbackGenerator.notificationOccurred(.error) - os_log("%{public}s[%{public}ld], %{public}s: [Like] remote like request fail: %{public}s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - // responseFeedbackGenerator.notificationOccurred(.success) - os_log("%{public}s[%{public}ld], %{public}s: [Like] remote like request success", ((#file as NSString).lastPathComponent), #line, #function) - } - } receiveValue: { response in - // do nothing - } - .store(in: &provider.disposeBag) - } - -} - -extension StatusProviderFacade { - - static func responseToStatusReblogAction(provider: StatusProvider) { - _responseToStatusReblogAction( - provider: provider, - status: provider.status() - ) - } - - static func responseToStatusReblogAction(provider: StatusProvider, cell: UITableViewCell) { - _responseToStatusReblogAction( - provider: provider, - status: provider.status(for: cell, indexPath: nil) - ) - } - - static func responseToStatusReblogAction(provider: StatusProvider, indexPath: IndexPath) { - _responseToStatusReblogAction( - provider: provider, - status: provider.status(for: nil, indexPath: indexPath) - ) - } - - private static func _responseToStatusReblogAction(provider: StatusProvider, status: Future) { - // prepare authentication - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { - assertionFailure() - return - } - - // prepare current user infos - guard let _currentMastodonUser = provider.context.authenticationService.activeMastodonAuthentication.value?.user else { - assertionFailure() - return - } - let mastodonUserID = activeMastodonAuthenticationBox.userID - assert(_currentMastodonUser.id == mastodonUserID) - let mastodonUserObjectID = _currentMastodonUser.objectID - - guard let context = provider.context else { return } - - // haptic feedback generator - let generator = UISelectionFeedbackGenerator() - // let responseFeedbackGenerator = UINotificationFeedbackGenerator() - - status - .compactMap { status -> (NSManagedObjectID, Mastodon.API.Reblog.ReblogKind)? in - guard let status = status?.reblog ?? status else { return nil } - let reblogKind: Mastodon.API.Reblog.ReblogKind = { - let isReblogged = status.rebloggedBy.flatMap { $0.contains(where: { $0.id == mastodonUserID }) } ?? false - return isReblogged ? .undoReblog : .reblog(query: .init(visibility: nil)) - }() - return (status.objectID, reblogKind) - } - .map { statusObjectID, reblogKind -> AnyPublisher<(Status.ID, Mastodon.API.Reblog.ReblogKind), Error> in - return context.apiService.reblog( - statusObjectID: statusObjectID, - mastodonUserObjectID: mastodonUserObjectID, - reblogKind: reblogKind - ) - .map { statusID in (statusID, reblogKind) } - .eraseToAnyPublisher() - } - .setFailureType(to: Error.self) - .eraseToAnyPublisher() - .switchToLatest() - .receive(on: DispatchQueue.main) - .handleEvents(receiveSubscription: { _ in - generator.prepare() - }, receiveOutput: { _, reblogKind in - generator.selectionChanged() - switch reblogKind { - case .reblog: - os_log("%{public}s[%{public}ld], %{public}s: [Reblog] update local status reblog status to: %s", ((#file as NSString).lastPathComponent), #line, #function, "reblog") - case .undoReblog: - os_log("%{public}s[%{public}ld], %{public}s: [Reblog] update local status reblog status to: %s", ((#file as NSString).lastPathComponent), #line, #function, "unreblog") - } - }, receiveCompletion: { completion in - // responseFeedbackGenerator.prepare() - switch completion { - case .failure: - // TODO: handle error - break - case .finished: - break - } - }) - .map { statusID, reblogKind in - return context.apiService.reblog( - statusID: statusID, - reblogKind: reblogKind, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - } - .switchToLatest() - .receive(on: DispatchQueue.main) - .sink { [weak provider] completion in - guard let _ = provider else { return } - switch completion { - case .failure(let error): - // responseFeedbackGenerator.notificationOccurred(.error) - os_log("%{public}s[%{public}ld], %{public}s: [Reblog] remote reblog request fail: %{public}s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - // responseFeedbackGenerator.notificationOccurred(.success) - os_log("%{public}s[%{public}ld], %{public}s: [Reblog] remote reblog request success", ((#file as NSString).lastPathComponent), #line, #function) - } - } receiveValue: { response in - // do nothing - } - .store(in: &provider.disposeBag) - } - -} - -extension StatusProviderFacade { - - static func responseToStatusReplyAction(provider: StatusProvider) { - _responseToStatusReplyAction( - provider: provider, - status: provider.status() - ) - } - - static func responseToStatusReplyAction(provider: StatusProvider, cell: UITableViewCell) { - _responseToStatusReplyAction( - provider: provider, - status: provider.status(for: cell, indexPath: nil) - ) - } - - static func responseToStatusReplyAction(provider: StatusProvider, indexPath: IndexPath) { - _responseToStatusReplyAction( - provider: provider, - status: provider.status(for: nil, indexPath: indexPath) - ) - } - - private static func _responseToStatusReplyAction(provider: StatusProvider, status: Future) { - status - .sink { [weak provider] status in - guard let provider = provider else { return } - guard let status = status?.reblog ?? status else { return } - - let generator = UISelectionFeedbackGenerator() - generator.selectionChanged() - - let composeViewModel = ComposeViewModel(context: provider.context, composeKind: .reply(repliedToStatusObjectID: status.objectID)) - provider.coordinator.present(scene: .compose(viewModel: composeViewModel), from: provider, transition: .modal(animated: true, completion: nil)) - } - .store(in: &provider.context.disposeBag) - - } - -} - -extension StatusProviderFacade { - - static func responseToStatusContentWarningRevealAction(provider: StatusProvider, cell: UITableViewCell) { - _responseToStatusContentWarningRevealAction( - dependency: provider, - status: provider.status(for: cell, indexPath: nil) - ) - } - - static func responseToStatusContentWarningRevealAction(provider: StatusProvider, indexPath: IndexPath) { - _responseToStatusContentWarningRevealAction( - dependency: provider, - status: provider.status(for: nil, indexPath: indexPath) - ) - } - - private static func _responseToStatusContentWarningRevealAction(dependency: NeedsDependency, status: Future) { - status - .compactMap { [weak dependency] status -> AnyPublisher? in - guard let dependency = dependency else { return nil } - guard let _status = status else { return nil } - let managedObjectContext = dependency.context.backgroundManagedObjectContext - return managedObjectContext.performChanges { - guard let status = managedObjectContext.object(with: _status.objectID) as? Status else { return } - let appStartUpTimestamp = dependency.context.documentStore.appStartUpTimestamp - let isRevealing: Bool = { - if dependency.context.documentStore.defaultRevealStatusDict[status.id] == true { - return true - } - if status.reblog.flatMap({ dependency.context.documentStore.defaultRevealStatusDict[$0.id] }) == true { - return true - } - if let revealedAt = status.revealedAt, revealedAt > appStartUpTimestamp { - return true - } - - return false - }() - // toggle reveal - dependency.context.documentStore.defaultRevealStatusDict[status.id] = false - status.update(isReveal: !isRevealing) - - if let reblog = status.reblog { - dependency.context.documentStore.defaultRevealStatusDict[reblog.id] = false - reblog.update(isReveal: !isRevealing) - } - - // pause video playback if isRevealing before toggle - if isRevealing, let attachment = (status.reblog ?? status).mediaAttachments?.first, - let playerViewModel = dependency.context.videoPlaybackService.dequeueVideoPlayerViewModel(for: attachment) { - playerViewModel.pause() - } - // resume GIF playback if NOT isRevealing before toggle - if !isRevealing, let attachment = (status.reblog ?? status).mediaAttachments?.first, - let playerViewModel = dependency.context.videoPlaybackService.dequeueVideoPlayerViewModel(for: attachment), playerViewModel.videoKind == .gif { - playerViewModel.play() - } - } - .map { result in - return status - } - .eraseToAnyPublisher() - } - .sink { _ in - // do nothing - } - .store(in: &dependency.context.disposeBag) - } - - static func responseToStatusContentWarningRevealAction(dependency: ReportViewController, cell: UITableViewCell) { - let status = Future { promise in - guard let diffableDataSource = dependency.viewModel.diffableDataSource, - let indexPath = dependency.tableView.indexPath(for: cell), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - let managedObjectContext = dependency.viewModel.statusFetchedResultsController - .fetchedResultsController - .managedObjectContext - - switch item { - case .reportStatus(let objectID, _): - managedObjectContext.perform { - let status = managedObjectContext.object(with: objectID) as! Status - promise(.success(status)) - } - default: - promise(.success(nil)) - } - } - - _responseToStatusContentWarningRevealAction( - dependency: dependency, - status: status - ) - } -} - -extension StatusProviderFacade { - static func coordinateToStatusMediaPreviewScene(provider: StatusProvider & MediaPreviewableViewController, cell: UITableViewCell, mosaicImageView: MosaicImageViewContainer, didTapImageView imageView: UIImageView, atIndex index: Int) { - provider.status(for: cell, indexPath: nil) - .sink { [weak provider] status in - guard let provider = provider else { return } - guard let source = status else { return } - - let status = source.reblog ?? source - - let meta = MediaPreviewViewModel.StatusImagePreviewMeta( - statusObjectID: status.objectID, - initialIndex: index, - preloadThumbnailImages: mosaicImageView.thumbnails() - ) - let pushTransitionItem = MediaPreviewTransitionItem( - source: .mosaic(mosaicImageView), - previewableViewController: provider - ) - pushTransitionItem.aspectRatio = { - if let image = imageView.image { - return image.size - } - guard let media = status.mediaAttachments?.sorted(by: { $0.index.compare($1.index) == .orderedAscending }) else { return nil } - guard index < media.count else { return nil } - let meta = media[index].meta - guard let width = meta?.original?.width, let height = meta?.original?.height else { return nil } - return CGSize(width: width, height: height) - }() - pushTransitionItem.sourceImageView = imageView - pushTransitionItem.initialFrame = { - let initialFrame = imageView.superview!.convert(imageView.frame, to: nil) - assert(initialFrame != .zero) - return initialFrame - }() - pushTransitionItem.image = { - if let image = imageView.image { - return image - } - if index < mosaicImageView.blurhashOverlayImageViews.count { - return mosaicImageView.blurhashOverlayImageViews[index].image - } - - return nil - }() - - let mediaPreviewViewModel = MediaPreviewViewModel( - context: provider.context, - meta: meta, - pushTransitionItem: pushTransitionItem - ) - DispatchQueue.main.async { - provider.coordinator.present(scene: .mediaPreview(viewModel: mediaPreviewViewModel), from: provider, transition: .custom(transitioningDelegate: provider.mediaPreviewTransitionController)) - } - } - .store(in: &provider.disposeBag) - } -} - -extension StatusProviderFacade { - enum Target { - case primary // original status - case secondary // wrapper status or reply (when needs. e.g tap header of status view) - } -} - diff --git a/Mastodon/Protocol/StatusTableViewControllerAspect.swift b/Mastodon/Protocol/StatusTableViewControllerAspect.swift index fbaf76650..e0e9a8fd0 100644 --- a/Mastodon/Protocol/StatusTableViewControllerAspect.swift +++ b/Mastodon/Protocol/StatusTableViewControllerAspect.swift @@ -1,182 +1,182 @@ +//// +//// StatusTableViewControllerAspect.swift +//// Mastodon +//// +//// Created by MainasuK Cirno on 2021-4-7. +//// // -// StatusTableViewControllerAspect.swift -// Mastodon +//import UIKit +//import AVKit +//import GameController // -// Created by MainasuK Cirno on 2021-4-7. +//// Check List Last Updated +//// - HomeViewController: 2021/7/15 +//// - FavoriteViewController: 2021/4/30 +//// - HashtagTimelineViewController: 2021/4/30 +//// - UserTimelineViewController: 2021/4/30 +//// - ThreadViewController: 2021/4/30 +//// - SearchResultViewController: 2021/7/15 +//// * StatusTableViewControllerAspect: 2021/7/15 +// +//// (Fake) Aspect protocol to group common protocol extension implementations +//// Needs update related view controller when aspect interface changes +// +///// Status related operations aspect +///// Please check the aspect methods (Option+Click) and add hook to implement features +///// - UI +///// - Media +///// - Data Source +//protocol StatusTableViewControllerAspect: UIViewController { +// var tableView: UITableView { get } +//} +// +//// MARK: - UIViewController [A] +// +//// [A1] aspectViewWillAppear(_:) +//extension StatusTableViewControllerAspect { +// /// [UI] hook to deselect row in the transitioning for the table view +// func aspectViewWillAppear(_ animated: Bool) { +// if GCKeyboard.coalesced != nil, let backKeyCommandPressDate = UserDefaults.shared.backKeyCommandPressDate { +// guard backKeyCommandPressDate.timeIntervalSinceNow <= -0.5 else { +// // break if interval greater than 0.5s +// return +// } +// } +// tableView.deselectRow(with: transitionCoordinator, animated: animated) +// } +//} +// +//// [A2] aspectViewDidDisappear(_:) +//extension StatusTableViewControllerAspect where Self: NeedsDependency { +// /// [Media] hook to notify video service +// func aspectViewDidDisappear(_ animated: Bool) { +// context.videoPlaybackService.viewDidDisappear(from: self) +// context.audioPlaybackService.viewDidDisappear(from: self) +// } +//} +// +//// MARK: - UITableViewDelegate [B] +// +//// [B1] aspectTableView(_:estimatedHeightForRowAt:) +//extension StatusTableViewControllerAspect where Self: LoadMoreConfigurableTableViewContainer { +// /// [Data Source] hook to notify table view bottom loader +// func aspectScrollViewDidScroll(_ scrollView: UIScrollView) { +// handleScrollViewDidScroll(scrollView) +// } +//} +// +//// [B2] aspectTableView(_:estimatedHeightForRowAt:) +//extension StatusTableViewControllerAspect where Self: TableViewCellHeightCacheableContainer { +// /// [UI] hook to estimate table view cell height from cache +// func aspectTableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { +// handleTableView(tableView, estimatedHeightForRowAt: indexPath) +// } +//} +// +//// [B3] aspectTableView(_:willDisplay:forRowAt:) +//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { +// func aspectTableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// handleTableView(tableView, willDisplay: cell, forRowAt: indexPath) +// } +//} +// +//// [B4] aspectTableView(_:didEndDisplaying:forRowAt:) +//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { +// /// [Media] hook to notify video service +// func aspectTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// handleTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +//} +// +//extension StatusTableViewControllerAspect where Self: TableViewCellHeightCacheableContainer { +// /// [UI] hook to cache table view cell height +// func aspectTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// cacheTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +//} +// +//extension StatusTableViewControllerAspect where Self: StatusProvider & StatusTableViewCellDelegate & TableViewCellHeightCacheableContainer { +// /// [Media] hook to notify video service +// /// [UI] hook to cache table view cell height +// func aspectTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// handleTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// cacheTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +//} +// +//// [B5] aspectTableView(_:didSelectRowAt:) +//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { +// /// [UI] hook to coordinator to thread +// func aspectTableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// handleTableView(tableView, didSelectRowAt: indexPath) +// } +//} +// +//// [B6] aspectTableView(_:contextMenuConfigurationForRowAt:point:) +//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { +// // [UI] hook to display context menu for images +// func aspectTableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { +// return handleTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +// } +//} +// +//// [B7] aspectTableView(_:contextMenuConfigurationForRowAt:point:) +//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { +// // [UI] hook to configure context menu for images +// func aspectTableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return handleTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +// } +//} +// +//// [B8] aspectTableView(_:previewForDismissingContextMenuWithConfiguration:) +//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { +// // [UI] hook to configure context menu for images +// func aspectTableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return handleTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +// } +//} +// +//// [B9] aspectTableView(_:willPerformPreviewActionForMenuWith:animator:) +//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { +// // [UI] hook to configure context menu preview action +// func aspectTableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { +// handleTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +// } +//} +// +//// MARK: - UITableViewDataSourcePrefetching [C] +// +//// [C1] aspectTableView(:prefetchRowsAt) +//extension StatusTableViewControllerAspect where Self: UITableViewDataSourcePrefetching & StatusTableViewCellDelegate & StatusProvider { +// /// [Data Source] hook to prefetch status +// func aspectTableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { +// handleTableView(tableView, prefetchRowsAt: indexPaths) +// } +//} +// +//// [C2] aspectTableView(:prefetchRowsAt) +//extension StatusTableViewControllerAspect where Self: UITableViewDataSourcePrefetching & StatusTableViewCellDelegate & StatusProvider { +// /// [Data Source] hook to cancel prefetch status +// func aspectTableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) { +// handleTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) +// } +//} +// +//// MARK: - AVPlayerViewControllerDelegate & NeedsDependency [D] +// +//// [D1] aspectPlayerViewController(_:willBeginFullScreenPresentationWithAnimationCoordinator:) +//extension StatusTableViewControllerAspect where Self: AVPlayerViewControllerDelegate & NeedsDependency { +// /// [Media] hook to mark transitioning to video service +// func aspectPlayerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +//} +// +//// [D2] aspectPlayerViewController(_:willEndFullScreenPresentationWithAnimationCoordinator:) +//extension StatusTableViewControllerAspect where Self: AVPlayerViewControllerDelegate & NeedsDependency { +// /// [Media] hook to mark transitioning to video service +// func aspectPlayerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +//} // - -import UIKit -import AVKit -import GameController - -// Check List Last Updated -// - HomeViewController: 2021/7/15 -// - FavoriteViewController: 2021/4/30 -// - HashtagTimelineViewController: 2021/4/30 -// - UserTimelineViewController: 2021/4/30 -// - ThreadViewController: 2021/4/30 -// - SearchResultViewController: 2021/7/15 -// * StatusTableViewControllerAspect: 2021/7/15 - -// (Fake) Aspect protocol to group common protocol extension implementations -// Needs update related view controller when aspect interface changes - -/// Status related operations aspect -/// Please check the aspect methods (Option+Click) and add hook to implement features -/// - UI -/// - Media -/// - Data Source -protocol StatusTableViewControllerAspect: UIViewController { - var tableView: UITableView { get } -} - -// MARK: - UIViewController [A] - -// [A1] aspectViewWillAppear(_:) -extension StatusTableViewControllerAspect { - /// [UI] hook to deselect row in the transitioning for the table view - func aspectViewWillAppear(_ animated: Bool) { - if GCKeyboard.coalesced != nil, let backKeyCommandPressDate = UserDefaults.shared.backKeyCommandPressDate { - guard backKeyCommandPressDate.timeIntervalSinceNow <= -0.5 else { - // break if interval greater than 0.5s - return - } - } - tableView.deselectRow(with: transitionCoordinator, animated: animated) - } -} - -// [A2] aspectViewDidDisappear(_:) -extension StatusTableViewControllerAspect where Self: NeedsDependency { - /// [Media] hook to notify video service - func aspectViewDidDisappear(_ animated: Bool) { - context.videoPlaybackService.viewDidDisappear(from: self) - context.audioPlaybackService.viewDidDisappear(from: self) - } -} - -// MARK: - UITableViewDelegate [B] - -// [B1] aspectTableView(_:estimatedHeightForRowAt:) -extension StatusTableViewControllerAspect where Self: LoadMoreConfigurableTableViewContainer { - /// [Data Source] hook to notify table view bottom loader - func aspectScrollViewDidScroll(_ scrollView: UIScrollView) { - handleScrollViewDidScroll(scrollView) - } -} - -// [B2] aspectTableView(_:estimatedHeightForRowAt:) -extension StatusTableViewControllerAspect where Self: TableViewCellHeightCacheableContainer { - /// [UI] hook to estimate table view cell height from cache - func aspectTableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - handleTableView(tableView, estimatedHeightForRowAt: indexPath) - } -} - -// [B3] aspectTableView(_:willDisplay:forRowAt:) -extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { - func aspectTableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - handleTableView(tableView, willDisplay: cell, forRowAt: indexPath) - } -} - -// [B4] aspectTableView(_:didEndDisplaying:forRowAt:) -extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { - /// [Media] hook to notify video service - func aspectTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - handleTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } -} - -extension StatusTableViewControllerAspect where Self: TableViewCellHeightCacheableContainer { - /// [UI] hook to cache table view cell height - func aspectTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - cacheTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } -} - -extension StatusTableViewControllerAspect where Self: StatusProvider & StatusTableViewCellDelegate & TableViewCellHeightCacheableContainer { - /// [Media] hook to notify video service - /// [UI] hook to cache table view cell height - func aspectTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - handleTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - cacheTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } -} - -// [B5] aspectTableView(_:didSelectRowAt:) -extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { - /// [UI] hook to coordinator to thread - func aspectTableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - handleTableView(tableView, didSelectRowAt: indexPath) - } -} - -// [B6] aspectTableView(_:contextMenuConfigurationForRowAt:point:) -extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { - // [UI] hook to display context menu for images - func aspectTableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { - return handleTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) - } -} - -// [B7] aspectTableView(_:contextMenuConfigurationForRowAt:point:) -extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { - // [UI] hook to configure context menu for images - func aspectTableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - return handleTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) - } -} - -// [B8] aspectTableView(_:previewForDismissingContextMenuWithConfiguration:) -extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { - // [UI] hook to configure context menu for images - func aspectTableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - return handleTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) - } -} - -// [B9] aspectTableView(_:willPerformPreviewActionForMenuWith:animator:) -extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { - // [UI] hook to configure context menu preview action - func aspectTableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { - handleTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) - } -} - -// MARK: - UITableViewDataSourcePrefetching [C] - -// [C1] aspectTableView(:prefetchRowsAt) -extension StatusTableViewControllerAspect where Self: UITableViewDataSourcePrefetching & StatusTableViewCellDelegate & StatusProvider { - /// [Data Source] hook to prefetch status - func aspectTableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - handleTableView(tableView, prefetchRowsAt: indexPaths) - } -} - -// [C2] aspectTableView(:prefetchRowsAt) -extension StatusTableViewControllerAspect where Self: UITableViewDataSourcePrefetching & StatusTableViewCellDelegate & StatusProvider { - /// [Data Source] hook to cancel prefetch status - func aspectTableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) { - handleTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) - } -} - -// MARK: - AVPlayerViewControllerDelegate & NeedsDependency [D] - -// [D1] aspectPlayerViewController(_:willBeginFullScreenPresentationWithAnimationCoordinator:) -extension StatusTableViewControllerAspect where Self: AVPlayerViewControllerDelegate & NeedsDependency { - /// [Media] hook to mark transitioning to video service - func aspectPlayerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } -} - -// [D2] aspectPlayerViewController(_:willEndFullScreenPresentationWithAnimationCoordinator:) -extension StatusTableViewControllerAspect where Self: AVPlayerViewControllerDelegate & NeedsDependency { - /// [Media] hook to mark transitioning to video service - func aspectPlayerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } -} - diff --git a/Mastodon/Protocol/StatusTableViewControllerNavigateable.swift b/Mastodon/Protocol/StatusTableViewControllerNavigateable.swift index ad869fbd1..a35fae7b7 100644 --- a/Mastodon/Protocol/StatusTableViewControllerNavigateable.swift +++ b/Mastodon/Protocol/StatusTableViewControllerNavigateable.swift @@ -7,6 +7,8 @@ import os.log import UIKit +import MastodonAsset +import MastodonLocalization typealias StatusTableViewControllerNavigateable = StatusTableViewControllerNavigateableCore & StatusTableViewControllerNavigateableRelay diff --git a/Mastodon/Protocol/TableViewCellHeightCacheableContainer.swift b/Mastodon/Protocol/TableViewCellHeightCacheableContainer.swift deleted file mode 100644 index 8ae7398c9..000000000 --- a/Mastodon/Protocol/TableViewCellHeightCacheableContainer.swift +++ /dev/null @@ -1,38 +0,0 @@ -// -// TableViewCellHeightCacheableContainer.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-3. -// - -import UIKit - -protocol TableViewCellHeightCacheableContainer { - var cellFrameCache: NSCache { get } - func cacheTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) - func handleTableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat -} - -extension TableViewCellHeightCacheableContainer where Self: StatusProvider { - - func cacheTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - guard let item = item(for: nil, indexPath: indexPath) else { return } - - let key = item.hashValue - let frame = cell.frame - cellFrameCache.setObject(NSValue(cgRect: frame), forKey: NSNumber(value: key)) - } - - func handleTableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - guard let item = item(for: nil, indexPath: indexPath) else { return UITableView.automaticDimension } - guard let frame = cellFrameCache.object(forKey: NSNumber(value: item.hashValue))?.cgRectValue else { - if case .bottomLoader = item { - return TimelineLoaderTableViewCell.cellHeight - } else { - return UITableView.automaticDimension - } - } - - return ceil(frame.height) - } -} diff --git a/Mastodon/Protocol/TableViewControllerNavigateable.swift b/Mastodon/Protocol/TableViewControllerNavigateable.swift index a70ab7014..4189d0cfc 100644 --- a/Mastodon/Protocol/TableViewControllerNavigateable.swift +++ b/Mastodon/Protocol/TableViewControllerNavigateable.swift @@ -7,6 +7,8 @@ import os.log import UIKit +import MastodonAsset +import MastodonLocalization typealias TableViewControllerNavigateable = TableViewControllerNavigateableCore & TableViewControllerNavigateableRelay diff --git a/Mastodon/Protocol/UserProvider/UserProvider.swift b/Mastodon/Protocol/UserProvider/UserProvider.swift deleted file mode 100644 index f9939c740..000000000 --- a/Mastodon/Protocol/UserProvider/UserProvider.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// UserProvider.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-4-1. -// - -import Combine -import CoreData -import CoreDataStack -import UIKit - -protocol UserProvider: NeedsDependency & DisposeBagCollectable & UIViewController { - // async - func mastodonUser() -> Future - - func mastodonUser(for cell: UITableViewCell?) -> Future -} - -extension UserProvider where Self: StatusProvider { - func mastodonUser(for cell: UITableViewCell?) -> Future { - Future { [weak self] promise in - guard let self = self else { return } - self.status(for: cell, indexPath: nil) - .sink { status in - promise(.success(status?.authorForUserProvider)) - } - .store(in: &self.disposeBag) - } - } - - func mastodonUser() -> Future { - Future { promise in - promise(.success(nil)) - } - } -} diff --git a/Mastodon/Protocol/UserProvider/UserProviderFacade+UITableViewDelegate.swift b/Mastodon/Protocol/UserProvider/UserProviderFacade+UITableViewDelegate.swift deleted file mode 100644 index a6e3cf215..000000000 --- a/Mastodon/Protocol/UserProvider/UserProviderFacade+UITableViewDelegate.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// UserProviderFacade+UITableViewDelegate.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-11-1. -// - -import Combine -import CoreDataStack -import MastodonSDK -import os.log -import UIKit - -extension UserTableViewCellDelegate where Self: UserProvider { - - func handleTableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard let cell = tableView.cellForRow(at: indexPath) else { return } - let user = self.mastodonUser(for: cell) - UserProviderFacade.coordinatorToUserProfileScene(provider: self, user: user) - } - -} diff --git a/Mastodon/Protocol/UserProvider/UserProviderFacade.swift b/Mastodon/Protocol/UserProvider/UserProviderFacade.swift deleted file mode 100644 index edbe311c7..000000000 --- a/Mastodon/Protocol/UserProvider/UserProviderFacade.swift +++ /dev/null @@ -1,464 +0,0 @@ -// -// UserProviderFacade.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-4-1. -// - -import Combine -import CoreData -import CoreDataStack -import MastodonSDK -import UIKit - -enum UserProviderFacade {} - -extension UserProviderFacade { - static func toggleUserFollowRelationship( - provider: UserProvider - ) -> AnyPublisher, Error> { - // prepare authentication - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { - assertionFailure() - return Fail(error: APIService.APIError.implicit(.authenticationMissing)).eraseToAnyPublisher() - } - - return _toggleUserFollowRelationship( - context: provider.context, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox, - mastodonUser: provider.mastodonUser().eraseToAnyPublisher() - ) - } - - static func toggleUserFollowRelationship( - provider: UserProvider, - mastodonUser: MastodonUser - ) -> AnyPublisher, Error> { - // prepare authentication - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { - assertionFailure() - return Fail(error: APIService.APIError.implicit(.authenticationMissing)).eraseToAnyPublisher() - } - - return _toggleUserFollowRelationship( - context: provider.context, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox, - mastodonUser: Just(mastodonUser).eraseToAnyPublisher() - ) - } - - private static func _toggleUserFollowRelationship( - context: AppContext, - activeMastodonAuthenticationBox: MastodonAuthenticationBox, - mastodonUser: AnyPublisher - ) -> AnyPublisher, Error> { - mastodonUser - .compactMap { mastodonUser -> AnyPublisher, Error>? in - guard let mastodonUser = mastodonUser else { - return nil - } - - return context.apiService.toggleFollow( - for: mastodonUser, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - } - .switchToLatest() - .eraseToAnyPublisher() - } -} - -extension UserProviderFacade { - static func toggleUserBlockRelationship( - provider: UserProvider, - mastodonUser: MastodonUser - ) -> AnyPublisher, Error> { - // prepare authentication - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { - assertionFailure() - return Fail(error: APIService.APIError.implicit(.authenticationMissing)).eraseToAnyPublisher() - } - return _toggleUserBlockRelationship( - context: provider.context, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox, - mastodonUser: Just(mastodonUser).eraseToAnyPublisher() - ) - } - - static func toggleUserBlockRelationship( - provider: UserProvider, - cell: UITableViewCell? - ) -> AnyPublisher, Error> { - // prepare authentication - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { - assertionFailure() - return Fail(error: APIService.APIError.implicit(.authenticationMissing)).eraseToAnyPublisher() - } - if let cell = cell { - return _toggleUserBlockRelationship( - context: provider.context, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox, - mastodonUser: provider.mastodonUser(for: cell).eraseToAnyPublisher() - ) - } else { - return _toggleUserBlockRelationship( - context: provider.context, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox, - mastodonUser: provider.mastodonUser().eraseToAnyPublisher() - ) - } - } - - private static func _toggleUserBlockRelationship( - context: AppContext, - activeMastodonAuthenticationBox: MastodonAuthenticationBox, - mastodonUser: AnyPublisher - ) -> AnyPublisher, Error> { - mastodonUser - .compactMap { mastodonUser -> AnyPublisher, Error>? in - guard let mastodonUser = mastodonUser else { - return nil - } - - return context.apiService.toggleBlock( - for: mastodonUser, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - } - .switchToLatest() - .eraseToAnyPublisher() - } -} - -extension UserProviderFacade { - - static func toggleUserMuteRelationship( - provider: UserProvider, - mastodonUser: MastodonUser - ) -> AnyPublisher, Error> { - // prepare authentication - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { - assertionFailure() - return Fail(error: APIService.APIError.implicit(.authenticationMissing)).eraseToAnyPublisher() - } - return _toggleUserMuteRelationship( - context: provider.context, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox, - mastodonUser: Just(mastodonUser).eraseToAnyPublisher() - ) - } - - static func toggleUserMuteRelationship( - provider: UserProvider, - cell: UITableViewCell? - ) -> AnyPublisher, Error> { - // prepare authentication - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { - assertionFailure() - return Fail(error: APIService.APIError.implicit(.authenticationMissing)).eraseToAnyPublisher() - } - if let cell = cell { - return _toggleUserMuteRelationship( - context: provider.context, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox, - mastodonUser: provider.mastodonUser(for: cell).eraseToAnyPublisher() - ) - } else { - return _toggleUserMuteRelationship( - context: provider.context, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox, - mastodonUser: provider.mastodonUser().eraseToAnyPublisher() - ) - } - } - - private static func _toggleUserMuteRelationship( - context: AppContext, - activeMastodonAuthenticationBox: MastodonAuthenticationBox, - mastodonUser: AnyPublisher - ) -> AnyPublisher, Error> { - mastodonUser - .compactMap { mastodonUser -> AnyPublisher, Error>? in - guard let mastodonUser = mastodonUser else { - return nil - } - - return context.apiService.toggleMute( - for: mastodonUser, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - } - .switchToLatest() - .eraseToAnyPublisher() - } -} - -extension UserProviderFacade { - static func createProfileActionMenu( - for mastodonUser: MastodonUser, - isMyself: Bool, - isMuting: Bool, - isBlocking: Bool, - isInSameDomain: Bool, - isDomainBlocking: Bool, - provider: UserProvider, - cell: UITableViewCell?, - sourceView: UIView?, - barButtonItem: UIBarButtonItem?, - shareUser: MastodonUser?, - shareStatus: Status? - ) -> UIMenu { - var children: [UIMenuElement] = [] - let name = mastodonUser.displayNameWithFallback - - if let shareUser = shareUser { - let shareAction = UIAction( - title: L10n.Common.Controls.Actions.shareUser(name), - image: UIImage(systemName: "square.and.arrow.up"), - identifier: nil, - discoverabilityTitle: nil, - attributes: [], - state: .off - ) { [weak provider, weak sourceView, weak barButtonItem] _ in - guard let provider = provider else { return } - let activityViewController = createActivityViewControllerForMastodonUser(mastodonUser: shareUser, dependency: provider) - provider.coordinator.present( - scene: .activityViewController( - activityViewController: activityViewController, - sourceView: sourceView, - barButtonItem: barButtonItem - ), - from: provider, - transition: .activityViewControllerPresent(animated: true, completion: nil) - ) - } - children.append(shareAction) - } - - if let shareStatus = shareStatus { - let shareAction = UIAction( - title: L10n.Common.Controls.Actions.sharePost, - image: UIImage(systemName: "square.and.arrow.up"), - identifier: nil, - discoverabilityTitle: nil, - attributes: [], - state: .off - ) { [weak provider, weak sourceView, weak barButtonItem] _ in - guard let provider = provider else { return } - let activityViewController = createActivityViewControllerForMastodonUser(status: shareStatus, dependency: provider) - provider.coordinator.present( - scene: .activityViewController( - activityViewController: activityViewController, - sourceView: sourceView, - barButtonItem: barButtonItem - ), - from: provider, - transition: .activityViewControllerPresent(animated: true, completion: nil) - ) - } - children.append(shareAction) - } - - if !isMyself { - // mute - let muteAction = UIAction( - title: isMuting ? L10n.Common.Controls.Friendship.unmuteUser(name) : L10n.Common.Controls.Friendship.mute, - image: isMuting ? UIImage(systemName: "speaker") : UIImage(systemName: "speaker.slash"), - discoverabilityTitle: isMuting ? nil : L10n.Common.Controls.Friendship.muteUser(name), - attributes: isMuting ? [] : .destructive, - state: .off - ) { [weak provider, weak cell] _ in - guard let provider = provider else { return } - - UserProviderFacade.toggleUserMuteRelationship( - provider: provider, - cell: cell - ) - .sink { _ in - // do nothing - } receiveValue: { _ in - // do nothing - } - .store(in: &provider.context.disposeBag) - } - if isMuting { - children.append(muteAction) - } else { - let muteMenu = UIMenu(title: L10n.Common.Controls.Friendship.muteUser(name), image: UIImage(systemName: "speaker.slash"), options: [], children: [muteAction]) - children.append(muteMenu) - } - } - - if !isMyself { - // block - let blockAction = UIAction( - title: isBlocking ? L10n.Common.Controls.Friendship.unblockUser(name) : L10n.Common.Controls.Friendship.block, - image: isBlocking ? UIImage(systemName: "hand.raised.slash") : UIImage(systemName: "hand.raised"), - discoverabilityTitle: isBlocking ? nil : L10n.Common.Controls.Friendship.blockUser(name), - attributes: isBlocking ? [] : .destructive, - state: .off - ) { [weak provider, weak cell] _ in - guard let provider = provider else { return } - - UserProviderFacade.toggleUserBlockRelationship( - provider: provider, - cell: cell - ) - .sink { _ in - // do nothing - } receiveValue: { _ in - // do nothing - } - .store(in: &provider.context.disposeBag) - } - if isBlocking { - children.append(blockAction) - } else { - let blockMenu = UIMenu(title: L10n.Common.Controls.Friendship.blockUser(name), image: UIImage(systemName: "hand.raised"), options: [], children: [blockAction]) - children.append(blockMenu) - } - } - - if !isMyself { - let reportAction = UIAction( - title: L10n.Common.Controls.Actions.reportUser(name), - image: UIImage(systemName: "flag"), - identifier: nil, - discoverabilityTitle: nil, - attributes: [], - state: .off - ) { [weak provider] _ in - guard let provider = provider else { return } - guard let authenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { - return - } - let viewModel = ReportViewModel( - context: provider.context, - domain: authenticationBox.domain, - user: mastodonUser, - status: nil - ) - provider.coordinator.present( - scene: .report(viewModel: viewModel), - from: provider, - transition: .modal(animated: true, completion: nil) - ) - } - children.append(reportAction) - } - - if !isInSameDomain { - if isDomainBlocking { - let unblockDomainAction = UIAction( - title: L10n.Common.Controls.Actions.unblockDomain(mastodonUser.domainFromAcct), - image: UIImage(systemName: "nosign"), - identifier: nil, - discoverabilityTitle: nil, - attributes: [], - state: .off - ) { [weak provider, weak cell] _ in - guard let provider = provider else { return } - provider.context.blockDomainService.unblockDomain(userProvider: provider, cell: cell) - } - children.append(unblockDomainAction) - } else { - let blockDomainAction = UIAction( - title: L10n.Common.Controls.Actions.blockDomain(mastodonUser.domainFromAcct), - image: UIImage(systemName: "nosign"), - identifier: nil, - discoverabilityTitle: nil, - attributes: [], - state: .off - ) { [weak provider, weak cell] _ in - guard let provider = provider else { return } - - let alertController = UIAlertController(title: L10n.Common.Alerts.BlockDomain.title(mastodonUser.domainFromAcct), message: nil, preferredStyle: .alert) - let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .default) { _ in } - alertController.addAction(cancelAction) - let blockDomainAction = UIAlertAction(title: L10n.Common.Alerts.BlockDomain.blockEntireDomain, style: .destructive) { [weak provider, weak cell] _ in - guard let provider = provider else { return } - provider.context.blockDomainService.blockDomain(userProvider: provider, cell: cell) - } - alertController.addAction(blockDomainAction) - provider.present(alertController, animated: true, completion: nil) - } - children.append(blockDomainAction) - } - } - - if let status = shareStatus, isMyself { - let deleteAction = UIAction( - title: L10n.Common.Controls.Actions.delete, - image: UIImage(systemName: "delete.left"), - identifier: nil, - discoverabilityTitle: nil, - attributes: [.destructive], - state: .off - ) { [weak provider] _ in - guard let provider = provider else { return } - - let alertController = UIAlertController(title: L10n.Common.Alerts.DeletePost.title, message: nil, preferredStyle: .alert) - let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .default) { _ in } - alertController.addAction(cancelAction) - let deleteAction = UIAlertAction(title: L10n.Common.Alerts.DeletePost.delete, style: .destructive) { [weak provider] _ in - guard let provider = provider else { return } - guard let activeMastodonAuthenticationBox = provider.context.authenticationService.activeMastodonAuthenticationBox.value else { return } - provider.context.apiService.deleteStatus( - domain: activeMastodonAuthenticationBox.domain, - statusID: status.id, - authorizationBox: activeMastodonAuthenticationBox - ) - .sink { _ in - // do nothing - } receiveValue: { _ in - // do nothing - } - .store(in: &provider.context.disposeBag) - } - alertController.addAction(deleteAction) - provider.present(alertController, animated: true, completion: nil) - } - children.append(deleteAction) - } - - return UIMenu(title: "", options: [], children: children) - } - - static func createActivityViewControllerForMastodonUser(mastodonUser: MastodonUser, dependency: NeedsDependency) -> UIActivityViewController { - let activityViewController = UIActivityViewController( - activityItems: mastodonUser.activityItems, - applicationActivities: [SafariActivity(sceneCoordinator: dependency.coordinator)] - ) - return activityViewController - } - - static func createActivityViewControllerForMastodonUser(status: Status, dependency: NeedsDependency) -> UIActivityViewController { - let activityViewController = UIActivityViewController( - activityItems: status.activityItems, - applicationActivities: [SafariActivity(sceneCoordinator: dependency.coordinator)] - ) - return activityViewController - } -} - -extension UserProviderFacade { - static func coordinatorToUserProfileScene(provider: UserProvider, user: Future) { - user - .sink { [weak provider] mastodonUser in - guard let provider = provider else { return } - guard let mastodonUser = mastodonUser else { return } - let profileViewModel = CachedProfileViewModel(context: provider.context, mastodonUser: mastodonUser) - DispatchQueue.main.async { - if provider.navigationController == nil { - let from = provider.presentingViewController ?? provider - provider.dismiss(animated: true) { - provider.coordinator.present(scene: .profile(viewModel: profileViewModel), from: from, transition: .show) - } - } else { - provider.coordinator.present(scene: .profile(viewModel: profileViewModel), from: provider, transition: .show) - } - } - } - .store(in: &provider.disposeBag) - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/brand.blue.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/brand.blue.colorset/Contents.json deleted file mode 100644 index a85c0e379..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/brand.blue.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xD9", - "green" : "0x90", - "red" : "0x2B" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xE4", - "green" : "0x9D", - "red" : "0x3A" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/brand.blue.darken.20.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/brand.blue.darken.20.colorset/Contents.json deleted file mode 100644 index 6464e2d9d..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/brand.blue.darken.20.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xB0", - "green" : "0x73", - "red" : "0x1F" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xC9", - "green" : "0x80", - "red" : "0x1B" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/danger.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/danger.colorset/Contents.json deleted file mode 100644 index b77cb3c75..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/danger.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "90", - "green" : "64", - "red" : "223" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/disabled.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/disabled.colorset/Contents.json deleted file mode 100644 index 303021b9f..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/disabled.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "200", - "green" : "174", - "red" : "155" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x64", - "green" : "0x5D", - "red" : "0x4F" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/inactive.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/inactive.colorset/Contents.json deleted file mode 100644 index ea5d9760a..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/inactive.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x8C", - "green" : "0x82", - "red" : "0x6E" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x64", - "green" : "0x5D", - "red" : "0x4F" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/system.orange.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/system.orange.colorset/Contents.json deleted file mode 100644 index 0b0fa36c0..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/system.orange.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x0A", - "green" : "0x9F", - "red" : "0xFF" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json deleted file mode 100644 index b7d63ece2..000000000 --- a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xFF", - "green" : "0xFF", - "red" : "0xFF" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "0.200", - "blue" : "0x80", - "green" : "0x78", - "red" : "0x78" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json deleted file mode 100644 index 17ed9364b..000000000 --- a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x37", - "green" : "0x2C", - "red" : "0x28" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xEE", - "green" : "0xEE", - "red" : "0xEE" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json deleted file mode 100644 index 706cd755b..000000000 --- a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x1B", - "green" : "0x15", - "red" : "0x13" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xBA", - "green" : "0xBA", - "red" : "0xBA" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json deleted file mode 100644 index 0b219c90c..000000000 --- a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xF7", - "green" : "0xF2", - "red" : "0xF2" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x21", - "green" : "0x1B", - "red" : "0x19" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/background.cyan.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/background.cyan.colorset/Contents.json deleted file mode 100644 index cd6391d81..000000000 --- a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/background.cyan.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "232", - "green" : "207", - "red" : "60" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json deleted file mode 100644 index 7bf1f1e43..000000000 --- a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x81", - "green" : "0xAC", - "red" : "0x58" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.selection.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.selection.background.colorset/Contents.json deleted file mode 100644 index 91b8281dc..000000000 --- a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.selection.background.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "235", - "green" : "229", - "red" : "221" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x6E", - "green" : "0x57", - "red" : "0x4F" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/tab.bar.item.inactive.icon.color.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/tab.bar.item.inactive.icon.color.colorset/Contents.json deleted file mode 100644 index bfc2a11b2..000000000 --- a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/tab.bar.item.inactive.icon.color.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x99", - "green" : "0x99", - "red" : "0x99" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x99", - "green" : "0x99", - "red" : "0x99" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json deleted file mode 100644 index c8aa45b5e..000000000 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xEB", - "green" : "0xE4", - "red" : "0xDD" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "60", - "green" : "58", - "red" : "58" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json deleted file mode 100644 index 14441ef0c..000000000 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xE8", - "green" : "0xE0", - "red" : "0xD9" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x2E", - "green" : "0x2C", - "red" : "0x2C" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/tab.bar.item.inactive.icon.color.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Theme/system/tab.bar.item.inactive.icon.color.colorset/Contents.json deleted file mode 100644 index bfc2a11b2..000000000 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/tab.bar.item.inactive.icon.color.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x99", - "green" : "0x99", - "red" : "0x99" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x99", - "green" : "0x99", - "red" : "0x99" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/eu-ES.lproj/InfoPlist.strings b/Mastodon/Resources/eu-ES.lproj/InfoPlist.strings new file mode 100644 index 000000000..710865573 --- /dev/null +++ b/Mastodon/Resources/eu-ES.lproj/InfoPlist.strings @@ -0,0 +1,4 @@ +"NSCameraUsageDescription" = "Used to take photo for post status"; +"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library"; +"NewPostShortcutItemTitle" = "New Post"; +"SearchShortcutItemTitle" = "Search"; \ No newline at end of file diff --git a/Mastodon/Resources/sv-FI.lproj/InfoPlist.strings b/Mastodon/Resources/sv-FI.lproj/InfoPlist.strings new file mode 100644 index 000000000..710865573 --- /dev/null +++ b/Mastodon/Resources/sv-FI.lproj/InfoPlist.strings @@ -0,0 +1,4 @@ +"NSCameraUsageDescription" = "Used to take photo for post status"; +"NSPhotoLibraryAddUsageDescription" = "Used to save photo into the Photo Library"; +"NewPostShortcutItemTitle" = "New Post"; +"SearchShortcutItemTitle" = "Search"; \ No newline at end of file diff --git a/Mastodon/Scene/Account/AccountListViewModel.swift b/Mastodon/Scene/Account/AccountListViewModel.swift index 1977b90ec..83d0240f8 100644 --- a/Mastodon/Scene/Account/AccountListViewModel.swift +++ b/Mastodon/Scene/Account/AccountListViewModel.swift @@ -112,11 +112,13 @@ extension AccountListViewModel { let user = authentication.user // avatar - cell.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: user.avatarImageURL())) + cell.avatarButton.avatarImageView.configure( + configuration: .init(url: user.avatarImageURL()) + ) // name do { - let content = MastodonContent(content: user.displayNameWithFallback, emojis: user.emojiMeta) + let content = MastodonContent(content: user.displayNameWithFallback, emojis: user.emojis.asDictionary) let metaContent = try MastodonMetaContent.convert(document: content) cell.nameLabel.configure(content: metaContent) } catch { diff --git a/Mastodon/Scene/Account/AccountViewController.swift b/Mastodon/Scene/Account/AccountViewController.swift index fce9c7320..42c9e1d62 100644 --- a/Mastodon/Scene/Account/AccountViewController.swift +++ b/Mastodon/Scene/Account/AccountViewController.swift @@ -10,6 +10,8 @@ import UIKit import Combine import CoreDataStack import PanModal +import MastodonAsset +import MastodonLocalization final class AccountListViewController: UIViewController, NeedsDependency { @@ -113,10 +115,14 @@ extension AccountListViewController { .receive(on: DispatchQueue.main) .sink { [weak self, weak presentingViewController] in guard let self = self else { return } - // the presentingViewController may deinit - guard let _ = presentingViewController else { return } + + // the presentingViewController may deinit. + // Hold it and check the window to prevent PanModel crash + guard let presentingViewController = presentingViewController else { return } + guard self.view.window != nil else { return } + self.hasLoaded = true - self.panModalSetNeedsLayoutUpdate() + self.panModalSetNeedsLayoutUpdate() // <<< may crash the app self.panModalTransition(to: .shortForm) } .store(in: &disposeBag) diff --git a/Mastodon/Scene/Account/Cell/AccountListTableViewCell.swift b/Mastodon/Scene/Account/Cell/AccountListTableViewCell.swift index f6ab75877..2b480464d 100644 --- a/Mastodon/Scene/Account/Cell/AccountListTableViewCell.swift +++ b/Mastodon/Scene/Account/Cell/AccountListTableViewCell.swift @@ -9,6 +9,7 @@ import UIKit import Combine import FLAnimatedImage import MetaTextKit +import MastodonUI final class AccountListTableViewCell: UITableViewCell { @@ -31,6 +32,7 @@ final class AccountListTableViewCell: UITableViewCell { super.prepareForReuse() disposeBag.removeAll() + avatarButton.avatarImageView.image = nil } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { @@ -125,10 +127,3 @@ extension AccountListTableViewCell { } } - -// MARK: - AvatarConfigurableView -extension AccountListTableViewCell: AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { CGSize(width: 30, height: 30) } - static var configurableAvatarImageCornerRadius: CGFloat { 0 } - var configurableAvatarImageView: FLAnimatedImageView? { avatarButton.avatarImageView } -} diff --git a/Mastodon/Scene/Account/Cell/AddAccountTableViewCell.swift b/Mastodon/Scene/Account/Cell/AddAccountTableViewCell.swift index 0873c1390..c641434e6 100644 --- a/Mastodon/Scene/Account/Cell/AddAccountTableViewCell.swift +++ b/Mastodon/Scene/Account/Cell/AddAccountTableViewCell.swift @@ -8,6 +8,8 @@ import UIKit import Combine import MetaTextKit +import MastodonAsset +import MastodonLocalization final class AddAccountTableViewCell: UITableViewCell { diff --git a/Mastodon/Scene/Account/View/BadgeButton.swift b/Mastodon/Scene/Account/View/BadgeButton.swift index 6d92a8471..a0101ef5a 100644 --- a/Mastodon/Scene/Account/View/BadgeButton.swift +++ b/Mastodon/Scene/Account/View/BadgeButton.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class BadgeButton: UIButton { diff --git a/Mastodon/Scene/Account/View/DragIndicatorView.swift b/Mastodon/Scene/Account/View/DragIndicatorView.swift index 5efa141bc..9e0ab77d5 100644 --- a/Mastodon/Scene/Account/View/DragIndicatorView.swift +++ b/Mastodon/Scene/Account/View/DragIndicatorView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class DragIndicatorView: UIView { diff --git a/Mastodon/Scene/Compose/AutoComplete/AutoCompleteViewModel+State.swift b/Mastodon/Scene/Compose/AutoComplete/AutoCompleteViewModel+State.swift index 4e59ce082..ebda78a1e 100644 --- a/Mastodon/Scene/Compose/AutoComplete/AutoCompleteViewModel+State.swift +++ b/Mastodon/Scene/Compose/AutoComplete/AutoCompleteViewModel+State.swift @@ -11,7 +11,16 @@ import GameplayKit import MastodonSDK extension AutoCompleteViewModel { - class State: GKState { + class State: GKState, NamingState { + + let logger = Logger(subsystem: "AutoCompleteViewModel.State", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + weak var viewModel: AutoCompleteViewModel? init(viewModel: AutoCompleteViewModel) { @@ -19,7 +28,18 @@ extension AutoCompleteViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + super.didEnter(from: previousState) + let previousState = previousState as? AutoCompleteViewModel.State + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + } + + @MainActor + func enter(state: State.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") } } } @@ -67,32 +87,29 @@ extension AutoCompleteViewModel.State { switch searchType { case .emoji: - Loading.fetchLocalEmoji( - searchText: searchText, - viewModel: viewModel, - stateMachine: stateMachine - ) + Task { + await fetchLocalEmoji(searchText: searchText) + } default: - Loading.queryRemoteEnitity( - searchText: searchText, - viewModel: viewModel, - stateMachine: stateMachine - ) + Task { + await queryRemoteEnitity(searchText: searchText) + } } } - private static func fetchLocalEmoji( - searchText: String, - viewModel: AutoCompleteViewModel, - stateMachine: GKStateMachine - ) { + private func fetchLocalEmoji(searchText: String) async { + guard let viewModel = viewModel else { + await enter(state: Fail.self) + return + } + guard let customEmojiViewModel = viewModel.customEmojiViewModel.value else { - stateMachine.enter(Fail.self) + await enter(state: Fail.self) return } guard let emojiTrie = customEmojiViewModel.emojiTrie.value else { - stateMachine.enter(Fail.self) + await enter(state: Fail.self) return } @@ -105,20 +122,21 @@ extension AutoCompleteViewModel.State { let items: [AutoCompleteItem] = matchingEmojis.map { emoji in AutoCompleteItem.emoji(emoji: emoji) } - stateMachine.enter(Idle.self) + + await enter(state: Idle.self) viewModel.autoCompleteItems.value = items } - private static func queryRemoteEnitity( - searchText: String, - viewModel: AutoCompleteViewModel, - stateMachine: GKStateMachine - ) { - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - stateMachine.enter(Fail.self) + private func queryRemoteEnitity(searchText: String) async { + guard let viewModel = viewModel else { + await enter(state: Fail.self) + return + } + + guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + await enter(state: Fail.self) return } - let domain = activeMastodonAuthenticationBox.domain let searchText = viewModel.inputText.value let searchType = AutoCompleteViewModel.SearchType(inputText: searchText) ?? .default @@ -131,30 +149,27 @@ extension AutoCompleteViewModel.State { offset: nil, following: nil ) - viewModel.context.apiService.search( - domain: domain, - query: query, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .receive(on: DispatchQueue.main) - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: auto-complete fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break - } - } receiveValue: { response in + + do { + let response = try await viewModel.context.apiService.search( + query: query, + authenticationBox: authenticationBox + ) + + await enter(state: Idle.self) + guard viewModel.inputText.value == searchText else { return } // discard if not matching var items: [AutoCompleteItem] = [] items.append(contentsOf: response.value.accounts.map { AutoCompleteItem.account(account: $0) }) items.append(contentsOf: response.value.hashtags.map { AutoCompleteItem.hashtag(tag: $0) }) - stateMachine.enter(Idle.self) + viewModel.autoCompleteItems.value = items + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): auto-complete fail: \(error.localizedDescription)") + await enter(state: Fail.self) } - .store(in: &viewModel.disposeBag) } private func reset(searchText: String) { diff --git a/Mastodon/Scene/Compose/AutoComplete/Cell/AutoCompleteTableViewCell.swift b/Mastodon/Scene/Compose/AutoComplete/Cell/AutoCompleteTableViewCell.swift index c1e7ab6a4..b7c8fcecc 100644 --- a/Mastodon/Scene/Compose/AutoComplete/Cell/AutoCompleteTableViewCell.swift +++ b/Mastodon/Scene/Compose/AutoComplete/Cell/AutoCompleteTableViewCell.swift @@ -8,6 +8,10 @@ import UIKit import FLAnimatedImage import MetaTextKit +import MastodonAsset +import MastodonLocalization +import MastodonUI + final class AutoCompleteTableViewCell: UITableViewCell { @@ -29,7 +33,7 @@ final class AutoCompleteTableViewCell: UITableViewCell { return stackView }() - let avatarImageView = FLAnimatedImageView() + let avatarImageView = AvatarImageView() let titleLabel: MetaLabel = { let label = MetaLabel(style: .autoCompletion) @@ -125,13 +129,6 @@ extension AutoCompleteTableViewCell { } -// MARK: - AvatarConfigurableView -extension AutoCompleteTableViewCell: AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { avatarImageSize } - static var configurableAvatarImageCornerRadius: CGFloat { avatarImageCornerRadius } - var configurableAvatarImageView: FLAnimatedImageView? { avatarImageView } -} - #if canImport(SwiftUI) && DEBUG import SwiftUI diff --git a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusAttachmentCollectionViewCell.swift b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusAttachmentCollectionViewCell.swift index fee6ce753..76f011121 100644 --- a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusAttachmentCollectionViewCell.swift +++ b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusAttachmentCollectionViewCell.swift @@ -9,6 +9,8 @@ import os.log import UIKit import Combine import MastodonUI +import MastodonAsset +import MastodonLocalization protocol ComposeStatusAttachmentCollectionViewCellDelegate: AnyObject { func composeStatusAttachmentCollectionViewCell(_ cell: ComposeStatusAttachmentCollectionViewCell, removeButtonDidPressed button: UIButton) diff --git a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollExpiresOptionCollectionViewCell.swift b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollExpiresOptionCollectionViewCell.swift index e4569356f..7d976bfdf 100644 --- a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollExpiresOptionCollectionViewCell.swift +++ b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollExpiresOptionCollectionViewCell.swift @@ -8,6 +8,8 @@ import os.log import UIKit import Combine +import MastodonAsset +import MastodonLocalization protocol ComposeStatusPollExpiresOptionCollectionViewCellDelegate: AnyObject { func composeStatusPollExpiresOptionCollectionViewCell(_ cell: ComposeStatusPollExpiresOptionCollectionViewCell, didSelectExpiresOption expiresOption: ComposeStatusPollItem.PollExpiresOptionAttribute.ExpiresOption) diff --git a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionAppendEntryCollectionViewCell.swift b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionAppendEntryCollectionViewCell.swift index 7c8a6135f..e2702e7c6 100644 --- a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionAppendEntryCollectionViewCell.swift +++ b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionAppendEntryCollectionViewCell.swift @@ -7,6 +7,8 @@ import os.log import UIKit +import MastodonAsset +import MastodonLocalization protocol ComposeStatusPollOptionAppendEntryCollectionViewCellDelegate: AnyObject { func composeStatusPollOptionAppendEntryCollectionViewCellDidPressed(_ cell: ComposeStatusPollOptionAppendEntryCollectionViewCell) diff --git a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionCollectionViewCell.swift b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionCollectionViewCell.swift index ae90cd7b6..7ea43f154 100644 --- a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionCollectionViewCell.swift +++ b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionCollectionViewCell.swift @@ -8,6 +8,8 @@ import os.log import UIKit import Combine +import MastodonAsset +import MastodonLocalization protocol ComposeStatusPollOptionCollectionViewCellDelegate: AnyObject { func composeStatusPollOptionCollectionViewCell(_ cell: ComposeStatusPollOptionCollectionViewCell, textFieldDidBeginEditing textField: UITextField) diff --git a/Mastodon/Scene/Compose/CollectionViewCell/CustomEmojiPickerHeaderCollectionReusableView.swift b/Mastodon/Scene/Compose/CollectionViewCell/CustomEmojiPickerHeaderCollectionReusableView.swift index 30d5986ab..a43a57703 100644 --- a/Mastodon/Scene/Compose/CollectionViewCell/CustomEmojiPickerHeaderCollectionReusableView.swift +++ b/Mastodon/Scene/Compose/CollectionViewCell/CustomEmojiPickerHeaderCollectionReusableView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class CustomEmojiPickerHeaderCollectionReusableView: UICollectionReusableView { diff --git a/Mastodon/Scene/Compose/ComposeViewController.swift b/Mastodon/Scene/Compose/ComposeViewController.swift index 5968df428..8bff75b9e 100644 --- a/Mastodon/Scene/Compose/ComposeViewController.swift +++ b/Mastodon/Scene/Compose/ComposeViewController.swift @@ -9,11 +9,13 @@ import os.log import UIKit import Combine import PhotosUI -import MastodonSDK import MetaTextKit import MastodonMeta import Meta import MastodonUI +import MastodonAsset +import MastodonLocalization +import MastodonSDK final class ComposeViewController: UIViewController, NeedsDependency { @@ -40,22 +42,28 @@ final class ComposeViewController: UIViewController, NeedsDependency { let barButtonItem = UIBarButtonItem(customView: characterCountLabel) return barButtonItem }() + let publishButton: UIButton = { let button = RoundedEdgesButton(type: .custom) - button.setTitle(L10n.Scene.Compose.composeAction, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 14, weight: .bold) - button.setBackgroundImage(.placeholder(color: Asset.Colors.brandBlue.color), for: .normal) - button.setBackgroundImage(.placeholder(color: Asset.Colors.brandBlue.color.withAlphaComponent(0.5)), for: .highlighted) - button.setBackgroundImage(.placeholder(color: Asset.Colors.Button.disabled.color), for: .disabled) - button.setTitleColor(.white, for: .normal) + button.cornerRadius = 10 button.contentEdgeInsets = UIEdgeInsets(top: 6, left: 16, bottom: 5, right: 16) // set 28pt height - button.adjustsImageWhenHighlighted = false + button.titleLabel?.font = .systemFont(ofSize: 14, weight: .bold) + button.setTitle(L10n.Scene.Compose.composeAction, for: .normal) return button }() private(set) lazy var publishBarButtonItem: UIBarButtonItem = { + configurePublishButtonApperance() let barButtonItem = UIBarButtonItem(customView: publishButton) return barButtonItem }() + + private func configurePublishButtonApperance() { + publishButton.adjustsImageWhenHighlighted = false + publishButton.setBackgroundImage(.placeholder(color: Asset.Colors.Label.primary.color), for: .normal) + publishButton.setBackgroundImage(.placeholder(color: Asset.Colors.Label.primary.color.withAlphaComponent(0.5)), for: .highlighted) + publishButton.setBackgroundImage(.placeholder(color: Asset.Colors.Button.disabled.color), for: .disabled) + publishButton.setTitleColor(Asset.Colors.Label.primaryReverse.color, for: .normal) + } let tableView: ComposeTableView = { let tableView = ComposeTableView() @@ -115,9 +123,7 @@ final class ComposeViewController: UIViewController, NeedsDependency { let viewController = AutoCompleteViewController() viewController.viewModel = AutoCompleteViewModel(context: context) viewController.delegate = self - viewModel.customEmojiViewModel - .assign(to: \.value, on: viewController.viewModel.customEmojiViewModel) - .store(in: &disposeBag) + viewController.viewModel.customEmojiViewModel.value = viewModel.customEmojiViewModel return viewController }() @@ -155,7 +161,7 @@ extension ComposeViewController { } .store(in: &disposeBag) - viewModel.title + viewModel.$title .receive(on: DispatchQueue.main) .sink { [weak self] title in guard let self = self else { return } @@ -229,9 +235,9 @@ extension ComposeViewController { composeStatusPollExpiresOptionCollectionViewCellDelegate: self ) - viewModel.composeStatusAttribute.composeContent + viewModel.composeStatusAttribute.$composeContent .removeDuplicates() - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] _ in guard let self = self else { return } guard self.view.window != nil else { return } @@ -262,8 +268,8 @@ extension ComposeViewController { ) Publishers.CombineLatest3( keyboardEventPublishers, - viewModel.isCustomEmojiComposing, - viewModel.autoCompleteInfo + viewModel.$isCustomEmojiComposing, + viewModel.$autoCompleteInfo ) .sink(receiveValue: { [weak self] keyboardEvents, isCustomEmojiComposing, autoCompleteInfo in guard let self = self else { return } @@ -339,11 +345,11 @@ extension ComposeViewController { .store(in: &disposeBag) // bind auto-complete - viewModel.autoCompleteInfo + viewModel.$autoCompleteInfo .receive(on: DispatchQueue.main) .sink { [weak self] info in guard let self = self else { return } - guard let textEditorView = self.textEditorView() else { return } + let textEditorView = self.textEditorView if self.autoCompleteViewController.view.superview == nil { self.autoCompleteViewController.view.frame = self.view.bounds // add to container view. seealso: `viewDidLayoutSubviews()` @@ -364,13 +370,13 @@ extension ComposeViewController { .store(in: &disposeBag) // bind publish bar button state - viewModel.isPublishBarButtonItemEnabled + viewModel.$isPublishBarButtonItemEnabled .receive(on: DispatchQueue.main) .assign(to: \.isEnabled, on: publishBarButtonItem) .store(in: &disposeBag) // bind media button toolbar state - viewModel.isMediaToolbarButtonEnabled + viewModel.$isMediaToolbarButtonEnabled .receive(on: DispatchQueue.main) .sink { [weak self] isMediaToolbarButtonEnabled in guard let self = self else { return } @@ -380,7 +386,7 @@ extension ComposeViewController { .store(in: &disposeBag) // bind poll button toolbar state - viewModel.isPollToolbarButtonEnabled + viewModel.$isPollToolbarButtonEnabled .receive(on: DispatchQueue.main) .sink { [weak self] isPollToolbarButtonEnabled in guard let self = self else { return } @@ -390,8 +396,8 @@ extension ComposeViewController { .store(in: &disposeBag) Publishers.CombineLatest( - viewModel.isPollComposing, - viewModel.isPollToolbarButtonEnabled + viewModel.$isPollComposing, + viewModel.$isPollToolbarButtonEnabled ) .receive(on: DispatchQueue.main) .sink { [weak self] isPollComposing, isPollToolbarButtonEnabled in @@ -409,7 +415,7 @@ extension ComposeViewController { .store(in: &disposeBag) // bind image picker toolbar state - viewModel.attachmentServices + viewModel.$attachmentServices .receive(on: DispatchQueue.main) .sink { [weak self] attachmentServices in guard let self = self else { return } @@ -421,7 +427,7 @@ extension ComposeViewController { .store(in: &disposeBag) // bind content warning button state - viewModel.isContentWarningComposing + viewModel.$isContentWarningComposing .receive(on: DispatchQueue.main) .sink { [weak self] isContentWarningComposing in guard let self = self else { return } @@ -433,7 +439,7 @@ extension ComposeViewController { // bind visibility toolbar UI Publishers.CombineLatest( - viewModel.selectedStatusVisibility, + viewModel.$selectedStatusVisibility, viewModel.traitCollectionDidChangePublisher ) .receive(on: DispatchQueue.main) @@ -446,7 +452,7 @@ extension ComposeViewController { } .store(in: &disposeBag) - viewModel.characterCount + viewModel.$characterCount .receive(on: DispatchQueue.main) .sink { [weak self] characterCount in guard let self = self else { return } @@ -477,14 +483,7 @@ extension ComposeViewController { .store(in: &disposeBag) // bind custom emoji picker UI - viewModel.customEmojiViewModel - .map { viewModel -> AnyPublisher<[Mastodon.Entity.Emoji], Never> in - guard let viewModel = viewModel else { - return Just([]).eraseToAnyPublisher() - } - return viewModel.emojis.eraseToAnyPublisher() - } - .switchToLatest() + viewModel.customEmojiViewModel?.emojis .receive(on: DispatchQueue.main) .sink(receiveValue: { [weak self] emojis in guard let self = self else { return } @@ -498,8 +497,8 @@ extension ComposeViewController { // setup snap behavior Publishers.CombineLatest( - viewModel.repliedToCellFrame, - viewModel.collectionViewState + viewModel.$repliedToCellFrame, + viewModel.$collectionViewState ) .receive(on: DispatchQueue.main) .sink { [weak self] repliedToCellFrame, collectionViewState in @@ -531,15 +530,11 @@ extension ComposeViewController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - - // using index to make table view layout - // otherwise, the content offset will be wrong - guard let indexPath = tableView.indexPath(for: viewModel.composeStatusContentTableViewCell), - let cell = tableView.cellForRow(at: indexPath) as? ComposeStatusContentTableViewCell else { - assertionFailure() - return - } - cell.metaText.textView.becomeFirstResponder() + + // update MetaText without trigger call underlaying `UITextStorage.processEditing` + _ = textEditorView.processEditing(textEditorView.textStorage) + + markTextEditorViewBecomeFirstResponser() } override func viewDidAppear(_ animated: Bool) { @@ -551,15 +546,17 @@ extension ComposeViewController { override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) + configurePublishButtonApperance() viewModel.traitCollectionDidChangePublisher.send() } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() + updateAutoCompleteViewControllerLayout() } - func updateAutoCompleteViewControllerLayout() { + private func updateAutoCompleteViewControllerLayout() { // pin autoCompleteViewController frame to current view if let containerView = autoCompleteViewController.view.superview { let viewFrameInWindow = containerView.convert(autoCompleteViewController.view.frame, to: view) @@ -574,12 +571,12 @@ extension ComposeViewController { extension ComposeViewController { - private func textEditorView() -> MetaText? { + private var textEditorView: MetaText { return viewModel.composeStatusContentTableViewCell.metaText } private func markTextEditorViewBecomeFirstResponser() { - textEditorView()?.textView.becomeFirstResponder() + textEditorView.textView.becomeFirstResponder() } private func contentWarningEditorTextView() -> UITextView? { @@ -651,7 +648,7 @@ extension ComposeViewController { } private func resetImagePicker() { - let selectionLimit = max(1, viewModel.maxMediaAttachments - viewModel.attachmentServices.value.count) + let selectionLimit = max(1, viewModel.maxMediaAttachments - viewModel.attachmentServices.count) let configuration = ComposeViewController.createPhotoLibraryPickerConfiguration(selectionLimit: selectionLimit) photoLibraryPicker = createImagePicker(configuration: configuration) } @@ -668,6 +665,7 @@ extension ComposeViewController { composeToolbarBackgroundView.backgroundColor = theme.composeToolbarBackgroundColor } + // keyboard shortcutBar private func setupInputAssistantItem(item: UITextInputAssistantItem) { let groups = [UIBarButtonItemGroup(barButtonItems: [ composeToolbarView.mediaBarButtonItem, @@ -705,7 +703,7 @@ extension ComposeViewController { @objc private func cancelBarButtonItemPressed(_ sender: UIBarButtonItem) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - guard viewModel.shouldDismiss.value else { + guard viewModel.shouldDismiss else { showDismissConfirmAlertController() return } @@ -740,7 +738,7 @@ extension ComposeViewController: MetaTextDelegate { let string = metaText.textStorage.string let content = MastodonContent( content: string, - emojis: viewModel.customEmojiViewModel.value?.emojiMapping.value ?? [:] + emojis: viewModel.customEmojiViewModel?.emojiMapping.value ?? [:] ) let metaContent = MastodonMetaContent.convert(text: content) return metaContent @@ -754,26 +752,29 @@ extension ComposeViewController: UITextViewDelegate { setupInputAssistantItem(item: textView.inputAssistantItem) return true } -// func textViewDidBeginEditing(_ textView: UITextView) { -// switch textView { -// case textEditorView()?.textView: -// setupInputAssistantItem(item: textView.inputAssistantItem) -// default: -// assertionFailure() -// break -// } -// } + + func textViewDidBeginEditing(_ textView: UITextView) { + switch textView { + case textEditorView.textView: + setupInputAssistantItem(item: textView.inputAssistantItem) + default: + assertionFailure() + } + } func textViewDidChange(_ textView: UITextView) { - if textEditorView()?.textView === textView { + switch textView { + case textEditorView.textView: // update model - guard let metaText = textEditorView() else { return } + let metaText = self.textEditorView let backedString = metaText.backedString - viewModel.composeStatusAttribute.composeContent.value = backedString + viewModel.composeStatusAttribute.composeContent = backedString logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): \(backedString)") - + // configure auto completion setupAutoComplete(for: textView) + default: + assertionFailure() } } @@ -794,7 +795,7 @@ extension ComposeViewController: UITextViewDelegate { private func setupAutoComplete(for textView: UITextView) { guard var autoCompletion = ComposeViewController.scanAutoCompleteInfo(textView: textView) else { - viewModel.autoCompleteInfo.value = nil + viewModel.autoCompleteInfo = nil return } os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: auto complete %s (%s)", ((#file as NSString).lastPathComponent), #line, #function, String(autoCompletion.toHighlightEndString), String(autoCompletion.toCursorString)) @@ -805,9 +806,9 @@ extension ComposeViewController: UITextViewDelegate { let textContainer = textView.layoutManager.textContainers[0] let textBoundingRect = textView.layoutManager.boundingRect(forGlyphRange: glyphRange, in: textContainer) - let retryLayoutTimes = viewModel.autoCompleteRetryLayoutTimes.value + let retryLayoutTimes = viewModel.autoCompleteRetryLayoutTimes guard textBoundingRect.size != .zero else { - viewModel.autoCompleteRetryLayoutTimes.value += 1 + viewModel.autoCompleteRetryLayoutTimes += 1 // avoid infinite loop guard retryLayoutTimes < 3 else { return } // needs retry calculate layout when the rect position changing @@ -816,7 +817,7 @@ extension ComposeViewController: UITextViewDelegate { } return } - viewModel.autoCompleteRetryLayoutTimes.value = 0 + viewModel.autoCompleteRetryLayoutTimes = 0 // get symbol bounding rect textView.layoutManager.characterRange(forGlyphRange: NSRange(autoCompletion.symbolRange, in: textView.text), actualGlyphRange: &glyphRange) @@ -825,7 +826,7 @@ extension ComposeViewController: UITextViewDelegate { // set bounding rect and trigger layout autoCompletion.textBoundingRect = textBoundingRect autoCompletion.symbolBoundingRect = symbolBoundingRect - viewModel.autoCompleteInfo.value = autoCompletion + viewModel.autoCompleteInfo = autoCompletion } private static func scanAutoCompleteInfo(textView: UITextView) -> AutoCompleteInfo? { @@ -883,19 +884,21 @@ extension ComposeViewController: UITextViewDelegate { } func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { - if textView === textEditorView()?.textView { + switch textView { + case textEditorView.textView: return false + default: + return true } - - return true } func textView(_ textView: UITextView, shouldInteractWith textAttachment: NSTextAttachment, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { - if textView === textEditorView()?.textView { + switch textView { + case textEditorView.textView: return false + default: + return true } - - return true } } @@ -916,17 +919,17 @@ extension ComposeViewController: ComposeToolbarViewDelegate { func composeToolbarView(_ composeToolbarView: ComposeToolbarView, pollButtonDidPressed sender: Any) { // toggle poll composing state - viewModel.isPollComposing.value.toggle() + viewModel.isPollComposing.toggle() // cancel custom picker input - viewModel.isCustomEmojiComposing.value = false + viewModel.isCustomEmojiComposing = false // setup initial poll option if needs - if viewModel.isPollComposing.value, viewModel.pollOptionAttributes.value.isEmpty { - viewModel.pollOptionAttributes.value = [ComposeStatusPollItem.PollOptionAttribute(), ComposeStatusPollItem.PollOptionAttribute()] + if viewModel.isPollComposing, viewModel.pollOptionAttributes.isEmpty { + viewModel.pollOptionAttributes = [ComposeStatusPollItem.PollOptionAttribute(), ComposeStatusPollItem.PollOptionAttribute()] } - if viewModel.isPollComposing.value { + if viewModel.isPollComposing { // Magic RunLoop DispatchQueue.main.async { self.markFirstPollOptionCollectionViewCellBecomeFirstResponser() @@ -937,31 +940,31 @@ extension ComposeViewController: ComposeToolbarViewDelegate { } func composeToolbarView(_ composeToolbarView: ComposeToolbarView, emojiButtonDidPressed sender: Any) { - viewModel.isCustomEmojiComposing.value.toggle() + viewModel.isCustomEmojiComposing.toggle() } func composeToolbarView(_ composeToolbarView: ComposeToolbarView, contentWarningButtonDidPressed sender: Any) { // cancel custom picker input - viewModel.isCustomEmojiComposing.value = false + viewModel.isCustomEmojiComposing = false // restore first responder for text editor when content warning dismiss - if viewModel.isContentWarningComposing.value { + if viewModel.isContentWarningComposing { if contentWarningEditorTextView()?.isFirstResponder == true { markTextEditorViewBecomeFirstResponser() } } // toggle composing status - viewModel.isContentWarningComposing.value.toggle() + viewModel.isContentWarningComposing.toggle() // active content warning after toggled - if viewModel.isContentWarningComposing.value { + if viewModel.isContentWarningComposing { contentWarningEditorTextView()?.becomeFirstResponder() } } func composeToolbarView(_ composeToolbarView: ComposeToolbarView, visibilityButtonDidPressed sender: Any, visibilitySelectionType type: ComposeToolbarView.VisibilitySelectionType) { - viewModel.selectedStatusVisibility.value = type + viewModel.selectedStatusVisibility = type } } @@ -971,7 +974,7 @@ extension ComposeViewController { func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) { guard scrollView === tableView else { return } - let repliedToCellFrame = viewModel.repliedToCellFrame.value + let repliedToCellFrame = viewModel.repliedToCellFrame guard repliedToCellFrame != .zero else { return } // try to find some patterns: @@ -984,7 +987,7 @@ extension ComposeViewController { // scrollView.adjustedContentInset.bottom: \(scrollView.adjustedContentInset.bottom) // """) - switch viewModel.collectionViewState.value { + switch viewModel.collectionViewState { case .fold: os_log("%{public}s[%{public}ld], %{public}s: fold", ((#file as NSString).lastPathComponent), #line, #function) guard velocity.y < 0 else { return } @@ -992,7 +995,7 @@ extension ComposeViewController { if offsetY < -44 { tableView.contentInset.top = 0 targetContentOffset.pointee = CGPoint(x: 0, y: -scrollView.adjustedContentInset.top) - viewModel.collectionViewState.value = .expand + viewModel.collectionViewState = .expand } case .expand: @@ -1007,11 +1010,11 @@ extension ComposeViewController { if topOffset > 44 { // do not interrupt user scrolling - viewModel.collectionViewState.value = .fold + viewModel.collectionViewState = .fold } else if bottomOffset > 44 { tableView.contentInset.top = -repliedToCellFrame.height targetContentOffset.pointee = CGPoint(x: 0, y: -repliedToCellFrame.height) - viewModel.collectionViewState.value = .fold + viewModel.collectionViewState = .fold } } } @@ -1057,7 +1060,7 @@ extension ComposeViewController: UIAdaptivePresentationControllerDelegate { } func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool { - return viewModel.shouldDismiss.value + return viewModel.shouldDismiss } func presentationControllerDidAttemptToDismiss(_ presentationController: UIPresentationController) { @@ -1081,11 +1084,11 @@ extension ComposeViewController: PHPickerViewControllerDelegate { let service = MastodonAttachmentService( context: context, pickerResult: result, - initialAuthenticationBox: viewModel.activeAuthenticationBox.value + initialAuthenticationBox: viewModel.authenticationBox ) return service } - viewModel.attachmentServices.value = viewModel.attachmentServices.value + attachmentServices + viewModel.attachmentServices = viewModel.attachmentServices + attachmentServices } } @@ -1100,9 +1103,9 @@ extension ComposeViewController: UIImagePickerControllerDelegate & UINavigationC let attachmentService = MastodonAttachmentService( context: context, image: image, - initialAuthenticationBox: viewModel.activeAuthenticationBox.value + initialAuthenticationBox: viewModel.authenticationBox ) - viewModel.attachmentServices.value = viewModel.attachmentServices.value + [attachmentService] + viewModel.attachmentServices = viewModel.attachmentServices + [attachmentService] } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { @@ -1119,9 +1122,9 @@ extension ComposeViewController: UIDocumentPickerDelegate { let attachmentService = MastodonAttachmentService( context: context, documentURL: url, - initialAuthenticationBox: viewModel.activeAuthenticationBox.value + initialAuthenticationBox: viewModel.authenticationBox ) - viewModel.attachmentServices.value = viewModel.attachmentServices.value + [attachmentService] + viewModel.attachmentServices = viewModel.attachmentServices + [attachmentService] } } @@ -1134,11 +1137,11 @@ extension ComposeViewController: ComposeStatusAttachmentCollectionViewCellDelega guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } guard case let .attachment(attachmentService) = item else { return } - var attachmentServices = viewModel.attachmentServices.value + var attachmentServices = viewModel.attachmentServices guard let index = attachmentServices.firstIndex(of: attachmentService) else { return } let removedItem = attachmentServices[index] attachmentServices.remove(at: index) - viewModel.attachmentServices.value = attachmentServices + viewModel.attachmentServices = attachmentServices // cancel task removedItem.disposeBag.removeAll() @@ -1168,7 +1171,7 @@ extension ComposeViewController: ComposeStatusPollOptionCollectionViewCellDelega guard let item = dataSource.itemIdentifier(for: indexPath) else { return } guard case let .pollOption(attribute) = item else { return } - var pollAttributes = viewModel.pollOptionAttributes.value + var pollAttributes = viewModel.pollOptionAttributes guard let index = pollAttributes.firstIndex(of: attribute) else { return } // mark previous (fallback to next) item of removed middle poll option become first responder @@ -1201,7 +1204,7 @@ extension ComposeViewController: ComposeStatusPollOptionCollectionViewCellDelega pollAttributes.remove(at: index) // update data source - viewModel.pollOptionAttributes.value = pollAttributes + viewModel.pollOptionAttributes = pollAttributes } // handle keyboard return event for poll option input @@ -1260,7 +1263,7 @@ extension ComposeViewController: ComposeStatusContentTableViewCellDelegate { // MARK: - AutoCompleteViewControllerDelegate extension ComposeViewController: AutoCompleteViewControllerDelegate { func autoCompleteViewController(_ viewController: AutoCompleteViewController, didSelectItem item: AutoCompleteItem) { - guard let info = viewModel.autoCompleteInfo.value else { return } + guard let info = viewModel.autoCompleteInfo else { return } let _replacedText: String? = { var text: String switch item { @@ -1278,17 +1281,14 @@ extension ComposeViewController: AutoCompleteViewControllerDelegate { return text }() guard let replacedText = _replacedText else { return } - - guard let textEditorView = textEditorView(), - let text = textEditorView.textView.text else { return } - + guard let text = textEditorView.textView.text else { return } let range = NSRange(info.toHighlightEndRange, in: text) textEditorView.textStorage.replaceCharacters(in: range, with: replacedText) DispatchQueue.main.async { - textEditorView.textView.insertText(" ") // trigger textView delegate update + self.textEditorView.textView.insertText(" ") // trigger textView delegate update } - viewModel.autoCompleteInfo.value = nil + viewModel.autoCompleteInfo = nil switch item { case .emoji, .bottomLoader: @@ -1418,13 +1418,13 @@ extension ComposeViewController { case .toggleContentWarning: composeToolbarView.contentWarningButton.sendActions(for: .touchUpInside) case .selectVisibilityPublic: - viewModel.selectedStatusVisibility.value = .public + viewModel.selectedStatusVisibility = .public // case .selectVisibilityUnlisted: // viewModel.selectedStatusVisibility.value = .unlisted case .selectVisibilityPrivate: - viewModel.selectedStatusVisibility.value = .private + viewModel.selectedStatusVisibility = .private case .selectVisibilityDirect: - viewModel.selectedStatusVisibility.value = .direct + viewModel.selectedStatusVisibility = .direct } } diff --git a/Mastodon/Scene/Compose/ComposeViewModel+DataSource.swift b/Mastodon/Scene/Compose/ComposeViewModel+DataSource.swift index 7fd07bf83..c638eb769 100644 --- a/Mastodon/Scene/Compose/ComposeViewModel+DataSource.swift +++ b/Mastodon/Scene/Compose/ComposeViewModel+DataSource.swift @@ -12,6 +12,8 @@ import CoreDataStack import MastodonSDK import MastodonMeta import MetaTextKit +import MastodonAsset +import MastodonLocalization extension ComposeViewModel { @@ -25,12 +27,20 @@ extension ComposeViewModel { composeStatusPollOptionAppendEntryCollectionViewCellDelegate: ComposeStatusPollOptionAppendEntryCollectionViewCellDelegate, composeStatusPollExpiresOptionCollectionViewCellDelegate: ComposeStatusPollExpiresOptionCollectionViewCellDelegate ) { + // UI + bind() + // content + bind(cell: composeStatusContentTableViewCell, tableView: tableView) composeStatusContentTableViewCell.metaText.delegate = metaTextDelegate composeStatusContentTableViewCell.metaText.textView.delegate = metaTextViewDelegate + // attachment + bind(cell: composeStatusAttachmentTableViewCell, tableView: tableView) composeStatusAttachmentTableViewCell.composeStatusAttachmentCollectionViewCellDelegate = composeStatusAttachmentCollectionViewCellDelegate + // poll + bind(cell: composeStatusPollTableViewCell, tableView: tableView) composeStatusPollTableViewCell.delegate = self composeStatusPollTableViewCell.customEmojiPickerInputViewModel = customEmojiPickerInputViewModel composeStatusPollTableViewCell.composeStatusPollOptionCollectionViewCellDelegate = composeStatusPollOptionCollectionViewCellDelegate @@ -38,43 +48,349 @@ extension ComposeViewModel { composeStatusPollTableViewCell.composeStatusPollExpiresOptionCollectionViewCellDelegate = composeStatusPollExpiresOptionCollectionViewCellDelegate // setup data source - tableView.dataSource = self + tableView.dataSource = self + } + + func setupCustomEmojiPickerDiffableDataSource( + for collectionView: UICollectionView, + dependency: NeedsDependency + ) { + let diffableDataSource = CustomEmojiPickerSection.collectionViewDiffableDataSource( + for: collectionView, + dependency: dependency + ) + self.customEmojiPickerDiffableDataSource = diffableDataSource - composeStatusAttachmentTableViewCell.collectionViewHeightDidUpdate + let _domain = customEmojiViewModel?.domain + customEmojiViewModel?.emojis .receive(on: DispatchQueue.main) - .sink { [weak self] _ in + .sink { [weak self, weak diffableDataSource] emojis in guard let _ = self else { return } - tableView.beginUpdates() - tableView.endUpdates() + guard let diffableDataSource = diffableDataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + let domain = _domain?.uppercased() ?? " " + let customEmojiSection = CustomEmojiPickerSection.emoji(name: domain) + snapshot.appendSections([customEmojiSection]) + let items: [CustomEmojiPickerItem] = { + var items = [CustomEmojiPickerItem]() + for emoji in emojis where emoji.visibleInPicker { + let attribute = CustomEmojiPickerItem.CustomEmojiAttribute(emoji: emoji) + let item = CustomEmojiPickerItem.emoji(attribute: attribute) + items.append(item) + } + return items + }() + snapshot.appendItems(items, toSection: customEmojiSection) + + diffableDataSource.apply(snapshot) } .store(in: &disposeBag) + } + +} - attachmentServices - .removeDuplicates() +// MARK: - UITableViewDataSource +extension ComposeViewModel: UITableViewDataSource { + + enum Section: CaseIterable { + case repliedTo + case status + case attachment + case poll + } + + func numberOfSections(in tableView: UITableView) -> Int { + return Section.allCases.count + } + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + switch Section.allCases[section] { + case .repliedTo: + switch composeKind { + case .reply: return 1 + default: return 0 + } + case .status: return 1 + case .attachment: return 1 + case .poll: return 1 + } + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + switch Section.allCases[indexPath.section] { + case .repliedTo: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ComposeRepliedToStatusContentTableViewCell.self), for: indexPath) as! ComposeRepliedToStatusContentTableViewCell + guard case let .reply(record) = composeKind else { return cell } + + // bind frame publisher + cell.framePublisher + .receive(on: DispatchQueue.main) + .assign(to: \.repliedToCellFrame, on: self) + .store(in: &cell.disposeBag) + + // set initial width + if cell.statusView.frame.width == .zero { + cell.statusView.frame.size.width = tableView.frame.width + } + + // configure status + context.managedObjectContext.performAndWait { + guard let replyTo = record.object(in: context.managedObjectContext) else { return } + cell.statusView.configure(status: replyTo) + } + + return cell + case .status: + return composeStatusContentTableViewCell + case .attachment: + return composeStatusAttachmentTableViewCell + case .poll: + return composeStatusPollTableViewCell + } + } +} + +// MARK: - ComposeStatusPollTableViewCellDelegate +extension ComposeViewModel: ComposeStatusPollTableViewCellDelegate { + func composeStatusPollTableViewCell(_ cell: ComposeStatusPollTableViewCell, pollOptionAttributesDidReorder options: [ComposeStatusPollItem.PollOptionAttribute]) { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + + self.pollOptionAttributes = options + } +} + +extension ComposeViewModel { + private func bind() { + $isCustomEmojiComposing + .assign(to: \.value, on: customEmojiPickerInputViewModel.isCustomEmojiComposing) + .store(in: &disposeBag) + + $isContentWarningComposing + .assign(to: \.isContentWarningComposing, on: composeStatusAttribute) + .store(in: &disposeBag) + + // bind compose toolbar UI state + Publishers.CombineLatest( + $isPollComposing, + $attachmentServices + ) + .receive(on: DispatchQueue.main) + .sink(receiveValue: { [weak self] isPollComposing, attachmentServices in + guard let self = self else { return } + let shouldMediaDisable = isPollComposing || attachmentServices.count >= self.maxMediaAttachments + let shouldPollDisable = attachmentServices.count > 0 + + self.isMediaToolbarButtonEnabled = !shouldMediaDisable + self.isPollToolbarButtonEnabled = !shouldPollDisable + }) + .store(in: &disposeBag) + + // calculate `Idempotency-Key` + let content = Publishers.CombineLatest3( + composeStatusAttribute.$isContentWarningComposing, + composeStatusAttribute.$contentWarningContent, + composeStatusAttribute.$composeContent + ) + .map { isContentWarningComposing, contentWarningContent, composeContent -> String in + if isContentWarningComposing { + return contentWarningContent + (composeContent ?? "") + } else { + return composeContent ?? "" + } + } + let attachmentIDs = $attachmentServices.map { attachments -> String in + let attachmentIDs = attachments.compactMap { $0.attachment.value?.id } + return attachmentIDs.joined(separator: ",") + } + let pollOptionsAndDuration = Publishers.CombineLatest3( + $isPollComposing, + $pollOptionAttributes, + pollExpiresOptionAttribute.expiresOption + ) + .map { isPollComposing, pollOptionAttributes, expiresOption -> String in + guard isPollComposing else { + return "" + } + + let pollOptions = pollOptionAttributes.map { $0.option.value }.joined(separator: ",") + return pollOptions + expiresOption.rawValue + } + + Publishers.CombineLatest4( + content, + attachmentIDs, + pollOptionsAndDuration, + $selectedStatusVisibility + ) + .map { content, attachmentIDs, pollOptionsAndDuration, selectedStatusVisibility -> String in + var hasher = Hasher() + hasher.combine(content) + hasher.combine(attachmentIDs) + hasher.combine(pollOptionsAndDuration) + hasher.combine(selectedStatusVisibility.visibility.rawValue) + let hashValue = hasher.finalize() + return "\(hashValue)" + } + .assign(to: \.value, on: idempotencyKey) + .store(in: &disposeBag) + + // bind modal dismiss state + composeStatusAttribute.$composeContent .receive(on: DispatchQueue.main) - .sink { [weak self] attachmentServices in - guard let self = self else { return } - guard self.isViewAppeared else { return } + .map { [weak self] content in + let content = content ?? "" + if content.isEmpty { + return true + } + // if preInsertedContent plus a space is equal to the content, simply dismiss the modal + if let preInsertedContent = self?.preInsertedContent { + return content == preInsertedContent + } + return false + } + .assign(to: &$shouldDismiss) + + // bind compose bar button item UI state + let isComposeContentEmpty = composeStatusAttribute.$composeContent + .map { ($0 ?? "").isEmpty } + let isComposeContentValid = $characterCount + .compactMap { [weak self] characterCount -> Bool in + guard let self = self else { return characterCount <= 500 } + return characterCount <= self.composeContentLimit + } + let isMediaEmpty = $attachmentServices + .map { $0.isEmpty } + let isMediaUploadAllSuccess = $attachmentServices + .map { services in + services.allSatisfy { $0.uploadStateMachineSubject.value is MastodonAttachmentService.UploadState.Finish } + } + let isPollAttributeAllValid = $pollOptionAttributes + .map { pollAttributes in + pollAttributes.allSatisfy { attribute -> Bool in + !attribute.option.value.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty + } + } + + let isPublishBarButtonItemEnabledPrecondition1 = Publishers.CombineLatest4( + isComposeContentEmpty, + isComposeContentValid, + isMediaEmpty, + isMediaUploadAllSuccess + ) + .map { isComposeContentEmpty, isComposeContentValid, isMediaEmpty, isMediaUploadAllSuccess -> Bool in + if isMediaEmpty { + return isComposeContentValid && !isComposeContentEmpty + } else { + return isComposeContentValid && isMediaUploadAllSuccess + } + } + .eraseToAnyPublisher() + + let isPublishBarButtonItemEnabledPrecondition2 = Publishers.CombineLatest4( + isComposeContentEmpty, + isComposeContentValid, + $isPollComposing, + isPollAttributeAllValid + ) + .map { isComposeContentEmpty, isComposeContentValid, isPollComposing, isPollAttributeAllValid -> Bool in + if isPollComposing { + return isComposeContentValid && !isComposeContentEmpty && isPollAttributeAllValid + } else { + return isComposeContentValid && !isComposeContentEmpty + } + } + .eraseToAnyPublisher() + + Publishers.CombineLatest( + isPublishBarButtonItemEnabledPrecondition1, + isPublishBarButtonItemEnabledPrecondition2 + ) + .map { $0 && $1 } + .assign(to: &$isPublishBarButtonItemEnabled) + } +} - let cell = self.composeStatusAttachmentTableViewCell - guard let dataSource = cell.dataSource else { return } - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - let items = attachmentServices.map { ComposeStatusAttachmentItem.attachment(attachmentService: $0) } - snapshot.appendItems(items, toSection: .main) - - if #available(iOS 15.0, *) { - dataSource.applySnapshotUsingReloadData(snapshot) - } else { - dataSource.apply(snapshot, animatingDifferences: false) +extension ComposeViewModel { + private func bind( + cell: ComposeStatusContentTableViewCell, + tableView: UITableView + ) { + // bind status content character count + Publishers.CombineLatest3( + composeStatusAttribute.$composeContent, + composeStatusAttribute.$isContentWarningComposing, + composeStatusAttribute.$contentWarningContent + ) + .map { composeContent, isContentWarningComposing, contentWarningContent -> Int in + let composeContent = composeContent ?? "" + var count = composeContent.count + if isContentWarningComposing { + count += contentWarningContent.count + } + return count + } + .assign(to: &$characterCount) + + // bind content warning + composeStatusAttribute.$isContentWarningComposing + .receive(on: DispatchQueue.main) + .sink { [weak cell, weak tableView] isContentWarningComposing in + guard let cell = cell else { return } + guard let tableView = tableView else { return } + + // self size input cell + cell.statusContentWarningEditorView.isHidden = !isContentWarningComposing + cell.statusContentWarningEditorView.alpha = 0 + UIView.animate(withDuration: 0.33, delay: 0, options: [.curveEaseOut]) { + cell.statusContentWarningEditorView.alpha = 1 + tableView.beginUpdates() + tableView.endUpdates() + } completion: { _ in + // do nothing } } .store(in: &disposeBag) + + cell.contentWarningContent + .removeDuplicates() + .receive(on: DispatchQueue.main) + .sink { [weak tableView, weak self] text in + guard let self = self else { return } + // bind input data + self.composeStatusAttribute.contentWarningContent = text + // self size input cell + guard let tableView = tableView else { return } + UIView.performWithoutAnimation { + tableView.beginUpdates() + tableView.endUpdates() + } + } + .store(in: &cell.disposeBag) + + // configure custom emoji picker + ComposeStatusSection.configureCustomEmojiPicker( + viewModel: customEmojiPickerInputViewModel, + customEmojiReplaceableTextInput: cell.metaText.textView, + disposeBag: &disposeBag + ) + ComposeStatusSection.configureCustomEmojiPicker( + viewModel: customEmojiPickerInputViewModel, + customEmojiReplaceableTextInput: cell.statusContentWarningEditorView.textView, + disposeBag: &disposeBag + ) + } +} + +extension ComposeViewModel { + private func bind( + cell: ComposeStatusPollTableViewCell, + tableView: UITableView + ) { Publishers.CombineLatest( - isPollComposing, - pollOptionAttributes + $isPollComposing, + $pollOptionAttributes ) .receive(on: DispatchQueue.main) .sink { [weak self] isPollComposing, pollOptionAttributes in @@ -107,212 +423,91 @@ extension ComposeViewModel { } } .store(in: &disposeBag) - } - - func setupCustomEmojiPickerDiffableDataSource( - for collectionView: UICollectionView, - dependency: NeedsDependency - ) { - let diffableDataSource = CustomEmojiPickerSection.collectionViewDiffableDataSource( - for: collectionView, - dependency: dependency - ) - self.customEmojiPickerDiffableDataSource = diffableDataSource - customEmojiViewModel - .sink { [weak self, weak diffableDataSource] customEmojiViewModel in + // bind delegate + $pollOptionAttributes + .sink { [weak self] pollAttributes in guard let self = self else { return } - guard let diffableDataSource = diffableDataSource else { return } - guard let customEmojiViewModel = customEmojiViewModel else { - self.customEmojiViewModelSubscription = nil - let snapshot = NSDiffableDataSourceSnapshot() - diffableDataSource.apply(snapshot) - return - } - - self.customEmojiViewModelSubscription = customEmojiViewModel.emojis - .receive(on: DispatchQueue.main) - .sink { [weak self, weak diffableDataSource] emojis in - guard let _ = self else { return } - guard let diffableDataSource = diffableDataSource else { return } - var snapshot = NSDiffableDataSourceSnapshot() - let customEmojiSection = CustomEmojiPickerSection.emoji(name: customEmojiViewModel.domain.uppercased()) - snapshot.appendSections([customEmojiSection]) - let items: [CustomEmojiPickerItem] = { - var items = [CustomEmojiPickerItem]() - for emoji in emojis where emoji.visibleInPicker { - let attribute = CustomEmojiPickerItem.CustomEmojiAttribute(emoji: emoji) - let item = CustomEmojiPickerItem.emoji(attribute: attribute) - items.append(item) - } - return items - }() - snapshot.appendItems(items, toSection: customEmojiSection) - diffableDataSource.apply(snapshot) - } + pollAttributes.forEach { $0.delegate = self } } .store(in: &disposeBag) } - } -// MARK: - UITableViewDataSource -extension ComposeViewModel: UITableViewDataSource { - - enum Section: CaseIterable { - case repliedTo - case status - case attachment - case poll - } - - func numberOfSections(in tableView: UITableView) -> Int { - return Section.allCases.count - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - switch Section.allCases[section] { - case .repliedTo: - switch composeKind { - case .reply: return 1 - default: return 0 +extension ComposeViewModel { + private func bind( + cell: ComposeStatusAttachmentTableViewCell, + tableView: UITableView + ) { + cell.collectionViewHeightDidUpdate + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let _ = self else { return } + tableView.beginUpdates() + tableView.endUpdates() } - case .status: return 1 - case .attachment: - return 1 - case .poll: - return 1 - } - } + .store(in: &disposeBag) - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - switch Section.allCases[indexPath.section] { - case .repliedTo: - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ComposeRepliedToStatusContentTableViewCell.self), for: indexPath) as! ComposeRepliedToStatusContentTableViewCell - guard case let .reply(statusObjectID) = composeKind else { return cell } - cell.framePublisher - .receive(on: DispatchQueue.main) - .assign(to: \.value, on: self.repliedToCellFrame) - .store(in: &cell.disposeBag) - let managedObjectContext = context.managedObjectContext - managedObjectContext.performAndWait { - guard let replyTo = managedObjectContext.object(with: statusObjectID) as? Status else { - return - } - let status = replyTo.reblog ?? replyTo + $attachmentServices + .removeDuplicates() + .receive(on: DispatchQueue.main) + .sink { [weak self] attachmentServices in + guard let self = self else { return } + guard self.isViewAppeared else { return } - // set avatar - cell.statusView.configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: status.author.avatarImageURL())) - // set name, username - do { - let mastodonContent = MastodonContent(content: status.author.displayNameWithFallback, emojis: status.author.emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.statusView.nameLabel.configure(content: metaContent) - } catch { - let metaContent = PlaintextMetaContent(string: status.author.displayNameWithFallback) - cell.statusView.nameLabel.configure(content: metaContent) - } - cell.statusView.usernameLabel.text = "@" + status.author.acct - // set text - let content = MastodonContent(content: status.content, emojis: status.emojiMeta) - do { - let metaContent = try MastodonMetaContent.convert(document: content) - cell.statusView.contentMetaText.configure(content: metaContent) - } catch { - cell.statusView.contentMetaText.textView.text = " " - assertionFailure() - } - // set date - cell.statusView.dateLabel.text = status.createdAt.localizedSlowedTimeAgoSinceNow - } - return cell - case .status: - let cell = self.composeStatusContentTableViewCell - // configure header - let managedObjectContext = context.managedObjectContext - managedObjectContext.performAndWait { - guard case let .reply(replyToStatusObjectID) = self.composeKind, - let replyTo = managedObjectContext.object(with: replyToStatusObjectID) as? Status else { - cell.statusView.headerContainerView.isHidden = true - return - } - cell.statusView.headerContainerView.isHidden = false - cell.statusView.headerIconLabel.configure(attributedString: StatusView.iconAttributedString(image: StatusView.replyIconImage)) - let headerText: String = { - let author = replyTo.author - let name = author.displayName.isEmpty ? author.username : author.displayName - return L10n.Scene.Compose.replyingToUser(name) - }() - do { - let mastodonContent = MastodonContent(content: headerText, emojis: replyTo.author.emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - cell.statusView.headerInfoLabel.configure(content: metaContent) - } catch { - let metaContent = PlaintextMetaContent(string: headerText) - cell.statusView.headerInfoLabel.configure(content: metaContent) + let cell = self.composeStatusAttachmentTableViewCell + guard let dataSource = cell.dataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + let items = attachmentServices.map { ComposeStatusAttachmentItem.attachment(attachmentService: $0) } + snapshot.appendItems(items, toSection: .main) + + if #available(iOS 15.0, *) { + dataSource.applySnapshotUsingReloadData(snapshot) + } else { + dataSource.apply(snapshot, animatingDifferences: false) } } - // configure author - ComposeStatusSection.configureStatusContent(cell: cell, attribute: composeStatusAttribute) - // configure content. bind text in UITextViewDelegate - if let composeContent = composeStatusAttribute.composeContent.value { - cell.metaText.textView.text = composeContent - } - // configure content warning - cell.statusContentWarningEditorView.textView.text = composeStatusAttribute.contentWarningContent.value - // bind content warning - composeStatusAttribute.isContentWarningComposing - .receive(on: DispatchQueue.main) - .sink { [weak cell, weak tableView] isContentWarningComposing in - guard let cell = cell else { return } - guard let tableView = tableView else { return } - // self size input cell - cell.statusContentWarningEditorView.isHidden = !isContentWarningComposing - cell.statusContentWarningEditorView.alpha = 0 - UIView.animate(withDuration: 0.33, delay: 0, options: [.curveEaseOut]) { - cell.statusContentWarningEditorView.alpha = 1 - tableView.beginUpdates() - tableView.endUpdates() - } completion: { _ in - // do nothing + .store(in: &disposeBag) + + // setup attribute updater + $attachmentServices + .receive(on: DispatchQueue.main) + .debounce(for: 0.3, scheduler: DispatchQueue.main) + .sink { attachmentServices in + // drive service upload state + // make image upload in the queue + for attachmentService in attachmentServices { + // skip when prefix N task when task finish OR fail OR uploading + guard let currentState = attachmentService.uploadStateMachine.currentState else { break } + if currentState is MastodonAttachmentService.UploadState.Fail { + continue + } + if currentState is MastodonAttachmentService.UploadState.Finish { + continue + } + if currentState is MastodonAttachmentService.UploadState.Processing { + continue + } + if currentState is MastodonAttachmentService.UploadState.Uploading { + break + } + // trigger uploading one by one + if currentState is MastodonAttachmentService.UploadState.Initial { + attachmentService.uploadStateMachine.enter(MastodonAttachmentService.UploadState.Uploading.self) + break } } - .store(in: &cell.disposeBag) - cell.contentWarningContent - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak tableView, weak self] text in - guard let self = self else { return } - // bind input data - self.composeStatusAttribute.contentWarningContent.value = text - - // self size input cell - guard let tableView = tableView else { return } - UIView.performWithoutAnimation { - tableView.beginUpdates() - tableView.endUpdates() - } - } - .store(in: &cell.disposeBag) - // configure custom emoji picker - ComposeStatusSection.configureCustomEmojiPicker(viewModel: customEmojiPickerInputViewModel, customEmojiReplaceableTextInput: cell.metaText.textView, disposeBag: &cell.disposeBag) - ComposeStatusSection.configureCustomEmojiPicker(viewModel: customEmojiPickerInputViewModel, customEmojiReplaceableTextInput: cell.statusContentWarningEditorView.textView, disposeBag: &cell.disposeBag) - return cell - case .attachment: - let cell = self.composeStatusAttachmentTableViewCell - return cell - case .poll: - let cell = self.composeStatusPollTableViewCell - return cell - } - } -} - -// MARK: - ComposeStatusPollTableViewCellDelegate -extension ComposeViewModel: ComposeStatusPollTableViewCellDelegate { - func composeStatusPollTableViewCell(_ cell: ComposeStatusPollTableViewCell, pollOptionAttributesDidReorder options: [ComposeStatusPollItem.PollOptionAttribute]) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - - self.pollOptionAttributes.value = options + } + .store(in: &disposeBag) + + // bind delegate + $attachmentServices + .sink { [weak self] attachmentServices in + guard let self = self else { return } + attachmentServices.forEach { $0.delegate = self } + } + .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Compose/ComposeViewModel+PublishState.swift b/Mastodon/Scene/Compose/ComposeViewModel+PublishState.swift index 8f739315d..761391814 100644 --- a/Mastodon/Scene/Compose/ComposeViewModel+PublishState.swift +++ b/Mastodon/Scene/Compose/ComposeViewModel+PublishState.swift @@ -45,44 +45,41 @@ extension ComposeViewModel.PublishState { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let mastodonAuthenticationBox = viewModel.activeAuthenticationBox.value else { - stateMachine.enter(Fail.self) - return - } viewModel.updatePublishDate() - let domain = mastodonAuthenticationBox.domain - let attachmentServices = viewModel.attachmentServices.value + let authenticationBox = viewModel.authenticationBox + let domain = authenticationBox.domain + let attachmentServices = viewModel.attachmentServices let mediaIDs = attachmentServices.compactMap { attachmentService in attachmentService.attachment.value?.id } let pollOptions: [String]? = { - guard viewModel.isPollComposing.value else { return nil } - return viewModel.pollOptionAttributes.value.map { attribute in attribute.option.value } + guard viewModel.isPollComposing else { return nil } + return viewModel.pollOptionAttributes.map { attribute in attribute.option.value } }() let pollExpiresIn: Int? = { - guard viewModel.isPollComposing.value else { return nil } + guard viewModel.isPollComposing else { return nil } return viewModel.pollExpiresOptionAttribute.expiresOption.value.seconds }() let inReplyToID: Mastodon.Entity.Status.ID? = { - guard case let .reply(repliedToStatusObjectID) = viewModel.composeKind else { return nil } + guard case let .reply(status) = viewModel.composeKind else { return nil } var id: Mastodon.Entity.Status.ID? viewModel.context.managedObjectContext.performAndWait { - guard let replyTo = viewModel.context.managedObjectContext.object(with: repliedToStatusObjectID) as? Status else { return } + guard let replyTo = status.object(in: viewModel.context.managedObjectContext) else { return } id = replyTo.id } return id }() - let sensitive: Bool = viewModel.isContentWarningComposing.value + let sensitive: Bool = viewModel.isContentWarningComposing let spoilerText: String? = { - let text = viewModel.composeStatusAttribute.contentWarningContent.value.trimmingCharacters(in: .whitespacesAndNewlines) + let text = viewModel.composeStatusAttribute.contentWarningContent.trimmingCharacters(in: .whitespacesAndNewlines) guard !text.isEmpty else { return nil } return text }() - let visibility = viewModel.selectedStatusVisibility.value.visibility + let visibility = viewModel.selectedStatusVisibility.visibility let updateMediaQuerySubscriptions: [AnyPublisher, Error>] = { var subscriptions: [AnyPublisher, Error>] = [] @@ -100,7 +97,7 @@ extension ComposeViewModel.PublishState { domain: domain, attachmentID: attachmentID, query: query, - mastodonAuthenticationBox: mastodonAuthenticationBox + mastodonAuthenticationBox: authenticationBox ) subscriptions.append(subscription) } @@ -111,9 +108,9 @@ extension ComposeViewModel.PublishState { publishingSubscription = Publishers.MergeMany(updateMediaQuerySubscriptions) .collect() - .flatMap { attachments -> AnyPublisher, Error> in + .asyncMap { attachments -> Mastodon.Response.Content in let query = Mastodon.API.Statuses.PublishStatusQuery( - status: viewModel.composeStatusAttribute.composeContent.value, + status: viewModel.composeStatusAttribute.composeContent, mediaIDs: mediaIDs.isEmpty ? nil : mediaIDs, pollOptions: pollOptions, pollExpiresIn: pollExpiresIn, @@ -122,11 +119,11 @@ extension ComposeViewModel.PublishState { spoilerText: spoilerText, visibility: visibility ) - return viewModel.context.apiService.publishStatus( + return try await viewModel.context.apiService.publishStatus( domain: domain, idempotencyKey: idempotencyKey, query: query, - mastodonAuthenticationBox: mastodonAuthenticationBox + authenticationBox: authenticationBox ) } .receive(on: DispatchQueue.main) diff --git a/Mastodon/Scene/Compose/ComposeViewModel.swift b/Mastodon/Scene/Compose/ComposeViewModel.swift index 8cb54d88a..162043064 100644 --- a/Mastodon/Scene/Compose/ComposeViewModel.swift +++ b/Mastodon/Scene/Compose/ComposeViewModel.swift @@ -12,9 +12,14 @@ import CoreData import CoreDataStack import GameplayKit import MastodonSDK +import MastodonAsset +import MastodonLocalization +import MastodonMeta +import MastodonUI final class ComposeViewModel: NSObject { + let logger = Logger(subsystem: "ComposeViewModel", category: "ViewModel") var disposeBag = Set() @@ -23,17 +28,19 @@ final class ComposeViewModel: NSObject { // input let context: AppContext let composeKind: ComposeStatusSection.ComposeKind - let composeStatusAttribute = ComposeStatusItem.ComposeStatusAttribute() - let isPollComposing = CurrentValueSubject(false) - let isCustomEmojiComposing = CurrentValueSubject(false) - let isContentWarningComposing = CurrentValueSubject(false) - let selectedStatusVisibility: CurrentValueSubject - let activeAuthentication: CurrentValueSubject - let activeAuthenticationBox: CurrentValueSubject + let authenticationBox: MastodonAuthenticationBox + + + @Published var isPollComposing = false + @Published var isCustomEmojiComposing = false + @Published var isContentWarningComposing = false + + @Published var selectedStatusVisibility: ComposeToolbarView.VisibilitySelectionType + @Published var repliedToCellFrame: CGRect = .zero + @Published var autoCompleteRetryLayoutTimes = 0 + @Published var autoCompleteInfo: ComposeViewController.AutoCompleteInfo? = nil + let traitCollectionDidChangePublisher = CurrentValueSubject(Void()) // use CurrentValueSubject to make initial event emit - let repliedToCellFrame = CurrentValueSubject(.zero) - let autoCompleteRetryLayoutTimes = CurrentValueSubject(0) - let autoCompleteInfo = CurrentValueSubject(nil) var isViewAppeared = false // output @@ -55,12 +62,13 @@ final class ComposeViewModel: NSObject { return max(2, maxOptions) } + let composeStatusAttribute = ComposeStatusItem.ComposeStatusAttribute() let composeStatusContentTableViewCell = ComposeStatusContentTableViewCell() let composeStatusAttachmentTableViewCell = ComposeStatusAttachmentTableViewCell() let composeStatusPollTableViewCell = ComposeStatusPollTableViewCell() - var dataSource: UITableViewDiffableDataSource! - var customEmojiPickerDiffableDataSource: UICollectionViewDiffableDataSource! + // var dataSource: UITableViewDiffableDataSource? + var customEmojiPickerDiffableDataSource: UICollectionViewDiffableDataSource? private(set) lazy var publishStateMachine: GKStateMachine = { // exclude timeline middle fetcher state let stateMachine = GKStateMachine(states: [ @@ -80,53 +88,63 @@ final class ComposeViewModel: NSObject { var idempotencyKey = CurrentValueSubject(UUID().uuidString) // UI & UX - let title: CurrentValueSubject - let shouldDismiss = CurrentValueSubject(true) - let isPublishBarButtonItemEnabled = CurrentValueSubject(false) - let isMediaToolbarButtonEnabled = CurrentValueSubject(true) - let isPollToolbarButtonEnabled = CurrentValueSubject(true) - let characterCount = CurrentValueSubject(0) - let collectionViewState = CurrentValueSubject(.fold) + @Published var title: String + @Published var shouldDismiss = true + @Published var isPublishBarButtonItemEnabled = false + @Published var isMediaToolbarButtonEnabled = true + @Published var isPollToolbarButtonEnabled = true + @Published var characterCount = 0 + @Published var collectionViewState: CollectionViewState = .fold // for hashtag: "# " // for mention: "@ " - private(set) var preInsertedContent: String? + var preInsertedContent: String? // custom emojis - var customEmojiViewModelSubscription: AnyCancellable? - let customEmojiViewModel = CurrentValueSubject(nil) + let customEmojiViewModel: EmojiService.CustomEmojiViewModel? let customEmojiPickerInputViewModel = CustomEmojiPickerInputViewModel() - let isLoadingCustomEmoji = CurrentValueSubject(false) + @Published var isLoadingCustomEmoji = false // attachment - let attachmentServices = CurrentValueSubject<[MastodonAttachmentService], Never>([]) + @Published var attachmentServices: [MastodonAttachmentService] = [] // polls - let pollOptionAttributes = CurrentValueSubject<[ComposeStatusPollItem.PollOptionAttribute], Never>([]) + @Published var pollOptionAttributes: [ComposeStatusPollItem.PollOptionAttribute] = [] let pollExpiresOptionAttribute = ComposeStatusPollItem.PollExpiresOptionAttribute() init( context: AppContext, - composeKind: ComposeStatusSection.ComposeKind + composeKind: ComposeStatusSection.ComposeKind, + authenticationBox: MastodonAuthenticationBox ) { self.context = context self.composeKind = composeKind - switch composeKind { - case .post, .hashtag, .mention: self.title = CurrentValueSubject(L10n.Scene.Compose.Title.newPost) - case .reply: self.title = CurrentValueSubject(L10n.Scene.Compose.Title.newReply) - } + self.authenticationBox = authenticationBox + self.title = { + switch composeKind { + case .post, .hashtag, .mention: return L10n.Scene.Compose.Title.newPost + case .reply: return L10n.Scene.Compose.Title.newReply + } + }() self.selectedStatusVisibility = { // default private when user locked - var visibility: ComposeToolbarView.VisibilitySelectionType = context.authenticationService.activeMastodonAuthentication.value?.user.locked == true ? .private : .public + var visibility: ComposeToolbarView.VisibilitySelectionType = { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value, + let author = authenticationBox.authenticationRecord.object(in: context.managedObjectContext)?.user + else { + return .public + } + return author.locked ? .private : .public + }() // set visibility for reply post switch composeKind { - case .reply(let repliedToStatusObjectID): + case .reply(let record): context.managedObjectContext.performAndWait { - guard let status = try? context.managedObjectContext.existingObject(with: repliedToStatusObjectID) as? Status else { + guard let status = record.object(in: context.managedObjectContext) else { assertionFailure() return } - guard let repliedStatusVisibility = status.visibilityEnum else { return } + let repliedStatusVisibility = status.visibility switch repliedStatusVisibility { case .public, .unlisted: // keep default @@ -143,323 +161,25 @@ final class ComposeViewModel: NSObject { default: break } - return CurrentValueSubject(visibility) + return visibility }() - let _activeAuthentication = context.authenticationService.activeMastodonAuthentication.value - self.activeAuthentication = CurrentValueSubject(_activeAuthentication) - self.activeAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value) // set limit - let _instanceConfiguration = _activeAuthentication?.instance?.configuration - self.instanceConfiguration = _instanceConfiguration + self.instanceConfiguration = { + var configuration: Mastodon.Entity.Instance.Configuration? = nil + context.managedObjectContext.performAndWait { + guard let authentication = authenticationBox.authenticationRecord.object(in: context.managedObjectContext) + else { + return + } + configuration = authentication.instance?.configuration + } + return configuration + }() + self.customEmojiViewModel = context.emojiService.dequeueCustomEmojiViewModel(for: authenticationBox.domain) super.init() // end init - switch composeKind { - case .reply(let repliedToStatusObjectID): - context.managedObjectContext.performAndWait { - guard let status = context.managedObjectContext.object(with: repliedToStatusObjectID) as? Status else { return } - let composeAuthor: MastodonUser? = { - guard let objectID = self.activeAuthentication.value?.user.objectID else { return nil } - guard let author = context.managedObjectContext.object(with: objectID) as? MastodonUser else { return nil } - return author - }() - - var mentionAccts: [String] = [] - if composeAuthor?.id != status.author.id { - mentionAccts.append("@" + status.author.acct) - } - let mentions = (status.mentions ?? Set()) - .sorted(by: { $0.index.intValue < $1.index.intValue }) - .filter { $0.id != composeAuthor?.id } - for mention in mentions { - let acct = "@" + mention.acct - guard !mentionAccts.contains(acct) else { continue } - mentionAccts.append(acct) - } - for acct in mentionAccts { - UITextChecker.learnWord(acct) - } - if let spoilerText = status.spoilerText, !spoilerText.isEmpty { - self.isContentWarningComposing.value = true - self.composeStatusAttribute.contentWarningContent.value = spoilerText - } - - let initialComposeContent = mentionAccts.joined(separator: " ") - let preInsertedContent: String? = initialComposeContent.isEmpty ? nil : initialComposeContent + " " - self.preInsertedContent = preInsertedContent - self.composeStatusAttribute.composeContent.value = preInsertedContent - } - case .hashtag(let hashtag): - let initialComposeContent = "#" + hashtag - UITextChecker.learnWord(initialComposeContent) - let preInsertedContent = initialComposeContent + " " - self.preInsertedContent = preInsertedContent - self.composeStatusAttribute.composeContent.value = preInsertedContent - case .mention(let mastodonUserObjectID): - context.managedObjectContext.performAndWait { - let mastodonUser = context.managedObjectContext.object(with: mastodonUserObjectID) as! MastodonUser - let initialComposeContent = "@" + mastodonUser.acct - UITextChecker.learnWord(initialComposeContent) - let preInsertedContent = initialComposeContent + " " - self.preInsertedContent = preInsertedContent - self.composeStatusAttribute.composeContent.value = preInsertedContent - } - case .post: - self.preInsertedContent = nil - } - - isCustomEmojiComposing - .assign(to: \.value, on: customEmojiPickerInputViewModel.isCustomEmojiComposing) - .store(in: &disposeBag) - - isContentWarningComposing - .assign(to: \.value, on: composeStatusAttribute.isContentWarningComposing) - .store(in: &disposeBag) - - // bind active authentication - context.authenticationService.activeMastodonAuthentication - .assign(to: \.value, on: activeAuthentication) - .store(in: &disposeBag) - context.authenticationService.activeMastodonAuthenticationBox - .assign(to: \.value, on: activeAuthenticationBox) - .store(in: &disposeBag) - - // bind avatar and names - activeAuthentication - .sink { [weak self] mastodonAuthentication in - guard let self = self else { return } - let mastodonUser = mastodonAuthentication?.user - let username = mastodonUser?.username ?? " " - - self.composeStatusAttribute.avatarURL.value = mastodonUser?.avatarImageURL() - self.composeStatusAttribute.displayName.value = { - guard let displayName = mastodonUser?.displayName, !displayName.isEmpty else { - return username - } - return displayName - }() - self.composeStatusAttribute.emojiMeta.value = mastodonUser?.emojiMeta ?? [:] - self.composeStatusAttribute.username.value = username - } - .store(in: &disposeBag) - - // bind character count - Publishers.CombineLatest3( - composeStatusAttribute.composeContent.eraseToAnyPublisher(), - composeStatusAttribute.isContentWarningComposing.eraseToAnyPublisher(), - composeStatusAttribute.contentWarningContent.eraseToAnyPublisher() - ) - .map { composeContent, isContentWarningComposing, contentWarningContent -> Int in - let composeContent = composeContent ?? "" - var count = composeContent.count - if isContentWarningComposing { - count += contentWarningContent.count - } - return count - } - .assign(to: \.value, on: characterCount) - .store(in: &disposeBag) - - // bind compose bar button item UI state - let isComposeContentEmpty = composeStatusAttribute.composeContent - .map { ($0 ?? "").isEmpty } - let isComposeContentValid = characterCount - .compactMap { [weak self] characterCount -> Bool in - guard let self = self else { return characterCount <= 500 } - return characterCount <= self.composeContentLimit - } - let isMediaEmpty = attachmentServices - .map { $0.isEmpty } - let isMediaUploadAllSuccess = attachmentServices - .map { services in - services.allSatisfy { $0.uploadStateMachineSubject.value is MastodonAttachmentService.UploadState.Finish } - } - let isPollAttributeAllValid = pollOptionAttributes - .map { pollAttributes in - pollAttributes.allSatisfy { attribute -> Bool in - !attribute.option.value.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty - } - } - - let isPublishBarButtonItemEnabledPrecondition1 = Publishers.CombineLatest4( - isComposeContentEmpty, - isComposeContentValid, - isMediaEmpty, - isMediaUploadAllSuccess - ) - .map { isComposeContentEmpty, isComposeContentValid, isMediaEmpty, isMediaUploadAllSuccess -> Bool in - if isMediaEmpty { - return isComposeContentValid && !isComposeContentEmpty - } else { - return isComposeContentValid && isMediaUploadAllSuccess - } - } - .eraseToAnyPublisher() - - let isPublishBarButtonItemEnabledPrecondition2 = Publishers.CombineLatest4( - isComposeContentEmpty, - isComposeContentValid, - isPollComposing, - isPollAttributeAllValid - ) - .map { isComposeContentEmpty, isComposeContentValid, isPollComposing, isPollAttributeAllValid -> Bool in - if isPollComposing { - return isComposeContentValid && !isComposeContentEmpty && isPollAttributeAllValid - } else { - return isComposeContentValid && !isComposeContentEmpty - } - } - .eraseToAnyPublisher() - - Publishers.CombineLatest( - isPublishBarButtonItemEnabledPrecondition1, - isPublishBarButtonItemEnabledPrecondition2 - ) - .map { $0 && $1 } - .assign(to: \.value, on: isPublishBarButtonItemEnabled) - .store(in: &disposeBag) - - // bind modal dismiss state - composeStatusAttribute.composeContent - .receive(on: DispatchQueue.main) - .map { [weak self] content in - let content = content ?? "" - if content.isEmpty { - return true - } - // if preInsertedContent plus a space is equal to the content, simply dismiss the modal - if let preInsertedContent = self?.preInsertedContent { - return content == preInsertedContent - } - return false - } - .assign(to: \.value, on: shouldDismiss) - .store(in: &disposeBag) - - // bind custom emojis - context.authenticationService.activeMastodonAuthenticationBox - .receive(on: DispatchQueue.main) - .sink { [weak self] activeMastodonAuthenticationBox in - guard let self = self else { return } - guard let activeMastodonAuthenticationBox = activeMastodonAuthenticationBox else { return } - let domain = activeMastodonAuthenticationBox.domain - - // trigger dequeue to preload emojis - self.customEmojiViewModel.value = self.context.emojiService.dequeueCustomEmojiViewModel(for: domain) - } - .store(in: &disposeBag) - - // setup attribute updater - attachmentServices - .receive(on: DispatchQueue.main) - .debounce(for: 0.3, scheduler: DispatchQueue.main) - .sink { attachmentServices in - // drive service upload state - // make image upload in the queue - for attachmentService in attachmentServices { - // skip when prefix N task when task finish OR fail OR uploading - guard let currentState = attachmentService.uploadStateMachine.currentState else { break } - if currentState is MastodonAttachmentService.UploadState.Fail { - continue - } - if currentState is MastodonAttachmentService.UploadState.Finish { - continue - } - if currentState is MastodonAttachmentService.UploadState.Processing { - continue - } - if currentState is MastodonAttachmentService.UploadState.Uploading { - break - } - // trigger uploading one by one - if currentState is MastodonAttachmentService.UploadState.Initial { - attachmentService.uploadStateMachine.enter(MastodonAttachmentService.UploadState.Uploading.self) - break - } - } - } - .store(in: &disposeBag) - - // bind delegate - attachmentServices - .sink { [weak self] attachmentServices in - guard let self = self else { return } - attachmentServices.forEach { $0.delegate = self } - } - .store(in: &disposeBag) - - pollOptionAttributes - .sink { [weak self] pollAttributes in - guard let self = self else { return } - pollAttributes.forEach { $0.delegate = self } - } - .store(in: &disposeBag) - - // bind compose toolbar UI state - Publishers.CombineLatest( - isPollComposing.eraseToAnyPublisher(), - attachmentServices.eraseToAnyPublisher() - ) - .receive(on: DispatchQueue.main) - .sink(receiveValue: { [weak self] isPollComposing, attachmentServices in - guard let self = self else { return } - let shouldMediaDisable = isPollComposing || attachmentServices.count >= self.maxMediaAttachments - let shouldPollDisable = attachmentServices.count > 0 - - self.isMediaToolbarButtonEnabled.value = !shouldMediaDisable - self.isPollToolbarButtonEnabled.value = !shouldPollDisable - }) - .store(in: &disposeBag) - - // calculate `Idempotency-Key` - let content = Publishers.CombineLatest3( - composeStatusAttribute.isContentWarningComposing, - composeStatusAttribute.contentWarningContent, - composeStatusAttribute.composeContent - ) - .map { isContentWarningComposing, contentWarningContent, composeContent -> String in - if isContentWarningComposing { - return contentWarningContent + (composeContent ?? "") - } else { - return composeContent ?? "" - } - } - let attachmentIDs = attachmentServices.map { attachments -> String in - let attachmentIDs = attachments.compactMap { $0.attachment.value?.id } - return attachmentIDs.joined(separator: ",") - } - let pollOptionsAndDuration = Publishers.CombineLatest3( - isPollComposing, - pollOptionAttributes, - pollExpiresOptionAttribute.expiresOption - ) - .map { isPollComposing, pollOptionAttributes, expiresOption -> String in - guard isPollComposing else { - return "" - } - - let pollOptions = pollOptionAttributes.map { $0.option.value }.joined(separator: ",") - return pollOptions + expiresOption.rawValue - } - - Publishers.CombineLatest4( - content, - attachmentIDs, - pollOptionsAndDuration, - selectedStatusVisibility - ) - .map { content, attachmentIDs, pollOptionsAndDuration, selectedStatusVisibility -> String in - var hasher = Hasher() - hasher.combine(content) - hasher.combine(attachmentIDs) - hasher.combine(pollOptionsAndDuration) - hasher.combine(selectedStatusVisibility.visibility.rawValue) - let hashValue = hasher.finalize() - return "\(hashValue)" - } - .assign(to: \.value, on: idempotencyKey) - .store(in: &disposeBag) - + setup(cell: composeStatusContentTableViewCell) } deinit { @@ -477,10 +197,10 @@ extension ComposeViewModel { extension ComposeViewModel { func createNewPollOptionIfPossible() { - guard pollOptionAttributes.value.count < maxPollOptions else { return } + guard pollOptionAttributes.count < maxPollOptions else { return } let attribute = ComposeStatusPollItem.PollOptionAttribute() - pollOptionAttributes.value = pollOptionAttributes.value + [attribute] + pollOptionAttributes = pollOptionAttributes + [attribute] } func updatePublishDate() { @@ -512,7 +232,7 @@ extension ComposeViewModel { // - up to 1 video // - up to N photos func checkAttachmentPrecondition() throws { - let attachmentServices = self.attachmentServices.value + let attachmentServices = self.attachmentServices guard !attachmentServices.isEmpty else { return } var photoAttachmentServices: [MastodonAttachmentService] = [] var videoAttachmentServices: [MastodonAttachmentService] = [] @@ -545,7 +265,7 @@ extension ComposeViewModel { extension ComposeViewModel: MastodonAttachmentServiceDelegate { func mastodonAttachmentService(_ service: MastodonAttachmentService, uploadStateDidChange state: MastodonAttachmentService.UploadState?) { // trigger new output event - attachmentServices.value = attachmentServices.value + attachmentServices = attachmentServices } } @@ -553,6 +273,115 @@ extension ComposeViewModel: MastodonAttachmentServiceDelegate { extension ComposeViewModel: ComposePollAttributeDelegate { func composePollAttribute(_ attribute: ComposeStatusPollItem.PollOptionAttribute, pollOptionDidChange: String?) { // trigger update - pollOptionAttributes.value = pollOptionAttributes.value + pollOptionAttributes = pollOptionAttributes + } +} + +extension ComposeViewModel { + private func setup( + cell: ComposeStatusContentTableViewCell + ) { + setupStatusHeader(cell: cell) + setupStatusAuthor(cell: cell) + setupStatusContent(cell: cell) + } + + private func setupStatusHeader( + cell: ComposeStatusContentTableViewCell + ) { + // configure header + let managedObjectContext = context.managedObjectContext + managedObjectContext.performAndWait { + guard case let .reply(record) = self.composeKind, + let replyTo = record.object(in: managedObjectContext) + else { + cell.statusView.viewModel.header = .none + return + } + + let info: StatusView.ViewModel.Header.ReplyInfo + do { + let content = MastodonContent( + content: replyTo.author.displayNameWithFallback, + emojis: replyTo.author.emojis.asDictionary + ) + let metaContent = try MastodonMetaContent.convert(document: content) + info = .init(header: metaContent) + } catch { + let metaContent = PlaintextMetaContent(string: replyTo.author.displayNameWithFallback) + info = .init(header: metaContent) + } + cell.statusView.viewModel.header = .reply(info: info) + } + } + + private func setupStatusAuthor( + cell: ComposeStatusContentTableViewCell + ) { + self.context.managedObjectContext.performAndWait { + guard let author = authenticationBox.authenticationRecord.object(in: self.context.managedObjectContext)?.user else { return } + cell.statusView.configureAuthor(author: author) + } + } + + private func setupStatusContent( + cell: ComposeStatusContentTableViewCell + ) { + switch composeKind { + case .reply(let record): + context.managedObjectContext.performAndWait { + guard let status = record.object(in: context.managedObjectContext) else { return } + let author = self.authenticationBox.authenticationRecord.object(in: context.managedObjectContext)?.user + + var mentionAccts: [String] = [] + if author?.id != status.author.id { + mentionAccts.append("@" + status.author.acct) + } + let mentions = status.mentions + .filter { author?.id != $0.id } + for mention in mentions { + let acct = "@" + mention.acct + guard !mentionAccts.contains(acct) else { continue } + mentionAccts.append(acct) + } + for acct in mentionAccts { + UITextChecker.learnWord(acct) + } + if let spoilerText = status.spoilerText, !spoilerText.isEmpty { + self.isContentWarningComposing = true + self.composeStatusAttribute.contentWarningContent = spoilerText + } + + let initialComposeContent = mentionAccts.joined(separator: " ") + let preInsertedContent: String? = initialComposeContent.isEmpty ? nil : initialComposeContent + " " + self.preInsertedContent = preInsertedContent + self.composeStatusAttribute.composeContent = preInsertedContent + } + case .hashtag(let hashtag): + let initialComposeContent = "#" + hashtag + UITextChecker.learnWord(initialComposeContent) + let preInsertedContent = initialComposeContent + " " + self.preInsertedContent = preInsertedContent + self.composeStatusAttribute.composeContent = preInsertedContent + case .mention(let record): + context.managedObjectContext.performAndWait { + guard let user = record.object(in: context.managedObjectContext) else { return } + let initialComposeContent = "@" + user.acct + UITextChecker.learnWord(initialComposeContent) + let preInsertedContent = initialComposeContent + " " + self.preInsertedContent = preInsertedContent + self.composeStatusAttribute.composeContent = preInsertedContent + } + case .post: + self.preInsertedContent = nil + } + + // configure content warning + if let composeContent = composeStatusAttribute.composeContent { + cell.metaText.textView.text = composeContent + } + + // configure content warning + cell.statusContentWarningEditorView.textView.text = composeStatusAttribute.contentWarningContent } } diff --git a/Mastodon/Scene/Compose/TableViewCell/ComposeRepliedToStatusContentTableViewCell.swift b/Mastodon/Scene/Compose/TableViewCell/ComposeRepliedToStatusContentTableViewCell.swift index 4ba68cedd..f15675b24 100644 --- a/Mastodon/Scene/Compose/TableViewCell/ComposeRepliedToStatusContentTableViewCell.swift +++ b/Mastodon/Scene/Compose/TableViewCell/ComposeRepliedToStatusContentTableViewCell.swift @@ -12,7 +12,7 @@ final class ComposeRepliedToStatusContentTableViewCell: UITableViewCell { var disposeBag = Set() - let statusView = ReplicaStatusView() + let statusView = StatusView() let framePublisher = PassthroughSubject() @@ -20,6 +20,7 @@ final class ComposeRepliedToStatusContentTableViewCell: UITableViewCell { super.prepareForReuse() disposeBag.removeAll() + statusView.prepareForReuse() } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { @@ -49,12 +50,11 @@ extension ComposeRepliedToStatusContentTableViewCell { contentView.addSubview(statusView) NSLayoutConstraint.activate([ statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 20).identifier("statusView.top to ComposeRepliedToStatusContentCollectionViewCell.contentView.top"), - statusView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), - contentView.layoutMarginsGuide.trailingAnchor.constraint(equalTo: statusView.trailingAnchor), + statusView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + contentView.trailingAnchor.constraint(equalTo: statusView.trailingAnchor), contentView.bottomAnchor.constraint(equalTo: statusView.bottomAnchor, constant: 10).identifier("ComposeRepliedToStatusContentCollectionViewCell.contentView.bottom to statusView.bottom"), ]) - - statusView.headerContainerView.isHidden = true + statusView.setup(style: .composeStatusReplica) } } diff --git a/Mastodon/Scene/Compose/TableViewCell/ComposeStatusAttachmentTableViewCell.swift b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusAttachmentTableViewCell.swift index 6d2bbe93a..85c36fae0 100644 --- a/Mastodon/Scene/Compose/TableViewCell/ComposeStatusAttachmentTableViewCell.swift +++ b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusAttachmentTableViewCell.swift @@ -8,6 +8,8 @@ import UIKit import Combine import AlamofireImage +import MastodonAsset +import MastodonLocalization final class ComposeStatusAttachmentTableViewCell: UITableViewCell { diff --git a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusContentTableViewCell.swift b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift similarity index 93% rename from Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusContentTableViewCell.swift rename to Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift index f44d29a68..34f34f02e 100644 --- a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusContentTableViewCell.swift +++ b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift @@ -10,6 +10,9 @@ import UIKit import Combine import MetaTextKit import UITextView_Placeholder +import MastodonAsset +import MastodonLocalization +import MastodonUI protocol ComposeStatusContentTableViewCellDelegate: AnyObject { func composeStatusContentTableViewCell(_ cell: ComposeStatusContentTableViewCell, textViewShouldBeginEditing textView: UITextView) -> Bool @@ -17,12 +20,12 @@ protocol ComposeStatusContentTableViewCellDelegate: AnyObject { final class ComposeStatusContentTableViewCell: UITableViewCell { - let logger = Logger(subsystem: "ComposeStatusContentTableViewCell", category: "UI") + let logger = Logger(subsystem: "ComposeStatusContentTableViewCell", category: "View") var disposeBag = Set() weak var delegate: ComposeStatusContentTableViewCellDelegate? - let statusView = ReplicaStatusView() + let statusView = StatusView() let statusContentWarningEditorView = StatusContentWarningEditorView() @@ -114,10 +117,11 @@ extension ComposeStatusContentTableViewCell { statusContainerView.addSubview(statusView) NSLayoutConstraint.activate([ statusView.topAnchor.constraint(equalTo: statusContainerView.topAnchor, constant: 20), - statusView.leadingAnchor.constraint(equalTo: statusContainerView.layoutMarginsGuide.leadingAnchor), - statusView.trailingAnchor.constraint(equalTo: statusContainerView.layoutMarginsGuide.trailingAnchor), + statusView.leadingAnchor.constraint(equalTo: statusContainerView.leadingAnchor), + statusView.trailingAnchor.constraint(equalTo: statusContainerView.trailingAnchor), statusView.bottomAnchor.constraint(equalTo: statusContainerView.bottomAnchor), ]) + statusView.setup(style: .composeStatusAuthor) containerStackView.addArrangedSubview(textEditorViewContainerView) metaText.textView.translatesAutoresizingMaskIntoConstraints = false @@ -131,10 +135,10 @@ extension ComposeStatusContentTableViewCell { ]) statusContentWarningEditorView.textView.delegate = self - statusView.nameTrialingDotLabel.isHidden = true - statusView.dateLabel.isHidden = true - statusContentWarningEditorView.isHidden = true - statusView.statusContainerStackView.isHidden = true +// statusView.nameTrialingDotLabel.isHidden = true +// statusView.dateLabel.isHidden = true +// statusContentWarningEditorView.isHidden = true +// statusView.statusContainerStackView.isHidden = true } } diff --git a/Mastodon/Scene/Compose/TableViewCell/ComposeStatusPollTableViewCell.swift b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusPollTableViewCell.swift index ac8d5094f..f33a35c3e 100644 --- a/Mastodon/Scene/Compose/TableViewCell/ComposeStatusPollTableViewCell.swift +++ b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusPollTableViewCell.swift @@ -8,6 +8,8 @@ import os.log import UIKit import Combine +import MastodonAsset +import MastodonLocalization protocol ComposeStatusPollTableViewCellDelegate: AnyObject { func composeStatusPollTableViewCell(_ cell: ComposeStatusPollTableViewCell, pollOptionAttributesDidReorder options: [ComposeStatusPollItem.PollOptionAttribute]) @@ -26,7 +28,6 @@ final class ComposeStatusPollTableViewCell: UITableViewCell { weak var composeStatusPollOptionAppendEntryCollectionViewCellDelegate: ComposeStatusPollOptionAppendEntryCollectionViewCellDelegate? weak var composeStatusPollExpiresOptionCollectionViewCellDelegate: ComposeStatusPollExpiresOptionCollectionViewCellDelegate? - private static func createLayout() -> UICollectionViewLayout { let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(44)) let item = NSCollectionLayoutItem(layoutSize: itemSize) diff --git a/Mastodon/Scene/Compose/View/AttachmentContainerView+EmptyStateView.swift b/Mastodon/Scene/Compose/View/AttachmentContainerView+EmptyStateView.swift index b441fa253..1d32931af 100644 --- a/Mastodon/Scene/Compose/View/AttachmentContainerView+EmptyStateView.swift +++ b/Mastodon/Scene/Compose/View/AttachmentContainerView+EmptyStateView.swift @@ -7,6 +7,8 @@ import UIKit import MastodonUI +import MastodonAsset +import MastodonLocalization extension AttachmentContainerView { final class EmptyStateView: UIView { diff --git a/Mastodon/Scene/Compose/View/AttachmentContainerView.swift b/Mastodon/Scene/Compose/View/AttachmentContainerView.swift index faa085593..4743c9527 100644 --- a/Mastodon/Scene/Compose/View/AttachmentContainerView.swift +++ b/Mastodon/Scene/Compose/View/AttachmentContainerView.swift @@ -7,6 +7,8 @@ import UIKit import UITextView_Placeholder +import MastodonAsset +import MastodonLocalization final class AttachmentContainerView: UIView { diff --git a/Mastodon/Scene/Compose/View/ComposeToolbarView.swift b/Mastodon/Scene/Compose/View/ComposeToolbarView.swift index 6b06973a2..66bde158d 100644 --- a/Mastodon/Scene/Compose/View/ComposeToolbarView.swift +++ b/Mastodon/Scene/Compose/View/ComposeToolbarView.swift @@ -9,6 +9,8 @@ import os.log import UIKit import Combine import MastodonSDK +import MastodonAsset +import MastodonLocalization protocol ComposeToolbarViewDelegate: AnyObject { func composeToolbarView(_ composeToolbarView: ComposeToolbarView, cameraButtonDidPressed sender: Any, mediaSelectionType type: ComposeToolbarView.MediaSelectionType) diff --git a/Mastodon/Scene/Compose/View/ReplicaStatusView.swift b/Mastodon/Scene/Compose/View/ReplicaStatusView.swift deleted file mode 100644 index 6f0527d55..000000000 --- a/Mastodon/Scene/Compose/View/ReplicaStatusView.swift +++ /dev/null @@ -1,261 +0,0 @@ -// -// ReplicaStatusView.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-6-29. -// - -import os.log -import UIKit -import FLAnimatedImage -import MetaTextKit - -final class ReplicaStatusView: UIView { - - static let avatarImageSize = CGSize(width: 42, height: 42) - static let avatarImageCornerRadius: CGFloat = 4 - static let avatarToLabelSpacing: CGFloat = 5 - static let contentWarningBlurRadius: CGFloat = 12 - static let containerStackViewSpacing: CGFloat = 10 - - let containerStackView = UIStackView() - let headerContainerView = UIView() - let authorContainerView = UIView() - - static let reblogIconImage: UIImage = { - let font = UIFont.systemFont(ofSize: 13, weight: .medium) - let configuration = UIImage.SymbolConfiguration(font: font) - let image = UIImage(systemName: "arrow.2.squarepath", withConfiguration: configuration)!.withTintColor(Asset.Colors.Label.secondary.color) - return image - }() - - static let replyIconImage: UIImage = { - let font = UIFont.systemFont(ofSize: 13, weight: .medium) - let configuration = UIImage.SymbolConfiguration(font: font) - let image = UIImage(systemName: "arrowshape.turn.up.left.fill", withConfiguration: configuration)!.withTintColor(Asset.Colors.Label.secondary.color) - return image - }() - - static func iconAttributedString(image: UIImage) -> NSAttributedString { - let attributedString = NSMutableAttributedString() - let imageTextAttachment = NSTextAttachment() - let imageAttribute = NSAttributedString(attachment: imageTextAttachment) - imageTextAttachment.image = image - attributedString.append(imageAttribute) - return attributedString - } - - let headerIconLabel: MetaLabel = { - let label = MetaLabel(style: .statusHeader) - let attributedString = StatusView.iconAttributedString(image: StatusView.reblogIconImage) - label.configure(attributedString: attributedString) - return label - }() - - let headerInfoLabel = MetaLabel(style: .statusHeader) - - let avatarView: UIView = { - let view = UIView() - view.isAccessibilityElement = true - view.accessibilityTraits = .button - view.accessibilityLabel = L10n.Common.Controls.Status.showUserProfile - return view - }() - let avatarImageView = FLAnimatedImageView() - - let nameLabel = MetaLabel(style: .statusName) - - let nameTrialingDotLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.secondary.color - label.font = .systemFont(ofSize: 17) - label.text = "·" - label.isAccessibilityElement = false - return label - }() - - let usernameLabel: UILabel = { - let label = UILabel() - label.font = .systemFont(ofSize: 15, weight: .regular) - label.textColor = Asset.Colors.Label.secondary.color - label.text = "@alice" - label.isAccessibilityElement = false - return label - }() - - let dateLabel: UILabel = { - let label = UILabel() - label.font = .systemFont(ofSize: 13, weight: .regular) - label.textColor = Asset.Colors.Label.secondary.color - label.text = "1d" - return label - }() - - let contentMetaText: MetaText = { - let metaText = MetaText() - metaText.textView.backgroundColor = .clear - metaText.textView.isEditable = false - metaText.textView.isSelectable = false - metaText.textView.isScrollEnabled = false - metaText.textView.textContainer.lineFragmentPadding = 0 - metaText.textView.textContainerInset = .zero - metaText.textView.layer.masksToBounds = false - - metaText.paragraphStyle = { - let style = NSMutableParagraphStyle() - style.lineSpacing = 5 - style.paragraphSpacing = 8 - return style - }() - metaText.textAttributes = [ - .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)), - .foregroundColor: Asset.Colors.Label.primary.color, - ] - metaText.linkAttributes = [ - .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold)), - .foregroundColor: Asset.Colors.brandBlue.color, - ] - return metaText - }() - - let statusContainerStackView = UIStackView() - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - -} - -extension ReplicaStatusView { - private func _init() { - // container: [reblog | author | status | action toolbar] - // note: do not set spacing for nested stackView to avoid SDK layout conflict issue - containerStackView.axis = .vertical - // containerStackView.spacing = 10 - containerStackView.translatesAutoresizingMaskIntoConstraints = false - addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), - trailingAnchor.constraint(equalTo: containerStackView.trailingAnchor), - bottomAnchor.constraint(equalTo: containerStackView.bottomAnchor), - ]) - containerStackView.setContentHuggingPriority(.required - 1, for: .vertical) - containerStackView.setContentCompressionResistancePriority(.required - 1, for: .vertical) - - // header container: [icon | info] - let headerContainerStackView = UIStackView() - headerContainerStackView.axis = .horizontal - headerContainerStackView.spacing = 4 - headerContainerStackView.addArrangedSubview(headerIconLabel) - headerContainerStackView.addArrangedSubview(headerInfoLabel) - headerIconLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal) - - headerContainerStackView.translatesAutoresizingMaskIntoConstraints = false - headerContainerView.addSubview(headerContainerStackView) - NSLayoutConstraint.activate([ - headerContainerStackView.topAnchor.constraint(equalTo: headerContainerView.topAnchor), - headerContainerStackView.leadingAnchor.constraint(equalTo: headerContainerView.leadingAnchor), - headerContainerStackView.trailingAnchor.constraint(equalTo: headerContainerView.trailingAnchor), - headerContainerView.bottomAnchor.constraint(equalTo: headerContainerStackView.bottomAnchor, constant: ReplicaStatusView.containerStackViewSpacing).priority(.defaultHigh), - ]) - containerStackView.addArrangedSubview(headerContainerView) - defer { - containerStackView.bringSubviewToFront(headerContainerView) - } - - // author container: [avatar | author meta container | reveal button] - let authorContainerStackView = UIStackView() - authorContainerStackView.axis = .horizontal - authorContainerStackView.spacing = ReplicaStatusView.avatarToLabelSpacing - authorContainerStackView.distribution = .fill - - // avatar - avatarView.translatesAutoresizingMaskIntoConstraints = false - authorContainerStackView.addArrangedSubview(avatarView) - NSLayoutConstraint.activate([ - avatarView.widthAnchor.constraint(equalToConstant: ReplicaStatusView.avatarImageSize.width).priority(.required - 1), - avatarView.heightAnchor.constraint(equalToConstant: ReplicaStatusView.avatarImageSize.height).priority(.required - 1), - ]) - avatarImageView.translatesAutoresizingMaskIntoConstraints = false - avatarView.addSubview(avatarImageView) - NSLayoutConstraint.activate([ - avatarImageView.topAnchor.constraint(equalTo: avatarView.topAnchor), - avatarImageView.leadingAnchor.constraint(equalTo: avatarView.leadingAnchor), - avatarImageView.trailingAnchor.constraint(equalTo: avatarView.trailingAnchor), - avatarImageView.bottomAnchor.constraint(equalTo: avatarView.bottomAnchor), - ]) - - // author meta container: [title container | subtitle container] - let authorMetaContainerStackView = UIStackView() - authorContainerStackView.addArrangedSubview(authorMetaContainerStackView) - authorMetaContainerStackView.axis = .vertical - authorMetaContainerStackView.spacing = 4 - - // title container: [display name | "·" | date | padding] - let titleContainerStackView = UIStackView() - authorMetaContainerStackView.addArrangedSubview(titleContainerStackView) - titleContainerStackView.axis = .horizontal - titleContainerStackView.spacing = 4 - nameLabel.translatesAutoresizingMaskIntoConstraints = false - titleContainerStackView.addArrangedSubview(nameLabel) - NSLayoutConstraint.activate([ - nameLabel.heightAnchor.constraint(equalToConstant: 22).priority(.defaultHigh), - ]) - titleContainerStackView.alignment = .firstBaseline - titleContainerStackView.addArrangedSubview(nameTrialingDotLabel) - titleContainerStackView.addArrangedSubview(dateLabel) - let padding = UIView() - titleContainerStackView.addArrangedSubview(padding) // padding - nameLabel.setContentHuggingPriority(.defaultHigh + 1, for: .horizontal) - nameTrialingDotLabel.setContentHuggingPriority(.defaultHigh + 2, for: .horizontal) - nameTrialingDotLabel.setContentCompressionResistancePriority(.required - 2, for: .horizontal) - dateLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal) - dateLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) - padding.setContentHuggingPriority(.defaultLow - 1, for: .horizontal) - padding.setContentCompressionResistancePriority(.defaultLow - 1, for: .horizontal) - - // subtitle container: [username] - let subtitleContainerStackView = UIStackView() - authorMetaContainerStackView.addArrangedSubview(subtitleContainerStackView) - subtitleContainerStackView.axis = .horizontal - subtitleContainerStackView.addArrangedSubview(usernameLabel) - - authorContainerStackView.translatesAutoresizingMaskIntoConstraints = false - authorContainerView.addSubview(authorContainerStackView) - NSLayoutConstraint.activate([ - authorContainerStackView.topAnchor.constraint(equalTo: authorContainerView.topAnchor), - authorContainerStackView.leadingAnchor.constraint(equalTo: authorContainerView.leadingAnchor), - authorContainerStackView.trailingAnchor.constraint(equalTo: authorContainerView.trailingAnchor), - authorContainerView.bottomAnchor.constraint(equalTo: authorContainerStackView.bottomAnchor, constant: ReplicaStatusView.containerStackViewSpacing).priority(.defaultHigh), - ]) - containerStackView.addArrangedSubview(authorContainerView) - - // status container: [status] - containerStackView.addArrangedSubview(statusContainerStackView) - statusContainerStackView.axis = .vertical - statusContainerStackView.spacing = 10 - - // avoid overlay behind other views - defer { - containerStackView.bringSubviewToFront(authorContainerView) - } - - // status - statusContainerStackView.addArrangedSubview(contentMetaText.textView) - contentMetaText.textView.setContentCompressionResistancePriority(.required - 1, for: .vertical) - } -} - -// MARK: - AvatarConfigurableView -extension ReplicaStatusView: AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { return Self.avatarImageSize } - static var configurableAvatarImageCornerRadius: CGFloat { return 4 } - var configurableAvatarImageView: FLAnimatedImageView? { avatarImageView } -} diff --git a/Mastodon/Scene/Compose/View/StatusContentWarningEditorView.swift b/Mastodon/Scene/Compose/View/StatusContentWarningEditorView.swift index 1ce274a55..83900c762 100644 --- a/Mastodon/Scene/Compose/View/StatusContentWarningEditorView.swift +++ b/Mastodon/Scene/Compose/View/StatusContentWarningEditorView.swift @@ -7,6 +7,8 @@ import UIKit import MastodonUI +import MastodonAsset +import MastodonLocalization final class StatusContentWarningEditorView: UIView { diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController+DataSourceProvider.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController+DataSourceProvider.swift new file mode 100644 index 000000000..6cd97fcca --- /dev/null +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController+DataSourceProvider.swift @@ -0,0 +1,34 @@ +// +// HashtagTimelineViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-19. +// + +import UIKit + +extension HashtagTimelineViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.tableViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .status(let record): + return .status(record: record) + default: + return nil + } + } + + @MainActor + private func indexPath(for cell: UITableViewCell) async -> IndexPath? { + return tableView.indexPath(for: cell) + } +} diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController+Provider.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController+Provider.swift deleted file mode 100644 index d7beaca6f..000000000 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController+Provider.swift +++ /dev/null @@ -1,95 +0,0 @@ -// -// HashtagTimelineViewController+Provider.swift -// Mastodon -// -// Created by BradGao on 2021/3/31. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack - -// MARK: - StatusProvider -extension HashtagTimelineViewController: StatusProvider { - - func status() -> Future { - return Future { promise in promise(.success(nil)) } - } - - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future { - return Future { promise in - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - switch item { - case .status(let objectID, _): - let managedObjectContext = self.viewModel.context.managedObjectContext - managedObjectContext.perform { - let status = managedObjectContext.object(with: objectID) as? Status - promise(.success(status)) - } - default: - promise(.success(nil)) - } - } - } - - func status(for cell: UICollectionViewCell) -> Future { - return Future { promise in promise(.success(nil)) } - } - - var managedObjectContext: NSManagedObjectContext { - return viewModel.context.managedObjectContext - } - - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { - return viewModel.diffableDataSource - } - - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return nil - } - - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - return nil - } - - return item - } - - func items(indexPaths: [IndexPath]) -> [Item] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return [] - } - - var items: [Item] = [] - for indexPath in indexPaths { - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { continue } - items.append(item) - } - return items - } - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return [] } - let items = indexPaths.compactMap { diffableDataSource.itemIdentifier(for: $0)?.statusObjectItem } - return items - } - -} - -extension HashtagTimelineViewController: UserProvider {} diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift index 72f084fad..73fc96786 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift @@ -11,24 +11,29 @@ import AVKit import Combine import GameplayKit import CoreData +import MastodonAsset +import MastodonLocalization -class HashtagTimelineViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { +final class HashtagTimelineViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { + + let logger = Logger(subsystem: "HashtagTimelineViewController", category: "ViewController") + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } - var disposeBag = Set() - - var viewModel: HashtagTimelineViewModel! - let mediaPreviewTransitionController = MediaPreviewTransitionController() - + + var disposeBag = Set() + var viewModel: HashtagTimelineViewModel! + let composeBarButtonItem: UIBarButtonItem = { let barButtonItem = UIBarButtonItem() - // barButtonItem.tintColor = Asset.Colors.brandBlue.color barButtonItem.image = UIImage(systemName: "square.and.pencil")?.withRenderingMode(.alwaysTemplate) return barButtonItem }() + let titleView = DoubleTitleLabelNavigationBarTitleView() + let tableView: UITableView = { let tableView = ControlContainableTableView() tableView.register(StatusTableViewCell.self, forCellReuseIdentifier: String(describing: StatusTableViewCell.self)) @@ -41,10 +46,6 @@ class HashtagTimelineViewController: UIViewController, NeedsDependency, MediaPre return tableView }() - let refreshControl = UIRefreshControl() - - let titleView = DoubleTitleLabelNavigationBarTitleView() - deinit { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s:", ((#file as NSString).lastPathComponent), #line, #function) } @@ -55,8 +56,9 @@ extension HashtagTimelineViewController { override func viewDidLoad() { super.viewDidLoad() - title = "#\(viewModel.hashtag)" - titleView.update(title: viewModel.hashtag, subtitle: nil) + let _title = "#\(viewModel.hashtag)" + title = _title + titleView.update(title: _title, subtitle: nil) navigationItem.titleView = titleView view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor @@ -69,13 +71,9 @@ extension HashtagTimelineViewController { .store(in: &disposeBag) navigationItem.rightBarButtonItem = composeBarButtonItem - composeBarButtonItem.target = self composeBarButtonItem.action = #selector(HashtagTimelineViewController.composeBarButtonItemPressed(_:)) - tableView.refreshControl = refreshControl - refreshControl.addTarget(self, action: #selector(HashtagTimelineViewController.refreshControlValueChanged(_:)), for: .valueChanged) - tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) NSLayoutConstraint.activate([ @@ -85,28 +83,20 @@ extension HashtagTimelineViewController { tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) - viewModel.tableView = tableView - viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self tableView.delegate = self - tableView.prefetchDataSource = self +// tableView.prefetchDataSource = self viewModel.setupDiffableDataSource( - for: tableView, - dependency: self, - statusTableViewCellDelegate: self, - timelineMiddleLoaderTableViewCellDelegate: self + tableView: tableView, + statusTableViewCellDelegate: self ) - - // bind refresh control - viewModel.isFetchingLatestTimeline + + // setup batch fetch + viewModel.listBatchFetchViewModel.setup(scrollView: tableView) + viewModel.listBatchFetchViewModel.shouldFetch .receive(on: DispatchQueue.main) - .sink { [weak self] isFetching in + .sink { [weak self] _ in guard let self = self else { return } - if !isFetching { - UIView.animate(withDuration: 0.5) { [weak self] in - guard let self = self else { return } - self.refreshControl.endRefreshing() - } - } + self.viewModel.loadOldestStateMachine.enter(HashtagTimelineViewModel.LoadOldestState.Loading.self) } .store(in: &disposeBag) @@ -121,31 +111,12 @@ extension HashtagTimelineViewController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - aspectViewWillAppear(animated) - - viewModel.fetchTag() - if viewModel.loadLatestStateMachine.currentState is HashtagTimelineViewModel.LoadLatestState.Initial { - viewModel.loadLatestStateMachine.enter(HashtagTimelineViewModel.LoadLatestState.Loading.self) - } + tableView.deselectRow(with: transitionCoordinator, animated: animated) } + +} - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - - aspectViewDidDisappear(animated) - } - - override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { - super.viewWillTransition(to: size, with: coordinator) - - coordinator.animate { _ in - // do nothing - } completion: { _ in - // fix AutoLayout cell height not update after rotate issue - self.viewModel.cellFrameCache.removeAllObjects() - self.tableView.reloadData() - } - } +extension HashtagTimelineViewController { private func updatePromptTitle() { var subtitle: String? @@ -176,65 +147,52 @@ extension HashtagTimelineViewController { @objc private func composeBarButtonItemPressed(_ sender: UIBarButtonItem) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - let composeViewModel = ComposeViewModel(context: context, composeKind: .hashtag(hashtag: viewModel.hashtag)) + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + let composeViewModel = ComposeViewModel( + context: context, + composeKind: .hashtag(hashtag: viewModel.hashtag), + authenticationBox: authenticationBox + ) coordinator.present(scene: .compose(viewModel: composeViewModel), from: self, transition: .modal(animated: true, completion: nil)) } - - @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { - guard viewModel.loadLatestStateMachine.enter(HashtagTimelineViewModel.LoadLatestState.Loading.self) else { - sender.endRefreshing() - return - } - } -} -// MARK: - StatusTableViewControllerAspect -extension HashtagTimelineViewController: StatusTableViewControllerAspect { } +} // MARK: - TableViewCellHeightCacheableContainer -extension HashtagTimelineViewController: TableViewCellHeightCacheableContainer { - var cellFrameCache: NSCache { - return viewModel.cellFrameCache - } -} +//extension HashtagTimelineViewController: TableViewCellHeightCacheableContainer { +// var cellFrameCache: NSCache { +// return viewModel.cellFrameCache +// } +//} -// MARK: - UIScrollViewDelegate -extension HashtagTimelineViewController { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - aspectScrollViewDidScroll(scrollView) - } -} +//// MARK: - UIScrollViewDelegate +//extension HashtagTimelineViewController { +// func scrollViewDidScroll(_ scrollView: UIScrollView) { +// aspectScrollViewDidScroll(scrollView) +// } +//} -extension HashtagTimelineViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell - typealias LoadingState = HashtagTimelineViewModel.LoadOldestState.Loading - var loadMoreConfigurableTableView: UITableView { return tableView } - var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadOldestStateMachine } -} +//extension HashtagTimelineViewController: LoadMoreConfigurableTableViewContainer { +// typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell +// typealias LoadingState = HashtagTimelineViewModel.LoadOldestState.Loading +// var loadMoreConfigurableTableView: UITableView { return tableView } +// var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadOldestStateMachine } +//} // MARK: - UITableViewDelegate -extension HashtagTimelineViewController: UITableViewDelegate { - - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - return aspectTableView(tableView, estimatedHeightForRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } - +extension HashtagTimelineViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { + // sourcery:inline:HashtagTimelineViewController.AutoGenerateTableViewDelegate + + // Generated using Sourcery + // DO NOT EDIT func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { aspectTableView(tableView, didSelectRowAt: indexPath) } - + func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) } - + func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) } @@ -242,123 +200,88 @@ extension HashtagTimelineViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) } - + func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) } + // sourcery:endz + +// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { +// return aspectTableView(tableView, estimatedHeightForRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didSelectRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { +// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +// } +// +// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { +// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +// } } -// MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate -extension HashtagTimelineViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { - func navigationBar() -> UINavigationBar? { - return navigationController?.navigationBar - } -} - - // MARK: - UITableViewDataSourcePrefetching -extension HashtagTimelineViewController: UITableViewDataSourcePrefetching { - func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - aspectTableView(tableView, prefetchRowsAt: indexPaths) - } -} - -// MARK: - TimelineMiddleLoaderTableViewCellDelegate -extension HashtagTimelineViewController: TimelineMiddleLoaderTableViewCellDelegate { - func configure(cell: TimelineMiddleLoaderTableViewCell, upperTimelineStatusID: String?, timelineIndexobjectID: NSManagedObjectID?) { - guard let upperTimelineIndexObjectID = timelineIndexobjectID else { - return - } - viewModel.loadMiddleSateMachineList - .receive(on: DispatchQueue.main) - .sink { [weak self] ids in - guard let _ = self else { return } - if let stateMachine = ids[upperTimelineIndexObjectID] { - guard let state = stateMachine.currentState else { - assertionFailure() - return - } - - // make success state same as loading due to snapshot updating delay - let isLoading = state is HashtagTimelineViewModel.LoadMiddleState.Loading || state is HashtagTimelineViewModel.LoadMiddleState.Success - if isLoading { - cell.startAnimating() - } else { - cell.stopAnimating() - } - } else { - cell.stopAnimating() - } - } - .store(in: &cell.disposeBag) - - var dict = viewModel.loadMiddleSateMachineList.value - if let _ = dict[upperTimelineIndexObjectID] { - // do nothing - } else { - let stateMachine = GKStateMachine(states: [ - HashtagTimelineViewModel.LoadMiddleState.Initial(viewModel: viewModel, upperStatusObjectID: upperTimelineIndexObjectID), - HashtagTimelineViewModel.LoadMiddleState.Loading(viewModel: viewModel, upperStatusObjectID: upperTimelineIndexObjectID), - HashtagTimelineViewModel.LoadMiddleState.Fail(viewModel: viewModel, upperStatusObjectID: upperTimelineIndexObjectID), - HashtagTimelineViewModel.LoadMiddleState.Success(viewModel: viewModel, upperStatusObjectID: upperTimelineIndexObjectID), - ]) - stateMachine.enter(HashtagTimelineViewModel.LoadMiddleState.Initial.self) - dict[upperTimelineIndexObjectID] = stateMachine - viewModel.loadMiddleSateMachineList.value = dict - } - } - - func timelineMiddleLoaderTableViewCell(_ cell: TimelineMiddleLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let indexPath = tableView.indexPath(for: cell) else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - - switch item { - case .homeMiddleLoader(let upper): - guard let stateMachine = viewModel.loadMiddleSateMachineList.value[upper] else { - assertionFailure() - return - } - stateMachine.enter(HashtagTimelineViewModel.LoadMiddleState.Loading.self) - default: - assertionFailure() - } - } -} - -// MARK: - AVPlayerViewControllerDelegate -extension HashtagTimelineViewController: AVPlayerViewControllerDelegate { - - func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } - - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } - -} +//extension HashtagTimelineViewController: UITableViewDataSourcePrefetching { +// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { +// aspectTableView(tableView, prefetchRowsAt: indexPaths) +// } +//} // MARK: - StatusTableViewCellDelegate -extension HashtagTimelineViewController: StatusTableViewCellDelegate { - weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } - func parent() -> UIViewController { return self } -} +extension HashtagTimelineViewController: StatusTableViewCellDelegate { } -extension HashtagTimelineViewController { - override var keyCommands: [UIKeyCommand]? { - return navigationKeyCommands + statusNavigationKeyCommands - } -} +// MARK: - AVPlayerViewControllerDelegate +//extension HashtagTimelineViewController: AVPlayerViewControllerDelegate { +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +//} -// MARK: - StatusTableViewControllerNavigateable -extension HashtagTimelineViewController: StatusTableViewControllerNavigateable { - @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - navigateKeyCommandHandler(sender) - } - - @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - statusKeyCommandHandler(sender) - } -} +// MARK: - StatusTableViewCellDelegate +//extension HashtagTimelineViewController: StatusTableViewCellDelegate { +// weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } +// func parent() -> UIViewController { return self } +//} + +//extension HashtagTimelineViewController { +// override var keyCommands: [UIKeyCommand]? { +// return navigationKeyCommands + statusNavigationKeyCommands +// } +//} +// +//// MARK: - StatusTableViewControllerNavigateable +//extension HashtagTimelineViewController: StatusTableViewControllerNavigateable { +// @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// navigateKeyCommandHandler(sender) +// } +// +// @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// statusKeyCommandHandler(sender) +// } +//} diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift index a601eb927..43add2d27 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift @@ -7,122 +7,57 @@ import os.log import UIKit +import Combine import CoreData import CoreDataStack extension HashtagTimelineViewModel { func setupDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, - statusTableViewCellDelegate: StatusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate + tableView: UITableView, + statusTableViewCellDelegate: StatusTableViewCellDelegate ) { - diffableDataSource = StatusSection.tableViewDiffableDataSource( - for: tableView, - timelineContext: .hashtag, - dependency: dependency, - managedObjectContext: context.managedObjectContext, - statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: timelineMiddleLoaderTableViewCellDelegate, - threadReplyLoaderTableViewCellDelegate: nil + diffableDataSource = StatusSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: StatusSection.Configuration( + statusTableViewCellDelegate: statusTableViewCellDelegate, + timelineMiddleLoaderTableViewCellDelegate: nil + ) ) - var snapshot = NSDiffableDataSourceSnapshot() + var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) diffableDataSource?.apply(snapshot) - // workaround to append loader wrong animation issue - snapshot.appendItems([.bottomLoader], toSection: .main) - diffableDataSource?.apply(snapshot) - } -} - -// MARK: - Compare old & new snapshots and generate new items -extension HashtagTimelineViewModel { - func generateStatusItems(newObjectIDs: [NSManagedObjectID]) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - - guard let tableView = self.tableView else { return } - guard let navigationBar = self.contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } - - guard let diffableDataSource = self.diffableDataSource else { return } - - let parentManagedObjectContext = fetchedResultsController.fetchedResultsController.managedObjectContext - let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) - managedObjectContext.parent = parentManagedObjectContext - - let oldSnapshot = diffableDataSource.snapshot() -// let snapshot = snapshot as NSDiffableDataSourceSnapshot - - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] - for item in oldSnapshot.itemIdentifiers { - guard case let .status(objectID, attribute) = item else { continue } - oldSnapshotAttributeDict[objectID] = attribute - } - - let statusItemList: [Item] = newObjectIDs.map { - let attribute = oldSnapshotAttributeDict[$0] ?? Item.StatusAttribute() - return Item.status(objectID: $0, attribute: attribute) - } - - var newSnapshot = NSDiffableDataSourceSnapshot() - newSnapshot.appendSections([.main]) - - // Check if there is a `needLoadMiddleIndex` - if let needLoadMiddleIndex = needLoadMiddleIndex, needLoadMiddleIndex < (statusItemList.count - 1) { - // If yes, insert a `middleLoader` at the index - var newItems = statusItemList - newItems.insert(.homeMiddleLoader(upperTimelineIndexAnchorObjectID: newObjectIDs[needLoadMiddleIndex]), at: (needLoadMiddleIndex + 1)) - newSnapshot.appendItems(newItems, toSection: .main) - } else { - newSnapshot.appendItems(statusItemList, toSection: .main) - } - - if !(self.loadOldestStateMachine.currentState is LoadOldestState.NoMore) { - newSnapshot.appendItems([.bottomLoader], toSection: .main) - } - - guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { - diffableDataSource.apply(newSnapshot) - self.isFetchingLatestTimeline.value = false - return - } - - DispatchQueue.main.async { - diffableDataSource.reloadData(snapshot: newSnapshot) { - tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) - tableView.contentOffset.y = tableView.contentOffset.y - difference.offset - self.isFetchingLatestTimeline.value = false + fetchedResultsController.$records + .receive(on: DispatchQueue.main) + .sink { [weak self] records in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): incoming \(records.count) objects") + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + let items = records.map { StatusItem.status(record: $0) } + snapshot.appendItems(items, toSection: .main) + + if let currentState = self.loadOldestStateMachine.currentState { + switch currentState { + case is LoadOldestState.Initial, + is LoadOldestState.Loading, + is LoadOldestState.Idle, + is LoadOldestState.Fail: + snapshot.appendItems([.bottomLoader], toSection: .main) + case is LoadOldestState.NoMore: + break + default: + assertionFailure() + break + } + } + + diffableDataSource.apply(snapshot) } - } - } - - private struct Difference { - let targetIndexPath: IndexPath - let offset: CGFloat - } - - private func calculateReloadSnapshotDifference( - navigationBar: UINavigationBar, - tableView: UITableView, - oldSnapshot: NSDiffableDataSourceSnapshot, - newSnapshot: NSDiffableDataSourceSnapshot - ) -> Difference? { - guard oldSnapshot.numberOfItems != 0 else { return nil } - guard let item = oldSnapshot.itemIdentifiers.first as? Item, case Item.status = item else { return nil } - - let oldItemAtBeginning = oldSnapshot.itemIdentifiers(inSection: .main).first! - - guard let oldItemBeginIndexInNewSnapshot = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: oldItemAtBeginning) else { return nil } - - if oldItemBeginIndexInNewSnapshot > 0 { - let targetIndexPath = IndexPath(row: oldItemBeginIndexInNewSnapshot, section: 0) - let offset = UIViewController.tableViewCellOriginOffsetToWindowTop(in: tableView, at: IndexPath(row: 0, section: 0), navigationBar: navigationBar) - return Difference( - targetIndexPath: targetIndexPath, - offset: offset - ) - } - return nil + .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadLatestState.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadLatestState.swift deleted file mode 100644 index b2d121d50..000000000 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadLatestState.swift +++ /dev/null @@ -1,104 +0,0 @@ -// -// HashtagTimelineViewModel+LoadLatestState.swift -// Mastodon -// -// Created by BradGao on 2021/3/30. -// - -import os.log -import UIKit -import GameplayKit -import CoreData -import CoreDataStack -import MastodonSDK - -extension HashtagTimelineViewModel { - class LoadLatestState: GKState { - weak var viewModel: HashtagTimelineViewModel? - - init(viewModel: HashtagTimelineViewModel) { - self.viewModel = viewModel - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) - viewModel?.loadLatestStateMachinePublisher.send(self) - } - } -} - -extension HashtagTimelineViewModel.LoadLatestState { - class Initial: HashtagTimelineViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self - } - } - - class Loading: HashtagTimelineViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Fail.self || stateClass == Idle.self - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - // sign out when loading will enter here - stateMachine.enter(Fail.self) - return - } - // TODO: only set large count when using Wi-Fi - viewModel.context.apiService.hashtagTimeline( - domain: activeMastodonAuthenticationBox.domain, - hashtag: viewModel.hashtag, - authorizationBox: activeMastodonAuthenticationBox) - .receive(on: DispatchQueue.main) - .sink { completion in - switch completion { - case .failure(let error): - // TODO: handle error - viewModel.isFetchingLatestTimeline.value = false - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch statues failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break - } - - stateMachine.enter(Idle.self) - - } receiveValue: { response in - let newStatusIDList = response.value.map { $0.id } - - // When response data: - // 1. is not empty - // 2. last status are not recorded - // Then we may have middle data to load - var oldStatusIDs = viewModel.fetchedResultsController.statusIDs.value - if !oldStatusIDs.isEmpty, let lastNewStatusID = newStatusIDList.last, - !oldStatusIDs.contains(lastNewStatusID) { - viewModel.needLoadMiddleIndex = (newStatusIDList.count - 1) - } else { - viewModel.needLoadMiddleIndex = nil - } - - oldStatusIDs.insert(contentsOf: newStatusIDList, at: 0) - let newIDs = oldStatusIDs.removingDuplicates() - - viewModel.fetchedResultsController.statusIDs.value = newIDs - } - .store(in: &viewModel.disposeBag) - } - } - - class Fail: HashtagTimelineViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self || stateClass == Idle.self - } - } - - class Idle: HashtagTimelineViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self - } - } -} diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadMiddleState.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadMiddleState.swift deleted file mode 100644 index f458b86a5..000000000 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadMiddleState.swift +++ /dev/null @@ -1,131 +0,0 @@ -// -// HashtagTimelineViewModel+LoadMiddleState.swift -// Mastodon -// -// Created by BradGao on 2021/3/31. -// - -import os.log -import Foundation -import GameplayKit -import CoreData -import CoreDataStack - -extension HashtagTimelineViewModel { - class LoadMiddleState: GKState { - weak var viewModel: HashtagTimelineViewModel? - let upperStatusObjectID: NSManagedObjectID - - init(viewModel: HashtagTimelineViewModel, upperStatusObjectID: NSManagedObjectID) { - self.viewModel = viewModel - self.upperStatusObjectID = upperStatusObjectID - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - var dict = viewModel.loadMiddleSateMachineList.value - dict[upperStatusObjectID] = stateMachine - viewModel.loadMiddleSateMachineList.value = dict // trigger value change - } - } -} - -extension HashtagTimelineViewModel.LoadMiddleState { - - class Initial: HashtagTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self - } - } - - class Loading: HashtagTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return stateClass == Success.self || stateClass == Fail.self - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - stateMachine.enter(Fail.self) - return - } - - guard let upperStatusObject = (viewModel.fetchedResultsController.fetchedResultsController.fetchedObjects ?? []).first(where: { $0.objectID == upperStatusObjectID }) else { - stateMachine.enter(Fail.self) - return - } - _ = (viewModel.fetchedResultsController.fetchedResultsController.fetchedObjects ?? []).compactMap { status in - status.id - } - - // TODO: only set large count when using Wi-Fi - let maxID = upperStatusObject.id - viewModel.context.apiService.hashtagTimeline( - domain: activeMastodonAuthenticationBox.domain, - maxID: maxID, - hashtag: viewModel.hashtag, - authorizationBox: activeMastodonAuthenticationBox) - .delay(for: .seconds(1), scheduler: DispatchQueue.main) - .receive(on: DispatchQueue.main) - .sink { completion in -// viewModel.homeTimelineNavigationBarState.receiveCompletion(completion: completion) - switch completion { - case .failure(let error): - // TODO: handle error - os_log("%{public}s[%{public}ld], %{public}s: fetch statuses failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break - } - } receiveValue: { response in - stateMachine.enter(Success.self) - - let newStatusIDList = response.value.map { $0.id } - - var oldStatusIDs = viewModel.fetchedResultsController.statusIDs.value - if let indexToInsert = oldStatusIDs.firstIndex(of: maxID) { - // When response data: - // 1. is not empty - // 2. last status are not recorded - // Then we may have middle data to load - if let lastNewStatusID = newStatusIDList.last, - !oldStatusIDs.contains(lastNewStatusID) { - viewModel.needLoadMiddleIndex = indexToInsert + newStatusIDList.count - } else { - viewModel.needLoadMiddleIndex = nil - } - oldStatusIDs.insert(contentsOf: newStatusIDList, at: indexToInsert + 1) - oldStatusIDs.removeDuplicates() - } else { - // Only when the hashtagStatusIDList changes, we could not find the `loadMiddleState` index - // Then there is no need to set a `loadMiddleState` cell - viewModel.needLoadMiddleIndex = nil - } - - viewModel.fetchedResultsController.statusIDs.value = oldStatusIDs - - } - .store(in: &viewModel.disposeBag) - } - } - - class Fail: HashtagTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return stateClass == Loading.self - } - } - - class Success: HashtagTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return false - } - } - -} - diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadOldestState.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadOldestState.swift index 137373647..eba85657b 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+LoadOldestState.swift @@ -11,7 +11,16 @@ import GameplayKit import CoreDataStack extension HashtagTimelineViewModel { - class LoadOldestState: GKState { + class LoadOldestState: GKState, NamingState { + + let logger = Logger(subsystem: "HashtagTimelineViewModel.LoadOldestState", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + weak var viewModel: HashtagTimelineViewModel? init(viewModel: HashtagTimelineViewModel) { @@ -19,23 +28,32 @@ extension HashtagTimelineViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + let previousState = previousState as? HashtagTimelineViewModel.LoadOldestState + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + viewModel?.loadOldestStateMachinePublisher.send(self) } + + @MainActor + func enter(state: LoadOldestState.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") + } } } extension HashtagTimelineViewModel.LoadOldestState { class Initial: HashtagTimelineViewModel.LoadOldestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - guard let viewModel = viewModel else { return false } - guard !(viewModel.fetchedResultsController.fetchedResultsController.fetchedObjects ?? []).isEmpty else { return false } return stateClass == Loading.self } } class Loading: HashtagTimelineViewModel.LoadOldestState { - var maxID: String? + var maxID: Status.ID? override func isValidNextState(_ stateClass: AnyClass) -> Bool { return stateClass == Fail.self || stateClass == Idle.self || stateClass == NoMore.self @@ -43,59 +61,47 @@ extension HashtagTimelineViewModel.LoadOldestState { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) + guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { assertionFailure() stateMachine.enter(Fail.self) return } - guard let last = viewModel.fetchedResultsController.fetchedResultsController.fetchedObjects?.last else { - stateMachine.enter(Idle.self) - return - } - // TODO: only set large count when using Wi-Fi - let maxID = self.maxID ?? last.id - viewModel.context.apiService.hashtagTimeline( - domain: activeMastodonAuthenticationBox.domain, - maxID: maxID, - hashtag: viewModel.hashtag, - authorizationBox: activeMastodonAuthenticationBox) - .delay(for: .seconds(1), scheduler: DispatchQueue.main) - .receive(on: DispatchQueue.main) - .sink { completion in -// viewModel.homeTimelineNavigationBarState.receiveCompletion(completion: completion) - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: fetch statuses failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break + let maxID = self.maxID + Task { + do { + let response = try await viewModel.context.apiService.hashtagTimeline( + domain: authenticationBox.domain, + maxID: maxID, + hashtag: viewModel.hashtag, + authenticationBox: authenticationBox + ) + + var hasMore = false + + if let _maxID = response.link?.maxID, + _maxID != maxID + { + self.maxID = _maxID + hasMore = true } - } receiveValue: { [weak self] response in - guard let self = self else { return } - - let statuses = response.value - // enter no more state when no new statuses - - let hasNextPage: Bool = { - guard let link = response.link else { return true } // assert has more when link invalid - return link.maxID != nil - }() - self.maxID = response.link?.maxID - - if !hasNextPage || statuses.isEmpty || (statuses.count == 1 && statuses[0].id == maxID) { - stateMachine.enter(NoMore.self) + if hasMore { + await enter(state: Idle.self) } else { - stateMachine.enter(Idle.self) + await enter(state: NoMore.self) } - var newStatusIDs = viewModel.fetchedResultsController.statusIDs.value - let fetchedStatusIDList = statuses.map { $0.id } - newStatusIDs.append(contentsOf: fetchedStatusIDList) - viewModel.fetchedResultsController.statusIDs.value = newStatusIDs + + let statusIDs = response.value.map { $0.id } + viewModel.fetchedResultsController.append(statusIDs: statusIDs) + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch statues failed: \(error.localizedDescription)") + await enter(state: Fail.self) } - .store(in: &viewModel.disposeBag) + } // end Task } } @@ -113,8 +119,7 @@ extension HashtagTimelineViewModel.LoadOldestState { class NoMore: HashtagTimelineViewModel.LoadOldestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // reset state if needs - return stateClass == Idle.self + return false } override func didEnter(from previousState: GKState?) { diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel.swift index 1bb76493a..d63fad807 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel.swift @@ -13,7 +13,9 @@ import CoreDataStack import GameplayKit import MastodonSDK -final class HashtagTimelineViewModel: NSObject { +final class HashtagTimelineViewModel { + + let logger = Logger(subsystem: "HashtagTimelineViewModel", category: "ViewModel") let hashtag: String @@ -27,24 +29,12 @@ final class HashtagTimelineViewModel: NSObject { let isFetchingLatestTimeline = CurrentValueSubject(false) let timelinePredicate = CurrentValueSubject(nil) let hashtagEntity = CurrentValueSubject(nil) - - weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? - weak var tableView: UITableView? + let listBatchFetchViewModel = ListBatchFetchViewModel() // output - // top loader - private(set) lazy var loadLatestStateMachine: GKStateMachine = { - // exclude timeline middle fetcher state - let stateMachine = GKStateMachine(states: [ - LoadLatestState.Initial(viewModel: self), - LoadLatestState.Loading(viewModel: self), - LoadLatestState.Fail(viewModel: self), - LoadLatestState.Idle(viewModel: self), - ]) - stateMachine.enter(LoadLatestState.Initial.self) - return stateMachine - }() - lazy var loadLatestStateMachinePublisher = CurrentValueSubject(nil) + var diffableDataSource: UITableViewDiffableDataSource? + let didLoadLatest = PassthroughSubject() + // bottom loader private(set) lazy var loadOldestStateMachine: GKStateMachine = { // exclude timeline middle fetcher state @@ -59,47 +49,21 @@ final class HashtagTimelineViewModel: NSObject { return stateMachine }() lazy var loadOldestStateMachinePublisher = CurrentValueSubject(nil) - // middle loader - let loadMiddleSateMachineList = CurrentValueSubject<[NSManagedObjectID: GKStateMachine], Never>([:]) // TimelineIndex.objectID : middle loading state machine - var diffableDataSource: UITableViewDiffableDataSource? - var cellFrameCache = NSCache() - init(context: AppContext, hashtag: String) { self.context = context self.hashtag = hashtag - let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value - self.fetchedResultsController = StatusFetchedResultsController(managedObjectContext: context.managedObjectContext, domain: activeMastodonAuthenticationBox?.domain, additionalTweetPredicate: nil) - super.init() - - fetchedResultsController.objectIDs - .receive(on: DispatchQueue.main) - .sink { [weak self] objectIds in - self?.generateStatusItems(newObjectIDs: objectIds) - } - .store(in: &disposeBag) - } - - func fetchTag() { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { - return - } - let query = Mastodon.API.V2.Search.Query(q: hashtag, type: .hashtags) - context.apiService.search( - domain: activeMastodonAuthenticationBox.domain, - query: query, - mastodonAuthenticationBox: activeMastodonAuthenticationBox + self.fetchedResultsController = StatusFetchedResultsController( + managedObjectContext: context.managedObjectContext, + domain: nil, + additionalTweetPredicate: nil ) - .sink { _ in - - } receiveValue: { [weak self] response in - let matchedTag = response.value.hashtags.first { tag -> Bool in - return tag.name == self?.hashtag - } - self?.hashtagEntity.send(matchedTag) - } - .store(in: &disposeBag) - + // end init + + context.authenticationService.activeMastodonAuthenticationBox + .map { $0?.domain } + .assign(to: \.value, on: fetchedResultsController.domain) + .store(in: &disposeBag) } deinit { @@ -107,3 +71,4 @@ final class HashtagTimelineViewModel: NSObject { } } + diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DataSourceProvider.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DataSourceProvider.swift new file mode 100644 index 000000000..b141d386a --- /dev/null +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DataSourceProvider.swift @@ -0,0 +1,44 @@ +// +// HomeTimelineViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-13. +// + +import UIKit + +extension HomeTimelineViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.tableViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .feed(let record): + let managedObjectContext = context.managedObjectContext + let item: DataSourceItem? = try? await managedObjectContext.perform { + guard let feed = record.object(in: managedObjectContext) else { return nil } + guard feed.kind == .home else { return nil } + if let status = feed.status { + return .status(record: .init(objectID: status.objectID)) + } else { + return nil + } + } + return item + default: + return nil + } + } + + @MainActor + private func indexPath(for cell: UITableViewCell) async -> IndexPath? { + return tableView.indexPath(for: cell) + } +} diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index 6e75a17e7..eb3e6fc04 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -66,10 +66,6 @@ extension HomeTimelineViewController { guard let self = self else { return } self.showAccountList(action) }, - UIAction(title: "Public Timeline", image: UIImage(systemName: "list.dash"), attributes: []) { [weak self] action in - guard let self = self else { return } - self.showPublicTimelineAction(action) - }, UIAction(title: "Profile", image: UIImage(systemName: "person.crop.circle"), attributes: []) { [weak self] action in guard let self = self else { return } self.showProfileAction(action) @@ -87,45 +83,6 @@ extension HomeTimelineViewController { ) } - var moveMenu: UIMenu { - return UIMenu( - title: "Move to…", - image: UIImage(systemName: "arrow.forward.circle"), - identifier: nil, - options: [], - children: [ - UIAction(title: "First Gap", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToTopGapAction(action) - }), - UIAction(title: "First Replied Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstRepliedStatus(action) - }), - UIAction(title: "First Reblog Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstReblogStatus(action) - }), - UIAction(title: "First Poll Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstPollStatus(action) - }), - UIAction(title: "First Audio Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstAudioStatus(action) - }), - UIAction(title: "First Video Status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstVideoStatus(action) - }), - UIAction(title: "First GIF status", image: nil, attributes: [], handler: { [weak self] action in - guard let self = self else { return } - self.moveToFirstGIFStatus(action) - }), - ] - ) - } - var dropMenu: UIMenu { return UIMenu( title: "Drop…", @@ -206,190 +163,271 @@ extension HomeTimelineViewController { extension HomeTimelineViewController { - @objc private func showFLEXAction(_ sender: UIAction) { - FLEXManager.shared.showExplorer() - } - - @objc private func moveToTopGapAction(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeMiddleLoader: return true - default: return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) + enum MoveAction: String, CaseIterable { + case gap + case reply + case mention + case poll +// case quote +// case gif +// case video +// case location +// case followsYouAuthor +// case blockingAuthor + + var title: String { + return rawValue.capitalized } - } - - @objc private func moveToFirstReblogStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in + + func match(item: StatusItem) -> Bool { + let authenticationBox = AppContext.shared.authenticationService.activeMastodonAuthenticationBox.value switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - return homeTimelineIndex.status.reblog != nil - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found reblog status") - } - } - - @objc private func moveToFirstPollStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - let post = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status - return post.poll != nil - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found poll status") - } - } - - @objc private func moveToFirstRepliedStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - guard homeTimelineIndex.status.inReplyToID != nil else { + case .feed(let record): + guard let feed = record.object(in: AppContext.shared.managedObjectContext) else { return false } + if let status = feed.status { + switch self { + case .gap: + return false + case .reply: + return status.inReplyToID != nil + case .mention: + return !(status.reblog ?? status).mentions.isEmpty + case .poll: + return (status.reblog ?? status).poll != nil +// case .quote: +// return status.quote != nil +// case .gif: +// return status.attachments.contains(where: { attachment in attachment.kind == .animatedGIF }) +// case .video: +// return status.attachments.contains(where: { attachment in attachment.kind == .video }) +// case .location: +// return status.location != nil +// case .followsYouAuthor: +// guard case let .twitter(authenticationContext) = authenticationContext else { return false } +// guard let me = authenticationContext.authenticationRecord.object(in: AppContext.shared.managedObjectContext)?.user else { return false } +// return (status.repost ?? status).author.following.contains(me) +// case .blockingAuthor: +// guard case let .twitter(authenticationContext) = authenticationContext else { return false } +// guard let me = authenticationContext.authenticationRecord.object(in: AppContext.shared.managedObjectContext)?.user else { return false } +// return (status.repost ?? status).author.blockingBy.contains(me) +// default: +// return false + } // end switch + } else { return false } + case .feedLoader where self == .gap: return true default: return false } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found replied status") + } + + func firstMatch(in items: [StatusItem]) -> StatusItem? { + return items.first { item in self.match(item: item) } } } - @objc private func moveToFirstAudioStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status - return status.mediaAttachments?.contains(where: { $0.type == .audio }) ?? false - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found audio status") - } + var moveMenu: UIMenu { + return UIMenu( + title: "Move to…", + image: UIImage(systemName: "arrow.forward.circle"), + identifier: nil, + options: [], + children: + MoveAction.allCases.map { moveAction in + UIAction(title: "First \(moveAction.title)", image: nil, attributes: []) { [weak self] action in + guard let self = self else { return } + self.moveToFirst(action, moveAction: moveAction) + } + } + ) } - @objc private func moveToFirstVideoStatus(_ sender: UIAction) { + private func moveToFirst(_ sender: UIAction, moveAction: MoveAction) { guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status - return status.mediaAttachments?.contains(where: { $0.type == .video }) ?? false - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found video status") - } + let snapshot = diffableDataSource.snapshot() + let items = snapshot.itemIdentifiers + guard let targetItem = moveAction.firstMatch(in: items), + let index = snapshot.indexOfItem(targetItem) + else { return } + let indexPath = IndexPath(row: index, section: 0) + tableView.scrollToRow(at: indexPath, at: .middle, animated: true) + tableView.blinkRow(at: indexPath) } - @objc private func moveToFirstGIFStatus(_ sender: UIAction) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() - let item = snapshotTransitioning.itemIdentifiers.first(where: { item in - switch item { - case .homeTimelineIndex(let objectID, _): - let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex - let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status - return status.mediaAttachments?.contains(where: { $0.type == .gifv }) ?? false - default: - return false - } - }) - if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { - tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) - tableView.blinkRow(at: IndexPath(row: index, section: 0)) - } else { - print("Not found GIF status") - } +} + +extension HomeTimelineViewController { + + @objc private func showFLEXAction(_ sender: UIAction) { + FLEXManager.shared.showExplorer() } +// @objc private func moveToTopGapAction(_ sender: UIAction) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// let snapshotTransitioning = diffableDataSource.snapshot() +// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in +// switch item { +// case .feedLoader: return true +// default: return false +// } +// }) +// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { +// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) +// } +// } +// +// @objc private func moveToFirstReblogStatus(_ sender: UIAction) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// let snapshotTransitioning = diffableDataSource.snapshot() +// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in +// switch item { +//// case .homeTimelineIndex(let objectID, _): +//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex +//// return homeTimelineIndex.status.reblog != nil +// default: +// return false +// } +// }) +// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { +// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) +// tableView.blinkRow(at: IndexPath(row: index, section: 0)) +// } else { +// print("Not found reblog status") +// } +// } +// +// @objc private func moveToFirstPollStatus(_ sender: UIAction) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// let snapshotTransitioning = diffableDataSource.snapshot() +// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in +// switch item { +// case .feed(let record): +// guard let feed = record.object(in: context.managedObjectContext) else { return false } +// guard let status = feed.status?.reblog ?? feed.status else { return false } +// return status.poll != nil +// default: +// return false +// } +// }) +// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { +// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) +// tableView.blinkRow(at: IndexPath(row: index, section: 0)) +// } else { +// print("Not found poll status") +// } +// } +// +// @objc private func moveToFirstRepliedStatus(_ sender: UIAction) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// let snapshotTransitioning = diffableDataSource.snapshot() +// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in +// switch item { +//// case .homeTimelineIndex(let objectID, _): +//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex +//// guard homeTimelineIndex.status.inReplyToID != nil else { +//// return false +//// } +//// return true +// default: +// return false +// } +// }) +// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { +// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) +// tableView.blinkRow(at: IndexPath(row: index, section: 0)) +// } else { +// print("Not found replied status") +// } +// } +// +// @objc private func moveToFirstAudioStatus(_ sender: UIAction) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// let snapshotTransitioning = diffableDataSource.snapshot() +// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in +// switch item { +//// case .homeTimelineIndex(let objectID, _): +//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex +//// let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status +//// return status.mediaAttachments?.contains(where: { $0.type == .audio }) ?? false +// default: +// return false +// } +// }) +// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { +// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) +// tableView.blinkRow(at: IndexPath(row: index, section: 0)) +// } else { +// print("Not found audio status") +// } +// } +// +// @objc private func moveToFirstVideoStatus(_ sender: UIAction) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// let snapshotTransitioning = diffableDataSource.snapshot() +// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in +// switch item { +//// case .homeTimelineIndex(let objectID, _): +//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex +//// let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status +//// return status.mediaAttachments?.contains(where: { $0.type == .video }) ?? false +// default: +// return false +// } +// }) +// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { +// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) +// tableView.blinkRow(at: IndexPath(row: index, section: 0)) +// } else { +// print("Not found video status") +// } +// } +// +// @objc private func moveToFirstGIFStatus(_ sender: UIAction) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// let snapshotTransitioning = diffableDataSource.snapshot() +// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in +// switch item { +//// case .homeTimelineIndex(let objectID, _): +//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex +//// let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status +//// return status.mediaAttachments?.contains(where: { $0.type == .gifv }) ?? false +// default: +// return false +// } +// }) +// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { +// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) +// tableView.blinkRow(at: IndexPath(row: index, section: 0)) +// } else { +// print("Not found GIF status") +// } +// } + @objc private func dropRecentStatusAction(_ sender: UIAction, count: Int) { guard let diffableDataSource = viewModel.diffableDataSource else { return } - let snapshotTransitioning = diffableDataSource.snapshot() + let snapshot = diffableDataSource.snapshot() - let droppingObjectIDs = snapshotTransitioning.itemIdentifiers.prefix(count).compactMap { item -> NSManagedObjectID? in + let feedRecords = snapshot.itemIdentifiers.prefix(count).compactMap { item -> ManagedObjectRecord? in switch item { - case .homeTimelineIndex(let objectID, _): return objectID + case .feed(let record): return record default: return nil } } - var droppingStatusObjectIDs: [NSManagedObjectID] = [] - context.apiService.backgroundManagedObjectContext.performChanges { [weak self] in - guard let self = self else { return } - for objectID in droppingObjectIDs { - guard let homeTimelineIndex = try? self.context.apiService.backgroundManagedObjectContext.existingObject(with: objectID) as? HomeTimelineIndex else { continue } - droppingStatusObjectIDs.append(homeTimelineIndex.status.objectID) - self.context.apiService.backgroundManagedObjectContext.delete(homeTimelineIndex) - } - } - .sink { [weak self] result in - guard let self = self else { return } - switch result { - case .success: - self.context.apiService.backgroundManagedObjectContext.performChanges { [weak self] in - guard let self = self else { return } - for objectID in droppingStatusObjectIDs { - guard let post = try? self.context.apiService.backgroundManagedObjectContext.existingObject(with: objectID) as? Status else { continue } - self.context.apiService.backgroundManagedObjectContext.delete(post) + let managedObjectContext = viewModel.context.backgroundManagedObjectContext + Task { + try await managedObjectContext.performChanges { + for record in feedRecords { + guard let feed = record.object(in: managedObjectContext) else { continue } + let status = feed.status + managedObjectContext.delete(feed) + if let status = status { + managedObjectContext.delete(status) } - } - .sink { _ in - // do nothing - } - .store(in: &self.disposeBag) - case .failure(let error): - assertionFailure(error.localizedDescription) - } - } - .store(in: &disposeBag) + } // end for in + } // end managedObjectContext.performChanges + } // end Task } @objc private func showWelcomeAction(_ sender: UIAction) { @@ -405,10 +443,6 @@ extension HomeTimelineViewController { coordinator.present(scene: .accountList, from: self, transition: .modal(animated: true, completion: nil)) } - @objc private func showPublicTimelineAction(_ sender: UIAction) { - coordinator.present(scene: .publicTimeline, from: self, transition: .show) - } - @objc private func showProfileAction(_ sender: UIAction) { let alertController = UIAlertController(title: "Enter User ID", message: nil, preferredStyle: .alert) alertController.addTextField() diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+Provider.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+Provider.swift deleted file mode 100644 index 83022f5d7..000000000 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+Provider.swift +++ /dev/null @@ -1,95 +0,0 @@ -// -// HomeTimelineViewController+Provider.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/5. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack - -// MARK: - StatusProvider -extension HomeTimelineViewController: StatusProvider { - - func status() -> Future { - return Future { promise in promise(.success(nil)) } - } - - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future { - return Future { promise in - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - switch item { - case .homeTimelineIndex(let objectID, _): - let managedObjectContext = self.viewModel.fetchedResultsController.managedObjectContext - managedObjectContext.perform { - let timelineIndex = managedObjectContext.object(with: objectID) as? HomeTimelineIndex - promise(.success(timelineIndex?.status)) - } - default: - promise(.success(nil)) - } - } - } - - func status(for cell: UICollectionViewCell) -> Future { - return Future { promise in promise(.success(nil)) } - } - - var managedObjectContext: NSManagedObjectContext { - return viewModel.fetchedResultsController.managedObjectContext - } - - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { - return viewModel.diffableDataSource - } - - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return nil - } - - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - return nil - } - - return item - } - - func items(indexPaths: [IndexPath]) -> [Item] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return [] - } - - var items: [Item] = [] - for indexPath in indexPaths { - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { continue } - items.append(item) - } - return items - } - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return [] } - let items = indexPaths.compactMap { diffableDataSource.itemIdentifier(for: $0)?.statusObjectItem } - return items - } - -} - -extension HomeTimelineViewController: UserProvider {} diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index 62695f211..e408ab8de 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -15,6 +15,8 @@ import GameplayKit import MastodonSDK import AlamofireImage import StoreKit +import MastodonAsset +import MastodonLocalization final class HomeTimelineViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { @@ -183,25 +185,22 @@ extension HomeTimelineViewController { viewModel.tableView = tableView viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self tableView.delegate = self - tableView.prefetchDataSource = self +// tableView.prefetchDataSource = self viewModel.setupDiffableDataSource( - for: tableView, - dependency: self, + tableView: tableView, statusTableViewCellDelegate: self, timelineMiddleLoaderTableViewCellDelegate: self ) // bind refresh control - viewModel.isFetchingLatestTimeline + viewModel.didLoadLatest .receive(on: DispatchQueue.main) - .sink { [weak self] isFetching in + .sink { [weak self] _ in guard let self = self else { return } - if !isFetching { - UIView.animate(withDuration: 0.5) { [weak self] in - guard let self = self else { return } - self.refreshControl.endRefreshing() - } completion: { _ in } - } + UIView.animate(withDuration: 0.5) { [weak self] in + guard let self = self else { return } + self.refreshControl.endRefreshing() + } completion: { _ in } } .store(in: &disposeBag) @@ -272,10 +271,11 @@ extension HomeTimelineViewController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - aspectViewWillAppear(animated) + refreshControl.endRefreshing() + tableView.deselectRow(with: transitionCoordinator, animated: animated) // needs trigger manually after onboarding dismiss - setNeedsStatusBarAppearanceUpdate() + setNeedsStatusBarAppearanceUpdate() } override func viewDidAppear(_ animated: Bool) { @@ -295,12 +295,6 @@ extension HomeTimelineViewController { self.viewModel.homeTimelineNeedRefresh.send() } } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - - aspectViewDidDisappear(animated) - } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) @@ -379,9 +373,10 @@ extension HomeTimelineViewController { extension HomeTimelineViewController { @objc private func findPeopleButtonPressed(_ sender: PrimaryActionButton) { + // TODO: let viewModel = SuggestionAccountViewModel(context: context) - viewModel.delegate = self.viewModel - coordinator.present(scene: .suggestionAccount(viewModel: viewModel), from: self, transition: .modal(animated: true, completion: nil)) +// viewModel.delegate = self.viewModel +// coordinator.present(scene: .suggestionAccount(viewModel: viewModel), from: self, transition: .modal(animated: true, completion: nil)) } @objc private func manuallySearchButtonPressed(_ sender: UIButton) { @@ -399,7 +394,12 @@ extension HomeTimelineViewController { @objc private func composeBarButtonItemPressed(_ sender: UIBarButtonItem) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - let composeViewModel = ComposeViewModel(context: context, composeKind: .post) + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + let composeViewModel = ComposeViewModel( + context: context, + composeKind: .post, + authenticationBox: authenticationBox + ) coordinator.present(scene: .compose(viewModel: composeViewModel), from: self, transition: .modal(animated: true, completion: nil)) } @@ -436,20 +436,11 @@ extension HomeTimelineViewController { } } - -// MARK: - StatusTableViewControllerAspect -extension HomeTimelineViewController: StatusTableViewControllerAspect { } - -extension HomeTimelineViewController: TableViewCellHeightCacheableContainer { - var cellFrameCache: NSCache { return viewModel.cellFrameCache } -} - // MARK: - UIScrollViewDelegate extension HomeTimelineViewController { func scrollViewDidScroll(_ scrollView: UIScrollView) { switch scrollView { case tableView: - aspectScrollViewDidScroll(scrollView) viewModel.homeTimelineNavigationBarTitleViewModel.handleScrollViewDidScroll(scrollView) default: break @@ -478,7 +469,7 @@ extension HomeTimelineViewController { private func savePositionBeforeScrollToTop() { // check save action interval // should not fast than 0.5s to prevent save when scrollToTop on-flying - if let record = viewModel.scrollPositionRecord.value { + if let record = viewModel.scrollPositionRecord { let now = Date() guard now.timeIntervalSince(record.timestamp) > 0.5 else { // skip this save action @@ -498,7 +489,7 @@ extension HomeTimelineViewController { return cellFrameInView.origin.y }() logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): save position record for \(anchorIndexPath) with offset: \(offset)") - viewModel.scrollPositionRecord.value = HomeTimelineViewModel.ScrollPositionRecord( + viewModel.scrollPositionRecord = HomeTimelineViewModel.ScrollPositionRecord( item: anchorItem, offset: offset, timestamp: Date() @@ -514,45 +505,29 @@ extension HomeTimelineViewController { private func restorePositionWhenScrollToTop() { guard let diffableDataSource = self.viewModel.diffableDataSource else { return } - guard let record = self.viewModel.scrollPositionRecord.value, + guard let record = self.viewModel.scrollPositionRecord, let indexPath = diffableDataSource.indexPath(for: record.item) else { return } - self.tableView.scrollToRow(at: indexPath, at: .middle, animated: true) - self.viewModel.scrollPositionRecord.value = nil + tableView.scrollToRow(at: indexPath, at: .middle, animated: true) + viewModel.scrollPositionRecord = nil } } -extension HomeTimelineViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell - typealias LoadingState = HomeTimelineViewModel.LoadOldestState.Loading - var loadMoreConfigurableTableView: UITableView { return tableView } - var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.loadOldestStateMachine } -} - // MARK: - UITableViewDelegate -extension HomeTimelineViewController: UITableViewDelegate { - - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - aspectTableView(tableView, estimatedHeightForRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } - +extension HomeTimelineViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { + // sourcery:inline:HomeTimelineViewController.AutoGenerateTableViewDelegate + + // Generated using Sourcery + // DO NOT EDIT func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { aspectTableView(tableView, didSelectRowAt: indexPath) } - + func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) } - + func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) } @@ -560,23 +535,57 @@ extension HomeTimelineViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) } - + func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) } + + // sourcery:end + +// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { +// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didSelectRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { +// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +// } +// +// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { +// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +// } } // MARK: - UITableViewDataSourcePrefetching -extension HomeTimelineViewController: UITableViewDataSourcePrefetching { - func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - aspectTableView(tableView, prefetchRowsAt: indexPaths) - } - - func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) { - aspectTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) - } -} +//extension HomeTimelineViewController: UITableViewDataSourcePrefetching { +// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { +// aspectTableView(tableView, prefetchRowsAt: indexPaths) +// } +// +// func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) { +// aspectTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) +// } +//} // MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate extension HomeTimelineViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { @@ -587,63 +596,13 @@ extension HomeTimelineViewController: ContentOffsetAdjustableTimelineViewControl // MARK: - TimelineMiddleLoaderTableViewCellDelegate extension HomeTimelineViewController: TimelineMiddleLoaderTableViewCellDelegate { - func configure(cell: TimelineMiddleLoaderTableViewCell, upperTimelineStatusID: String?, timelineIndexobjectID: NSManagedObjectID?) { - guard let upperTimelineIndexObjectID = timelineIndexobjectID else { - return - } - viewModel.loadMiddleSateMachineList - .receive(on: DispatchQueue.main) - .sink { [weak self] ids in - guard let _ = self else { return } - if let stateMachine = ids[upperTimelineIndexObjectID] { - guard let state = stateMachine.currentState else { - assertionFailure() - return - } - - // make success state same as loading due to snapshot updating delay - let isLoading = state is HomeTimelineViewModel.LoadMiddleState.Loading || state is HomeTimelineViewModel.LoadMiddleState.Success - if isLoading { - cell.startAnimating() - } else { - cell.stopAnimating() - } - } else { - cell.stopAnimating() - } - } - .store(in: &cell.disposeBag) - - var dict = viewModel.loadMiddleSateMachineList.value - if let _ = dict[upperTimelineIndexObjectID] { - // do nothing - } else { - let stateMachine = GKStateMachine(states: [ - HomeTimelineViewModel.LoadMiddleState.Initial(viewModel: viewModel, upperTimelineIndexObjectID: upperTimelineIndexObjectID), - HomeTimelineViewModel.LoadMiddleState.Loading(viewModel: viewModel, upperTimelineIndexObjectID: upperTimelineIndexObjectID), - HomeTimelineViewModel.LoadMiddleState.Fail(viewModel: viewModel, upperTimelineIndexObjectID: upperTimelineIndexObjectID), - HomeTimelineViewModel.LoadMiddleState.Success(viewModel: viewModel, upperTimelineIndexObjectID: upperTimelineIndexObjectID), - ]) - stateMachine.enter(HomeTimelineViewModel.LoadMiddleState.Initial.self) - dict[upperTimelineIndexObjectID] = stateMachine - viewModel.loadMiddleSateMachineList.value = dict - } - } - func timelineMiddleLoaderTableViewCell(_ cell: TimelineMiddleLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) { guard let diffableDataSource = viewModel.diffableDataSource else { return } guard let indexPath = tableView.indexPath(for: cell) else { return } guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - - switch item { - case .homeMiddleLoader(let upper): - guard let stateMachine = viewModel.loadMiddleSateMachineList.value[upper] else { - assertionFailure() - return - } - stateMachine.enter(HomeTimelineViewModel.LoadMiddleState.Loading.self) - default: - assertionFailure() + + Task { + await viewModel.loadMore(item: item) } } } @@ -654,45 +613,43 @@ extension HomeTimelineViewController: ScrollViewContainer { var scrollView: UIScrollView { return tableView } func scrollToTop(animated: Bool) { - if scrollView.contentOffset.y < scrollView.frame.height, - viewModel.loadLatestStateMachine.canEnterState(HomeTimelineViewModel.LoadLatestState.Loading.self), - (scrollView.contentOffset.y + scrollView.adjustedContentInset.top) == 0.0, - !refreshControl.isRefreshing { - scrollView.scrollRectToVisible(CGRect(origin: CGPoint(x: 0, y: -refreshControl.frame.height), size: CGSize(width: 1, height: 1)), animated: animated) - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - self.refreshControl.beginRefreshing() - self.refreshControl.sendActions(for: .valueChanged) - } - } else { - let indexPath = IndexPath(row: 0, section: 0) - guard viewModel.diffableDataSource?.itemIdentifier(for: indexPath) != nil else { return } - // save position - savePositionBeforeScrollToTop() - tableView.scrollToRow(at: indexPath, at: .top, animated: true) - } + // TODO: +// if scrollView.contentOffset.y < scrollView.frame.height, +// viewModel.loadLatestStateMachine.canEnterState(HomeTimelineViewModel.LoadLatestState.Loading.self), +// (scrollView.contentOffset.y + scrollView.adjustedContentInset.top) == 0.0, +// !refreshControl.isRefreshing { +// scrollView.scrollRectToVisible(CGRect(origin: CGPoint(x: 0, y: -refreshControl.frame.height), size: CGSize(width: 1, height: 1)), animated: animated) +// DispatchQueue.main.async { [weak self] in +// guard let self = self else { return } +// self.refreshControl.beginRefreshing() +// self.refreshControl.sendActions(for: .valueChanged) +// } +// } else { +// let indexPath = IndexPath(row: 0, section: 0) +// guard viewModel.diffableDataSource?.itemIdentifier(for: indexPath) != nil else { return } +// // save position +// savePositionBeforeScrollToTop() +// tableView.scrollToRow(at: indexPath, at: .top, animated: true) +// } } } // MARK: - AVPlayerViewControllerDelegate -extension HomeTimelineViewController: AVPlayerViewControllerDelegate { - - func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } - - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } - -} +//extension HomeTimelineViewController: AVPlayerViewControllerDelegate { +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +//} // MARK: - StatusTableViewCellDelegate -extension HomeTimelineViewController: StatusTableViewCellDelegate { - weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } - func parent() -> UIViewController { return self } -} +extension HomeTimelineViewController: StatusTableViewCellDelegate { } // MARK: - HomeTimelineNavigationBarTitleViewDelegate extension HomeTimelineViewController: HomeTimelineNavigationBarTitleViewDelegate { @@ -725,19 +682,19 @@ extension HomeTimelineViewController: HomeTimelineNavigationBarTitleViewDelegate } } -extension HomeTimelineViewController { - override var keyCommands: [UIKeyCommand]? { - return navigationKeyCommands + statusNavigationKeyCommands - } -} - -// MARK: - StatusTableViewControllerNavigateable -extension HomeTimelineViewController: StatusTableViewControllerNavigateable { - @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - navigateKeyCommandHandler(sender) - } - - @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - statusKeyCommandHandler(sender) - } -} +//extension HomeTimelineViewController { +// override var keyCommands: [UIKeyCommand]? { +// return navigationKeyCommands + statusNavigationKeyCommands +// } +//} +// +//// MARK: - StatusTableViewControllerNavigateable +//extension HomeTimelineViewController: StatusTableViewControllerNavigateable { +// @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// navigateKeyCommandHandler(sender) +// } +// +// @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// statusKeyCommandHandler(sender) +// } +//} diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift index e87cab1c1..67f9e5b52 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift @@ -13,155 +13,301 @@ import CoreDataStack extension HomeTimelineViewModel { func setupDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, + tableView: UITableView, statusTableViewCellDelegate: StatusTableViewCellDelegate, timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate ) { - diffableDataSource = StatusSection.tableViewDiffableDataSource( - for: tableView, - timelineContext: .home, - dependency: dependency, - managedObjectContext: fetchedResultsController.managedObjectContext, - statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: timelineMiddleLoaderTableViewCellDelegate, - threadReplyLoaderTableViewCellDelegate: nil + diffableDataSource = StatusSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: StatusSection.Configuration( + statusTableViewCellDelegate: statusTableViewCellDelegate, + timelineMiddleLoaderTableViewCellDelegate: timelineMiddleLoaderTableViewCellDelegate + ) ) // make initial snapshot animation smooth - var snapshot = NSDiffableDataSourceSnapshot() + var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) diffableDataSource?.apply(snapshot) + + fetchedResultsController.$records + .receive(on: DispatchQueue.main) + .sink { [weak self] records in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): incoming \(records.count) objects") + Task { + let start = CACurrentMediaTime() + defer { + let end = CACurrentMediaTime() + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): cost \(end - start, format: .fixed(precision: 4))s to process \(records.count) feeds") + } + let oldSnapshot = diffableDataSource.snapshot() + var newSnapshot: NSDiffableDataSourceSnapshot = { + let newItems = records.map { record in + StatusItem.feed(record: record) + } + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + snapshot.appendItems(newItems, toSection: .main) + return snapshot + }() + + let parentManagedObjectContext = self.context.managedObjectContext + let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) + managedObjectContext.parent = parentManagedObjectContext + try? await managedObjectContext.perform { + let anchors: [Feed] = { + let request = Feed.sortedFetchRequest + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Feed.hasMorePredicate(), + self.fetchedResultsController.predicate, + ]) + do { + return try managedObjectContext.fetch(request) + } catch { + assertionFailure(error.localizedDescription) + return [] + } + }() + + let itemIdentifiers = newSnapshot.itemIdentifiers + for (index, item) in itemIdentifiers.enumerated() { + guard case let .feed(record) = item else { continue } + guard anchors.contains(where: { feed in feed.objectID == record.objectID }) else { continue } + let isLast = index + 1 == itemIdentifiers.count + if isLast { + newSnapshot.insertItems([.bottomLoader], afterItem: item) + } else { + newSnapshot.insertItems([.feedLoader(record: record)], afterItem: item) + } + } + } + + let hasChanges = newSnapshot.itemIdentifiers != oldSnapshot.itemIdentifiers + if !hasChanges { + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): snapshot not changes") + self.didLoadLatest.send() + return + } else { + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): snapshot has changes") + } + + guard let difference = await self.calculateReloadSnapshotDifference( + tableView: tableView, + oldSnapshot: oldSnapshot, + newSnapshot: newSnapshot + ) else { + await self.updateSnapshotUsingReloadData(snapshot: newSnapshot) + self.didLoadLatest.send() + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): applied new snapshot") + return + } + + await self.updateSnapshotUsingReloadData(snapshot: newSnapshot) + await tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) + var contentOffset = await tableView.contentOffset + contentOffset.y = await tableView.contentOffset.y - difference.sourceDistanceToTableViewTopEdge + await tableView.setContentOffset(contentOffset, animated: false) + self.didLoadLatest.send() + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): applied new snapshot") + } // end Task + } + .store(in: &disposeBag) } } -// MARK: - NSFetchedResultsControllerDelegate -extension HomeTimelineViewModel: NSFetchedResultsControllerDelegate { - - func controllerWillChangeContent(_ controller: NSFetchedResultsController) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - } - - func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - - guard let tableView = self.tableView else { return } - guard let navigationBar = self.contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } - - guard let diffableDataSource = self.diffableDataSource else { return } - let oldSnapshot = diffableDataSource.snapshot() - - let predicate = fetchedResultsController.fetchRequest.predicate - let parentManagedObjectContext = fetchedResultsController.managedObjectContext - let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) - managedObjectContext.parent = parentManagedObjectContext - - managedObjectContext.perform { - var shouldAddBottomLoader = false - - let timelineIndexes: [HomeTimelineIndex] = { - let request = HomeTimelineIndex.sortedFetchRequest - request.returnsObjectsAsFaults = false - request.predicate = predicate - do { - return try managedObjectContext.fetch(request) - } catch { - assertionFailure(error.localizedDescription) - return [] - } - }() - - // that's will be the most fastest fetch because of upstream just update and no modify needs consider - - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] - - for item in oldSnapshot.itemIdentifiers { - guard case let .homeTimelineIndex(objectID, attribute) = item else { continue } - oldSnapshotAttributeDict[objectID] = attribute - } - - var newTimelineItems: [Item] = [] - for (i, timelineIndex) in timelineIndexes.enumerated() { - let attribute = oldSnapshotAttributeDict[timelineIndex.objectID] ?? Item.StatusAttribute() - attribute.isSeparatorLineHidden = false - - // append new item into snapshot - newTimelineItems.append(.homeTimelineIndex(objectID: timelineIndex.objectID, attribute: attribute)) - - let isLast = i == timelineIndexes.count - 1 - switch (isLast, timelineIndex.hasMore) { - case (false, true): - newTimelineItems.append(.homeMiddleLoader(upperTimelineIndexAnchorObjectID: timelineIndex.objectID)) - attribute.isSeparatorLineHidden = true - case (true, true): - shouldAddBottomLoader = true - default: - break - } - } // end for - - var newSnapshot = NSDiffableDataSourceSnapshot() - newSnapshot.appendSections([.main]) - newSnapshot.appendItems(newTimelineItems, toSection: .main) - - let endSnapshot = CACurrentMediaTime() - - DispatchQueue.main.async { - if shouldAddBottomLoader, !(self.loadLatestStateMachine.currentState is LoadOldestState.NoMore) { - newSnapshot.appendItems([.bottomLoader], toSection: .main) - } - - guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { - diffableDataSource.apply(newSnapshot) - self.isFetchingLatestTimeline.value = false - return - } - - diffableDataSource.reloadData(snapshot: newSnapshot) { - tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) - tableView.contentOffset.y = tableView.contentOffset.y - difference.offset - self.isFetchingLatestTimeline.value = false - } - - let end = CACurrentMediaTime() - os_log("%{public}s[%{public}ld], %{public}s: calculate home timeline layout cost %.2fs", ((#file as NSString).lastPathComponent), #line, #function, end - endSnapshot) - } - } // end perform +extension HomeTimelineViewModel { + + @MainActor func updateDataSource( + snapshot: NSDiffableDataSourceSnapshot, + animatingDifferences: Bool + ) async { + diffableDataSource?.apply(snapshot, animatingDifferences: animatingDifferences) } - private struct Difference { + @MainActor func updateSnapshotUsingReloadData( + snapshot: NSDiffableDataSourceSnapshot + ) async { + if #available(iOS 15.0, *) { + await self.diffableDataSource?.applySnapshotUsingReloadData(snapshot) + } else { + diffableDataSource?.applySnapshot(snapshot, animated: false, completion: nil) + } + } + + struct Difference { let item: T let sourceIndexPath: IndexPath + let sourceDistanceToTableViewTopEdge: CGFloat let targetIndexPath: IndexPath - let offset: CGFloat } - - private func calculateReloadSnapshotDifference( - navigationBar: UINavigationBar, + + @MainActor private func calculateReloadSnapshotDifference( tableView: UITableView, - oldSnapshot: NSDiffableDataSourceSnapshot, - newSnapshot: NSDiffableDataSourceSnapshot + oldSnapshot: NSDiffableDataSourceSnapshot, + newSnapshot: NSDiffableDataSourceSnapshot ) -> Difference? { - guard oldSnapshot.numberOfItems != 0 else { return nil } + guard let sourceIndexPath = (tableView.indexPathsForVisibleRows ?? []).sorted().first else { return nil } + let rectForSourceItemCell = tableView.rectForRow(at: sourceIndexPath) + let sourceDistanceToTableViewTopEdge = tableView.convert(rectForSourceItemCell, to: nil).origin.y - tableView.safeAreaInsets.top - // old snapshot not empty. set source index path to first item if not match - let sourceIndexPath = UIViewController.topVisibleTableViewCellIndexPath(in: tableView, navigationBar: navigationBar) ?? IndexPath(row: 0, section: 0) + guard sourceIndexPath.section < oldSnapshot.numberOfSections, + sourceIndexPath.row < oldSnapshot.numberOfItems(inSection: oldSnapshot.sectionIdentifiers[sourceIndexPath.section]) + else { return nil } - guard sourceIndexPath.row < oldSnapshot.itemIdentifiers(inSection: .main).count else { return nil } + let sectionIdentifier = oldSnapshot.sectionIdentifiers[sourceIndexPath.section] + let item = oldSnapshot.itemIdentifiers(inSection: sectionIdentifier)[sourceIndexPath.row] - let timelineItem = oldSnapshot.itemIdentifiers(inSection: .main)[sourceIndexPath.row] - guard let itemIndex = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: timelineItem) else { return nil } - let targetIndexPath = IndexPath(row: itemIndex, section: 0) + guard let targetIndexPathRow = newSnapshot.indexOfItem(item), + let newSectionIdentifier = newSnapshot.sectionIdentifier(containingItem: item), + let targetIndexPathSection = newSnapshot.indexOfSection(newSectionIdentifier) + else { return nil } + + let targetIndexPath = IndexPath(row: targetIndexPathRow, section: targetIndexPathSection) - let offset = UIViewController.tableViewCellOriginOffsetToWindowTop(in: tableView, at: sourceIndexPath, navigationBar: navigationBar) return Difference( - item: timelineItem, + item: item, sourceIndexPath: sourceIndexPath, - targetIndexPath: targetIndexPath, - offset: offset + sourceDistanceToTableViewTopEdge: sourceDistanceToTableViewTopEdge, + targetIndexPath: targetIndexPath ) } } + + + + +//// MARK: - NSFetchedResultsControllerDelegate +//extension HomeTimelineViewModel: NSFetchedResultsControllerDelegate { +// +// func controllerWillChangeContent(_ controller: NSFetchedResultsController) { +// os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) +// } +// +// func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { +// os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) +// +// guard let tableView = self.tableView else { return } +// guard let navigationBar = self.contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } +// +// guard let diffableDataSource = self.diffableDataSource else { return } +// let oldSnapshot = diffableDataSource.snapshot() +// +// let predicate = fetchedResultsController.fetchRequest.predicate +// let parentManagedObjectContext = fetchedResultsController.managedObjectContext +// let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) +// managedObjectContext.parent = parentManagedObjectContext +// +// managedObjectContext.perform { +// var shouldAddBottomLoader = false +// +// let timelineIndexes: [HomeTimelineIndex] = { +// let request = HomeTimelineIndex.sortedFetchRequest +// request.returnsObjectsAsFaults = false +// request.predicate = predicate +// do { +// return try managedObjectContext.fetch(request) +// } catch { +// assertionFailure(error.localizedDescription) +// return [] +// } +// }() +// +// // that's will be the most fastest fetch because of upstream just update and no modify needs consider +// +// var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] +// +// for item in oldSnapshot.itemIdentifiers { +// guard case let .homeTimelineIndex(objectID, attribute) = item else { continue } +// oldSnapshotAttributeDict[objectID] = attribute +// } +// +// var newTimelineItems: [Item] = [] +// +// for (i, timelineIndex) in timelineIndexes.enumerated() { +// let attribute = oldSnapshotAttributeDict[timelineIndex.objectID] ?? Item.StatusAttribute() +// attribute.isSeparatorLineHidden = false +// +// // append new item into snapshot +// newTimelineItems.append(.homeTimelineIndex(objectID: timelineIndex.objectID, attribute: attribute)) +// +// let isLast = i == timelineIndexes.count - 1 +// switch (isLast, timelineIndex.hasMore) { +// case (false, true): +// newTimelineItems.append(.homeMiddleLoader(upperTimelineIndexAnchorObjectID: timelineIndex.objectID)) +// attribute.isSeparatorLineHidden = true +// case (true, true): +// shouldAddBottomLoader = true +// default: +// break +// } +// } // end for +// +// var newSnapshot = NSDiffableDataSourceSnapshot() +// newSnapshot.appendSections([.main]) +// newSnapshot.appendItems(newTimelineItems, toSection: .main) +// +// let endSnapshot = CACurrentMediaTime() +// +// DispatchQueue.main.async { +// if shouldAddBottomLoader, !(self.loadLatestStateMachine.currentState is LoadOldestState.NoMore) { +// newSnapshot.appendItems([.bottomLoader], toSection: .main) +// } +// +// guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { +// diffableDataSource.apply(newSnapshot) +// self.isFetchingLatestTimeline.value = false +// return +// } +// +// diffableDataSource.reloadData(snapshot: newSnapshot) { +// tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) +// tableView.contentOffset.y = tableView.contentOffset.y - difference.offset +// self.isFetchingLatestTimeline.value = false +// } +// +// let end = CACurrentMediaTime() +// os_log("%{public}s[%{public}ld], %{public}s: calculate home timeline layout cost %.2fs", ((#file as NSString).lastPathComponent), #line, #function, end - endSnapshot) +// } +// } // end perform +// } +// +// private struct Difference { +// let item: T +// let sourceIndexPath: IndexPath +// let targetIndexPath: IndexPath +// let offset: CGFloat +// } +// +// private func calculateReloadSnapshotDifference( +// navigationBar: UINavigationBar, +// tableView: UITableView, +// oldSnapshot: NSDiffableDataSourceSnapshot, +// newSnapshot: NSDiffableDataSourceSnapshot +// ) -> Difference? { +// guard oldSnapshot.numberOfItems != 0 else { return nil } +// +// // old snapshot not empty. set source index path to first item if not match +// let sourceIndexPath = UIViewController.topVisibleTableViewCellIndexPath(in: tableView, navigationBar: navigationBar) ?? IndexPath(row: 0, section: 0) +// +// guard sourceIndexPath.row < oldSnapshot.itemIdentifiers(inSection: .main).count else { return nil } +// +// let timelineItem = oldSnapshot.itemIdentifiers(inSection: .main)[sourceIndexPath.row] +// guard let itemIndex = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: timelineItem) else { return nil } +// let targetIndexPath = IndexPath(row: itemIndex, section: 0) +// +// let offset = UIViewController.tableViewCellOriginOffsetToWindowTop(in: tableView, at: sourceIndexPath, navigationBar: navigationBar) +// return Difference( +// item: timelineItem, +// sourceIndexPath: sourceIndexPath, +// targetIndexPath: targetIndexPath, +// offset: offset +// ) +// } +// +//} diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadLatestState.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadLatestState.swift index 425eb9aa0..3e46c2af4 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadLatestState.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadLatestState.swift @@ -14,6 +14,15 @@ import GameplayKit extension HomeTimelineViewModel { class LoadLatestState: GKState { + + let logger = Logger(subsystem: "HomeTimelineViewModel.LoadLatestState", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + weak var viewModel: HomeTimelineViewModel? init(viewModel: HomeTimelineViewModel) { @@ -21,9 +30,20 @@ extension HomeTimelineViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + super.didEnter(from: previousState) + let previousState = previousState as? HomeTimelineViewModel.LoadLatestState + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") viewModel?.loadLatestStateMachinePublisher.send(self) } + + @MainActor + func enter(state: LoadLatestState.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") + } } } @@ -48,69 +68,49 @@ extension HomeTimelineViewModel.LoadLatestState { return } - let predicate = viewModel.fetchedResultsController.fetchRequest.predicate - let parentManagedObjectContext = viewModel.fetchedResultsController.managedObjectContext + let latestFeedRecords = viewModel.fetchedResultsController.records.prefix(APIService.onceRequestStatusMaxCount) + let parentManagedObjectContext = viewModel.fetchedResultsController.fetchedResultsController.managedObjectContext let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) managedObjectContext.parent = parentManagedObjectContext - managedObjectContext.perform { + Task { let start = CACurrentMediaTime() - let latestStatusIDs: [Status.ID] - let request = HomeTimelineIndex.sortedFetchRequest - request.returnsObjectsAsFaults = false - request.predicate = predicate - - do { - let timelineIndexes = try managedObjectContext.fetch(request) - let endFetch = CACurrentMediaTime() - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: collect timelineIndexes cost: %.2fs", ((#file as NSString).lastPathComponent), #line, #function, endFetch - start) - latestStatusIDs = timelineIndexes - .prefix(APIService.onceRequestStatusMaxCount) // avoid performance issue - .compactMap { timelineIndex in - timelineIndex.value(forKeyPath: #keyPath(HomeTimelineIndex.status.id)) as? Status.ID - } - } catch { - stateMachine.enter(Fail.self) - return + let latestStatusIDs: [Status.ID] = latestFeedRecords.compactMap { record in + guard let feed = record.object(in: managedObjectContext) else { return nil } + return feed.status?.id } - let end = CACurrentMediaTime() os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: collect statuses id cost: %.2fs", ((#file as NSString).lastPathComponent), #line, #function, end - start) - - // TODO: only set large count when using Wi-Fi - viewModel.context.apiService.homeTimeline(domain: activeMastodonAuthenticationBox.domain, authorizationBox: activeMastodonAuthenticationBox) - .receive(on: DispatchQueue.main) - .sink { completion in - viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(completion) - switch completion { - case .failure(let error): - // TODO: handle error - viewModel.isFetchingLatestTimeline.value = false - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch statuses failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break + + do { + let response = try await viewModel.context.apiService.homeTimeline( + authenticationBox: activeMastodonAuthenticationBox + ) + + await enter(state: Idle.self) + viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(.finished) + + // stop refresher if no new statuses + let statuses = response.value + let newStatuses = statuses.filter { !latestStatusIDs.contains($0.id) } + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): load \(newStatuses.count) new statuses") + + if newStatuses.isEmpty { + viewModel.didLoadLatest.send() + } else { + if !latestStatusIDs.isEmpty { + viewModel.homeTimelineNavigationBarTitleViewModel.newPostsIncoming() } - - stateMachine.enter(Idle.self) - - } receiveValue: { response in - // stop refresher if no new statuses - let statuses = response.value - let newStatuses = statuses.filter { !latestStatusIDs.contains($0.id) } - os_log("%{public}s[%{public}ld], %{public}s: load %{public}ld new statuses", ((#file as NSString).lastPathComponent), #line, #function, newStatuses.count) - - if newStatuses.isEmpty { - viewModel.isFetchingLatestTimeline.value = false - } else { - if !latestStatusIDs.isEmpty { - viewModel.homeTimelineNavigationBarTitleViewModel.newPostsIncoming() - } - } - viewModel.timelineIsEmpty.value = latestStatusIDs.isEmpty && statuses.isEmpty } - .store(in: &viewModel.disposeBag) - } + viewModel.timelineIsEmpty.value = latestStatusIDs.isEmpty && statuses.isEmpty + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch statuses failed: \(error.localizedDescription)") + await enter(state: Idle.self) + viewModel.didLoadLatest.send() + viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(.failure(error)) + } + } // end Task } } diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadMiddleState.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadMiddleState.swift deleted file mode 100644 index b5b9e4ceb..000000000 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadMiddleState.swift +++ /dev/null @@ -1,108 +0,0 @@ -// -// HomeTimelineViewModel+LoadMiddleState.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/5. -// - -import os.log -import Foundation -import GameplayKit -import CoreData -import CoreDataStack - -extension HomeTimelineViewModel { - class LoadMiddleState: GKState { - weak var viewModel: HomeTimelineViewModel? - let upperTimelineIndexObjectID: NSManagedObjectID - - init(viewModel: HomeTimelineViewModel, upperTimelineIndexObjectID: NSManagedObjectID) { - self.viewModel = viewModel - self.upperTimelineIndexObjectID = upperTimelineIndexObjectID - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - var dict = viewModel.loadMiddleSateMachineList.value - dict[upperTimelineIndexObjectID] = stateMachine - viewModel.loadMiddleSateMachineList.value = dict // trigger value change - } - } -} - -extension HomeTimelineViewModel.LoadMiddleState { - - class Initial: HomeTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self - } - } - - class Loading: HomeTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return stateClass == Success.self || stateClass == Fail.self - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - stateMachine.enter(Fail.self) - return - } - - guard let timelineIndex = (viewModel.fetchedResultsController.fetchedObjects ?? []).first(where: { $0.objectID == upperTimelineIndexObjectID }) else { - stateMachine.enter(Fail.self) - return - } - let statusIDs = (viewModel.fetchedResultsController.fetchedObjects ?? []).compactMap { timelineIndex in - timelineIndex.status.id - } - - // TODO: only set large count when using Wi-Fi - let maxID = timelineIndex.status.id - viewModel.context.apiService.homeTimeline(domain: activeMastodonAuthenticationBox.domain,maxID: maxID, authorizationBox: activeMastodonAuthenticationBox) - .delay(for: .seconds(1), scheduler: DispatchQueue.main) - .receive(on: DispatchQueue.main) - .sink { completion in - viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(completion) - switch completion { - case .failure(let error): - // TODO: handle error - os_log("%{public}s[%{public}ld], %{public}s: fetch statuses failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break - } - } receiveValue: { response in - let statuses = response.value - let newStatuses = statuses.filter { !statusIDs.contains($0.id) } - os_log("%{public}s[%{public}ld], %{public}s: load %{public}ld statuses, %{public}%ld new statuses", ((#file as NSString).lastPathComponent), #line, #function, statuses.count, newStatuses.count) - if newStatuses.isEmpty { - stateMachine.enter(Fail.self) - } else { - stateMachine.enter(Success.self) - } - } - .store(in: &viewModel.disposeBag) - } - } - - class Fail: HomeTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return stateClass == Loading.self - } - } - - class Success: HomeTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return false - } - } - -} diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadOldestState.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadOldestState.swift index a74d03a52..1986ac36a 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadOldestState.swift @@ -8,9 +8,19 @@ import os.log import Foundation import GameplayKit +import MastodonSDK extension HomeTimelineViewModel { - class LoadOldestState: GKState { + class LoadOldestState: GKState, NamingState { + + let logger = Logger(subsystem: "HomeTimelineViewModel.LoadOldestState", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + weak var viewModel: HomeTimelineViewModel? init(viewModel: HomeTimelineViewModel) { @@ -18,9 +28,21 @@ extension HomeTimelineViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + super.didEnter(from: previousState) + let previousState = previousState as? HomeTimelineViewModel.LoadOldestState + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + viewModel?.loadOldestStateMachinePublisher.send(self) } + + @MainActor + func enter(state: LoadOldestState.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") + } } } @@ -28,7 +50,7 @@ extension HomeTimelineViewModel.LoadOldestState { class Initial: HomeTimelineViewModel.LoadOldestState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { guard let viewModel = viewModel else { return false } - guard !(viewModel.fetchedResultsController.fetchedObjects ?? []).isEmpty else { return false } + guard !viewModel.fetchedResultsController.records.isEmpty else { return false } return stateClass == Loading.self } } @@ -40,6 +62,7 @@ extension HomeTimelineViewModel.LoadOldestState { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) + guard let viewModel = viewModel, let stateMachine = stateMachine else { return } guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { assertionFailure() @@ -47,35 +70,47 @@ extension HomeTimelineViewModel.LoadOldestState { return } - guard let last = viewModel.fetchedResultsController.fetchedObjects?.last else { + guard let lastFeedRecord = viewModel.fetchedResultsController.records.last else { stateMachine.enter(Idle.self) return } - // TODO: only set large count when using Wi-Fi - let maxID = last.status.id - viewModel.context.apiService.homeTimeline(domain: activeMastodonAuthenticationBox.domain, maxID: maxID, authorizationBox: activeMastodonAuthenticationBox) - .delay(for: .seconds(1), scheduler: DispatchQueue.main) - .receive(on: DispatchQueue.main) - .sink { completion in - viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(completion) - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: fetch statuses failed. %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break - } - } receiveValue: { response in + Task { + let managedObjectContext = viewModel.fetchedResultsController.fetchedResultsController.managedObjectContext + let _maxID: Mastodon.Entity.Status.ID? = try await managedObjectContext.perform { + guard let feed = lastFeedRecord.object(in: managedObjectContext), + let status = feed.status + else { return nil } + return status.id + } + + guard let maxID = _maxID else { + await self.enter(state: Fail.self) + return + } + + do { + let response = try await viewModel.context.apiService.homeTimeline( + maxID: maxID, + authenticationBox: activeMastodonAuthenticationBox + ) + let statuses = response.value // enter no more state when no new statuses if statuses.isEmpty || (statuses.count == 1 && statuses[0].id == maxID) { - stateMachine.enter(NoMore.self) + await self.enter(state: NoMore.self) } else { - stateMachine.enter(Idle.self) + await self.enter(state: Idle.self) } + + viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(.finished) + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch statues failed: \(error.localizedDescription)") + await self.enter(state: Fail.self) + viewModel.homeTimelineNavigationBarTitleViewModel.receiveLoadingStateCompletion(.failure(error)) } - .store(in: &viewModel.disposeBag) + } // end Task } } diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift index c4681b40b..5e8e7703f 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift @@ -18,18 +18,20 @@ import DateToolsSwift final class HomeTimelineViewModel: NSObject { + let logger = Logger(subsystem: "HomeTimelineViewModel", category: "ViewModel") + var disposeBag = Set() var observations = Set() // input let context: AppContext + let fetchedResultsController: FeedFetchedResultsController let timelinePredicate = CurrentValueSubject(nil) - let fetchedResultsController: NSFetchedResultsController - let isFetchingLatestTimeline = CurrentValueSubject(false) + //let isFetchingLatestTimeline = CurrentValueSubject(false) let viewDidAppear = PassthroughSubject() let homeTimelineNavigationBarTitleViewModel: HomeTimelineNavigationBarTitleViewModel let lastAutomaticFetchTimestamp = CurrentValueSubject(nil) - let scrollPositionRecord = CurrentValueSubject(nil) + @Published var scrollPositionRecord: ScrollPositionRecord? = nil let displaySettingBarButtonItem = CurrentValueSubject(true) let displayComposeBarButtonItem = CurrentValueSubject(true) @@ -41,6 +43,9 @@ final class HomeTimelineViewModel: NSObject { let homeTimelineNeedRefresh = PassthroughSubject() // output + var diffableDataSource: UITableViewDiffableDataSource? + let didLoadLatest = PassthroughSubject() + // top loader private(set) lazy var loadLatestStateMachine: GKStateMachine = { // exclude timeline middle fetcher state @@ -54,6 +59,7 @@ final class HomeTimelineViewModel: NSObject { return stateMachine }() lazy var loadLatestStateMachinePublisher = CurrentValueSubject(nil) + // bottom loader private(set) lazy var loadOldestStateMachine: GKStateMachine = { // exclude timeline middle fetcher state @@ -68,68 +74,48 @@ final class HomeTimelineViewModel: NSObject { return stateMachine }() lazy var loadOldestStateMachinePublisher = CurrentValueSubject(nil) - // middle loader - let loadMiddleSateMachineList = CurrentValueSubject<[NSManagedObjectID: GKStateMachine], Never>([:]) // TimelineIndex.objectID : middle loading state machine - var diffableDataSource: UITableViewDiffableDataSource? + var cellFrameCache = NSCache() init(context: AppContext) { self.context = context - self.fetchedResultsController = { - let fetchRequest = HomeTimelineIndex.sortedFetchRequest - fetchRequest.fetchBatchSize = 20 - fetchRequest.returnsObjectsAsFaults = false - fetchRequest.relationshipKeyPathsForPrefetching = [ - #keyPath(HomeTimelineIndex.status), - #keyPath(HomeTimelineIndex.status.author), - #keyPath(HomeTimelineIndex.status.reblog), - #keyPath(HomeTimelineIndex.status.reblog.author), - ] - let controller = NSFetchedResultsController( - fetchRequest: fetchRequest, - managedObjectContext: context.managedObjectContext, - sectionNameKeyPath: nil, - cacheName: nil - ) - - return controller - }() + self.fetchedResultsController = FeedFetchedResultsController(managedObjectContext: context.managedObjectContext) self.homeTimelineNavigationBarTitleViewModel = HomeTimelineNavigationBarTitleViewModel(context: context) super.init() - fetchedResultsController.delegate = self +// fetchedResultsController.delegate = self - timelinePredicate - .receive(on: DispatchQueue.main) - .compactMap { $0 } - .first() // set once - .sink { [weak self] predicate in +// timelinePredicate +// .receive(on: DispatchQueue.main) +// .compactMap { $0 } +// .first() // set once +// .sink { [weak self] predicate in +// guard let self = self else { return } +// self.fetchedResultsController.fetchRequest.predicate = predicate +// do { +// self.diffableDataSource?.defaultRowAnimation = .fade +// try self.fetchedResultsController.performFetch() +// DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in +// guard let self = self else { return } +// self.diffableDataSource?.defaultRowAnimation = .automatic +// } +// } catch { +// assertionFailure(error.localizedDescription) +// } +// } +// .store(in: &disposeBag) + + context.authenticationService.activeMastodonAuthenticationBox + .sink { [weak self] authenticationBox in guard let self = self else { return } - self.fetchedResultsController.fetchRequest.predicate = predicate - do { - self.diffableDataSource?.defaultRowAnimation = .fade - try self.fetchedResultsController.performFetch() - DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in - guard let self = self else { return } - self.diffableDataSource?.defaultRowAnimation = .automatic - } - } catch { - assertionFailure(error.localizedDescription) + guard let authenticationBox = authenticationBox else { + self.fetchedResultsController.predicate = Feed.predicate(kind: .none, acct: .none) + return } - } - .store(in: &disposeBag) - - context.authenticationService.activeMastodonAuthentication - .sink { [weak self] activeMastodonAuthentication in - guard let self = self else { return } - guard let mastodonAuthentication = activeMastodonAuthentication else { return } - let domain = mastodonAuthentication.domain - let userID = mastodonAuthentication.userID - let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - HomeTimelineIndex.predicate(domain: domain, userID: userID), - HomeTimelineIndex.notDeleted() - ]) - self.timelinePredicate.value = predicate + self.fetchedResultsController.predicate = Feed.predicate( + kind: .home, + acct: .mastodon(domain: authenticationBox.domain, userID: authenticationBox.userID) + ) } .store(in: &disposeBag) @@ -155,13 +141,81 @@ final class HomeTimelineViewModel: NSObject { } -extension HomeTimelineViewModel: SuggestionAccountViewModelDelegate { } - +//extension HomeTimelineViewModel: SuggestionAccountViewModelDelegate { } extension HomeTimelineViewModel { struct ScrollPositionRecord { - let item: Item + let item: StatusItem let offset: CGFloat let timestamp: Date } } + +extension HomeTimelineViewModel { + + // load timeline gap + func loadMore(item: StatusItem) async { + guard case let .feedLoader(record) = item else { return } + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + guard let diffableDataSource = diffableDataSource else { return } + var snapshot = diffableDataSource.snapshot() + + let managedObjectContext = context.managedObjectContext + let key = "LoadMore@\(record.objectID)" + + guard let feed = record.object(in: managedObjectContext) else { return } + guard let status = feed.status else { return } + + // keep transient property live + managedObjectContext.cache(feed, key: key) + defer { + managedObjectContext.cache(nil, key: key) + } + do { + // update state + try await managedObjectContext.performChanges { + feed.update(isLoadingMore: true) + } + } catch { + assertionFailure(error.localizedDescription) + } + + // reconfigure item + if #available(iOS 15.0, *) { + snapshot.reconfigureItems([item]) + } else { + // Fallback on earlier versions + snapshot.reloadItems([item]) + } + await updateSnapshotUsingReloadData(snapshot: snapshot) + + // fetch data + do { + let maxID = status.id + _ = try await context.apiService.homeTimeline( + maxID: maxID, + authenticationBox: authenticationBox + ) + } catch { + do { + // restore state + try await managedObjectContext.performChanges { + feed.update(isLoadingMore: false) + } + } catch { + assertionFailure(error.localizedDescription) + } + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch more failure: \(error.localizedDescription)") + } + + // reconfigure item again + if #available(iOS 15.0, *) { + snapshot.reconfigureItems([item]) + } else { + // Fallback on earlier versions + snapshot.reloadItems([item]) + } + await updateSnapshotUsingReloadData(snapshot: snapshot) + } + +} diff --git a/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift b/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift index 1e9c020c5..a1940640e 100644 --- a/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift +++ b/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift @@ -8,6 +8,8 @@ import os.log import UIKit import MastodonUI +import MastodonAsset +import MastodonLocalization protocol HomeTimelineNavigationBarTitleViewDelegate: AnyObject { func homeTimelineNavigationBarTitleView(_ titleView: HomeTimelineNavigationBarTitleView, logoButtonDidPressed sender: UIButton) diff --git a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift index 88beda0f5..543ba8d66 100644 --- a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift +++ b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift @@ -9,6 +9,8 @@ import os.log import UIKit import Combine import Pageboy +import MastodonAsset +import MastodonLocalization final class MediaPreviewViewController: UIViewController, NeedsDependency { @@ -98,15 +100,17 @@ extension MediaPreviewViewController { closeButton.addTarget(self, action: #selector(MediaPreviewViewController.closeButtonPressed(_:)), for: .touchUpInside) // bind view model - viewModel.currentPage + viewModel.$currentPage .receive(on: DispatchQueue.main) .sink { [weak self] index in guard let self = self else { return } - switch self.viewModel.pushTransitionItem.source { - case .mosaic(let mosaicImageViewContainer): + switch self.viewModel.transitionItem.source { + case .attachment(_): + break + case .attachments(let mediaGridContainerView): UIView.animate(withDuration: 0.3) { - mosaicImageViewContainer.setImageViews(alpha: 1) - mosaicImageViewContainer.setImageView(alpha: 0, index: index) + mediaGridContainerView.setAlpha(1) + mediaGridContainerView.setAlpha(0, index: index) } case .profileAvatar, .profileBanner: break @@ -178,7 +182,7 @@ extension MediaPreviewViewController: PageboyViewControllerDelegate { ) { // update page control // pageControl.currentPage = index - viewModel.currentPage.value = index + viewModel.currentPage = index } func pageboyViewController( @@ -203,17 +207,24 @@ extension MediaPreviewViewController: MediaPreviewImageViewControllerDelegate { // do nothing } - func mediaPreviewImageViewController(_ viewController: MediaPreviewImageViewController, contextMenuActionPerform action: MediaPreviewImageViewController.ContextMenuAction) { + func mediaPreviewImageViewController( + _ viewController: MediaPreviewImageViewController, + contextMenuActionPerform action: MediaPreviewImageViewController.ContextMenuAction + ) { switch action { case .savePhoto: - let savePublisher: AnyPublisher = { + let _savePublisher: AnyPublisher? = { switch viewController.viewModel.item { - case .status(let meta): - return context.photoLibraryService.save(imageSource: .url(meta.url)) - case .local(let meta): - return context.photoLibraryService.save(imageSource: .image(meta.image)) + case .remote(let previewContext): + guard let assetURL = previewContext.assetURL else { return nil } + return context.photoLibraryService.save(imageSource: .url(assetURL)) + case .local(let previewContext): + return context.photoLibraryService.save(imageSource: .image(previewContext.image)) } }() + guard let savePublisher = _savePublisher else { + return + } savePublisher .sink { [weak self] completion in guard let self = self else { return } @@ -221,8 +232,15 @@ extension MediaPreviewViewController: MediaPreviewImageViewControllerDelegate { case .failure(let error): guard let error = error as? PhotoLibraryService.PhotoLibraryError, case .noPermission = error else { return } - let alertController = SettingService.openSettingsAlertController(title: L10n.Common.Alerts.SavePhotoFailure.title, message: L10n.Common.Alerts.SavePhotoFailure.message) - self.coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) + let alertController = SettingService.openSettingsAlertController( + title: L10n.Common.Alerts.SavePhotoFailure.title, + message: L10n.Common.Alerts.SavePhotoFailure.message + ) + self.coordinator.present( + scene: .alertController(alertController: alertController), + from: self, + transition: .alertController(animated: true, completion: nil) + ) case .finished: break } @@ -231,14 +249,19 @@ extension MediaPreviewViewController: MediaPreviewImageViewControllerDelegate { } .store(in: &context.disposeBag) case .copyPhoto: - let copyPublisher: AnyPublisher = { + let _copyPublisher: AnyPublisher? = { switch viewController.viewModel.item { - case .status(let meta): - return context.photoLibraryService.copy(imageSource: .url(meta.url)) - case .local(let meta): - return context.photoLibraryService.copy(imageSource: .image(meta.image)) + case .remote(let previewContext): + guard let assetURL = previewContext.assetURL else { return nil } + return context.photoLibraryService.copy(imageSource: .url(assetURL)) + case .local(let previewContext): + return context.photoLibraryService.copy(imageSource: .image(previewContext.image)) } }() + guard let copyPublisher = _copyPublisher else { + return + } + copyPublisher .sink { completion in switch completion { @@ -256,12 +279,22 @@ extension MediaPreviewViewController: MediaPreviewImageViewControllerDelegate { SafariActivity(sceneCoordinator: self.coordinator) ] let activityViewController = UIActivityViewController( - activityItems: viewController.viewModel.item.activityItems, + activityItems: { + var activityItems: [Any] = [] + switch viewController.viewModel.item { + case .remote(let previewContext): + if let assetURL = previewContext.assetURL { + activityItems.append(assetURL) + } + case .local(let previewContext): + activityItems.append(previewContext.image) + } + return activityItems + }(), applicationActivities: applicationActivities ) activityViewController.popoverPresentationController?.sourceView = viewController.previewImageView.imageView self.present(activityViewController, animated: true, completion: nil) - } } diff --git a/Mastodon/Scene/MediaPreview/MediaPreviewViewModel.swift b/Mastodon/Scene/MediaPreview/MediaPreviewViewModel.swift index cd019fc9b..2de19b267 100644 --- a/Mastodon/Scene/MediaPreview/MediaPreviewViewModel.swift +++ b/Mastodon/Scene/MediaPreview/MediaPreviewViewModel.swift @@ -13,115 +13,165 @@ import Pageboy final class MediaPreviewViewModel: NSObject { + weak var mediaPreviewImageViewControllerDelegate: MediaPreviewImageViewControllerDelegate? + // input let context: AppContext - let initialItem: PreviewItem - weak var mediaPreviewImageViewControllerDelegate: MediaPreviewImageViewControllerDelegate? - let currentPage: CurrentValueSubject + let item: PreviewItem + let transitionItem: MediaPreviewTransitionItem + + @Published var currentPage: Int // output - let pushTransitionItem: MediaPreviewTransitionItem let viewControllers: [UIViewController] - init(context: AppContext, meta: StatusImagePreviewMeta, pushTransitionItem: MediaPreviewTransitionItem) { + init( + context: AppContext, + item: PreviewItem, + transitionItem: MediaPreviewTransitionItem + ) { self.context = context - self.initialItem = .status(meta) + self.item = item + var currentPage = 0 var viewControllers: [UIViewController] = [] - let managedObjectContext = self.context.managedObjectContext - managedObjectContext.performAndWait { - let status = managedObjectContext.object(with: meta.statusObjectID) as! Status - guard let media = status.mediaAttachments?.sorted(by: { $0.index.compare($1.index) == .orderedAscending }) else { return } - for (entity, image) in zip(media, meta.preloadThumbnailImages) { - let thumbnail: UIImage? = image.flatMap { $0.size != CGSize(width: 1, height: 1) ? $0 : nil } - switch entity.type { - case .image: - guard let url = URL(string: entity.url) else { continue } - let meta = MediaPreviewImageViewModel.RemoteImagePreviewMeta(url: url, thumbnail: thumbnail, altText: entity.descriptionString) - let mediaPreviewImageModel = MediaPreviewImageViewModel(meta: meta) - let mediaPreviewImageViewController = MediaPreviewImageViewController() - mediaPreviewImageViewController.viewModel = mediaPreviewImageModel - viewControllers.append(mediaPreviewImageViewController) - default: - continue - } - } - } + switch item { + case .attachment(let previewContext): + currentPage = previewContext.initialIndex + for (i, attachment) in previewContext.attachments.enumerated() { + let viewController = MediaPreviewImageViewController() + let viewModel = MediaPreviewImageViewModel( + context: context, + item: .remote(.init( + assetURL: attachment.assetURL.flatMap { URL(string: $0) }, + thumbnail: previewContext.thumbnail(at: i), + altText: attachment.altDescription + )) + ) + viewController.viewModel = viewModel + viewControllers.append(viewController) + } // end for … in … + case .profileAvatar(let previewContext): + let viewController = MediaPreviewImageViewController() + let viewModel = MediaPreviewImageViewModel( + context: context, + item: .remote(.init( + assetURL: previewContext.assetURL.flatMap { URL(string: $0) }, + thumbnail: previewContext.thumbnail, + altText: nil + )) + ) + viewController.viewModel = viewModel + viewControllers.append(viewController) + case .profileBanner(let previewContext): + let viewController = MediaPreviewImageViewController() + let viewModel = MediaPreviewImageViewModel( + context: context, + item: .remote(.init( + assetURL: previewContext.assetURL.flatMap { URL(string: $0) }, + thumbnail: previewContext.thumbnail, + altText: nil + )) + ) + viewController.viewModel = viewModel + viewControllers.append(viewController) + } // end switch +// let status = managedObjectContext.object(with: meta.statusObjectID) as! Status +// for (entity, image) in zip(status.attachments, meta.preloadThumbnailImages) { +// let thumbnail: UIImage? = image.flatMap { $0.size != CGSize(width: 1, height: 1) ? $0 : nil } +// switch entity.kind { +// case .image: +// guard let url = URL(string: entity.assetURL ?? "") else { continue } +// let meta = MediaPreviewImageViewModel.RemoteImagePreviewMeta(url: url, thumbnail: thumbnail, altText: entity.altDescription) +// let mediaPreviewImageModel = MediaPreviewImageViewModel(meta: meta) +// let mediaPreviewImageViewController = MediaPreviewImageViewController() +// mediaPreviewImageViewController.viewModel = mediaPreviewImageModel +// viewControllers.append(mediaPreviewImageViewController) +// default: +// continue +// } +// } +// } self.viewControllers = viewControllers - self.currentPage = CurrentValueSubject(meta.initialIndex) - self.pushTransitionItem = pushTransitionItem + self.currentPage = currentPage + self.transitionItem = transitionItem super.init() } - init(context: AppContext, meta: ProfileBannerImagePreviewMeta, pushTransitionItem: MediaPreviewTransitionItem) { - self.context = context - self.initialItem = .profileBanner(meta) - var viewControllers: [UIViewController] = [] - let managedObjectContext = self.context.managedObjectContext - managedObjectContext.performAndWait { - let account = managedObjectContext.object(with: meta.accountObjectID) as! MastodonUser - let avatarURL = account.headerImageURLWithFallback(domain: account.domain) - let meta = MediaPreviewImageViewModel.RemoteImagePreviewMeta(url: avatarURL, thumbnail: meta.preloadThumbnailImage, altText: nil) - let mediaPreviewImageModel = MediaPreviewImageViewModel(meta: meta) - let mediaPreviewImageViewController = MediaPreviewImageViewController() - mediaPreviewImageViewController.viewModel = mediaPreviewImageModel - viewControllers.append(mediaPreviewImageViewController) - } - self.viewControllers = viewControllers - self.currentPage = CurrentValueSubject(0) - self.pushTransitionItem = pushTransitionItem - super.init() - } - - init(context: AppContext, meta: ProfileAvatarImagePreviewMeta, pushTransitionItem: MediaPreviewTransitionItem) { - self.context = context - self.initialItem = .profileAvatar(meta) - var viewControllers: [UIViewController] = [] - let managedObjectContext = self.context.managedObjectContext - managedObjectContext.performAndWait { - let account = managedObjectContext.object(with: meta.accountObjectID) as! MastodonUser - let avatarURL = account.avatarImageURLWithFallback(domain: account.domain) - let meta = MediaPreviewImageViewModel.RemoteImagePreviewMeta(url: avatarURL, thumbnail: meta.preloadThumbnailImage, altText: nil) - let mediaPreviewImageModel = MediaPreviewImageViewModel(meta: meta) - let mediaPreviewImageViewController = MediaPreviewImageViewController() - mediaPreviewImageViewController.viewModel = mediaPreviewImageModel - viewControllers.append(mediaPreviewImageViewController) - } - self.viewControllers = viewControllers - self.currentPage = CurrentValueSubject(0) - self.pushTransitionItem = pushTransitionItem - super.init() - } +// init(context: AppContext, meta: ProfileBannerImagePreviewMeta, pushTransitionItem: MediaPreviewTransitionItem) { +// self.context = context +// self.item = .profileBanner(meta) +// var viewControllers: [UIViewController] = [] +// let managedObjectContext = self.context.managedObjectContext +// managedObjectContext.performAndWait { +// let account = managedObjectContext.object(with: meta.accountObjectID) as! MastodonUser +// let avatarURL = account.headerImageURLWithFallback(domain: account.domain) +// let meta = MediaPreviewImageViewModel.RemoteImagePreviewMeta(url: avatarURL, thumbnail: meta.preloadThumbnailImage, altText: nil) +// let mediaPreviewImageModel = MediaPreviewImageViewModel(meta: meta) +// let mediaPreviewImageViewController = MediaPreviewImageViewController() +// mediaPreviewImageViewController.viewModel = mediaPreviewImageModel +// viewControllers.append(mediaPreviewImageViewController) +// } +// self.viewControllers = viewControllers +// self.currentPage = CurrentValueSubject(0) +// self.transitionItem = pushTransitionItem +// super.init() +// } +// +// init(context: AppContext, meta: ProfileAvatarImagePreviewMeta, pushTransitionItem: MediaPreviewTransitionItem) { +// self.context = context +// self.item = .profileAvatar(meta) +// var viewControllers: [UIViewController] = [] +// let managedObjectContext = self.context.managedObjectContext +// managedObjectContext.performAndWait { +// let account = managedObjectContext.object(with: meta.accountObjectID) as! MastodonUser +// let avatarURL = account.avatarImageURLWithFallback(domain: account.domain) +// let meta = MediaPreviewImageViewModel.RemoteImagePreviewMeta(url: avatarURL, thumbnail: meta.preloadThumbnailImage, altText: nil) +// let mediaPreviewImageModel = MediaPreviewImageViewModel(meta: meta) +// let mediaPreviewImageViewController = MediaPreviewImageViewController() +// mediaPreviewImageViewController.viewModel = mediaPreviewImageModel +// viewControllers.append(mediaPreviewImageViewController) +// } +// self.viewControllers = viewControllers +// self.currentPage = CurrentValueSubject(0) +// self.transitionItem = pushTransitionItem +// super.init() +// } } extension MediaPreviewViewModel { enum PreviewItem { - case status(StatusImagePreviewMeta) - case profileAvatar(ProfileAvatarImagePreviewMeta) - case profileBanner(ProfileBannerImagePreviewMeta) - case local(LocalImagePreviewMeta) + case attachment(AttachmentPreviewContext) + case profileAvatar(ProfileAvatarPreviewContext) + case profileBanner(ProfileBannerPreviewContext) +// case local(LocalImagePreviewMeta) } - struct StatusImagePreviewMeta { - let statusObjectID: NSManagedObjectID + struct AttachmentPreviewContext { + let attachments: [MastodonAttachment] let initialIndex: Int - let preloadThumbnailImages: [UIImage?] + let thumbnails: [UIImage?] + + func thumbnail(at index: Int) -> UIImage? { + guard index < thumbnails.count else { return nil } + return thumbnails[index] + } } - struct ProfileAvatarImagePreviewMeta { - let accountObjectID: NSManagedObjectID - let preloadThumbnailImage: UIImage? + struct ProfileAvatarPreviewContext { + let assetURL: String? + let thumbnail: UIImage? } - - struct ProfileBannerImagePreviewMeta { - let accountObjectID: NSManagedObjectID - let preloadThumbnailImage: UIImage? - } - - struct LocalImagePreviewMeta { - let image: UIImage + + struct ProfileBannerPreviewContext { + let assetURL: String? + let thumbnail: UIImage? } + +// struct LocalImagePreviewMeta { +// let image: UIImage +// } } @@ -141,8 +191,8 @@ extension MediaPreviewViewModel: PageboyViewControllerDataSource { } func defaultPage(for pageboyViewController: PageboyViewController) -> PageboyViewController.Page? { - guard case let .status(meta) = initialItem else { return nil } - return .at(index: meta.initialIndex) + guard case let .attachment(previewContext) = item else { return nil } + return .at(index: previewContext.initialIndex) } } diff --git a/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewController.swift b/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewController.swift index 03004028e..27712b9a4 100644 --- a/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewController.swift +++ b/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewController.swift @@ -8,6 +8,9 @@ import os.log import UIKit import Combine +import MastodonAsset +import MastodonLocalization +import FLAnimatedImage protocol MediaPreviewImageViewControllerDelegate: AnyObject { func mediaPreviewImageViewController(_ viewController: MediaPreviewImageViewController, tapGestureRecognizerDidTrigger tapGestureRecognizer: UITapGestureRecognizer) @@ -39,17 +42,7 @@ extension MediaPreviewImageViewController { override func viewDidLoad() { super.viewDidLoad() - -// progressBarView.tintColor = .white -// progressBarView.translatesAutoresizingMaskIntoConstraints = false -// view.addSubview(progressBarView) -// NSLayoutConstraint.activate([ -// progressBarView.centerXAnchor.constraint(equalTo: view.centerXAnchor), -// progressBarView.centerYAnchor.constraint(equalTo: view.centerYAnchor), -// progressBarView.widthAnchor.constraint(equalToConstant: 120), -// progressBarView.heightAnchor.constraint(equalToConstant: 44), -// ]) - + previewImageView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(previewImageView) NSLayoutConstraint.activate([ @@ -69,38 +62,31 @@ extension MediaPreviewImageViewController { let previewImageViewContextMenuInteraction = UIContextMenuInteraction(delegate: self) previewImageView.addInteraction(previewImageViewContextMenuInteraction) -// switch viewModel.item { -// case .local(let meta): -// self.previewImageView.imageView.image = meta.image -// self.previewImageView.setup(image: meta.image, container: self.previewImageView, forceUpdate: true) -// self.previewImageView.imageView.accessibilityLabel = self.viewModel.altText -// case .status(let meta): -// Nuke.loadImage( -// with: meta.url, -// into: self.previewImageView.imageView -// ) { result in -// switch result { -// case .failure(let error): -// break -// case .success(let response): -// self.previewImageView.setup(image: response.image, container: self.previewImageView, forceUpdate: true) -// self.previewImageView.imageView.accessibilityLabel = self.viewModel.altText -// } -// } -// } - viewModel.image - .receive(on: RunLoop.main) // use RunLoop prevent set image during zooming (TODO: handle transitioning state) - .sink { [weak self] image, animatedImage in + switch viewModel.item { + case .remote(let imageContext): + previewImageView.imageView.accessibilityLabel = imageContext.altText + + if let thumbnail = imageContext.thumbnail { + previewImageView.imageView.image = thumbnail + previewImageView.setup(image: thumbnail, container: self.previewImageView, forceUpdate: true) + } + + previewImageView.imageView.setImage( + url: imageContext.assetURL, + placeholder: imageContext.thumbnail, + scaleToSize: nil + ) { [weak self] image in guard let self = self else { return } guard let image = image else { return } - self.previewImageView.imageView.image = image self.previewImageView.setup(image: image, container: self.previewImageView, forceUpdate: true) - if let animatedImage = animatedImage { - self.previewImageView.imageView.animatedImage = animatedImage - } - self.previewImageView.imageView.accessibilityLabel = self.viewModel.altText } - .store(in: &disposeBag) + + case .local(let imageContext): + let image = imageContext.image + previewImageView.imageView.image = image + previewImageView.setup(image: image, container: previewImageView, forceUpdate: true) + + } } } diff --git a/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewModel.swift b/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewModel.swift index f44a6a189..1a141c723 100644 --- a/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewModel.swift +++ b/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewModel.swift @@ -17,70 +17,31 @@ class MediaPreviewImageViewModel { var disposeBag = Set() // input + let context: AppContext let item: ImagePreviewItem - // output - let image: CurrentValueSubject<(UIImage?, FLAnimatedImage?), Never> - let altText: String? - - init(meta: RemoteImagePreviewMeta) { - self.item = .status(meta) - self.image = CurrentValueSubject((meta.thumbnail, nil)) - self.altText = meta.altText - - let url = meta.url - AF.request(url).publishData() - .map { response in - switch response.result { - case .success(let data): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: download image %s success", ((#file as NSString).lastPathComponent), #line, #function, url.debugDescription) - let image = UIImage(data: data, scale: UIScreen.main.scale) - let animatedImage = FLAnimatedImage(animatedGIFData: data) - return (image, animatedImage) - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: download image %s fail: %s", ((#file as NSString).lastPathComponent), #line, #function, url.debugDescription, error.localizedDescription) - return (nil, nil) - } - } - .assign(to: \.value, on: image) - .store(in: &disposeBag) - } - - init(meta: LocalImagePreviewMeta) { - self.item = .local(meta) - self.image = CurrentValueSubject((meta.image, nil)) - self.altText = nil + init(context: AppContext, item: ImagePreviewItem) { + self.context = context + self.item = item } } extension MediaPreviewImageViewModel { + enum ImagePreviewItem { - case status(RemoteImagePreviewMeta) - case local(LocalImagePreviewMeta) - - var activityItems: [Any] { - var items: [Any] = [] - - switch self { - case .status(let meta): - items.append(meta.url) - case .local(let meta): - items.append(meta.image) - } - - return items - } + case remote(RemoteImageContext) + case local(LocalImageContext) } - struct RemoteImagePreviewMeta { - let url: URL + struct RemoteImageContext { + let assetURL: URL? let thumbnail: UIImage? let altText: String? } - struct LocalImagePreviewMeta { + struct LocalImageContext { let image: UIImage } - + } diff --git a/Mastodon/Scene/Notification/Button/NotificationAvatarButton.swift b/Mastodon/Scene/Notification/Button/NotificationAvatarButton.swift index 6eafdd1dd..26abfbd23 100644 --- a/Mastodon/Scene/Notification/Button/NotificationAvatarButton.swift +++ b/Mastodon/Scene/Notification/Button/NotificationAvatarButton.swift @@ -7,6 +7,7 @@ import UIKit import FLAnimatedImage +import MastodonUI final class NotificationAvatarButton: AvatarButton { @@ -27,7 +28,7 @@ final class NotificationAvatarButton: AvatarButton { override func _init() { super._init() - avatarImageSize = CGSize(width: 35, height: 35) + size = CGSize(width: 35, height: 35) let path: CGPath = { let path = CGMutablePath() diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift new file mode 100644 index 000000000..99c040424 --- /dev/null +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift @@ -0,0 +1,49 @@ +// +// NotificationView+ViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import UIKit +import CoreDataStack + +extension NotificationTableViewCell { + final class ViewModel { + let value: Value + + init(value: Value) { + self.value = value + } + + enum Value { + case feed(Feed) + } + } +} + +extension NotificationTableViewCell { + + func configure( + tableView: UITableView, + viewModel: ViewModel, + delegate: NotificationTableViewCellDelegate? + ) { + if notificationView.frame == .zero { + // set status view width + notificationView.frame.size.width = tableView.frame.width + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") + + notificationView.statusView.frame.size.width = tableView.frame.width + notificationView.quoteStatusView.frame.size.width = tableView.frame.width - StatusView.containerLayoutMargin.left - StatusView.containerLayoutMargin.right + } + + switch viewModel.value { + case .feed(let feed): + notificationView.configure(feed: feed) + } + + self.delegate = delegate + } + +} diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift new file mode 100644 index 000000000..fa49824fe --- /dev/null +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift @@ -0,0 +1,73 @@ +// +// NotificationTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import os.log +import UIKit +import Combine +import MastodonUI + +final class NotificationTableViewCell: UITableViewCell { + + let logger = Logger(subsystem: "NotificationTableViewCell", category: "View") + + weak var delegate: NotificationTableViewCellDelegate? + var disposeBag = Set() + + let notificationView = NotificationView() + + let separatorLine = UIView.separatorLine + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + notificationView.prepareForReuse() + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension NotificationTableViewCell { + + private func _init() { + notificationView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(notificationView) + NSLayoutConstraint.activate([ + notificationView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), + notificationView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + notificationView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: notificationView.bottomAnchor), + ]) + + separatorLine.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(separatorLine) + NSLayoutConstraint.activate([ + separatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + separatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.required - 1), + ]) + + notificationView.delegate = self + } + +} + +// MARK: - NotificationViewContainerTableViewCell +extension NotificationTableViewCell: NotificationViewContainerTableViewCell { } + +// MARK: - NotificationTableViewCellDelegate +extension NotificationTableViewCell: NotificationViewDelegate { } diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift new file mode 100644 index 000000000..1f98d4fbb --- /dev/null +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift @@ -0,0 +1,63 @@ +// +// NotificationTableViewCellDelegate.swift +// Mastodon +// +// Created by MainasuK on 2022-1-26. +// + +import UIKit +import MastodonUI +import MetaTextKit + +// sourcery: protocolName = "NotificationViewDelegate" +// sourcery: replaceOf = "notificationView(notificationView" +// sourcery: replaceWith = "delegate?.tableViewCell(self, notificationView: notificationView" +protocol NotificationViewContainerTableViewCell: UITableViewCell, AutoGenerateProtocolRelayDelegate { + var delegate: NotificationTableViewCellDelegate? { get } + var notificationView: NotificationView { get } +} + +// MARK: - AutoGenerateProtocolDelegate +// sourcery: protocolName = "NotificationViewDelegate" +// sourcery: replaceOf = "notificationView(_" +// sourcery: replaceWith = "func tableViewCell(_ cell: UITableViewCell," +protocol NotificationTableViewCellDelegate: AnyObject, AutoGenerateProtocolDelegate { + // sourcery:inline:NotificationTableViewCellDelegate.AutoGenerateProtocolDelegate + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, authorAvatarButtonDidPressed button: AvatarButton) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + // sourcery:end +} + +// MARK: - AutoGenerateProtocolDelegate +// Protocol Extension +extension NotificationViewDelegate where Self: NotificationViewContainerTableViewCell { + // sourcery:inline:NotificationViewContainerTableViewCell.AutoGenerateProtocolRelayDelegate + func notificationView(_ notificationView: NotificationView, authorAvatarButtonDidPressed button: AvatarButton) { + delegate?.tableViewCell(self, notificationView: notificationView, authorAvatarButtonDidPressed: button) + } + + func notificationView(_ notificationView: NotificationView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) { + delegate?.tableViewCell(self, notificationView: notificationView, menuButton: button, didSelectAction: action) + } + + func notificationView(_ notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { + delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, metaText: metaText, didSelectMeta: meta) + } + + func notificationView(_ notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) { + delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action) + } + + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) { + delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, authorAvatarButtonDidPressed: button) + } + + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { + delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, metaText: metaText, didSelectMeta: meta) + } + // sourcery:end +} diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController+DataSourceProvider.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController+DataSourceProvider.swift new file mode 100644 index 000000000..c058ee921 --- /dev/null +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController+DataSourceProvider.swift @@ -0,0 +1,44 @@ +// +// NotificationTimelineViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-26. +// + +import UIKit + +extension NotificationTimelineViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.tableViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .feed(let record): + let managedObjectContext = context.managedObjectContext + let item: DataSourceItem? = try? await managedObjectContext.perform { + guard let feed = record.object(in: managedObjectContext) else { return nil } + guard feed.kind == .notificationAll || feed.kind == .notificationMentions else { return nil } + if let notification = feed.notification { + return .notification(record: .init(objectID: notification.objectID)) + } else { + return nil + } + } + return item + default: + return nil + } + } + + @MainActor + private func indexPath(for cell: UITableViewCell) async -> IndexPath? { + return tableView.indexPath(for: cell) + } +} diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift new file mode 100644 index 000000000..25e17ef51 --- /dev/null +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift @@ -0,0 +1,141 @@ +// +// NotificationTimelineViewController.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import os.log +import UIKit +import Combine + +final class NotificationTimelineViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { + + let logger = Logger(subsystem: "NotificationTimelineViewController", category: "ViewController") + + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } + weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } + + let mediaPreviewTransitionController = MediaPreviewTransitionController() + + var disposeBag = Set() + var observations = Set() + + var viewModel: NotificationTimelineViewModel! + + private(set) lazy var refreshControl: UIRefreshControl = { + let refreshControl = UIRefreshControl() + refreshControl.addTarget(self, action: #selector(NotificationTimelineViewController.refreshControlValueChanged(_:)), for: .valueChanged) + return refreshControl + }() + + private(set) lazy var tableView: UITableView = { + let tableView = UITableView() + tableView.backgroundColor = .clear + tableView.rowHeight = UITableView.automaticDimension + tableView.separatorStyle = .none + return tableView + }() + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + +} + +extension NotificationTimelineViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + tableView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(tableView) + NSLayoutConstraint.activate([ + tableView.topAnchor.constraint(equalTo: view.topAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + tableView.delegate = self + viewModel.setupDiffableDataSource( + tableView: tableView, + notificationTableViewCellDelegate: self + ) + + // setup batch fetch + viewModel.listBatchFetchViewModel.setup(scrollView: tableView) + viewModel.listBatchFetchViewModel.shouldFetch + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self = self else { return } + self.viewModel.loadOldestStateMachine.enter(NotificationTimelineViewModel.LoadOldestState.Loading.self) + } + .store(in: &disposeBag) + + // setup refresh control + tableView.refreshControl = refreshControl + viewModel.didLoadLatest + .receive(on: DispatchQueue.main) + .sink { [weak self] in + guard let self = self else { return } + UIView.animate(withDuration: 0.5) { [weak self] in + guard let self = self else { return } + self.refreshControl.endRefreshing() + } + } + .store(in: &disposeBag) + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + refreshControl.endRefreshing() + tableView.deselectRow(with: transitionCoordinator, animated: animated) + } + +} + +extension NotificationTimelineViewController { + + @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + + Task { + await viewModel.loadLatest() + } + } + +} + +// MARK: - UITableViewDelegate +extension NotificationTimelineViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { + // sourcery:inline:NotificationTimelineViewController.AutoGenerateTableViewDelegate + + // Generated using Sourcery + // DO NOT EDIT + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + aspectTableView(tableView, didSelectRowAt: indexPath) + } + + func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { + return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) + } + + func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) + } + + func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) + } + + func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { + aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) + } + + // sourcery:end +} + +// MARK: - NotificationTableViewCellDelegate +extension NotificationTimelineViewController: NotificationTableViewCellDelegate { } diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+Diffable.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+Diffable.swift new file mode 100644 index 000000000..1476ef2e0 --- /dev/null +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+Diffable.swift @@ -0,0 +1,124 @@ +// +// NotificationTimelineViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import os.log +import UIKit +import CoreData +import CoreDataStack + +extension NotificationTimelineViewModel { + + func setupDiffableDataSource( + tableView: UITableView, + notificationTableViewCellDelegate: NotificationTableViewCellDelegate + ) { + diffableDataSource = NotificationSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: NotificationSection.Configuration( + notificationTableViewCellDelegate: notificationTableViewCellDelegate + ) + ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + diffableDataSource?.apply(snapshot) + + feedFetchedResultsController.$records + .receive(on: DispatchQueue.main) + .sink { [weak self] records in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): incoming \(records.count) objects") + + Task { + let start = CACurrentMediaTime() + defer { + let end = CACurrentMediaTime() + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): cost \(end - start, format: .fixed(precision: 4))s to process \(records.count) feeds") + } + let oldSnapshot = diffableDataSource.snapshot() + var newSnapshot: NSDiffableDataSourceSnapshot = { + let newItems = records.map { record in + NotificationItem.feed(record: record) + } + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + snapshot.appendItems(newItems, toSection: .main) + return snapshot + }() + + let parentManagedObjectContext = self.context.managedObjectContext + let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) + managedObjectContext.parent = parentManagedObjectContext + try? await managedObjectContext.perform { + let anchors: [Feed] = { + let request = Feed.sortedFetchRequest + request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ + Feed.hasMorePredicate(), + self.feedFetchedResultsController.predicate, + ]) + do { + return try managedObjectContext.fetch(request) + } catch { + assertionFailure(error.localizedDescription) + return [] + } + }() + + let itemIdentifiers = newSnapshot.itemIdentifiers + for (index, item) in itemIdentifiers.enumerated() { + guard case let .feed(record) = item else { continue } + guard anchors.contains(where: { feed in feed.objectID == record.objectID }) else { continue } + let isLast = index + 1 == itemIdentifiers.count + if isLast { + newSnapshot.insertItems([.bottomLoader], afterItem: item) + } else { + newSnapshot.insertItems([.feedLoader(record: record)], afterItem: item) + } + } + } + + let hasChanges = newSnapshot.itemIdentifiers != oldSnapshot.itemIdentifiers + if !hasChanges { + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): snapshot not changes") + self.didLoadLatest.send() + return + } else { + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): snapshot has changes") + } + + await self.updateSnapshotUsingReloadData(snapshot: newSnapshot) + self.didLoadLatest.send() + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): applied new snapshot") + } // end Task + } + .store(in: &disposeBag) + } // end func setupDiffableDataSource + +} + +extension NotificationTimelineViewModel { + + @MainActor func updateDataSource( + snapshot: NSDiffableDataSourceSnapshot, + animatingDifferences: Bool + ) async { + diffableDataSource?.apply(snapshot, animatingDifferences: animatingDifferences) + } + + @MainActor func updateSnapshotUsingReloadData( + snapshot: NSDiffableDataSourceSnapshot + ) async { + if #available(iOS 15.0, *) { + await self.diffableDataSource?.applySnapshotUsingReloadData(snapshot) + } else { + diffableDataSource?.applySnapshot(snapshot, animated: false, completion: nil) + } + } + +} diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+LoadOldestState.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+LoadOldestState.swift new file mode 100644 index 000000000..bc67a6304 --- /dev/null +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+LoadOldestState.swift @@ -0,0 +1,146 @@ +// +// NotificationTimelineViewModel+LoadOldestState.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import CoreDataStack +import Foundation +import GameplayKit +import MastodonSDK +import os.log + +extension NotificationTimelineViewModel { + class LoadOldestState: GKState, NamingState { + + let logger = Logger(subsystem: "NotificationTimelineViewModel.LoadOldestState", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + + weak var viewModel: NotificationTimelineViewModel? + + init(viewModel: NotificationTimelineViewModel) { + self.viewModel = viewModel + } + + override func didEnter(from previousState: GKState?) { + super.didEnter(from: previousState) + let previousState = previousState as? NotificationTimelineViewModel.LoadOldestState + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + } + + @MainActor + func enter(state: LoadOldestState.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") + } + } +} + +extension NotificationTimelineViewModel.LoadOldestState { + class Initial: NotificationTimelineViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + guard let viewModel = viewModel else { return false } + guard !viewModel.feedFetchedResultsController.records.isEmpty else { return false } + return stateClass == Loading.self + } + } + + class Loading: NotificationTimelineViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + stateClass == Fail.self || stateClass == Idle.self || stateClass == NoMore.self + } + + override func didEnter(from previousState: GKState?) { + super.didEnter(from: previousState) + + guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + assertionFailure() + stateMachine.enter(Fail.self) + return + } + + guard let lastFeedRecord = viewModel.feedFetchedResultsController.records.last else { + stateMachine.enter(Fail.self) + return + } + let scope = viewModel.scope + + Task { + let managedObjectContext = viewModel.context.managedObjectContext + let _maxID: Mastodon.Entity.Notification.ID? = try await managedObjectContext.perform { + guard let feed = lastFeedRecord.object(in: managedObjectContext), + let notification = feed.notification + else { return nil } + return notification.id + } + + guard let maxID = _maxID else { + await self.enter(state: Fail.self) + return + } + + do { + let response = try await viewModel.context.apiService.notifications( + maxID: maxID, + scope: scope, + authenticationBox: authenticationBox + ) + + let notifications = response.value + // enter no more state when no new statuses + if notifications.isEmpty || (notifications.count == 1 && notifications[0].id == maxID) { + await self.enter(state: NoMore.self) + } else { + await self.enter(state: Idle.self) + } + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch statues failed: \(error.localizedDescription)") + await self.enter(state: Fail.self) + } + } // Task + } + } + + class Fail: NotificationTimelineViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + stateClass == Loading.self || stateClass == Idle.self + } + } + + class Idle: NotificationTimelineViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + stateClass == Loading.self + } + } + + class NoMore: NotificationTimelineViewModel.LoadOldestState { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + // reset state if needs + stateClass == Idle.self + } + + override func didEnter(from previousState: GKState?) { + guard let viewModel = viewModel else { return } + guard let diffableDataSource = viewModel.diffableDataSource else { + assertionFailure() + return + } + DispatchQueue.main.async { + var snapshot = diffableDataSource.snapshot() + snapshot.deleteItems([.bottomLoader]) + diffableDataSource.apply(snapshot) + } + } + } +} diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift new file mode 100644 index 000000000..e62ec4743 --- /dev/null +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift @@ -0,0 +1,159 @@ +// +// NotificationTimelineViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import os.log +import UIKit +import Combine +import CoreDataStack +import GameplayKit +import MastodonSDK + +final class NotificationTimelineViewModel { + + let logger = Logger(subsystem: "NotificationTimelineViewModel", category: "ViewModel") + + var disposeBag = Set() + + // input + let context: AppContext + let scope: Scope + let feedFetchedResultsController: FeedFetchedResultsController + let listBatchFetchViewModel = ListBatchFetchViewModel() + + // output + var diffableDataSource: UITableViewDiffableDataSource? + var didLoadLatest = PassthroughSubject() + + // bottom loader + private(set) lazy var loadOldestStateMachine: GKStateMachine = { + // exclude timeline middle fetcher state + let stateMachine = GKStateMachine(states: [ + LoadOldestState.Initial(viewModel: self), + LoadOldestState.Loading(viewModel: self), + LoadOldestState.Fail(viewModel: self), + LoadOldestState.Idle(viewModel: self), + LoadOldestState.NoMore(viewModel: self), + ]) + stateMachine.enter(LoadOldestState.Initial.self) + return stateMachine + }() + + init( + context: AppContext, + scope: Scope + ) { + self.context = context + self.scope = scope + self.feedFetchedResultsController = FeedFetchedResultsController(managedObjectContext: context.managedObjectContext) + // end init + + context.authenticationService.activeMastodonAuthenticationBox + .sink { [weak self] authenticationBox in + guard let self = self else { return } + guard let authenticationBox = authenticationBox else { + self.feedFetchedResultsController.predicate = Feed.nonePredicate() + return + } + + let predicate = NotificationTimelineViewModel.feedPredicate( + authenticationBox: authenticationBox, + scope: scope + ) + self.feedFetchedResultsController.predicate = predicate + } + .store(in: &disposeBag) + } + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + +} + +extension NotificationTimelineViewModel { + enum Scope: Hashable, CaseIterable { + case everything + case mentions + + var includeTypes: [MastodonNotificationType]? { + switch self { + case .everything: return nil + case .mentions: return [.mention, .status] + } + } + + + var excludeTypes: [MastodonNotificationType]? { + switch self { + case .everything: return nil + case .mentions: return [.follow, .followRequest, .reblog, .favourite, .poll] + } + } + + var _excludeTypes: [Mastodon.Entity.Notification.NotificationType]? { + switch self { + case .everything: return nil + case .mentions: return [.follow, .followRequest, .reblog, .favourite, .poll] + } + } + } + + static func feedPredicate( + authenticationBox: MastodonAuthenticationBox, + scope: Scope + ) -> NSPredicate { + let domain = authenticationBox.domain + let userID = authenticationBox.userID + let acct = Feed.Acct.mastodon( + domain: domain, + userID: userID + ) + + let predicate: NSPredicate = { + switch scope { + case .everything: + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + Feed.hasNotificationPredicate(), + Feed.predicate( + kind: .notificationAll, + acct: acct + ) + ]) + case .mentions: + return NSCompoundPredicate(andPredicateWithSubpredicates: [ + Feed.hasNotificationPredicate(), + Feed.predicate( + kind: .notificationMentions, + acct: acct + ), + Feed.notificationTypePredicate(types: scope.includeTypes ?? []) + ]) + } + }() + return predicate + } + +} + +extension NotificationTimelineViewModel { + + // load lastest + func loadLatest() async { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + do { + _ = try await context.apiService.notifications( + maxID: nil, + scope: scope, + authenticationBox: authenticationBox + ) + } catch { + didLoadLatest.send() + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): \(error.localizedDescription)") + } + } + +} diff --git a/Mastodon/Scene/Notification/NotificationViewController+StatusProvider.swift b/Mastodon/Scene/Notification/NotificationViewController+StatusProvider.swift deleted file mode 100644 index 57272404e..000000000 --- a/Mastodon/Scene/Notification/NotificationViewController+StatusProvider.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// NotificationViewController+StatusProvider.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-7-1. -// - -import UIKit -import Combine -import CoreData -import CoreDataStack - -extension NotificationViewController: StatusProvider { - func status() -> Future { - return Future { promise in - promise(.success(nil)) - } - } - - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future { - return Future { promise in - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - switch item { - case .notification(let objectID, _), - .notificationStatus(let objectID, _): - self.viewModel.fetchedResultsController.managedObjectContext.perform { - let notification = self.viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! MastodonNotification - promise(.success(notification.status)) - } - case .bottomLoader: - promise(.success(nil)) - } - } - } - - func status(for cell: UICollectionViewCell) -> Future { - return Future { promise in - promise(.success(nil)) - } - } - - var managedObjectContext: NSManagedObjectContext { - viewModel.fetchedResultsController.managedObjectContext - } - - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { - return nil - } - - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? { - return nil - } - - func items(indexPaths: [IndexPath]) -> [Item] { - return [] - } - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return [] } - let items = indexPaths.compactMap { diffableDataSource.itemIdentifier(for: $0)?.statusObjectItem } - return items - } - -} - -// MARK: - UserProvider -extension NotificationViewController: UserProvider { } diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 0567d04dd..85e534cb6 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -5,18 +5,17 @@ // Created by sxiaojian on 2021/4/12. // -import Combine -import CoreData -import CoreDataStack -import GameplayKit -import MastodonSDK -import OSLog +import os.log import UIKit -import Meta -import MetaTextKit -import AVKit +import Combine +import MastodonAsset +import MastodonLocalization +import Tabman +import Pageboy -final class NotificationViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { +final class NotificationViewController: TabmanViewController, NeedsDependency { + + let logger = Logger(subsystem: "NotificationViewController", category: "ViewController") weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -26,27 +25,23 @@ final class NotificationViewController: UIViewController, NeedsDependency, Media private(set) lazy var viewModel = NotificationViewModel(context: context) - let mediaPreviewTransitionController = MediaPreviewTransitionController() + let pageSegmentedControl = UISegmentedControl() - let segmentControl: UISegmentedControl = { - let control = UISegmentedControl(items: [L10n.Scene.Notification.Title.everything, L10n.Scene.Notification.Title.mentions]) - control.selectedSegmentIndex = NotificationViewModel.NotificationSegment.everyThing.rawValue - return control - }() - - let tableView: UITableView = { - let tableView = ControlContainableTableView() - tableView.register(StatusTableViewCell.self, forCellReuseIdentifier: String(describing: StatusTableViewCell.self)) - tableView.register(NotificationStatusTableViewCell.self, forCellReuseIdentifier: String(describing: NotificationStatusTableViewCell.self)) - tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) - tableView.estimatedRowHeight = UITableView.automaticDimension - tableView.separatorStyle = .none - tableView.tableFooterView = UIView() - tableView.backgroundColor = .clear - return tableView - }() - - let refreshControl = UIRefreshControl() + override func pageboyViewController( + _ pageboyViewController: PageboyViewController, + didScrollToPageAt index: TabmanViewController.PageIndex, + direction: PageboyViewController.NavigationDirection, + animated: Bool + ) { + super.pageboyViewController( + pageboyViewController, + didScrollToPageAt: index, + direction: direction, + animated: animated + ) + + viewModel.currentPageIndex = index + } deinit { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) @@ -65,539 +60,572 @@ extension NotificationViewController { self.view.backgroundColor = theme.secondarySystemBackgroundColor } .store(in: &disposeBag) - segmentControl.translatesAutoresizingMaskIntoConstraints = false - navigationItem.titleView = segmentControl - NSLayoutConstraint.activate([ - segmentControl.widthAnchor.constraint(equalToConstant: 287) - ]) - segmentControl.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .valueChanged) - - tableView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) - - tableView.refreshControl = refreshControl - refreshControl.addTarget(self, action: #selector(NotificationViewController.refreshControlValueChanged(_:)), for: .valueChanged) - - tableView.delegate = self - viewModel.tableView = tableView - viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self - viewModel.setupDiffableDataSource( - for: tableView, - dependency: self, - delegate: self, - statusTableViewCellDelegate: self - ) - viewModel.viewDidLoad.send() - // bind refresh control - viewModel.isFetchingLatestNotification - .receive(on: DispatchQueue.main) - .sink { [weak self] isFetching in - guard let self = self else { return } - if !isFetching { - UIView.animate(withDuration: 0.5) { [weak self] in - guard let self = self else { return } - self.refreshControl.endRefreshing() - } - } - } - .store(in: &disposeBag) + setupSegmentedControl(scopes: viewModel.scopes) + pageSegmentedControl.translatesAutoresizingMaskIntoConstraints = false + navigationItem.titleView = pageSegmentedControl + NSLayoutConstraint.activate([ + pageSegmentedControl.widthAnchor.constraint(greaterThanOrEqualToConstant: 287) + ]) + pageSegmentedControl.addTarget(self, action: #selector(NotificationViewController.pageSegmentedControlValueChanged(_:)), for: .valueChanged) - viewModel.dataSourceDidUpdated - .receive(on: RunLoop.main) - .sink { [weak self] in - guard let self = self else { return } - guard self.viewModel.needsScrollToTopAfterDataSourceUpdate else { return } - self.viewModel.needsScrollToTopAfterDataSourceUpdate = false - DispatchQueue.main.asyncAfter(deadline: .now() + 0.33) { - self.scrollToTop(animated: true) - } - } - .store(in: &disposeBag) - - viewModel.selectedIndex - .removeDuplicates() + dataSource = viewModel + viewModel.$viewControllers .receive(on: DispatchQueue.main) - .sink { [weak self] segment in + .sink { [weak self] viewControllers in guard let self = self else { return } - self.segmentControl.selectedSegmentIndex = segment.rawValue - - // trigger scroll-to-top after data reload - self.viewModel.needsScrollToTopAfterDataSourceUpdate = true + self.reloadData() + self.bounces = viewControllers.count > 1 - guard let domain = self.viewModel.activeMastodonAuthenticationBox.value?.domain, let userID = self.viewModel.activeMastodonAuthenticationBox.value?.userID else { - return - } - - self.viewModel.needsScrollToTopAfterDataSourceUpdate = true - - switch segment { - case .everyThing: - self.viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) - case .mentions: - self.viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID, typeRaw: Mastodon.Entity.Notification.NotificationType.mention.rawValue) + } + .store(in: &disposeBag) + + viewModel.viewControllers = viewModel.scopes.map { scope in + createViewController(for: scope) + } + + viewModel.$currentPageIndex + .receive(on: DispatchQueue.main) + .sink { [weak self] currentPageIndex in + guard let self = self else { return } + if self.pageSegmentedControl.selectedSegmentIndex != currentPageIndex { + self.pageSegmentedControl.selectedSegmentIndex = currentPageIndex } } .store(in: &disposeBag) - - segmentControl.observe(\.selectedSegmentIndex, options: [.new]) { [weak self] segmentControl, _ in - guard let self = self else { return } - // scroll to top when select same segment - if segmentControl.selectedSegmentIndex == self.viewModel.selectedIndex.value.rawValue { - self.scrollToTop(animated: true) - } - } - .store(in: &observations) + +// segmentControl.translatesAutoresizingMaskIntoConstraints = false +// navigationItem.titleView = segmentControl +// NSLayoutConstraint.activate([ +// segmentControl.widthAnchor.constraint(equalToConstant: 287) +// ]) +// segmentControl.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .valueChanged) +// +// tableView.translatesAutoresizingMaskIntoConstraints = false +// view.addSubview(tableView) +// NSLayoutConstraint.activate([ +// tableView.topAnchor.constraint(equalTo: view.topAnchor), +// tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), +// tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), +// tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), +// ]) +// +// tableView.refreshControl = refreshControl +// refreshControl.addTarget(self, action: #selector(NotificationViewController.refreshControlValueChanged(_:)), for: .valueChanged) +// +// tableView.delegate = self +// viewModel.tableView = tableView +// viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self +// viewModel.setupDiffableDataSource( +// for: tableView, +// dependency: self, +// delegate: self, +// statusTableViewCellDelegate: self +// ) +// viewModel.viewDidLoad.send() +// +// // bind refresh control +// viewModel.isFetchingLatestNotification +// .receive(on: DispatchQueue.main) +// .sink { [weak self] isFetching in +// guard let self = self else { return } +// if !isFetching { +// UIView.animate(withDuration: 0.5) { [weak self] in +// guard let self = self else { return } +// self.refreshControl.endRefreshing() +// } +// } +// } +// .store(in: &disposeBag) +// +// viewModel.dataSourceDidUpdated +// .receive(on: RunLoop.main) +// .sink { [weak self] in +// guard let self = self else { return } +// guard self.viewModel.needsScrollToTopAfterDataSourceUpdate else { return } +// self.viewModel.needsScrollToTopAfterDataSourceUpdate = false +// DispatchQueue.main.asyncAfter(deadline: .now() + 0.33) { +// self.scrollToTop(animated: true) +// } +// } +// .store(in: &disposeBag) +// +// viewModel.selectedIndex +// .removeDuplicates() +// .receive(on: DispatchQueue.main) +// .sink { [weak self] segment in +// guard let self = self else { return } +// self.segmentControl.selectedSegmentIndex = segment.rawValue +// +// // trigger scroll-to-top after data reload +// self.viewModel.needsScrollToTopAfterDataSourceUpdate = true +// +// guard let domain = self.viewModel.activeMastodonAuthenticationBox.value?.domain, let userID = self.viewModel.activeMastodonAuthenticationBox.value?.userID else { +// return +// } +// +// self.viewModel.needsScrollToTopAfterDataSourceUpdate = true +// +// switch segment { +// case .everyThing: +// self.viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) +// case .mentions: +// self.viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID, typeRaw: Mastodon.Entity.Notification.NotificationType.mention.rawValue) +// } +// } +// .store(in: &disposeBag) +// +// segmentControl.observe(\.selectedSegmentIndex, options: [.new]) { [weak self] segmentControl, _ in +// guard let self = self else { return } +// // scroll to top when select same segment +// if segmentControl.selectedSegmentIndex == self.viewModel.selectedIndex.value.rawValue { +// self.scrollToTop(animated: true) +// } +// } +// .store(in: &observations) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - aspectViewWillAppear(animated) +// aspectViewWillAppear(animated) // fetch latest notification when scroll position is within half screen height to prevent list reload - if tableView.contentOffset.y < view.frame.height * 0.5 { - viewModel.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) - } +// if tableView.contentOffset.y < view.frame.height * 0.5 { +// viewModel.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) +// } // needs trigger manually after onboarding dismiss - setNeedsStatusBarAppearanceUpdate() +// setNeedsStatusBarAppearanceUpdate() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - if (self.viewModel.fetchedResultsController.fetchedObjects ?? []).count == 0 { - self.viewModel.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) - } - } - - // reset notification count - context.notificationService.clearNotificationCountForActiveUser() +// DispatchQueue.main.async { [weak self] in +// guard let self = self else { return } +// if (self.viewModel.fetchedResultsController.fetchedObjects ?? []).count == 0 { +//// self.viewModel.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) +// } +// } +// +// // reset notification count +// context.notificationService.clearNotificationCountForActiveUser() } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) - // reset notification count - context.notificationService.clearNotificationCountForActiveUser() +// // reset notification count +// context.notificationService.clearNotificationCountForActiveUser() } override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) - aspectViewDidDisappear(animated) - } - - override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { - super.viewWillTransition(to: size, with: coordinator) - - coordinator.animate { _ in - // do nothing - } completion: { _ in - self.tableView.reloadData() - } +// aspectViewDidDisappear(animated) } } extension NotificationViewController { - @objc private func segmentedControlValueChanged(_ sender: UISegmentedControl) { - os_log("%{public}s[%{public}ld], %{public}s: select at index: %ld", (#file as NSString).lastPathComponent, #line, #function, sender.selectedSegmentIndex) - - viewModel.selectedIndex.value = NotificationViewModel.NotificationSegment(rawValue: sender.selectedSegmentIndex)! - } - - @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { - guard viewModel.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) else { - sender.endRefreshing() - return + private func setupSegmentedControl(scopes: [NotificationTimelineViewModel.Scope]) { + pageSegmentedControl.removeAllSegments() + for (i, scope) in scopes.enumerated() { + pageSegmentedControl.insertSegment(withTitle: scope.title, at: i, animated: false) } + + // set initial selection + guard !pageSegmentedControl.isSelected else { return } + if viewModel.currentPageIndex < pageSegmentedControl.numberOfSegments { + pageSegmentedControl.selectedSegmentIndex = viewModel.currentPageIndex + } else { + pageSegmentedControl.selectedSegmentIndex = 0 + } + } + + private func createViewController(for scope: NotificationTimelineViewModel.Scope) -> UIViewController { + let viewController = NotificationTimelineViewController() + viewController.context = context + viewController.coordinator = coordinator + viewController.viewModel = NotificationTimelineViewModel( + context: context, + scope: scope + ) + return viewController } } -// MARK: - TableViewCellHeightCacheableContainer -extension NotificationViewController: TableViewCellHeightCacheableContainer { - var cellFrameCache: NSCache { return viewModel.cellFrameCache } - - func cacheTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - switch item { - case .notification(let objectID, _), - .notificationStatus(let objectID, _): - guard let object = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return } - let key = object.objectID.hashValue - let frame = cell.frame - viewModel.cellFrameCache.setObject(NSValue(cgRect: frame), forKey: NSNumber(value: key)) - case .bottomLoader: - break - } - } - - func handleTableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - guard let diffableDataSource = viewModel.diffableDataSource else { return UITableView.automaticDimension } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return UITableView.automaticDimension } - switch item { - case .notification(let objectID, _), - .notificationStatus(let objectID, _): - guard let object = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return UITableView.automaticDimension } - let key = object.objectID.hashValue - guard let frame = viewModel.cellFrameCache.object(forKey: NSNumber(value: key))?.cgRectValue else { return UITableView.automaticDimension } - return frame.height - case .bottomLoader: - return TimelineLoaderTableViewCell.cellHeight - } +extension NotificationViewController { + @objc private func pageSegmentedControlValueChanged(_ sender: UISegmentedControl) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + + let index = sender.selectedSegmentIndex + scrollToPage(.at(index: index), animated: true, completion: nil) } } -// MARK: - StatusTableViewControllerAspect -extension NotificationViewController: StatusTableViewControllerAspect { } +//// MARK: - TableViewCellHeightCacheableContainer +//extension NotificationViewController: TableViewCellHeightCacheableContainer { +// var cellFrameCache: NSCache { return viewModel.cellFrameCache } +// +// func cacheTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } +// switch item { +// case .notification(let objectID, _), +// .notificationStatus(let objectID, _): +// guard let object = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return } +// let key = object.objectID.hashValue +// let frame = cell.frame +// viewModel.cellFrameCache.setObject(NSValue(cgRect: frame), forKey: NSNumber(value: key)) +// case .bottomLoader: +// break +// } +// } +// +// func handleTableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { +// guard let diffableDataSource = viewModel.diffableDataSource else { return UITableView.automaticDimension } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return UITableView.automaticDimension } +// switch item { +// case .notification(let objectID, _), +// .notificationStatus(let objectID, _): +// guard let object = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return UITableView.automaticDimension } +// let key = object.objectID.hashValue +// guard let frame = viewModel.cellFrameCache.object(forKey: NSNumber(value: key))?.cgRectValue else { return UITableView.automaticDimension } +// return frame.height +// case .bottomLoader: +// return TimelineLoaderTableViewCell.cellHeight +// } +// } +//} // MARK: - UITableViewDelegate extension NotificationViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - aspectTableView(tableView, estimatedHeightForRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - switch item { - case .notificationStatus: - aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) - case .bottomLoader: - if !tableView.isDragging, !tableView.isDecelerating { - viewModel.loadOldestStateMachine.enter(NotificationViewModel.LoadOldestState.Loading.self) - } - default: - break - } - } - - func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - aspectTableView(tableView, didSelectRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { - return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) - } - - func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) - } - - func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) - } - - func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { - aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) - } +// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { +// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } +// switch item { +// case .notificationStatus: +// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) +// case .bottomLoader: +// if !tableView.isDragging, !tableView.isDecelerating { +// viewModel.loadOldestStateMachine.enter(NotificationViewModel.LoadOldestState.Loading.self) +// } +// default: +// break +// } +// } +// +// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didSelectRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { +// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +// } +// +// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { +// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +// } } -extension NotificationViewController { - private func open(item: NotificationItem) { - switch item { - case .notification(let objectID, _): - let notification = context.managedObjectContext.object(with: objectID) as! MastodonNotification - if let status = notification.status { - let viewModel = ThreadViewModel(context: context, optionalStatus: status) - coordinator.present(scene: .thread(viewModel: viewModel), from: self, transition: .show) - } else { - let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) - coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) - } - default: - break - } - } -} - -// MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate - -extension NotificationViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { - func navigationBar() -> UINavigationBar? { - navigationController?.navigationBar - } -} +//extension NotificationViewController { +// private func open(item: NotificationItem) { +// switch item { +// case .notification(let objectID, _): +// let notification = context.managedObjectContext.object(with: objectID) as! MastodonNotification +// if let status = notification.status { +// let viewModel = ThreadViewModel( +// context: context, +// optionalRoot: .root(context: .init(status: status.asRecord)) +// ) +// coordinator.present(scene: .thread(viewModel: viewModel), from: self, transition: .show) +// } else { +// let viewModel = ProfileViewModel( +// context: context, +// optionalMastodonUser: notification.account +// ) +// coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) +// } +// default: +// break +// } +// } +//} // MARK: - NotificationTableViewCellDelegate -extension NotificationViewController: NotificationTableViewCellDelegate { - - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, avatarImageViewDidPressed imageView: UIImageView) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let indexPath = tableView.indexPath(for: cell) else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - switch item { - case .notification(let objectID, _): - guard let notification = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return } - let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) - coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) - default: - break - } - } - - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, authorNameLabelDidPressed label: MetaLabel) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let indexPath = tableView.indexPath(for: cell) else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - switch item { - case .notification(let objectID, _): - guard let notification = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return } - let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) - coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) - default: - break - } - } - - func notificationTableViewCell(_ cell: NotificationStatusTableViewCell, notification: MastodonNotification, acceptButtonDidPressed button: UIButton) { - viewModel.acceptFollowRequest(notification: notification) - } - - func notificationTableViewCell(_ cell: NotificationStatusTableViewCell, notification: MastodonNotification, rejectButtonDidPressed button: UIButton) { - viewModel.rejectFollowRequest(notification: notification) - } - - func userNameLabelDidPressed(notification: MastodonNotification) { - let viewModel = CachedProfileViewModel(context: context, mastodonUser: notification.account) - DispatchQueue.main.async { - self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) - } - } - - func parent() -> UIViewController { - self - } - - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { - StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) - } - - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) - } - - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) - } - - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { - StatusProviderFacade.responseToStatusMetaTextAction(provider: self, cell: cell, metaText: metaText, didSelectMeta: meta) - } -} +//extension NotificationViewController: NotificationTableViewCellDelegate { +// +// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, avatarImageViewDidPressed imageView: UIImageView) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// guard let indexPath = tableView.indexPath(for: cell) else { return } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } +// switch item { +// case .notification(let objectID, _): +// guard let notification = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return } +// let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) +// coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) +// default: +// break +// } +// } +// +// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, authorNameLabelDidPressed label: MetaLabel) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// guard let indexPath = tableView.indexPath(for: cell) else { return } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } +// switch item { +// case .notification(let objectID, _): +// guard let notification = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return } +// let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) +// coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) +// default: +// break +// } +// } +// +// func notificationTableViewCell(_ cell: NotificationStatusTableViewCell, notification: MastodonNotification, acceptButtonDidPressed button: UIButton) { +// viewModel.acceptFollowRequest(notification: notification) +// } +// +// func notificationTableViewCell(_ cell: NotificationStatusTableViewCell, notification: MastodonNotification, rejectButtonDidPressed button: UIButton) { +// viewModel.rejectFollowRequest(notification: notification) +// } +// +// func userNameLabelDidPressed(notification: MastodonNotification) { +// let viewModel = CachedProfileViewModel(context: context, mastodonUser: notification.account) +// DispatchQueue.main.async { +// self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) +// } +// } +// +// func parent() -> UIViewController { +// self +// } +// +// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { +// StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) +// } +// +// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { +// StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) +// } +// +// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { +// StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) +// } +// +// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { +// StatusProviderFacade.responseToStatusMetaTextAction(provider: self, cell: cell, metaText: metaText, didSelectMeta: meta) +// } +//} // MARK: - UIScrollViewDelegate -extension NotificationViewController { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - handleScrollViewDidScroll(scrollView) - } -} +//extension NotificationViewController { +// func scrollViewDidScroll(_ scrollView: UIScrollView) { +// handleScrollViewDidScroll(scrollView) +// } +//} // MARK: - ScrollViewContainer -extension NotificationViewController: ScrollViewContainer { - - var scrollView: UIScrollView { tableView } - - func scrollToTop(animated: Bool) { - let indexPath = IndexPath(row: 0, section: 0) - guard viewModel.diffableDataSource?.itemIdentifier(for: indexPath) != nil else { return } - tableView.scrollToRow(at: indexPath, at: .top, animated: true) - } -} - -// MARK: - LoadMoreConfigurableTableViewContainer -extension NotificationViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell - typealias LoadingState = NotificationViewModel.LoadOldestState.Loading - var loadMoreConfigurableTableView: UITableView { tableView } - var loadMoreConfigurableStateMachine: GKStateMachine { viewModel.loadOldestStateMachine } -} +//extension NotificationViewController: ScrollViewContainer { +// +// var scrollView: UIScrollView { tableView } +// +// func scrollToTop(animated: Bool) { +// let indexPath = IndexPath(row: 0, section: 0) +// guard viewModel.diffableDataSource?.itemIdentifier(for: indexPath) != nil else { return } +// tableView.scrollToRow(at: indexPath, at: .top, animated: true) +// } +//} // MARK: - AVPlayerViewControllerDelegate -extension NotificationViewController: AVPlayerViewControllerDelegate { - func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } - - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } -} +//extension NotificationViewController: AVPlayerViewControllerDelegate { +// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +//} -// MARK: - statusTableViewCellDelegate -extension NotificationViewController: StatusTableViewCellDelegate { - var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { - return self - } -} +//// MARK: - statusTableViewCellDelegate +//extension NotificationViewController: StatusTableViewCellDelegate { +// var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { +// return self +// } +//} -extension NotificationViewController { - - enum CategorySwitch: String, CaseIterable { - case showEverything - case showMentions - - var title: String { - switch self { - case .showEverything: return L10n.Scene.Notification.Keyobard.showEverything - case .showMentions: return L10n.Scene.Notification.Keyobard.showMentions - } - } - - // UIKeyCommand input - var input: String { - switch self { - case .showEverything: return "[" // + shift + command - case .showMentions: return "]" // + shift + command - } - } - - var modifierFlags: UIKeyModifierFlags { - switch self { - case .showEverything: return [.shift, .command] - case .showMentions: return [.shift, .command] - } - } - - var propertyList: Any { - return rawValue - } - } - - var categorySwitchKeyCommands: [UIKeyCommand] { - CategorySwitch.allCases.map { category in - UIKeyCommand( - title: category.title, - image: nil, - action: #selector(NotificationViewController.showCategory(_:)), - input: category.input, - modifierFlags: category.modifierFlags, - propertyList: category.propertyList, - alternates: [], - discoverabilityTitle: nil, - attributes: [], - state: .off - ) - } - } +//extension NotificationViewController { +// +// enum CategorySwitch: String, CaseIterable { +// case showEverything +// case showMentions +// +// var title: String { +// switch self { +// case .showEverything: return L10n.Scene.Notification.Keyobard.showEverything +// case .showMentions: return L10n.Scene.Notification.Keyobard.showMentions +// } +// } +// +// // UIKeyCommand input +// var input: String { +// switch self { +// case .showEverything: return "[" // + shift + command +// case .showMentions: return "]" // + shift + command +// } +// } +// +// var modifierFlags: UIKeyModifierFlags { +// switch self { +// case .showEverything: return [.shift, .command] +// case .showMentions: return [.shift, .command] +// } +// } +// +// var propertyList: Any { +// return rawValue +// } +// } +// +// var categorySwitchKeyCommands: [UIKeyCommand] { +// CategorySwitch.allCases.map { category in +// UIKeyCommand( +// title: category.title, +// image: nil, +// action: #selector(NotificationViewController.showCategory(_:)), +// input: category.input, +// modifierFlags: category.modifierFlags, +// propertyList: category.propertyList, +// alternates: [], +// discoverabilityTitle: nil, +// attributes: [], +// state: .off +// ) +// } +// } +// +// @objc private func showCategory(_ sender: UIKeyCommand) { +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) +// guard let rawValue = sender.propertyList as? String, +// let category = CategorySwitch(rawValue: rawValue) else { return } +// +// switch category { +// case .showEverything: +// viewModel.selectedIndex.value = .everyThing +// case .showMentions: +// viewModel.selectedIndex.value = .mentions +// } +// } +// +// override var keyCommands: [UIKeyCommand]? { +// return categorySwitchKeyCommands + navigationKeyCommands +// } +//} - @objc private func showCategory(_ sender: UIKeyCommand) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - guard let rawValue = sender.propertyList as? String, - let category = CategorySwitch(rawValue: rawValue) else { return } - - switch category { - case .showEverything: - viewModel.selectedIndex.value = .everyThing - case .showMentions: - viewModel.selectedIndex.value = .mentions - } - } - - override var keyCommands: [UIKeyCommand]? { - return categorySwitchKeyCommands + navigationKeyCommands - } -} - -extension NotificationViewController: TableViewControllerNavigateable { - - func navigate(direction: TableViewNavigationDirection) { - if let indexPathForSelectedRow = tableView.indexPathForSelectedRow { - // navigate up/down on the current selected item - navigateToStatus(direction: direction, indexPath: indexPathForSelectedRow) - } else { - // set first visible item selected - navigateToFirstVisibleStatus() - } - } - - private func navigateToStatus(direction: TableViewNavigationDirection, indexPath: IndexPath) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - let items = diffableDataSource.snapshot().itemIdentifiers - guard let selectedItem = diffableDataSource.itemIdentifier(for: indexPath), - let selectedItemIndex = items.firstIndex(of: selectedItem) else { - return - } - - let _navigateToItem: NotificationItem? = { - var index = selectedItemIndex - while 0.. 1 { - // drop first when visible not the first cell of table - visibleItems.removeFirst() - } - guard let item = visibleItems.first, let indexPath = diffableDataSource.indexPath(for: item) else { return } - let scrollPosition: UITableView.ScrollPosition = overrideNavigationScrollPosition ?? Self.navigateScrollPosition(tableView: tableView, indexPath: indexPath) - tableView.selectRow(at: indexPath, animated: true, scrollPosition: scrollPosition) - } - - static func validNavigateableItem(_ item: NotificationItem) -> Bool { - switch item { - case .notification: - return true - default: - return false - } - } - - func open() { - guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPathForSelectedRow) else { return } - open(item: item) - } - - func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - navigateKeyCommandHandler(sender) - } - -} +//extension NotificationViewController: TableViewControllerNavigateable { +// +// func navigate(direction: TableViewNavigationDirection) { +// if let indexPathForSelectedRow = tableView.indexPathForSelectedRow { +// // navigate up/down on the current selected item +// navigateToStatus(direction: direction, indexPath: indexPathForSelectedRow) +// } else { +// // set first visible item selected +// navigateToFirstVisibleStatus() +// } +// } +// +// private func navigateToStatus(direction: TableViewNavigationDirection, indexPath: IndexPath) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// let items = diffableDataSource.snapshot().itemIdentifiers +// guard let selectedItem = diffableDataSource.itemIdentifier(for: indexPath), +// let selectedItemIndex = items.firstIndex(of: selectedItem) else { +// return +// } +// +// let _navigateToItem: NotificationItem? = { +// var index = selectedItemIndex +// while 0.. 1 { +// // drop first when visible not the first cell of table +// visibleItems.removeFirst() +// } +// guard let item = visibleItems.first, let indexPath = diffableDataSource.indexPath(for: item) else { return } +// let scrollPosition: UITableView.ScrollPosition = overrideNavigationScrollPosition ?? Self.navigateScrollPosition(tableView: tableView, indexPath: indexPath) +// tableView.selectRow(at: indexPath, animated: true, scrollPosition: scrollPosition) +// } +// +// static func validNavigateableItem(_ item: NotificationItem) -> Bool { +// switch item { +// case .notification: +// return true +// default: +// return false +// } +// } +// +// func open() { +// guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// guard let item = diffableDataSource.itemIdentifier(for: indexPathForSelectedRow) else { return } +// open(item: item) +// } +// +// func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// navigateKeyCommandHandler(sender) +// } +// +//} diff --git a/Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift index 6c7a70e43..943db00b0 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift @@ -11,107 +11,84 @@ import os.log import UIKit import MastodonSDK -extension NotificationViewModel { - func setupDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, - delegate: NotificationTableViewCellDelegate, - statusTableViewCellDelegate: StatusTableViewCellDelegate - ) { - diffableDataSource = NotificationSection.tableViewDiffableDataSource( - for: tableView, - dependency: dependency, - managedObjectContext: fetchedResultsController.managedObjectContext, - delegate: delegate, - statusTableViewCellDelegate: statusTableViewCellDelegate - ) - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - diffableDataSource.apply(snapshot) - // workaround to append loader wrong animation issue - snapshot.appendItems([.bottomLoader], toSection: .main) - diffableDataSource.apply(snapshot) - } -} - -extension NotificationViewModel: NSFetchedResultsControllerDelegate { - func controllerWillChangeContent(_ controller: NSFetchedResultsController) { - os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) - } - - func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { - os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) - - guard let tableView = self.tableView else { return } - guard let navigationBar = contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } - - guard let diffableDataSource = self.diffableDataSource else { return } - - let predicate: NSPredicate = { - let notificationTypePredicate = MastodonNotification.predicate( - validTypesRaws: Mastodon.Entity.Notification.NotificationType.knownCases.map { $0.rawValue } - ) - return fetchedResultsController.fetchRequest.predicate.flatMap { - NSCompoundPredicate(andPredicateWithSubpredicates: [$0, notificationTypePredicate]) - } ?? notificationTypePredicate - }() - let parentManagedObjectContext = fetchedResultsController.managedObjectContext - let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) - managedObjectContext.parent = parentManagedObjectContext - - managedObjectContext.perform { - let notifications: [MastodonNotification] = { - let request = MastodonNotification.sortedFetchRequest - request.returnsObjectsAsFaults = false - request.predicate = predicate - do { - return try managedObjectContext.fetch(request) - } catch { - assertionFailure(error.localizedDescription) - return [] - } - }() - - DispatchQueue.main.async { - let oldSnapshot = diffableDataSource.snapshot() - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] - for item in oldSnapshot.itemIdentifiers { - guard case let .notification(objectID, attribute) = item else { continue } - oldSnapshotAttributeDict[objectID] = attribute - } - var newSnapshot = NSDiffableDataSourceSnapshot() - newSnapshot.appendSections([.main]) - - let segment = self.selectedIndex.value - switch segment { - case .everyThing: - let items: [NotificationItem] = notifications.map { notification in - let attribute: Item.StatusAttribute = oldSnapshotAttributeDict[notification.objectID] ?? Item.StatusAttribute() - return NotificationItem.notification(objectID: notification.objectID, attribute: attribute) - } - newSnapshot.appendItems(items, toSection: .main) - case .mentions: - let items: [NotificationItem] = notifications.map { notification in - let attribute: Item.StatusAttribute = oldSnapshotAttributeDict[notification.objectID] ?? Item.StatusAttribute() - return NotificationItem.notificationStatus(objectID: notification.objectID, attribute: attribute) - } - newSnapshot.appendItems(items, toSection: .main) - } - - if !notifications.isEmpty, self.noMoreNotification.value == false { - newSnapshot.appendItems([.bottomLoader], toSection: .main) - } - - self.isFetchingLatestNotification.value = false - - diffableDataSource.apply(newSnapshot, animatingDifferences: false) { [weak self] in - guard let self = self else { return } - self.dataSourceDidUpdated.send() - } - } - } - } - -} +//extension NotificationViewModel: NSFetchedResultsControllerDelegate { +// func controllerWillChangeContent(_ controller: NSFetchedResultsController) { +// os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) +// } +// +// func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { +// os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) +// +// guard let tableView = self.tableView else { return } +// guard let navigationBar = contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } +// +// guard let diffableDataSource = self.diffableDataSource else { return } +// +// let predicate: NSPredicate = { +// let notificationTypePredicate = MastodonNotification.predicate( +// validTypesRaws: Mastodon.Entity.Notification.NotificationType.knownCases.map { $0.rawValue } +// ) +// return fetchedResultsController.fetchRequest.predicate.flatMap { +// NSCompoundPredicate(andPredicateWithSubpredicates: [$0, notificationTypePredicate]) +// } ?? notificationTypePredicate +// }() +// let parentManagedObjectContext = fetchedResultsController.managedObjectContext +// let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) +// managedObjectContext.parent = parentManagedObjectContext +// +// managedObjectContext.perform { +// let notifications: [MastodonNotification] = { +// let request = MastodonNotification.sortedFetchRequest +// request.returnsObjectsAsFaults = false +// request.predicate = predicate +// do { +// return try managedObjectContext.fetch(request) +// } catch { +// assertionFailure(error.localizedDescription) +// return [] +// } +// }() +// +// DispatchQueue.main.async { +// let oldSnapshot = diffableDataSource.snapshot() +// var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] +// for item in oldSnapshot.itemIdentifiers { +// guard case let .notification(objectID, attribute) = item else { continue } +// oldSnapshotAttributeDict[objectID] = attribute +// } +// var newSnapshot = NSDiffableDataSourceSnapshot() +// newSnapshot.appendSections([.main]) +// +// let segment = self.selectedIndex.value +// switch segment { +// case .everyThing: +// let items: [NotificationItem] = notifications.map { notification in +// let attribute: Item.StatusAttribute = oldSnapshotAttributeDict[notification.objectID] ?? Item.StatusAttribute() +// return NotificationItem.notification(objectID: notification.objectID, attribute: attribute) +// } +// newSnapshot.appendItems(items, toSection: .main) +// case .mentions: +// let items: [NotificationItem] = notifications.map { notification in +// let attribute: Item.StatusAttribute = oldSnapshotAttributeDict[notification.objectID] ?? Item.StatusAttribute() +// return NotificationItem.notificationStatus(objectID: notification.objectID, attribute: attribute) +// } +// newSnapshot.appendItems(items, toSection: .main) +// } +// +// if !notifications.isEmpty, self.noMoreNotification.value == false { +// newSnapshot.appendItems([.bottomLoader], toSection: .main) +// } +// +// self.isFetchingLatestNotification.value = false +// +// diffableDataSource.apply(newSnapshot, animatingDifferences: false) { [weak self] in +// guard let self = self else { return } +// self.dataSourceDidUpdated.send() +// } +// } +// } +// } +// +//} diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift deleted file mode 100644 index dac7bb7d3..000000000 --- a/Mastodon/Scene/Notification/NotificationViewModel+LoadLatestState.swift +++ /dev/null @@ -1,95 +0,0 @@ -// -// NotificationViewModel+LoadLatestState.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/13. -// - -import CoreData -import CoreDataStack -import Foundation -import GameplayKit -import MastodonSDK -import os.log -import func QuartzCore.CACurrentMediaTime - -extension NotificationViewModel { - class LoadLatestState: GKState { - weak var viewModel: NotificationViewModel? - - init(viewModel: NotificationViewModel) { - self.viewModel = viewModel - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", (#file as NSString).lastPathComponent, #line, #function, debugDescription, previousState.debugDescription) - viewModel?.loadLatestStateMachinePublisher.send(self) - } - } -} - -extension NotificationViewModel.LoadLatestState { - class Initial: NotificationViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - stateClass == Loading.self - } - } - - class Loading: NotificationViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - stateClass == Fail.self || stateClass == Idle.self - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.activeMastodonAuthenticationBox.value else { - // sign out when loading will enter here - stateMachine.enter(Fail.self) - return - } - let query = Mastodon.API.Notifications.Query( - maxID: nil, - sinceID: nil, - minID: nil, - limit: nil, - excludeTypes: [], - accountID: nil - ) - viewModel.context.apiService.allNotifications( - domain: activeMastodonAuthenticationBox.domain, - query: query, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .sink { completion in - switch completion { - case .failure(let error): - viewModel.isFetchingLatestNotification.value = false - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch notification failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break - } - - stateMachine.enter(Idle.self) - } receiveValue: { response in - if response.value.isEmpty { - viewModel.isFetchingLatestNotification.value = false - } - } - .store(in: &viewModel.disposeBag) - } - } - - class Fail: NotificationViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - stateClass == Loading.self || stateClass == Idle.self - } - } - - class Idle: NotificationViewModel.LoadLatestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - stateClass == Loading.self - } - } -} diff --git a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift b/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift deleted file mode 100644 index bf2c03174..000000000 --- a/Mastodon/Scene/Notification/NotificationViewModel+LoadOldestState.swift +++ /dev/null @@ -1,146 +0,0 @@ -// -// NotificationViewModel+LoadOldestState.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/14. -// - -import CoreDataStack -import Foundation -import GameplayKit -import MastodonSDK -import os.log - -extension NotificationViewModel { - class LoadOldestState: GKState { - weak var viewModel: NotificationViewModel? - - init(viewModel: NotificationViewModel) { - self.viewModel = viewModel - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", (#file as NSString).lastPathComponent, #line, #function, debugDescription, previousState.debugDescription) - viewModel?.loadOldestStateMachinePublisher.send(self) - } - } -} - -extension NotificationViewModel.LoadOldestState { - class Initial: NotificationViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - guard let viewModel = viewModel else { return false } - guard !(viewModel.fetchedResultsController.fetchedObjects ?? []).isEmpty else { return false } - return stateClass == Loading.self - } - } - - class Loading: NotificationViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - stateClass == Fail.self || stateClass == Idle.self || stateClass == NoMore.self - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.activeMastodonAuthenticationBox.value else { - assertionFailure() - stateMachine.enter(Fail.self) - return - } - let notifications: [MastodonNotification]? = { - let request = MastodonNotification.sortedFetchRequest - request.predicate = MastodonNotification.predicate(domain: activeMastodonAuthenticationBox.domain, userID: activeMastodonAuthenticationBox.userID) - request.returnsObjectsAsFaults = false - do { - return try self.viewModel?.context.managedObjectContext.fetch(request) - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - - guard let last = notifications?.last else { - stateMachine.enter(Idle.self) - return - } - - let maxID = last.id - let query = Mastodon.API.Notifications.Query( - maxID: maxID, - sinceID: nil, - minID: nil, - limit: nil, - excludeTypes: [], - accountID: nil - ) - viewModel.context.apiService.allNotifications( - domain: activeMastodonAuthenticationBox.domain, - query: query, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch notification failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break - } - - stateMachine.enter(Idle.self) - } receiveValue: { [weak viewModel] response in - guard let viewModel = viewModel else { return } - switch viewModel.selectedIndex.value { - case .everyThing: - if response.value.isEmpty { - stateMachine.enter(NoMore.self) - } else { - stateMachine.enter(Idle.self) - } - case .mentions: - viewModel.noMoreNotification.value = response.value.isEmpty - let list = response.value.filter { $0.type == Mastodon.Entity.Notification.NotificationType.mention } - if list.isEmpty { - stateMachine.enter(NoMore.self) - } else { - stateMachine.enter(Idle.self) - } - } - } - .store(in: &viewModel.disposeBag) - } - } - - class Fail: NotificationViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - stateClass == Loading.self || stateClass == Idle.self - } - } - - class Idle: NotificationViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - stateClass == Loading.self - } - } - - class NoMore: NotificationViewModel.LoadOldestState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // reset state if needs - stateClass == Idle.self - } - - override func didEnter(from previousState: GKState?) { - guard let viewModel = viewModel else { return } - guard let diffableDataSource = viewModel.diffableDataSource else { - assertionFailure() - return - } - DispatchQueue.main.async { - var snapshot = diffableDataSource.snapshot() - snapshot.deleteItems([.bottomLoader]) - diffableDataSource.apply(snapshot) - } - } - } -} diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index 98b7deec3..46891ef89 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -5,163 +5,158 @@ // Created by sxiaojian on 2021/4/12. // -import Combine -import CoreData -import CoreDataStack -import Foundation -import GameplayKit -import MastodonSDK +import os.log import UIKit -import OSLog +import Combine +import MastodonAsset +import MastodonLocalization +import Pageboy -final class NotificationViewModel: NSObject { +final class NotificationViewModel { + var disposeBag = Set() // input let context: AppContext - weak var tableView: UITableView? - weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? - let viewDidLoad = PassthroughSubject() - let selectedIndex = CurrentValueSubject(.everyThing) - let noMoreNotification = CurrentValueSubject(false) +// let selectedIndex = CurrentValueSubject(.everyThing) +// let noMoreNotification = CurrentValueSubject(false) - let activeMastodonAuthenticationBox: CurrentValueSubject - let fetchedResultsController: NSFetchedResultsController! - let notificationPredicate = CurrentValueSubject(nil) - let cellFrameCache = NSCache() +// let activeMastodonAuthenticationBox: CurrentValueSubject +// let fetchedResultsController: NSFetchedResultsController! +// let notificationPredicate = CurrentValueSubject(nil) +// let cellFrameCache = NSCache() + +// var needsScrollToTopAfterDataSourceUpdate = false +// let dataSourceDidUpdated = PassthroughSubject() +// let isFetchingLatestNotification = CurrentValueSubject(false) - var needsScrollToTopAfterDataSourceUpdate = false - let dataSourceDidUpdated = PassthroughSubject() - let isFetchingLatestNotification = CurrentValueSubject(false) // output - var diffableDataSource: UITableViewDiffableDataSource! - - // top loader - private(set) lazy var loadLatestStateMachine: GKStateMachine = { - // exclude timeline middle fetcher state - let stateMachine = GKStateMachine(states: [ - LoadLatestState.Initial(viewModel: self), - LoadLatestState.Loading(viewModel: self), - LoadLatestState.Fail(viewModel: self), - LoadLatestState.Idle(viewModel: self), - ]) - stateMachine.enter(LoadLatestState.Initial.self) - return stateMachine - }() - - lazy var loadLatestStateMachinePublisher = CurrentValueSubject(nil) - - // bottom loader - private(set) lazy var loadOldestStateMachine: GKStateMachine = { - // exclude timeline middle fetcher state - let stateMachine = GKStateMachine(states: [ - LoadOldestState.Initial(viewModel: self), - LoadOldestState.Loading(viewModel: self), - LoadOldestState.Fail(viewModel: self), - LoadOldestState.Idle(viewModel: self), - LoadOldestState.NoMore(viewModel: self), - ]) - stateMachine.enter(LoadOldestState.Initial.self) - return stateMachine - }() + let scopes = NotificationTimelineViewModel.Scope.allCases + @Published var viewControllers: [UIViewController] = [] + @Published var currentPageIndex = 0 - lazy var loadOldestStateMachinePublisher = CurrentValueSubject(nil) init(context: AppContext) { self.context = context - self.activeMastodonAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value) - self.fetchedResultsController = { - let fetchRequest = MastodonNotification.sortedFetchRequest - fetchRequest.returnsObjectsAsFaults = false - fetchRequest.fetchBatchSize = 10 - fetchRequest.relationshipKeyPathsForPrefetching = [#keyPath(MastodonNotification.status), #keyPath(MastodonNotification.account)] - let controller = NSFetchedResultsController( - fetchRequest: fetchRequest, - managedObjectContext: context.managedObjectContext, - sectionNameKeyPath: nil, - cacheName: nil - ) - - return controller - }() +// self.activeMastodonAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value) +// self.fetchedResultsController = { +// let fetchRequest = MastodonNotification.sortedFetchRequest +// fetchRequest.returnsObjectsAsFaults = false +// fetchRequest.fetchBatchSize = 10 +// fetchRequest.relationshipKeyPathsForPrefetching = [#keyPath(MastodonNotification.status), #keyPath(MastodonNotification.account)] +// let controller = NSFetchedResultsController( +// fetchRequest: fetchRequest, +// managedObjectContext: context.managedObjectContext, +// sectionNameKeyPath: nil, +// cacheName: nil +// ) +// +// return controller +// }() + // end init - super.init() - fetchedResultsController.delegate = self - context.authenticationService.activeMastodonAuthenticationBox - .sink(receiveValue: { [weak self] box in - guard let self = self else { return } - self.activeMastodonAuthenticationBox.value = box - if let domain = box?.domain, let userID = box?.userID { - self.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) - } - }) - .store(in: &disposeBag) +// fetchedResultsController.delegate = self +// context.authenticationService.activeMastodonAuthenticationBox +// .sink(receiveValue: { [weak self] box in +// guard let self = self else { return } +// self.activeMastodonAuthenticationBox.value = box +// if let domain = box?.domain, let userID = box?.userID { +// self.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) +// } +// }) +// .store(in: &disposeBag) - notificationPredicate - .compactMap { $0 } - .sink { [weak self] predicate in - guard let self = self else { return } - self.fetchedResultsController.fetchRequest.predicate = predicate - do { - self.diffableDataSource?.defaultRowAnimation = .fade - try self.fetchedResultsController.performFetch() - DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in - guard let self = self else { return } - self.diffableDataSource?.defaultRowAnimation = .automatic - } - } catch { - assertionFailure(error.localizedDescription) - } - } - .store(in: &disposeBag) +// notificationPredicate +// .compactMap { $0 } +// .sink { [weak self] predicate in +// guard let self = self else { return } +// self.fetchedResultsController.fetchRequest.predicate = predicate +// do { +// self.diffableDataSource?.defaultRowAnimation = .fade +// try self.fetchedResultsController.performFetch() +// DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in +// guard let self = self else { return } +// self.diffableDataSource?.defaultRowAnimation = .automatic +// } +// } catch { +// assertionFailure(error.localizedDescription) +// } +// } +// .store(in: &disposeBag) - viewDidLoad - .sink { [weak self] in - - guard let domain = self?.activeMastodonAuthenticationBox.value?.domain, let userID = self?.activeMastodonAuthenticationBox.value?.userID else { return } - self?.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) - } - .store(in: &disposeBag) +// viewDidLoad +// .sink { [weak self] in +// +// guard let domain = self?.activeMastodonAuthenticationBox.value?.domain, let userID = self?.activeMastodonAuthenticationBox.value?.userID else { return } +// self?.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) +// } +// .store(in: &disposeBag) } +} - func acceptFollowRequest(notification: MastodonNotification) { - guard let activeMastodonAuthenticationBox = self.activeMastodonAuthenticationBox.value else { return } - context.apiService.acceptFollowRequest(mastodonUserID: notification.account.id, mastodonAuthenticationBox: activeMastodonAuthenticationBox) - .sink { [weak self] completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: accept FollowRequest fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - self?.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) - } - } receiveValue: { _ in - - } - .store(in: &disposeBag) - } - - func rejectFollowRequest(notification: MastodonNotification) { - guard let activeMastodonAuthenticationBox = self.activeMastodonAuthenticationBox.value else { return } - context.apiService.rejectFollowRequest(mastodonUserID: notification.account.id, mastodonAuthenticationBox: activeMastodonAuthenticationBox) - .sink { [weak self] completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: reject FollowRequest fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - self?.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) - } - } receiveValue: { _ in - - } - .store(in: &disposeBag) +extension NotificationTimelineViewModel.Scope { + var title: String { + switch self { + case .everything: + return L10n.Scene.Notification.Title.everything + case .mentions: + return L10n.Scene.Notification.Title.mentions + } } } -extension NotificationViewModel { - enum NotificationSegment: Int { - case everyThing - case mentions +// func acceptFollowRequest(notification: MastodonNotification) { +// guard let activeMastodonAuthenticationBox = self.activeMastodonAuthenticationBox.value else { return } +// context.apiService.acceptFollowRequest(mastodonUserID: notification.account.id, mastodonAuthenticationBox: activeMastodonAuthenticationBox) +// .sink { [weak self] completion in +// switch completion { +// case .failure(let error): +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: accept FollowRequest fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) +// case .finished: +// break +//// self?.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) +// } +// } receiveValue: { _ in +// +// } +// .store(in: &disposeBag) +// } +// +// func rejectFollowRequest(notification: MastodonNotification) { +// guard let activeMastodonAuthenticationBox = self.activeMastodonAuthenticationBox.value else { return } +// context.apiService.rejectFollowRequest(mastodonUserID: notification.account.id, mastodonAuthenticationBox: activeMastodonAuthenticationBox) +// .sink { [weak self] completion in +// switch completion { +// case .failure(let error): +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: reject FollowRequest fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) +// case .finished: +// break +//// self?.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) +// } +// } receiveValue: { _ in +// +// } +// .store(in: &disposeBag) +// } +//} + + +// MARK: - PageboyViewControllerDataSource +extension NotificationViewModel: PageboyViewControllerDataSource { + + func numberOfViewControllers(in pageboyViewController: PageboyViewController) -> Int { + return viewControllers.count } + + func viewController(for pageboyViewController: PageboyViewController, at index: PageboyViewController.PageIndex) -> UIViewController? { + return viewControllers[index] + } + + func defaultPage(for pageboyViewController: PageboyViewController) -> PageboyViewController.Page? { + return .first + } + } + diff --git a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift b/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift deleted file mode 100644 index 1712468a9..000000000 --- a/Mastodon/Scene/Notification/TableViewCell/NotificationStatusTableViewCell.swift +++ /dev/null @@ -1,373 +0,0 @@ -// -// NotificationStatusTableViewCell.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/14. -// - -import os.log -import Combine -import Foundation -import CoreDataStack -import UIKit -import MetaTextKit -import Meta -import FLAnimatedImage - -protocol NotificationTableViewCellDelegate: AnyObject { - var context: AppContext! { get } - func parent() -> UIViewController - - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, avatarImageViewDidPressed imageView: UIImageView) - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, authorNameLabelDidPressed label: MetaLabel) - - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) - func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) - - func notificationTableViewCell(_ cell: NotificationStatusTableViewCell, notification: MastodonNotification, acceptButtonDidPressed button: UIButton) - func notificationTableViewCell(_ cell: NotificationStatusTableViewCell, notification: MastodonNotification, rejectButtonDidPressed button: UIButton) - -} - -final class NotificationStatusTableViewCell: UITableViewCell, StatusCell { - - static let actionImageBorderWidth: CGFloat = 2 - static let statusPadding = UIEdgeInsets(top: 50, left: 73, bottom: 24, right: 24) - static let actionImageViewSize = CGSize(width: 24, height: 24) - - var disposeBag = Set() - var pollCountdownSubscription: AnyCancellable? - var delegate: NotificationTableViewCellDelegate? - - var containerStackViewBottomLayoutConstraint: NSLayoutConstraint! - let containerStackView = UIStackView() - - let avatarButton = NotificationAvatarButton() - let traitCollectionDidChange = PassthroughSubject() - - let contentStackView = UIStackView() - - let titleLabel = MetaLabel(style: .notificationTitle) - - let dotLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.secondary.color - label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 15, weight: .regular), maximumPointSize: 20) - label.text = "·" - return label - }() - let timestampLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.secondary.color - label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 15, weight: .regular), maximumPointSize: 20) - return label - }() - - - let buttonStackView = UIStackView() - - let acceptButton: UIButton = { - let button = UIButton(type: .custom) - let actionImage = UIImage(systemName: "checkmark.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 28, weight: .semibold))?.withRenderingMode(.alwaysTemplate) - button.setImage(actionImage, for: .normal) - button.tintColor = Asset.Colors.Label.secondary.color - return button - }() - - let rejectButton: UIButton = { - let button = UIButton(type: .custom) - let actionImage = UIImage(systemName: "xmark.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 28, weight: .semibold))?.withRenderingMode(.alwaysTemplate) - button.setImage(actionImage, for: .normal) - button.tintColor = Asset.Colors.Label.secondary.color - return button - }() - - let statusContainerView: UIView = { - let view = UIView() - view.layer.masksToBounds = true - view.layer.cornerRadius = 6 - view.layer.cornerCurve = .continuous - view.layer.borderWidth = 2 - view.layer.borderColor = ThemeService.shared.currentTheme.value.notificationStatusBorderColor.cgColor - return view - }() - let statusView = StatusView() - - let separatorLine = UIView.separatorLine - - var separatorLineToEdgeLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToEdgeTrailingLayoutConstraint: NSLayoutConstraint! - - var separatorLineToMarginLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToMarginTrailingLayoutConstraint: NSLayoutConstraint! - - var isFiltered: Bool = false { - didSet { - configure(isFiltered: isFiltered) - } - } - - let filteredLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.secondary.color - label.text = L10n.Common.Controls.Timeline.filtered - label.font = .preferredFont(forTextStyle: .body) - return label - }() - - override func prepareForReuse() { - super.prepareForReuse() - isFiltered = false - statusView.updateContentWarningDisplay(isHidden: true, animated: false) - statusView.pollTableView.dataSource = nil - statusView.playerContainerView.reset() - statusView.playerContainerView.isHidden = true - disposeBag.removeAll() - } - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - configure() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - configure() - } - -} - -extension NotificationStatusTableViewCell { - func configure() { - containerStackView.axis = .horizontal - containerStackView.alignment = .top - containerStackView.distribution = .fill - containerStackView.spacing = 14 + 2 // 2pt for status container outline border - containerStackView.layoutMargins = UIEdgeInsets(top: 14, left: 0, bottom: 12, right: 0) - containerStackView.isLayoutMarginsRelativeArrangement = true - containerStackView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(containerStackView) - containerStackViewBottomLayoutConstraint = contentView.bottomAnchor.constraint(equalTo: containerStackView.bottomAnchor) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - contentView.readableContentGuide.trailingAnchor.constraint(equalTo: containerStackView.trailingAnchor), - containerStackViewBottomLayoutConstraint.priority(.required - 1), - ]) - - avatarButton.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(avatarButton) - NSLayoutConstraint.activate([ - avatarButton.heightAnchor.constraint(equalToConstant: NotificationAvatarButton.containerSize.width).priority(.required - 1), - avatarButton.widthAnchor.constraint(equalToConstant: NotificationAvatarButton.containerSize.height).priority(.required - 1), - ]) - - containerStackView.addArrangedSubview(contentStackView) - contentStackView.axis = .vertical - contentStackView.spacing = 6 - - // header - let actionStackView = UIStackView() - contentStackView.addArrangedSubview(actionStackView) - actionStackView.axis = .horizontal - actionStackView.distribution = .fill - actionStackView.spacing = 4 - - actionStackView.addArrangedSubview(titleLabel) - actionStackView.addArrangedSubview(dotLabel) - actionStackView.addArrangedSubview(timestampLabel) - let timestampPaddingView = UIView() - actionStackView.addArrangedSubview(timestampPaddingView) - titleLabel.setContentHuggingPriority(.required - 3, for: .horizontal) - titleLabel.setContentHuggingPriority(.required - 1, for: .vertical) - titleLabel.setContentCompressionResistancePriority(.required - 3, for: .horizontal) - titleLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) - dotLabel.setContentHuggingPriority(.required - 2, for: .horizontal) - dotLabel.setContentCompressionResistancePriority(.required - 2, for: .horizontal) - timestampLabel.setContentHuggingPriority(.required - 1, for: .horizontal) - timestampLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) - timestampPaddingView.setContentHuggingPriority(.defaultLow, for: .horizontal) - - // follow request - contentStackView.addArrangedSubview(buttonStackView) - buttonStackView.addArrangedSubview(acceptButton) - buttonStackView.addArrangedSubview(rejectButton) - buttonStackView.axis = .horizontal - buttonStackView.distribution = .fillEqually - - // status - contentStackView.addArrangedSubview(statusContainerView) - statusContainerView.layoutMargins = UIEdgeInsets(top: 12, left: 12, bottom: 12, right: 12) - statusView.translatesAutoresizingMaskIntoConstraints = false - statusContainerView.addSubview(statusView) - NSLayoutConstraint.activate([ - statusView.topAnchor.constraint(equalTo: statusContainerView.layoutMarginsGuide.topAnchor), - statusView.leadingAnchor.constraint(equalTo: statusContainerView.layoutMarginsGuide.leadingAnchor), - statusView.trailingAnchor.constraint(equalTo: statusContainerView.layoutMarginsGuide.trailingAnchor), - statusView.bottomAnchor.constraint(equalTo: statusContainerView.layoutMarginsGuide.bottomAnchor), - ]) - - setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) - ThemeService.shared.currentTheme - .receive(on: RunLoop.main) - .sink { [weak self] theme in - guard let self = self else { return } - self.setupBackgroundColor(theme: theme) - } - .store(in: &disposeBag) - // remove item don't display - statusView.actionToolbarContainer.removeFromStackView() - // it affect stackView's height, need remove - statusView.headerContainerView.removeFromStackView() - - // adaptive separator - separatorLine.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(separatorLine) - separatorLineToEdgeLeadingLayoutConstraint = separatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) - separatorLineToEdgeTrailingLayoutConstraint = separatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor) - separatorLineToMarginLeadingLayoutConstraint = separatorLine.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor) - separatorLineToMarginTrailingLayoutConstraint = separatorLine.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor) - NSLayoutConstraint.activate([ - separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)), - ]) - - filteredLabel.translatesAutoresizingMaskIntoConstraints = false - addSubview(filteredLabel) - NSLayoutConstraint.activate([ - filteredLabel.centerXAnchor.constraint(equalTo: statusContainerView.centerXAnchor), - filteredLabel.centerYAnchor.constraint(equalTo: statusContainerView.centerYAnchor), - ]) - filteredLabel.isHidden = true - - statusView.delegate = self - - avatarButton.addTarget(self, action: #selector(NotificationStatusTableViewCell.avatarButtonDidPressed(_:)), for: .touchUpInside) - let authorNameLabelTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - authorNameLabelTapGestureRecognizer.addTarget(self, action: #selector(NotificationStatusTableViewCell.authorNameLabelTapGestureRecognizerHandler(_:))) - titleLabel.addGestureRecognizer(authorNameLabelTapGestureRecognizer) - - resetSeparatorLineLayout() - - setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) - ThemeService.shared.currentTheme - .receive(on: DispatchQueue.main) - .sink { [weak self] theme in - guard let self = self else { return } - self.setupBackgroundColor(theme: theme) - } - .store(in: &disposeBag) - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - resetSeparatorLineLayout() - setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) - traitCollectionDidChange.send() - } - - private func configure(isFiltered: Bool) { - statusView.alpha = isFiltered ? 0 : 1 - filteredLabel.isHidden = !isFiltered - isUserInteractionEnabled = !isFiltered - } -} - -extension NotificationStatusTableViewCell { - - private func setupBackgroundColor(theme: Theme) { - statusContainerView.layer.borderColor = theme.notificationStatusBorderColor.resolvedColor(with: traitCollection).cgColor - statusContainerView.backgroundColor = UIColor(dynamicProvider: { traitCollection in - return traitCollection.userInterfaceStyle == .light ? theme.systemBackgroundColor : theme.tertiarySystemGroupedBackgroundColor - }) - } - -} - -extension NotificationStatusTableViewCell { - @objc private func avatarButtonDidPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.notificationStatusTableViewCell(self, avatarImageViewDidPressed: avatarButton.avatarImageView) - } - - @objc private func authorNameLabelTapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.notificationStatusTableViewCell(self, authorNameLabelDidPressed: titleLabel) - } -} - -// MARK: - StatusViewDelegate -extension NotificationStatusTableViewCell: StatusViewDelegate { - - func statusView(_ statusView: StatusView, headerInfoLabelDidPressed label: UILabel) { - // do nothing - } - - func statusView(_ statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) { - // do nothing - } - - func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { - delegate?.notificationStatusTableViewCell(self, statusView: statusView, revealContentWarningButtonDidPressed: button) - } - - func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - delegate?.notificationStatusTableViewCell(self, statusView: statusView, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } - - func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - delegate?.notificationStatusTableViewCell(self, statusView: statusView, playerContainerView: playerContainerView, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } - - func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) { - // do nothing - } - - func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { - delegate?.notificationStatusTableViewCell(self, statusView: statusView, metaText: metaText, didSelectMeta: meta) - } - -} - -extension NotificationStatusTableViewCell { - - private func resetSeparatorLineLayout() { - separatorLineToEdgeLeadingLayoutConstraint.isActive = false - separatorLineToEdgeTrailingLayoutConstraint.isActive = false - separatorLineToMarginLeadingLayoutConstraint.isActive = false - separatorLineToMarginTrailingLayoutConstraint.isActive = false - - if traitCollection.userInterfaceIdiom == .phone { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeLeadingLayoutConstraint, - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - if traitCollection.horizontalSizeClass == .compact { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeLeadingLayoutConstraint, - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - // to margin - NSLayoutConstraint.activate([ - separatorLineToMarginLeadingLayoutConstraint, - separatorLineToMarginTrailingLayoutConstraint, - ]) - } - } - } - -} - -// MARK: - AvatarConfigurableView -extension NotificationStatusTableViewCell: AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { CGSize(width: 35, height: 35) } - static var configurableAvatarImageCornerRadius: CGFloat { 4 } - var configurableAvatarImageView: FLAnimatedImageView? { avatarButton.avatarImageView } -} diff --git a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift index 585dcb31f..44a90fd98 100644 --- a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift +++ b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift @@ -10,6 +10,8 @@ import MastodonSDK import os.log import ThirdPartyMailer import UIKit +import MastodonAsset +import MastodonLocalization final class MastodonConfirmEmailViewController: UIViewController, NeedsDependency { @@ -102,24 +104,27 @@ extension MastodonConfirmEmailViewController { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: swap user access token swap fail: %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) case .finished: // upload avatar and set display name in the background - self.context.apiService.accountUpdateCredentials( - domain: self.viewModel.authenticateInfo.domain, - query: self.viewModel.updateCredentialQuery, - authorization: Mastodon.API.OAuth.Authorization(accessToken: self.viewModel.userToken.accessToken) - ) - .retry(3) - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: setup avatar & display name fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: setup avatar & display name success", ((#file as NSString).lastPathComponent), #line, #function) + Just(self.viewModel.userToken.accessToken) + .asyncMap { token in + try await self.context.apiService.accountUpdateCredentials( + domain: self.viewModel.authenticateInfo.domain, + query: self.viewModel.updateCredentialQuery, + authorization: Mastodon.API.OAuth.Authorization(accessToken: token) + ) } - } receiveValue: { _ in - // do nothing - } - .store(in: &self.context.disposeBag) // execute in the background - } + .retry(3) + .sink { completion in + switch completion { + case .failure(let error): + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: setup avatar & display name fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) + case .finished: + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: setup avatar & display name success", ((#file as NSString).lastPathComponent), #line, #function) + } + } receiveValue: { _ in + // do nothing + } + .store(in: &self.context.disposeBag) // execute in the background + } // end switch } receiveValue: { response in os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: user %s's email confirmed", ((#file as NSString).lastPathComponent), #line, #function, response.value.username) self.coordinator.setup() diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift index c4bbd5bc4..b97fc9e3f 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift @@ -10,6 +10,8 @@ import UIKit import Combine import GameController import AuthenticationServices +import MastodonAsset +import MastodonLocalization final class MastodonPickServerViewController: UIViewController, NeedsDependency { diff --git a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift index 6dd0f1973..cf92778be 100644 --- a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift +++ b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift @@ -11,6 +11,8 @@ import Combine import MastodonSDK import AlamofireImage import Kanna +import MastodonAsset +import MastodonLocalization protocol PickServerCellDelegate: AnyObject { // func pickServerCell(_ cell: PickServerCell, expandButtonPressed button: UIButton) diff --git a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerLoaderTableViewCell.swift b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerLoaderTableViewCell.swift index eb0b619df..5649fe579 100644 --- a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerLoaderTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerLoaderTableViewCell.swift @@ -7,6 +7,8 @@ import UIKit import Combine +import MastodonAsset +import MastodonLocalization final class PickServerLoaderTableViewCell: TimelineLoaderTableViewCell { diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift index f3bc39942..822085863 100644 --- a/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift @@ -7,6 +7,8 @@ import UIKit import MastodonSDK +import MastodonAsset +import MastodonLocalization class PickServerCategoryView: UIView { diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerEmptyStateView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerEmptyStateView.swift index c5682143c..a75570087 100644 --- a/Mastodon/Scene/Onboarding/PickServer/View/PickServerEmptyStateView.swift +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerEmptyStateView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class PickServerEmptyStateView: UIView { diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift index 4afa31aad..f26f79b00 100644 --- a/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift @@ -8,6 +8,8 @@ import os.log import UIKit import Tabman +import MastodonAsset +import MastodonLocalization protocol PickServerServerSectionTableHeaderViewDelegate: AnyObject { func pickServerServerSectionTableHeaderView(_ headerView: PickServerServerSectionTableHeaderView, collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) diff --git a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterAvatarTableViewCell.swift b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterAvatarTableViewCell.swift index 304bd02dd..154385e6a 100644 --- a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterAvatarTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterAvatarTableViewCell.swift @@ -7,6 +7,8 @@ import UIKit import Combine +import MastodonAsset +import MastodonLocalization final class MastodonRegisterAvatarTableViewCell: UITableViewCell { diff --git a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift index 829c70a7c..1324c2822 100644 --- a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterPasswordHintTableViewCell.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class MastodonRegisterPasswordHintTableViewCell: UITableViewCell { diff --git a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift index 8e54d1ff9..8659e1500 100644 --- a/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/Register/Cell/MastodonRegisterTextFieldTableViewCell.swift @@ -8,6 +8,8 @@ import UIKit import Combine import MastodonUI +import MastodonAsset +import MastodonLocalization final class MastodonRegisterTextFieldTableViewCell: UITableViewCell { diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift index 0add10dc8..9260f9e21 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift @@ -10,6 +10,8 @@ import Foundation import OSLog import PhotosUI import UIKit +import MastodonAsset +import MastodonLocalization extension MastodonRegisterViewController { private func cropImage(image: UIImage, pickerViewController: UIViewController) { diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift index a1fd9742d..f4edf8e88 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift @@ -11,6 +11,8 @@ import MastodonSDK import os.log import PhotosUI import UIKit +import MastodonAsset +import MastodonLocalization final class MastodonRegisterViewController: UIViewController, NeedsDependency, OnboardingViewControllerAppearance { diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift index e075f47c8..dbf7c5f11 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift @@ -7,6 +7,8 @@ import UIKit import Combine +import MastodonAsset +import MastodonLocalization extension MastodonRegisterViewModel { func setupDiffableDataSource( diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift index 5971cc740..1ef9cf47a 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel.swift @@ -9,6 +9,8 @@ import Combine import Foundation import MastodonSDK import UIKit +import MastodonAsset +import MastodonLocalization final class MastodonRegisterViewModel { var disposeBag = Set() diff --git a/Mastodon/Scene/Onboarding/ServerRules/Cell/ServerRulesTableViewCell.swift b/Mastodon/Scene/Onboarding/ServerRules/Cell/ServerRulesTableViewCell.swift index 83378b993..a6fc25a40 100644 --- a/Mastodon/Scene/Onboarding/ServerRules/Cell/ServerRulesTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/ServerRules/Cell/ServerRulesTableViewCell.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class ServerRulesTableViewCell: UITableViewCell { diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift index f63692821..74649bc22 100644 --- a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift @@ -11,6 +11,8 @@ import Combine import MastodonSDK import SafariServices import MetaTextKit +import MastodonAsset +import MastodonLocalization final class MastodonServerRulesViewController: UIViewController, NeedsDependency { diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel.swift index f2664e0eb..29869be09 100644 --- a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel.swift +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewModel.swift @@ -8,6 +8,8 @@ import UIKit import Combine import MastodonSDK +import MastodonAsset +import MastodonLocalization final class MastodonServerRulesViewModel { diff --git a/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift index dc30227cf..06a92b430 100644 --- a/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift +++ b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift @@ -7,6 +7,8 @@ import UIKit import MastodonUI +import MastodonAsset +import MastodonLocalization final class NavigationActionView: UIView { diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift b/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift index f8090734b..a6c603c23 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class OnboardingHeadlineTableViewCell: UITableViewCell { diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift index aef6a8abc..5c51fb559 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization protocol OnboardingViewControllerAppearance: UIViewController { static var viewBottomPaddingHeight: CGFloat { get } diff --git a/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift b/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift index 23fa15052..9a5d6c13e 100644 --- a/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift +++ b/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class WelcomeIllustrationView: UIView { diff --git a/Mastodon/Scene/Onboarding/Welcome/View/WizardCardView.swift b/Mastodon/Scene/Onboarding/Welcome/View/WizardCardView.swift index 6f18afc94..2ed581373 100644 --- a/Mastodon/Scene/Onboarding/Welcome/View/WizardCardView.swift +++ b/Mastodon/Scene/Onboarding/Welcome/View/WizardCardView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class WizardCardView: UIView { diff --git a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift index 1dff6965b..f10bfc427 100644 --- a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift +++ b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift @@ -8,6 +8,8 @@ import os.log import UIKit import Combine +import MastodonAsset +import MastodonLocalization final class WelcomeViewController: UIViewController, NeedsDependency { @@ -307,19 +309,6 @@ extension WelcomeViewController { view.bringSubviewToFront(logoImageView) view.bringSubviewToFront(sloganLabel) - - // set slogan for non-phone -// if traitCollection.userInterfaceIdiom != .phone { -// guard sloganLabel.superview == nil else { -// return -// } -// view.addSubview(sloganLabel) -// NSLayoutConstraint.activate([ -// sloganLabel.leadingAnchor.constraint(equalTo: view.readableContentGuide.leadingAnchor, constant: 16), -// view.readableContentGuide.trailingAnchor.constraint(equalTo: sloganLabel.trailingAnchor, constant: 16), -// sloganLabel.topAnchor.constraint(equalTo: logoImageView.bottomAnchor, constant: 168), -// ]) -// } } } diff --git a/Mastodon/Scene/Profile/About/Cell/ProfileFieldAddEntryCollectionViewCell.swift b/Mastodon/Scene/Profile/About/Cell/ProfileFieldAddEntryCollectionViewCell.swift new file mode 100644 index 000000000..9f22886e6 --- /dev/null +++ b/Mastodon/Scene/Profile/About/Cell/ProfileFieldAddEntryCollectionViewCell.swift @@ -0,0 +1,78 @@ +// +// ProfileFieldAddEntryCollectionViewCell.swift +// Mastodon +// +// Created by MainasuK Cirno on 2021-5-26. +// + +import os.log +import UIKit +import Combine +import MastodonAsset +import MastodonLocalization +import MetaTextKit +import MastodonUI + +final class ProfileFieldAddEntryCollectionViewCell: UICollectionViewCell { + + static let symbolConfiguration = ProfileFieldEditCollectionViewCell.symbolConfiguration + static let insertButtonImage = UIImage(systemName: "plus.circle.fill", withConfiguration: symbolConfiguration) + + let containerStackView = UIStackView() + + let editButton: UIButton = { + let button = HitTestExpandedButton(type: .custom) + button.setImage(ProfileFieldAddEntryCollectionViewCell.insertButtonImage, for: .normal) + button.contentMode = .center + button.tintColor = .systemGreen + return button + }() + + let primaryLabel = MetaLabel(style: .profileFieldValue) + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ProfileFieldAddEntryCollectionViewCell { + + private func _init() { + containerStackView.axis = .horizontal + containerStackView.spacing = 8 + containerStackView.alignment = .center + + contentView.preservesSuperviewLayoutMargins = true + containerStackView.preservesSuperviewLayoutMargins = true + containerStackView.isLayoutMarginsRelativeArrangement = true + + containerStackView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), + containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + containerStackView.heightAnchor.constraint(greaterThanOrEqualToConstant: 44).priority(.defaultHigh), + ]) + containerStackView.isLayoutMarginsRelativeArrangement = true + + containerStackView.addArrangedSubview(editButton) + containerStackView.addArrangedSubview(primaryLabel) + + editButton.setContentCompressionResistancePriority(.required - 1, for: .horizontal) + editButton.setContentHuggingPriority(.required - 1, for: .horizontal) + editButton.isUserInteractionEnabled = false + + primaryLabel.configure(content: PlaintextMetaContent(string: L10n.Scene.Profile.Fields.addRow)) + primaryLabel.isUserInteractionEnabled = false + } + +} diff --git a/Mastodon/Scene/Profile/About/Cell/ProfileFieldCollectionViewCell.swift b/Mastodon/Scene/Profile/About/Cell/ProfileFieldCollectionViewCell.swift new file mode 100644 index 000000000..ed6f68fec --- /dev/null +++ b/Mastodon/Scene/Profile/About/Cell/ProfileFieldCollectionViewCell.swift @@ -0,0 +1,87 @@ +// +// ProfileFieldCollectionViewCell.swift +// Mastodon +// +// Created by MainasuK Cirno on 2021-5-25. +// + +import os.log +import UIKit +import Combine +import MetaTextKit +import MastodonAsset +import MastodonLocalization + +protocol ProfileFieldCollectionViewCellDelegate: AnyObject { + func profileFieldCollectionViewCell(_ cell: ProfileFieldCollectionViewCell, metaLebel: MetaLabel, didSelectMeta meta: Meta) +} + +final class ProfileFieldCollectionViewCell: UICollectionViewCell { + + var disposeBag = Set() + + weak var delegate: ProfileFieldCollectionViewCellDelegate? + + // for custom emoji display + let keyMetaLabel = MetaLabel(style: .profileFieldName) + let valueMetaLabel = MetaLabel(style: .profileFieldValue) + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + } + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ProfileFieldCollectionViewCell { + + private func _init() { + // containerStackView: V - [ metaContainer | plainContainer ] + let containerStackView = UIStackView() + containerStackView.axis = .vertical + + contentView.preservesSuperviewLayoutMargins = true + containerStackView.preservesSuperviewLayoutMargins = true + containerStackView.isLayoutMarginsRelativeArrangement = true + containerStackView.translatesAutoresizingMaskIntoConstraints = false + addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: topAnchor, constant: 11), + containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), + bottomAnchor.constraint(equalTo: containerStackView.bottomAnchor, constant: 11), + ]) + + // metaContainer: V - [ keyMetaLabel | valueMetaLabel ] + let metaContainer = UIStackView() + metaContainer.axis = .vertical + metaContainer.spacing = 2 + containerStackView.addArrangedSubview(metaContainer) + + metaContainer.addArrangedSubview(keyMetaLabel) + metaContainer.addArrangedSubview(valueMetaLabel) + + keyMetaLabel.linkDelegate = self + valueMetaLabel.linkDelegate = self + } + +} + +// MARK: - MetaLabelDelegate +extension ProfileFieldCollectionViewCell: MetaLabelDelegate { + func metaLabel(_ metaLabel: MetaLabel, didSelectMeta meta: Meta) { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + delegate?.profileFieldCollectionViewCell(self, metaLebel: metaLabel, didSelectMeta: meta) + } +} diff --git a/Mastodon/Scene/Profile/About/Cell/ProfileFieldEditCollectionViewCell.swift b/Mastodon/Scene/Profile/About/Cell/ProfileFieldEditCollectionViewCell.swift new file mode 100644 index 000000000..43c47f1e1 --- /dev/null +++ b/Mastodon/Scene/Profile/About/Cell/ProfileFieldEditCollectionViewCell.swift @@ -0,0 +1,132 @@ +// +// ProfileFieldEditCollectionViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-1-22. +// + +import os.log +import UIKit +import Combine +import MetaTextKit +import MastodonAsset +import MastodonLocalization + +protocol ProfileFieldEditCollectionViewCellDelegate: AnyObject { + func profileFieldEditCollectionViewCell(_ cell: ProfileFieldEditCollectionViewCell, editButtonDidPressed button: UIButton) +} + +final class ProfileFieldEditCollectionViewCell: UICollectionViewCell { + + var disposeBag = Set() + + weak var delegate: ProfileFieldEditCollectionViewCellDelegate? + + static let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 22, weight: .semibold, scale: .medium) + static let removeButtonImage = UIImage(systemName: "minus.circle.fill", withConfiguration: symbolConfiguration) + + let containerStackView = UIStackView() + + let editButton: UIButton = { + let button = HitTestExpandedButton(type: .custom) + button.setImage(ProfileFieldEditCollectionViewCell.removeButtonImage, for: .normal) + button.contentMode = .center + button.tintColor = .systemRed + return button + }() + + // for editing + let keyTextField: UITextField = { + let textField = UITextField() + textField.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 13, weight: .semibold)) + textField.textColor = Asset.Colors.Label.secondary.color + textField.placeholder = L10n.Scene.Profile.Fields.Placeholder.label + return textField + }() + + // for editing + let valueTextField: UITextField = { + let textField = UITextField() + textField.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) + textField.textColor = Asset.Colors.Label.primary.color + textField.placeholder = L10n.Scene.Profile.Fields.Placeholder.content + return textField + }() + + let reorderBarImageView: UIImageView = { + let imageView = UIImageView() + imageView.contentMode = .scaleAspectFit + imageView.image = UIImage(systemName: "line.horizontal.3")?.withConfiguration(UIImage.SymbolConfiguration(pointSize: 20, weight: .regular)).withRenderingMode(.alwaysTemplate) + imageView.tintColor = Asset.Colors.Label.secondary.color + return imageView + }() + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + } + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ProfileFieldEditCollectionViewCell { + + private func _init() { + // containerStackView: H: - [ editButton | fieldContainer | reorderBarImageView ] + containerStackView.axis = .horizontal + containerStackView.spacing = 8 + containerStackView.alignment = .center + + contentView.preservesSuperviewLayoutMargins = true + containerStackView.preservesSuperviewLayoutMargins = true + containerStackView.isLayoutMarginsRelativeArrangement = true + + containerStackView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), + containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + ]) + + let fieldContainer = UIStackView() + fieldContainer.axis = .vertical + containerStackView.addArrangedSubview(fieldContainer) + + fieldContainer.addArrangedSubview(keyTextField) + fieldContainer.addArrangedSubview(valueTextField) + + containerStackView.addArrangedSubview(editButton) + containerStackView.addArrangedSubview(fieldContainer) + containerStackView.addArrangedSubview(reorderBarImageView) + + // editButton + editButton.setContentHuggingPriority(.required - 1, for: .horizontal) + editButton.setContentHuggingPriority(.required - 1, for: .vertical) + // reorderBarImageView + reorderBarImageView.setContentHuggingPriority(.required - 1, for: .horizontal) + reorderBarImageView.setContentCompressionResistancePriority(.required - 1, for: .horizontal) + + editButton.addTarget(self, action: #selector(ProfileFieldEditCollectionViewCell.editButtonDidPressed(_:)), for: .touchUpInside) + } + +} + +extension ProfileFieldEditCollectionViewCell { + @objc private func editButtonDidPressed(_ sender: UIButton) { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + delegate?.profileFieldEditCollectionViewCell(self, editButtonDidPressed: sender) + } +} + diff --git a/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift b/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift new file mode 100644 index 000000000..9b386847a --- /dev/null +++ b/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift @@ -0,0 +1,168 @@ +// +// ProfileAboutViewController.swift +// Mastodon +// +// Created by MainasuK on 2022-1-22. +// + +import os.log +import UIKit +import Combine +import MetaTextKit + +protocol ProfileAboutViewControllerDelegate: AnyObject { + func profileAboutViewController(_ viewController: ProfileAboutViewController, profileFieldCollectionViewCell: ProfileFieldCollectionViewCell, metaLabel: MetaLabel, didSelectMeta meta: Meta) +} + +final class ProfileAboutViewController: UIViewController { + + let logger = Logger(subsystem: "ProfileAboutViewController", category: "ViewController") + + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } + weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } + + weak var delegate: ProfileAboutViewControllerDelegate? + + var disposeBag = Set() + var viewModel: ProfileAboutViewModel! + + let collectionView: UICollectionView = { + var configuration = UICollectionLayoutListConfiguration(appearance: .insetGrouped) + configuration.backgroundColor = .clear + configuration.headerMode = .supplementary + let layout = UICollectionViewCompositionalLayout.list(using: configuration) + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + return collectionView + }() + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + +} + +extension ProfileAboutViewController { + + override func viewDidLoad() { + super.viewDidLoad() + view.backgroundColor = ThemeService.shared.currentTheme.value.systemBackgroundColor + ThemeService.shared.currentTheme + .receive(on: DispatchQueue.main) + .sink { [weak self] theme in + guard let self = self else { return } + self.view.backgroundColor = theme.systemBackgroundColor + } + .store(in: &disposeBag) + + collectionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(collectionView) + NSLayoutConstraint.activate([ + collectionView.topAnchor.constraint(equalTo: view.topAnchor), + collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + collectionView.delegate = self + viewModel.setupDiffableDataSource( + collectionView: collectionView, + profileFieldCollectionViewCellDelegate: self, + profileFieldEditCollectionViewCellDelegate: self + ) + + let longPressReorderGesture = UILongPressGestureRecognizer( + target: self, + action: #selector(ProfileAboutViewController.longPressReorderGestureHandler(_:)) + ) + collectionView.addGestureRecognizer(longPressReorderGesture) + } + +} + +extension ProfileAboutViewController { + // seealso: ProfileAboutViewModel.setupProfileDiffableDataSource(…) + @objc private func longPressReorderGestureHandler(_ sender: UILongPressGestureRecognizer) { + guard sender.view === collectionView else { + assertionFailure() + return + } + + guard let diffableDataSource = self.viewModel.diffableDataSource else { + collectionView.cancelInteractiveMovement() + return + } + + switch(sender.state) { + case .began: + guard let indexPath = collectionView.indexPathForItem(at: sender.location(in: collectionView)), + let item = diffableDataSource.itemIdentifier(for: indexPath), case .editField = item, + let layoutAttribute = collectionView.layoutAttributesForItem(at: indexPath) else { + break + } + + let point = sender.location(in: collectionView) + guard layoutAttribute.frame.contains(point) else { + return + } + + collectionView.beginInteractiveMovementForItem(at: indexPath) + case .changed: + guard let indexPath = collectionView.indexPathForItem(at: sender.location(in: collectionView)) else { + break + } + guard let item = diffableDataSource.itemIdentifier(for: indexPath), case .editField = item else { + collectionView.cancelInteractiveMovement() + return + } + + var position = sender.location(in: collectionView) + position.x = collectionView.frame.width * 0.5 + collectionView.updateInteractiveMovementTargetPosition(position) + case .ended: + collectionView.endInteractiveMovement() + collectionView.reloadData() + default: + collectionView.cancelInteractiveMovement() + } + } +} + +// MARK: - UICollectionViewDelegate +extension ProfileAboutViewController: UICollectionViewDelegate { + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): select \(indexPath.debugDescription)") + + guard let diffableDataSource = viewModel.diffableDataSource else { return } + guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } + switch item { + case .addEntry: + viewModel.appendFieldItem() + default: + break + } + } +} + +// MARK: - ProfileFieldCollectionViewCellDelegate +extension ProfileAboutViewController: ProfileFieldCollectionViewCellDelegate { + func profileFieldCollectionViewCell(_ cell: ProfileFieldCollectionViewCell, metaLebel: MetaLabel, didSelectMeta meta: Meta) { + delegate?.profileAboutViewController(self, profileFieldCollectionViewCell: cell, metaLabel: metaLebel, didSelectMeta: meta) + } +} + +// MARK: - ProfileFieldEditCollectionViewCellDelegate +extension ProfileAboutViewController: ProfileFieldEditCollectionViewCellDelegate { + func profileFieldEditCollectionViewCell(_ cell: ProfileFieldEditCollectionViewCell, editButtonDidPressed button: UIButton) { + guard let diffableDataSource = viewModel.diffableDataSource else { return } + guard let indexPath = collectionView.indexPath(for: cell) else { return } + guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } + viewModel.removeFieldItem(item: item) + } +} + +// MARK: - ScrollViewContainer +extension ProfileAboutViewController: ScrollViewContainer { + var scrollView: UIScrollView { + collectionView + } +} diff --git a/Mastodon/Scene/Profile/About/ProfileAboutViewModel+Diffable.swift b/Mastodon/Scene/Profile/About/ProfileAboutViewModel+Diffable.swift new file mode 100644 index 000000000..66b7d25c1 --- /dev/null +++ b/Mastodon/Scene/Profile/About/ProfileAboutViewModel+Diffable.swift @@ -0,0 +1,84 @@ +// +// ProfileAboutViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-1-22. +// + +import os.log +import UIKit +import Combine +import MastodonSDK + +extension ProfileAboutViewModel { + + func setupDiffableDataSource( + collectionView: UICollectionView, + profileFieldCollectionViewCellDelegate: ProfileFieldCollectionViewCellDelegate, + profileFieldEditCollectionViewCellDelegate: ProfileFieldEditCollectionViewCellDelegate + ) { + let diffableDataSource = ProfileFieldSection.diffableDataSource( + collectionView: collectionView, + context: context, + configuration: ProfileFieldSection.Configuration( + profileFieldCollectionViewCellDelegate: profileFieldCollectionViewCellDelegate, + profileFieldEditCollectionViewCellDelegate: profileFieldEditCollectionViewCellDelegate + ) + ) + + diffableDataSource.reorderingHandlers.canReorderItem = { item -> Bool in + switch item { + case .editField: return true + default: return false + } + } + + diffableDataSource.reorderingHandlers.didReorder = { [weak self] transaction in + guard let self = self else { return } + + let items = transaction.finalSnapshot.itemIdentifiers + var fields: [ProfileFieldItem.FieldValue] = [] + for item in items { + guard case let .editField(field) = item else { continue } + fields.append(field) + } + self.editProfileInfo.fields = fields + } + + self.diffableDataSource = diffableDataSource + + Publishers.CombineLatest4( + $isEditing.removeDuplicates(), + displayProfileInfo.$fields.removeDuplicates(), + editProfileInfo.$fields.removeDuplicates(), + $emojiMeta.removeDuplicates() + ) + .throttle(for: 0.3, scheduler: DispatchQueue.main, latest: true) + .sink { [weak self] isEditing, displayFields, editingFields, emojiMeta in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + + let fields: [ProfileFieldItem.FieldValue] = isEditing ? editingFields : displayFields + var items: [ProfileFieldItem] = fields.map { field in + if isEditing { + return ProfileFieldItem.editField(field: field) + } else { + return ProfileFieldItem.field(field: field) + } + } + + if isEditing, fields.count < ProfileHeaderViewModel.maxProfileFieldCount { + items.append(.addEntry) + } + + snapshot.appendItems(items, toSection: .main) + + diffableDataSource.apply(snapshot, animatingDifferences: false, completion: nil) + } + .store(in: &disposeBag) + } + +} diff --git a/Mastodon/Scene/Profile/About/ProfileAboutViewModel.swift b/Mastodon/Scene/Profile/About/ProfileAboutViewModel.swift new file mode 100644 index 000000000..c7ef895dd --- /dev/null +++ b/Mastodon/Scene/Profile/About/ProfileAboutViewModel.swift @@ -0,0 +1,106 @@ +// +// ProfileAboutViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-1-22. +// + +import os.log +import UIKit +import Combine +import MastodonSDK +import MastodonMeta +import Kanna + +final class ProfileAboutViewModel { + + var disposeBag = Set() + + // input + let context: AppContext + @Published var isEditing = false + @Published var accountForEdit: Mastodon.Entity.Account? + @Published var emojiMeta: MastodonContent.Emojis = [:] + + // output + var diffableDataSource: UICollectionViewDiffableDataSource? + + let displayProfileInfo = ProfileInfo() + let editProfileInfo = ProfileInfo() + let editProfileInfoDidInitialized = CurrentValueSubject(Void()) // needs trigger initial event + + init(context: AppContext) { + self.context = context + // end init + + Publishers.CombineLatest( + $isEditing.removeDuplicates(), // only trigger when value toggle + $accountForEdit + ) + .receive(on: DispatchQueue.main) + .sink { [weak self] isEditing, account in + guard let self = self else { return } + guard isEditing else { return } + + // setup editing value when toggle to editing + self.editProfileInfo.fields = account?.source?.fields?.compactMap { field in + ProfileFieldItem.FieldValue( + name: field.name, + value: field.value, + emojiMeta: [:] // no use for editing + ) + } ?? [] + self.editProfileInfoDidInitialized.send() + } + .store(in: &disposeBag) + } + +} + +extension ProfileAboutViewModel { + class ProfileInfo { + @Published var fields: [ProfileFieldItem.FieldValue] = [] + } +} + +extension ProfileAboutViewModel { + func appendFieldItem() { + var fields = editProfileInfo.fields + guard fields.count < ProfileHeaderViewModel.maxProfileFieldCount else { return } + fields.append(ProfileFieldItem.FieldValue(name: "", value: "", emojiMeta: [:])) + editProfileInfo.fields = fields + } + + func removeFieldItem(item: ProfileFieldItem) { + var fields = editProfileInfo.fields + guard case let .editField(field) = item else { return } + guard let removeIndex = fields.firstIndex(of: field) else { return } + fields.remove(at: removeIndex) + editProfileInfo.fields = fields + } +} + +// MARK: - ProfileViewModelEditable +extension ProfileAboutViewModel: ProfileViewModelEditable { + func isEdited() -> Bool { + guard isEditing else { return false } + + let isFieldsEqual: Bool = { + let originalFields = self.accountForEdit?.source?.fields?.compactMap { field in + ProfileFieldItem.FieldValue(name: field.name, value: field.value, emojiMeta: [:]) + } ?? [] + let editFields = editProfileInfo.fields + guard editFields.count == originalFields.count else { return false } + for (editField, originalField) in zip(editFields, originalFields) { + guard editField.name.value == originalField.name.value, + editField.value.value == originalField.value.value else { + return false + } + } + return true + }() + guard isFieldsEqual else { return true } + + return false + } +} diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewController+DataSourceProvider.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewController+DataSourceProvider.swift new file mode 100644 index 000000000..8fe8d1bd7 --- /dev/null +++ b/Mastodon/Scene/Profile/Favorite/FavoriteViewController+DataSourceProvider.swift @@ -0,0 +1,34 @@ +// +// FavoriteViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-18. +// + +import UIKit + +extension FavoriteViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.tableViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .status(let record): + return .status(record: record) + default: + return nil + } + } + + @MainActor + private func indexPath(for cell: UITableViewCell) async -> IndexPath? { + return tableView.indexPath(for: cell) + } +} diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewController+Provider.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewController+Provider.swift deleted file mode 100644 index f4631b6e6..000000000 --- a/Mastodon/Scene/Profile/Favorite/FavoriteViewController+Provider.swift +++ /dev/null @@ -1,95 +0,0 @@ -// -// FavoriteViewController+StatusProvider.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-4-7. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack - -// MARK: - StatusProvider -extension FavoriteViewController: StatusProvider { - - func status() -> Future { - return Future { promise in promise(.success(nil)) } - } - - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future { - return Future { promise in - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - switch item { - case .status(let objectID, _): - let managedObjectContext = self.viewModel.statusFetchedResultsController.fetchedResultsController.managedObjectContext - managedObjectContext.perform { - let status = managedObjectContext.object(with: objectID) as? Status - promise(.success(status)) - } - default: - promise(.success(nil)) - } - } - } - - func status(for cell: UICollectionViewCell) -> Future { - return Future { promise in promise(.success(nil)) } - } - - var managedObjectContext: NSManagedObjectContext { - return viewModel.statusFetchedResultsController.fetchedResultsController.managedObjectContext - } - - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { - return viewModel.diffableDataSource - } - - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return nil - } - - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - return nil - } - - return item - } - - func items(indexPaths: [IndexPath]) -> [Item] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return [] - } - - var items: [Item] = [] - for indexPath in indexPaths { - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { continue } - items.append(item) - } - return items - } - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return [] } - let items = indexPaths.compactMap { diffableDataSource.itemIdentifier(for: $0)?.statusObjectItem } - return items - } - -} - -extension FavoriteViewController: UserProvider {} diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift index c9890c248..d061826c9 100644 --- a/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift +++ b/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift @@ -13,9 +13,13 @@ import UIKit import AVKit import Combine import GameplayKit +import MastodonAsset +import MastodonLocalization final class FavoriteViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { + let logger = Logger(subsystem: "FavoriteViewController", category: "ViewController") + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -37,7 +41,7 @@ final class FavoriteViewController: UIViewController, NeedsDependency, MediaPrev }() deinit { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) } } @@ -49,7 +53,7 @@ extension FavoriteViewController { view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.view.backgroundColor = theme.secondarySystemBackgroundColor @@ -69,69 +73,65 @@ extension FavoriteViewController { ]) tableView.delegate = self - tableView.prefetchDataSource = self +// tableView.prefetchDataSource = self viewModel.setupDiffableDataSource( - for: tableView, - dependency: self, + tableView: tableView, statusTableViewCellDelegate: self ) - + + // setup batch fetch + viewModel.listBatchFetchViewModel.setup(scrollView: tableView) + viewModel.listBatchFetchViewModel.shouldFetch + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self = self else { return } + self.viewModel.stateMachine.enter(FavoriteViewModel.State.Loading.self) + } + .store(in: &disposeBag) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - aspectViewWillAppear(animated) + tableView.deselectRow(with: transitionCoordinator, animated: animated) } override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) - aspectViewDidDisappear(animated) +// aspectViewDidDisappear(animated) } } -// MARK: - StatusTableViewControllerAspect -extension FavoriteViewController: StatusTableViewControllerAspect { } - -// MARK: - TableViewCellHeightCacheableContainer -extension FavoriteViewController: TableViewCellHeightCacheableContainer { - var cellFrameCache: NSCache { - return viewModel.cellFrameCache - } -} +//// MARK: - TableViewCellHeightCacheableContainer +//extension FavoriteViewController: TableViewCellHeightCacheableContainer { +// var cellFrameCache: NSCache { +// return viewModel.cellFrameCache +// } +//} // MARK: - UIScrollViewDelegate -extension FavoriteViewController { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - aspectScrollViewDidScroll(scrollView) - } -} +//extension FavoriteViewController { +// func scrollViewDidScroll(_ scrollView: UIScrollView) { +// aspectScrollViewDidScroll(scrollView) +// } +//} // MARK: - UITableViewDelegate -extension FavoriteViewController: UITableViewDelegate { +extension FavoriteViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { + // sourcery:inline:FavoriteViewController.AutoGenerateTableViewDelegate - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - aspectTableView(tableView, estimatedHeightForRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } - + // Generated using Sourcery + // DO NOT EDIT func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { aspectTableView(tableView, didSelectRowAt: indexPath) } - + func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) } - + func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) } @@ -139,62 +139,90 @@ extension FavoriteViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) } - + func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) } - + + + // sourcery:end + +// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { +// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didSelectRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { +// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +// } +// +// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { +// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +// } +// } // MARK: - UITableViewDataSourcePrefetching -extension FavoriteViewController: UITableViewDataSourcePrefetching { - func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - aspectTableView(tableView, prefetchRowsAt: indexPaths) - } -} +//extension FavoriteViewController: UITableViewDataSourcePrefetching { +// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { +// aspectTableView(tableView, prefetchRowsAt: indexPaths) +// } +//} // MARK: - AVPlayerViewControllerDelegate -extension FavoriteViewController: AVPlayerViewControllerDelegate { - - func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } - - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } - -} +//extension FavoriteViewController: AVPlayerViewControllerDelegate { +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +//} // MARK: - TimelinePostTableViewCellDelegate -extension FavoriteViewController: StatusTableViewCellDelegate { - weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } - func parent() -> UIViewController { return self } -} +//extension FavoriteViewController: StatusTableViewCellDelegate { +// weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } +// func parent() -> UIViewController { return self } +//} -// MARK: - LoadMoreConfigurableTableViewContainer -extension FavoriteViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell - typealias LoadingState = FavoriteViewModel.State.Loading - - var loadMoreConfigurableTableView: UITableView { return tableView } - var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.stateMachine } -} +//extension FavoriteViewController { +// override var keyCommands: [UIKeyCommand]? { +// return navigationKeyCommands + statusNavigationKeyCommands +// } +//} +// +//// MARK: - StatusTableViewControllerNavigateable +//extension FavoriteViewController: StatusTableViewControllerNavigateable { +// @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// navigateKeyCommandHandler(sender) +// } +// +// @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// statusKeyCommandHandler(sender) +// } +//} - -extension FavoriteViewController { - override var keyCommands: [UIKeyCommand]? { - return navigationKeyCommands + statusNavigationKeyCommands - } -} - -// MARK: - StatusTableViewControllerNavigateable -extension FavoriteViewController: StatusTableViewControllerNavigateable { - @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - navigateKeyCommandHandler(sender) - } - - @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - statusKeyCommandHandler(sender) - } -} +// MARK: - StatusTableViewCellDelegate +extension FavoriteViewController: StatusTableViewCellDelegate { } diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+Diffable.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+Diffable.swift index 314721413..f74d3de7b 100644 --- a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+Diffable.swift +++ b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+Diffable.swift @@ -10,26 +10,54 @@ import UIKit extension FavoriteViewModel { func setupDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, + tableView: UITableView, statusTableViewCellDelegate: StatusTableViewCellDelegate - ) { - diffableDataSource = StatusSection.tableViewDiffableDataSource( - for: tableView, - timelineContext: .favorite, - dependency: dependency, - managedObjectContext: statusFetchedResultsController.fetchedResultsController.managedObjectContext, - statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: nil, - threadReplyLoaderTableViewCellDelegate: nil + ) { + diffableDataSource = StatusSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: StatusSection.Configuration( + statusTableViewCellDelegate: statusTableViewCellDelegate, + timelineMiddleLoaderTableViewCellDelegate: nil + ) ) - // set empty section to make update animation top-to-bottom style - var snapshot = NSDiffableDataSourceSnapshot() + var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) diffableDataSource?.apply(snapshot) stateMachine.enter(State.Reloading.self) + + statusFetchedResultsController.$records + .receive(on: DispatchQueue.main) + .sink { [weak self] records in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + + let items = records.map { StatusItem.status(record: $0) } + snapshot.appendItems(items, toSection: .main) + + if let currentState = self.stateMachine.currentState { + switch currentState { + case is State.Reloading, + is State.Loading, + is State.Idle, + is State.Fail: + snapshot.appendItems([.bottomLoader], toSection: .main) + case is State.NoMore: + break + default: + assertionFailure() + break + } + } + + diffableDataSource.applySnapshot(snapshot, animated: false) + } + .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+State.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+State.swift index c4420e88b..6c539450c 100644 --- a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+State.swift +++ b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+State.swift @@ -11,7 +11,16 @@ import GameplayKit import MastodonSDK extension FavoriteViewModel { - class State: GKState { + class State: GKState, NamingState { + + let logger = Logger(subsystem: "FavoriteViewModel.State", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + weak var viewModel: FavoriteViewModel? init(viewModel: FavoriteViewModel) { @@ -19,7 +28,18 @@ extension FavoriteViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + super.didEnter(from: previousState) + let previousState = previousState as? FavoriteViewModel.State + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + } + + @MainActor + func enter(state: State.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") } } } @@ -93,6 +113,7 @@ extension FavoriteViewModel.State { class Loading: FavoriteViewModel.State { + // prefer use `maxID` token in response header var maxID: String? override func isValidNextState(_ stateClass: AnyClass) -> Bool { @@ -112,56 +133,49 @@ extension FavoriteViewModel.State { super.didEnter(from: previousState) guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = viewModel.activeMastodonAuthenticationBox.value else { stateMachine.enter(Fail.self) return } if previousState is Reloading { maxID = nil } - // prefer use `maxID` token in response header - // let maxID = viewModel.statusFetchedResultsController.statusIDs.value.last - viewModel.context.apiService.favoritedStatuses( - maxID: maxID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .receive(on: DispatchQueue.main) - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch user timeline fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break - } - } receiveValue: { response in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + + Task { + do { + let response = try await viewModel.context.apiService.favoritedStatuses( + maxID: maxID, + authenticationBox: authenticationBox + ) + + var hasNewStatusesAppend = false + var statusIDs = viewModel.statusFetchedResultsController.statusIDs.value + for status in response.value { + guard !statusIDs.contains(status.id) else { continue } + statusIDs.append(status.id) + hasNewStatusesAppend = true + } + + self.maxID = response.link?.maxID + + let hasNextPage: Bool = { + guard let link = response.link else { return true } // assert has more when link invalid + return link.maxID != nil + }() - var hasNewStatusesAppend = false - var statusIDs = viewModel.statusFetchedResultsController.statusIDs.value - for status in response.value { - guard !statusIDs.contains(status.id) else { continue } - statusIDs.append(status.id) - hasNewStatusesAppend = true + if hasNewStatusesAppend && hasNextPage { + await enter(state: Idle.self) + } else { + await enter(state: NoMore.self) + } + viewModel.statusFetchedResultsController.statusIDs.value = statusIDs + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch user favorites fail: \(error.localizedDescription)") + await enter(state: Fail.self) } - - self.maxID = response.link?.maxID - - let hasNextPage: Bool = { - guard let link = response.link else { return true } // assert has more when link invalid - return link.maxID != nil - }() - - if hasNewStatusesAppend && hasNextPage { - stateMachine.enter(Idle.self) - } else { - stateMachine.enter(NoMore.self) - } - viewModel.statusFetchedResultsController.statusIDs.value = statusIDs - } - .store(in: &viewModel.disposeBag) - } + } // end Task + } // end func } class NoMore: FavoriteViewModel.State { diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel.swift index 6b4c1b8cf..150c8f815 100644 --- a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel.swift +++ b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel.swift @@ -19,10 +19,10 @@ final class FavoriteViewModel { let context: AppContext let activeMastodonAuthenticationBox: CurrentValueSubject let statusFetchedResultsController: StatusFetchedResultsController - let cellFrameCache = NSCache() - + let listBatchFetchViewModel = ListBatchFetchViewModel() + // output - var diffableDataSource: UITableViewDiffableDataSource? + var diffableDataSource: UITableViewDiffableDataSource? private(set) lazy var stateMachine: GKStateMachine = { let stateMachine = GKStateMachine(states: [ State.Initial(viewModel: self), @@ -36,14 +36,13 @@ final class FavoriteViewModel { return stateMachine }() - init(context: AppContext) { self.context = context self.activeMastodonAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value) self.statusFetchedResultsController = StatusFetchedResultsController( managedObjectContext: context.managedObjectContext, domain: nil, - additionalTweetPredicate: Status.notDeleted() + additionalTweetPredicate: nil ) context.authenticationService.activeMastodonAuthenticationBox @@ -54,48 +53,6 @@ final class FavoriteViewModel { .map { $0?.domain } .assign(to: \.value, on: statusFetchedResultsController.domain) .store(in: &disposeBag) - - statusFetchedResultsController.objectIDs - .receive(on: DispatchQueue.main) - .sink { [weak self] objectIDs in - guard let self = self else { return } - guard let diffableDataSource = self.diffableDataSource else { return } - - var items: [Item] = [] - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - - defer { - // not animate when empty items fix loader first appear layout issue - diffableDataSource.apply(snapshot, animatingDifferences: !items.isEmpty) - } - - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] - let oldSnapshot = diffableDataSource.snapshot() - for item in oldSnapshot.itemIdentifiers { - guard case let .status(objectID, attribute) = item else { continue } - oldSnapshotAttributeDict[objectID] = attribute - } - - for objectID in objectIDs { - let attribute = oldSnapshotAttributeDict[objectID] ?? Item.StatusAttribute() - items.append(.status(objectID: objectID, attribute: attribute)) - } - snapshot.appendItems(items, toSection: .main) - - if let currentState = self.stateMachine.currentState { - switch currentState { - case is State.Reloading, is State.Loading, is State.Idle, is State.Fail: - snapshot.appendItems([.bottomLoader], toSection: .main) - case is State.NoMore: - break - // TODO: handle other states - default: - break - } - } - } - .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Profile/Follower/FollowerListViewController+DataSourceProvider.swift b/Mastodon/Scene/Profile/Follower/FollowerListViewController+DataSourceProvider.swift new file mode 100644 index 000000000..956cb0704 --- /dev/null +++ b/Mastodon/Scene/Profile/Follower/FollowerListViewController+DataSourceProvider.swift @@ -0,0 +1,34 @@ +// +// FollowerListViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import UIKit + +extension FollowerListViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.tableViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .user(let record): + return .user(record: record) + default: + return nil + } + } + + @MainActor + private func indexPath(for cell: UITableViewCell) async -> IndexPath? { + return tableView.indexPath(for: cell) + } +} diff --git a/Mastodon/Scene/Profile/Follower/FollowerListViewController+Provider.swift b/Mastodon/Scene/Profile/Follower/FollowerListViewController+Provider.swift deleted file mode 100644 index 25e102846..000000000 --- a/Mastodon/Scene/Profile/Follower/FollowerListViewController+Provider.swift +++ /dev/null @@ -1,51 +0,0 @@ -// -// FollowerListViewController+Provider.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-11-1. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack - -extension FollowerListViewController: UserProvider { - - func mastodonUser() -> Future { - Future { promise in - promise(.success(nil)) - } - } - - func mastodonUser(for cell: UITableViewCell?) -> Future { - Future { [weak self] promise in - guard let self = self else { return } - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let cell = cell, - let indexPath = self.tableView.indexPath(for: cell), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - let managedObjectContext = self.viewModel.userFetchedResultsController.fetchedResultsController.managedObjectContext - - switch item { - case .follower(let objectID), - .following(let objectID): - managedObjectContext.perform { - let user = managedObjectContext.object(with: objectID) as? MastodonUser - promise(.success(user)) - } - case .bottomLoader, .bottomHeader: - promise(.success(nil)) - } - } - } -} diff --git a/Mastodon/Scene/Profile/Follower/FollowerListViewController.swift b/Mastodon/Scene/Profile/Follower/FollowerListViewController.swift index 97e62ea8d..68f1d0de1 100644 --- a/Mastodon/Scene/Profile/Follower/FollowerListViewController.swift +++ b/Mastodon/Scene/Profile/Follower/FollowerListViewController.swift @@ -12,11 +12,12 @@ import Combine final class FollowerListViewController: UIViewController, NeedsDependency { - var disposeBag = Set() + let logger = Logger(subsystem: "FollowerListViewController", category: "ViewController") weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } + var disposeBag = Set() var viewModel: FollowerListViewModel! lazy var tableView: UITableView = { @@ -43,7 +44,7 @@ extension FollowerListViewController { view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.view.backgroundColor = theme.secondarySystemBackgroundColor @@ -61,10 +62,19 @@ extension FollowerListViewController { tableView.delegate = self viewModel.setupDiffableDataSource( - for: tableView, - dependency: self + tableView: tableView, + userTableViewCellDelegate: self ) - // TODO: add UserTableViewCellDelegate + + // setup batch fetch + viewModel.listBatchFetchViewModel.setup(scrollView: tableView) + viewModel.listBatchFetchViewModel.shouldFetch + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self = self else { return } + self.viewModel.stateMachine.enter(FollowerListViewModel.State.Loading.self) + } + .store(in: &disposeBag) // trigger user timeline loading Publishers.CombineLatest( @@ -79,29 +89,26 @@ extension FollowerListViewController { .store(in: &disposeBag) } -} - -// MARK: - LoadMoreConfigurableTableViewContainer -extension FollowerListViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell - typealias LoadingState = FollowerListViewModel.State.Loading - var loadMoreConfigurableTableView: UITableView { tableView } - var loadMoreConfigurableStateMachine: GKStateMachine { viewModel.stateMachine } -} - -// MARK: - UIScrollViewDelegate -extension FollowerListViewController { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - handleScrollViewDidScroll(scrollView) + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + tableView.deselectRow(with: transitionCoordinator, animated: animated) } + } - // MARK: - UITableViewDelegate -extension FollowerListViewController: UITableViewDelegate { +extension FollowerListViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { + // sourcery:inline:FollowerListViewController.AutoGenerateTableViewDelegate + + // Generated using Sourcery + // DO NOT EDIT func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - handleTableView(tableView, didSelectRowAt: indexPath) + aspectTableView(tableView, didSelectRowAt: indexPath) } + + // sourcery:end + } // MARK: - UserTableViewCellDelegate diff --git a/Mastodon/Scene/Profile/Follower/FollowerListViewModel+Diffable.swift b/Mastodon/Scene/Profile/Follower/FollowerListViewModel+Diffable.swift index fc9f31779..15cc1be13 100644 --- a/Mastodon/Scene/Profile/Follower/FollowerListViewModel+Diffable.swift +++ b/Mastodon/Scene/Profile/Follower/FollowerListViewModel+Diffable.swift @@ -6,16 +6,20 @@ // import UIKit +import MastodonAsset +import MastodonLocalization extension FollowerListViewModel { func setupDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency + tableView: UITableView, + userTableViewCellDelegate: UserTableViewCellDelegate? ) { - diffableDataSource = UserSection.tableViewDiffableDataSource( - for: tableView, - dependency: dependency, - managedObjectContext: userFetchedResultsController.fetchedResultsController.managedObjectContext + diffableDataSource = UserSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: UserSection.Configuration( + userTableViewCellDelegate: userTableViewCellDelegate + ) ) // workaround to append loader wrong animation issue @@ -30,17 +34,15 @@ extension FollowerListViewModel { diffableDataSource?.apply(snapshot, animatingDifferences: false) } - userFetchedResultsController.objectIDs + userFetchedResultsController.$records .receive(on: DispatchQueue.main) - .sink { [weak self] objectIDs in + .sink { [weak self] records in guard let self = self else { return } guard let diffableDataSource = self.diffableDataSource else { return } var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) - let items: [UserItem] = objectIDs.map { - UserItem.follower(objectID: $0) - } + let items = records.map { UserItem.user(record: $0) } snapshot.appendItems(items, toSection: .main) if let currentState = self.stateMachine.currentState { @@ -59,7 +61,7 @@ extension FollowerListViewModel { } } - diffableDataSource.apply(snapshot) + diffableDataSource.apply(snapshot, animatingDifferences: false) } .store(in: &disposeBag) } diff --git a/Mastodon/Scene/Profile/Follower/FollowerListViewModel+State.swift b/Mastodon/Scene/Profile/Follower/FollowerListViewModel+State.swift index 43e532673..c6af90d5a 100644 --- a/Mastodon/Scene/Profile/Follower/FollowerListViewModel+State.swift +++ b/Mastodon/Scene/Profile/Follower/FollowerListViewModel+State.swift @@ -11,7 +11,16 @@ import GameplayKit import MastodonSDK extension FollowerListViewModel { - class State: GKState { + class State: GKState, NamingState { + + let logger = Logger(subsystem: "FollowerListViewModel.State", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + weak var viewModel: FollowerListViewModel? init(viewModel: FollowerListViewModel) { @@ -19,7 +28,18 @@ extension FollowerListViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + super.didEnter(from: previousState) + let previousState = previousState as? FollowerListViewModel.State + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + } + + @MainActor + func enter(state: State.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") } } } @@ -123,47 +143,44 @@ extension FollowerListViewModel.State { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { stateMachine.enter(Fail.self) return } - - viewModel.context.apiService.followers( - userID: userID, - maxID: maxID, - authorizationBox: activeMastodonAuthenticationBox - ) - .receive(on: DispatchQueue.main) - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch user timeline fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break + + Task { + do { + let response = try await viewModel.context.apiService.followers( + userID: userID, + maxID: maxID, + authenticationBox: authenticationBox + ) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch \(response.value.count) followers") + + var hasNewAppend = false + var userIDs = viewModel.userFetchedResultsController.userIDs.value + for user in response.value { + guard !userIDs.contains(user.id) else { continue } + userIDs.append(user.id) + hasNewAppend = true + } + + let maxID = response.link?.maxID + + if hasNewAppend && maxID != nil { + await enter(state: Idle.self) + } else { + await enter(state: NoMore.self) + } + + self.maxID = maxID + viewModel.userFetchedResultsController.userIDs.value = userIDs + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch follower fail: \(error.localizedDescription)") + await enter(state: Fail.self) } - } receiveValue: { response in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - - var hasNewAppend = false - var userIDs = viewModel.userFetchedResultsController.userIDs.value - for user in response.value { - guard !userIDs.contains(user.id) else { continue } - userIDs.append(user.id) - hasNewAppend = true - } - - let maxID = response.link?.maxID - - if hasNewAppend && maxID != nil { - stateMachine.enter(Idle.self) - } else { - stateMachine.enter(NoMore.self) - } - self.maxID = maxID - viewModel.userFetchedResultsController.userIDs.value = userIDs - } - .store(in: &viewModel.disposeBag) + } // end Task } // end func didEnter } diff --git a/Mastodon/Scene/Profile/Follower/FollowerListViewModel.swift b/Mastodon/Scene/Profile/Follower/FollowerListViewModel.swift index f62441cf1..a212c95b0 100644 --- a/Mastodon/Scene/Profile/Follower/FollowerListViewModel.swift +++ b/Mastodon/Scene/Profile/Follower/FollowerListViewModel.swift @@ -22,7 +22,8 @@ final class FollowerListViewModel { let domain: CurrentValueSubject let userID: CurrentValueSubject let userFetchedResultsController: UserFetchedResultsController - + let listBatchFetchViewModel = ListBatchFetchViewModel() + // output var diffableDataSource: UITableViewDiffableDataSource? private(set) lazy var stateMachine: GKStateMachine = { diff --git a/Mastodon/Scene/Profile/Following/FollowingListViewController+DataSourceProvider.swift b/Mastodon/Scene/Profile/Following/FollowingListViewController+DataSourceProvider.swift new file mode 100644 index 000000000..3ea2a74c1 --- /dev/null +++ b/Mastodon/Scene/Profile/Following/FollowingListViewController+DataSourceProvider.swift @@ -0,0 +1,34 @@ +// +// FollowingListViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import UIKit + +extension FollowingListViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.tableViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .user(let record): + return .user(record: record) + default: + return nil + } + } + + @MainActor + private func indexPath(for cell: UITableViewCell) async -> IndexPath? { + return tableView.indexPath(for: cell) + } +} diff --git a/Mastodon/Scene/Profile/Following/FollowingListViewController+Provider.swift b/Mastodon/Scene/Profile/Following/FollowingListViewController+Provider.swift deleted file mode 100644 index aaeb52328..000000000 --- a/Mastodon/Scene/Profile/Following/FollowingListViewController+Provider.swift +++ /dev/null @@ -1,51 +0,0 @@ -// -// FollowingListViewController+Provider.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-11-2. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack - -extension FollowingListViewController: UserProvider { - - func mastodonUser() -> Future { - Future { promise in - promise(.success(nil)) - } - } - - func mastodonUser(for cell: UITableViewCell?) -> Future { - Future { [weak self] promise in - guard let self = self else { return } - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let cell = cell, - let indexPath = self.tableView.indexPath(for: cell), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - let managedObjectContext = self.viewModel.userFetchedResultsController.fetchedResultsController.managedObjectContext - - switch item { - case .follower(let objectID), - .following(let objectID): - managedObjectContext.perform { - let user = managedObjectContext.object(with: objectID) as? MastodonUser - promise(.success(user)) - } - case .bottomLoader, .bottomHeader: - promise(.success(nil)) - } - } - } -} diff --git a/Mastodon/Scene/Profile/Following/FollowingListViewController.swift b/Mastodon/Scene/Profile/Following/FollowingListViewController.swift index 35691b82d..7272a2db4 100644 --- a/Mastodon/Scene/Profile/Following/FollowingListViewController.swift +++ b/Mastodon/Scene/Profile/Following/FollowingListViewController.swift @@ -11,12 +11,13 @@ import GameplayKit import Combine final class FollowingListViewController: UIViewController, NeedsDependency { - - var disposeBag = Set() + + let logger = Logger(subsystem: "FollowingListViewController", category: "ViewController") weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } + var disposeBag = Set() var viewModel: FollowingListViewModel! lazy var tableView: UITableView = { @@ -43,7 +44,7 @@ extension FollowingListViewController { view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.view.backgroundColor = theme.secondarySystemBackgroundColor @@ -61,10 +62,19 @@ extension FollowingListViewController { tableView.delegate = self viewModel.setupDiffableDataSource( - for: tableView, - dependency: self + tableView: tableView, + userTableViewCellDelegate: self ) - // TODO: add UserTableViewCellDelegate + + // setup batch fetch + viewModel.listBatchFetchViewModel.setup(scrollView: tableView) + viewModel.listBatchFetchViewModel.shouldFetch + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self = self else { return } + self.viewModel.stateMachine.enter(FollowingListViewModel.State.Loading.self) + } + .store(in: &disposeBag) // trigger user timeline loading Publishers.CombineLatest( @@ -81,27 +91,17 @@ extension FollowingListViewController { } -// MARK: - LoadMoreConfigurableTableViewContainer -extension FollowingListViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell - typealias LoadingState = FollowingListViewModel.State.Loading - var loadMoreConfigurableTableView: UITableView { tableView } - var loadMoreConfigurableStateMachine: GKStateMachine { viewModel.stateMachine } -} - -// MARK: - UIScrollViewDelegate -extension FollowingListViewController { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - handleScrollViewDidScroll(scrollView) - } -} - - // MARK: - UITableViewDelegate -extension FollowingListViewController: UITableViewDelegate { +extension FollowingListViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { + // sourcery:inline:FollowingListViewController.AutoGenerateTableViewDelegate + + // Generated using Sourcery + // DO NOT EDIT func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - handleTableView(tableView, didSelectRowAt: indexPath) + aspectTableView(tableView, didSelectRowAt: indexPath) } + + // sourcery:end } // MARK: - UserTableViewCellDelegate diff --git a/Mastodon/Scene/Profile/Following/FollowingListViewModel+Diffable.swift b/Mastodon/Scene/Profile/Following/FollowingListViewModel+Diffable.swift index dc6f1f6fd..116e7567c 100644 --- a/Mastodon/Scene/Profile/Following/FollowingListViewModel+Diffable.swift +++ b/Mastodon/Scene/Profile/Following/FollowingListViewModel+Diffable.swift @@ -6,16 +6,20 @@ // import UIKit +import MastodonAsset +import MastodonLocalization extension FollowingListViewModel { func setupDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency + tableView: UITableView, + userTableViewCellDelegate: UserTableViewCellDelegate? ) { - diffableDataSource = UserSection.tableViewDiffableDataSource( - for: tableView, - dependency: dependency, - managedObjectContext: userFetchedResultsController.fetchedResultsController.managedObjectContext + diffableDataSource = UserSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: UserSection.Configuration( + userTableViewCellDelegate: userTableViewCellDelegate + ) ) // workaround to append loader wrong animation issue @@ -30,17 +34,15 @@ extension FollowingListViewModel { diffableDataSource?.apply(snapshot, animatingDifferences: false) } - userFetchedResultsController.objectIDs + userFetchedResultsController.$records .receive(on: DispatchQueue.main) - .sink { [weak self] objectIDs in + .sink { [weak self] records in guard let self = self else { return } guard let diffableDataSource = self.diffableDataSource else { return } var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) - let items: [UserItem] = objectIDs.map { - UserItem.following(objectID: $0) - } + let items = records.map { UserItem.user(record: $0) } snapshot.appendItems(items, toSection: .main) if let currentState = self.stateMachine.currentState { @@ -59,7 +61,7 @@ extension FollowingListViewModel { } } - diffableDataSource.apply(snapshot) + diffableDataSource.apply(snapshot, animatingDifferences: false) } .store(in: &disposeBag) } diff --git a/Mastodon/Scene/Profile/Following/FollowingListViewModel+State.swift b/Mastodon/Scene/Profile/Following/FollowingListViewModel+State.swift index 0ec3d6262..560c62d0e 100644 --- a/Mastodon/Scene/Profile/Following/FollowingListViewModel+State.swift +++ b/Mastodon/Scene/Profile/Following/FollowingListViewModel+State.swift @@ -11,7 +11,16 @@ import GameplayKit import MastodonSDK extension FollowingListViewModel { - class State: GKState { + class State: GKState, NamingState { + + let logger = Logger(subsystem: "FollowingListViewModel.State", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + weak var viewModel: FollowingListViewModel? init(viewModel: FollowingListViewModel) { @@ -19,7 +28,18 @@ extension FollowingListViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + super.didEnter(from: previousState) + let previousState = previousState as? FollowingListViewModel.State + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + } + + @MainActor + func enter(state: State.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") } } } @@ -123,27 +143,20 @@ extension FollowingListViewModel.State { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { stateMachine.enter(Fail.self) return } - viewModel.context.apiService.following( - userID: userID, - maxID: maxID, - authorizationBox: activeMastodonAuthenticationBox - ) - .receive(on: DispatchQueue.main) - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch user timeline fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break - } - } receiveValue: { response in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + Task { + do { + let response = try await viewModel.context.apiService.following( + userID: userID, + maxID: maxID, + authenticationBox: authenticationBox + ) + + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch \(response.value.count)") var hasNewAppend = false var userIDs = viewModel.userFetchedResultsController.userIDs.value @@ -156,14 +169,18 @@ extension FollowingListViewModel.State { let maxID = response.link?.maxID if hasNewAppend, maxID != nil { - stateMachine.enter(Idle.self) + await enter(state: Idle.self) } else { - stateMachine.enter(NoMore.self) + await enter(state: NoMore.self) } self.maxID = maxID viewModel.userFetchedResultsController.userIDs.value = userIDs + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch following fail: \(error.localizedDescription)") + await enter(state: Fail.self) } - .store(in: &viewModel.disposeBag) + } // end Task } // end func didEnter } diff --git a/Mastodon/Scene/Profile/Following/FollowingListViewModel.swift b/Mastodon/Scene/Profile/Following/FollowingListViewModel.swift index 0677f6cb4..22658a0e4 100644 --- a/Mastodon/Scene/Profile/Following/FollowingListViewModel.swift +++ b/Mastodon/Scene/Profile/Following/FollowingListViewModel.swift @@ -22,6 +22,7 @@ final class FollowingListViewModel { let domain: CurrentValueSubject let userID: CurrentValueSubject let userFetchedResultsController: UserFetchedResultsController + let listBatchFetchViewModel = ListBatchFetchViewModel() // output var diffableDataSource: UITableViewDiffableDataSource? diff --git a/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift b/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift index 34716dde5..20cedc497 100644 --- a/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift +++ b/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift @@ -13,18 +13,18 @@ import AlamofireImage import CropViewController import MastodonMeta import MetaTextKit +import MastodonAsset +import MastodonLocalization +import Tabman protocol ProfileHeaderViewControllerDelegate: AnyObject { func profileHeaderViewController(_ viewController: ProfileHeaderViewController, viewLayoutDidUpdate view: UIView) - func profileHeaderViewController(_ viewController: ProfileHeaderViewController, pageSegmentedControlValueChanged segmentedControl: UISegmentedControl, selectedSegmentIndex index: Int) - func profileHeaderViewController(_ viewController: ProfileHeaderViewController, profileFieldCollectionViewCell: ProfileFieldCollectionViewCell, metaLabel: MetaLabel, didSelectMeta meta: Meta) } final class ProfileHeaderViewController: UIViewController { - static let segmentedControlHeight: CGFloat = 32 - static let segmentedControlMarginHeight: CGFloat = 20 - static let headerMinHeight: CGFloat = segmentedControlHeight + 2 * segmentedControlMarginHeight + static let segmentedControlHeight: CGFloat = 50 + static let headerMinHeight: CGFloat = segmentedControlHeight var disposeBag = Set() weak var delegate: ProfileHeaderViewControllerDelegate? @@ -43,12 +43,19 @@ final class ProfileHeaderViewController: UIViewController { }() let profileHeaderView = ProfileHeaderView() - let pageSegmentedControl: UISegmentedControl = { - let segmentedControl = UISegmentedControl(items: ["A", "B"]) - segmentedControl.selectedSegmentIndex = 0 - return segmentedControl + + let buttonBar: TMBar.ButtonBar = { + let buttonBar = TMBar.ButtonBar() + buttonBar.buttons.customize { button in + button.selectedTintColor = Asset.Colors.Label.primary.color + button.tintColor = Asset.Colors.Label.secondary.color + button.backgroundColor = .clear + } + buttonBar.indicator.backgroundColor = Asset.Colors.Label.primary.color + buttonBar.backgroundView.style = .clear + buttonBar.layout.contentInset = .zero + return buttonBar }() - var pageSegmentedControlLeadingLayoutConstraint: NSLayoutConstraint! private var isBannerPinned = false private var bottomShadowAlpha: CGFloat = 0.0 @@ -89,12 +96,12 @@ extension ProfileHeaderViewController { override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = ThemeService.shared.currentTheme.value.systemGroupedBackgroundColor + view.backgroundColor = ThemeService.shared.currentTheme.value.systemBackgroundColor ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } - self.view.backgroundColor = theme.systemGroupedBackgroundColor + self.view.backgroundColor = theme.systemBackgroundColor } .store(in: &disposeBag) @@ -106,30 +113,7 @@ extension ProfileHeaderViewController { profileHeaderView.trailingAnchor.constraint(equalTo: view.trailingAnchor), ]) profileHeaderView.preservesSuperviewLayoutMargins = true - - profileHeaderView.fieldCollectionView.delegate = self - viewModel.setupProfileFieldCollectionViewDiffableDataSource( - collectionView: profileHeaderView.fieldCollectionView, - profileFieldCollectionViewCellDelegate: self, - profileFieldAddEntryCollectionViewCellDelegate: self - ) - - let longPressReorderGesture = UILongPressGestureRecognizer(target: self, action: #selector(ProfileHeaderViewController.longPressReorderGestureHandler(_:))) - profileHeaderView.fieldCollectionView.addGestureRecognizer(longPressReorderGesture) - - pageSegmentedControl.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(pageSegmentedControl) - pageSegmentedControlLeadingLayoutConstraint = pageSegmentedControl.leadingAnchor.constraint(equalTo: view.leadingAnchor) - NSLayoutConstraint.activate([ - pageSegmentedControl.topAnchor.constraint(equalTo: profileHeaderView.bottomAnchor, constant: ProfileHeaderViewController.segmentedControlMarginHeight), - pageSegmentedControlLeadingLayoutConstraint, // Fix iPad layout issue - pageSegmentedControl.trailingAnchor.constraint(equalTo: view.readableContentGuide.trailingAnchor), - view.bottomAnchor.constraint(equalTo: pageSegmentedControl.bottomAnchor, constant: ProfileHeaderViewController.segmentedControlMarginHeight), - pageSegmentedControl.heightAnchor.constraint(equalToConstant: ProfileHeaderViewController.segmentedControlHeight).priority(.defaultHigh), - ]) - - pageSegmentedControl.addTarget(self, action: #selector(ProfileHeaderViewController.pageSegmentedControlValueChanged(_:)), for: .valueChanged) - + Publishers.CombineLatest( viewModel.viewDidAppear.eraseToAnyPublisher(), viewModel.isTitleViewContentOffsetSet.eraseToAnyPublisher() @@ -151,37 +135,31 @@ extension ProfileHeaderViewController { .store(in: &disposeBag) Publishers.CombineLatest4( - viewModel.isEditing.eraseToAnyPublisher(), - viewModel.displayProfileInfo.avatarImageResource.eraseToAnyPublisher(), - viewModel.editProfileInfo.avatarImageResource.eraseToAnyPublisher(), + viewModel.$isEditing.eraseToAnyPublisher(), + viewModel.displayProfileInfo.$avatarImageResource.eraseToAnyPublisher(), + viewModel.editProfileInfo.$avatarImageResource.eraseToAnyPublisher(), viewModel.viewDidAppear.eraseToAnyPublisher() ) .receive(on: DispatchQueue.main) - .sink { [weak self] isEditing, resource, editingResource, _ in + .sink { [weak self] isEditing, displayResource, editingResource, _ in guard let self = self else { return } - let url: URL? = { - guard case let .url(url) = resource else { return nil } - return url - - }() - let image: UIImage? = { - guard case let .image(image) = editingResource else { return nil } - return image - }() - self.profileHeaderView.configure( - with: AvatarConfigurableViewConfiguration( - avatarImageURL: image == nil ? url : nil, // set only when image empty - placeholderImage: image, - keepImageCorner: true // fit preview transitioning + + let url = displayResource.url + let image = editingResource.image + + self.profileHeaderView.avatarButton.avatarImageView.configure( + configuration: AvatarImageView.Configuration( + url: isEditing && image != nil ? nil : url, + placeholder: image ?? UIImage.placeholder(color: Asset.Theme.Mastodon.systemGroupedBackground.color) ) ) } .store(in: &disposeBag) Publishers.CombineLatest4( - viewModel.isEditing, - viewModel.displayProfileInfo.name.removeDuplicates(), - viewModel.editProfileInfo.name.removeDuplicates(), - viewModel.emojiMeta + viewModel.$isEditing, + viewModel.displayProfileInfo.$name.removeDuplicates(), + viewModel.editProfileInfo.$name.removeDuplicates(), + viewModel.$emojiMeta ) .receive(on: DispatchQueue.main) .sink { [weak self] isEditing, name, editingName, emojiMeta in @@ -198,13 +176,13 @@ extension ProfileHeaderViewController { .store(in: &disposeBag) let profileNote = Publishers.CombineLatest3( - viewModel.isEditing.removeDuplicates(), - viewModel.displayProfileInfo.note.removeDuplicates(), + viewModel.$isEditing.removeDuplicates(), + viewModel.displayProfileInfo.$note.removeDuplicates(), viewModel.editProfileInfoDidInitialized ) .map { isEditing, displayNote, _ -> String? in if isEditing { - return self.viewModel.editProfileInfo.note.value + return self.viewModel.editProfileInfo.note } else { return displayNote } @@ -212,9 +190,9 @@ extension ProfileHeaderViewController { .eraseToAnyPublisher() Publishers.CombineLatest3( - viewModel.isEditing.removeDuplicates(), + viewModel.$isEditing.removeDuplicates(), profileNote.removeDuplicates(), - viewModel.emojiMeta.removeDuplicates() + viewModel.$emojiMeta.removeDuplicates() ) .receive(on: DispatchQueue.main) .sink { [weak self] isEditing, note, emojiMeta in @@ -245,26 +223,10 @@ extension ProfileHeaderViewController { .sink { [weak self] notification in guard let self = self else { return } guard let textField = notification.object as? UITextField else { return } - self.viewModel.editProfileInfo.name.value = textField.text + self.viewModel.editProfileInfo.name = textField.text } .store(in: &disposeBag) - Publishers.CombineLatest3( - viewModel.isEditing, - viewModel.displayProfileInfo.fields, - viewModel.needsFiledCollectionViewHidden - ) - .receive(on: RunLoop.main) - .sink { [weak self] isEditing, fields, needsHidden in - guard let self = self else { return } - guard !needsHidden else { - self.profileHeaderView.fieldCollectionView.isHidden = true - return - } - self.profileHeaderView.fieldCollectionView.isHidden = isEditing ? false : fields.isEmpty - } - .store(in: &disposeBag) - profileHeaderView.editAvatarButton.menu = createAvatarContextMenu() profileHeaderView.editAvatarButton.showsMenuAsPrimaryAction = true } @@ -285,13 +247,6 @@ extension ProfileHeaderViewController { setupBottomShadow() } - override func viewLayoutMarginsDidChange() { - super.viewLayoutMarginsDidChange() - - let margin = view.frame.maxX - view.readableContentGuide.layoutFrame.maxX - pageSegmentedControlLeadingLayoutConstraint.constant = margin - } - } extension ProfileHeaderViewController { @@ -335,57 +290,6 @@ extension ProfileHeaderViewController { } } -extension ProfileHeaderViewController { - - @objc private func pageSegmentedControlValueChanged(_ sender: UISegmentedControl) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: selectedSegmentIndex: %ld", ((#file as NSString).lastPathComponent), #line, #function, sender.selectedSegmentIndex) - delegate?.profileHeaderViewController(self, pageSegmentedControlValueChanged: sender, selectedSegmentIndex: sender.selectedSegmentIndex) - } - - // seealso: ProfileHeaderViewModel.setupProfileFieldCollectionViewDiffableDataSource(…) - @objc private func longPressReorderGestureHandler(_ sender: UILongPressGestureRecognizer) { - guard sender.view === profileHeaderView.fieldCollectionView else { - assertionFailure() - return - } - let collectionView = profileHeaderView.fieldCollectionView - switch(sender.state) { - case .began: - guard let selectedIndexPath = collectionView.indexPathForItem(at: sender.location(in: collectionView)), - let cell = collectionView.cellForItem(at: selectedIndexPath) as? ProfileFieldCollectionViewCell else { - break - } - // check if pressing reorder bar no not - let locationInCell = sender.location(in: cell.reorderBarImageView) - guard cell.reorderBarImageView.bounds.contains(locationInCell) else { - return - } - - collectionView.beginInteractiveMovementForItem(at: selectedIndexPath) - case .changed: - guard let selectedIndexPath = collectionView.indexPathForItem(at: sender.location(in: collectionView)), - let diffableDataSource = viewModel.fieldDiffableDataSource else { - break - } - guard let item = diffableDataSource.itemIdentifier(for: selectedIndexPath), - case .field = item else { - collectionView.cancelInteractiveMovement() - return - } - - var position = sender.location(in: collectionView) - position.x = collectionView.frame.width * 0.5 - collectionView.updateInteractiveMovementTargetPosition(position) - case .ended: - collectionView.endInteractiveMovement() - collectionView.reloadData() - default: - collectionView.cancelInteractiveMovement() - } - } - -} - extension ProfileHeaderViewController { func updateHeaderContainerSafeAreaInset(_ inset: UIEdgeInsets) { @@ -454,26 +358,23 @@ extension ProfileHeaderViewController { if viewModel.viewDidAppear.value { viewModel.isTitleViewContentOffsetSet.value = true } - + // set avatar fade if progress > 0 { - setProfileBannerFade(alpha: 0) + setProfileAvatar(alpha: 0) } else if progress > -abs(throttle) { // y = -(1/0.8T)x let alpha = -1 / abs(0.8 * throttle) * progress - setProfileBannerFade(alpha: alpha) + setProfileAvatar(alpha: alpha) } else { - setProfileBannerFade(alpha: 1) + setProfileAvatar(alpha: 1) } } - private func setProfileBannerFade(alpha: CGFloat) { + private func setProfileAvatar(alpha: CGFloat) { profileHeaderView.avatarImageViewBackgroundView.alpha = alpha - profileHeaderView.avatarImageView.alpha = alpha + profileHeaderView.avatarButton.alpha = alpha profileHeaderView.editAvatarBackgroundView.alpha = alpha - profileHeaderView.nameTextFieldBackgroundView.alpha = alpha - profileHeaderView.displayNameStackView.alpha = alpha - profileHeaderView.usernameLabel.alpha = alpha } } @@ -485,8 +386,8 @@ extension ProfileHeaderViewController: MetaTextDelegate { switch metaText { case profileHeaderView.bioMetaText: - guard viewModel.isEditing.value else { break } - viewModel.editProfileInfo.note.value = metaText.backedString + guard viewModel.isEditing else { break } + viewModel.editProfileInfo.note = metaText.backedString let metaContent = PlaintextMetaContent(string: metaText.backedString) return metaContent default: @@ -558,35 +459,7 @@ extension ProfileHeaderViewController: UIDocumentPickerDelegate { // MARK: - CropViewControllerDelegate extension ProfileHeaderViewController: CropViewControllerDelegate { public func cropViewController(_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, angle: Int) { - viewModel.editProfileInfo.avatarImageResource.value = .image(image) + viewModel.editProfileInfo.avatarImage = image cropViewController.dismiss(animated: true, completion: nil) } } - -// MARK: - UICollectionViewDelegate -extension ProfileHeaderViewController: UICollectionViewDelegate { - -} - -// MARK: - ProfileFieldCollectionViewCellDelegate -extension ProfileHeaderViewController: ProfileFieldCollectionViewCellDelegate { - - // should be remove style edit button - func profileFieldCollectionViewCell(_ cell: ProfileFieldCollectionViewCell, editButtonDidPressed button: UIButton) { - guard let diffableDataSource = viewModel.fieldDiffableDataSource else { return } - guard let indexPath = profileHeaderView.fieldCollectionView.indexPath(for: cell) else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - viewModel.removeFieldItem(item: item) - } - - func profileFieldCollectionViewCell(_ cell: ProfileFieldCollectionViewCell, metaLebel: MetaLabel, didSelectMeta meta: Meta) { - delegate?.profileHeaderViewController(self, profileFieldCollectionViewCell: cell, metaLabel: metaLebel, didSelectMeta: meta) - } -} - -// MARK: - ProfileFieldAddEntryCollectionViewCellDelegate -extension ProfileHeaderViewController: ProfileFieldAddEntryCollectionViewCellDelegate { - func ProfileFieldAddEntryCollectionViewCellDidPressed(_ cell: ProfileFieldAddEntryCollectionViewCell) { - viewModel.appendFieldItem() - } -} diff --git a/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel+Diffable.swift b/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel+Diffable.swift deleted file mode 100644 index b02eaa614..000000000 --- a/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel+Diffable.swift +++ /dev/null @@ -1,43 +0,0 @@ -// -// ProfileHeaderViewModel+Diffable.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-5-25. -// - -import UIKit - -extension ProfileHeaderViewModel { - func setupProfileFieldCollectionViewDiffableDataSource( - collectionView: UICollectionView, - profileFieldCollectionViewCellDelegate: ProfileFieldCollectionViewCellDelegate, - profileFieldAddEntryCollectionViewCellDelegate: ProfileFieldAddEntryCollectionViewCellDelegate - ) { - let diffableDataSource = ProfileFieldSection.collectionViewDiffableDataSource( - for: collectionView, - profileFieldCollectionViewCellDelegate: profileFieldCollectionViewCellDelegate, - profileFieldAddEntryCollectionViewCellDelegate: profileFieldAddEntryCollectionViewCellDelegate - ) - - diffableDataSource.reorderingHandlers.canReorderItem = { item in - switch item { - case .field: return true - default: return false - } - } - - diffableDataSource.reorderingHandlers.didReorder = { [weak self] transaction in - guard let self = self else { return } - - let items = transaction.finalSnapshot.itemIdentifiers - var fieldValues: [ProfileFieldItem.FieldValue] = [] - for item in items { - guard case let .field(field, _) = item else { continue } - fieldValues.append(field) - } - self.editProfileInfo.fields.value = fieldValues - } - - fieldDiffableDataSource = diffableDataSource - } -} diff --git a/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift b/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift index 408831202..7f7b0dd00 100644 --- a/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift +++ b/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift @@ -21,126 +21,69 @@ final class ProfileHeaderViewModel { // input let context: AppContext - let isEditing = CurrentValueSubject(false) + @Published var isEditing = false + @Published var accountForEdit: Mastodon.Entity.Account? + @Published var emojiMeta: MastodonContent.Emojis = [:] + let viewDidAppear = CurrentValueSubject(false) let needsSetupBottomShadow = CurrentValueSubject(true) let needsFiledCollectionViewHidden = CurrentValueSubject(false) let isTitleViewContentOffsetSet = CurrentValueSubject(false) - let emojiMeta = CurrentValueSubject([:]) - let accountForEdit = CurrentValueSubject(nil) // output + let isTitleViewDisplaying = CurrentValueSubject(false) let displayProfileInfo = ProfileInfo() let editProfileInfo = ProfileInfo() let editProfileInfoDidInitialized = CurrentValueSubject(Void()) // needs trigger initial event - let isTitleViewDisplaying = CurrentValueSubject(false) - var fieldDiffableDataSource: UICollectionViewDiffableDataSource! - + init(context: AppContext) { self.context = context - + Publishers.CombineLatest( - isEditing.removeDuplicates(), // only trigger when value toggle - accountForEdit + $isEditing.removeDuplicates(), // only trigger when value toggle + $accountForEdit ) .receive(on: DispatchQueue.main) .sink { [weak self] isEditing, account in guard let self = self else { return } guard isEditing else { return } // setup editing value when toggle to editing - self.editProfileInfo.name.value = self.displayProfileInfo.name.value // set to name - self.editProfileInfo.avatarImageResource.value = .image(nil) // set to empty - self.editProfileInfo.note.value = ProfileHeaderViewModel.normalize(note: self.displayProfileInfo.note.value) - self.editProfileInfo.fields.value = account?.source?.fields?.compactMap { field in - ProfileFieldItem.FieldValue(name: field.name, value: field.value) - } ?? [] + self.editProfileInfo.name = self.displayProfileInfo.name // set to name + self.editProfileInfo.avatarImage = nil // set to empty + self.editProfileInfo.note = ProfileHeaderViewModel.normalize(note: self.displayProfileInfo.note) self.editProfileInfoDidInitialized.send() } .store(in: &disposeBag) - - Publishers.CombineLatest4( - isEditing.removeDuplicates(), - displayProfileInfo.fields.removeDuplicates(), - editProfileInfo.fields.removeDuplicates(), - emojiMeta.removeDuplicates() - ) - .receive(on: RunLoop.main) - .sink { [weak self] isEditing, displayFields, editingFields, emojiMeta in - guard let self = self else { return } - guard let diffableDataSource = self.fieldDiffableDataSource else { return } - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - - let oldSnapshot = diffableDataSource.snapshot() - let oldFieldAttributeDict: [UUID: ProfileFieldItem.FieldItemAttribute] = { - var dict: [UUID: ProfileFieldItem.FieldItemAttribute] = [:] - for item in oldSnapshot.itemIdentifiers { - switch item { - case .field(let field, let attribute): - dict[field.id] = attribute - default: - continue - } - } - return dict - }() - let fields: [ProfileFieldItem.FieldValue] = isEditing ? editingFields : displayFields - var items = fields.map { field -> ProfileFieldItem in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: process field item ID: %s", ((#file as NSString).lastPathComponent), #line, #function, field.id.uuidString) - - let attribute = oldFieldAttributeDict[field.id] ?? ProfileFieldItem.FieldItemAttribute() - attribute.isEditing = isEditing - attribute.emojiMeta.value = emojiMeta - attribute.isLast = false - return ProfileFieldItem.field(field: field, attribute: attribute) - } - - if isEditing, fields.count < ProfileHeaderViewModel.maxProfileFieldCount { - items.append(.addEntry(attribute: ProfileFieldItem.AddEntryItemAttribute())) - } - - if let last = items.last?.listSeparatorLineConfigurable { - last.isLast = true - } - - snapshot.appendItems(items, toSection: .main) - - diffableDataSource.apply(snapshot, animatingDifferences: false, completion: nil) - } - .store(in: &disposeBag) } } extension ProfileHeaderViewModel { - struct ProfileInfo { - let name = CurrentValueSubject(nil) - let avatarImageResource = CurrentValueSubject(nil) - let note = CurrentValueSubject(nil) - let fields = CurrentValueSubject<[ProfileFieldItem.FieldValue], Never>([]) + class ProfileInfo { + // input + @Published var name: String? + @Published var avatarImageURL: URL? + @Published var avatarImage: UIImage? + @Published var note: String? - enum ImageResource { - case url(URL?) - case image(UIImage?) + // output + @Published var avatarImageResource = ImageResource(url: nil, image: nil) + + struct ImageResource { + let url: URL? + let image: UIImage? + } + + init() { + Publishers.CombineLatest( + $avatarImageURL, + $avatarImage + ) + .map { url, image in + ImageResource(url: url, image: image) + } + .assign(to: &$avatarImageResource) } - } -} - -extension ProfileHeaderViewModel { - func appendFieldItem() { - var fields = editProfileInfo.fields.value - guard fields.count < ProfileHeaderViewModel.maxProfileFieldCount else { return } - fields.append(ProfileFieldItem.FieldValue(name: "", value: "")) - editProfileInfo.fields.value = fields - } - - func removeFieldItem(item: ProfileFieldItem) { - var fields = editProfileInfo.fields.value - guard case let .field(field, _) = item else { return } - guard let removeIndex = fields.firstIndex(of: field) else { return } - fields.remove(at: removeIndex) - editProfileInfo.fields.value = fields } } @@ -154,69 +97,19 @@ extension ProfileHeaderViewModel { let html = try? HTML(html: note, encoding: .utf8) return html?.text } - - // check if profile change or not - func isProfileInfoEdited() -> Bool { - guard isEditing.value else { return false } - - guard editProfileInfo.name.value == displayProfileInfo.name.value else { return true } - guard case let .image(image) = editProfileInfo.avatarImageResource.value, image == nil else { return true } - guard editProfileInfo.note.value == ProfileHeaderViewModel.normalize(note: displayProfileInfo.note.value) else { return true } - let isFieldsEqual: Bool = { - let originalFields = self.accountForEdit.value?.source?.fields?.compactMap { field in - ProfileFieldItem.FieldValue(name: field.name, value: field.value) - } ?? [] - let editFields = editProfileInfo.fields.value - guard editFields.count == originalFields.count else { return false } - for (editField, originalField) in zip(editFields, originalFields) { - guard editField.name.value == originalField.name.value, - editField.value.value == originalField.value.value else { - return false - } - } - return true - }() - guard isFieldsEqual else { return true } + +} + + +// MARK: - ProfileViewModelEditable +extension ProfileHeaderViewModel: ProfileViewModelEditable { + func isEdited() -> Bool { + guard isEditing else { return false } + guard editProfileInfo.name == displayProfileInfo.name else { return true } + guard editProfileInfo.avatarImage == nil else { return true } + guard editProfileInfo.note == ProfileHeaderViewModel.normalize(note: displayProfileInfo.note) else { return true } + return false } - - func updateProfileInfo() -> AnyPublisher, Error> { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { - return Fail(error: APIService.APIError.implicit(.badRequest)).eraseToAnyPublisher() - } - let domain = activeMastodonAuthenticationBox.domain - let authorization = activeMastodonAuthenticationBox.userAuthorization - - let image: UIImage? = { - guard case let .image(_image) = editProfileInfo.avatarImageResource.value else { return nil } - guard let image = _image else { return nil } - guard image.size.width <= ProfileHeaderViewModel.avatarImageMaxSizeInPixel.width else { - return image.af.imageScaled(to: ProfileHeaderViewModel.avatarImageMaxSizeInPixel) - } - return image - }() - - let fieldsAttributes = editProfileInfo.fields.value.map { fieldValue in - Mastodon.Entity.Field(name: fieldValue.name.value, value: fieldValue.value.value) - } - - let query = Mastodon.API.Account.UpdateCredentialQuery( - discoverable: nil, - bot: nil, - displayName: editProfileInfo.name.value, - note: editProfileInfo.note.value, - avatar: image.flatMap { Mastodon.Query.MediaAttachment.png($0.pngData()) }, - header: nil, - locked: nil, - source: nil, - fieldsAttributes: fieldsAttributes - ) - return context.apiService.accountUpdateCredentials( - domain: domain, - query: query, - authorization: authorization - ) - } - } diff --git a/Mastodon/Scene/Profile/Header/View/ProfileFieldAddEntryCollectionViewCell.swift b/Mastodon/Scene/Profile/Header/View/ProfileFieldAddEntryCollectionViewCell.swift deleted file mode 100644 index cafe0eda9..000000000 --- a/Mastodon/Scene/Profile/Header/View/ProfileFieldAddEntryCollectionViewCell.swift +++ /dev/null @@ -1,177 +0,0 @@ -// -// ProfileFieldAddEntryCollectionViewCell.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-5-26. -// - -import os.log -import UIKit -import Combine - -protocol ProfileFieldAddEntryCollectionViewCellDelegate: AnyObject { - func ProfileFieldAddEntryCollectionViewCellDidPressed(_ cell: ProfileFieldAddEntryCollectionViewCell) -} - -final class ProfileFieldAddEntryCollectionViewCell: UICollectionViewCell { - - var disposeBag = Set() - - weak var delegate: ProfileFieldAddEntryCollectionViewCellDelegate? - - let singleTagGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - - - static let symbolConfiguration = ProfileFieldCollectionViewCell.symbolConfiguration - static let insertButtonImage = UIImage(systemName: "plus.circle.fill", withConfiguration: symbolConfiguration) - - let containerStackView = UIStackView() - - let fieldView = ProfileFieldView() - - let editButton: UIButton = { - let button = HitTestExpandedButton(type: .custom) - button.setImage(ProfileFieldAddEntryCollectionViewCell.insertButtonImage, for: .normal) - button.contentMode = .center - button.tintColor = .systemGreen - return button - }() - - var separatorLineToMarginLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToEdgeTrailingLayoutConstraint: NSLayoutConstraint! - var separatorLineToMarginTrailingLayoutConstraint: NSLayoutConstraint! - let bottomSeparatorLine = UIView.separatorLine - - override func prepareForReuse() { - super.prepareForReuse() - - disposeBag.removeAll() - } - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - -} - -extension ProfileFieldAddEntryCollectionViewCell { - - private func _init() { - containerStackView.axis = .horizontal - containerStackView.spacing = 8 - - containerStackView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - containerStackView.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh), - ]) - containerStackView.isLayoutMarginsRelativeArrangement = true - - containerStackView.addArrangedSubview(editButton) - containerStackView.addArrangedSubview(fieldView) - - editButton.setContentCompressionResistancePriority(.required - 1, for: .horizontal) - editButton.setContentHuggingPriority(.required - 1, for: .horizontal) - - bottomSeparatorLine.translatesAutoresizingMaskIntoConstraints = false - separatorLineToMarginLeadingLayoutConstraint = bottomSeparatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) - separatorLineToEdgeTrailingLayoutConstraint = bottomSeparatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor) - separatorLineToMarginTrailingLayoutConstraint = bottomSeparatorLine.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor) - - addSubview(bottomSeparatorLine) - NSLayoutConstraint.activate([ - separatorLineToMarginLeadingLayoutConstraint, - bottomSeparatorLine.bottomAnchor.constraint(equalTo: bottomAnchor), - bottomSeparatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: self)).priority(.defaultHigh), - ]) - - fieldView.titleMetaLabel.isHidden = false - fieldView.titleMetaLabel.configure(content: PlaintextMetaContent(string: L10n.Scene.Profile.Fields.addRow)) - fieldView.titleTextField.isHidden = true - - fieldView.valueMetaLabel.isHidden = false - fieldView.valueMetaLabel.configure(content: PlaintextMetaContent(string: " ")) - fieldView.valueTextField.isHidden = true - - addGestureRecognizer(singleTagGestureRecognizer) - singleTagGestureRecognizer.addTarget(self, action: #selector(ProfileFieldAddEntryCollectionViewCell.singleTapGestureRecognizerHandler(_:))) - - editButton.addTarget(self, action: #selector(ProfileFieldAddEntryCollectionViewCell.addButtonDidPressed(_:)), for: .touchUpInside) - - resetSeparatorLineLayout() - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - resetSeparatorLineLayout() - } - -} - -extension ProfileFieldAddEntryCollectionViewCell { - - @objc private func singleTapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.ProfileFieldAddEntryCollectionViewCellDidPressed(self) - } - - @objc private func addButtonDidPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.ProfileFieldAddEntryCollectionViewCellDidPressed(self) - } - -} - -extension ProfileFieldAddEntryCollectionViewCell { - private func resetSeparatorLineLayout() { - separatorLineToEdgeTrailingLayoutConstraint.isActive = false - separatorLineToMarginTrailingLayoutConstraint.isActive = false - - if traitCollection.userInterfaceIdiom == .phone { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - if traitCollection.horizontalSizeClass == .compact { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - // to margin - NSLayoutConstraint.activate([ - separatorLineToMarginTrailingLayoutConstraint, - ]) - } - } - } -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct ProfileFieldAddEntryCollectionViewCell_Previews: PreviewProvider { - - static var previews: some View { - UIViewPreview(width: 375) { - ProfileFieldAddEntryCollectionViewCell() - } - .previewLayout(.fixed(width: 375, height: 44)) - } - -} - -#endif - diff --git a/Mastodon/Scene/Profile/Header/View/ProfileFieldCollectionViewCell.swift b/Mastodon/Scene/Profile/Header/View/ProfileFieldCollectionViewCell.swift deleted file mode 100644 index 9106b0e44..000000000 --- a/Mastodon/Scene/Profile/Header/View/ProfileFieldCollectionViewCell.swift +++ /dev/null @@ -1,180 +0,0 @@ -// -// ProfileFieldCollectionViewCell.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-5-25. -// - -import os.log -import UIKit -import Combine -import MetaTextKit - -protocol ProfileFieldCollectionViewCellDelegate: AnyObject { - func profileFieldCollectionViewCell(_ cell: ProfileFieldCollectionViewCell, editButtonDidPressed button: UIButton) - func profileFieldCollectionViewCell(_ cell: ProfileFieldCollectionViewCell, metaLebel: MetaLabel, didSelectMeta meta: Meta) -} - -final class ProfileFieldCollectionViewCell: UICollectionViewCell { - - var disposeBag = Set() - - weak var delegate: ProfileFieldCollectionViewCellDelegate? - - static let symbolConfiguration = UIImage.SymbolConfiguration(pointSize: 22, weight: .semibold, scale: .medium) - static let removeButtonItem = UIImage(systemName: "minus.circle.fill", withConfiguration: symbolConfiguration) - - let containerStackView = UIStackView() - - let fieldView = ProfileFieldView() - - let editButton: UIButton = { - let button = HitTestExpandedButton(type: .custom) - button.setImage(ProfileFieldCollectionViewCell.removeButtonItem, for: .normal) - button.contentMode = .center - button.tintColor = .systemRed - return button - }() - - let reorderBarImageView: UIImageView = { - let imageView = UIImageView() - imageView.contentMode = .scaleAspectFit - imageView.image = UIImage(systemName: "line.horizontal.3")?.withConfiguration(UIImage.SymbolConfiguration(pointSize: 20, weight: .regular)).withRenderingMode(.alwaysTemplate) - imageView.tintColor = Asset.Colors.Label.secondary.color - return imageView - }() - - var separatorLineToMarginLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToEdgeTrailingLayoutConstraint: NSLayoutConstraint! - var separatorLineToMarginTrailingLayoutConstraint: NSLayoutConstraint! - let bottomSeparatorLine = UIView.separatorLine - - override func prepareForReuse() { - super.prepareForReuse() - - disposeBag.removeAll() - } - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - -} - -extension ProfileFieldCollectionViewCell { - - private func _init() { - containerStackView.axis = .horizontal - containerStackView.spacing = 8 - - containerStackView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - containerStackView.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh), - ]) - containerStackView.isLayoutMarginsRelativeArrangement = true - - containerStackView.addArrangedSubview(editButton) - containerStackView.addArrangedSubview(fieldView) - containerStackView.addArrangedSubview(reorderBarImageView) - - editButton.setContentCompressionResistancePriority(.required - 1, for: .horizontal) - editButton.setContentHuggingPriority(.required - 1, for: .horizontal) - reorderBarImageView.setContentHuggingPriority(.required - 1, for: .horizontal) - reorderBarImageView.setContentCompressionResistancePriority(.required - 1, for: .horizontal) - - bottomSeparatorLine.translatesAutoresizingMaskIntoConstraints = false - separatorLineToMarginLeadingLayoutConstraint = bottomSeparatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) - separatorLineToEdgeTrailingLayoutConstraint = bottomSeparatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor) - separatorLineToMarginTrailingLayoutConstraint = bottomSeparatorLine.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor) - - addSubview(bottomSeparatorLine) - NSLayoutConstraint.activate([ - separatorLineToMarginLeadingLayoutConstraint, - bottomSeparatorLine.bottomAnchor.constraint(equalTo: bottomAnchor), - bottomSeparatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: self)).priority(.defaultHigh), - ]) - - editButton.addTarget(self, action: #selector(ProfileFieldCollectionViewCell.editButtonDidPressed(_:)), for: .touchUpInside) - - fieldView.valueMetaLabel.linkDelegate = self - - resetSeparatorLineLayout() - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - resetSeparatorLineLayout() - } - -} - -extension ProfileFieldCollectionViewCell { - private func resetSeparatorLineLayout() { - separatorLineToEdgeTrailingLayoutConstraint.isActive = false - separatorLineToMarginTrailingLayoutConstraint.isActive = false - - if traitCollection.userInterfaceIdiom == .phone { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - if traitCollection.horizontalSizeClass == .compact { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - // to margin - NSLayoutConstraint.activate([ - separatorLineToMarginTrailingLayoutConstraint, - ]) - } - } - } -} - -extension ProfileFieldCollectionViewCell { - @objc private func editButtonDidPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.profileFieldCollectionViewCell(self, editButtonDidPressed: sender) - } -} - -// MARK: - MetaLabelDelegate -extension ProfileFieldCollectionViewCell: MetaLabelDelegate { - func metaLabel(_ metaLabel: MetaLabel, didSelectMeta meta: Meta) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.profileFieldCollectionViewCell(self, metaLebel: metaLabel, didSelectMeta: meta) - } -} - - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct ProfileFieldCollectionViewCell_Previews: PreviewProvider { - - static var previews: some View { - UIViewPreview(width: 375) { - ProfileFieldCollectionViewCell() - } - .previewLayout(.fixed(width: 375, height: 44)) - } - -} - -#endif - diff --git a/Mastodon/Scene/Profile/Header/View/ProfileFieldCollectionViewHeaderFooterView.swift b/Mastodon/Scene/Profile/Header/View/ProfileFieldCollectionViewHeaderFooterView.swift index 83fec9bcf..8a0d3c6d6 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileFieldCollectionViewHeaderFooterView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileFieldCollectionViewHeaderFooterView.swift @@ -12,8 +12,6 @@ final class ProfileFieldCollectionViewHeaderFooterView: UICollectionReusableView static let headerReuseIdentifer = "ProfileFieldCollectionViewHeaderFooterView.Header" static let footerReuseIdentifer = "ProfileFieldCollectionViewHeaderFooterView.Footer" - let separatorLine = UIView.separatorLine - override init(frame: CGRect) { super.init(frame: frame) _init() @@ -28,15 +26,6 @@ final class ProfileFieldCollectionViewHeaderFooterView: UICollectionReusableView extension ProfileFieldCollectionViewHeaderFooterView { private func _init() { - separatorLine.translatesAutoresizingMaskIntoConstraints = false - addSubview(separatorLine) - NSLayoutConstraint.activate([ - separatorLine.topAnchor.constraint(equalTo: topAnchor), - // workaround SDK supplementariesFollowContentInsets not works issue - separatorLine.leadingAnchor.constraint(equalTo: leadingAnchor, constant: -9999), - separatorLine.trailingAnchor.constraint(equalTo: trailingAnchor, constant: 9999), - separatorLine.bottomAnchor.constraint(equalTo: bottomAnchor), - separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: self)).priority(.defaultHigh), - ]) + } } diff --git a/Mastodon/Scene/Profile/Header/View/ProfileFieldView.swift b/Mastodon/Scene/Profile/Header/View/ProfileFieldView.swift deleted file mode 100644 index ee17d7e4d..000000000 --- a/Mastodon/Scene/Profile/Header/View/ProfileFieldView.swift +++ /dev/null @@ -1,141 +0,0 @@ -// -// ProfileFieldView.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-30. -// - -import UIKit -import Combine -import MetaTextKit - -final class ProfileFieldView: UIView { - - var disposeBag = Set() - - // output - let name = PassthroughSubject() - let value = PassthroughSubject() - - // for custom emoji display - let titleMetaLabel = MetaLabel(style: .profileFieldName) - - // for editing - let titleTextField: UITextField = { - let textField = UITextField() - textField.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold), maximumPointSize: 20) - textField.textColor = Asset.Colors.Label.primary.color - textField.placeholder = L10n.Scene.Profile.Fields.Placeholder.label - return textField - }() - - // for custom emoji display - let valueMetaLabel = MetaLabel(style: .profileFieldValue) - - // for editing - let valueTextField: UITextField = { - let textField = UITextField() - textField.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular), maximumPointSize: 20) - textField.textColor = Asset.Colors.Label.primary.color - textField.placeholder = L10n.Scene.Profile.Fields.Placeholder.content - textField.textAlignment = .right - return textField - }() - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - -} - -extension ProfileFieldView { - private func _init() { - - let containerStackView = UIStackView() - containerStackView.axis = .horizontal - containerStackView.alignment = .center - - // note: - // do not use readable layout guide to workaround SDK issue - // otherwise, the `ProfileFieldCollectionViewCell` cannot display edit button and reorder icon - containerStackView.translatesAutoresizingMaskIntoConstraints = false - addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) - titleMetaLabel.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(titleMetaLabel) - NSLayoutConstraint.activate([ - titleMetaLabel.widthAnchor.constraint(greaterThanOrEqualToConstant: 44).priority(.defaultHigh), - ]) - titleTextField.setContentHuggingPriority(.defaultLow - 1, for: .horizontal) - titleTextField.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(titleTextField) - NSLayoutConstraint.activate([ - titleTextField.widthAnchor.constraint(greaterThanOrEqualToConstant: 44).priority(.defaultHigh), - ]) - titleTextField.setContentHuggingPriority(.defaultLow - 1, for: .horizontal) - - valueMetaLabel.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(valueMetaLabel) - NSLayoutConstraint.activate([ - valueMetaLabel.widthAnchor.constraint(greaterThanOrEqualToConstant: 44).priority(.defaultHigh), - ]) - valueMetaLabel.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal) - valueTextField.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(valueTextField) - NSLayoutConstraint.activate([ - valueTextField.widthAnchor.constraint(greaterThanOrEqualToConstant: 44).priority(.defaultHigh), - ]) - - titleTextField.isHidden = true - valueTextField.isHidden = true - - NotificationCenter.default - .publisher(for: UITextField.textDidChangeNotification, object: titleTextField) - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in - guard let self = self else { return } - self.name.send(self.titleTextField.text ?? "") - } - .store(in: &disposeBag) - - NotificationCenter.default - .publisher(for: UITextField.textDidChangeNotification, object: valueTextField) - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in - guard let self = self else { return } - self.value.send(self.valueTextField.text ?? "") - } - .store(in: &disposeBag) - } -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct ProfileFieldView_Previews: PreviewProvider { - - static var previews: some View { - UIViewPreview(width: 375) { - let filedView = ProfileFieldView() - let content = PlaintextMetaContent(string: "https://mastodon.online") - filedView.valueMetaLabel.configure(content: content) - return filedView - } - .previewLayout(.fixed(width: 375, height: 100)) - } - -} - -#endif - diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index 016b31a1e..eddfc6485 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -10,9 +10,12 @@ import UIKit import Combine import FLAnimatedImage import MetaTextKit +import MastodonAsset +import MastodonLocalization +import MastodonUI protocol ProfileHeaderViewDelegate: AnyObject { - func profileHeaderView(_ profileHeaderView: ProfileHeaderView, avatarImageViewDidPressed imageView: UIImageView) + func profileHeaderView(_ profileHeaderView: ProfileHeaderView, avatarButtonDidPressed button: AvatarButton) func profileHeaderView(_ profileHeaderView: ProfileHeaderView, bannerImageViewDidPressed imageView: UIImageView) func profileHeaderView(_ profileHeaderView: ProfileHeaderView, relationshipButtonDidPressed button: ProfileRelationshipActionButton) func profileHeaderView(_ profileHeaderView: ProfileHeaderView, metaTextView: MetaTextView, metaDidPressed meta: Meta) @@ -22,8 +25,8 @@ protocol ProfileHeaderViewDelegate: AnyObject { final class ProfileHeaderView: UIView { - static let avatarImageViewSize = CGSize(width: 56, height: 56) - static let avatarImageViewCornerRadius: CGFloat = 6 + static let avatarImageViewSize = CGSize(width: 98, height: 98) + static let avatarImageViewCornerRadius: CGFloat = 25 static let avatarImageViewBorderColor = UIColor.white static let avatarImageViewBorderWidth: CGFloat = 2 static let friendshipActionButtonSize = CGSize(width: 108, height: 34) @@ -69,13 +72,10 @@ final class ProfileHeaderView: UIView { return view }() - let avatarImageView: FLAnimatedImageView = { - let imageView = FLAnimatedImageView() - let placeholderImage = UIImage - .placeholder(size: ProfileHeaderView.avatarImageViewSize, color: Asset.Theme.Mastodon.systemGroupedBackground.color) - .af.imageRounded(withCornerRadius: ProfileHeaderView.avatarImageViewCornerRadius, divideRadiusByImageScale: false) - imageView.image = placeholderImage - return imageView + let avatarButton: AvatarButton = { + let button = AvatarButton() + button.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 0))) + return button }() func setupAvatarOverlayViews() { @@ -123,34 +123,32 @@ final class ProfileHeaderView: UIView { metaText.textView.isSelectable = false metaText.textView.isScrollEnabled = false metaText.textView.layer.masksToBounds = false - metaText.textView.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold), maximumPointSize: 28) + metaText.textView.font = UIFontMetrics(forTextStyle: .title2).scaledFont(for: .systemFont(ofSize: 22, weight: .bold)) metaText.textView.textColor = .white metaText.textView.textContainer.lineFragmentPadding = 0 metaText.textAttributes = [ - .font: UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold), maximumPointSize: 28), - .foregroundColor: UIColor.white + .font: UIFontMetrics(forTextStyle: .title2).scaledFont(for: .systemFont(ofSize: 22, weight: .bold)), + .foregroundColor: Asset.Colors.Label.primary.color ] return metaText }() let nameTextField: UITextField = { let textField = UITextField() - textField.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold), maximumPointSize: 28) - textField.textColor = .white + textField.font = UIFontMetrics(forTextStyle: .title2).scaledFont(for: .systemFont(ofSize: 22, weight: .bold)) + textField.textColor = Asset.Colors.Label.secondary.color textField.text = "Alice" textField.autocorrectionType = .no textField.autocapitalizationType = .none - textField.applyShadow(color: UIColor.black.withAlphaComponent(0.2), alpha: 0.5, x: 0, y: 2, blur: 2, spread: 0) return textField }() let usernameLabel: UILabel = { let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .subheadline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular), maximumPointSize: 20) + label.font = UIFontMetrics(forTextStyle: .callout).scaledFont(for: .systemFont(ofSize: 16, weight: .regular)) label.adjustsFontSizeToFitWidth = true label.minimumScaleFactor = 0.5 - label.textColor = Asset.Scene.Profile.Banner.usernameGray.color + label.textColor = Asset.Colors.Label.secondary.color label.text = "@alice" - label.applyShadow(color: UIColor.black.withAlphaComponent(0.2), alpha: 0.5, x: 0, y: 2, blur: 2, spread: 0) return label }() @@ -198,36 +196,36 @@ final class ProfileHeaderView: UIView { return metaText }() - static func createFieldCollectionViewLayout() -> UICollectionViewLayout { - let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(44)) - let item = NSCollectionLayoutItem(layoutSize: itemSize) - let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(44)) - let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitems: [item]) - let section = NSCollectionLayoutSection(group: group) - section.contentInsetsReference = .readableContent - - let headerFooterSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(1)) - let header = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerFooterSize, elementKind: UICollectionView.elementKindSectionHeader, alignment: .top) - let footer = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerFooterSize, elementKind: UICollectionView.elementKindSectionFooter, alignment: .bottom) - section.boundarySupplementaryItems = [header, footer] - // note: toggle this not take effect - // section.supplementariesFollowContentInsets = false - - return UICollectionViewCompositionalLayout(section: section) - } - - let fieldCollectionView: UICollectionView = { - let collectionViewLayout = ProfileHeaderView.createFieldCollectionViewLayout() - let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 100, height: 100), collectionViewLayout: collectionViewLayout) - collectionView.register(ProfileFieldCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ProfileFieldCollectionViewCell.self)) - collectionView.register(ProfileFieldAddEntryCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ProfileFieldAddEntryCollectionViewCell.self)) - collectionView.register(ProfileFieldCollectionViewHeaderFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.headerReuseIdentifer) - collectionView.register(ProfileFieldCollectionViewHeaderFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.footerReuseIdentifer) - collectionView.isScrollEnabled = false - return collectionView - }() - var fieldCollectionViewHeightLayoutConstraint: NSLayoutConstraint! - var fieldCollectionViewHeightObservation: NSKeyValueObservation? +// static func createFieldCollectionViewLayout() -> UICollectionViewLayout { +// let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(44)) +// let item = NSCollectionLayoutItem(layoutSize: itemSize) +// let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(44)) +// let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitems: [item]) +// let section = NSCollectionLayoutSection(group: group) +// section.contentInsetsReference = .readableContent +// +// let headerFooterSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(1)) +// let header = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerFooterSize, elementKind: UICollectionView.elementKindSectionHeader, alignment: .top) +// let footer = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerFooterSize, elementKind: UICollectionView.elementKindSectionFooter, alignment: .bottom) +// section.boundarySupplementaryItems = [header, footer] +// // note: toggle this not take effect +// // section.supplementariesFollowContentInsets = false +// +// return UICollectionViewCompositionalLayout(section: section) +// } +// +// let fieldCollectionView: UICollectionView = { +// let collectionViewLayout = ProfileHeaderView.createFieldCollectionViewLayout() +// let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 100, height: 100), collectionViewLayout: collectionViewLayout) +// collectionView.register(ProfileFieldCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ProfileFieldCollectionViewCell.self)) +// collectionView.register(ProfileFieldAddEntryCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ProfileFieldAddEntryCollectionViewCell.self)) +// collectionView.register(ProfileFieldCollectionViewHeaderFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.headerReuseIdentifer) +// collectionView.register(ProfileFieldCollectionViewHeaderFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.footerReuseIdentifer) +// collectionView.isScrollEnabled = false +// return collectionView +// }() +// var fieldCollectionViewHeightLayoutConstraint: NSLayoutConstraint! +// var fieldCollectionViewHeightObservation: NSKeyValueObservation? override init(frame: CGRect) { super.init(frame: frame) @@ -240,21 +238,19 @@ final class ProfileHeaderView: UIView { } deinit { - fieldCollectionViewHeightObservation = nil +// fieldCollectionViewHeightObservation = nil } } extension ProfileHeaderView { private func _init() { - backgroundColor = ThemeService.shared.currentTheme.value.systemGroupedBackgroundColor - fieldCollectionView.backgroundColor = ThemeService.shared.currentTheme.value.profileFieldCollectionViewBackgroundColor + backgroundColor = ThemeService.shared.currentTheme.value.systemBackgroundColor ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } - self.backgroundColor = theme.systemGroupedBackgroundColor - self.fieldCollectionView.backgroundColor = theme.profileFieldCollectionViewBackgroundColor + self.backgroundColor = theme.systemBackgroundColor } .store(in: &disposeBag) @@ -284,21 +280,21 @@ extension ProfileHeaderView { // avatar avatarImageViewBackgroundView.translatesAutoresizingMaskIntoConstraints = false - bannerContainerView.addSubview(avatarImageViewBackgroundView) + addSubview(avatarImageViewBackgroundView) NSLayoutConstraint.activate([ avatarImageViewBackgroundView.leadingAnchor.constraint(equalTo: bannerContainerView.readableContentGuide.leadingAnchor), - bannerContainerView.bottomAnchor.constraint(equalTo: avatarImageViewBackgroundView.bottomAnchor, constant: 20), + // align to dashboardContainer bottom ]) - avatarImageView.translatesAutoresizingMaskIntoConstraints = false - avatarImageViewBackgroundView.addSubview(avatarImageView) + avatarButton.translatesAutoresizingMaskIntoConstraints = false + avatarImageViewBackgroundView.addSubview(avatarButton) NSLayoutConstraint.activate([ - avatarImageView.topAnchor.constraint(equalTo: avatarImageViewBackgroundView.topAnchor, constant: 0.5 * ProfileHeaderView.avatarImageViewBorderWidth), - avatarImageView.leadingAnchor.constraint(equalTo: avatarImageViewBackgroundView.leadingAnchor, constant: 0.5 * ProfileHeaderView.avatarImageViewBorderWidth), - avatarImageViewBackgroundView.trailingAnchor.constraint(equalTo: avatarImageView.trailingAnchor, constant: 0.5 * ProfileHeaderView.avatarImageViewBorderWidth), - avatarImageViewBackgroundView.bottomAnchor.constraint(equalTo: avatarImageView.bottomAnchor, constant: 0.5 * ProfileHeaderView.avatarImageViewBorderWidth), - avatarImageView.widthAnchor.constraint(equalToConstant: ProfileHeaderView.avatarImageViewSize.width).priority(.required - 1), - avatarImageView.heightAnchor.constraint(equalToConstant: ProfileHeaderView.avatarImageViewSize.height).priority(.required - 1), + avatarButton.topAnchor.constraint(equalTo: avatarImageViewBackgroundView.topAnchor, constant: 0.5 * ProfileHeaderView.avatarImageViewBorderWidth), + avatarButton.leadingAnchor.constraint(equalTo: avatarImageViewBackgroundView.leadingAnchor, constant: 0.5 * ProfileHeaderView.avatarImageViewBorderWidth), + avatarImageViewBackgroundView.trailingAnchor.constraint(equalTo: avatarButton.trailingAnchor, constant: 0.5 * ProfileHeaderView.avatarImageViewBorderWidth), + avatarImageViewBackgroundView.bottomAnchor.constraint(equalTo: avatarButton.bottomAnchor, constant: 0.5 * ProfileHeaderView.avatarImageViewBorderWidth), + avatarButton.widthAnchor.constraint(equalToConstant: ProfileHeaderView.avatarImageViewSize.width).priority(.required - 1), + avatarButton.heightAnchor.constraint(equalToConstant: ProfileHeaderView.avatarImageViewSize.height).priority(.required - 1), ]) avatarImageViewOverlayVisualEffectView.translatesAutoresizingMaskIntoConstraints = false @@ -311,12 +307,12 @@ extension ProfileHeaderView { ]) editAvatarBackgroundView.translatesAutoresizingMaskIntoConstraints = false - avatarImageView.addSubview(editAvatarBackgroundView) + avatarButton.addSubview(editAvatarBackgroundView) NSLayoutConstraint.activate([ - editAvatarBackgroundView.topAnchor.constraint(equalTo: avatarImageView.topAnchor), - editAvatarBackgroundView.leadingAnchor.constraint(equalTo: avatarImageView.leadingAnchor), - editAvatarBackgroundView.trailingAnchor.constraint(equalTo: avatarImageView.trailingAnchor), - editAvatarBackgroundView.bottomAnchor.constraint(equalTo: avatarImageView.bottomAnchor), + editAvatarBackgroundView.topAnchor.constraint(equalTo: avatarButton.topAnchor), + editAvatarBackgroundView.leadingAnchor.constraint(equalTo: avatarButton.leadingAnchor), + editAvatarBackgroundView.trailingAnchor.constraint(equalTo: avatarButton.trailingAnchor), + editAvatarBackgroundView.bottomAnchor.constraint(equalTo: avatarButton.bottomAnchor), ]) editAvatarButton.translatesAutoresizingMaskIntoConstraints = false @@ -328,20 +324,50 @@ extension ProfileHeaderView { editAvatarButton.bottomAnchor.constraint(equalTo: editAvatarBackgroundView.bottomAnchor), ]) editAvatarBackgroundView.isUserInteractionEnabled = true - avatarImageView.isUserInteractionEnabled = true - - // name container: [display name container | username] + avatarButton.isUserInteractionEnabled = true + + // container: V - [ dashboard container | author container | bio ] + let container = UIStackView() + container.axis = .vertical + container.spacing = 8 + container.preservesSuperviewLayoutMargins = true + container.isLayoutMarginsRelativeArrangement = true + container.layoutMargins.top = 12 + + container.translatesAutoresizingMaskIntoConstraints = false + addSubview(container) + NSLayoutConstraint.activate([ + container.topAnchor.constraint(equalTo: bannerContainerView.bottomAnchor), + container.leadingAnchor.constraint(equalTo: leadingAnchor), + container.trailingAnchor.constraint(equalTo: trailingAnchor), + container.bottomAnchor.constraint(equalTo: bottomAnchor), + ]) + + // dashboardContainer: H - [ padding | statusDashboardView ] + let dashboardContainer = UIStackView() + dashboardContainer.axis = .horizontal + container.addArrangedSubview(dashboardContainer) + + let dashboardPaddingView = UIView() + dashboardContainer.addArrangedSubview(dashboardPaddingView) + dashboardContainer.addArrangedSubview(statusDashboardView) + + NSLayoutConstraint.activate([ + avatarImageViewBackgroundView.bottomAnchor.constraint(equalTo: dashboardContainer.bottomAnchor), + ]) + + // authorContainer: H - [ nameContainer | relationshipActionButton ] + let authorContainer = UIStackView() + authorContainer.axis = .horizontal + authorContainer.alignment = .top + authorContainer.spacing = 10 + container.addArrangedSubview(authorContainer) + + // name container: V - [ display name container | username ] let nameContainerStackView = UIStackView() nameContainerStackView.preservesSuperviewLayoutMargins = true nameContainerStackView.axis = .vertical - nameContainerStackView.spacing = 7 nameContainerStackView.translatesAutoresizingMaskIntoConstraints = false - addSubview(nameContainerStackView) - NSLayoutConstraint.activate([ - nameContainerStackView.leadingAnchor.constraint(equalTo: avatarImageView.trailingAnchor, constant: 12), - nameContainerStackView.trailingAnchor.constraint(equalTo: readableContentGuide.trailingAnchor), - nameContainerStackView.centerYAnchor.constraint(equalTo: avatarImageView.centerYAnchor), - ]) displayNameStackView.axis = .horizontal nameTextField.translatesAutoresizingMaskIntoConstraints = false @@ -365,94 +391,38 @@ extension ProfileHeaderView { nameMetaText.textView.translatesAutoresizingMaskIntoConstraints = false displayNameStackView.addSubview(nameMetaText.textView) NSLayoutConstraint.activate([ - nameMetaText.textView.centerYAnchor.constraint(equalTo: nameTextField.centerYAnchor), - nameMetaText.textView.leadingAnchor.constraint(equalTo: nameTextField.leadingAnchor), - nameMetaText.textView.trailingAnchor.constraint(equalTo: nameTextField.trailingAnchor), + nameMetaText.textView.topAnchor.constraint(equalTo: nameTextFieldBackgroundView.topAnchor), + nameMetaText.textView.leadingAnchor.constraint(equalTo: nameTextFieldBackgroundView.leadingAnchor, constant: 5), + nameTextFieldBackgroundView.trailingAnchor.constraint(equalTo: nameMetaText.textView.trailingAnchor, constant: 5), + nameMetaText.textView.bottomAnchor.constraint(equalTo: nameTextFieldBackgroundView.bottomAnchor), ]) nameContainerStackView.addArrangedSubview(displayNameStackView) nameContainerStackView.addArrangedSubview(usernameLabel) - // meta container: [dashboard container | bio container | field container] - let metaContainerStackView = UIStackView() - metaContainerStackView.spacing = 16 - metaContainerStackView.axis = .vertical - metaContainerStackView.preservesSuperviewLayoutMargins = true - metaContainerStackView.translatesAutoresizingMaskIntoConstraints = false - addSubview(metaContainerStackView) - NSLayoutConstraint.activate([ - metaContainerStackView.topAnchor.constraint(equalTo: bannerContainerView.bottomAnchor, constant: 13), - metaContainerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), - metaContainerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), - metaContainerStackView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) - - // dashboard container: [dashboard | friendship action button] - let dashboardContainerView = UIView() - dashboardContainerView.preservesSuperviewLayoutMargins = true - metaContainerStackView.addArrangedSubview(dashboardContainerView) - - statusDashboardView.translatesAutoresizingMaskIntoConstraints = false - dashboardContainerView.addSubview(statusDashboardView) - NSLayoutConstraint.activate([ - statusDashboardView.topAnchor.constraint(equalTo: dashboardContainerView.topAnchor), - statusDashboardView.leadingAnchor.constraint(equalTo: dashboardContainerView.readableContentGuide.leadingAnchor), - statusDashboardView.bottomAnchor.constraint(equalTo: dashboardContainerView.bottomAnchor), - ]) - + authorContainer.addArrangedSubview(nameContainerStackView) relationshipActionButton.translatesAutoresizingMaskIntoConstraints = false - dashboardContainerView.addSubview(relationshipActionButton) + authorContainer.addArrangedSubview(relationshipActionButton) NSLayoutConstraint.activate([ - relationshipActionButton.topAnchor.constraint(equalTo: dashboardContainerView.topAnchor), - relationshipActionButton.leadingAnchor.constraint(greaterThanOrEqualTo: statusDashboardView.trailingAnchor, constant: 8), - relationshipActionButton.trailingAnchor.constraint(equalTo: dashboardContainerView.readableContentGuide.trailingAnchor), relationshipActionButton.widthAnchor.constraint(greaterThanOrEqualToConstant: ProfileHeaderView.friendshipActionButtonSize.width).priority(.required - 1), relationshipActionButton.heightAnchor.constraint(equalToConstant: ProfileHeaderView.friendshipActionButtonSize.height).priority(.defaultHigh), ]) - relationshipActionButton.setContentHuggingPriority(.required - 10, for: .horizontal) - - bioContainerView.preservesSuperviewLayoutMargins = true - metaContainerStackView.addArrangedSubview(bioContainerView) - - bioMetaText.textView.translatesAutoresizingMaskIntoConstraints = false - bioContainerView.addSubview(bioMetaText.textView) - NSLayoutConstraint.activate([ - bioMetaText.textView.topAnchor.constraint(equalTo: bioContainerView.topAnchor), - bioMetaText.textView.leadingAnchor.constraint(equalTo: bioContainerView.readableContentGuide.leadingAnchor), - bioMetaText.textView.trailingAnchor.constraint(equalTo: bioContainerView.readableContentGuide.trailingAnchor), - bioMetaText.textView.bottomAnchor.constraint(equalTo: bioContainerView.bottomAnchor), - ]) - - fieldCollectionView.translatesAutoresizingMaskIntoConstraints = false - metaContainerStackView.addArrangedSubview(fieldCollectionView) - fieldCollectionViewHeightLayoutConstraint = fieldCollectionView.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh) - NSLayoutConstraint.activate([ - fieldCollectionViewHeightLayoutConstraint, - ]) - fieldCollectionViewHeightObservation = fieldCollectionView.observe(\.contentSize, options: .new, changeHandler: { [weak self] tableView, _ in - guard let self = self else { return } - guard self.fieldCollectionView.contentSize.height != .zero else { - self.fieldCollectionViewHeightLayoutConstraint.constant = 44 - return - } - self.fieldCollectionViewHeightLayoutConstraint.constant = self.fieldCollectionView.contentSize.height - }) + // bio + container.addArrangedSubview(bioMetaText.textView) + bringSubviewToFront(bannerContainerView) - bringSubviewToFront(nameContainerStackView) + bringSubviewToFront(avatarImageViewBackgroundView) statusDashboardView.delegate = self bioMetaText.textView.delegate = self bioMetaText.textView.linkDelegate = self - let avatarImageViewSingleTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - avatarImageView.addGestureRecognizer(avatarImageViewSingleTapGestureRecognizer) - avatarImageViewSingleTapGestureRecognizer.addTarget(self, action: #selector(ProfileHeaderView.avatarImageViewDidPressed(_:))) - let bannerImageViewSingleTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer bannerImageView.addGestureRecognizer(bannerImageViewSingleTapGestureRecognizer) bannerImageViewSingleTapGestureRecognizer.addTarget(self, action: #selector(ProfileHeaderView.bannerImageViewDidPressed(_:))) + avatarButton.addTarget(self, action: #selector(ProfileHeaderView.avatarButtonDidPressed(_:)), for: .touchUpInside) relationshipActionButton.addTarget(self, action: #selector(ProfileHeaderView.relationshipActionButtonDidPressed(_:)), for: .touchUpInside) configure(state: .normal) @@ -514,9 +484,10 @@ extension ProfileHeaderView { delegate?.profileHeaderView(self, relationshipButtonDidPressed: relationshipActionButton) } - @objc private func avatarImageViewDidPressed(_ sender: UITapGestureRecognizer) { + @objc private func avatarButtonDidPressed(_ sender: UIButton) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.profileHeaderView(self, avatarImageViewDidPressed: avatarImageView) + assert(sender === avatarButton) + delegate?.profileHeaderView(self, avatarButtonDidPressed: avatarButton) } @objc private func bannerImageViewDidPressed(_ sender: UITapGestureRecognizer) { @@ -553,14 +524,6 @@ extension ProfileHeaderView: ProfileStatusDashboardViewDelegate { } } -// MARK: - AvatarConfigurableView -extension ProfileHeaderView: AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { avatarImageViewSize } - static var configurableAvatarImageCornerRadius: CGFloat { avatarImageViewCornerRadius } - var configurableAvatarImageView: FLAnimatedImageView? { return avatarImageView } -} - - #if DEBUG import SwiftUI diff --git a/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardMeterView.swift b/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardMeterView.swift index 53cd21f60..9176d7a3c 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardMeterView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardMeterView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class ProfileStatusDashboardMeterView: UIView { diff --git a/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardView.swift b/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardView.swift index c21703c08..5bb23b0bb 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardView.swift @@ -7,6 +7,8 @@ import os.log import UIKit +import MastodonAsset +import MastodonLocalization protocol ProfileStatusDashboardViewDelegate: AnyObject { func profileStatusDashboardView(_ dashboardView: ProfileStatusDashboardView, dashboardMeterViewDidPressed dashboardMeterView: ProfileStatusDashboardMeterView, meter: ProfileStatusDashboardView.Meter) diff --git a/Mastodon/Scene/Profile/ProfileViewController+UserProvider.swift b/Mastodon/Scene/Profile/ProfileViewController+UserProvider.swift deleted file mode 100644 index 6bfa132b8..000000000 --- a/Mastodon/Scene/Profile/ProfileViewController+UserProvider.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// ProfileViewController+UserProvider.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-4-1. -// - -import Foundation -import Combine -import CoreDataStack -import UIKit - -extension ProfileViewController: UserProvider { - func mastodonUser(for cell: UITableViewCell?) -> Future { - return Future { promise in - promise(.success(nil)) - } - } - - - func mastodonUser() -> Future { - return Future { promise in - promise(.success(self.viewModel.mastodonUser.value)) - } - } - -} diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index 5ff71ba99..30f2dc423 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -10,9 +10,20 @@ import UIKit import Combine import MastodonMeta import MetaTextKit +import MastodonAsset +import MastodonLocalization +import MastodonUI +import Tabman +import CoreDataStack + +protocol ProfileViewModelEditable { + func isEdited() -> Bool +} final class ProfileViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { + let logger = Logger(subsystem: "ProfileViewController", category: "ViewController") + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -145,7 +156,7 @@ extension ProfileViewController { view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.view.backgroundColor = theme.secondarySystemBackgroundColor @@ -221,12 +232,12 @@ extension ProfileViewController { return } - if !isReplyBarButtonItemHidden { - items.append(self.replyBarButtonItem) - } if !isMoreMenuBarButtonItemHidden { items.append(self.moreMenuBarButtonItem) } + if !isReplyBarButtonItemHidden { + items.append(self.replyBarButtonItem) + } } .store(in: &disposeBag) @@ -242,11 +253,14 @@ extension ProfileViewController { let mediaUserTimelineViewModel = UserTimelineViewModel(context: context, domain: viewModel.domain.value, userID: viewModel.userID.value, queryFilter: UserTimelineViewModel.QueryFilter(onlyMedia: true)) bind(userTimelineViewModel: mediaUserTimelineViewModel) + let profileAboutViewModel = ProfileAboutViewModel(context: context) + profileSegmentedViewController.pagingViewController.viewModel = { let profilePagingViewModel = ProfilePagingViewModel( postsUserTimelineViewModel: postsUserTimelineViewModel, repliesUserTimelineViewModel: repliesUserTimelineViewModel, - mediaUserTimelineViewModel: mediaUserTimelineViewModel + mediaUserTimelineViewModel: mediaUserTimelineViewModel, + profileAboutViewModel: profileAboutViewModel ) profilePagingViewModel.viewControllers.forEach { viewController in if let viewController = viewController as? NeedsDependency { @@ -257,12 +271,21 @@ extension ProfileViewController { return profilePagingViewModel }() - profileHeaderViewController.pageSegmentedControl.removeAllSegments() - profileSegmentedViewController.pagingViewController.viewModel.barItems.forEach { item in - let index = profileHeaderViewController.pageSegmentedControl.numberOfSegments - profileHeaderViewController.pageSegmentedControl.insertSegment(withTitle: item.title, at: index, animated: false) - } - profileHeaderViewController.pageSegmentedControl.selectedSegmentIndex = 0 + profileSegmentedViewController.pagingViewController.addBar( + profileHeaderViewController.buttonBar, + dataSource: profileSegmentedViewController.pagingViewController.viewModel, + at: .custom(view: profileHeaderViewController.view, layout: { buttonBar in + buttonBar.translatesAutoresizingMaskIntoConstraints = false + self.profileHeaderViewController.view.addSubview(buttonBar) + NSLayoutConstraint.activate([ + buttonBar.topAnchor.constraint(equalTo: self.profileHeaderViewController.profileHeaderView.bottomAnchor), + buttonBar.leadingAnchor.constraint(equalTo: self.profileHeaderViewController.view.layoutMarginsGuide.leadingAnchor), + buttonBar.trailingAnchor.constraint(equalTo: self.profileHeaderViewController.view.layoutMarginsGuide.trailingAnchor), + buttonBar.bottomAnchor.constraint(equalTo: self.profileHeaderViewController.view.bottomAnchor), + buttonBar.heightAnchor.constraint(equalToConstant: ProfileHeaderViewController.segmentedControlHeight).priority(.required - 1), + ]) + }) + ) overlayScrollView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(overlayScrollView) @@ -312,260 +335,28 @@ extension ProfileViewController { overlayScrollView.layer.zPosition = .greatestFiniteMagnitude // make vision top-most overlayScrollView.delegate = self profileHeaderViewController.delegate = self + profileSegmentedViewController.pagingViewController.viewModel.profileAboutViewController.delegate = self profileSegmentedViewController.pagingViewController.pagingDelegate = self // bind view model - Publishers.CombineLatest3( - viewModel.name, - viewModel.emojiMeta, - viewModel.statusesCount + bindProfile( + headerViewModel: profileHeaderViewController.viewModel, + aboutViewModel: profileAboutViewModel ) - .receive(on: DispatchQueue.main) - .sink { [weak self] name, emojiMeta, statusesCount in - guard let self = self else { return } - guard let title = name, let statusesCount = statusesCount, - let formattedStatusCount = MastodonMetricFormatter().string(from: statusesCount) else { - self.titleView.isHidden = true - return - } - self.titleView.isHidden = false - let subtitle = L10n.Plural.Count.MetricFormatted.post(formattedStatusCount, statusesCount) - let mastodonContent = MastodonContent(content: title, emojis: emojiMeta) - do { - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - self.titleView.update(titleMetaContent: metaContent, subtitle: subtitle) - } catch { - - } - } - .store(in: &disposeBag) - viewModel.name - .receive(on: DispatchQueue.main) - .sink { [weak self] name in - guard let self = self else { return } - self.navigationItem.title = name - } - .store(in: &disposeBag) - Publishers.CombineLatest( - viewModel.bannerImageURL.eraseToAnyPublisher(), - viewModel.viewDidAppear.eraseToAnyPublisher() - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] bannerImageURL, _ in - guard let self = self else { return } - self.profileHeaderViewController.profileHeaderView.bannerImageView.af.cancelImageRequest() - let placeholder = UIImage.placeholder(color: ProfileHeaderView.bannerImageViewPlaceholderColor) - guard let bannerImageURL = bannerImageURL else { - self.profileHeaderViewController.profileHeaderView.bannerImageView.image = placeholder - return - } - self.profileHeaderViewController.profileHeaderView.bannerImageView.af.setImage( - withURL: bannerImageURL, - placeholderImage: placeholder, - imageTransition: .crossDissolve(0.3), - runImageTransitionIfCached: false, - completion: { [weak self] response in - guard let self = self else { return } - guard let image = response.value else { return } - guard image.size.width > 1 && image.size.height > 1 else { - // restore to placeholder when image invalid - self.profileHeaderViewController.profileHeaderView.bannerImageView.image = placeholder - return - } - } - ) - } - .store(in: &disposeBag) - viewModel.avatarImageURL - .receive(on: DispatchQueue.main) - .map { url in ProfileHeaderViewModel.ProfileInfo.ImageResource.url(url) } - .assign(to: \.value, on: profileHeaderViewController.viewModel.displayProfileInfo.avatarImageResource) - .store(in: &disposeBag) - viewModel.name - .map { $0 ?? "" } - .receive(on: DispatchQueue.main) - .assign(to: \.value, on: profileHeaderViewController.viewModel.displayProfileInfo.name) - .store(in: &disposeBag) - viewModel.fields - .removeDuplicates() - .map { fields -> [ProfileFieldItem.FieldValue] in - fields.map { ProfileFieldItem.FieldValue(name: $0.name, value: $0.value) } - } - .receive(on: DispatchQueue.main) - .assign(to: \.value, on: profileHeaderViewController.viewModel.displayProfileInfo.fields) - .store(in: &disposeBag) - viewModel.accountForEdit - .assign(to: \.value, on: profileHeaderViewController.viewModel.accountForEdit) - .store(in: &disposeBag) - viewModel.emojiMeta - .receive(on: DispatchQueue.main) - .assign(to: \.value, on: profileHeaderViewController.viewModel.emojiMeta) - .store(in: &disposeBag) - viewModel.username - .map { username in username.flatMap { "@" + $0 } ?? " " } - .receive(on: DispatchQueue.main) - .assign(to: \.text, on: profileHeaderViewController.profileHeaderView.usernameLabel) - .store(in: &disposeBag) - Publishers.CombineLatest( - viewModel.relationshipActionOptionSet, - viewModel.context.blockDomainService.blockedDomains - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] relationshipActionOptionSet,domains in - guard let self = self else { return } - guard let mastodonUser = self.viewModel.mastodonUser.value else { - self.moreMenuBarButtonItem.menu = nil - return - } - guard let currentMastodonUser = self.viewModel.currentMastodonUser.value else { - self.moreMenuBarButtonItem.menu = nil - return - } - guard let currentDomain = self.viewModel.domain.value else { return } - let isMuting = relationshipActionOptionSet.contains(.muting) - let isBlocking = relationshipActionOptionSet.contains(.blocking) - let isDomainBlocking = domains.contains(mastodonUser.domainFromAcct) - let needsShareAction = self.viewModel.isMeBarButtonItemsHidden.value - let isInSameDomain = mastodonUser.domainFromAcct == currentDomain - let isMyself = currentMastodonUser.id == mastodonUser.id - - self.moreMenuBarButtonItem.menu = UserProviderFacade.createProfileActionMenu( - for: mastodonUser, - isMyself: isMyself, - isMuting: isMuting, - isBlocking: isBlocking, - isInSameDomain: isInSameDomain, - isDomainBlocking: isDomainBlocking, - provider: self, - cell: nil, - sourceView: nil, - barButtonItem: self.moreMenuBarButtonItem, - shareUser: needsShareAction ? mastodonUser : nil, - shareStatus: nil) - } - .store(in: &disposeBag) + bindTitleView() + bindHeader() + bindProfileRelationship() + bindProfileDashboard() - viewModel.isRelationshipActionButtonHidden - .receive(on: DispatchQueue.main) - .sink { [weak self] isHidden in - guard let self = self else { return } - self.profileHeaderViewController.profileHeaderView.relationshipActionButton.isHidden = isHidden - } - .store(in: &disposeBag) - Publishers.CombineLatest3( - viewModel.relationshipActionOptionSet.eraseToAnyPublisher(), - viewModel.isEditing.eraseToAnyPublisher(), - viewModel.isUpdating.eraseToAnyPublisher() - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] relationshipActionSet, isEditing, isUpdating in - guard let self = self else { return } - let friendshipButton = self.profileHeaderViewController.profileHeaderView.relationshipActionButton - if relationshipActionSet.contains(.edit) { - // check .edit state and set .editing when isEditing - friendshipButton.configure(actionOptionSet: isUpdating ? .updating : (isEditing ? .editing : .edit)) - self.profileHeaderViewController.profileHeaderView.configure(state: isEditing ? .editing : .normal) - } else { - friendshipButton.configure(actionOptionSet: relationshipActionSet) - } - } - .store(in: &disposeBag) - viewModel.isEditing - .handleEvents(receiveOutput: { [weak self] isEditing in - guard let self = self else { return } - // set first responder for key command - if !isEditing { - DispatchQueue.main.asyncAfter(deadline: .now() + 1) { - self.profileSegmentedViewController.pagingViewController.becomeFirstResponder() - } - } - - // dismiss keyboard if needs - if !isEditing { self.view.endEditing(true) } - - self.profileHeaderViewController.pageSegmentedControl.isEnabled = !isEditing - self.profileSegmentedViewController.view.isUserInteractionEnabled = !isEditing - - let animator = UIViewPropertyAnimator(duration: 0.33, curve: .easeInOut) - animator.addAnimations { - self.profileSegmentedViewController.view.alpha = isEditing ? 0.2 : 1.0 - self.profileHeaderViewController.profileHeaderView.statusDashboardView.alpha = isEditing ? 0.2 : 1.0 - } - animator.startAnimation() - }) - .assign(to: \.value, on: profileHeaderViewController.viewModel.isEditing) - .store(in: &disposeBag) - Publishers.CombineLatest3( - viewModel.isBlocking.eraseToAnyPublisher(), - viewModel.isBlockedBy.eraseToAnyPublisher(), - viewModel.suspended.eraseToAnyPublisher() - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] isBlocking, isBlockedBy, suspended in - guard let self = self else { return } - let isNeedSetHidden = isBlocking || isBlockedBy || suspended - self.profileHeaderViewController.viewModel.needsSetupBottomShadow.value = !isNeedSetHidden - self.profileHeaderViewController.profileHeaderView.bioContainerView.isHidden = isNeedSetHidden - self.profileHeaderViewController.viewModel.needsFiledCollectionViewHidden.value = isNeedSetHidden - self.profileHeaderViewController.pageSegmentedControl.isEnabled = !isNeedSetHidden - self.viewModel.needsPagePinToTop.value = isNeedSetHidden - } - .store(in: &disposeBag) - viewModel.bioDescription - .receive(on: DispatchQueue.main) - .assign(to: \.value, on: profileHeaderViewController.viewModel.displayProfileInfo.note) - .store(in: &disposeBag) - viewModel.statusesCount - .receive(on: DispatchQueue.main) - .sink { [weak self] count in - guard let self = self else { return } - let text = count.flatMap { MastodonMetricFormatter().string(from: $0) } ?? "-" - self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.numberLabel.text = text - self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.isAccessibilityElement = true - self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.accessibilityLabel = L10n.Plural.Count.post(count ?? 0) - } - .store(in: &disposeBag) - viewModel.followingCount - .receive(on: DispatchQueue.main) - .sink { [weak self] count in - guard let self = self else { return } - let text = count.flatMap { MastodonMetricFormatter().string(from: $0) } ?? "-" - self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.numberLabel.text = text - self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.isAccessibilityElement = true - self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.accessibilityLabel = L10n.Plural.Count.following(count ?? 0) - } - .store(in: &disposeBag) - viewModel.followersCount - .receive(on: DispatchQueue.main) - .sink { [weak self] count in - guard let self = self else { return } - let text = count.flatMap { MastodonMetricFormatter().string(from: $0) } ?? "-" - self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.numberLabel.text = text - self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.isAccessibilityElement = true - self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.accessibilityLabel = L10n.Plural.Count.follower(count ?? 0) - } - .store(in: &disposeBag) viewModel.needsPagingEnabled - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] needsPaingEnabled in guard let self = self else { return } self.profileSegmentedViewController.pagingViewController.isScrollEnabled = needsPaingEnabled } .store(in: &disposeBag) - viewModel.needsImageOverlayBlurred - .receive(on: RunLoop.main) - .sink { [weak self] needsImageOverlayBlurred in - guard let self = self else { return } - UIView.animate(withDuration: 0.33) { - let bannerEffect: UIVisualEffect? = needsImageOverlayBlurred ? ProfileHeaderView.bannerImageViewOverlayBlurEffect : nil - self.profileHeaderViewController.profileHeaderView.bannerImageViewOverlayVisualEffectView.effect = bannerEffect - let avatarEffect: UIVisualEffect? = needsImageOverlayBlurred ? ProfileHeaderView.avatarImageViewOverlayBlurEffect : nil - self.profileHeaderViewController.profileHeaderView.avatarImageViewOverlayVisualEffectView.effect = avatarEffect - } - } - .store(in: &disposeBag) - + profileHeaderViewController.profileHeaderView.delegate = self } @@ -600,14 +391,322 @@ extension ProfileViewController { extension ProfileViewController { private func bind(userTimelineViewModel: UserTimelineViewModel) { - viewModel.domain.assign(to: \.value, on: userTimelineViewModel.domain).store(in: &disposeBag) - viewModel.userID.assign(to: \.value, on: userTimelineViewModel.userID).store(in: &disposeBag) + viewModel.domain.assign(to: \.domain, on: userTimelineViewModel).store(in: &disposeBag) + viewModel.userID.assign(to: \.userID, on: userTimelineViewModel).store(in: &disposeBag) viewModel.isBlocking.assign(to: \.value, on: userTimelineViewModel.isBlocking).store(in: &disposeBag) viewModel.isBlockedBy.assign(to: \.value, on: userTimelineViewModel.isBlockedBy).store(in: &disposeBag) viewModel.suspended.assign(to: \.value, on: userTimelineViewModel.isSuspended).store(in: &disposeBag) viewModel.name.assign(to: \.value, on: userTimelineViewModel.userDisplayName).store(in: &disposeBag) } + private func bindProfile( + headerViewModel: ProfileHeaderViewModel, + aboutViewModel: ProfileAboutViewModel + ) { + // header + viewModel.avatarImageURL + .receive(on: DispatchQueue.main) + .assign(to: \.avatarImageURL, on: headerViewModel.displayProfileInfo) + .store(in: &disposeBag) + viewModel.name + .map { $0 ?? "" } + .receive(on: DispatchQueue.main) + .assign(to: \.name, on: headerViewModel.displayProfileInfo) + .store(in: &disposeBag) + viewModel.bioDescription + .receive(on: DispatchQueue.main) + .assign(to: \.note, on: headerViewModel.displayProfileInfo) + .store(in: &disposeBag) + + // about + Publishers.CombineLatest( + viewModel.fields.removeDuplicates(), + viewModel.emojiMeta.removeDuplicates() + ) + .map { fields, emojiMeta -> [ProfileFieldItem.FieldValue] in + fields.map { ProfileFieldItem.FieldValue(name: $0.name, value: $0.value, emojiMeta: emojiMeta) } + } + .receive(on: DispatchQueue.main) + .assign(to: \.fields, on: aboutViewModel.displayProfileInfo) + .store(in: &disposeBag) + + // common + viewModel.accountForEdit + .assign(to: \.accountForEdit, on: headerViewModel) + .store(in: &disposeBag) + viewModel.accountForEdit + .assign(to: \.accountForEdit, on: aboutViewModel) + .store(in: &disposeBag) + viewModel.emojiMeta + .receive(on: DispatchQueue.main) + .assign(to: \.emojiMeta, on: headerViewModel) + .store(in: &disposeBag) + viewModel.emojiMeta + .receive(on: DispatchQueue.main) + .assign(to: \.emojiMeta, on: aboutViewModel) + .store(in: &disposeBag) + viewModel.isEditing + .assign(to: \.isEditing, on: headerViewModel) + .store(in: &disposeBag) + viewModel.isEditing + .assign(to: \.isEditing, on: aboutViewModel) + .store(in: &disposeBag) + } + + private func bindTitleView() { + Publishers.CombineLatest3( + viewModel.name, + viewModel.emojiMeta, + viewModel.statusesCount + ) + .receive(on: DispatchQueue.main) + .sink { [weak self] name, emojiMeta, statusesCount in + guard let self = self else { return } + guard let title = name, let statusesCount = statusesCount, + let formattedStatusCount = MastodonMetricFormatter().string(from: statusesCount) else { + self.titleView.isHidden = true + return + } + self.titleView.isHidden = false + let subtitle = L10n.Plural.Count.MetricFormatted.post(formattedStatusCount, statusesCount) + let mastodonContent = MastodonContent(content: title, emojis: emojiMeta) + do { + let metaContent = try MastodonMetaContent.convert(document: mastodonContent) + self.titleView.update(titleMetaContent: metaContent, subtitle: subtitle) + } catch { + + } + } + .store(in: &disposeBag) + viewModel.name + .receive(on: DispatchQueue.main) + .sink { [weak self] name in + guard let self = self else { return } + self.navigationItem.title = name + } + .store(in: &disposeBag) + } + + private func bindHeader() { + // heaer UI + Publishers.CombineLatest( + viewModel.bannerImageURL.eraseToAnyPublisher(), + viewModel.viewDidAppear.eraseToAnyPublisher() + ) + .receive(on: DispatchQueue.main) + .sink { [weak self] bannerImageURL, _ in + guard let self = self else { return } + self.profileHeaderViewController.profileHeaderView.bannerImageView.af.cancelImageRequest() + let placeholder = UIImage.placeholder(color: ProfileHeaderView.bannerImageViewPlaceholderColor) + guard let bannerImageURL = bannerImageURL else { + self.profileHeaderViewController.profileHeaderView.bannerImageView.image = placeholder + return + } + self.profileHeaderViewController.profileHeaderView.bannerImageView.af.setImage( + withURL: bannerImageURL, + placeholderImage: placeholder, + imageTransition: .crossDissolve(0.3), + runImageTransitionIfCached: false, + completion: { [weak self] response in + guard let self = self else { return } + guard let image = response.value else { return } + guard image.size.width > 1 && image.size.height > 1 else { + // restore to placeholder when image invalid + self.profileHeaderViewController.profileHeaderView.bannerImageView.image = placeholder + return + } + } + ) + } + .store(in: &disposeBag) + + viewModel.username + .map { username in username.flatMap { "@" + $0 } ?? " " } + .receive(on: DispatchQueue.main) + .assign(to: \.text, on: profileHeaderViewController.profileHeaderView.usernameLabel) + .store(in: &disposeBag) + + viewModel.isEditing + .receive(on: DispatchQueue.main) + .sink { [weak self] isEditing in + guard let self = self else { return } + // set first responder for key command + if !isEditing { + DispatchQueue.main.asyncAfter(deadline: .now() + 1) { + self.profileSegmentedViewController.pagingViewController.becomeFirstResponder() + } + } + + // dismiss keyboard if needs + if !isEditing { self.view.endEditing(true) } + + self.profileHeaderViewController.buttonBar.isUserInteractionEnabled = !isEditing + if isEditing { + // scroll to About page + self.profileSegmentedViewController.pagingViewController.scrollToPage( + .last, + animated: true, + completion: nil + ) + self.profileSegmentedViewController.pagingViewController.isScrollEnabled = false + } else { + self.profileSegmentedViewController.pagingViewController.isScrollEnabled = true + } + + let animator = UIViewPropertyAnimator(duration: 0.33, curve: .easeInOut) + animator.addAnimations { + self.profileHeaderViewController.profileHeaderView.statusDashboardView.alpha = isEditing ? 0.2 : 1.0 + } + animator.startAnimation() + } + .store(in: &disposeBag) + + viewModel.needsImageOverlayBlurred + .receive(on: DispatchQueue.main) + .sink { [weak self] needsImageOverlayBlurred in + guard let self = self else { return } + UIView.animate(withDuration: 0.33) { + let bannerEffect: UIVisualEffect? = needsImageOverlayBlurred ? ProfileHeaderView.bannerImageViewOverlayBlurEffect : nil + self.profileHeaderViewController.profileHeaderView.bannerImageViewOverlayVisualEffectView.effect = bannerEffect + let avatarEffect: UIVisualEffect? = needsImageOverlayBlurred ? ProfileHeaderView.avatarImageViewOverlayBlurEffect : nil + self.profileHeaderViewController.profileHeaderView.avatarImageViewOverlayVisualEffectView.effect = avatarEffect + } + } + .store(in: &disposeBag) + } + + private func bindProfileRelationship() { + Publishers.CombineLatest( + viewModel.mastodonUser, + viewModel.relationshipActionOptionSet + ) + .asyncMap { [weak self] user, relationshipSet -> UIMenu? in + guard let self = self else { return nil } + guard let user = user else { + return nil + } + let name = user.displayNameWithFallback + let record = ManagedObjectRecord(objectID: user.objectID) + let menu = MastodonMenu.setupMenu( + actions: [ + .muteUser(.init(name: name, isMuting: self.viewModel.isMuting.value)), + .blockUser(.init(name: name, isBlocking: self.viewModel.isBlocking.value)), + .reportUser(.init(name: name)), + .shareUser(.init(name: name)), + ], + delegate: self + ) + return menu + } + .sink { [weak self] completion in + guard let self = self else { return } + switch completion { + case .failure(let error): + self.moreMenuBarButtonItem.menu = nil + case .finished: + break + } + } receiveValue: { [weak self] menu in + guard let self = self else { return } + self.moreMenuBarButtonItem.menu = menu + } + .store(in: &disposeBag) + + viewModel.isRelationshipActionButtonHidden + .receive(on: DispatchQueue.main) + .sink { [weak self] isHidden in + guard let self = self else { return } + self.profileHeaderViewController.profileHeaderView.relationshipActionButton.isHidden = isHidden + } + .store(in: &disposeBag) + + Publishers.CombineLatest3( + viewModel.relationshipActionOptionSet.eraseToAnyPublisher(), + viewModel.isEditing.eraseToAnyPublisher(), + viewModel.isUpdating.eraseToAnyPublisher() + ) + .receive(on: DispatchQueue.main) + .sink { [weak self] relationshipActionSet, isEditing, isUpdating in + guard let self = self else { return } + let friendshipButton = self.profileHeaderViewController.profileHeaderView.relationshipActionButton + if relationshipActionSet.contains(.edit) { + // check .edit state and set .editing when isEditing + friendshipButton.configure(actionOptionSet: isUpdating ? .updating : (isEditing ? .editing : .edit)) + self.profileHeaderViewController.profileHeaderView.configure(state: isEditing ? .editing : .normal) + } else { + friendshipButton.configure(actionOptionSet: relationshipActionSet) + } + } + .store(in: &disposeBag) + + Publishers.CombineLatest3( + viewModel.isBlocking.eraseToAnyPublisher(), + viewModel.isBlockedBy.eraseToAnyPublisher(), + viewModel.suspended.eraseToAnyPublisher() + ) + .receive(on: DispatchQueue.main) + .sink { [weak self] isBlocking, isBlockedBy, suspended in + guard let self = self else { return } + let isNeedSetHidden = isBlocking || isBlockedBy || suspended + self.profileHeaderViewController.viewModel.needsSetupBottomShadow.value = !isNeedSetHidden + self.profileHeaderViewController.profileHeaderView.bioContainerView.isHidden = isNeedSetHidden + self.profileHeaderViewController.viewModel.needsFiledCollectionViewHidden.value = isNeedSetHidden + self.profileHeaderViewController.buttonBar.isUserInteractionEnabled = !isNeedSetHidden + self.viewModel.needsPagePinToTop.value = isNeedSetHidden + } + .store(in: &disposeBag) + } // end func bindProfileRelationship + + private func bindProfileDashboard() { + viewModel.statusesCount + .receive(on: DispatchQueue.main) + .sink { [weak self] count in + guard let self = self else { return } + let text = count.flatMap { MastodonMetricFormatter().string(from: $0) } ?? "-" + self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.numberLabel.text = text + self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.isAccessibilityElement = true + self.profileHeaderViewController.profileHeaderView.statusDashboardView.postDashboardMeterView.accessibilityLabel = L10n.Plural.Count.post(count ?? 0) + } + .store(in: &disposeBag) + viewModel.followingCount + .receive(on: DispatchQueue.main) + .sink { [weak self] count in + guard let self = self else { return } + let text = count.flatMap { MastodonMetricFormatter().string(from: $0) } ?? "-" + self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.numberLabel.text = text + self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.isAccessibilityElement = true + self.profileHeaderViewController.profileHeaderView.statusDashboardView.followingDashboardMeterView.accessibilityLabel = L10n.Plural.Count.following(count ?? 0) + } + .store(in: &disposeBag) + viewModel.followersCount + .receive(on: DispatchQueue.main) + .sink { [weak self] count in + guard let self = self else { return } + let text = count.flatMap { MastodonMetricFormatter().string(from: $0) } ?? "-" + self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.numberLabel.text = text + self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.isAccessibilityElement = true + self.profileHeaderViewController.profileHeaderView.statusDashboardView.followersDashboardMeterView.accessibilityLabel = L10n.Plural.Count.follower(count ?? 0) + } + .store(in: &disposeBag) + } + + private func handleMetaPress(_ meta: Meta) { + switch meta { + case .url(_, _, let url, _): + guard let url = URL(string: url) else { return } + coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) + case .mention(_, _, let userInfo): + guard let href = userInfo?["href"] as? String, + let url = URL(string: href) else { return } + coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) + case .hashtag(_, let hashtag, _): + let hashtagTimelineViewModel = HashtagTimelineViewModel(context: context, hashtag: hashtag) + coordinator.present(scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: nil, transition: .show) + case .email, .emoji: + break + } + } + } extension ProfileViewController { @@ -626,17 +725,24 @@ extension ProfileViewController { @objc private func shareBarButtonItemPressed(_ sender: UIBarButtonItem) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - guard let mastodonUser = viewModel.mastodonUser.value else { return } - let activityViewController = UserProviderFacade.createActivityViewControllerForMastodonUser(mastodonUser: mastodonUser, dependency: self) - coordinator.present( - scene: .activityViewController( - activityViewController: activityViewController, - sourceView: nil, - barButtonItem: sender - ), - from: self, - transition: .activityViewControllerPresent(animated: true, completion: nil) - ) + guard let user = viewModel.mastodonUser.value else { return } + let record: ManagedObjectRecord = .init(objectID: user.objectID) + Task { + let _activityViewController = try await DataSourceFacade.createActivityViewController( + dependency: self, + user: record + ) + guard let activityViewController = _activityViewController else { return } + self.coordinator.present( + scene: .activityViewController( + activityViewController: activityViewController, + sourceView: nil, + barButtonItem: sender + ), + from: self, + transition: .activityViewControllerPresent(animated: true, completion: nil) + ) + } // end Task } @objc private func favoriteBarButtonItemPressed(_ sender: UIBarButtonItem) { @@ -647,10 +753,12 @@ extension ProfileViewController { @objc private func replyBarButtonItemPressed(_ sender: UIBarButtonItem) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } guard let mastodonUser = viewModel.mastodonUser.value else { return } let composeViewModel = ComposeViewModel( context: context, - composeKind: .mention(mastodonUserObjectID: mastodonUser.objectID) + composeKind: .mention(user: .init(objectID: mastodonUser.objectID)), + authenticationBox: authenticationBox ) coordinator.present(scene: .compose(viewModel: composeViewModel), from: self, transition: .modal(animated: true, completion: nil)) } @@ -696,7 +804,7 @@ extension ProfileViewController: UIScrollViewDelegate { } // elastically banner image - let headerScrollProgress = containerScrollView.contentOffset.y / topMaxContentOffsetY + let headerScrollProgress = (containerScrollView.contentOffset.y - containerScrollView.safeAreaInsets.top) / topMaxContentOffsetY let throttle = ProfileHeaderViewController.headerMinHeight / topMaxContentOffsetY profileHeaderViewController.updateHeaderScrollProgress(headerScrollProgress, throttle: throttle) } @@ -715,35 +823,6 @@ extension ProfileViewController: ProfileHeaderViewControllerDelegate { updateOverlayScrollViewContentSize(scrollView: scrollView) } - func profileHeaderViewController(_ viewController: ProfileHeaderViewController, pageSegmentedControlValueChanged segmentedControl: UISegmentedControl, selectedSegmentIndex index: Int) { - profileSegmentedViewController.pagingViewController.scrollToPage( - .at(index: index), - animated: true - ) - } - - func profileHeaderViewController(_ viewController: ProfileHeaderViewController, profileFieldCollectionViewCell: ProfileFieldCollectionViewCell, metaLabel: MetaLabel, didSelectMeta meta: Meta) { - switch meta { - case .url(_, _, let url, _): - guard let url = URL(string: url) else { return } - coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) - case .hashtag(_, let hashtag, _): - let hashtagTimelineViewModel = HashtagTimelineViewModel(context: context, hashtag: hashtag) - coordinator.present(scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: nil, transition: .show) - case .mention(_, _, let userInfo): - guard let href = userInfo?["href"] as? String else { - // currently we cannot present profile scene without userID - return - } - guard let url = URL(string: href) else { return } - coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) - case .email: - break - case .emoji: - break - } - } - } // MARK: - ProfilePagingViewControllerDelegate @@ -752,10 +831,10 @@ extension ProfileViewController: ProfilePagingViewControllerDelegate { func profilePagingViewController(_ viewController: ProfilePagingViewController, didScrollToPostCustomScrollViewContainerController postTimelineViewController: ScrollViewContainer, atIndex index: Int) { os_log("%{public}s[%{public}ld], %{public}s: select at index: %ld", ((#file as NSString).lastPathComponent), #line, #function, index) - // update segemented control - if index < profileHeaderViewController.pageSegmentedControl.numberOfSegments { - profileHeaderViewController.pageSegmentedControl.selectedSegmentIndex = index - } +// // update segemented control +// if index < profileHeaderViewController.pageSegmentedControl.numberOfSegments { +// profileHeaderViewController.pageSegmentedControl.selectedSegmentIndex = index +// } // save content offset overlayScrollView.contentOffset.y = contentOffsets[index] ?? containerScrollView.contentOffset.y @@ -769,73 +848,42 @@ extension ProfileViewController: ProfilePagingViewControllerDelegate { // MARK: - ProfileHeaderViewDelegate extension ProfileViewController: ProfileHeaderViewDelegate { - func profileHeaderView(_ profileHeaderView: ProfileHeaderView, avatarImageViewDidPressed imageView: UIImageView) { - guard let mastodonUser = viewModel.mastodonUser.value else { return } - guard let avatar = imageView.image else { return } + func profileHeaderView(_ profileHeaderView: ProfileHeaderView, avatarButtonDidPressed button: AvatarButton) { + guard let user = viewModel.mastodonUser.value else { return } + let record: ManagedObjectRecord = .init(objectID: user.objectID) - let meta = MediaPreviewViewModel.ProfileAvatarImagePreviewMeta( - accountObjectID: mastodonUser.objectID, - preloadThumbnailImage: avatar - ) - let pushTransitionItem = MediaPreviewTransitionItem( - source: .profileAvatar(profileHeaderView), - previewableViewController: self - ) - pushTransitionItem.aspectRatio = CGSize(width: 100, height: 100) - pushTransitionItem.sourceImageView = imageView - pushTransitionItem.sourceImageViewCornerRadius = ProfileHeaderView.avatarImageViewCornerRadius - pushTransitionItem.initialFrame = { - let initialFrame = imageView.superview!.convert(imageView.frame, to: nil) - assert(initialFrame != .zero) - return initialFrame - }() - pushTransitionItem.image = avatar - - let mediaPreviewViewModel = MediaPreviewViewModel( - context: context, - meta: meta, - pushTransitionItem: pushTransitionItem - ) - DispatchQueue.main.async { - self.coordinator.present(scene: .mediaPreview(viewModel: mediaPreviewViewModel), from: self, transition: .custom(transitioningDelegate: self.mediaPreviewTransitionController)) - } + Task { + try await DataSourceFacade.coordinateToMediaPreviewScene( + dependency: self, + user: record, + previewContext: DataSourceFacade.ImagePreviewContext( + imageView: button.avatarImageView, + containerView: .profileAvatar(profileHeaderView) + ) + ) + } // end Task } func profileHeaderView(_ profileHeaderView: ProfileHeaderView, bannerImageViewDidPressed imageView: UIImageView) { - // not preview header banner when editing - guard !viewModel.isEditing.value else { return } + guard let user = viewModel.mastodonUser.value else { return } + let record: ManagedObjectRecord = .init(objectID: user.objectID) - guard let mastodonUser = viewModel.mastodonUser.value else { return } - guard let header = imageView.image else { return } - - let meta = MediaPreviewViewModel.ProfileBannerImagePreviewMeta( - accountObjectID: mastodonUser.objectID, - preloadThumbnailImage: header - ) - let pushTransitionItem = MediaPreviewTransitionItem( - source: .profileBanner(profileHeaderView), - previewableViewController: self - ) - pushTransitionItem.aspectRatio = header.size - pushTransitionItem.sourceImageView = imageView - pushTransitionItem.initialFrame = { - let initialFrame = imageView.superview!.convert(imageView.frame, to: nil) - assert(initialFrame != .zero) - return initialFrame - }() - pushTransitionItem.image = header - - let mediaPreviewViewModel = MediaPreviewViewModel( - context: context, - meta: meta, - pushTransitionItem: pushTransitionItem - ) - DispatchQueue.main.async { - self.coordinator.present(scene: .mediaPreview(viewModel: mediaPreviewViewModel), from: self, transition: .custom(transitioningDelegate: self.mediaPreviewTransitionController)) - } + Task { + try await DataSourceFacade.coordinateToMediaPreviewScene( + dependency: self, + user: record, + previewContext: DataSourceFacade.ImagePreviewContext( + imageView: imageView, + containerView: .profileBanner(profileHeaderView) + ) + ) + } // end Task } - func profileHeaderView(_ profileHeaderView: ProfileHeaderView, relationshipButtonDidPressed button: ProfileRelationshipActionButton) { + func profileHeaderView( + _ profileHeaderView: ProfileHeaderView, + relationshipButtonDidPressed button: ProfileRelationshipActionButton + ) { let relationshipActionSet = viewModel.relationshipActionOptionSet.value // handle edit logic for editable profile @@ -843,34 +891,37 @@ extension ProfileViewController: ProfileHeaderViewDelegate { if relationshipActionSet.contains(.edit) { // do nothing when updating guard !viewModel.isUpdating.value else { return } - - if profileHeaderViewController.viewModel.isProfileInfoEdited() { + + guard let profileHeaderViewModel = profileHeaderViewController.viewModel else { return } + guard let profileAboutViewModel = profileSegmentedViewController.pagingViewController.viewModel.profileAboutViewController.viewModel else { return } + + let isEdited = profileHeaderViewModel.isEdited() + || profileAboutViewModel.isEdited() + + if isEdited { // update profile if changed viewModel.isUpdating.value = true - profileHeaderViewController.viewModel.updateProfileInfo() - .receive(on: DispatchQueue.main) - .sink { [weak self] completion in - guard let self = self else { return } - defer { - // finish updating - self.viewModel.isUpdating.value = false - } - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: update profile info fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: update profile info success", ((#file as NSString).lastPathComponent), #line, #function) - } - } receiveValue: { [weak self] _ in - guard let self = self else { return } + Task { + do { + _ = try await viewModel.updateProfileInfo( + headerProfileInfo: profileHeaderViewModel.editProfileInfo, + aboutProfileInfo: profileAboutViewModel.editProfileInfo + ) + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): update profile info success") self.viewModel.isEditing.value = false + + } catch { + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): update profile info fail: \(error.localizedDescription)") } - .store(in: &disposeBag) + + // finish updating + self.viewModel.isUpdating.value = false + } } else { // set `updating` then toggle `edit` state viewModel.isUpdating.value = true viewModel.fetchEditProfileInfo() - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] completion in guard let self = self else { return } defer { @@ -905,52 +956,61 @@ extension ProfileViewController: ProfileHeaderViewDelegate { case .none: break case .follow, .request, .pending, .following: - UserProviderFacade.toggleUserFollowRelationship(provider: self) - .sink { _ in - // TODO: handle error - } receiveValue: { _ in - // do nothing - } - .store(in: &disposeBag) + guard let user = viewModel.mastodonUser.value else { return } + let reocrd = ManagedObjectRecord(objectID: user.objectID) + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + Task { + try await DataSourceFacade.responseToUserFollowAction( + dependency: self, + user: reocrd, + authenticationBox: authenticationBox + ) + } case .muting: - guard let mastodonUser = viewModel.mastodonUser.value else { return } - let name = mastodonUser.displayNameWithFallback + guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else { return } + guard let user = viewModel.mastodonUser.value else { return } + let name = user.displayNameWithFallback + let alertController = UIAlertController( title: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.title, message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.message(name), preferredStyle: .alert ) + let record = ManagedObjectRecord(objectID: user.objectID) let unmuteAction = UIAlertAction(title: L10n.Common.Controls.Friendship.unmute, style: .default) { [weak self] _ in guard let self = self else { return } - UserProviderFacade.toggleUserMuteRelationship(provider: self, cell: nil) - .sink { _ in - // do nothing - } receiveValue: { _ in - // do nothing - } - .store(in: &self.context.disposeBag) + Task { + try await DataSourceFacade.responseToUserMuteAction( + dependency: self, + user: record, + authenticationBox: authenticationBox + ) + } } alertController.addAction(unmuteAction) let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .cancel, handler: nil) alertController.addAction(cancelAction) present(alertController, animated: true, completion: nil) case .blocking: - guard let mastodonUser = viewModel.mastodonUser.value else { return } - let name = mastodonUser.displayNameWithFallback + guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else { return } + guard let user = viewModel.mastodonUser.value else { return } + let name = user.displayNameWithFallback + let alertController = UIAlertController( title: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.title, message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.message(name), preferredStyle: .alert ) + let record = ManagedObjectRecord(objectID: user.objectID) let unblockAction = UIAlertAction(title: L10n.Common.Controls.Friendship.unblock, style: .default) { [weak self] _ in guard let self = self else { return } - UserProviderFacade.toggleUserBlockRelationship(provider: self, cell: nil) - .sink { _ in - // do nothing - } receiveValue: { _ in - // do nothing - } - .store(in: &self.context.disposeBag) + Task { + try await DataSourceFacade.responseToUserBlockAction( + dependency: self, + user: record, + authenticationBox: authenticationBox + ) + } } alertController.addAction(unblockAction) let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .cancel, handler: nil) @@ -965,20 +1025,7 @@ extension ProfileViewController: ProfileHeaderViewDelegate { } func profileHeaderView(_ profileHeaderView: ProfileHeaderView, metaTextView: MetaTextView, metaDidPressed meta: Meta) { - switch meta { - case .url(_, _, let url, _): - guard let url = URL(string: url) else { return } - coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) - case .mention(_, _, let userInfo): - guard let href = userInfo?["href"] as? String, - let url = URL(string: href) else { return } - coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) - case .hashtag(_, let hashtag, _): - let hashtagTimelineViewModel = HashtagTimelineViewModel(context: context, hashtag: hashtag) - coordinator.present(scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: nil, transition: .show) - case .email, .emoji: - break - } + handleMetaPress(meta) } func profileHeaderView(_ profileHeaderView: ProfileHeaderView, profileStatusDashboardView dashboardView: ProfileStatusDashboardView, dashboardMeterViewDidPressed dashboardMeterView: ProfileStatusDashboardMeterView, meter: ProfileStatusDashboardView.Meter) { @@ -1019,30 +1066,61 @@ extension ProfileViewController: ProfileHeaderViewDelegate { } -// MARK: - ScrollViewContainer -extension ProfileViewController: ScrollViewContainer { - var scrollView: UIScrollView { return overlayScrollView } +// MARK: - ProfileAboutViewControllerDelegate +extension ProfileViewController: ProfileAboutViewControllerDelegate { + func profileAboutViewController(_ viewController: ProfileAboutViewController, profileFieldCollectionViewCell: ProfileFieldCollectionViewCell, metaLabel: MetaLabel, didSelectMeta meta: Meta) { + handleMetaPress(meta) + } } -extension ProfileViewController { - - override var keyCommands: [UIKeyCommand]? { - if !viewModel.isEditing.value { - return segmentedControlNavigateKeyCommands - } +// MARK: - MastodonMenuDelegate +extension ProfileViewController: MastodonMenuDelegate { + func menuAction(_ action: MastodonMenu.Action) { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + guard let user = viewModel.mastodonUser.value else { return } - return nil + let userRecord: ManagedObjectRecord = .init(objectID: user.objectID) + + Task { + try await DataSourceFacade.responseToMenuAction( + dependency: self, + action: action, + menuContext: DataSourceFacade.MenuContext( + author: userRecord, + status: nil, + button: nil, + barButtonItem: self.moreMenuBarButtonItem + ), + authenticationBox: authenticationBox + ) + } // end Task } - } +// MARK: - ScrollViewContainer +//extension ProfileViewController: ScrollViewContainer { +// var scrollView: UIScrollView { return overlayScrollView } +//} +// +//extension ProfileViewController { +// +// override var keyCommands: [UIKeyCommand]? { +// if !viewModel.isEditing.value { +// return segmentedControlNavigateKeyCommands +// } +// +// return nil +// } +// +//} + // MARK: - SegmentedControlNavigateable -extension ProfileViewController: SegmentedControlNavigateable { - var navigateableSegmentedControl: UISegmentedControl { - profileHeaderViewController.pageSegmentedControl - } - - @objc func segmentedControlNavigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - segmentedControlNavigateKeyCommandHandler(sender) - } -} +//extension ProfileViewController: SegmentedControlNavigateable { +// var navigateableSegmentedControl: UISegmentedControl { +// profileHeaderViewController.pageSegmentedControl +// } +// +// @objc func segmentedControlNavigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// segmentedControlNavigateKeyCommandHandler(sender) +// } +//} diff --git a/Mastodon/Scene/Profile/ProfileViewModel.swift b/Mastodon/Scene/Profile/ProfileViewModel.swift index 5efbaa684..b39734728 100644 --- a/Mastodon/Scene/Profile/ProfileViewModel.swift +++ b/Mastodon/Scene/Profile/ProfileViewModel.swift @@ -11,10 +11,14 @@ import Combine import CoreDataStack import MastodonSDK import MastodonMeta +import MastodonAsset +import MastodonLocalization // please override this base class class ProfileViewModel: NSObject { + let logger = Logger(subsystem: "ProfileViewModel", category: "ViewModel") + typealias UserID = String var disposeBag = Set() @@ -40,7 +44,7 @@ class ProfileViewModel: NSObject { let statusesCount: CurrentValueSubject let followingCount: CurrentValueSubject let followersCount: CurrentValueSubject - let fields: CurrentValueSubject<[Mastodon.Entity.Field], Never> + let fields: CurrentValueSubject<[MastodonField], Never> let emojiMeta: CurrentValueSubject // fulfill this before editing @@ -78,13 +82,13 @@ class ProfileViewModel: NSObject { self.username = CurrentValueSubject(mastodonUser?.acctWithDomain) self.bioDescription = CurrentValueSubject(mastodonUser?.note) self.url = CurrentValueSubject(mastodonUser?.url) - self.statusesCount = CurrentValueSubject(mastodonUser.flatMap { Int(truncating: $0.statusesCount) }) - self.followingCount = CurrentValueSubject(mastodonUser.flatMap { Int(truncating: $0.followingCount) }) - self.followersCount = CurrentValueSubject(mastodonUser.flatMap { Int(truncating: $0.followersCount) }) + self.statusesCount = CurrentValueSubject(mastodonUser.flatMap { Int($0.statusesCount) }) + self.followingCount = CurrentValueSubject(mastodonUser.flatMap { Int($0.followingCount) }) + self.followersCount = CurrentValueSubject(mastodonUser.flatMap { Int($0.followersCount) }) self.protected = CurrentValueSubject(mastodonUser?.locked) self.suspended = CurrentValueSubject(mastodonUser?.suspended ?? false) self.fields = CurrentValueSubject(mastodonUser?.fields ?? []) - self.emojiMeta = CurrentValueSubject(mastodonUser?.emojiMeta ?? [:]) + self.emojiMeta = CurrentValueSubject(mastodonUser?.emojis.asDictionary ?? [:]) super.init() relationshipActionOptionSet @@ -108,51 +112,45 @@ class ProfileViewModel: NSObject { .store(in: &disposeBag) // query relationship - let mastodonUserID = self.mastodonUser.map { $0?.id } + let userRecord = self.mastodonUser.map { user -> ManagedObjectRecord? in + user.flatMap { ManagedObjectRecord(objectID: $0.objectID) } + } let pendingRetryPublisher = CurrentValueSubject(1) - + + // observe friendship Publishers.CombineLatest3( - mastodonUserID.removeDuplicates().eraseToAnyPublisher(), - context.authenticationService.activeMastodonAuthenticationBox.eraseToAnyPublisher(), - pendingRetryPublisher.eraseToAnyPublisher() + userRecord, + context.authenticationService.activeMastodonAuthenticationBox, + pendingRetryPublisher ) - .compactMap { mastodonUserID, activeMastodonAuthenticationBox, _ -> (String, MastodonAuthenticationBox)? in - guard let mastodonUserID = mastodonUserID, let activeMastodonAuthenticationBox = activeMastodonAuthenticationBox else { return nil } - guard mastodonUserID != activeMastodonAuthenticationBox.userID else { return nil } - return (mastodonUserID, activeMastodonAuthenticationBox) - } - .setFailureType(to: Error.self) // allow failure - .flatMap { mastodonUserID, activeMastodonAuthenticationBox -> AnyPublisher, Error> in - let domain = activeMastodonAuthenticationBox.domain - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] fetch for user %s", ((#file as NSString).lastPathComponent), #line, #function, mastodonUserID) - - return self.context.apiService.relationship(domain: domain, accountIDs: [mastodonUserID], authorizationBox: activeMastodonAuthenticationBox) - //.retry(3) - .eraseToAnyPublisher() - } - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] update fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - break - } - } receiveValue: { response in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] update success", ((#file as NSString).lastPathComponent), #line, #function) - - // there are seconds delay after request follow before requested -> following. Query again when needs - guard let relationship = response.value.first else { return } - if relationship.requested == true { - let delay = pendingRetryPublisher.value - DispatchQueue.main.asyncAfter(deadline: .now() + delay) { [weak self] in - guard let _ = self else { return } - pendingRetryPublisher.value = min(2 * delay, 60) - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] fetch again due to pending", ((#file as NSString).lastPathComponent), #line, #function) + .sink { [weak self] userRecord, authenticationBox, _ in + guard let self = self else { return } + guard let userRecord = userRecord, + let authenticationBox = authenticationBox + else { return } + Task { + do { + let response = try await self.updateRelationship( + record: userRecord, + authenticationBox: authenticationBox + ) + // there are seconds delay after request follow before requested -> following. Query again when needs + guard let relationship = response.value.first else { return } + if relationship.requested == true { + let delay = pendingRetryPublisher.value + DispatchQueue.main.asyncAfter(deadline: .now() + delay) { [weak self] in + guard let _ = self else { return } + pendingRetryPublisher.value = min(2 * delay, 60) + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] fetch again due to pending", ((#file as NSString).lastPathComponent), #line, #function) + } + } + } catch { + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Relationship] update user relationship failure: \(error.localizedDescription)") } } } .store(in: &disposeBag) - + let isBlockingOrBlocked = Publishers.CombineLatest( isBlocking, isBlockedBy @@ -253,13 +251,13 @@ extension ProfileViewModel { self.username.value = mastodonUser?.acctWithDomain self.bioDescription.value = mastodonUser?.note self.url.value = mastodonUser?.url - self.statusesCount.value = mastodonUser.flatMap { Int(truncating: $0.statusesCount) } - self.followingCount.value = mastodonUser.flatMap { Int(truncating: $0.followingCount) } - self.followersCount.value = mastodonUser.flatMap { Int(truncating: $0.followersCount) } + self.statusesCount.value = mastodonUser.flatMap { Int($0.statusesCount) } + self.followingCount.value = mastodonUser.flatMap { Int($0.followingCount) } + self.followersCount.value = mastodonUser.flatMap { Int($0.followersCount) } self.protected.value = mastodonUser?.locked self.suspended.value = mastodonUser?.suspended ?? false self.fields.value = mastodonUser?.fields ?? [] - self.emojiMeta.value = mastodonUser?.emojiMeta ?? [:] + self.emojiMeta.value = mastodonUser?.emojis.asDictionary ?? [:] } private func update(mastodonUser: MastodonUser?, currentMastodonUser: MastodonUser?) { @@ -297,37 +295,37 @@ extension ProfileViewModel { relationshipActionSet.insert(.suspended) } - let isFollowing = mastodonUser.followingBy.flatMap { $0.contains(currentMastodonUser) } ?? false + let isFollowing = mastodonUser.followingBy.contains(currentMastodonUser) if isFollowing { relationshipActionSet.insert(.following) } os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] update %s isFollowing: %s", ((#file as NSString).lastPathComponent), #line, #function, mastodonUser.id, isFollowing.description) - let isPending = mastodonUser.followRequestedBy.flatMap { $0.contains(currentMastodonUser) } ?? false + let isPending = mastodonUser.followRequestedBy.contains(currentMastodonUser) if isPending { relationshipActionSet.insert(.pending) } os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] update %s isPending: %s", ((#file as NSString).lastPathComponent), #line, #function, mastodonUser.id, isPending.description) - let isFollowedBy = currentMastodonUser.followingBy.flatMap { $0.contains(mastodonUser) } ?? false + let isFollowedBy = currentMastodonUser.followingBy.contains(mastodonUser) self.isFollowedBy.value = isFollowedBy os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] update %s isFollowedBy: %s", ((#file as NSString).lastPathComponent), #line, #function, mastodonUser.id, isFollowedBy.description) - let isMuting = mastodonUser.mutingBy.flatMap { $0.contains(currentMastodonUser) } ?? false + let isMuting = mastodonUser.mutingBy.contains(currentMastodonUser) if isMuting { relationshipActionSet.insert(.muting) } self.isMuting.value = isMuting os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] update %s isMuting: %s", ((#file as NSString).lastPathComponent), #line, #function, mastodonUser.id, isMuting.description) - let isBlocking = mastodonUser.blockingBy.flatMap { $0.contains(currentMastodonUser) } ?? false + let isBlocking = mastodonUser.blockingBy.contains(currentMastodonUser) if isBlocking { relationshipActionSet.insert(.blocking) } self.isBlocking.value = isBlocking os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] update %s isBlocking: %s", ((#file as NSString).lastPathComponent), #line, #function, mastodonUser.id, isBlocking.description) - let isBlockedBy = currentMastodonUser.blockingBy.flatMap { $0.contains(mastodonUser) } ?? false + let isBlockedBy = currentMastodonUser.blockingBy.contains(mastodonUser) if isBlockedBy { relationshipActionSet.insert(.blocked) } @@ -356,7 +354,19 @@ extension ProfileViewModel { let authorization = Mastodon.API.OAuth.Authorization(accessToken: mastodonAuthentication.userAccessToken) return context.apiService.accountVerifyCredentials(domain: currentMastodonUser.domain, authorization: authorization) -// .erro + } + + private func updateRelationship( + record: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Relationship]> { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Relationship] update user relationship...") + let response = try await context.apiService.relationship( + records: [record], + authenticationBox: authenticationBox + ) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Relationship] did update MastodonUser relationship") + return response } } @@ -454,3 +464,46 @@ extension ProfileViewModel { } } + +extension ProfileViewModel { + func updateProfileInfo( + headerProfileInfo: ProfileHeaderViewModel.ProfileInfo, + aboutProfileInfo: ProfileAboutViewModel.ProfileInfo + ) async throws -> Mastodon.Response.Content { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + throw APIService.APIError.implicit(.badRequest) + } + + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization + + let _image: UIImage? = { + guard let image = headerProfileInfo.avatarImage else { return nil } + guard image.size.width <= ProfileHeaderViewModel.avatarImageMaxSizeInPixel.width else { + return image.af.imageScaled(to: ProfileHeaderViewModel.avatarImageMaxSizeInPixel) + } + return image + }() + + let fieldsAttributes = aboutProfileInfo.fields.map { field in + Mastodon.Entity.Field(name: field.name.value, value: field.value.value) + } + + let query = Mastodon.API.Account.UpdateCredentialQuery( + discoverable: nil, + bot: nil, + displayName: headerProfileInfo.name, + note: headerProfileInfo.note, + avatar: _image.flatMap { Mastodon.Query.MediaAttachment.png($0.pngData()) }, + header: nil, + locked: nil, + source: nil, + fieldsAttributes: fieldsAttributes + ) + return try await context.apiService.accountUpdateCredentials( + domain: domain, + query: query, + authorization: authorization + ) + } +} diff --git a/Mastodon/Scene/Profile/RemoteProfileViewModel.swift b/Mastodon/Scene/Profile/RemoteProfileViewModel.swift index ef04d5811..8e31050d2 100644 --- a/Mastodon/Scene/Profile/RemoteProfileViewModel.swift +++ b/Mastodon/Scene/Profile/RemoteProfileViewModel.swift @@ -21,33 +21,36 @@ final class RemoteProfileViewModel: ProfileViewModel { } let domain = activeMastodonAuthenticationBox.domain let authorization = activeMastodonAuthenticationBox.userAuthorization - context.apiService.accountInfo( - domain: domain, - userID: userID, - authorization: authorization - ) - .retry(3) - .sink { completion in - switch completion { - case .failure(let error): - // TODO: handle error - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote user %s fetch failed: %s", ((#file as NSString).lastPathComponent), #line, #function, userID, error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote user %s fetched", ((#file as NSString).lastPathComponent), #line, #function, userID) + Just(userID) + .asyncMap { userID in + try await context.apiService.accountInfo( + domain: domain, + userID: userID, + authorization: authorization + ) } - } receiveValue: { [weak self] response in - guard let self = self else { return } - let managedObjectContext = context.managedObjectContext - let request = MastodonUser.sortedFetchRequest - request.fetchLimit = 1 - request.predicate = MastodonUser.predicate(domain: domain, id: response.value.id) - guard let mastodonUser = managedObjectContext.safeFetch(request).first else { - assertionFailure() - return + .retry(3) + .sink { completion in + switch completion { + case .failure(let error): + // TODO: handle error + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote user %s fetch failed: %s", ((#file as NSString).lastPathComponent), #line, #function, userID, error.localizedDescription) + case .finished: + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote user %s fetched", ((#file as NSString).lastPathComponent), #line, #function, userID) + } + } receiveValue: { [weak self] response in + guard let self = self else { return } + let managedObjectContext = context.managedObjectContext + let request = MastodonUser.sortedFetchRequest + request.fetchLimit = 1 + request.predicate = MastodonUser.predicate(domain: domain, id: response.value.id) + guard let mastodonUser = managedObjectContext.safeFetch(request).first else { + assertionFailure() + return + } + self.mastodonUser.value = mastodonUser } - self.mastodonUser.value = mastodonUser - } - .store(in: &disposeBag) + .store(in: &disposeBag) } init(context: AppContext, notificationID: Mastodon.Entity.Notification.ID) { @@ -59,42 +62,42 @@ final class RemoteProfileViewModel: ProfileViewModel { let domain = activeMastodonAuthenticationBox.domain let authorization = activeMastodonAuthenticationBox.userAuthorization - context.apiService.notification( - notificationID: notificationID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .compactMap { [weak self] response -> AnyPublisher, Error>? in - let userID = response.value.account.id - // TODO: use .account directly - return context.apiService.accountInfo( - domain: domain, - userID: userID, - authorization: authorization - ) - } - .switchToLatest() - .retry(3) - .sink { completion in - switch completion { - case .failure(let error): - // TODO: handle error - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote notification %s user fetch failed: %s", ((#file as NSString).lastPathComponent), #line, #function, notificationID, error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote notification %s user fetched", ((#file as NSString).lastPathComponent), #line, #function, notificationID) - } - } receiveValue: { [weak self] response in - guard let self = self else { return } - let managedObjectContext = context.managedObjectContext - let request = MastodonUser.sortedFetchRequest - request.fetchLimit = 1 - request.predicate = MastodonUser.predicate(domain: domain, id: response.value.id) - guard let mastodonUser = managedObjectContext.safeFetch(request).first else { - assertionFailure() - return - } - self.mastodonUser.value = mastodonUser - } - .store(in: &disposeBag) +// context.apiService.notification( +// notificationID: notificationID, +// mastodonAuthenticationBox: activeMastodonAuthenticationBox +// ) +// .compactMap { [weak self] response -> AnyPublisher, Error>? in +// let userID = response.value.account.id +// // TODO: use .account directly +// return context.apiService.accountInfo( +// domain: domain, +// userID: userID, +// authorization: authorization +// ) +// } +// .switchToLatest() +// .retry(3) +// .sink { completion in +// switch completion { +// case .failure(let error): +// // TODO: handle error +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote notification %s user fetch failed: %s", ((#file as NSString).lastPathComponent), #line, #function, notificationID, error.localizedDescription) +// case .finished: +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote notification %s user fetched", ((#file as NSString).lastPathComponent), #line, #function, notificationID) +// } +// } receiveValue: { [weak self] response in +// guard let self = self else { return } +// let managedObjectContext = context.managedObjectContext +// let request = MastodonUser.sortedFetchRequest +// request.fetchLimit = 1 +// request.predicate = MastodonUser.predicate(domain: domain, id: response.value.id) +// guard let mastodonUser = managedObjectContext.safeFetch(request).first else { +// assertionFailure() +// return +// } +// self.mastodonUser.value = mastodonUser +// } +// .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift b/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift index 252d5e14f..0df9688d7 100644 --- a/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift +++ b/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift @@ -9,21 +9,26 @@ import os.log import UIKit import Pageboy import Tabman +import MastodonAsset +import MastodonLocalization final class ProfilePagingViewModel: NSObject { let postUserTimelineViewController = UserTimelineViewController() let repliesUserTimelineViewController = UserTimelineViewController() let mediaUserTimelineViewController = UserTimelineViewController() + let profileAboutViewController = ProfileAboutViewController() init( postsUserTimelineViewModel: UserTimelineViewModel, repliesUserTimelineViewModel: UserTimelineViewModel, - mediaUserTimelineViewModel: UserTimelineViewModel + mediaUserTimelineViewModel: UserTimelineViewModel, + profileAboutViewModel: ProfileAboutViewModel ) { postUserTimelineViewController.viewModel = postsUserTimelineViewModel repliesUserTimelineViewController.viewModel = repliesUserTimelineViewModel mediaUserTimelineViewController.viewModel = mediaUserTimelineViewModel + profileAboutViewController.viewModel = profileAboutViewModel super.init() } @@ -32,14 +37,16 @@ final class ProfilePagingViewModel: NSObject { postUserTimelineViewController, repliesUserTimelineViewController, mediaUserTimelineViewController, + profileAboutViewController, ] } let barItems: [TMBarItemable] = { let items = [ TMBarItem(title: L10n.Scene.Profile.SegmentedControl.posts), - TMBarItem(title: L10n.Scene.Profile.SegmentedControl.replies), + TMBarItem(title: "Posts and Replies"), // TODO: i18n TMBarItem(title: L10n.Scene.Profile.SegmentedControl.media), + TMBarItem(title: "About"), ] return items }() @@ -66,3 +73,10 @@ extension ProfilePagingViewModel: PageboyViewControllerDataSource { } } + +// MARK: - TMBarDataSource +extension ProfilePagingViewModel: TMBarDataSource { + func barItem(for bar: TMBar, at index: Int) -> TMBarItemable { + return barItems[index] + } +} diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController+DataSourceProvider.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController+DataSourceProvider.swift new file mode 100644 index 000000000..2b18fad56 --- /dev/null +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController+DataSourceProvider.swift @@ -0,0 +1,34 @@ +// +// UserTimelineViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-18. +// + +import UIKit + +extension UserTimelineViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.tableViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .status(let record): + return .status(record: record) + default: + return nil + } + } + + @MainActor + private func indexPath(for cell: UITableViewCell) async -> IndexPath? { + return tableView.indexPath(for: cell) + } +} diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController+Provider.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController+Provider.swift deleted file mode 100644 index 8c46f0ad6..000000000 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController+Provider.swift +++ /dev/null @@ -1,95 +0,0 @@ -// -// UserTimelineViewController+Provider.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-30. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack - -// MARK: - StatusProvider -extension UserTimelineViewController: StatusProvider { - - func status() -> Future { - return Future { promise in promise(.success(nil)) } - } - - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future { - return Future { promise in - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - switch item { - case .status(let objectID, _): - let managedObjectContext = self.viewModel.statusFetchedResultsController.fetchedResultsController.managedObjectContext - managedObjectContext.perform { - let status = managedObjectContext.object(with: objectID) as? Status - promise(.success(status)) - } - default: - promise(.success(nil)) - } - } - } - - func status(for cell: UICollectionViewCell) -> Future { - return Future { promise in promise(.success(nil)) } - } - - var managedObjectContext: NSManagedObjectContext { - return viewModel.statusFetchedResultsController.fetchedResultsController.managedObjectContext - } - - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { - return viewModel.diffableDataSource - } - - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return nil - } - - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - return nil - } - - return item - } - - func items(indexPaths: [IndexPath]) -> [Item] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return [] - } - - var items: [Item] = [] - for indexPath in indexPaths { - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { continue } - items.append(item) - } - return items - } - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return [] } - let items = indexPaths.compactMap { diffableDataSource.itemIdentifier(for: $0)?.statusObjectItem } - return items - } - -} - -extension UserTimelineViewController: UserProvider {} diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift index 4bee3b8af..58e92b8cc 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift @@ -13,6 +13,8 @@ import CoreDataStack import GameplayKit final class UserTimelineViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { + + let logger = Logger(subsystem: "UserTimelineViewController", category: "ViewController") weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -48,7 +50,7 @@ extension UserTimelineViewController { view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.view.backgroundColor = theme.secondarySystemBackgroundColor @@ -65,10 +67,9 @@ extension UserTimelineViewController { ]) tableView.delegate = self - tableView.prefetchDataSource = self +// tableView.prefetchDataSource = self viewModel.setupDiffableDataSource( - for: tableView, - dependency: self, + tableView: tableView, statusTableViewCellDelegate: self ) @@ -78,41 +79,20 @@ extension UserTimelineViewController { .receive(on: DispatchQueue.main) .sink { [weak self] _ in guard let self = self else { return } + guard self.view.window != nil else { return } self.viewModel.stateMachine.enter(UserTimelineViewModel.State.Loading.self) } .store(in: &disposeBag) - - // trigger user timeline loading - Publishers.CombineLatest( - viewModel.domain.removeDuplicates().eraseToAnyPublisher(), - viewModel.userID.removeDuplicates().eraseToAnyPublisher() - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in - guard let self = self else { return } - self.viewModel.stateMachine.enter(UserTimelineViewModel.State.Reloading.self) - } - .store(in: &disposeBag) - } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - aspectViewWillAppear(animated) - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - - aspectViewDidDisappear(animated) + tableView.deselectRow(with: transitionCoordinator, animated: animated) } } -// MARK: - StatusTableViewControllerAspect -extension UserTimelineViewController: StatusTableViewControllerAspect { } - // MARK: - UIScrollViewDelegate //extension UserTimelineViewController { // func scrollViewDidScroll(_ scrollView: UIScrollView) { @@ -120,36 +100,20 @@ extension UserTimelineViewController: StatusTableViewControllerAspect { } // } //} -// MARK: - TableViewCellHeightCacheableContainer -extension UserTimelineViewController: TableViewCellHeightCacheableContainer { - var cellFrameCache: NSCache { - return viewModel.cellFrameCache - } -} - // MARK: - UITableViewDelegate -extension UserTimelineViewController: UITableViewDelegate { - - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - aspectTableView(tableView, estimatedHeightForRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } - +extension UserTimelineViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { + // sourcery:inline:UserTimelineViewController.AutoGenerateTableViewDelegate + + // Generated using Sourcery + // DO NOT EDIT func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { aspectTableView(tableView, didSelectRowAt: indexPath) } - + func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) } - + func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) } @@ -157,38 +121,71 @@ extension UserTimelineViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) } - + func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) } + + // sourcery:end +// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { +// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didSelectRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { +// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +// } +// +// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { +// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +// } } -// MARK: - UITableViewDataSourcePrefetching -extension UserTimelineViewController: UITableViewDataSourcePrefetching { - func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - aspectTableView(tableView, prefetchRowsAt: indexPaths) - } -} +//// MARK: - UITableViewDataSourcePrefetching +//extension UserTimelineViewController: UITableViewDataSourcePrefetching { +// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { +// aspectTableView(tableView, prefetchRowsAt: indexPaths) +// } +//} // MARK: - AVPlayerViewControllerDelegate -extension UserTimelineViewController: AVPlayerViewControllerDelegate { - - func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } - - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } - -} +//extension UserTimelineViewController: AVPlayerViewControllerDelegate { +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +//} // MARK: - TimelinePostTableViewCellDelegate -extension UserTimelineViewController: StatusTableViewCellDelegate { - weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } - func parent() -> UIViewController { return self } -} +//extension UserTimelineViewController: StatusTableViewCellDelegate { +// weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } +// func parent() -> UIViewController { return self } +//} // MARK: - CustomScrollViewContainerController extension UserTimelineViewController: ScrollViewContainer { @@ -204,19 +201,22 @@ extension UserTimelineViewController: ScrollViewContainer { // var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.stateMachine } //} -extension UserTimelineViewController { - override var keyCommands: [UIKeyCommand]? { - return navigationKeyCommands + statusNavigationKeyCommands - } -} +//extension UserTimelineViewController { +// override var keyCommands: [UIKeyCommand]? { +// return navigationKeyCommands + statusNavigationKeyCommands +// } +//} +// +//// MARK: - StatusTableViewControllerNavigateable +//extension UserTimelineViewController: StatusTableViewControllerNavigateable { +// @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// navigateKeyCommandHandler(sender) +// } +// +// @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// statusKeyCommandHandler(sender) +// } +//} -// MARK: - StatusTableViewControllerNavigateable -extension UserTimelineViewController: StatusTableViewControllerNavigateable { - @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - navigateKeyCommandHandler(sender) - } - - @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - statusKeyCommandHandler(sender) - } -} +// MARK: - StatusTableViewCellDelegate +extension UserTimelineViewController: StatusTableViewCellDelegate { } diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift index 0d6d47823..cdd92bbac 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift @@ -6,32 +6,84 @@ // import UIKit +import Combine extension UserTimelineViewModel { func setupDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, + tableView: UITableView, statusTableViewCellDelegate: StatusTableViewCellDelegate ) { - diffableDataSource = StatusSection.tableViewDiffableDataSource( - for: tableView, - timelineContext: .account, - dependency: dependency, - managedObjectContext: statusFetchedResultsController.fetchedResultsController.managedObjectContext, - statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: nil, - threadReplyLoaderTableViewCellDelegate: nil + diffableDataSource = StatusSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: StatusSection.Configuration( + statusTableViewCellDelegate: statusTableViewCellDelegate, + timelineMiddleLoaderTableViewCellDelegate: nil + ) ) - + // set empty section to make update animation top-to-bottom style - var snapshot = NSDiffableDataSourceSnapshot() + var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) diffableDataSource?.apply(snapshot) + + // trigger user timeline loading + Publishers.CombineLatest( + $domain.removeDuplicates(), + $userID.removeDuplicates() + ) + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self = self else { return } + self.stateMachine.enter(UserTimelineViewModel.State.Reloading.self) + } + .store(in: &disposeBag) + + let needsTimelineHidden = Publishers.CombineLatest3( + isBlocking, + isBlockedBy, + isSuspended + ).map { $0 || $1 || $2 } + + Publishers.CombineLatest( + statusFetchedResultsController.$records, + needsTimelineHidden.removeDuplicates() + ) + .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) + .sink { [weak self] records, needsTimelineHidden in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + + guard !needsTimelineHidden else { + diffableDataSource.apply(snapshot) + return + } - // workaround to append loader wrong animation issue - snapshot.appendItems([.bottomLoader], toSection: .main) - diffableDataSource?.apply(snapshot) + let items = records.map { StatusItem.status(record: $0) } + snapshot.appendItems(items, toSection: .main) + + if let currentState = self.stateMachine.currentState { + switch currentState { + case is State.Reloading, + is State.Loading, + is State.Idle, + is State.Fail: + snapshot.appendItems([.bottomLoader], toSection: .main) + case is State.NoMore: + break + default: + assertionFailure() + break + } + } + + diffableDataSource.applySnapshot(snapshot, animated: false) + } + .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+State.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+State.swift index 2566006e0..06f657bad 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+State.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+State.swift @@ -11,7 +11,16 @@ import GameplayKit import MastodonSDK extension UserTimelineViewModel { - class State: GKState { + class State: GKState, NamingState { + + let logger = Logger(subsystem: "UserTimelineViewModel.State", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + weak var viewModel: UserTimelineViewModel? init(viewModel: UserTimelineViewModel) { @@ -19,7 +28,18 @@ extension UserTimelineViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + super.didEnter(from: previousState) + let previousState = previousState as? UserTimelineViewModel.State + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + } + + @MainActor + func enter(state: State.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") } } } @@ -30,7 +50,7 @@ extension UserTimelineViewModel.State { guard let viewModel = viewModel else { return false } switch stateClass { case is Reloading.Type: - return viewModel.userID.value != nil + return viewModel.userID != nil default: return false } @@ -112,57 +132,51 @@ extension UserTimelineViewModel.State { let maxID = viewModel.statusFetchedResultsController.statusIDs.value.last - guard let userID = viewModel.userID.value, !userID.isEmpty else { + guard let userID = viewModel.userID, !userID.isEmpty else { stateMachine.enter(Fail.self) return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { stateMachine.enter(Fail.self) return } - let domain = activeMastodonAuthenticationBox.domain - let queryFilter = viewModel.queryFilter.value - - viewModel.context.apiService.userTimeline( - domain: domain, - accountID: userID, - maxID: maxID, - sinceID: nil, - excludeReplies: queryFilter.excludeReplies, - excludeReblogs: queryFilter.excludeReblogs, - onlyMedia: queryFilter.onlyMedia, - authorizationBox: activeMastodonAuthenticationBox - ) - .receive(on: DispatchQueue.main) - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch user timeline fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break + let queryFilter = viewModel.queryFilter + + Task { + + do { + let response = try await viewModel.context.apiService.userTimeline( + accountID: userID, + maxID: maxID, + sinceID: nil, + excludeReplies: queryFilter.excludeReplies, + excludeReblogs: queryFilter.excludeReblogs, + onlyMedia: queryFilter.onlyMedia, + authenticationBox: authenticationBox + ) + + var hasNewStatusesAppend = false + var statusIDs = viewModel.statusFetchedResultsController.statusIDs.value + for status in response.value { + guard !statusIDs.contains(status.id) else { continue } + statusIDs.append(status.id) + hasNewStatusesAppend = true + } + + if hasNewStatusesAppend { + await enter(state: Idle.self) + } else { + await enter(state: NoMore.self) + } + viewModel.statusFetchedResultsController.statusIDs.value = statusIDs + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch user timeline fail: \(error.localizedDescription)") + await enter(state: Fail.self) } - } receiveValue: { response in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - - var hasNewStatusesAppend = false - var statusIDs = viewModel.statusFetchedResultsController.statusIDs.value - for status in response.value { - guard !statusIDs.contains(status.id) else { continue } - statusIDs.append(status.id) - hasNewStatusesAppend = true - } - - if hasNewStatusesAppend { - stateMachine.enter(Idle.self) - } else { - stateMachine.enter(NoMore.self) - } - viewModel.statusFetchedResultsController.statusIDs.value = statusIDs - } - .store(in: &viewModel.disposeBag) - } + } // end Task + } // end func } class NoMore: UserTimelineViewModel.State { diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel.swift index 5bf520d6d..9701ba480 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel.swift @@ -19,12 +19,11 @@ final class UserTimelineViewModel { // input let context: AppContext - let domain: CurrentValueSubject - let userID: CurrentValueSubject - let queryFilter: CurrentValueSubject + @Published var domain: String? + @Published var userID: String? + @Published var queryFilter: QueryFilter let statusFetchedResultsController: StatusFetchedResultsController let listBatchFetchViewModel = ListBatchFetchViewModel() - var cellFrameCache = NSCache() let isBlocking = CurrentValueSubject(false) let isBlockedBy = CurrentValueSubject(false) @@ -33,7 +32,7 @@ final class UserTimelineViewModel { var dataSourceDidUpdate = PassthroughSubject() // output - var diffableDataSource: UITableViewDiffableDataSource? + var diffableDataSource: UITableViewDiffableDataSource? private(set) lazy var stateMachine: GKStateMachine = { let stateMachine = GKStateMachine(states: [ State.Initial(viewModel: self), @@ -47,99 +46,28 @@ final class UserTimelineViewModel { return stateMachine }() - init(context: AppContext, domain: String?, userID: String?, queryFilter: QueryFilter) { + init( + context: AppContext, + domain: String?, + userID: String?, + queryFilter: QueryFilter + ) { self.context = context self.statusFetchedResultsController = StatusFetchedResultsController( managedObjectContext: context.managedObjectContext, domain: domain, additionalTweetPredicate: Status.notDeleted() ) - self.domain = CurrentValueSubject(domain) - self.userID = CurrentValueSubject(userID) - self.queryFilter = CurrentValueSubject(queryFilter) + self.domain = domain + self.userID = userID + self.queryFilter = queryFilter // super.init() - self.domain + $domain .assign(to: \.value, on: statusFetchedResultsController.domain) .store(in: &disposeBag) - Publishers.CombineLatest4( - statusFetchedResultsController.objectIDs.removeDuplicates(), - isBlocking, - isBlockedBy, - isSuspended - ) - .receive(on: DispatchQueue.main) - .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) - .sink { [weak self] objectIDs, isBlocking, isBlockedBy, isSuspended in - guard let self = self else { return } - guard let diffableDataSource = self.diffableDataSource else { return } - - var items: [Item] = [] - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - - var animatingDifferences = true - defer { - // not animate when empty items fix loader first appear layout issue - diffableDataSource.apply(snapshot, animatingDifferences: animatingDifferences) { [weak self] in - guard let self = self else { return } - self.dataSourceDidUpdate.send() - } - } - - let name = self.userDisplayName.value - guard !isBlocking else { - snapshot.appendItems( - [Item.emptyStateHeader(attribute: Item.EmptyStateHeaderAttribute(reason: .blocking(name: name)))], - toSection: .main - ) - return - } - - guard !isBlockedBy else { - snapshot.appendItems( - [Item.emptyStateHeader(attribute: Item.EmptyStateHeaderAttribute(reason: .blocked(name: name)))], - toSection: .main - ) - return - } - - guard !isSuspended else { - snapshot.appendItems( - [Item.emptyStateHeader(attribute: Item.EmptyStateHeaderAttribute(reason: .suspended(name: name)))], - toSection: .main - ) - return - } - - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] - let oldSnapshot = diffableDataSource.snapshot() - for item in oldSnapshot.itemIdentifiers { - guard case let .status(objectID, attribute) = item else { continue } - oldSnapshotAttributeDict[objectID] = attribute - } - - for objectID in objectIDs { - let attribute = oldSnapshotAttributeDict[objectID] ?? Item.StatusAttribute() - items.append(.status(objectID: objectID, attribute: attribute)) - } - snapshot.appendItems(items, toSection: .main) - - if let currentState = self.stateMachine.currentState { - switch currentState { - case is State.Reloading, is State.Loading, is State.Idle, is State.Fail: - snapshot.appendItems([.bottomLoader], toSection: .main) - case is State.NoMore: - snapshot.appendItems([.emptyBottomLoader], toSection: .main) - animatingDifferences = false - // TODO: handle other states - default: - break - } - } - } - .store(in: &disposeBag) + } deinit { diff --git a/Mastodon/Scene/PublicTimeline/PublicTimelineViewController+Provider.swift b/Mastodon/Scene/PublicTimeline/PublicTimelineViewController+Provider.swift deleted file mode 100644 index dd7730630..000000000 --- a/Mastodon/Scene/PublicTimeline/PublicTimelineViewController+Provider.swift +++ /dev/null @@ -1,95 +0,0 @@ -// -// PublicTimelineViewController+Provider.swift -// Mastodon -// -// Created by sxiaojian on 2021/1/27. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack -import MastodonSDK - -// MARK: - StatusProvider -extension PublicTimelineViewController: StatusProvider { - - func status() -> Future { - return Future { promise in promise(.success(nil)) } - } - - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future { - return Future { promise in - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - switch item { - case .status(let objectID, _): - let managedObjectContext = self.viewModel.fetchedResultsController.managedObjectContext - managedObjectContext.perform { - let status = managedObjectContext.object(with: objectID) as? Status - promise(.success(status)) - } - default: - promise(.success(nil)) - } - } - } - - func status(for cell: UICollectionViewCell) -> Future { - return Future { promise in promise(.success(nil)) } - } - - var managedObjectContext: NSManagedObjectContext { - return viewModel.fetchedResultsController.managedObjectContext - } - - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { - return viewModel.diffableDataSource - } - - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return nil - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - return nil - } - - return item - } - - func items(indexPaths: [IndexPath]) -> [Item] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return [] - } - - var items: [Item] = [] - for indexPath in indexPaths { - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { continue } - items.append(item) - } - return items - } - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return [] } - let items = indexPaths.compactMap { diffableDataSource.itemIdentifier(for: $0)?.statusObjectItem } - return items - } - -} - -extension PublicTimelineViewController: UserProvider {} diff --git a/Mastodon/Scene/PublicTimeline/PublicTimelineViewController.swift b/Mastodon/Scene/PublicTimeline/PublicTimelineViewController.swift deleted file mode 100644 index 29d84b791..000000000 --- a/Mastodon/Scene/PublicTimeline/PublicTimelineViewController.swift +++ /dev/null @@ -1,239 +0,0 @@ -// -// PublicTimelineViewController.swift -// Mastodon -// -// Created by sxiaojian on 2021/1/27. -// - -import AVKit -import Combine -import CoreData -import CoreDataStack -import GameplayKit -import os.log -import UIKit - -final class PublicTimelineViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { - weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } - weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } - - var disposeBag = Set() - var viewModel: PublicTimelineViewModel! - - let mediaPreviewTransitionController = MediaPreviewTransitionController() - - let refreshControl = UIRefreshControl() - - lazy var tableView: UITableView = { - let tableView = UITableView() - tableView.register(StatusTableViewCell.self, forCellReuseIdentifier: String(describing: StatusTableViewCell.self)) - tableView.register(TimelineMiddleLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineMiddleLoaderTableViewCell.self)) - tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) - tableView.rowHeight = UITableView.automaticDimension - tableView.separatorStyle = .none - tableView.backgroundColor = .clear - return tableView - }() - - deinit { - os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) - } -} - -extension PublicTimelineViewController { - override func viewDidLoad() { - super.viewDidLoad() - - title = "Public" - view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor - tableView.refreshControl = refreshControl - refreshControl.addTarget(self, action: #selector(PublicTimelineViewController.refreshControlValueChanged(_:)), for: .valueChanged) - // bind refresh control - viewModel.isFetchingLatestTimeline - .receive(on: DispatchQueue.main) - .sink { [weak self] isFetching in - guard let self = self else { return } - if !isFetching { - UIView.animate(withDuration: 0.5) { [weak self] in - guard let self = self else { return } - self.refreshControl.endRefreshing() - } - } - } - .store(in: &disposeBag) - - tableView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) - - viewModel.tableView = tableView - viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self - tableView.delegate = self - tableView.prefetchDataSource = self - viewModel.setupDiffableDataSource( - for: tableView, - dependency: self, - statusTableViewCellDelegate: self, - timelineMiddleLoaderTableViewCellDelegate: self - ) - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - context.videoPlaybackService.viewDidDisappear(from: self) - context.audioPlaybackService.viewDidDisappear(from: self) - } -} - -// MARK: - UIScrollViewDelegate -extension PublicTimelineViewController { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - handleScrollViewDidScroll(scrollView) - } -} - -// MARK: - Selector -extension PublicTimelineViewController { - @objc private func refreshControlValueChanged(_ sender: UIRefreshControl) { - guard viewModel.stateMachine.enter(PublicTimelineViewModel.State.Loading.self) else { - sender.endRefreshing() - return - } - } -} - -// MARK: - UITableViewDelegate -extension PublicTimelineViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - guard let diffableDataSource = viewModel.diffableDataSource else { return 100 } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return 100 } - - guard let frame = viewModel.cellFrameCache.object(forKey: NSNumber(value: item.hashValue))?.cgRectValue else { - return 200 - } - - return ceil(frame.height) - } - - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {} - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - handleTableView(tableView, willDisplay: cell, forRowAt: indexPath) - } - func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - handleTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - - let key = item.hashValue - let frame = cell.frame - viewModel.cellFrameCache.setObject(NSValue(cgRect: frame), forKey: NSNumber(value: key)) - } -} - -// MARK: - UITableViewDataSourcePrefetching -extension PublicTimelineViewController: UITableViewDataSourcePrefetching { - func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - handleTableView(tableView, prefetchRowsAt: indexPaths) - } -} - -// MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate -extension PublicTimelineViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { - func navigationBar() -> UINavigationBar? { - return navigationController?.navigationBar - } -} - -// MARK: - LoadMoreConfigurableTableViewContainer -extension PublicTimelineViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell - typealias LoadingState = PublicTimelineViewModel.State.LoadingMore - - var loadMoreConfigurableTableView: UITableView { return tableView } - var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.stateMachine } -} - -// MARK: - TimelineMiddleLoaderTableViewCellDelegate -extension PublicTimelineViewController: TimelineMiddleLoaderTableViewCellDelegate { - func configure(cell: TimelineMiddleLoaderTableViewCell, upperTimelineStatusID: String?, timelineIndexobjectID: NSManagedObjectID?) { - guard let upperTimelineStatusID = upperTimelineStatusID else {return} - viewModel.loadMiddleSateMachineList - .receive(on: DispatchQueue.main) - .sink { [weak self] ids in - guard let _ = self else { return } - if let stateMachine = ids[upperTimelineStatusID] { - guard let state = stateMachine.currentState else { - assertionFailure() - return - } - - // make success state same as loading due to snapshot updating delay - let isLoading = state is PublicTimelineViewModel.LoadMiddleState.Loading || state is PublicTimelineViewModel.LoadMiddleState.Success - if isLoading { - cell.startAnimating() - } else { - cell.stopAnimating() - } - } else { - cell.stopAnimating() - } - } - .store(in: &cell.disposeBag) - - var dict = viewModel.loadMiddleSateMachineList.value - if let _ = dict[upperTimelineStatusID] { - // do nothing - } else { - let stateMachine = GKStateMachine(states: [ - PublicTimelineViewModel.LoadMiddleState.Initial(viewModel: viewModel, upperTimelineStatusID: upperTimelineStatusID), - PublicTimelineViewModel.LoadMiddleState.Loading(viewModel: viewModel, upperTimelineStatusID: upperTimelineStatusID), - PublicTimelineViewModel.LoadMiddleState.Fail(viewModel: viewModel, upperTimelineStatusID: upperTimelineStatusID), - PublicTimelineViewModel.LoadMiddleState.Success(viewModel: viewModel, upperTimelineStatusID: upperTimelineStatusID), - ]) - stateMachine.enter(PublicTimelineViewModel.LoadMiddleState.Initial.self) - dict[upperTimelineStatusID] = stateMachine - viewModel.loadMiddleSateMachineList.value = dict - } - } - - func timelineMiddleLoaderTableViewCell(_ cell: TimelineMiddleLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let indexPath = tableView.indexPath(for: cell) else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - - switch item { - case .publicMiddleLoader(let upper): - guard let stateMachine = viewModel.loadMiddleSateMachineList.value[upper] else { - assertionFailure() - return - } - stateMachine.enter(PublicTimelineViewModel.LoadMiddleState.Loading.self) - default: - assertionFailure() - } - } -} - -// MARK: - AVPlayerViewControllerDelegate -extension PublicTimelineViewController: AVPlayerViewControllerDelegate { - - func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } - - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } - -} - -// MARK: - StatusTableViewCellDelegate -extension PublicTimelineViewController: StatusTableViewCellDelegate { - weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } - func parent() -> UIViewController { return self } -} diff --git a/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+Diffable.swift b/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+Diffable.swift deleted file mode 100644 index e9d5c518b..000000000 --- a/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+Diffable.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// PublicTimelineViewModel+Diffable.swift -// Mastodon -// -// Created by sxiaojian on 2021/1/27. -// - -import CoreData -import CoreDataStack -import os.log -import UIKit - -extension PublicTimelineViewModel { - func setupDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, - statusTableViewCellDelegate: StatusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate - ) { - diffableDataSource = StatusSection.tableViewDiffableDataSource( - for: tableView, - timelineContext: .public, - dependency: dependency, - managedObjectContext: fetchedResultsController.managedObjectContext, - statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: timelineMiddleLoaderTableViewCellDelegate, - threadReplyLoaderTableViewCellDelegate: nil - ) - items.value = [] - stateMachine.enter(PublicTimelineViewModel.State.Loading.self) - } -} - -// MARK: - NSFetchedResultsControllerDelegate - -extension PublicTimelineViewModel: NSFetchedResultsControllerDelegate { - func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { - os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) - - let indexes = statusIDs.value - let statuses = fetchedResultsController.fetchedObjects ?? [] - guard statuses.count == indexes.count else { return } - let indexStatusTuples: [(Int, Status)] = statuses - .compactMap { status -> (Int, Status)? in - guard status.deletedAt == nil else { return nil } - return indexes.firstIndex(of: status.id).map { index in (index, status) } - } - .sorted { $0.0 < $1.0 } - var oldSnapshotAttributeDict: [NSManagedObjectID: Item.StatusAttribute] = [:] - for item in self.items.value { - guard case let .status(objectID, attribute) = item else { continue } - oldSnapshotAttributeDict[objectID] = attribute - } - - var items = [Item]() - for (_, status) in indexStatusTuples { - let attribute = oldSnapshotAttributeDict[status.objectID] ?? Item.StatusAttribute() - items.append(Item.status(objectID: status.objectID, attribute: attribute)) - if statusIDsWhichHasGap.contains(status.id) { - items.append(Item.publicMiddleLoader(statusID: status.id)) - } - } - - self.items.value = items - } -} diff --git a/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+LoadMiddleState.swift b/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+LoadMiddleState.swift deleted file mode 100644 index 4727072bf..000000000 --- a/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+LoadMiddleState.swift +++ /dev/null @@ -1,115 +0,0 @@ -// -// PublicTimelineViewModel+LoadMiddleState.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/4. -// - -import CoreData -import CoreDataStack -import Foundation -import GameplayKit -import os.log - -extension PublicTimelineViewModel { - class LoadMiddleState: GKState { - weak var viewModel: PublicTimelineViewModel? - let upperTimelineStatusID: String - - init(viewModel: PublicTimelineViewModel, upperTimelineStatusID: String) { - self.viewModel = viewModel - self.upperTimelineStatusID = upperTimelineStatusID - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", (#file as NSString).lastPathComponent, #line, #function, self.debugDescription, previousState.debugDescription) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - var dict = viewModel.loadMiddleSateMachineList.value - dict[self.upperTimelineStatusID] = stateMachine - viewModel.loadMiddleSateMachineList.value = dict // trigger value change - } - } -} - -extension PublicTimelineViewModel.LoadMiddleState { - class Initial: PublicTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - return stateClass == Loading.self - } - } - - class Loading: PublicTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return stateClass == Success.self || stateClass == Fail.self - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - stateMachine.enter(Fail.self) - return - } - viewModel.context.apiService.publicTimeline( - domain: activeMastodonAuthenticationBox.domain, - maxID: upperTimelineStatusID - ) - .receive(on: DispatchQueue.main) - .sink { completion in - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: fetch statuses failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break - } - } receiveValue: { response in - let statuses = response.value - let addedStatuses = statuses.filter { !viewModel.statusIDs.value.contains($0.id) } - - guard let gapIndex = viewModel.statusIDs.value.firstIndex(of: self.upperTimelineStatusID) else { return } - let upStatuses = Array(viewModel.statusIDs.value[...gapIndex]) - let downStatuses = Array(viewModel.statusIDs.value[(gapIndex + 1)...]) - - // construct newStatusIDs - var newStatusIDs = upStatuses - newStatusIDs.append(contentsOf: addedStatuses.map { $0.id }) - newStatusIDs.append(contentsOf: downStatuses) - // remove old gap from viewmodel - if let index = viewModel.statusIDsWhichHasGap.firstIndex(of: self.upperTimelineStatusID) { - viewModel.statusIDsWhichHasGap.remove(at: index) - } - // add new gap from viewmodel if need - let intersection = statuses.filter { downStatuses.contains($0.id) } - if intersection.isEmpty { - addedStatuses.last.flatMap { viewModel.statusIDsWhichHasGap.append($0.id) } - } - - viewModel.statusIDs.value = newStatusIDs - os_log("%{public}s[%{public}ld], %{public}s: load %{public}ld statuses, %{public}%ld new statues", (#file as NSString).lastPathComponent, #line, #function, statuses.count, addedStatuses.count) - if addedStatuses.isEmpty { - stateMachine.enter(Fail.self) - } else { - stateMachine.enter(Success.self) - } - } - .store(in: &viewModel.disposeBag) - } - } - - class Fail: PublicTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return stateClass == Loading.self - } - } - - class Success: PublicTimelineViewModel.LoadMiddleState { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - // guard let viewModel = viewModel else { return false } - return false - } - } -} diff --git a/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+State.swift b/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+State.swift deleted file mode 100644 index c165adb70..000000000 --- a/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel+State.swift +++ /dev/null @@ -1,168 +0,0 @@ -// -// PublicTimelineViewModel+State.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/2. -// - -import Foundation -import GameplayKit -import MastodonSDK -import os.log - -extension PublicTimelineViewModel { - class State: GKState { - weak var viewModel: PublicTimelineViewModel? - - init(viewModel: PublicTimelineViewModel) { - self.viewModel = viewModel - } - - override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", (#file as NSString).lastPathComponent, #line, #function, self.debugDescription, previousState.debugDescription) - } - } -} - -extension PublicTimelineViewModel.State { - class Initial: PublicTimelineViewModel.State { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - switch stateClass { - case is Loading.Type: - return true - default: - return false - } - } - } - - class Loading: PublicTimelineViewModel.State { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - switch stateClass { - case is Fail.Type: - return true - case is Idle.Type: - return true - default: - return false - } - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - stateMachine.enter(Fail.self) - return - } - - viewModel.context.apiService.publicTimeline(domain: activeMastodonAuthenticationBox.domain) - .receive(on: DispatchQueue.main) - .sink { completion in - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: fetch user timeline latest response error: %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) - stateMachine.enter(Fail.self) - - case .finished: - break - } - } receiveValue: { response in - let resposeStatusIDs = response.value.compactMap { $0.id } - var newStatusIDs = resposeStatusIDs - let oldStatusIDs = viewModel.statusIDs.value - var hasGap = true - for statusID in oldStatusIDs { - if !newStatusIDs.contains(statusID) { - newStatusIDs.append(statusID) - } else { - hasGap = false - } - } - if hasGap && oldStatusIDs.count > 0 { - resposeStatusIDs.last.flatMap { viewModel.statusIDsWhichHasGap.append($0) } - } - viewModel.statusIDs.value = newStatusIDs - stateMachine.enter(Idle.self) - } - .store(in: &viewModel.disposeBag) - } - } - - class Fail: PublicTimelineViewModel.State { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - switch stateClass { - case is Loading.Type, is LoadingMore.Type: - return true - default: - return false - } - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - guard let viewModel = viewModel else { return } - - // trigger items update - viewModel.items.value = viewModel.items.value - } - } - - class Idle: PublicTimelineViewModel.State { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - switch stateClass { - case is Loading.Type, is LoadingMore.Type: - return true - default: - return false - } - } - } - - class LoadingMore: PublicTimelineViewModel.State { - override func isValidNextState(_ stateClass: AnyClass) -> Bool { - switch stateClass { - case is Fail.Type: - return true - case is Idle.Type: - return true - default: - return false - } - } - - override func didEnter(from previousState: GKState?) { - super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - stateMachine.enter(Fail.self) - return - } - let maxID = viewModel.statusIDs.value.last - viewModel.context.apiService.publicTimeline( - domain: activeMastodonAuthenticationBox.domain, - maxID: maxID - ) - .sink { completion in - switch completion { - case .failure(let error): - stateMachine.enter(Fail.self) - os_log("%{public}s[%{public}ld], %{public}s: load more fail: %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) - case .finished: - break - } - } receiveValue: { response in - stateMachine.enter(Idle.self) - var oldStatusIDs = viewModel.statusIDs.value - for status in response.value { - if !oldStatusIDs.contains(status.id) { - oldStatusIDs.append(status.id) - } - } - - viewModel.statusIDs.value = oldStatusIDs - } - .store(in: &viewModel.disposeBag) - } - } -} diff --git a/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel.swift b/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel.swift deleted file mode 100644 index 6d6ecbd34..000000000 --- a/Mastodon/Scene/PublicTimeline/PublicTimelineViewModel.swift +++ /dev/null @@ -1,165 +0,0 @@ -// -// PublicTimelineViewModel.swift -// Mastodon -// -// Created by sxiaojian on 2021/1/27. -// - -import AlamofireImage -import Combine -import CoreData -import CoreDataStack -import GameplayKit -import MastodonSDK -import os.log -import UIKit - -class PublicTimelineViewModel: NSObject { - var disposeBag = Set() - - // input - let context: AppContext - let fetchedResultsController: NSFetchedResultsController - - let isFetchingLatestTimeline = CurrentValueSubject(false) - - // middle loader - let loadMiddleSateMachineList = CurrentValueSubject<[String: GKStateMachine], Never>([:]) - - weak var tableView: UITableView? - - weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? - - // - var statusIDsWhichHasGap = [String]() - // output - var diffableDataSource: UITableViewDiffableDataSource? - - lazy var stateMachine: GKStateMachine = { - let stateMachine = GKStateMachine(states: [ - State.Initial(viewModel: self), - State.Loading(viewModel: self), - State.Fail(viewModel: self), - State.Idle(viewModel: self), - State.LoadingMore(viewModel: self), - ]) - stateMachine.enter(State.Initial.self) - return stateMachine - }() - - let statusIDs = CurrentValueSubject<[String], Never>([]) - let items = CurrentValueSubject<[Item], Never>([]) - var cellFrameCache = NSCache() - - init(context: AppContext) { - self.context = context - self.fetchedResultsController = { - let fetchRequest = Status.sortedFetchRequest - fetchRequest.predicate = Status.predicate(domain: "", ids: []) - fetchRequest.returnsObjectsAsFaults = false - fetchRequest.fetchBatchSize = 20 - let controller = NSFetchedResultsController( - fetchRequest: fetchRequest, - managedObjectContext: context.managedObjectContext, - sectionNameKeyPath: nil, - cacheName: nil - ) - - return controller - }() - super.init() - - fetchedResultsController.delegate = self - - items - .receive(on: DispatchQueue.main) - .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) - .sink { [weak self] items in - guard let self = self else { return } - guard let diffableDataSource = self.diffableDataSource else { return } - guard let navigationBar = self.contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } - guard let tableView = self.tableView else { return } - let oldSnapshot = diffableDataSource.snapshot() - os_log("%{public}s[%{public}ld], %{public}s: items did change", (#file as NSString).lastPathComponent, #line, #function) - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - snapshot.appendItems(items) - if let currentState = self.stateMachine.currentState { - switch currentState { - case is State.Idle, is State.LoadingMore, is State.Fail: - snapshot.appendItems([.bottomLoader], toSection: .main) - default: - break - } - } - - DispatchQueue.main.async { - - guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: snapshot) else { - diffableDataSource.apply(snapshot) - self.isFetchingLatestTimeline.value = false - return - } - - diffableDataSource.reloadData(snapshot: snapshot) { - tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) - tableView.contentOffset.y = tableView.contentOffset.y - difference.offset - self.isFetchingLatestTimeline.value = false - } - } - } - .store(in: &disposeBag) - - statusIDs - .receive(on: DispatchQueue.main) - .sink { [weak self] ids in - guard let self = self else { return } - let domain = self.context.authenticationService.activeMastodonAuthenticationBox.value?.domain ?? "" - self.fetchedResultsController.fetchRequest.predicate = Status.predicate(domain: domain, ids: ids) - do { - try self.fetchedResultsController.performFetch() - } catch { - assertionFailure(error.localizedDescription) - } - } - .store(in: &disposeBag) - } - - deinit { - os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) - } - - private struct Difference { - let item: T - let sourceIndexPath: IndexPath - let targetIndexPath: IndexPath - let offset: CGFloat - } - - private func calculateReloadSnapshotDifference( - navigationBar: UINavigationBar, - tableView: UITableView, - oldSnapshot: NSDiffableDataSourceSnapshot, - newSnapshot: NSDiffableDataSourceSnapshot - ) -> Difference? { - guard oldSnapshot.numberOfItems != 0 else { return nil } - - // old snapshot not empty. set source index path to first item if not match - let sourceIndexPath = UIViewController.topVisibleTableViewCellIndexPath(in: tableView, navigationBar: navigationBar) ?? IndexPath(row: 0, section: 0) - - guard sourceIndexPath.row < oldSnapshot.itemIdentifiers(inSection: .main).count else { return nil } - - let timelineItem = oldSnapshot.itemIdentifiers(inSection: .main)[sourceIndexPath.row] - guard let itemIndex = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: timelineItem) else { return nil } - let targetIndexPath = IndexPath(row: itemIndex, section: 0) - - let offset = UIViewController.tableViewCellOriginOffsetToWindowTop(in: tableView, at: sourceIndexPath, navigationBar: navigationBar) - return Difference( - item: timelineItem, - sourceIndexPath: sourceIndexPath, - targetIndexPath: targetIndexPath, - offset: offset - ) - } -} diff --git a/Mastodon/Scene/Report/ReportFooterView.swift b/Mastodon/Scene/Report/ReportFooterView.swift index 0bad78cb2..19cd21ffc 100644 --- a/Mastodon/Scene/Report/ReportFooterView.swift +++ b/Mastodon/Scene/Report/ReportFooterView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class ReportFooterView: UIView { enum Step: Int { diff --git a/Mastodon/Scene/Report/ReportHeaderView.swift b/Mastodon/Scene/Report/ReportHeaderView.swift index 23572c118..cf74e96ff 100644 --- a/Mastodon/Scene/Report/ReportHeaderView.swift +++ b/Mastodon/Scene/Report/ReportHeaderView.swift @@ -6,6 +6,9 @@ // import UIKit +import MastodonAsset +import MastodonLocalization + struct ReportView { static var horizontalMargin: CGFloat { return 12 } diff --git a/Mastodon/Scene/Report/ReportViewController.swift b/Mastodon/Scene/Report/ReportViewController.swift index b97424cb5..28f38aa5d 100644 --- a/Mastodon/Scene/Report/ReportViewController.swift +++ b/Mastodon/Scene/Report/ReportViewController.swift @@ -13,6 +13,8 @@ import os.log import UIKit import MastodonSDK import MastodonMeta +import MastodonAsset +import MastodonLocalization class ReportViewController: UIViewController, NeedsDependency { static let kAnimationDuration: TimeInterval = 0.33 @@ -22,7 +24,7 @@ class ReportViewController: UIViewController, NeedsDependency { var viewModel: ReportViewModel! { willSet { precondition(!isViewLoaded) } } var disposeBag = Set() - let didToggleSelected = PassthroughSubject() +// let didToggleSelected = PassthroughSubject() let comment = CurrentValueSubject(nil) let step1Continue = PassthroughSubject() let step1Skip = PassthroughSubject() @@ -154,7 +156,7 @@ class ReportViewController: UIViewController, NeedsDependency { private func bindViewModel() { let input = ReportViewModel.Input( - didToggleSelected: didToggleSelected.eraseToAnyPublisher(), +// didToggleSelected: didToggleSelected.eraseToAnyPublisher(), comment: comment.eraseToAnyPublisher(), step1Continue: step1Continue.eraseToAnyPublisher(), step1Skip: step1Skip.eraseToAnyPublisher(), @@ -273,7 +275,7 @@ class ReportViewController: UIViewController, NeedsDependency { navigationItem.titleView = titleView if let user = beReportedUser { do { - let mastodonContent = MastodonContent(content: user.displayNameWithFallback, emojis: user.emojiMeta) + let mastodonContent = MastodonContent(content: user.displayNameWithFallback, emojis: user.emojis.asDictionary) let metaContent = try MastodonMetaContent.convert(document: mastodonContent) titleView.update(titleMetaContent: metaContent, subtitle: nil) } catch { @@ -342,14 +344,14 @@ extension ReportViewController: UITableViewDelegate { guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { return } - didToggleSelected.send(item) +// didToggleSelected.send(item) } func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { return } - didToggleSelected.send(item) +// didToggleSelected.send(item) } } diff --git a/Mastodon/Scene/Report/ReportViewModel+Data.swift b/Mastodon/Scene/Report/ReportViewModel+Data.swift index 178fc18a5..1ba49f311 100644 --- a/Mastodon/Scene/Report/ReportViewModel+Data.swift +++ b/Mastodon/Scene/Report/ReportViewModel+Data.swift @@ -19,120 +19,123 @@ extension ReportViewModel { accountId: String, authorizationBox: MastodonAuthenticationBox ) { - context.apiService.userTimeline( - domain: domain, - accountID: accountId, - excludeReblogs: true, - authorizationBox: authorizationBox - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch user timeline fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - guard let self = self else { return } - guard let reportStatusId = self.status?.id else { return } - var statusIDs = self.statusFetchedResultsController.statusIDs.value - guard statusIDs.contains(reportStatusId) else { return } - - statusIDs.append(reportStatusId) - self.statusFetchedResultsController.statusIDs.value = statusIDs - case .finished: - break - } - } receiveValue: { [weak self] response in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - guard let self = self else { return } - - var statusIDs = response.value.map { $0.id } - if let reportStatusId = self.status?.id, !statusIDs.contains(reportStatusId) { - statusIDs.append(reportStatusId) - } - - self.statusFetchedResultsController.statusIDs.value = statusIDs - } - .store(in: &disposeBag) + fatalError() +// context.apiService.userTimeline( +// domain: domain, +// accountID: accountId, +// excludeReblogs: true, +// authorizationBox: authorizationBox +// ) +// .receive(on: DispatchQueue.main) +// .sink { [weak self] completion in +// switch completion { +// case .failure(let error): +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch user timeline fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) +// guard let self = self else { return } +// guard let reportStatusId = self.status?.id else { return } +// var statusIDs = self.statusFetchedResultsController.statusIDs.value +// guard statusIDs.contains(reportStatusId) else { return } +// +// statusIDs.append(reportStatusId) +// self.statusFetchedResultsController.statusIDs.value = statusIDs +// case .finished: +// break +// } +// } receiveValue: { [weak self] response in +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) +// guard let self = self else { return } +// +// var statusIDs = response.value.map { $0.id } +// if let reportStatusId = self.status?.id, !statusIDs.contains(reportStatusId) { +// statusIDs.append(reportStatusId) +// } +// +// self.statusFetchedResultsController.statusIDs.value = statusIDs +// } +// .store(in: &disposeBag) } func fetchStatus() { + fatalError() let managedObjectContext = self.statusFetchedResultsController.fetchedResultsController.managedObjectContext - statusFetchedResultsController.objectIDs.eraseToAnyPublisher() - .receive(on: DispatchQueue.main) - .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) - .sink { [weak self] objectIDs in - guard let self = self else { return } - guard let diffableDataSource = self.diffableDataSource else { return } - - var items: [Item] = [] - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - - defer { - // not animate when empty items fix loader first appear layout issue - diffableDataSource.apply(snapshot, animatingDifferences: !items.isEmpty) - } - - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.ReportStatusAttribute] = [:] - let oldSnapshot = diffableDataSource.snapshot() - for item in oldSnapshot.itemIdentifiers { - guard case let .reportStatus(objectID, attribute) = item else { continue } - oldSnapshotAttributeDict[objectID] = attribute - } - - for objectID in objectIDs { - let attribute = oldSnapshotAttributeDict[objectID] ?? Item.ReportStatusAttribute() - let item = Item.reportStatus(objectID: objectID, attribute: attribute) - items.append(item) - - guard let status = managedObjectContext.object(with: objectID) as? Status else { - continue - } - if status.id == self.status?.id { - attribute.isSelected = true - self.append(statusID: status.id) - self.continueEnableSubject.send(true) - } - } - snapshot.appendItems(items, toSection: .main) - } - .store(in: &disposeBag) +// statusFetchedResultsController.objectIDs.eraseToAnyPublisher() +// .receive(on: DispatchQueue.main) +// .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) +// .sink { [weak self] objectIDs in +// guard let self = self else { return } +// guard let diffableDataSource = self.diffableDataSource else { return } +// +// var items: [Item] = [] +// var snapshot = NSDiffableDataSourceSnapshot() +// snapshot.appendSections([.main]) +// +// defer { +// // not animate when empty items fix loader first appear layout issue +// diffableDataSource.apply(snapshot, animatingDifferences: !items.isEmpty) +// } +// +// var oldSnapshotAttributeDict: [NSManagedObjectID : Item.ReportStatusAttribute] = [:] +// let oldSnapshot = diffableDataSource.snapshot() +// for item in oldSnapshot.itemIdentifiers { +// guard case let .reportStatus(objectID, attribute) = item else { continue } +// oldSnapshotAttributeDict[objectID] = attribute +// } +// +// for objectID in objectIDs { +// let attribute = oldSnapshotAttributeDict[objectID] ?? Item.ReportStatusAttribute() +// let item = Item.reportStatus(objectID: objectID, attribute: attribute) +// items.append(item) +// +// guard let status = managedObjectContext.object(with: objectID) as? Status else { +// continue +// } +// if status.id == self.status?.id { +// attribute.isSelected = true +// self.append(statusID: status.id) +// self.continueEnableSubject.send(true) +// } +// } +// snapshot.appendItems(items, toSection: .main) +// } +// .store(in: &disposeBag) } func prefetchData(prefetchRowsAt indexPaths: [IndexPath]) { - guard let diffableDataSource = diffableDataSource else { return } - - // prefetch reply status - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - let domain = activeMastodonAuthenticationBox.domain - - var statusObjectIDs: [NSManagedObjectID] = [] - for indexPath in indexPaths { - let item = diffableDataSource.itemIdentifier(for: indexPath) - switch item { - case .reportStatus(let objectID, _): - statusObjectIDs.append(objectID) - default: - continue - } - } - - let backgroundManagedObjectContext = context.backgroundManagedObjectContext - backgroundManagedObjectContext.perform { [weak self] in - guard let self = self else { return } - for objectID in statusObjectIDs { - let status = backgroundManagedObjectContext.object(with: objectID) as! Status - guard let replyToID = status.inReplyToID, status.replyTo == nil else { - // skip - continue - } - self.context.statusPrefetchingService.prefetchReplyTo( - domain: domain, - statusObjectID: status.objectID, - statusID: status.id, - replyToStatusID: replyToID, - authorizationBox: activeMastodonAuthenticationBox - ) - } - } + fatalError() +// guard let diffableDataSource = diffableDataSource else { return } +// +// // prefetch reply status +// guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } +// let domain = activeMastodonAuthenticationBox.domain +// +// var statusObjectIDs: [NSManagedObjectID] = [] +// for indexPath in indexPaths { +// let item = diffableDataSource.itemIdentifier(for: indexPath) +// switch item { +// case .reportStatus(let objectID, _): +// statusObjectIDs.append(objectID) +// default: +// continue +// } +// } +// +// let backgroundManagedObjectContext = context.backgroundManagedObjectContext +// backgroundManagedObjectContext.perform { [weak self] in +// guard let self = self else { return } +// for objectID in statusObjectIDs { +// let status = backgroundManagedObjectContext.object(with: objectID) as! Status +// guard let replyToID = status.inReplyToID, status.replyTo == nil else { +// // skip +// continue +// } +// self.context.statusPrefetchingService.prefetchReplyTo( +// domain: domain, +// statusObjectID: status.objectID, +// statusID: status.id, +// replyToStatusID: replyToID, +// authorizationBox: activeMastodonAuthenticationBox +// ) +// } +// } } } diff --git a/Mastodon/Scene/Report/ReportViewModel+Diffable.swift b/Mastodon/Scene/Report/ReportViewModel+Diffable.swift index 73d6ffa0d..4133f5fbe 100644 --- a/Mastodon/Scene/Report/ReportViewModel+Diffable.swift +++ b/Mastodon/Scene/Report/ReportViewModel+Diffable.swift @@ -15,21 +15,22 @@ extension ReportViewModel { for tableView: UITableView, dependency: ReportViewController ) { - let timestampUpdatePublisher = Timer.publish(every: 1.0, on: .main, in: .common) - .autoconnect() - .share() - .eraseToAnyPublisher() - - diffableDataSource = ReportSection.tableViewDiffableDataSource( - for: tableView, - dependency: dependency, - managedObjectContext: statusFetchedResultsController.fetchedResultsController.managedObjectContext, - timestampUpdatePublisher: timestampUpdatePublisher - ) - - // set empty section to make update animation top-to-bottom style - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - diffableDataSource?.apply(snapshot) + fatalError() +// let timestampUpdatePublisher = Timer.publish(every: 1.0, on: .main, in: .common) +// .autoconnect() +// .share() +// .eraseToAnyPublisher() +// +// diffableDataSource = ReportSection.tableViewDiffableDataSource( +// for: tableView, +// dependency: dependency, +// managedObjectContext: statusFetchedResultsController.fetchedResultsController.managedObjectContext, +// timestampUpdatePublisher: timestampUpdatePublisher +// ) +// +// // set empty section to make update animation top-to-bottom style +// var snapshot = NSDiffableDataSourceSnapshot() +// snapshot.appendSections([.main]) +// diffableDataSource?.apply(snapshot) } } diff --git a/Mastodon/Scene/Report/ReportViewModel.swift b/Mastodon/Scene/Report/ReportViewModel.swift index c8e59e8d6..90ff106ff 100644 --- a/Mastodon/Scene/Report/ReportViewModel.swift +++ b/Mastodon/Scene/Report/ReportViewModel.swift @@ -33,12 +33,12 @@ class ReportViewModel: NSObject { var disposeBag = Set() let currentStep = CurrentValueSubject(.one) let statusFetchedResultsController: StatusFetchedResultsController - var diffableDataSource: UITableViewDiffableDataSource? + var diffableDataSource: UITableViewDiffableDataSource? let continueEnableSubject = CurrentValueSubject(false) let sendEnableSubject = CurrentValueSubject(false) struct Input { - let didToggleSelected: AnyPublisher +// let didToggleSelected: AnyPublisher let comment: AnyPublisher let step1Continue: AnyPublisher let step1Skip: AnyPublisher @@ -113,25 +113,25 @@ class ReportViewModel: NSObject { // MARK: - Private methods func bindData(input: Input) { - input.didToggleSelected.sink { [weak self] (item) in - guard let self = self else { return } - guard case let .reportStatus(objectID, attribute) = item else { return } - let managedObjectContext = self.statusFetchedResultsController.fetchedResultsController.managedObjectContext - guard let status = managedObjectContext.object(with: objectID) as? Status else { - return - } - - attribute.isSelected = !attribute.isSelected - if attribute.isSelected { - self.append(statusID: status.id) - } else { - self.remove(statusID: status.id) - } - - let continueEnable = self.statusIDs.count > 0 - self.continueEnableSubject.send(continueEnable) - } - .store(in: &disposeBag) +// input.didToggleSelected.sink { [weak self] (item) in +// guard let self = self else { return } +// guard case let .reportStatus(objectID, attribute) = item else { return } +// let managedObjectContext = self.statusFetchedResultsController.fetchedResultsController.managedObjectContext +// guard let status = managedObjectContext.object(with: objectID) as? Status else { +// return +// } +// +// attribute.isSelected = !attribute.isSelected +// if attribute.isSelected { +// self.append(statusID: status.id) +// } else { +// self.remove(statusID: status.id) +// } +// +// let continueEnable = self.statusIDs.count > 0 +// self.continueEnableSubject.send(continueEnable) +// } +// .store(in: &disposeBag) input.comment.sink { [weak self] (comment) in guard let self = self else { return } diff --git a/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift b/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift index 0880c479a..aaba5c83f 100644 --- a/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift +++ b/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift @@ -13,8 +13,10 @@ import CoreData import CoreDataStack import Meta import MetaTextKit +import MastodonAsset +import MastodonLocalization -final class ReportedStatusTableViewCell: UITableViewCell, StatusCell { +final class ReportedStatusTableViewCell: UITableViewCell { static let bottomPaddingHeight: CGFloat = 10 @@ -46,12 +48,12 @@ final class ReportedStatusTableViewCell: UITableViewCell, StatusCell { override func prepareForReuse() { super.prepareForReuse() - statusView.updateContentWarningDisplay(isHidden: true, animated: false) - statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isUserInteractionEnabled = true - statusView.pollTableView.dataSource = nil - statusView.playerContainerView.reset() - statusView.playerContainerView.contentWarningOverlayView.isUserInteractionEnabled = true - statusView.playerContainerView.isHidden = true +// statusView.updateContentWarningDisplay(isHidden: true, animated: false) +// statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isUserInteractionEnabled = true +// statusView.pollTableView.dataSource = nil +// statusView.playerContainerView.reset() +// statusView.playerContainerView.contentWarningOverlayView.isUserInteractionEnabled = true +// statusView.playerContainerView.isHidden = true disposeBag.removeAll() observations.removeAll() } @@ -132,9 +134,9 @@ extension ReportedStatusTableViewCell { resetSeparatorLineLayout() selectionStyle = .none - statusView.delegate = self - statusView.statusMosaicImageViewContainer.delegate = self - statusView.actionToolbarContainer.isHidden = true +// statusView.delegate = self +// statusView.statusMosaicImageViewContainer.delegate = self +// statusView.actionToolbarContainer.isHidden = true } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { @@ -181,39 +183,39 @@ extension ReportedStatusTableViewCell: MosaicImageViewContainerDelegate { } func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - - guard let dependency = self.dependency else { return } - StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) + fatalError() +// guard let dependency = self.dependency else { return } +// StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) } } -extension ReportedStatusTableViewCell: StatusViewDelegate { - - func statusView(_ statusView: StatusView, headerInfoLabelDidPressed label: UILabel) { - } - - func statusView(_ statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) { - } - - func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { - guard let dependency = self.dependency else { return } - StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) - } - - func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - guard let dependency = self.dependency else { return } - StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) - } - - func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - guard let dependency = self.dependency else { return } - StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) - } - - func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) { - } - - func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { - } - -} +//extension ReportedStatusTableViewCell: StatusViewDelegate { +// +// func statusView(_ statusView: StatusView, headerInfoLabelDidPressed label: UILabel) { +// } +// +// func statusView(_ statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) { +// } +// +// func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { +// guard let dependency = self.dependency else { return } +// StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) +// } +// +// func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { +// guard let dependency = self.dependency else { return } +// StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) +// } +// +// func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { +// guard let dependency = self.dependency else { return } +// StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) +// } +// +// func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) { +// } +// +// func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { +// } +// +//} diff --git a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift index 058a0fc3d..db50565aa 100644 --- a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift +++ b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift @@ -9,6 +9,8 @@ import os.log import UIKit import Combine import SafariServices +import MastodonAsset +import MastodonLocalization class MainTabBarController: UITabBarController { @@ -587,7 +589,12 @@ extension MainTabBarController { @objc private func composeNewPostKeyCommandHandler(_ sender: UIKeyCommand) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - let composeViewModel = ComposeViewModel(context: context, composeKind: .post) + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + let composeViewModel = ComposeViewModel( + context: context, + composeKind: .post, + authenticationBox: authenticationBox + ) coordinator.present(scene: .compose(viewModel: composeViewModel), from: nil, transition: .modal(animated: true, completion: nil)) } diff --git a/Mastodon/Scene/Root/Sidebar/SidebarViewController.swift b/Mastodon/Scene/Root/Sidebar/SidebarViewController.swift index b5f67e769..6568ab0cd 100644 --- a/Mastodon/Scene/Root/Sidebar/SidebarViewController.swift +++ b/Mastodon/Scene/Root/Sidebar/SidebarViewController.swift @@ -199,9 +199,15 @@ extension SidebarViewController: UICollectionViewDelegate { case secondaryCollectionView: guard let diffableDataSource = viewModel.secondaryDiffableDataSource else { return } guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } + + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } switch item { case .compose: - let composeViewModel = ComposeViewModel(context: context, composeKind: .post) + let composeViewModel = ComposeViewModel( + context: context, + composeKind: .post, + authenticationBox: authenticationBox + ) coordinator.present(scene: .compose(viewModel: composeViewModel), from: self, transition: .modal(animated: true, completion: nil)) default: assertionFailure() diff --git a/Mastodon/Scene/Root/Sidebar/SidebarViewModel.swift b/Mastodon/Scene/Root/Sidebar/SidebarViewModel.swift index 37b46932b..3cc277dc6 100644 --- a/Mastodon/Scene/Root/Sidebar/SidebarViewModel.swift +++ b/Mastodon/Scene/Root/Sidebar/SidebarViewModel.swift @@ -11,6 +11,8 @@ import CoreData import CoreDataStack import Meta import MastodonMeta +import MastodonAsset +import MastodonLocalization final class SidebarViewModel { diff --git a/Mastodon/Scene/Root/Sidebar/View/SidebarAddAccountCollectionViewCell.swift b/Mastodon/Scene/Root/Sidebar/View/SidebarAddAccountCollectionViewCell.swift index 72b2577f1..da3793a9c 100644 --- a/Mastodon/Scene/Root/Sidebar/View/SidebarAddAccountCollectionViewCell.swift +++ b/Mastodon/Scene/Root/Sidebar/View/SidebarAddAccountCollectionViewCell.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class SidebarAddAccountCollectionViewCell: UICollectionViewListCell { diff --git a/Mastodon/Scene/Root/Sidebar/View/SidebarListHeaderView.swift b/Mastodon/Scene/Root/Sidebar/View/SidebarListHeaderView.swift index 6a1bb3ddf..33e0867c6 100644 --- a/Mastodon/Scene/Root/Sidebar/View/SidebarListHeaderView.swift +++ b/Mastodon/Scene/Root/Sidebar/View/SidebarListHeaderView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class SidebarListHeaderView: UICollectionReusableView { diff --git a/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift b/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift new file mode 100644 index 000000000..48a7606b5 --- /dev/null +++ b/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift @@ -0,0 +1,134 @@ +// +// TrendCollectionViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-1-18. +// + +import UIKit +import Combine +import MetaTextKit +import MastodonAsset + +final class TrendCollectionViewCell: UICollectionViewCell { + + var _disposeBag = Set() + + let container: UIStackView = { + let stackView = UIStackView() + stackView.axis = .horizontal + stackView.spacing = 16 + return stackView + }() + + let infoContainer: UIStackView = { + let stackView = UIStackView() + stackView.axis = .vertical + return stackView + }() + + let lineChartContainer: UIStackView = { + let stackView = UIStackView() + stackView.axis = .vertical + return stackView + }() + + let primaryLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) + label.textColor = Asset.Colors.Label.primary.color + return label + }() + + let secondaryLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .subheadline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular)) + label.textColor = Asset.Colors.Label.secondary.color + return label + }() + + let lineChartView = LineChartView() + + override func prepareForReuse() { + super.prepareForReuse() + } + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension TrendCollectionViewCell { + + private func _init() { + ThemeService.shared.currentTheme + .map { $0.secondarySystemGroupedBackgroundColor } + .sink { [weak self] backgroundColor in + guard let self = self else { return } + self.backgroundColor = backgroundColor + self.setNeedsUpdateConfiguration() + } + .store(in: &_disposeBag) + + container.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(container) + NSLayoutConstraint.activate([ + container.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 11), + container.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + container.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: container.bottomAnchor, constant: 11), + ]) + + container.layoutMargins = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16) + container.isLayoutMarginsRelativeArrangement = true + + // container: H - [ info container | padding | line chart container ] + container.addArrangedSubview(infoContainer) + + // info container: V - [ primary | secondary ] + infoContainer.addArrangedSubview(primaryLabel) + infoContainer.addArrangedSubview(secondaryLabel) + + // padding + let padding = UIView() + container.addArrangedSubview(padding) + + // line chart + container.addArrangedSubview(lineChartContainer) + + let lineChartViewTopPadding = UIView() + let lineChartViewBottomPadding = UIView() + lineChartViewTopPadding.translatesAutoresizingMaskIntoConstraints = false + lineChartViewBottomPadding.translatesAutoresizingMaskIntoConstraints = false + lineChartView.translatesAutoresizingMaskIntoConstraints = false + lineChartContainer.addArrangedSubview(lineChartViewTopPadding) + lineChartContainer.addArrangedSubview(lineChartView) + lineChartContainer.addArrangedSubview(lineChartViewBottomPadding) + NSLayoutConstraint.activate([ + lineChartView.widthAnchor.constraint(equalToConstant: 50), + lineChartView.heightAnchor.constraint(equalToConstant: 26), + lineChartViewTopPadding.heightAnchor.constraint(equalTo: lineChartViewBottomPadding.heightAnchor), + ]) + } + + override func updateConfiguration(using state: UICellConfigurationState) { + super.updateConfiguration(using: state) + + var backgroundConfiguration = UIBackgroundConfiguration.listGroupedCell() + backgroundConfiguration.backgroundColorTransformer = .init { _ in + if state.isHighlighted || state.isSelected { + return ThemeService.shared.currentTheme.value.tableViewCellSelectionBackgroundColor + } + return ThemeService.shared.currentTheme.value.secondarySystemGroupedBackgroundColor + } + self.backgroundConfiguration = backgroundConfiguration + } + +} diff --git a/Mastodon/Scene/Search/Search/Cell/TrendSectionHeaderCollectionReusableView.swift b/Mastodon/Scene/Search/Search/Cell/TrendSectionHeaderCollectionReusableView.swift new file mode 100644 index 000000000..4632f384c --- /dev/null +++ b/Mastodon/Scene/Search/Search/Cell/TrendSectionHeaderCollectionReusableView.swift @@ -0,0 +1,64 @@ +// +// TrendSectionHeaderCollectionReusableView.swift +// Mastodon +// +// Created by MainasuK on 2022-1-18. +// + +import UIKit +import MastodonAsset +import MastodonLocalization + +final class TrendSectionHeaderCollectionReusableView: UICollectionReusableView { + + let container: UIStackView = { + let stackView = UIStackView() + stackView.axis = .vertical + stackView.spacing = 4 + return stackView + }() + + let primaryLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 22, weight: .bold)) + label.textColor = Asset.Colors.Label.primary.color + label.text = L10n.Scene.Search.Recommend.HashTag.title + return label + }() + + let secondaryLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .subheadline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular)) + label.textColor = Asset.Colors.Label.secondary.color + label.text = L10n.Scene.Search.Recommend.HashTag.description + label.numberOfLines = 0 + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension TrendSectionHeaderCollectionReusableView { + private func _init() { + container.translatesAutoresizingMaskIntoConstraints = false + addSubview(container) + NSLayoutConstraint.activate([ + container.topAnchor.constraint(equalTo: topAnchor, constant: 16), + container.leadingAnchor.constraint(equalTo: leadingAnchor), + container.trailingAnchor.constraint(equalTo: trailingAnchor), + bottomAnchor.constraint(equalTo: container.bottomAnchor, constant: 16), + ]) + + container.addArrangedSubview(primaryLabel) + container.addArrangedSubview(secondaryLabel) + } +} diff --git a/Mastodon/Scene/Search/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift b/Mastodon/Scene/Search/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift deleted file mode 100644 index 2b0c4736d..000000000 --- a/Mastodon/Scene/Search/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift +++ /dev/null @@ -1,210 +0,0 @@ -// -// SearchRecommendAccountsCollectionViewCell.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/1. -// - -import os.log -import Combine -import CoreDataStack -import Foundation -import MastodonSDK -import UIKit -import MetaTextKit -import MastodonMeta - -protocol SearchRecommendAccountsCollectionViewCellDelegate: NSObject { - func searchRecommendAccountsCollectionViewCell(_ cell: SearchRecommendAccountsCollectionViewCell, followButtonDidPressed button: UIButton) -} - -class SearchRecommendAccountsCollectionViewCell: UICollectionViewCell { - - let logger = Logger(subsystem: "SearchRecommendAccountsCollectionViewCell", category: "UI") - var disposeBag = Set() - - weak var delegate: SearchRecommendAccountsCollectionViewCellDelegate? - - let avatarImageView: UIImageView = { - let imageView = UIImageView() - imageView.layer.cornerRadius = 8.4 - imageView.clipsToBounds = true - return imageView - }() - - let headerImageView: UIImageView = { - let imageView = UIImageView() - imageView.contentMode = .scaleAspectFill - imageView.layer.cornerRadius = 10 - imageView.layer.cornerCurve = .continuous - imageView.clipsToBounds = true - imageView.layer.borderWidth = 2 - imageView.layer.borderColor = Asset.Colors.Border.searchCard.color.cgColor - return imageView - }() - - let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .regular)) - - let displayNameLabel = MetaLabel(style: .recommendAccountName) - - let acctLabel: UILabel = { - let label = UILabel() - label.textColor = .white - label.font = .preferredFont(forTextStyle: .body) - label.textAlignment = .center - label.translatesAutoresizingMaskIntoConstraints = false - return label - }() - - let followButton: HighlightDimmableButton = { - let button = HighlightDimmableButton(type: .custom) - button.setInsets(forContentPadding: UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16), imageTitlePadding: 0) - button.setTitleColor(.white, for: .normal) - button.setTitle(L10n.Scene.Search.Recommend.Accounts.follow, for: .normal) - button.titleLabel?.font = .systemFont(ofSize: 14, weight: .semibold) - button.layer.cornerRadius = 12 - button.layer.cornerCurve = .continuous - button.layer.borderWidth = 2 - button.layer.borderColor = UIColor.white.cgColor - return button - }() - - override func prepareForReuse() { - super.prepareForReuse() - headerImageView.af.cancelImageRequest() - avatarImageView.af.cancelImageRequest() - disposeBag.removeAll() - } - - override init(frame: CGRect) { - super.init(frame: .zero) - configure() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - configure() - } - - override var isHighlighted: Bool { - didSet { - contentView.alpha = isHighlighted ? 0.8 : 1.0 - } - } - -} - -extension SearchRecommendAccountsCollectionViewCell { - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - headerImageView.layer.borderColor = Asset.Colors.Border.searchCard.color.cgColor - applyShadow(color: Asset.Colors.Shadow.searchCard.color, alpha: 0.1, x: 0, y: 3, blur: 12, spread: 0) - } - - private func configure() { - headerImageView.backgroundColor = Asset.Colors.brandBlue.color - layer.cornerRadius = 10 - layer.cornerCurve = .continuous - clipsToBounds = false - applyShadow(color: Asset.Colors.Shadow.searchCard.color, alpha: 0.1, x: 0, y: 3, blur: 12, spread: 0) - - headerImageView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(headerImageView) - NSLayoutConstraint.activate([ - headerImageView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), - headerImageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - headerImageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - headerImageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) - ]) - - headerImageView.addSubview(visualEffectView) - visualEffectView.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - visualEffectView.topAnchor.constraint(equalTo: headerImageView.topAnchor), - visualEffectView.leadingAnchor.constraint(equalTo: headerImageView.leadingAnchor), - visualEffectView.trailingAnchor.constraint(equalTo: headerImageView.trailingAnchor), - visualEffectView.bottomAnchor.constraint(equalTo: headerImageView.bottomAnchor) - ]) - - let containerStackView = UIStackView() - containerStackView.axis = .vertical - containerStackView.distribution = .fill - containerStackView.alignment = .center - containerStackView.spacing = 6 - containerStackView.layoutMargins = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16) - containerStackView.isLayoutMarginsRelativeArrangement = true - containerStackView.translatesAutoresizingMaskIntoConstraints = false - - contentView.addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - ]) - - avatarImageView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(avatarImageView) - NSLayoutConstraint.activate([ - avatarImageView.widthAnchor.constraint(equalToConstant: 88), - avatarImageView.heightAnchor.constraint(equalToConstant: 88) - ]) - containerStackView.addArrangedSubview(avatarImageView) - containerStackView.setCustomSpacing(20, after: avatarImageView) - displayNameLabel.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(displayNameLabel) - containerStackView.setCustomSpacing(0, after: displayNameLabel) - - acctLabel.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(acctLabel) - containerStackView.setCustomSpacing(7, after: acctLabel) - - followButton.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(followButton) - NSLayoutConstraint.activate([ - followButton.widthAnchor.constraint(greaterThanOrEqualToConstant: 76), - followButton.heightAnchor.constraint(greaterThanOrEqualToConstant: 24) - ]) - containerStackView.addArrangedSubview(followButton) - - followButton.addTarget(self, action: #selector(SearchRecommendAccountsCollectionViewCell.followButtonDidPressed(_:)), for: .touchUpInside) - - displayNameLabel.isUserInteractionEnabled = false - } - -} - -extension SearchRecommendAccountsCollectionViewCell { - @objc private func followButtonDidPressed(_ sender: UIButton) { - logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") - delegate?.searchRecommendAccountsCollectionViewCell(self, followButtonDidPressed: sender) - } -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct SearchRecommendAccountsCollectionViewCell_Previews: PreviewProvider { - static var controls: some View { - Group { - UIViewPreview { - let cell = SearchRecommendAccountsCollectionViewCell() - cell.avatarImageView.backgroundColor = .white - cell.headerImageView.backgroundColor = .red - cell.displayNameLabel.text = "sunxiaojian" - cell.acctLabel.text = "sunxiaojian@mastodon.online" - return cell - } - .previewLayout(.fixed(width: 257, height: 202)) - } - } - - static var previews: some View { - Group { - controls.colorScheme(.light) - controls.colorScheme(.dark) - } - .background(Color.gray) - } -} - -#endif diff --git a/Mastodon/Scene/Search/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift b/Mastodon/Scene/Search/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift deleted file mode 100644 index 3a20788b5..000000000 --- a/Mastodon/Scene/Search/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift +++ /dev/null @@ -1,170 +0,0 @@ -// -// SearchRecommendTagsCollectionViewCell.swift -// Mastodon -// -// Created by sxiaojian on 2021/3/31. -// - -import Foundation -import MastodonSDK -import UIKit - -class SearchRecommendTagsCollectionViewCell: UICollectionViewCell { - let backgroundImageView: UIImageView = { - let imageView = UIImageView() - return imageView - }() - - let hashtagTitleLabel: UILabel = { - let label = UILabel() - label.textColor = .white - label.font = .systemFont(ofSize: 20, weight: .semibold) - label.lineBreakMode = .byTruncatingTail - return label - }() - - let peopleLabel: UILabel = { - let label = UILabel() - label.textColor = .white - label.font = .preferredFont(forTextStyle: .body) - label.numberOfLines = 2 - return label - }() - - let lineChartView = LineChartView() - - override func prepareForReuse() { - super.prepareForReuse() - } - - override init(frame: CGRect) { - super.init(frame: .zero) - configure() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - configure() - } - - override var isHighlighted: Bool { - didSet { - backgroundColor = isHighlighted ? Asset.Colors.brandBlueDarken20.color : Asset.Colors.brandBlue.color - } - } -} - -extension SearchRecommendTagsCollectionViewCell { - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - layer.borderColor = Asset.Colors.Border.searchCard.color.cgColor - applyShadow(color: Asset.Colors.Shadow.searchCard.color, alpha: 0.1, x: 0, y: 3, blur: 12, spread: 0) - } - - private func configure() { - backgroundColor = Asset.Colors.brandBlue.color - layer.cornerRadius = 10 - layer.cornerCurve = .continuous - clipsToBounds = false - layer.borderWidth = 2 - layer.borderColor = Asset.Colors.Border.searchCard.color.cgColor - applyShadow(color: Asset.Colors.Shadow.searchCard.color, alpha: 0.1, x: 0, y: 3, blur: 12, spread: 0) - - backgroundImageView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(backgroundImageView) - NSLayoutConstraint.activate([ - backgroundImageView.topAnchor.constraint(equalTo: contentView.topAnchor), - backgroundImageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - backgroundImageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - backgroundImageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) - ]) - - - let containerStackView = UIStackView() - containerStackView.axis = .vertical - containerStackView.distribution = .fill - containerStackView.layoutMargins = UIEdgeInsets(top: 16, left: 16, bottom: 0, right: 16) - containerStackView.isLayoutMarginsRelativeArrangement = true - containerStackView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor) - ]) - - containerStackView.addArrangedSubview(hashtagTitleLabel) - containerStackView.addArrangedSubview(peopleLabel) - - let lineChartContainer = UIView() - lineChartContainer.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(lineChartContainer) - NSLayoutConstraint.activate([ - lineChartContainer.topAnchor.constraint(equalTo: containerStackView.bottomAnchor, constant: 12), - lineChartContainer.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - contentView.trailingAnchor.constraint(equalTo: lineChartContainer.trailingAnchor), - contentView.bottomAnchor.constraint(equalTo: lineChartContainer.bottomAnchor, constant: 12), - ]) - lineChartContainer.layer.masksToBounds = true - - lineChartView.translatesAutoresizingMaskIntoConstraints = false - lineChartContainer.addSubview(lineChartView) - NSLayoutConstraint.activate([ - lineChartView.topAnchor.constraint(equalTo: lineChartContainer.topAnchor, constant: 4), - lineChartView.leadingAnchor.constraint(equalTo: lineChartContainer.leadingAnchor), - lineChartView.trailingAnchor.constraint(equalTo: lineChartContainer.trailingAnchor), - lineChartContainer.bottomAnchor.constraint(equalTo: lineChartView.bottomAnchor, constant: 4), - ]) - - } - - func config(with tag: Mastodon.Entity.Tag) { - hashtagTitleLabel.text = "# " + tag.name - guard let history = tag.history else { - peopleLabel.text = "" - return - } - - let recentHistory = history.prefix(2) - let peopleAreTalking = recentHistory.compactMap({ Int($0.accounts) }).reduce(0, +) - let string = L10n.Scene.Search.Recommend.HashTag.peopleTalking(String(peopleAreTalking)) - peopleLabel.text = string - - lineChartView.data = history - .sorted(by: { $0.day < $1.day }) // latest last - .map { entry in - guard let point = Int(entry.accounts) else { - return .zero - } - return CGFloat(point) - } - } -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct SearchRecommendTagsCollectionViewCell_Previews: PreviewProvider { - static var controls: some View { - Group { - UIViewPreview { - let cell = SearchRecommendTagsCollectionViewCell() - cell.hashtagTitleLabel.text = "# test" - cell.peopleLabel.text = "128 people are talking" - return cell - } - .previewLayout(.fixed(width: 228, height: 130)) - } - } - - static var previews: some View { - Group { - controls.colorScheme(.light) - controls.colorScheme(.dark) - } - .background(Color.gray) - } -} - -#endif diff --git a/Mastodon/Scene/Search/Search/SearchViewController+Follow.swift b/Mastodon/Scene/Search/Search/SearchViewController+Follow.swift deleted file mode 100644 index 386b0af18..000000000 --- a/Mastodon/Scene/Search/Search/SearchViewController+Follow.swift +++ /dev/null @@ -1,110 +0,0 @@ -// -// SearchViewController+Follow.swift -// Mastodon -// -// Created by xiaojian sun on 2021/4/9. -// - -import Combine -import CoreDataStack -import Foundation -import UIKit - -extension SearchViewController: UserProvider { - - func mastodonUser(for cell: UITableViewCell?) -> Future { - return Future { promise in - promise(.success(nil)) - } - } - - func mastodonUser() -> Future { - Future { promise in - promise(.success(nil)) - } - } -} - -extension SearchViewController: SearchRecommendAccountsCollectionViewCellDelegate { - func searchRecommendAccountsCollectionViewCell(_ cell: SearchRecommendAccountsCollectionViewCell, followButtonDidPressed button: UIButton) { - guard let diffableDataSource = viewModel.accountDiffableDataSource else { return } - guard let indexPath = accountsCollectionView.indexPath(for: cell), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - - context.managedObjectContext.performAndWait { - guard let user = try? context.managedObjectContext.existingObject(with: item) as? MastodonUser else { return } - self.toggleFriendship(for: user) - } - } - - func toggleFriendship(for mastodonUser: MastodonUser) { - guard let currentMastodonUser = viewModel.currentMastodonUser.value else { - return - } - guard let relationshipAction = RecommendAccountSection.relationShipActionSet( - mastodonUser: mastodonUser, - currentMastodonUser: currentMastodonUser).highPriorityAction(except: .editOptions) - else { return } - switch relationshipAction { - case .none: - break - case .follow, .following: - UserProviderFacade.toggleUserFollowRelationship(provider: self, mastodonUser: mastodonUser) - .sink { _ in - // error handling - } receiveValue: { _ in - // success - } - .store(in: &disposeBag) - case .pending: - break - case .muting: - let name = mastodonUser.displayNameWithFallback - let alertController = UIAlertController( - title: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.title, - message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.message(name), - preferredStyle: .alert - ) - let unmuteAction = UIAlertAction(title: L10n.Common.Controls.Friendship.unmute, style: .default) { [weak self] _ in - guard let self = self else { return } - UserProviderFacade.toggleUserMuteRelationship(provider: self, mastodonUser: mastodonUser) - .sink { _ in - // do nothing - } receiveValue: { _ in - // do nothing - } - .store(in: &self.context.disposeBag) - } - alertController.addAction(unmuteAction) - let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .cancel, handler: nil) - alertController.addAction(cancelAction) - present(alertController, animated: true, completion: nil) - case .blocking: - let name = mastodonUser.displayNameWithFallback - let alertController = UIAlertController( - title: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.title, - message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.message(name), - preferredStyle: .alert - ) - let unblockAction = UIAlertAction(title: L10n.Common.Controls.Friendship.unblock, style: .default) { [weak self] _ in - guard let self = self else { return } - UserProviderFacade.toggleUserBlockRelationship(provider: self, mastodonUser: mastodonUser) - .sink { _ in - // do nothing - } receiveValue: { _ in - // do nothing - } - .store(in: &self.context.disposeBag) - } - alertController.addAction(unblockAction) - let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .cancel, handler: nil) - alertController.addAction(cancelAction) - present(alertController, animated: true, completion: nil) - case .blocked: - break - default: - assertionFailure() - } - } - -} diff --git a/Mastodon/Scene/Search/Search/SearchViewController+Recommend.swift b/Mastodon/Scene/Search/Search/SearchViewController+Recommend.swift deleted file mode 100644 index 4365a63f4..000000000 --- a/Mastodon/Scene/Search/Search/SearchViewController+Recommend.swift +++ /dev/null @@ -1,118 +0,0 @@ -// -// SearchViewController+Recommend.swift -// Mastodon -// -// Created by sxiaojian on 2021/3/31. -// - -import CoreData -import CoreDataStack -import Foundation -import MastodonSDK -import OSLog -import UIKit - -extension SearchViewController { - func setupHashTagCollectionView() { - let header = SearchRecommendCollectionHeader() - header.titleLabel.text = L10n.Scene.Search.Recommend.HashTag.title - header.descriptionLabel.text = L10n.Scene.Search.Recommend.HashTag.description - header.seeAllButton.isHidden = true - stackView.addArrangedSubview(header) - - hashtagCollectionView.register(SearchRecommendTagsCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: SearchRecommendTagsCollectionViewCell.self)) - hashtagCollectionView.delegate = self - - hashtagCollectionView.translatesAutoresizingMaskIntoConstraints = false - stackView.addArrangedSubview(hashtagCollectionView) - NSLayoutConstraint.activate([ - hashtagCollectionView.frameLayoutGuide.heightAnchor.constraint(equalToConstant: CGFloat(SearchViewController.hashtagCardHeight)) - ]) - } - - func setupAccountsCollectionView() { - let header = SearchRecommendCollectionHeader() - header.titleLabel.text = L10n.Scene.Search.Recommend.Accounts.title - header.descriptionLabel.text = L10n.Scene.Search.Recommend.Accounts.description - header.seeAllButton.addTarget(self, action: #selector(SearchViewController.accountSeeAllButtonPressed(_:)), for: .touchUpInside) - stackView.addArrangedSubview(header) - - accountsCollectionView.register(SearchRecommendAccountsCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: SearchRecommendAccountsCollectionViewCell.self)) - accountsCollectionView.delegate = self - - accountsCollectionView.translatesAutoresizingMaskIntoConstraints = false - stackView.addArrangedSubview(accountsCollectionView) - NSLayoutConstraint.activate([ - accountsCollectionView.frameLayoutGuide.heightAnchor.constraint(equalToConstant: CGFloat(SearchViewController.accountCardHeight)) - ]) - } - - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - hashtagCollectionView.collectionViewLayout.invalidateLayout() - accountsCollectionView.collectionViewLayout.invalidateLayout() - } -} - -extension SearchViewController: UICollectionViewDelegate { - func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s", (#file as NSString).lastPathComponent, #line, #function, indexPath.debugDescription) - collectionView.selectItem(at: indexPath, animated: true, scrollPosition: .centeredHorizontally) - switch collectionView { - case self.accountsCollectionView: - guard let diffableDataSource = viewModel.accountDiffableDataSource else { return } - guard let accountObjectID = diffableDataSource.itemIdentifier(for: indexPath) else { return } - let mastodonUser = context.managedObjectContext.object(with: accountObjectID) as! MastodonUser - let viewModel = ProfileViewModel(context: context, optionalMastodonUser: mastodonUser) - DispatchQueue.main.async { - self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) - } - case self.hashtagCollectionView: - guard let diffableDataSource = viewModel.hashtagDiffableDataSource else { return } - guard let hashtag = diffableDataSource.itemIdentifier(for: indexPath) else { return } - let (tagInCoreData, _) = APIService.CoreData.createOrMergeTag(into: context.managedObjectContext, entity: hashtag) - let viewModel = HashtagTimelineViewModel(context: context, hashtag: tagInCoreData.name) - DispatchQueue.main.async { - self.coordinator.present(scene: .hashtagTimeline(viewModel: viewModel), from: self, transition: .show) - } - default: - break - } - } -} - -// MARK: - UICollectionViewDelegateFlowLayout - -extension SearchViewController: UICollectionViewDelegateFlowLayout { - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { - UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16) - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { - if collectionView == hashtagCollectionView { - return 6 - } else { - return 12 - } - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - if collectionView == hashtagCollectionView { - return CGSize(width: 228, height: SearchViewController.hashtagCardHeight) - } else { - return CGSize(width: 257, height: SearchViewController.accountCardHeight) - } - } -} - -extension SearchViewController { - @objc func hashtagSeeAllButtonPressed(_ sender: UIButton) {} - - @objc func accountSeeAllButtonPressed(_ sender: UIButton) { - if self.viewModel.recommendAccounts.isEmpty { - return - } - let viewModel = SuggestionAccountViewModel(context: context, accounts: self.viewModel.recommendAccounts) - coordinator.present(scene: .suggestionAccount(viewModel: viewModel), from: self, transition: .modal(animated: true, completion: nil)) - } -} diff --git a/Mastodon/Scene/Search/Search/SearchViewController.swift b/Mastodon/Scene/Search/Search/SearchViewController.swift index 8dcf9cd3b..ebfa1584c 100644 --- a/Mastodon/Scene/Search/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/Search/SearchViewController.swift @@ -10,6 +10,8 @@ import Combine import GameplayKit import MastodonSDK import UIKit +import MastodonAsset +import MastodonLocalization final class HeightFixedSearchBar: UISearchBar { override var intrinsicContentSize: CGSize { @@ -19,26 +21,7 @@ final class HeightFixedSearchBar: UISearchBar { final class SearchViewController: UIViewController, NeedsDependency { - let logger = Logger(subsystem: "Search", category: "UI") - - public static var hashtagCardHeight: CGFloat { - get { - if UIScreen.main.bounds.size.height > 736 { - return 186 - } - return 130 - } - } - - public static var hashtagPeopleTalkingLabelTop: CGFloat { - get { - if UIScreen.main.bounds.size.height > 736 { - return 18 - } - return 6 - } - } - public static let accountCardHeight = 202 + let logger = Logger(subsystem: "SearchViewController", category: "ViewController") weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -52,45 +35,14 @@ final class SearchViewController: UIViewController, NeedsDependency { // layout alongside with split mode button (on iPad) let titleViewContainer = UIView() let searchBar = HeightFixedSearchBar() - - // recommend - let scrollView: UIScrollView = { - let scrollView = UIScrollView() - scrollView.showsVerticalScrollIndicator = false - scrollView.alwaysBounceVertical = true - scrollView.clipsToBounds = false - return scrollView - }() - let stackView: UIStackView = { - let stackView = UIStackView() - stackView.axis = .vertical - stackView.distribution = .fill - return stackView - }() - - let hashtagCollectionView: UICollectionView = { - let flowLayout = UICollectionViewFlowLayout() - flowLayout.scrollDirection = .horizontal - let view = ControlContainableCollectionView(frame: .zero, collectionViewLayout: flowLayout) - view.backgroundColor = .clear - view.showsHorizontalScrollIndicator = false - view.showsVerticalScrollIndicator = false - view.layer.masksToBounds = false - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - let accountsCollectionView: UICollectionView = { - let flowLayout = UICollectionViewFlowLayout() - flowLayout.scrollDirection = .horizontal - let view = ControlContainableCollectionView(frame: .zero, collectionViewLayout: flowLayout) - view.backgroundColor = .clear - view.showsHorizontalScrollIndicator = false - view.showsVerticalScrollIndicator = false - view.layer.masksToBounds = false - view.translatesAutoresizingMaskIntoConstraints = false - return view + let collectionView: UICollectionView = { + var configuration = UICollectionLayoutListConfiguration(appearance: .insetGrouped) + configuration.backgroundColor = .clear + configuration.headerMode = .supplementary + let layout = UICollectionViewCompositionalLayout.list(using: configuration) + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + return collectionView }() let searchBarTapPublisher = PassthroughSubject() @@ -107,7 +59,7 @@ extension SearchViewController { setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.setupBackgroundColor(theme: theme) @@ -117,10 +69,20 @@ extension SearchViewController { title = L10n.Scene.Search.title setupSearchBar() - setupScrollView() - setupHashTagCollectionView() - setupAccountsCollectionView() - setupDataSource() + + collectionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(collectionView) + NSLayoutConstraint.activate([ + collectionView.topAnchor.constraint(equalTo: view.topAnchor), + collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + collectionView.delegate = self + viewModel.setupDiffableDataSource( + collectionView: collectionView + ) } override func viewDidAppear(_ animated: Bool) { @@ -165,41 +127,6 @@ extension SearchViewController { .store(in: &disposeBag) } - private func setupScrollView() { - scrollView.translatesAutoresizingMaskIntoConstraints = false - stackView.translatesAutoresizingMaskIntoConstraints = false - - // scrollView - view.addSubview(scrollView) - NSLayoutConstraint.activate([ - scrollView.frameLayoutGuide.topAnchor.constraint(equalTo: view.topAnchor), - scrollView.frameLayoutGuide.leadingAnchor.constraint(equalTo: view.leadingAnchor), - view.trailingAnchor.constraint(equalTo: scrollView.frameLayoutGuide.trailingAnchor), - scrollView.frameLayoutGuide.bottomAnchor.constraint(equalTo: view.bottomAnchor), - scrollView.frameLayoutGuide.widthAnchor.constraint(equalTo: scrollView.contentLayoutGuide.widthAnchor), - ]) - - // stack view - scrollView.addSubview(stackView) - stackView.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor), - stackView.leadingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.leadingAnchor), - stackView.trailingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.trailingAnchor), - stackView.widthAnchor.constraint(equalTo: scrollView.contentLayoutGuide.widthAnchor), - scrollView.contentLayoutGuide.bottomAnchor.constraint(equalTo: stackView.bottomAnchor), - ]) - } - - private func setupDataSource() { - viewModel.hashtagDiffableDataSource = RecommendHashTagSection.collectionViewDiffableDataSource(for: hashtagCollectionView) - viewModel.accountDiffableDataSource = RecommendAccountSection.collectionViewDiffableDataSource( - for: accountsCollectionView, - dependency: self, - delegate: self, - managedObjectContext: context.managedObjectContext - ) - } } // MARK: - UISearchBarDelegate @@ -211,7 +138,7 @@ extension SearchViewController: UISearchBarDelegate { } } -// MARK - UISearchControllerDelegate +// MARK: - UISearchControllerDelegate extension SearchViewController: UISearchControllerDelegate { func willDismissSearchController(_ searchController: UISearchController) { logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") @@ -222,17 +149,22 @@ extension SearchViewController: UISearchControllerDelegate { } } -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct SearchViewController_Previews: PreviewProvider { - static var previews: some View { - UIViewControllerPreview { - let viewController = SearchViewController() - return viewController +// MARK: - UICollectionViewDelegate +extension SearchViewController: UICollectionViewDelegate { + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): select item at: \(indexPath.debugDescription)") + + defer { + collectionView.deselectItem(at: indexPath, animated: true) + } + + guard let diffableDataSource = viewModel.diffableDataSource else { return } + guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } + + switch item { + case .trend(let hashtag): + let viewModel = HashtagTimelineViewModel(context: context, hashtag: hashtag.name) + coordinator.present(scene: .hashtagTimeline(viewModel: viewModel), from: self, transition: .show) } - .previewLayout(.fixed(width: 375, height: 800)) } } - -#endif diff --git a/Mastodon/Scene/Search/Search/SearchViewModel+Diffable.swift b/Mastodon/Scene/Search/Search/SearchViewModel+Diffable.swift new file mode 100644 index 000000000..ca741b7f3 --- /dev/null +++ b/Mastodon/Scene/Search/Search/SearchViewModel+Diffable.swift @@ -0,0 +1,42 @@ +// +// SearchViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-1-18. +// + +import UIKit +import MastodonSDK + +extension SearchViewModel { + + func setupDiffableDataSource( + collectionView: UICollectionView + ) { + diffableDataSource = SearchSection.diffableDataSource( + collectionView: collectionView, + context: context + ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.trend]) + diffableDataSource?.apply(snapshot) + + $hashtags + .receive(on: DispatchQueue.main) + .sink { [weak self] hashtags in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.trend]) + + let trendItems = hashtags.map { SearchItem.trend($0) } + snapshot.appendItems(trendItems, toSection: .trend) + + diffableDataSource.apply(snapshot) + } + .store(in: &disposeBag) + } + +} diff --git a/Mastodon/Scene/Search/Search/SearchViewModel.swift b/Mastodon/Scene/Search/Search/SearchViewModel.swift index feae75190..2776713df 100644 --- a/Mastodon/Scene/Search/Search/SearchViewModel.swift +++ b/Mastodon/Scene/Search/Search/SearchViewModel.swift @@ -22,124 +22,38 @@ final class SearchViewModel: NSObject { let viewDidAppeared = PassthroughSubject() // output - let currentMastodonUser = CurrentValueSubject(nil) - - var recommendAccounts = [NSManagedObjectID]() - var recommendAccountsFallback = PassthroughSubject() + var diffableDataSource: UICollectionViewDiffableDataSource? + @Published var hashtags: [Mastodon.Entity.Tag] = [] - var hashtagDiffableDataSource: UICollectionViewDiffableDataSource? - var accountDiffableDataSource: UICollectionViewDiffableDataSource? - init(context: AppContext) { self.context = context super.init() - context.authenticationService.activeMastodonAuthentication - .map { $0?.user } - .assign(to: \.value, on: currentMastodonUser) - .store(in: &disposeBag) - Publishers.CombineLatest( context.authenticationService.activeMastodonAuthenticationBox, viewDidAppeared ) - .compactMap { activeMastodonAuthenticationBox, _ -> MastodonAuthenticationBox? in - return activeMastodonAuthenticationBox + .compactMap { authenticationBox, _ -> MastodonAuthenticationBox? in + return authenticationBox } - .throttle(for: 1, scheduler: DispatchQueue.main, latest: false) - .flatMap { box in - context.apiService.recommendTrends(domain: box.domain, query: nil) - .map { response in Result, Error> { response } } - .catch { error in Just(Result, Error> { throw error }) } - .eraseToAnyPublisher() + .throttle(for: 3, scheduler: DispatchQueue.main, latest: true) + .asyncMap { authenticationBox in + try await context.apiService.trends(domain: authenticationBox.domain, query: nil) } - .receive(on: RunLoop.main) + .retry(3) + .map { response in Result, Error> { response } } + .catch { error in Just(Result, Error> { throw error }) } + .receive(on: DispatchQueue.main) .sink { [weak self] result in guard let self = self else { return } switch result { case .success(let response): - guard let dataSource = self.hashtagDiffableDataSource else { return } - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - snapshot.appendItems(response.value, toSection: .main) - dataSource.apply(snapshot, animatingDifferences: false, completion: nil) + self.hashtags = response.value case .failure: break } } .store(in: &disposeBag) - - Publishers.CombineLatest( - context.authenticationService.activeMastodonAuthenticationBox, - viewDidAppeared - ) - .compactMap { activeMastodonAuthenticationBox, _ -> MastodonAuthenticationBox? in - return activeMastodonAuthenticationBox - } - .throttle(for: 1, scheduler: DispatchQueue.main, latest: false) - .flatMap { box -> AnyPublisher, Never> in - context.apiService.suggestionAccountV2(domain: box.domain, query: nil, mastodonAuthenticationBox: box) - .map { response in Result<[Mastodon.Entity.Account.ID], Error> { response.value.map { $0.account.id } } } - .catch { error -> AnyPublisher, Never> in - if let apiError = error as? Mastodon.API.Error, apiError.httpResponseStatus == .notFound { - return context.apiService.suggestionAccount(domain: box.domain, query: nil, mastodonAuthenticationBox: box) - .map { response in Result<[Mastodon.Entity.Account.ID], Error> { response.value.map { $0.id } } } - .catch { error in Just(Result<[Mastodon.Entity.Account.ID], Error> { throw error }) } - .eraseToAnyPublisher() - } else { - return Just(Result<[Mastodon.Entity.Account.ID], Error> { throw error }) - .eraseToAnyPublisher() - } - } - .eraseToAnyPublisher() - } - .receive(on: RunLoop.main) - .sink { [weak self] result in - guard let self = self else { return } - switch result { - case .success(let userIDs): - self.receiveAccounts(ids: userIDs) - case .failure: - break - } - } - .store(in: &disposeBag) - } - - func receiveAccounts(ids: [Mastodon.Entity.Account.ID]) { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { - return - } - let userFetchRequest = MastodonUser.sortedFetchRequest - userFetchRequest.predicate = MastodonUser.predicate(domain: activeMastodonAuthenticationBox.domain, ids: ids) - let mastodonUsers: [MastodonUser]? = { - let userFetchRequest = MastodonUser.sortedFetchRequest - userFetchRequest.predicate = MastodonUser.predicate(domain: activeMastodonAuthenticationBox.domain, ids: ids) - userFetchRequest.returnsObjectsAsFaults = false - do { - return try self.context.managedObjectContext.fetch(userFetchRequest) - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - guard let users = mastodonUsers else { return } - let objectIDs: [NSManagedObjectID] = users - .compactMap { object in - ids.firstIndex(of: object.id).map { index in (index, object) } - } - .sorted { $0.0 < $1.0 } - .map { $0.1.objectID } - - // append at front - let newObjectIDs = objectIDs.filter { !self.recommendAccounts.contains($0) } - self.recommendAccounts = newObjectIDs + self.recommendAccounts - - guard let dataSource = self.accountDiffableDataSource else { return } - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - snapshot.appendItems(self.recommendAccounts, toSection: .main) - dataSource.apply(snapshot, animatingDifferences: false, completion: nil) } } diff --git a/Mastodon/Scene/Search/Search/View/LineChartView.swift b/Mastodon/Scene/Search/Search/View/LineChartView.swift index a64aa270d..cd76fb0c8 100644 --- a/Mastodon/Scene/Search/Search/View/LineChartView.swift +++ b/Mastodon/Scene/Search/Search/View/LineChartView.swift @@ -8,6 +8,7 @@ import UIKit import Accelerate import simd +import MastodonAsset final class LineChartView: UIView { @@ -43,8 +44,8 @@ extension LineChartView { // layer.addSublayer(dotShapeLayer) gradientLayer.colors = [ - UIColor.white.withAlphaComponent(0.5).cgColor, - UIColor.white.withAlphaComponent(0).cgColor, + Asset.Colors.brandBlue.color.withAlphaComponent(0.5).cgColor, // set the same alpha to fill + Asset.Colors.brandBlue.color.withAlphaComponent(0.5).cgColor, ] gradientLayer.startPoint = CGPoint(x: 0.5, y: 0) gradientLayer.endPoint = CGPoint(x: 0.5, y: 1) @@ -95,8 +96,8 @@ extension LineChartView { dotPath.addArc(withCenter: last, radius: 3, startAngle: 0, endAngle: 2 * .pi, clockwise: true) } - lineShapeLayer.lineWidth = 3 - lineShapeLayer.strokeColor = UIColor.white.cgColor + lineShapeLayer.lineWidth = 1 + lineShapeLayer.strokeColor = Asset.Colors.brandBlue.color.cgColor lineShapeLayer.fillColor = UIColor.clear.cgColor lineShapeLayer.lineJoin = .round lineShapeLayer.lineCap = .round @@ -108,7 +109,7 @@ extension LineChartView { maskPath.close() let maskLayer = CAShapeLayer() maskLayer.path = maskPath.cgPath - maskLayer.fillColor = UIColor.red.cgColor + maskLayer.fillColor = Asset.Colors.brandBlue.color.cgColor maskLayer.strokeColor = UIColor.clear.cgColor maskLayer.lineWidth = 0.0 gradientLayer.mask = maskLayer diff --git a/Mastodon/Scene/Search/Search/View/SearchRecommendCollectionHeader.swift b/Mastodon/Scene/Search/Search/View/SearchRecommendCollectionHeader.swift index a828c64b6..0b7495cc8 100644 --- a/Mastodon/Scene/Search/Search/View/SearchRecommendCollectionHeader.swift +++ b/Mastodon/Scene/Search/Search/View/SearchRecommendCollectionHeader.swift @@ -7,6 +7,8 @@ import Foundation import UIKit +import MastodonAsset +import MastodonLocalization class SearchRecommendCollectionHeader: UIView { let titleLabel: UILabel = { diff --git a/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift b/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift index 486a3b48a..598f5df46 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift @@ -9,6 +9,8 @@ import os.log import UIKit import Combine import Pageboy +import MastodonAsset +import MastodonLocalization // Fake search bar not works on iPad with UISplitViewController // check device and fallback to standard UISearchController @@ -137,7 +139,7 @@ extension SearchDetailViewController { // set initial items from "all" search scope for non-appeared lists if let allSearchScopeViewController = viewControllers.first(where: { $0.viewModel.searchScope == .all }) { - allSearchScopeViewController.viewModel.items + allSearchScopeViewController.viewModel.$items .receive(on: DispatchQueue.main) .sink { [weak self] items in guard let self = self else { return } @@ -151,20 +153,11 @@ extension SearchDetailViewController { assertionFailure() break case .people: - viewController.viewModel.items.value = items.filter { item in - guard case .account = item else { return false } - return true - } + viewController.viewModel.userFetchedResultsController.userIDs.value = allSearchScopeViewController.viewModel.userFetchedResultsController.userIDs.value case .hashtags: - viewController.viewModel.items.value = items.filter { item in - guard case .hashtag = item else { return false } - return true - } + viewController.viewModel.hashtags = allSearchScopeViewController.viewModel.hashtags case .posts: - viewController.viewModel.items.value = items.filter { item in - guard case .status = item else { return false } - return true - } + viewController.viewModel.statusFetchedResultsController.statusIDs.value = allSearchScopeViewController.viewModel.statusFetchedResultsController.statusIDs.value } } } diff --git a/Mastodon/Scene/Search/SearchDetail/SearchDetailViewModel.swift b/Mastodon/Scene/Search/SearchDetail/SearchDetailViewModel.swift index e53108bc5..140fe14e8 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchDetailViewModel.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchDetailViewModel.swift @@ -10,6 +10,8 @@ import Foundation import CoreGraphics import Combine import MastodonSDK +import MastodonAsset +import MastodonLocalization final class SearchDetailViewModel { diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistorySectionHeaderCollectionReusableView.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistorySectionHeaderCollectionReusableView.swift new file mode 100644 index 000000000..4af94304f --- /dev/null +++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistorySectionHeaderCollectionReusableView.swift @@ -0,0 +1,80 @@ +// +// SearchHistorySectionHeaderCollectionReusableView.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import os.log +import UIKit +import MastodonAsset +import MastodonLocalization + +protocol SearchHistorySectionHeaderCollectionReusableViewDelegate: AnyObject { + func searchHistorySectionHeaderCollectionReusableView(_ searchHistorySectionHeaderCollectionReusableView: SearchHistorySectionHeaderCollectionReusableView, clearButtonDidPressed button: UIButton) +} + +final class SearchHistorySectionHeaderCollectionReusableView: UICollectionReusableView { + + let logger = Logger(subsystem: "SearchHistorySectionHeaderCollectionReusableView", category: "View") + + weak var delegate: SearchHistorySectionHeaderCollectionReusableViewDelegate? + + let primaryLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 22, weight: .bold)) + label.textColor = Asset.Colors.Label.primary.color + label.text = L10n.Scene.Search.Searching.recentSearch + return label + }() + + let clearButton: UIButton = { + let button = UIButton(type: .system) + button.setImage(UIImage(systemName: "xmark.circle.fill"), for: .normal) + button.tintColor = Asset.Colors.Label.secondary.color + return button + }() + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension SearchHistorySectionHeaderCollectionReusableView { + private func _init() { + primaryLabel.translatesAutoresizingMaskIntoConstraints = false + addSubview(primaryLabel) + NSLayoutConstraint.activate([ + primaryLabel.topAnchor.constraint(equalTo: topAnchor, constant: 16), + primaryLabel.leadingAnchor.constraint(equalTo: leadingAnchor), + bottomAnchor.constraint(equalTo: primaryLabel.bottomAnchor, constant: 16).priority(.required - 1), + ]) + primaryLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) + + clearButton.translatesAutoresizingMaskIntoConstraints = false + addSubview(clearButton) + NSLayoutConstraint.activate([ + clearButton.centerYAnchor.constraint(equalTo: centerYAnchor), + clearButton.leadingAnchor.constraint(equalTo: primaryLabel.trailingAnchor, constant: 16), + clearButton.trailingAnchor.constraint(equalTo: trailingAnchor), + ]) + clearButton.setContentHuggingPriority(.required - 10, for: .horizontal) + clearButton.setContentCompressionResistancePriority(.required - 10, for: .horizontal) + + clearButton.addTarget(self, action: #selector(SearchHistorySectionHeaderCollectionReusableView.clearButtonDidPressed(_:)), for: .touchUpInside) + } +} + +extension SearchHistorySectionHeaderCollectionReusableView { + @objc private func clearButtonDidPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.searchHistorySectionHeaderCollectionReusableView(self, clearButtonDidPressed: sender) + } +} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistoryUserCollectionViewCell+ViewModel.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistoryUserCollectionViewCell+ViewModel.swift new file mode 100644 index 000000000..d4cb86eb0 --- /dev/null +++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistoryUserCollectionViewCell+ViewModel.swift @@ -0,0 +1,27 @@ +// +// SearchHistoryUserCollectionViewCell+ViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import Foundation +import CoreDataStack + +extension SearchHistoryUserCollectionViewCell { + final class ViewModel { + let value: MastodonUser + + init(value: MastodonUser) { + self.value = value + } + } +} + +extension SearchHistoryUserCollectionViewCell { + func configure( + viewModel: ViewModel + ) { + userView.configure(user: viewModel.value) + } +} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistoryUserCollectionViewCell.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistoryUserCollectionViewCell.swift new file mode 100644 index 000000000..71663dd66 --- /dev/null +++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/Cell/SearchHistoryUserCollectionViewCell.swift @@ -0,0 +1,71 @@ +// +// SearchHistoryUserCollectionViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import UIKit +import Combine +import MastodonUI + +final class SearchHistoryUserCollectionViewCell: UICollectionViewCell { + + var _disposeBag = Set() + + let userView = UserView() + + override func prepareForReuse() { + super.prepareForReuse() + + userView.prepareForReuse() + } + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension SearchHistoryUserCollectionViewCell { + + private func _init() { + ThemeService.shared.currentTheme + .map { $0.secondarySystemGroupedBackgroundColor } + .sink { [weak self] backgroundColor in + guard let self = self else { return } + self.backgroundColor = backgroundColor + self.setNeedsUpdateConfiguration() + } + .store(in: &_disposeBag) + + userView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(userView) + NSLayoutConstraint.activate([ + userView.topAnchor.constraint(equalTo: contentView.topAnchor), + userView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16), + userView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: 16), + userView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + ]) + } + + override func updateConfiguration(using state: UICellConfigurationState) { + super.updateConfiguration(using: state) + + var backgroundConfiguration = UIBackgroundConfiguration.listGroupedCell() + backgroundConfiguration.backgroundColorTransformer = .init { _ in + if state.isHighlighted || state.isSelected { + return ThemeService.shared.currentTheme.value.tableViewCellSelectionBackgroundColor + } + return ThemeService.shared.currentTheme.value.secondarySystemGroupedBackgroundColor + } + self.backgroundConfiguration = backgroundConfiguration + } + +} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController+DataSourceProvider.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController+DataSourceProvider.swift new file mode 100644 index 000000000..a1bae2638 --- /dev/null +++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController+DataSourceProvider.swift @@ -0,0 +1,36 @@ +// +// SearchHistoryViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import UIKit + +// MARK: - DataSourceProvider +extension SearchHistoryViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.collectionViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .user(let record): + return .user(record: record) + case .hashtag(let record): + return .hashtag(tag: .record(record)) + } + } + + @MainActor + private func indexPath(for cell: UICollectionViewCell) async -> IndexPath? { + return collectionView.indexPath(for: cell) + } +} + diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController.swift index f60b2029d..0dbb89cf4 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController.swift @@ -5,30 +5,29 @@ // Created by MainasuK Cirno on 2021-7-13. // +import os.log import UIKit import Combine import CoreDataStack final class SearchHistoryViewController: UIViewController, NeedsDependency { - - var disposeBag = Set() + + let logger = Logger(subsystem: "SearchHistoryViewController", category: "ViewController") weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } + var disposeBag = Set() var viewModel: SearchHistoryViewModel! - - let searchHistoryTableHeaderView = SearchHistoryTableHeaderView() - let tableView: UITableView = { - let tableView = UITableView() - tableView.register(SearchResultTableViewCell.self, forCellReuseIdentifier: String(describing: SearchResultTableViewCell.self)) -// tableView.register(StatusTableViewCell.self, forCellReuseIdentifier: String(describing: StatusTableViewCell.self)) - tableView.separatorStyle = .none - tableView.tableFooterView = UIView() - tableView.backgroundColor = .clear - return tableView + + let collectionView: UICollectionView = { + var configuration = UICollectionLayoutListConfiguration(appearance: .insetGrouped) + configuration.backgroundColor = .clear + configuration.headerMode = .supplementary + let layout = UICollectionViewCompositionalLayout.list(using: configuration) + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + return collectionView }() - } extension SearchHistoryViewController { @@ -38,37 +37,28 @@ extension SearchHistoryViewController { setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.setupBackgroundColor(theme: theme) } .store(in: &disposeBag) - tableView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(tableView) + collectionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(collectionView) NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + collectionView.topAnchor.constraint(equalTo: view.topAnchor), + collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) - - tableView.delegate = self + + collectionView.delegate = self viewModel.setupDiffableDataSource( - tableView: tableView, - dependency: self + collectionView: collectionView, + searchHistorySectionHeaderCollectionReusableViewDelegate: self ) - - searchHistoryTableHeaderView.delegate = self } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - - tableView.deselectRow(with: transitionCoordinator, animated: animated) - } - } extension SearchHistoryViewController { @@ -77,52 +67,59 @@ extension SearchHistoryViewController { } } -// MARK: - UITableViewDelegate -extension SearchHistoryViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { - switch section { - case 0: - return searchHistoryTableHeaderView - default: - return UIView() +// MARK: - UICollectionViewDelegate +extension SearchHistoryViewController: UICollectionViewDelegate { + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): select item at: \(indexPath.debugDescription)") + + defer { + collectionView.deselectItem(at: indexPath, animated: true) + } + + Task { + let source = DataSourceItem.Source(indexPath: indexPath) + guard let item = await item(from: source) else { + return + } + + await DataSourceFacade.responseToCreateSearchHistory( + provider: self, + item: item + ) + + switch item { + case .user(let record): + await DataSourceFacade.coordinateToProfileScene( + provider: self, + user: record + ) + case .hashtag(let record): + await DataSourceFacade.coordinateToHashtagScene( + provider: self, + tag: record + ) + default: + assertionFailure() + break + } } } - func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { - switch section { - case 0: - return UITableView.automaticDimension - default: - return .leastNonzeroMagnitude - } - } +} - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - - viewModel.persistSearchHistory(for: item) - - switch item { - case .account(let objectID): - guard let user = try? viewModel.searchHistoryFetchedResultController.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonUser else { return } - let profileViewModel = CachedProfileViewModel(context: context, mastodonUser: user) - coordinator.present(scene: .profile(viewModel: profileViewModel), from: self, transition: .show) - case .hashtag(let objectID): - guard let hashtag = try? viewModel.searchHistoryFetchedResultController.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? Tag else { return } - let hashtagViewModel = HashtagTimelineViewModel(context: context, hashtag: hashtag.name) - coordinator.present(scene: .hashtagTimeline(viewModel: hashtagViewModel), from: self, transition: .show) - case .status(let objectID, _): - guard let status = try? viewModel.searchHistoryFetchedResultController.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? Status else { return } - let threadViewModel = CachedThreadViewModel(context: context, status: status) - coordinator.present(scene: .thread(viewModel: threadViewModel), from: self, transition: .show) +// MARK: - SearchHistorySectionHeaderCollectionReusableViewDelegate +extension SearchHistoryViewController: SearchHistorySectionHeaderCollectionReusableViewDelegate { + func searchHistorySectionHeaderCollectionReusableView( + _ searchHistorySectionHeaderCollectionReusableView: SearchHistorySectionHeaderCollectionReusableView, + clearButtonDidPressed button: UIButton + ) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + + Task { + try await DataSourceFacade.responseToDeleteSearchHistory( + provider: self + ) } } } - -// MARK: - SearchHistoryTableHeaderViewDelegate -extension SearchHistoryViewController: SearchHistoryTableHeaderViewDelegate { - func searchHistoryTableHeaderView(_ searchHistoryTableHeaderView: SearchHistoryTableHeaderView, clearSearchHistoryButtonDidPressed button: UIButton) { - viewModel.clearSearchHistory() - } -} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel+Diffable.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel+Diffable.swift new file mode 100644 index 000000000..c559523a7 --- /dev/null +++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel+Diffable.swift @@ -0,0 +1,66 @@ +// +// SearchHistoryViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import UIKit + +extension SearchHistoryViewModel { + + func setupDiffableDataSource( + collectionView: UICollectionView, + searchHistorySectionHeaderCollectionReusableViewDelegate: SearchHistorySectionHeaderCollectionReusableViewDelegate + ) { + diffableDataSource = SearchHistorySection.diffableDataSource( + collectionView: collectionView, + context: context, + configuration: SearchHistorySection.Configuration( + searchHistorySectionHeaderCollectionReusableViewDelegate: searchHistorySectionHeaderCollectionReusableViewDelegate + ) + ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + diffableDataSource?.apply(snapshot, animatingDifferences: false) + + searchHistoryFetchedResultController.$records + .receive(on: DispatchQueue.main) + .sink { [weak self] records in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + Task { + do { + let managedObjectContext = self.context.managedObjectContext + let items: [SearchHistoryItem] = try await managedObjectContext.perform { + var users: [SearchHistoryItem] = [] + var hashtags: [SearchHistoryItem] = [] + + for record in records { + guard let searchHistory = record.object(in: managedObjectContext) else { continue } + if let user = searchHistory.account { + users.append(.user(.init(objectID: user.objectID))) + } else if let hashtag = searchHistory.hashtag { + hashtags.append(.hashtag(.init(objectID: hashtag.objectID))) + } else { + continue + } + } + + return users + hashtags + } + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + snapshot.appendItems(items, toSection: .main) + diffableDataSource.apply(snapshot, animatingDifferences: false) + } catch { + // do nothing + } + } // end Task + } + .store(in: &disposeBag) + } + +} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel.swift index 0ed58b07e..c7a135964 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel.swift @@ -19,7 +19,7 @@ final class SearchHistoryViewModel { let searchHistoryFetchedResultController: SearchHistoryFetchedResultController // output - var diffableDataSource: UITableViewDiffableDataSource! + var diffableDataSource: UICollectionViewDiffableDataSource? init(context: AppContext) { self.context = context @@ -33,126 +33,74 @@ final class SearchHistoryViewModel { self.searchHistoryFetchedResultController.userID.value = box?.userID } .store(in: &disposeBag) - - // may block main queue by large dataset - searchHistoryFetchedResultController.objectIDs - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak self] objectIDs in - guard let self = self else { return } - guard let diffableDataSource = self.diffableDataSource else { return } - let managedObjectContext = self.searchHistoryFetchedResultController.fetchedResultsController.managedObjectContext - - var items: [SearchHistoryItem] = [] - for objectID in objectIDs { - guard let searchHistory = try? managedObjectContext.existingObject(with: objectID) as? SearchHistory else { continue } - if let account = searchHistory.account { - let item: SearchHistoryItem = .account(objectID: account.objectID) - guard !items.contains(item) else { continue } - items.append(item) - } else if let hashtag = searchHistory.hashtag { - let item: SearchHistoryItem = .hashtag(objectID: hashtag.objectID) - guard !items.contains(item) else { continue } - items.append(item) - } else { - // TODO: status - } - } - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - snapshot.appendItems(items, toSection: .main) - - diffableDataSource.apply(snapshot, animatingDifferences: false) - } - .store(in: &disposeBag) - - try? searchHistoryFetchedResultController.fetchedResultsController.performFetch() } } -extension SearchHistoryViewModel { - func setupDiffableDataSource( - tableView: UITableView, - dependency: NeedsDependency - ) { - diffableDataSource = SearchHistorySection.tableViewDiffableDataSource( - for: tableView, - dependency: dependency - ) - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - diffableDataSource.apply(snapshot, animatingDifferences: false) - } -} - -extension SearchHistoryViewModel { - func persistSearchHistory(for item: SearchHistoryItem) { - guard let box = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - let property = SearchHistory.Property(domain: box.domain, userID: box.userID) - - switch item { - case .account(let objectID): - let managedObjectContext = context.backgroundManagedObjectContext - managedObjectContext.performChanges { - guard let user = try? managedObjectContext.existingObject(with: objectID) as? MastodonUser else { return } - if let searchHistory = user.findSearchHistory(domain: box.domain, userID: box.userID) { - searchHistory.update(updatedAt: Date()) - } else { - SearchHistory.insert(into: managedObjectContext, property: property, account: user) - } - } - .sink { result in - switch result { - case .failure(let error): - assertionFailure(error.localizedDescription) - case .success: - break - } - } - .store(in: &context.disposeBag) - - case .hashtag(let objectID): - let managedObjectContext = context.backgroundManagedObjectContext - managedObjectContext.performChanges { - guard let hashtag = try? managedObjectContext.existingObject(with: objectID) as? Tag else { return } - if let searchHistory = hashtag.findSearchHistory(domain: box.domain, userID: box.userID) { - searchHistory.update(updatedAt: Date()) - } else { - _ = SearchHistory.insert(into: managedObjectContext, property: property, hashtag: hashtag) - } - } - .sink { result in - switch result { - case .failure(let error): - assertionFailure(error.localizedDescription) - case .success: - break - } - } - .store(in: &context.disposeBag) - - case .status: - // FIXME: - break - } - } - - func clearSearchHistory() { - let managedObjectContext = context.backgroundManagedObjectContext - managedObjectContext.performChanges { - let request = SearchHistory.sortedFetchRequest - let searchHistories = managedObjectContext.safeFetch(request) - for searchHistory in searchHistories { - managedObjectContext.delete(searchHistory) - } - } - .sink { result in - // do nothing - } - .store(in: &context.disposeBag) - - } -} +//extension SearchHistoryViewModel { +// func persistSearchHistory(for item: SearchHistoryItem) { +// guard let box = context.authenticationService.activeMastodonAuthenticationBox.value else { return } +// let property = SearchHistory.Property(domain: box.domain, userID: box.userID) +// +// switch item { +// case .account(let objectID): +// let managedObjectContext = context.backgroundManagedObjectContext +// managedObjectContext.performChanges { +// guard let user = try? managedObjectContext.existingObject(with: objectID) as? MastodonUser else { return } +// if let searchHistory = user.findSearchHistory(domain: box.domain, userID: box.userID) { +// searchHistory.update(updatedAt: Date()) +// } else { +// SearchHistory.insert(into: managedObjectContext, property: property, account: user) +// } +// } +// .sink { result in +// switch result { +// case .failure(let error): +// assertionFailure(error.localizedDescription) +// case .success: +// break +// } +// } +// .store(in: &context.disposeBag) +// +// case .hashtag(let objectID): +// let managedObjectContext = context.backgroundManagedObjectContext +// managedObjectContext.performChanges { +// guard let hashtag = try? managedObjectContext.existingObject(with: objectID) as? Tag else { return } +// if let searchHistory = hashtag.findSearchHistory(domain: box.domain, userID: box.userID) { +// searchHistory.update(updatedAt: Date()) +// } else { +// _ = SearchHistory.insert(into: managedObjectContext, property: property, hashtag: hashtag) +// } +// } +// .sink { result in +// switch result { +// case .failure(let error): +// assertionFailure(error.localizedDescription) +// case .success: +// break +// } +// } +// .store(in: &context.disposeBag) +// +// case .status: +// // FIXME: +// break +// } +// } +// +// func clearSearchHistory() { +// let managedObjectContext = context.backgroundManagedObjectContext +// managedObjectContext.performChanges { +// let request = SearchHistory.sortedFetchRequest +// let searchHistories = managedObjectContext.safeFetch(request) +// for searchHistory in searchHistories { +// managedObjectContext.delete(searchHistory) +// } +// } +// .sink { result in +// // do nothing +// } +// .store(in: &context.disposeBag) +// } +//} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/View/SearchHistoryTableHeaderView.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/View/SearchHistoryTableHeaderView.swift index 6a360e78b..8ac661b18 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchHistory/View/SearchHistoryTableHeaderView.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/View/SearchHistoryTableHeaderView.swift @@ -8,6 +8,8 @@ import os.log import UIKit import Combine +import MastodonAsset +import MastodonLocalization protocol SearchHistoryTableHeaderViewDelegate: AnyObject { func searchHistoryTableHeaderView(_ searchHistoryTableHeaderView: SearchHistoryTableHeaderView, clearSearchHistoryButtonDidPressed button: UIButton) diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/Cell/HashtagTableViewCell.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/Cell/HashtagTableViewCell.swift new file mode 100644 index 000000000..c8938c549 --- /dev/null +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/Cell/HashtagTableViewCell.swift @@ -0,0 +1,53 @@ +// +// HashtagTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-1-20. +// + +import UIKit +import MetaTextKit + +final class HashtagTableViewCell: UITableViewCell { + + let primaryLabel = MetaLabel(style: .statusName) + + let separatorLine = UIView.separatorLine + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension HashtagTableViewCell { + + private func _init() { + primaryLabel.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(primaryLabel) + NSLayoutConstraint.activate([ + primaryLabel.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 11), + primaryLabel.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), + primaryLabel.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: primaryLabel.bottomAnchor, constant: 11), + ]) + + separatorLine.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(separatorLine) + NSLayoutConstraint.activate([ + separatorLine.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), + separatorLine.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), + separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.required - 1), + ]) + + primaryLabel.isUserInteractionEnabled = false + } + +} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController+DataSourceProvider.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController+DataSourceProvider.swift new file mode 100644 index 000000000..71ac81ef6 --- /dev/null +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController+DataSourceProvider.swift @@ -0,0 +1,77 @@ +// +// SearchResultViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-19. +// + +import UIKit + +// MARK: - DataSourceProvider +extension SearchResultViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.tableViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .user(let record): + return .user(record: record) + case .status(let record): + return .status(record: record) + case .hashtag(let entity): + return .hashtag(tag: .entity(entity)) + default: + return nil + } + } + + @MainActor + private func indexPath(for cell: UITableViewCell) async -> IndexPath? { + return tableView.indexPath(for: cell) + } +} + +extension SearchResultViewController { + func aspectTableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): indexPath: \(indexPath.debugDescription)") + Task { + let source = DataSourceItem.Source(tableViewCell: nil, indexPath: indexPath) + guard let item = await item(from: source) else { + return + } + + await DataSourceFacade.responseToCreateSearchHistory( + provider: self, + item: item + ) + + switch item { + case .status(let status): + await DataSourceFacade.coordinateToStatusThreadScene( + provider: self, + target: .status, // remove reblog wrapper + status: status + ) + case .user(let user): + await DataSourceFacade.coordinateToProfileScene( + provider: self, + user: user + ) + case .hashtag(let tag): + await DataSourceFacade.coordinateToHashtagScene( + provider: self, + tag: tag + ) + case .notification: + assertionFailure() + } // end switch + } // end Task + } // end func +} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController+StatusProvider.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController+StatusProvider.swift deleted file mode 100644 index 73e3ffb82..000000000 --- a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController+StatusProvider.swift +++ /dev/null @@ -1,75 +0,0 @@ -// -// SearchResultViewController+StatusProvider.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-7-14. -// - -import os.log -import UIKit -import Combine -import CoreData -import CoreDataStack - -// MARK: - StatusProvider -extension SearchResultViewController: StatusProvider { - - func status() -> Future { - return Future { promise in promise(.success(nil)) } - } - - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future { - return Future { promise in - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - switch item { - case .status(let objectID, _): - let managedObjectContext = self.viewModel.statusFetchedResultsController.fetchedResultsController.managedObjectContext - managedObjectContext.perform { - let status = managedObjectContext.object(with: objectID) as? Status - promise(.success(status)) - } - default: - promise(.success(nil)) - } - } - } - - func status(for cell: UICollectionViewCell) -> Future { - return Future { promise in promise(.success(nil)) } - } - - var managedObjectContext: NSManagedObjectContext { - return self.viewModel.statusFetchedResultsController.fetchedResultsController.managedObjectContext - } - - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { - return nil - } - - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? { - return nil - } - - func items(indexPaths: [IndexPath]) -> [Item] { - return [] - } - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return [] } - let items = indexPaths.compactMap { diffableDataSource.itemIdentifier(for: $0)?.statusObjectItem } - return items - } - -} - -extension SearchResultViewController: UserProvider {} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController.swift index 6c320af51..f3d989b41 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController.swift @@ -5,12 +5,13 @@ // Created by MainasuK Cirno on 2021-7-14. // +import os.log import UIKit import Combine -import AVKit -import GameplayKit final class SearchResultViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { + + let logger = Logger(subsystem: "SearchResultViewController", category: "ViewController") weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -22,9 +23,6 @@ final class SearchResultViewController: UIViewController, NeedsDependency, Media let tableView: UITableView = { let tableView = UITableView() - tableView.register(SearchResultTableViewCell.self, forCellReuseIdentifier: String(describing: SearchResultTableViewCell.self)) - tableView.register(StatusTableViewCell.self, forCellReuseIdentifier: String(describing: StatusTableViewCell.self)) - tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) tableView.separatorStyle = .none tableView.tableFooterView = UIView() tableView.backgroundColor = .clear @@ -40,7 +38,7 @@ extension SearchResultViewController { setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.setupBackgroundColor(theme: theme) @@ -57,12 +55,22 @@ extension SearchResultViewController { ]) tableView.delegate = self - tableView.prefetchDataSource = self +// tableView.prefetchDataSource = self viewModel.setupDiffableDataSource( tableView: tableView, - dependency: self, statusTableViewCellDelegate: self ) + + // setup batch fetch + viewModel.listBatchFetchViewModel.setup(scrollView: tableView) + viewModel.listBatchFetchViewModel.shouldFetch + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self = self else { return } + guard self.view.window != nil else { return } + self.viewModel.stateMachine.enter(SearchResultViewModel.State.Loading.self) + } + .store(in: &disposeBag) // listen keyboard events and set content inset let keyboardEventPublishers = Publishers.CombineLatest3( @@ -100,7 +108,7 @@ extension SearchResultViewController { self.tableView.verticalScrollIndicatorInsets.bottom = padding - self.view.safeAreaInsets.bottom }) .store(in: &disposeBag) - +// // works for already onscreen page viewModel.navigationBarFrame .removeDuplicates() @@ -109,6 +117,7 @@ extension SearchResultViewController { guard let self = self else { return } guard self.viewModel.viewDidAppear.value else { return } self.tableView.contentInset.top = frame.height + self.tableView.verticalScrollIndicatorInsets.top = frame.height } .store(in: &disposeBag) } @@ -122,7 +131,7 @@ extension SearchResultViewController { tableView.contentOffset.y = -viewModel.navigationBarFrame.value.height } - aspectViewWillAppear(animated) + tableView.deselectRow(with: transitionCoordinator, animated: animated) } override func viewDidAppear(_ animated: Bool) { @@ -131,12 +140,6 @@ extension SearchResultViewController { viewModel.viewDidAppear.value = true } - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - - aspectViewDidDisappear(animated) - } - } extension SearchResultViewController { @@ -149,106 +152,110 @@ extension SearchResultViewController { } // MARK: - StatusTableViewCellDelegate -extension SearchResultViewController: StatusTableViewCellDelegate { - weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } - func parent() -> UIViewController { return self } -} - -// MARK: - StatusTableViewControllerAspect -extension SearchResultViewController: StatusTableViewControllerAspect { } - -// MARK: - LoadMoreConfigurableTableViewContainer -extension SearchResultViewController: LoadMoreConfigurableTableViewContainer { - typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell - typealias LoadingState = SearchResultViewModel.State.Loading - var loadMoreConfigurableTableView: UITableView { tableView } - var loadMoreConfigurableStateMachine: GKStateMachine { viewModel.stateMachine } -} - -// MARK: - UIScrollViewDelegate -extension SearchResultViewController { - func scrollViewDidScroll(_ scrollView: UIScrollView) { - aspectScrollViewDidScroll(scrollView) - } -} - -// MARK: - TableViewCellHeightCacheableContainer -extension SearchResultViewController: TableViewCellHeightCacheableContainer { - var cellFrameCache: NSCache { - viewModel.cellFrameCache - } -} +//extension SearchResultViewController: StatusTableViewCellDelegate { +// weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } +// func parent() -> UIViewController { return self } +//} // MARK: - UITableViewDelegate -extension SearchResultViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - aspectTableView(tableView, estimatedHeightForRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } +extension SearchResultViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { + // sourcery:inline:SearchResultViewController.AutoGenerateTableViewDelegate + // Generated using Sourcery + // DO NOT EDIT func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - - viewModel.persistSearchHistory(for: item) - - switch item { - case .account(let account): - let profileViewModel = RemoteProfileViewModel(context: context, userID: account.id) - coordinator.present(scene: .profile(viewModel: profileViewModel), from: self, transition: .show) - case .hashtag(let hashtag): - let hashtagViewModel = HashtagTimelineViewModel(context: context, hashtag: hashtag.name) - coordinator.present(scene: .hashtagTimeline(viewModel: hashtagViewModel), from: self, transition: .show) - case .status: - aspectTableView(tableView, didSelectRowAt: indexPath) - case .bottomLoader: - break - } + aspectTableView(tableView, didSelectRowAt: indexPath) } func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { - aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) + return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) } func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) + return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) } func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { - aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) + return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) } func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) } + // sourcery:end + +// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { +// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } +// +// viewModel.persistSearchHistory(for: item) +// +// switch item { +// case .account(let account): +// let profileViewModel = RemoteProfileViewModel(context: context, userID: account.id) +// coordinator.present(scene: .profile(viewModel: profileViewModel), from: self, transition: .show) +// case .hashtag(let hashtag): +// let hashtagViewModel = HashtagTimelineViewModel(context: context, hashtag: hashtag.name) +// coordinator.present(scene: .hashtagTimeline(viewModel: hashtagViewModel), from: self, transition: .show) +// case .status: +// aspectTableView(tableView, didSelectRowAt: indexPath) +// case .bottomLoader: +// break +// } +// } +// +// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { +// aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +// } +// +// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { +// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +// } + } // MARK: - UITableViewDataSourcePrefetching -extension SearchResultViewController: UITableViewDataSourcePrefetching { - func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - aspectTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) - } - - func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) { - aspectTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) - } -} +//extension SearchResultViewController: UITableViewDataSourcePrefetching { +// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { +// aspectTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) +// } +// +// func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) { +// aspectTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) +// } +//} // MARK: - AVPlayerViewControllerDelegate -extension SearchResultViewController: AVPlayerViewControllerDelegate { - func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } +//extension SearchResultViewController: AVPlayerViewControllerDelegate { +// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +//} - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } -} +// MARK: - StatusTableViewCellDelegate +extension SearchResultViewController: StatusTableViewCellDelegate { } diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+Diffable.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+Diffable.swift new file mode 100644 index 000000000..ff64b80f0 --- /dev/null +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+Diffable.swift @@ -0,0 +1,90 @@ +// +// SearchResultViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-1-19. +// + +import UIKit +import Combine + +extension SearchResultViewModel { + + func setupDiffableDataSource( + tableView: UITableView, + statusTableViewCellDelegate: StatusTableViewCellDelegate + ) { + diffableDataSource = SearchResultSection.tableViewDiffableDataSource( + tableView: tableView, + context: context, + configuration: .init( + statusViewTableViewCellDelegate: statusTableViewCellDelegate + ) + ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + // snapshot.appendItems(items.value, toSection: .main) // with initial items + diffableDataSource.apply(snapshot, animatingDifferences: false) + + Publishers.CombineLatest3( + statusFetchedResultsController.$records, + userFetchedResultsController.$records, + $hashtags + ) + .map { statusRecrods, userRecords, hashtags in + var items: [SearchResultItem] = [] + + let userItems = userRecords.map { SearchResultItem.user($0) } + items.append(contentsOf: userItems) + + let hashtagItems = hashtags.map { SearchResultItem.hashtag(tag: $0) } + items.append(contentsOf: hashtagItems) + + let statusItems = statusRecrods.map { SearchResultItem.status($0) } + items.append(contentsOf: statusItems) + + return items + } + .assign(to: &$items) + + $items + .receive(on: DispatchQueue.main) + .sink { [weak self] items in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + snapshot.appendItems(items, toSection: .main) + + if let currentState = self.stateMachine.currentState { + switch currentState { + case is State.Loading, + is State.Fail, + is State.Idle: + let attribute = SearchResultItem.BottomLoaderAttribute(isEmptyResult: false) + snapshot.appendItems([.bottomLoader(attribute: attribute)], toSection: .main) + case is State.Fail: + break + case is State.NoMore: + if snapshot.itemIdentifiers.isEmpty { + let attribute = SearchResultItem.BottomLoaderAttribute(isEmptyResult: true) + snapshot.appendItems([.bottomLoader(attribute: attribute)], toSection: .main) + } + default: + break + } + } + + diffableDataSource.defaultRowAnimation = .fade + diffableDataSource.apply(snapshot) { [weak self] in + guard let self = self else { return } + self.didDataSourceUpdate.send() + } + } + .store(in: &disposeBag) + } + + +} diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+State.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+State.swift index dba71b50e..1c0e5aa04 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+State.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+State.swift @@ -11,7 +11,15 @@ import GameplayKit import MastodonSDK extension SearchResultViewModel { - class State: GKState { + class State: GKState, NamingState { + + let logger = Logger(subsystem: "SearchResultViewModel.State", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } weak var viewModel: SearchResultViewModel? init(viewModel: SearchResultViewModel) { @@ -19,8 +27,18 @@ extension SearchResultViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", (#file as NSString).lastPathComponent, #line, #function, debugDescription, previousState.debugDescription) -// viewModel?.loadOldestStateMachinePublisher.send(self) + super.didEnter(from: previousState) + let previousState = previousState as? SearchResultViewModel.State + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + } + + @MainActor + func enter(state: State.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") } } } @@ -34,7 +52,6 @@ extension SearchResultViewModel.State { } class Loading: SearchResultViewModel.State { - let logger = Logger(subsystem: "SearchResultViewModel.State.Loading", category: "Logic") var previousSearchText = "" var offset: Int? = nil @@ -55,22 +72,23 @@ extension SearchResultViewModel.State { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let activeMastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { assertionFailure() stateMachine.enter(Fail.self) return } - let domain = activeMastodonAuthenticationBox.domain - let searchText = viewModel.searchText.value let searchType = viewModel.searchScope.searchType if previousState is NoMore && previousSearchText == searchText { - // same searchText from NoMore. should silent refresh + // same searchText from NoMore + // break the loading and resume NoMore state + stateMachine.enter(NoMore.self) + return } else { // trigger bottom loader display - viewModel.items.value = viewModel.items.value +// viewModel.items.value = viewModel.items.value } guard !searchText.isEmpty else { @@ -82,7 +100,7 @@ extension SearchResultViewModel.State { previousSearchText = searchText offset = nil } else { - offset = viewModel.items.value.count + offset = viewModel.items.count } // not set offset for all case @@ -109,61 +127,54 @@ extension SearchResultViewModel.State { let id = UUID() latestLoadingToken = id + + Task { + do { + let response = try await viewModel.context.apiService.search( + query: query, + authenticationBox: authenticationBox + ) + + // discard result when search text is outdated + guard searchText == self.previousSearchText else { return } + // discard result when request not the latest one + guard id == self.latestLoadingToken else { return } + // discard result when state is not Loading + guard stateMachine.currentState is Loading else { return } - viewModel.context.apiService.search( - domain: domain, - query: query, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .sink { [weak self] completion in - guard let self = self else { return } - switch completion { - case .failure(let error): - self.logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): search \(searchText) fail: \(error.localizedDescription)") - stateMachine.enter(Fail.self) - case .finished: - self.logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): search \(searchText) success") + let userIDs = response.value.accounts.map { $0.id } + let statusIDs = response.value.statuses.map { $0.id } + + let isNoMore = userIDs.isEmpty && statusIDs.isEmpty + + if viewModel.searchScope == .all || isNoMore { + await enter(state: NoMore.self) + } else { + await enter(state: Idle.self) + } + + // reset data source when the search is refresh + if offset == nil { + viewModel.userFetchedResultsController.userIDs.value = [] + viewModel.statusFetchedResultsController.statusIDs.value = [] + viewModel.hashtags = [] + } + + viewModel.userFetchedResultsController.append(userIDs: userIDs) + viewModel.statusFetchedResultsController.append(statusIDs: statusIDs) + + var hashtags = viewModel.hashtags + for hashtag in response.value.hashtags where !hashtags.contains(hashtag) { + hashtags.append(hashtag) + } + viewModel.hashtags = hashtags + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): search \(searchText) fail: \(error.localizedDescription)") + await enter(state: Fail.self) } - } receiveValue: { [weak self] response in - guard let self = self else { return } - - // discard result when search text is outdated - guard searchText == self.previousSearchText else { return } - // discard result when request not the latest one - guard id == self.latestLoadingToken else { return } - // discard result when state is not Loading - guard stateMachine.currentState is Loading else { return } - - let oldItems = _offset == nil ? [] : viewModel.items.value - var newItems: [SearchResultItem] = [] - - for account in response.value.accounts { - let item = SearchResultItem.account(account: account) - guard !oldItems.contains(item) else { continue } - newItems.append(item) - } - for hashtag in response.value.hashtags { - let item = SearchResultItem.hashtag(tag: hashtag) - guard !oldItems.contains(item) else { continue } - newItems.append(item) - } - - var newStatusIDs = _offset == nil ? [] : viewModel.statusFetchedResultsController.statusIDs.value - for status in response.value.statuses { - guard !newStatusIDs.contains(status.id) else { continue } - newStatusIDs.append(status.id) - } - - if viewModel.searchScope == .all || newItems.isEmpty { - stateMachine.enter(NoMore.self) - } else { - stateMachine.enter(Idle.self) - } - viewModel.items.value = oldItems + newItems - viewModel.statusFetchedResultsController.statusIDs.value = newStatusIDs - } - .store(in: &viewModel.disposeBag) - } + } // end Task + } // end func } class Fail: SearchResultViewModel.State { diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift index b22e91c8d..c5656ac09 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift @@ -11,6 +11,7 @@ import CoreData import CoreDataStack import GameplayKit import CommonOSLog +import MastodonSDK final class SearchResultViewModel { @@ -20,12 +21,19 @@ final class SearchResultViewModel { let context: AppContext let searchScope: SearchDetailViewModel.SearchScope let searchText = CurrentValueSubject("") + @Published var hashtags: [Mastodon.Entity.Tag] = [] + let userFetchedResultsController: UserFetchedResultsController let statusFetchedResultsController: StatusFetchedResultsController + let listBatchFetchViewModel = ListBatchFetchViewModel() + let viewDidAppear = CurrentValueSubject(false) var cellFrameCache = NSCache() var navigationBarFrame = CurrentValueSubject(.zero) // output + var diffableDataSource: UITableViewDiffableDataSource! + @Published var items: [SearchResultItem] = [] + private(set) lazy var stateMachine: GKStateMachine = { let stateMachine = GKStateMachine(states: [ State.Initial(viewModel: self), @@ -37,174 +45,164 @@ final class SearchResultViewModel { stateMachine.enter(State.Initial.self) return stateMachine }() - let items = CurrentValueSubject<[SearchResultItem], Never>([]) - var diffableDataSource: UITableViewDiffableDataSource! let didDataSourceUpdate = PassthroughSubject() init(context: AppContext, searchScope: SearchDetailViewModel.SearchScope) { self.context = context self.searchScope = searchScope + self.userFetchedResultsController = UserFetchedResultsController( + managedObjectContext: context.managedObjectContext, + domain: nil, + additionalTweetPredicate: nil + ) self.statusFetchedResultsController = StatusFetchedResultsController( managedObjectContext: context.managedObjectContext, domain: nil, additionalTweetPredicate: nil ) + context.authenticationService.activeMastodonAuthenticationBox + .map { $0?.domain } + .assign(to: \.value, on: userFetchedResultsController.domain) + .store(in: &disposeBag) + context.authenticationService.activeMastodonAuthenticationBox .map { $0?.domain } .assign(to: \.value, on: statusFetchedResultsController.domain) .store(in: &disposeBag) - Publishers.CombineLatest( - items, - statusFetchedResultsController.objectIDs.removeDuplicates() - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] items, statusObjectIDs in - guard let self = self else { return } - guard let diffableDataSource = self.diffableDataSource else { return } - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - - // append account & hashtag items - - var items = items - if self.searchScope == .all { - // all search scope not paging. it's safe sort on whole dataset - items.sort(by: { ($0.sortKey ?? "") < ($1.sortKey ?? "")}) - } - snapshot.appendItems(items, toSection: .main) - - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] - let oldSnapshot = diffableDataSource.snapshot() - for item in oldSnapshot.itemIdentifiers { - guard case let .status(objectID, attribute) = item else { continue } - oldSnapshotAttributeDict[objectID] = attribute - } - - // append statuses - var statusItems: [SearchResultItem] = [] - for objectID in statusObjectIDs { - let attribute = oldSnapshotAttributeDict[objectID] ?? Item.StatusAttribute() - statusItems.append(.status(statusObjectID: objectID, attribute: attribute)) - } - snapshot.appendItems(statusItems, toSection: .main) - - if let currentState = self.stateMachine.currentState { - switch currentState { - case is State.Loading, is State.Fail, is State.Idle: - let attribute = SearchResultItem.BottomLoaderAttribute(isEmptyResult: false) - snapshot.appendItems([.bottomLoader(attribute: attribute)], toSection: .main) - case is State.Fail: - break - case is State.NoMore: - if snapshot.itemIdentifiers.isEmpty { - let attribute = SearchResultItem.BottomLoaderAttribute(isEmptyResult: true) - snapshot.appendItems([.bottomLoader(attribute: attribute)], toSection: .main) - } - default: - break - } - } - - diffableDataSource.defaultRowAnimation = .fade - diffableDataSource.apply(snapshot, animatingDifferences: true) { [weak self] in - guard let self = self else { return } - self.didDataSourceUpdate.send() - } - - } - .store(in: &disposeBag) +// Publishers.CombineLatest( +// items, +// statusFetchedResultsController.objectIDs.removeDuplicates() +// ) +// .receive(on: DispatchQueue.main) +// .sink { [weak self] items, statusObjectIDs in +// guard let self = self else { return } +// guard let diffableDataSource = self.diffableDataSource else { return } +// +// var snapshot = NSDiffableDataSourceSnapshot() +// snapshot.appendSections([.main]) +// +// // append account & hashtag items +// +// var items = items +// if self.searchScope == .all { +// // all search scope not paging. it's safe sort on whole dataset +// items.sort(by: { ($0.sortKey ?? "") < ($1.sortKey ?? "")}) +// } +// snapshot.appendItems(items, toSection: .main) +// +// var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] +// let oldSnapshot = diffableDataSource.snapshot() +// for item in oldSnapshot.itemIdentifiers { +// guard case let .status(objectID, attribute) = item else { continue } +// oldSnapshotAttributeDict[objectID] = attribute +// } +// +// // append statuses +// var statusItems: [SearchResultItem] = [] +// for objectID in statusObjectIDs { +// let attribute = oldSnapshotAttributeDict[objectID] ?? Item.StatusAttribute() +// statusItems.append(.status(statusObjectID: objectID, attribute: attribute)) +// } +// snapshot.appendItems(statusItems, toSection: .main) +// +// if let currentState = self.stateMachine.currentState { +// switch currentState { +// case is State.Loading, is State.Fail, is State.Idle: +// let attribute = SearchResultItem.BottomLoaderAttribute(isEmptyResult: false) +// snapshot.appendItems([.bottomLoader(attribute: attribute)], toSection: .main) +// case is State.Fail: +// break +// case is State.NoMore: +// if snapshot.itemIdentifiers.isEmpty { +// let attribute = SearchResultItem.BottomLoaderAttribute(isEmptyResult: true) +// snapshot.appendItems([.bottomLoader(attribute: attribute)], toSection: .main) +// } +// default: +// break +// } +// } +// +// diffableDataSource.defaultRowAnimation = .fade +// diffableDataSource.apply(snapshot, animatingDifferences: true) { [weak self] in +// guard let self = self else { return } +// self.didDataSourceUpdate.send() +// } +// +// } +// .store(in: &disposeBag) } } -extension SearchResultViewModel { - func setupDiffableDataSource( - tableView: UITableView, - dependency: NeedsDependency, - statusTableViewCellDelegate: StatusTableViewCellDelegate - ) { - diffableDataSource = SearchResultSection.tableViewDiffableDataSource( - for: tableView, - dependency: dependency, - statusTableViewCellDelegate: statusTableViewCellDelegate - ) - - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - snapshot.appendItems(self.items.value, toSection: .main) // with initial items - diffableDataSource.apply(snapshot, animatingDifferences: false) - } -} - extension SearchResultViewModel { func persistSearchHistory(for item: SearchResultItem) { - guard let box = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - let property = SearchHistory.Property(domain: box.domain, userID: box.userID) - let domain = box.domain - - switch item { - case .account(let entity): - let managedObjectContext = context.backgroundManagedObjectContext - managedObjectContext.performChanges { - let (user, _) = APIService.CoreData.createOrMergeMastodonUser( - into: managedObjectContext, - for: nil, - in: domain, - entity: entity, - userCache: nil, - networkDate: Date(), - log: OSLog.api - ) - if let searchHistory = user.findSearchHistory(domain: box.domain, userID: box.userID) { - searchHistory.update(updatedAt: Date()) - } else { - SearchHistory.insert(into: managedObjectContext, property: property, account: user) - } - } - .sink { result in - switch result { - case .failure(let error): - assertionFailure(error.localizedDescription) - case .success: - break - } - } - .store(in: &context.disposeBag) - - case .hashtag(let entity): - let managedObjectContext = context.backgroundManagedObjectContext - var tag: Tag? - managedObjectContext.performChanges { - let (hashtag, _) = APIService.CoreData.createOrMergeTag( - into: managedObjectContext, - entity: entity - ) - tag = hashtag - if let searchHistory = hashtag.findSearchHistory(domain: box.domain, userID: box.userID) { - searchHistory.update(updatedAt: Date()) - } else { - _ = SearchHistory.insert(into: managedObjectContext, property: property, hashtag: hashtag) - } - } - .sink { result in - switch result { - case .failure(let error): - assertionFailure(error.localizedDescription) - case .success: - print(tag?.searchHistories) - break - } - } - .store(in: &context.disposeBag) - - case .status: - // FIXME: - break - case .bottomLoader: - break - } + fatalError() +// guard let box = context.authenticationService.activeMastodonAuthenticationBox.value else { return } +// let property = SearchHistory.Property(domain: box.domain, userID: box.userID) +// let domain = box.domain +// +// switch item { +// case .account(let entity): +// let managedObjectContext = context.backgroundManagedObjectContext +// managedObjectContext.performChanges { +// let (user, _) = APIService.CoreData.createOrMergeMastodonUser( +// into: managedObjectContext, +// for: nil, +// in: domain, +// entity: entity, +// userCache: nil, +// networkDate: Date(), +// log: OSLog.api +// ) +// if let searchHistory = user.findSearchHistory(domain: box.domain, userID: box.userID) { +// searchHistory.update(updatedAt: Date()) +// } else { +// SearchHistory.insert(into: managedObjectContext, property: property, account: user) +// } +// } +// .sink { result in +// switch result { +// case .failure(let error): +// assertionFailure(error.localizedDescription) +// case .success: +// break +// } +// } +// .store(in: &context.disposeBag) +// +// case .hashtag(let entity): +// let managedObjectContext = context.backgroundManagedObjectContext +// var tag: Tag? +// managedObjectContext.performChanges { +// let (hashtag, _) = APIService.CoreData.createOrMergeTag( +// into: managedObjectContext, +// entity: entity +// ) +// tag = hashtag +// if let searchHistory = hashtag.findSearchHistory(domain: box.domain, userID: box.userID) { +// searchHistory.update(updatedAt: Date()) +// } else { +// _ = SearchHistory.insert(into: managedObjectContext, property: property, hashtag: hashtag) +// } +// } +// .sink { result in +// switch result { +// case .failure(let error): +// assertionFailure(error.localizedDescription) +// case .success: +// print(tag?.searchHistories) +// break +// } +// } +// .store(in: &context.disposeBag) +// +// case .status: +// // FIXME: +// break +// case .bottomLoader: +// break +// } } } diff --git a/Mastodon/Scene/Search/SearchDetail/TableViewCell/SearchResultTableViewCell.swift b/Mastodon/Scene/Search/SearchDetail/TableViewCell/SearchResultTableViewCell.swift deleted file mode 100644 index 0c919e7d5..000000000 --- a/Mastodon/Scene/Search/SearchDetail/TableViewCell/SearchResultTableViewCell.swift +++ /dev/null @@ -1,281 +0,0 @@ -// -// SearchResultTableViewCell.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/2. -// - -import CoreData -import CoreDataStack -import Foundation -import MastodonSDK -import UIKit -import FLAnimatedImage -import MetaTextKit -import MastodonMeta - -final class SearchResultTableViewCell: UITableViewCell { - - let avatarImageView: AvatarImageView = { - let imageView = AvatarImageView() - imageView.tintColor = Asset.Colors.Label.primary.color - imageView.layer.cornerRadius = 4 - imageView.clipsToBounds = true - return imageView - }() - - let hashtagImageView: UIImageView = { - let imageView = UIImageView() - imageView.image = UIImage(systemName: "number.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 34, weight: .regular))!.withRenderingMode(.alwaysTemplate) - imageView.tintColor = Asset.Colors.Label.primary.color - return imageView - }() - - let _titleLabel = MetaLabel(style: .statusName) - - let _subTitleLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.secondary.color - label.font = .preferredFont(forTextStyle: .body) - return label - }() - - let separatorLine = UIView.separatorLine - - var separatorLineToEdgeLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToEdgeTrailingLayoutConstraint: NSLayoutConstraint! - - var separatorLineToMarginLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToMarginTrailingLayoutConstraint: NSLayoutConstraint! - - override func prepareForReuse() { - super.prepareForReuse() - avatarImageView.af.cancelImageRequest() - setDisplayAvatarImage() - } - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - configure() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - configure() - } -} - -extension SearchResultTableViewCell { - private func configure() { - let containerStackView = UIStackView() - containerStackView.axis = .horizontal - containerStackView.distribution = .fill - containerStackView.spacing = 12 - containerStackView.layoutMargins = UIEdgeInsets(top: 12, left: 0, bottom: 12, right: 0) - containerStackView.isLayoutMarginsRelativeArrangement = true - containerStackView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) - ]) - - avatarImageView.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(avatarImageView) - NSLayoutConstraint.activate([ - avatarImageView.widthAnchor.constraint(equalToConstant: 42).priority(.required - 1), - avatarImageView.heightAnchor.constraint(equalToConstant: 42).priority(.required - 1), - ]) - - hashtagImageView.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addSubview(hashtagImageView) - NSLayoutConstraint.activate([ - hashtagImageView.centerXAnchor.constraint(equalTo: avatarImageView.centerXAnchor), - hashtagImageView.centerYAnchor.constraint(equalTo: avatarImageView.centerYAnchor), - hashtagImageView.widthAnchor.constraint(equalToConstant: 42).priority(.required - 1), - hashtagImageView.heightAnchor.constraint(equalToConstant: 42).priority(.required - 1), - ]) - - let textStackView = UIStackView() - textStackView.axis = .vertical - textStackView.distribution = .fill - textStackView.translatesAutoresizingMaskIntoConstraints = false - _titleLabel.translatesAutoresizingMaskIntoConstraints = false - textStackView.addArrangedSubview(_titleLabel) - _subTitleLabel.translatesAutoresizingMaskIntoConstraints = false - textStackView.addArrangedSubview(_subTitleLabel) - _subTitleLabel.setContentHuggingPriority(.defaultLow - 1, for: .vertical) - - containerStackView.addArrangedSubview(textStackView) - - separatorLine.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(separatorLine) - separatorLineToEdgeLeadingLayoutConstraint = separatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) - separatorLineToEdgeTrailingLayoutConstraint = separatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor) - separatorLineToMarginLeadingLayoutConstraint = separatorLine.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor) - separatorLineToMarginTrailingLayoutConstraint = separatorLine.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor) - NSLayoutConstraint.activate([ - separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)), - ]) - resetSeparatorLineLayout() - - _titleLabel.isUserInteractionEnabled = false - _subTitleLabel.isUserInteractionEnabled = false - avatarImageView.isUserInteractionEnabled = false - - setDisplayAvatarImage() - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - resetSeparatorLineLayout() - } - -} - -extension SearchResultTableViewCell { - - private func resetSeparatorLineLayout() { - separatorLineToEdgeLeadingLayoutConstraint.isActive = false - separatorLineToEdgeTrailingLayoutConstraint.isActive = false - separatorLineToMarginLeadingLayoutConstraint.isActive = false - separatorLineToMarginTrailingLayoutConstraint.isActive = false - - if traitCollection.userInterfaceIdiom == .phone { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeLeadingLayoutConstraint, - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - if traitCollection.horizontalSizeClass == .compact { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeLeadingLayoutConstraint, - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - // to margin - NSLayoutConstraint.activate([ - separatorLineToMarginLeadingLayoutConstraint, - separatorLineToMarginTrailingLayoutConstraint, - ]) - } - } - } - -} - -extension SearchResultTableViewCell { - - func config(with account: Mastodon.Entity.Account) { - configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: account.avatarImageURL())) - let name = account.displayName.isEmpty ? account.username : account.displayName - do { - let mastodonContent = MastodonContent(content: name, emojis: account.emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - _titleLabel.configure(content: metaContent) - } catch { - let metaContent = PlaintextMetaContent(string: name) - _titleLabel.configure(content: metaContent) - } - _subTitleLabel.text = "@" + account.acct - } - - func config(with account: MastodonUser) { - configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: account.avatarImageURL())) - do { - let mastodonContent = MastodonContent(content: account.displayNameWithFallback, emojis: account.emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - _titleLabel.configure(content: metaContent) - } catch { - let metaContent = PlaintextMetaContent(string: account.displayNameWithFallback) - _titleLabel.configure(content: metaContent) - } - _subTitleLabel.text = "@" + account.acct - } - - func config(with tag: Mastodon.Entity.Tag) { - configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: nil)) - setDisplayHashtagImage() - let metaContent = PlaintextMetaContent(string: "#" + tag.name) - _titleLabel.configure(content: metaContent) - guard let histories = tag.history else { - _subTitleLabel.text = "" - return - } - let recentHistory = histories.prefix(2) - let peopleAreTalking = recentHistory.compactMap { Int($0.accounts) }.reduce(0, +) - let string = L10n.Scene.Search.Recommend.HashTag.peopleTalking(String(peopleAreTalking)) - _subTitleLabel.text = string - } - - func config(with tag: Tag) { - configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: nil)) - setDisplayHashtagImage() - let metaContent = PlaintextMetaContent(string: "#" + tag.name) - _titleLabel.configure(content: metaContent) - guard let histories = tag.histories?.sorted(by: { - $0.createAt.compare($1.createAt) == .orderedAscending - }) else { - _subTitleLabel.text = "" - return - } - let recentHistory = histories.prefix(2) - let peopleAreTalking = recentHistory.compactMap { Int($0.accounts) }.reduce(0, +) - let string = L10n.Scene.Search.Recommend.HashTag.peopleTalking(String(peopleAreTalking)) - _subTitleLabel.text = string - } -} - -extension SearchResultTableViewCell { - func setDisplayAvatarImage() { - avatarImageView.alpha = 1 - hashtagImageView.alpha = 0 - } - - func setDisplayHashtagImage() { - avatarImageView.alpha = 0 - hashtagImageView.alpha = 1 - } -} - -// MARK: - AvatarStackedImageView -extension SearchResultTableViewCell: AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { CGSize(width: 42, height: 42) } - static var configurableAvatarImageCornerRadius: CGFloat { 4 } - var configurableAvatarImageView: FLAnimatedImageView? { avatarImageView } -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct SearchResultTableViewCell_Previews: PreviewProvider { - static var controls: some View { - Group { - UIViewPreview { - let cell = SearchResultTableViewCell() - cell.backgroundColor = .white - cell.setDisplayHashtagImage() - cell._titleLabel.text = "Electronic Frontier Foundation" - cell._subTitleLabel.text = "@eff@mastodon.social" - return cell - } - .previewLayout(.fixed(width: 228, height: 130)) - } - } - - static var previews: some View { - Group { - controls.colorScheme(.light) - controls.colorScheme(.dark) - } - .background(Color.gray) - } -} - -#endif diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 04c343647..9352603e3 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -14,6 +14,8 @@ import MastodonSDK import MetaTextKit import MastodonMeta import AuthenticationServices +import MastodonAsset +import MastodonLocalization class SettingsViewController: UIViewController, NeedsDependency { diff --git a/Mastodon/Scene/Settings/View/AppearanceView.swift b/Mastodon/Scene/Settings/View/AppearanceView.swift index fd08fd434..ef45504ae 100644 --- a/Mastodon/Scene/Settings/View/AppearanceView.swift +++ b/Mastodon/Scene/Settings/View/AppearanceView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization class AppearanceView: UIView { lazy var imageView: UIImageView = { diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift index a4904136b..1e0754d81 100644 --- a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift +++ b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift @@ -7,6 +7,8 @@ import UIKit import Combine +import MastodonAsset +import MastodonLocalization protocol SettingsAppearanceTableViewCellDelegate: AnyObject { func settingsAppearanceCell(_ cell: SettingsAppearanceTableViewCell, didSelectAppearanceMode appearanceMode: SettingsItem.AppearanceMode) diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift index 18c9e5150..e75fa831f 100644 --- a/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift +++ b/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift @@ -7,6 +7,8 @@ import UIKit import Combine +import MastodonAsset +import MastodonLocalization protocol SettingsToggleCellDelegate: AnyObject { func settingsToggleCell(_ cell: SettingsToggleTableViewCell, switchValueDidChange switch: UISwitch) diff --git a/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift b/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift index 0ce451019..817dbf371 100644 --- a/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift +++ b/Mastodon/Scene/Settings/View/SettingsSectionHeader.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization struct GroupedTableViewConstraints { static let topMargin: CGFloat = 40 diff --git a/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewController.swift b/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewController.swift index fb2d282af..0d3c4f574 100644 --- a/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewController.swift +++ b/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewController.swift @@ -43,19 +43,13 @@ extension ContextMenuImagePreviewViewController { let frame = AVMakeRect(aspectRatio: viewModel.aspectRatio, insideRect: view.bounds) preferredContentSize = frame.size - viewModel.url - .sink { [weak self] url in - guard let self = self else { return } - guard let url = url else { return } - self.imageView.af.setImage( - withURL: url, - placeholderImage: self.viewModel.thumbnail, - imageTransition: .crossDissolve(0.2), - runImageTransitionIfCached: true, - completion: nil - ) - } - .store(in: &disposeBag) + imageView.af.setImage( + withURL: viewModel.assetURL, + placeholderImage: viewModel.thumbnail, + imageTransition: .crossDissolve(0.2), + runImageTransitionIfCached: false, + completion: nil + ) } } diff --git a/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewModel.swift b/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewModel.swift index f56ff060c..1122ba33f 100644 --- a/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewModel.swift +++ b/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewModel.swift @@ -6,18 +6,20 @@ // import UIKit -import Combine final class ContextMenuImagePreviewViewModel { - - var disposeBag = Set() - + // input - let aspectRatio: CGSize + let assetURL: URL let thumbnail: UIImage? - let url = CurrentValueSubject(nil) + let aspectRatio: CGSize - init(aspectRatio: CGSize, thumbnail: UIImage?) { + init( + assetURL: URL, + thumbnail: UIImage?, + aspectRatio: CGSize + ) { + self.assetURL = assetURL self.aspectRatio = aspectRatio self.thumbnail = thumbnail } diff --git a/Mastodon/Scene/Share/View/Button/AvatarStackContainerButton.swift b/Mastodon/Scene/Share/View/Button/AvatarStackContainerButton.swift deleted file mode 100644 index 6c2d00e3c..000000000 --- a/Mastodon/Scene/Share/View/Button/AvatarStackContainerButton.swift +++ /dev/null @@ -1,177 +0,0 @@ -// -// AvatarStackContainerButton.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-10. -// - -import os.log -import UIKit -import FLAnimatedImage - -final class AvatarStackedImageView: AvatarImageView { } - -// MARK: - AvatarConfigurableView -extension AvatarStackedImageView: AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { CGSize(width: 28, height: 28) } - static var configurableAvatarImageCornerRadius: CGFloat { 4 } - var configurableAvatarImageView: FLAnimatedImageView? { self } -} - -final class AvatarStackContainerButton: UIControl { - - static let containerSize = CGSize(width: 42, height: 42) - static let avatarImageViewSize = CGSize(width: 28, height: 28) - static let avatarImageViewCornerRadius: CGFloat = 4 - static let maskOffset: CGFloat = 2 - - // UIControl.Event - Application: 0x0F000000 - static let primaryAction = UIControl.Event(rawValue: 1 << 25) // 0x01000000 - var primaryActionState: UIControl.State = .normal - - let topLeadingAvatarStackedImageView = AvatarStackedImageView() - let bottomTrailingAvatarStackedImageView = AvatarStackedImageView() - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - -} - -extension AvatarStackContainerButton { - - private func _init() { - topLeadingAvatarStackedImageView.translatesAutoresizingMaskIntoConstraints = false - addSubview(topLeadingAvatarStackedImageView) - NSLayoutConstraint.activate([ - topLeadingAvatarStackedImageView.topAnchor.constraint(equalTo: topAnchor), - topLeadingAvatarStackedImageView.leadingAnchor.constraint(equalTo: leadingAnchor), - topLeadingAvatarStackedImageView.widthAnchor.constraint(equalToConstant: AvatarStackedImageView.configurableAvatarImageSize.width).priority(.defaultHigh), - topLeadingAvatarStackedImageView.heightAnchor.constraint(equalToConstant: AvatarStackedImageView.configurableAvatarImageSize.height).priority(.defaultHigh), - ]) - - bottomTrailingAvatarStackedImageView.translatesAutoresizingMaskIntoConstraints = false - addSubview(bottomTrailingAvatarStackedImageView) - NSLayoutConstraint.activate([ - bottomTrailingAvatarStackedImageView.bottomAnchor.constraint(equalTo: bottomAnchor), - bottomTrailingAvatarStackedImageView.trailingAnchor.constraint(equalTo: trailingAnchor), - bottomTrailingAvatarStackedImageView.widthAnchor.constraint(equalToConstant: AvatarStackedImageView.configurableAvatarImageSize.width).priority(.defaultHigh), - bottomTrailingAvatarStackedImageView.heightAnchor.constraint(equalToConstant: AvatarStackedImageView.configurableAvatarImageSize.height).priority(.defaultHigh), - ]) - - // mask topLeadingAvatarStackedImageView - let offset: CGFloat = 2 - let path: CGPath = { - let path = CGMutablePath() - path.addRect(CGRect(origin: .zero, size: AvatarStackContainerButton.avatarImageViewSize)) - let mirrorScale: CGFloat = UIApplication.shared.userInterfaceLayoutDirection == .rightToLeft ? -1 : 1 - path.addPath(UIBezierPath( - roundedRect: CGRect( - x: mirrorScale * (AvatarStackContainerButton.containerSize.width - AvatarStackContainerButton.avatarImageViewSize.width - offset), - y: AvatarStackContainerButton.containerSize.height - AvatarStackContainerButton.avatarImageViewSize.height - offset, - width: AvatarStackContainerButton.avatarImageViewSize.width, - height: AvatarStackContainerButton.avatarImageViewSize.height - ), - cornerRadius: AvatarStackedImageView.configurableAvatarImageCornerRadius + 1 // 1pt overshoot - ).cgPath) - return path - }() - let maskShapeLayer = CAShapeLayer() - maskShapeLayer.backgroundColor = UIColor.black.cgColor - maskShapeLayer.fillRule = .evenOdd - maskShapeLayer.path = path - topLeadingAvatarStackedImageView.layer.mask = maskShapeLayer - } - - override var intrinsicContentSize: CGSize { - return AvatarStackContainerButton.containerSize - } - - override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { - defer { updateAppearance() } - - updateState(touch: touch, event: event) - return super.beginTracking(touch, with: event) - } - - override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { - defer { updateAppearance() } - - updateState(touch: touch, event: event) - return super.continueTracking(touch, with: event) - } - - override func endTracking(_ touch: UITouch?, with event: UIEvent?) { - defer { updateAppearance() } - resetState() - - if let touch = touch { - if AvatarStackContainerButton.isTouching(touch, view: self, event: event) { - sendActions(for: AvatarStackContainerButton.primaryAction) - } else { - // do nothing - } - } - - super.endTracking(touch, with: event) - } - - override func cancelTracking(with event: UIEvent?) { - defer { updateAppearance() } - - resetState() - super.cancelTracking(with: event) - } - -} - -extension AvatarStackContainerButton { - - private func updateAppearance() { - topLeadingAvatarStackedImageView.alpha = primaryActionState.contains(.highlighted) ? 0.6 : 1.0 - bottomTrailingAvatarStackedImageView.alpha = primaryActionState.contains(.highlighted) ? 0.6 : 1.0 - } - - private static func isTouching(_ touch: UITouch, view: UIView, event: UIEvent?) -> Bool { - let location = touch.location(in: view) - return view.point(inside: location, with: event) - } - - private func resetState() { - primaryActionState = .normal - } - - private func updateState(touch: UITouch, event: UIEvent?) { - primaryActionState = AvatarStackContainerButton.isTouching(touch, view: self, event: event) ? .highlighted : .normal - } - -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct AvatarStackContainerButton_Previews: PreviewProvider { - - static var previews: some View { - UIViewPreview(width: 42) { - let avatarStackContainerButton = AvatarStackContainerButton() - avatarStackContainerButton.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - avatarStackContainerButton.widthAnchor.constraint(equalToConstant: 42), - avatarStackContainerButton.heightAnchor.constraint(equalToConstant: 42), - ]) - return avatarStackContainerButton - } - .previewLayout(.fixed(width: 42, height: 42)) - } - -} - -#endif - diff --git a/Mastodon/Scene/Share/View/Button/HitTestExpandedButton.swift b/Mastodon/Scene/Share/View/Button/HitTestExpandedButton.swift deleted file mode 100644 index f56e7e7ee..000000000 --- a/Mastodon/Scene/Share/View/Button/HitTestExpandedButton.swift +++ /dev/null @@ -1,18 +0,0 @@ -// -// HitTestExpandedButton.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/1. -// - -import UIKit - -final class HitTestExpandedButton: UIButton { - - var expandEdgeInsets = UIEdgeInsets(top: -10, left: -10, bottom: -10, right: -10) - - override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { - return bounds.inset(by: expandEdgeInsets).contains(point) - } - -} diff --git a/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift b/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift index 676d558aa..657573db8 100644 --- a/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift +++ b/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization class PrimaryActionButton: UIButton { diff --git a/Mastodon/Scene/Share/View/Container/AudioContainerView.swift b/Mastodon/Scene/Share/View/Container/AudioContainerView.swift index 8516db569..0dd11d139 100644 --- a/Mastodon/Scene/Share/View/Container/AudioContainerView.swift +++ b/Mastodon/Scene/Share/View/Container/AudioContainerView.swift @@ -8,6 +8,8 @@ import CoreDataStack import os.log import UIKit +import MastodonAsset +import MastodonLocalization final class AudioContainerView: UIView { static let cornerRadius: CGFloat = 22 diff --git a/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift b/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift index 2c0298146..faa7b8f6a 100644 --- a/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift +++ b/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization extension PlayerContainerView { diff --git a/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift b/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift index d5a457a26..78c5462f5 100644 --- a/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift +++ b/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift @@ -9,6 +9,8 @@ import os.log import Foundation import Combine import UIKit +import MastodonAsset +import MastodonLocalization protocol ContentWarningOverlayViewDelegate: AnyObject { func contentWarningOverlayViewDidPressed(_ contentWarningOverlayView: ContentWarningOverlayView) diff --git a/Mastodon/Scene/Share/View/Content/DoubleTitleLabelNavigationBarTitleView.swift b/Mastodon/Scene/Share/View/Content/DoubleTitleLabelNavigationBarTitleView.swift index d900307ab..b6a36f0e0 100644 --- a/Mastodon/Scene/Share/View/Content/DoubleTitleLabelNavigationBarTitleView.swift +++ b/Mastodon/Scene/Share/View/Content/DoubleTitleLabelNavigationBarTitleView.swift @@ -8,6 +8,8 @@ import UIKit import Meta import MetaTextKit +import MastodonAsset +import MastodonLocalization final class DoubleTitleLabelNavigationBarTitleView: UIView { diff --git a/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift b/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift new file mode 100644 index 000000000..5401ec9ba --- /dev/null +++ b/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift @@ -0,0 +1,50 @@ +// +// MediaView+Configuration.swift +// Mastodon +// +// Created by MainasuK on 2022-1-12. +// + +import UIKit +import Combine +import CoreDataStack +import MastodonUI + +extension MediaView { + public static func configuration(status: Status) -> AnyPublisher<[MediaView.Configuration], Never> { + func videoInfo(from attachment: MastodonAttachment) -> MediaView.Configuration.VideoInfo { + MediaView.Configuration.VideoInfo( + aspectRadio: attachment.size, + assetURL: attachment.assetURL, + previewURL: attachment.previewURL, + durationMS: attachment.durationMS + ) + } + + let status = status.reblog ?? status + return status.publisher(for: \.attachments) + .map { attachments -> [MediaView.Configuration] in + return attachments.map { attachment -> MediaView.Configuration in + switch attachment.kind { + case .image: + let info = MediaView.Configuration.ImageInfo( + aspectRadio: attachment.size, + assetURL: attachment.assetURL + ) + return .image(info: info) + case .video: + let info = videoInfo(from: attachment) + return .video(info: info) + case .gifv: + let info = videoInfo(from: attachment) + return .gif(info: info) + case .audio: + // TODO: + let info = videoInfo(from: attachment) + return .video(info: info) + } + } + } + .eraseToAnyPublisher() + } +} diff --git a/Mastodon/Scene/Share/View/Content/NavigationBarProgressView.swift b/Mastodon/Scene/Share/View/Content/NavigationBarProgressView.swift index 3cb1d1d9d..efa8b53a5 100644 --- a/Mastodon/Scene/Share/View/Content/NavigationBarProgressView.swift +++ b/Mastodon/Scene/Share/View/Content/NavigationBarProgressView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization class NavigationBarProgressView: UIView { diff --git a/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift b/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift new file mode 100644 index 000000000..41550a2a8 --- /dev/null +++ b/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift @@ -0,0 +1,205 @@ +// +// NotificationView+Configuration.swift +// Mastodon +// +// Created by MainasuK on 2022-1-21. +// + +import UIKit +import Combine +import MastodonUI +import CoreDataStack +import MetaTextKit +import MastodonMeta +import Meta +import MastodonAsset +import MastodonLocalization +import class CoreDataStack.Notification + +extension NotificationView { + public func configure(feed: Feed) { + guard let notification = feed.notification else { + assertionFailure() + return + } + + configure(notification: notification) + } +} + +extension NotificationView { + public func configure(notification: Notification) { + configureAuthor(notification: notification) + + guard let type = MastodonNotificationType(rawValue: notification.typeRaw) else { + assertionFailure() + return + } + + if let status = notification.status { + switch type { + case .follow, .followRequest: + setAuthorContainerBottomPaddingViewDisplay() + case .mention, .status: + statusView.configure(status: status) + setStatusViewDisplay() + case .reblog, .favourite, .poll: + quoteStatusView.configure(status: status) + setQuoteStatusViewDisplay() + case ._other: + setAuthorContainerBottomPaddingViewDisplay() + assertionFailure() + } + } else { + setAuthorContainerBottomPaddingViewDisplay() + } + } +} + +extension NotificationView { + private func configureAuthor(notification: Notification) { + let author = notification.account + // author avatar + + Publishers.CombineLatest( + author.publisher(for: \.avatar), + UserDefaults.shared.publisher(for: \.preferredStaticAvatar) + ) + .map { _ in author.avatarImageURL() } + .assign(to: \.authorAvatarImageURL, on: viewModel) + .store(in: &disposeBag) + + // author name + Publishers.CombineLatest( + author.publisher(for: \.displayName), + author.publisher(for: \.emojis) + ) + .map { _, emojis in + do { + let content = MastodonContent(content: author.displayNameWithFallback, emojis: emojis.asDictionary) + let metaContent = try MastodonMetaContent.convert(document: content) + return metaContent + } catch { + assertionFailure(error.localizedDescription) + return PlaintextMetaContent(string: author.displayNameWithFallback) + } + } + .assign(to: \.authorName, on: viewModel) + .store(in: &disposeBag) + // author username + author.publisher(for: \.acct) + .map { $0 as String? } + .assign(to: \.authorUsername, on: viewModel) + .store(in: &disposeBag) + // timestamp + viewModel.timestampFormatter = { (date: Date) in + date.localizedSlowedTimeAgoSinceNow + } + notification.publisher(for: \.createAt) + .map { $0 as Date? } + .assign(to: \.timestamp, on: viewModel) + .store(in: &disposeBag) + // notification type indicator + Publishers.CombineLatest3( + notification.publisher(for: \.typeRaw), + author.publisher(for: \.displayName), + author.publisher(for: \.emojis) + ) + .sink { [weak self] typeRaw, _, emojis in + guard let self = self else { return } + guard let type = MastodonNotificationType(rawValue: typeRaw) else { + self.viewModel.notificationIndicatorText = nil + return + } + + func createMetaContent(text: String, emojis: MastodonContent.Emojis) -> MetaContent { + let content = MastodonContent(content: text, emojis: emojis) + guard let metaContent = try? MastodonMetaContent.convert(document: content) else { + return PlaintextMetaContent(string: text) + } + return metaContent + } + + // TODO: fix the i18n. The subject should assert place at the string beginning + switch type { + case .follow: + self.viewModel.notificationIndicatorText = createMetaContent( + text: L10n.Scene.Notification.userFollowedYou(""), + emojis: emojis.asDictionary + ) + case .followRequest: + self.viewModel.notificationIndicatorText = createMetaContent( + text: L10n.Scene.Notification.userRequestedToFollowYou(author.displayNameWithFallback), + emojis: emojis.asDictionary + ) + case .mention: + self.viewModel.notificationIndicatorText = createMetaContent( + text: L10n.Scene.Notification.userMentionedYou(""), + emojis: emojis.asDictionary + ) + case .reblog: + self.viewModel.notificationIndicatorText = createMetaContent( + text: L10n.Scene.Notification.userRebloggedYourPost(""), + emojis: emojis.asDictionary + ) + case .favourite: + self.viewModel.notificationIndicatorText = createMetaContent( + text: L10n.Scene.Notification.userFavoritedYourPost(""), + emojis: emojis.asDictionary + ) + case .poll: + self.viewModel.notificationIndicatorText = createMetaContent( + text: L10n.Scene.Notification.userYourPollHasEnded(""), + emojis: emojis.asDictionary + ) + case .status: + self.viewModel.notificationIndicatorText = createMetaContent( + text: L10n.Scene.Notification.userMentionedYou(""), + emojis: emojis.asDictionary + ) + case ._other: + self.viewModel.notificationIndicatorText = nil + } + } + .store(in: &disposeBag) + // isMuting + Publishers.CombineLatest( + viewModel.$userIdentifier, + author.publisher(for: \.mutingBy) + ) + .map { userIdentifier, mutingBy in + guard let userIdentifier = userIdentifier else { return false } + return mutingBy.contains(where: { + $0.id == userIdentifier.userID && $0.domain == userIdentifier.domain + }) + } + .assign(to: \.isMuting, on: viewModel) + .store(in: &disposeBag) + // isBlocking + Publishers.CombineLatest( + viewModel.$userIdentifier, + author.publisher(for: \.blockingBy) + ) + .map { userIdentifier, blockingBy in + guard let userIdentifier = userIdentifier else { return false } + return blockingBy.contains(where: { + $0.id == userIdentifier.userID && $0.domain == userIdentifier.domain + }) + } + .assign(to: \.isBlocking, on: viewModel) + .store(in: &disposeBag) + // isMyself + Publishers.CombineLatest3( + viewModel.$userIdentifier, + author.publisher(for: \.domain), + author.publisher(for: \.id) + ) + .map { userIdentifier, domain, id in + guard let userIdentifier = userIdentifier else { return false } + return userIdentifier.domain == domain + && userIdentifier.userID == id + } + .assign(to: \.isMyself, on: viewModel) + .store(in: &disposeBag) + } +} diff --git a/Mastodon/Scene/Share/View/Content/PollOptionView+Configuration.swift b/Mastodon/Scene/Share/View/Content/PollOptionView+Configuration.swift new file mode 100644 index 000000000..a4183a830 --- /dev/null +++ b/Mastodon/Scene/Share/View/Content/PollOptionView+Configuration.swift @@ -0,0 +1,108 @@ +// +// PollOptionView+Configuration.swift +// +// +// Created by MainasuK on 2022-1-12. +// + +import UIKit +import Combine +import CoreDataStack +import MetaTextKit +import MastodonUI + +extension PollOptionView { + public func configure(pollOption option: PollOption) { + viewModel.objects.insert(option) + + // background + ThemeService.shared.currentTheme + .receive(on: DispatchQueue.main) + .sink { [weak self] theme in + guard let self = self else { return } + self.viewModel.roundedBackgroundViewColor = theme.secondarySystemBackgroundColor + } + .store(in: &disposeBag) + // metaContent + option.publisher(for: \.title) + .map { title -> MetaContent? in + return PlaintextMetaContent(string: title) + } + .assign(to: \.metaContent, on: viewModel) + .store(in: &disposeBag) + // percentage + Publishers.CombineLatest( + option.poll.publisher(for: \.votesCount), + option.publisher(for: \.votesCount) + ) + .map { pollVotesCount, optionVotesCount -> Double? in + guard pollVotesCount > 0, optionVotesCount >= 0 else { return 0 } + return Double(optionVotesCount) / Double(pollVotesCount) + } + .assign(to: \.percentage, on: viewModel) + .store(in: &disposeBag) + // $isExpire + option.poll.publisher(for: \.expired) + .assign(to: \.isExpire, on: viewModel) + .store(in: &disposeBag) + // isMultiple + viewModel.isMultiple = option.poll.multiple + + let optionIndex = option.index + let authorDomain = option.poll.status.author.domain + let authorID = option.poll.status.author.id + // isSelect, isPollVoted, isMyPoll + Publishers.CombineLatest4( + option.publisher(for: \.poll), + option.publisher(for: \.votedBy), + option.publisher(for: \.isSelected), + viewModel.$userIdentifier + ) + .sink { [weak self] poll, optionVotedBy, isSelected, userIdentifier in + guard let self = self else { return } + + let domain = userIdentifier?.domain ?? "" + let userID = userIdentifier?.userID ?? "" + + let options = poll.options + let pollVoteBy = poll.votedBy ?? Set() + + let isMyPoll = authorDomain == domain + && authorID == userID + + let votedOptions = options.filter { option in + let votedBy = option.votedBy ?? Set() + return votedBy.contains(where: { $0.id == userID && $0.domain == domain }) + } + let isRemoteVotedOption = votedOptions.contains(where: { $0.index == optionIndex }) + let isRemoteVotedPoll = pollVoteBy.contains(where: { $0.id == userID && $0.domain == domain }) + + let isLocalVotedOption = isSelected + + let isSelect: Bool? = { + if isLocalVotedOption { + return true + } else if !votedOptions.isEmpty { + return isRemoteVotedOption ? true : false + } else if isRemoteVotedPoll, votedOptions.isEmpty { + // the poll voted. But server not mark voted options + return nil + } else { + return false + } + }() + self.viewModel.isSelect = isSelect + self.viewModel.isPollVoted = isRemoteVotedPoll + self.viewModel.isMyPoll = isMyPoll + } + .store(in: &disposeBag) + // appearance + ThemeService.shared.currentTheme + .receive(on: DispatchQueue.main) + .sink { [weak self] theme in + guard let self = self else { return } + self.checkmarkBackgroundView.backgroundColor = theme.tertiarySystemBackgroundColor + } + .store(in: &disposeBag) + } +} diff --git a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift new file mode 100644 index 000000000..1605a9935 --- /dev/null +++ b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift @@ -0,0 +1,412 @@ +// +// StatusView+Configuration.swift +// Mastodon +// +// Created by MainasuK on 2022-1-12. +// + +import UIKit +import Combine +import MastodonUI +import CoreDataStack +import MastodonLocalization +import MastodonMeta +import Meta + +extension StatusView { + public func configure(feed: Feed) { + switch feed.kind { + case .home: + guard let status = feed.status else { + assertionFailure() + return + } + configure(status: status) + case .notificationAll: + assertionFailure("TODO") + case .notificationMentions: + assertionFailure("TODO") + case .none: + break + } + + } +} + +extension StatusView { + public func configure(status: Status) { + viewModel.objects.insert(status) + if let reblog = status.reblog { + viewModel.objects.insert(reblog) + } + + configureHeader(status: status) + let author = (status.reblog ?? status).author + configureAuthor(author: author) + let timestamp = (status.reblog ?? status).publisher(for: \.createdAt) + configureTimestamp(timestamp: timestamp.eraseToAnyPublisher()) + configureContent(status: status) + configureMedia(status: status) + configurePoll(status: status) + configureToolbar(status: status) + } +} + +extension StatusView { + private func configureHeader(status: Status) { + if let _ = status.reblog { + Publishers.CombineLatest( + status.author.publisher(for: \.displayName), + status.author.publisher(for: \.emojis) + ) + .map { name, emojis -> StatusView.ViewModel.Header in + let text = L10n.Common.Controls.Status.userReblogged(name) + let content = MastodonContent(content: text, emojis: emojis.asDictionary) + do { + let metaContent = try MastodonMetaContent.convert(document: content) + return .repost(info: .init(header: metaContent)) + } catch { + let metaContent = PlaintextMetaContent(string: name) + return .repost(info: .init(header: metaContent)) + } + + } + .assign(to: \.header, on: viewModel) + .store(in: &disposeBag) + } else if let _ = status.inReplyToID, + let inReplyToAccountID = status.inReplyToAccountID + { + func createHeader( + name: String?, + emojis: MastodonContent.Emojis? + ) -> ViewModel.Header { + let fallbackMetaContent = PlaintextMetaContent(string: L10n.Common.Controls.Status.userRepliedTo("-")) + let fallbackReplyHeader = ViewModel.Header.reply(info: .init(header: fallbackMetaContent)) + guard let name = name, + let emojis = emojis + else { + return fallbackReplyHeader + } + + let content = MastodonContent(content: L10n.Common.Controls.Status.userRepliedTo(name), emojis: emojis) + guard let metaContent = try? MastodonMetaContent.convert(document: content) else { + return fallbackReplyHeader + } + let header = ViewModel.Header.reply(info: .init(header: metaContent)) + return header + } + + if let replyTo = status.replyTo { + // A. replyTo status exist + let header = createHeader(name: replyTo.author.displayNameWithFallback, emojis: replyTo.author.emojis.asDictionary) + viewModel.header = header + } else { + // B. replyTo status not exist + + let request = MastodonUser.sortedFetchRequest + request.predicate = MastodonUser.predicate(domain: status.domain, id: inReplyToAccountID) + if let user = status.managedObjectContext?.safeFetch(request).first { + // B1. replyTo user exist + let header = createHeader(name: user.displayNameWithFallback, emojis: user.emojis.asDictionary) + viewModel.header = header + } else { + // B2. replyTo user not exist + let header = createHeader(name: nil, emojis: nil) + viewModel.header = header + + if let authenticationBox = AppContext.shared.authenticationService.activeMastodonAuthenticationBox.value { + Just(inReplyToAccountID) + .asyncMap { userID in + return try await AppContext.shared.apiService.accountInfo( + domain: authenticationBox.domain, + userID: userID, + authorization: authenticationBox.userAuthorization + ) + } + .sink { completion in + // do nothing + } receiveValue: { [weak self] response in + guard let self = self else { return } + let user = response.value + let header = createHeader(name: user.displayNameWithFallback, emojis: user.emojiMeta) + self.viewModel.header = header + } + .store(in: &disposeBag) + } // end if let + } // end else B2. + } // end else B. + + } else { + viewModel.header = .none + } + } + + public func configureAuthor(author: MastodonUser) { + // author avatar + Publishers.CombineLatest( + author.publisher(for: \.avatar), + UserDefaults.shared.publisher(for: \.preferredStaticAvatar) + ) + .map { _ in author.avatarImageURL() } + .assign(to: \.authorAvatarImageURL, on: viewModel) + .store(in: &disposeBag) + + // author name + Publishers.CombineLatest( + author.publisher(for: \.displayName), + author.publisher(for: \.emojis) + ) + .map { _, emojis in + do { + let content = MastodonContent(content: author.displayNameWithFallback, emojis: emojis.asDictionary) + let metaContent = try MastodonMetaContent.convert(document: content) + return metaContent + } catch { + assertionFailure(error.localizedDescription) + return PlaintextMetaContent(string: author.displayNameWithFallback) + } + } + .assign(to: \.authorName, on: viewModel) + .store(in: &disposeBag) + // author username + author.publisher(for: \.acct) + .map { $0 as String? } + .assign(to: \.authorUsername, on: viewModel) + .store(in: &disposeBag) + + // // protected + // author.publisher(for: \.locked) + // .assign(to: \.protected, on: viewModel) + // .store(in: &disposeBag) + // // visibility + // viewModel.visibility = status.visibility.asStatusVisibility + + // isMuting + Publishers.CombineLatest( + viewModel.$userIdentifier, + author.publisher(for: \.mutingBy) + ) + .map { userIdentifier, mutingBy in + guard let userIdentifier = userIdentifier else { return false } + return mutingBy.contains(where: { + $0.id == userIdentifier.userID && $0.domain == userIdentifier.domain + }) + } + .assign(to: \.isMuting, on: viewModel) + .store(in: &disposeBag) + // isBlocking + Publishers.CombineLatest( + viewModel.$userIdentifier, + author.publisher(for: \.blockingBy) + ) + .map { userIdentifier, blockingBy in + guard let userIdentifier = userIdentifier else { return false } + return blockingBy.contains(where: { + $0.id == userIdentifier.userID && $0.domain == userIdentifier.domain + }) + } + .assign(to: \.isBlocking, on: viewModel) + .store(in: &disposeBag) + // isMyself + Publishers.CombineLatest3( + viewModel.$userIdentifier, + author.publisher(for: \.domain), + author.publisher(for: \.id) + ) + .map { userIdentifier, domain, id in + guard let userIdentifier = userIdentifier else { return false } + return userIdentifier.domain == domain + && userIdentifier.userID == id + } + .assign(to: \.isMyself, on: viewModel) + .store(in: &disposeBag) + } + + private func configureTimestamp(timestamp: AnyPublisher) { + // timestamp + viewModel.timestampFormatter = { (date: Date) in + date.localizedSlowedTimeAgoSinceNow + } + timestamp + .map { $0 as Date? } + .assign(to: \.timestamp, on: viewModel) + .store(in: &disposeBag) + } + + private func configureContent(status: Status) { + let status = status.reblog ?? status + do { + let content = MastodonContent(content: status.content, emojis: status.emojis.asDictionary) + let metaContent = try MastodonMetaContent.convert(document: content) + viewModel.content = metaContent + // viewModel.sharePlaintextContent = metaContent.original + } catch { + assertionFailure(error.localizedDescription) + viewModel.content = PlaintextMetaContent(string: "") + } + +// if let spoilerText = status.spoilerText, !spoilerText.isEmpty { +// do { +// let content = MastodonContent(content: spoilerText, emojis: status.emojis.asDictionary) +// let metaContent = try MastodonMetaContent.convert(document: content) +// viewModel.spoilerContent = metaContent +// } catch { +// assertionFailure() +// viewModel.spoilerContent = nil +// } +// } else { +// viewModel.spoilerContent = nil +// } + +// status.publisher(for: \.isContentReveal) +// .assign(to: \.isContentReveal, on: viewModel) +// .store(in: &disposeBag) +// +// viewModel.source = status.source + } + + private func configureMedia(status: Status) { + let status = status.reblog ?? status + +// mediaGridContainerView.viewModel.resetContentWarningOverlay() +// viewModel.isMediaSensitiveSwitchable = true + + MediaView.configuration(status: status) + .assign(to: \.mediaViewConfigurations, on: viewModel) + .store(in: &disposeBag) + +// // set directly without delay +// viewModel.isMediaSensitiveToggled = status.isMediaSensitiveToggled +// viewModel.isMediaSensitive = status.isMediaSensitive +// mediaGridContainerView.configureOverlayDisplay( +// isDisplay: status.isMediaSensitiveToggled ? !status.isMediaSensitive : !status.isMediaSensitive, +// animated: false +// ) +// +// status.publisher(for: \.isMediaSensitive) +// .receive(on: DispatchQueue.main) +// .assign(to: \.isMediaSensitive, on: viewModel) +// .store(in: &disposeBag) +// +// status.publisher(for: \.isMediaSensitiveToggled) +// .receive(on: DispatchQueue.main) +// .assign(to: \.isMediaSensitiveToggled, on: viewModel) +// .store(in: &disposeBag) + } + + private func configurePoll(status: Status) { + let status = status.reblog ?? status + + if let poll = status.poll { + viewModel.objects.insert(poll) + } + + // pollItems + status.publisher(for: \.poll) + .sink { [weak self] poll in + guard let self = self else { return } + guard let poll = poll else { + self.viewModel.pollItems = [] + return + } + + let options = poll.options.sorted(by: { $0.index < $1.index }) + let items: [PollItem] = options.map { .option(record: .init(objectID: $0.objectID)) } + self.viewModel.pollItems = items + } + .store(in: &disposeBag) + // isVoteButtonEnabled + status.poll?.publisher(for: \.updatedAt) + .sink { [weak self] _ in + guard let self = self else { return } + guard let poll = status.poll else { return } + let options = poll.options + let hasSelectedOption = options.contains(where: { $0.isSelected }) + self.viewModel.isVoteButtonEnabled = hasSelectedOption + } + .store(in: &disposeBag) + // isVotable + if let poll = status.poll { + Publishers.CombineLatest3( + poll.publisher(for: \.votedBy), + poll.publisher(for: \.expired), + viewModel.$userIdentifier + ) + .map { votedBy, expired, userIdentifier in + guard let userIdentifier = userIdentifier else { return false } + let domain = userIdentifier.domain + let userID = userIdentifier.userID + let isVoted = votedBy?.contains(where: { $0.domain == domain && $0.id == userID }) ?? false + return !isVoted && !expired + } + .assign(to: &viewModel.$isVotable) + } + // votesCount + status.poll?.publisher(for: \.votesCount) + .map { Int($0) } + .assign(to: \.voteCount, on: viewModel) + .store(in: &disposeBag) + // voterCount + status.poll?.publisher(for: \.votersCount) + .map { Int($0) } + .assign(to: \.voterCount, on: viewModel) + .store(in: &disposeBag) + // expireAt + status.poll?.publisher(for: \.expiresAt) + .assign(to: \.expireAt, on: viewModel) + .store(in: &disposeBag) + // expired + status.poll?.publisher(for: \.expired) + .assign(to: \.expired, on: viewModel) + .store(in: &disposeBag) + // isVoting + status.poll?.publisher(for: \.isVoting) + .assign(to: \.isVoting, on: viewModel) + .store(in: &disposeBag) + } + + private func configureToolbar(status: Status) { + let status = status.reblog ?? status + + status.publisher(for: \.repliesCount) + .map(Int.init) + .assign(to: \.replyCount, on: viewModel) + .store(in: &disposeBag) + status.publisher(for: \.reblogsCount) + .map(Int.init) + .assign(to: \.reblogCount, on: viewModel) + .store(in: &disposeBag) + status.publisher(for: \.favouritesCount) + .map(Int.init) + .assign(to: \.favoriteCount, on: viewModel) + .store(in: &disposeBag) + + // relationship + Publishers.CombineLatest( + viewModel.$userIdentifier, + status.publisher(for: \.rebloggedBy) + ) + .map { userIdentifier, rebloggedBy in + guard let userIdentifier = userIdentifier else { return false } + return rebloggedBy.contains(where: { + $0.id == userIdentifier.userID && $0.domain == userIdentifier.domain + }) + } + .assign(to: \.isReblog, on: viewModel) + .store(in: &disposeBag) + + Publishers.CombineLatest( + viewModel.$userIdentifier, + status.publisher(for: \.favouritedBy) + ) + .map { userIdentifier, favouritedBy in + guard let userIdentifier = userIdentifier else { return false } + return favouritedBy.contains(where: { + $0.id == userIdentifier.userID && $0.domain == userIdentifier.domain + }) + } + .assign(to: \.isFavorite, on: viewModel) + .store(in: &disposeBag) + } + +} diff --git a/Mastodon/Scene/Share/View/Content/StatusView.swift b/Mastodon/Scene/Share/View/Content/StatusView.swift deleted file mode 100644 index 62eb3d6b0..000000000 --- a/Mastodon/Scene/Share/View/Content/StatusView.swift +++ /dev/null @@ -1,725 +0,0 @@ -// -// StatusView.swift -// Mastodon -// -// Created by sxiaojian on 2021/1/28. -// - -import os.log -import UIKit -import Combine -import AVKit -import AlamofireImage -import FLAnimatedImage -import MetaTextKit -import Meta -import MastodonSDK - -// TODO: -// import LinkPresentation - -protocol StatusViewDelegate: AnyObject { - func statusView(_ statusView: StatusView, headerInfoLabelDidPressed label: UILabel) - func statusView(_ statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) - func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) - func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) - func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) - func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) - func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) -} - -final class StatusView: UIView { - - let logger = Logger(subsystem: "StatusView", category: "logic") - - var statusPollTableViewHeightObservation: NSKeyValueObservation? - var pollCountdownSubscription: AnyCancellable? - - static let avatarImageSize = CGSize(width: 42, height: 42) - static let avatarImageCornerRadius: CGFloat = 4 - static let avatarToLabelSpacing: CGFloat = 5 - static let contentWarningBlurRadius: CGFloat = 12 - static let containerStackViewSpacing: CGFloat = 10 - - weak var delegate: StatusViewDelegate? - - var pollTableViewDataSource: UITableViewDiffableDataSource? - var pollTableViewHeightLayoutConstraint: NSLayoutConstraint! - - let containerStackView = UIStackView() - let headerContainerView = UIView() - let authorContainerView = UIView() - - static let reblogIconImage: UIImage = { - let font = UIFont.systemFont(ofSize: 13, weight: .medium) - let configuration = UIImage.SymbolConfiguration(font: font) - let image = UIImage(systemName: "arrow.2.squarepath", withConfiguration: configuration)!.withTintColor(Asset.Colors.Label.secondary.color) - return image - }() - - static let replyIconImage: UIImage = { - let font = UIFont.systemFont(ofSize: 13, weight: .medium) - let configuration = UIImage.SymbolConfiguration(font: font) - let image = UIImage(systemName: "arrowshape.turn.up.left.fill", withConfiguration: configuration)!.withTintColor(Asset.Colors.Label.secondary.color) - return image - }() - - static func iconAttributedString(image: UIImage) -> NSAttributedString { - let attributedString = NSMutableAttributedString() - let imageTextAttachment = NSTextAttachment() - let imageAttribute = NSAttributedString(attachment: imageTextAttachment) - imageTextAttachment.image = image - attributedString.append(imageAttribute) - return attributedString - } - - let headerIconLabel: MetaLabel = { - let label = MetaLabel(style: .statusHeader) - let attributedString = StatusView.iconAttributedString(image: StatusView.reblogIconImage) - label.configure(attributedString: attributedString) - return label - }() - - let headerInfoLabel = MetaLabel(style: .statusHeader) - - let avatarView: UIView = { - let view = UIView() - view.isAccessibilityElement = true - view.accessibilityTraits = .button - view.accessibilityLabel = L10n.Common.Controls.Status.showUserProfile - return view - }() - let avatarButton = AvatarButton() - let avatarStackedContainerButton: AvatarStackContainerButton = AvatarStackContainerButton() - - let nameMetaLabel: MetaLabel = { - let label = MetaLabel(style: .statusName) - return label - }() - - let nameTrialingDotLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.secondary.color - label.font = .systemFont(ofSize: 17) - label.text = "·" - label.isAccessibilityElement = false - return label - }() - - let usernameLabel: UILabel = { - let label = UILabel() - label.font = .systemFont(ofSize: 15, weight: .regular) - label.textColor = Asset.Colors.Label.secondary.color - label.text = "@alice" - label.isAccessibilityElement = false - return label - }() - - let dateLabel: UILabel = { - let label = UILabel() - label.font = .systemFont(ofSize: 13, weight: .regular) - label.textColor = Asset.Colors.Label.secondary.color - label.text = "1d" - return label - }() - - let revealContentWarningButton: UIButton = { - let button = HighlightDimmableButton() - button.setImage(UIImage(systemName: "eye", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .medium)), for: .normal) - // button.tintColor = Asset.Colors.brandBlue.color - return button - }() - - let visibilityImageView: UIImageView = { - let imageView = UIImageView() - imageView.tintColor = Asset.Colors.Label.secondary.color - imageView.contentMode = .scaleAspectFit - return imageView - }() - - let statusContainerStackView = UIStackView() - let statusMosaicImageViewContainer = MosaicImageViewContainer() - - let pollTableView: PollTableView = { - let tableView = PollTableView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) - tableView.register(PollOptionTableViewCell.self, forCellReuseIdentifier: String(describing: PollOptionTableViewCell.self)) - tableView.rowHeight = PollOptionView.height - tableView.isScrollEnabled = false - tableView.separatorStyle = .none - tableView.backgroundColor = .clear - return tableView - }() - - let pollStatusStackView = UIStackView() - let pollVoteCountLabel: UILabel = { - let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) - label.textColor = Asset.Colors.Label.secondary.color - label.text = L10n.Plural.Count.vote(0) - return label - }() - let pollStatusDotLabel: UILabel = { - let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) - label.textColor = Asset.Colors.Label.secondary.color - label.text = " · " - return label - }() - let pollCountdownLabel: UILabel = { - let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) - label.textColor = Asset.Colors.Label.secondary.color - label.text = "1 day left" - return label - }() - let pollVoteButton: UIButton = { - let button = HitTestExpandedButton() - button.titleLabel?.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 14, weight: .semibold)) - button.setTitle(L10n.Common.Controls.Status.Poll.vote, for: .normal) - button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) - button.setTitleColor(Asset.Colors.brandBlue.color.withAlphaComponent(0.8), for: .highlighted) - button.setTitleColor(Asset.Colors.Button.disabled.color, for: .disabled) - button.isEnabled = false - return button - }() - - // do not use visual effect view due to we blur text only without background - let contentWarningOverlayView: ContentWarningOverlayView = { - let contentWarningOverlayView = ContentWarningOverlayView() - contentWarningOverlayView.configure(style: .contentWarning) - contentWarningOverlayView.layer.masksToBounds = true - return contentWarningOverlayView - }() - - let playerContainerView = PlayerContainerView() - - let audioView: AudioContainerView = { - let audioView = AudioContainerView() - return audioView - }() - let actionToolbarContainer: ActionToolbarContainer = { - let actionToolbarContainer = ActionToolbarContainer() - actionToolbarContainer.configure(for: .inline) - return actionToolbarContainer - }() - - // set display when needs bottom padding - let actionToolbarPlaceholderPaddingView = UIView() - - let contentMetaText: MetaText = { - let metaText = MetaText() - metaText.textView.backgroundColor = .clear - metaText.textView.isEditable = false - metaText.textView.isSelectable = false - metaText.textView.isScrollEnabled = false - metaText.textView.textContainer.lineFragmentPadding = 0 - metaText.textView.textContainerInset = .zero - metaText.textView.layer.masksToBounds = false - metaText.textView.textDragInteraction?.isEnabled = false // disable drag for link and attachment - - metaText.paragraphStyle = { - let style = NSMutableParagraphStyle() - style.lineSpacing = 5 - style.paragraphSpacing = 8 - style.alignment = .natural - return style - }() - metaText.textAttributes = [ - .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)), - .foregroundColor: Asset.Colors.Label.primary.color, - ] - metaText.linkAttributes = [ - .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold)), - .foregroundColor: Asset.Colors.brandBlue.color, - ] - return metaText - }() - - private let headerInfoLabelTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - - var isRevealing = true - - // TODO: - // let linkPreview = LPLinkView() - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - - deinit { - statusPollTableViewHeightObservation = nil - } - -} - -extension StatusView { - - func _init() { - // container: [reblog | author | status | action toolbar] - // note: do not set spacing for nested stackView to avoid SDK layout conflict issue - containerStackView.axis = .vertical - // containerStackView.spacing = 10 - containerStackView.translatesAutoresizingMaskIntoConstraints = false - addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), - trailingAnchor.constraint(equalTo: containerStackView.trailingAnchor), - bottomAnchor.constraint(equalTo: containerStackView.bottomAnchor), - ]) - containerStackView.setContentHuggingPriority(.required - 1, for: .vertical) - containerStackView.setContentCompressionResistancePriority(.required - 1, for: .vertical) - - // header container: [icon | info] - let headerContainerStackView = UIStackView() - headerContainerStackView.axis = .horizontal - headerContainerStackView.spacing = 4 - headerContainerStackView.addArrangedSubview(headerIconLabel) - headerContainerStackView.addArrangedSubview(headerInfoLabel) - headerIconLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal) - - headerContainerStackView.translatesAutoresizingMaskIntoConstraints = false - headerContainerView.addSubview(headerContainerStackView) - NSLayoutConstraint.activate([ - headerContainerStackView.topAnchor.constraint(equalTo: headerContainerView.topAnchor), - headerContainerStackView.leadingAnchor.constraint(equalTo: headerContainerView.leadingAnchor), - headerContainerStackView.trailingAnchor.constraint(equalTo: headerContainerView.trailingAnchor), - headerContainerView.bottomAnchor.constraint(equalTo: headerContainerStackView.bottomAnchor, constant: StatusView.containerStackViewSpacing).priority(.defaultHigh), - ]) - headerContainerStackView.setContentCompressionResistancePriority(.required - 5, for: .vertical) - containerStackView.addArrangedSubview(headerContainerView) - defer { - containerStackView.bringSubviewToFront(headerContainerView) - } - - // author container: [avatar | author meta container | reveal button] - let authorContainerStackView = UIStackView() - authorContainerStackView.axis = .horizontal - authorContainerStackView.spacing = StatusView.avatarToLabelSpacing - authorContainerStackView.distribution = .fill - - // avatar - avatarView.translatesAutoresizingMaskIntoConstraints = false - authorContainerStackView.addArrangedSubview(avatarView) - NSLayoutConstraint.activate([ - avatarView.widthAnchor.constraint(equalToConstant: StatusView.avatarImageSize.width).priority(.required - 1), - avatarView.heightAnchor.constraint(equalToConstant: StatusView.avatarImageSize.height).priority(.required - 1), - ]) - avatarButton.translatesAutoresizingMaskIntoConstraints = false - avatarView.addSubview(avatarButton) - NSLayoutConstraint.activate([ - avatarButton.topAnchor.constraint(equalTo: avatarView.topAnchor), - avatarButton.leadingAnchor.constraint(equalTo: avatarView.leadingAnchor), - avatarButton.trailingAnchor.constraint(equalTo: avatarView.trailingAnchor), - avatarButton.bottomAnchor.constraint(equalTo: avatarView.bottomAnchor), - ]) - avatarStackedContainerButton.translatesAutoresizingMaskIntoConstraints = false - avatarView.addSubview(avatarStackedContainerButton) - NSLayoutConstraint.activate([ - avatarStackedContainerButton.topAnchor.constraint(equalTo: avatarView.topAnchor), - avatarStackedContainerButton.leadingAnchor.constraint(equalTo: avatarView.leadingAnchor), - avatarStackedContainerButton.trailingAnchor.constraint(equalTo: avatarView.trailingAnchor), - avatarStackedContainerButton.bottomAnchor.constraint(equalTo: avatarView.bottomAnchor), - ]) - - // author meta container: [title container | subtitle container] - let authorMetaContainerStackView = UIStackView() - authorContainerStackView.addArrangedSubview(authorMetaContainerStackView) - authorMetaContainerStackView.axis = .vertical - authorMetaContainerStackView.spacing = 4 - - // title container: [display name | "·" | date | padding | visibility] - let titleContainerStackView = UIStackView() - authorMetaContainerStackView.addArrangedSubview(titleContainerStackView) - titleContainerStackView.axis = .horizontal - titleContainerStackView.alignment = .center - titleContainerStackView.spacing = 4 - nameMetaLabel.translatesAutoresizingMaskIntoConstraints = false - titleContainerStackView.addArrangedSubview(nameMetaLabel) - NSLayoutConstraint.activate([ - nameMetaLabel.heightAnchor.constraint(equalToConstant: 22).priority(.defaultHigh), - ]) - titleContainerStackView.addArrangedSubview(nameTrialingDotLabel) - titleContainerStackView.addArrangedSubview(dateLabel) - let padding = UIView() - padding.translatesAutoresizingMaskIntoConstraints = false - titleContainerStackView.addArrangedSubview(padding) // padding - titleContainerStackView.addArrangedSubview(visibilityImageView) - nameMetaLabel.setContentHuggingPriority(.defaultHigh + 1, for: .horizontal) - nameTrialingDotLabel.setContentHuggingPriority(.defaultHigh + 2, for: .horizontal) - nameTrialingDotLabel.setContentCompressionResistancePriority(.required - 2, for: .horizontal) - dateLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal) - dateLabel.setContentCompressionResistancePriority(.required - 10, for: .horizontal) - padding.setContentHuggingPriority(.defaultLow, for: .horizontal) - padding.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) - visibilityImageView.setContentHuggingPriority(.required - 9, for: .horizontal) - visibilityImageView.setContentCompressionResistancePriority(.required - 9, for: .horizontal) - visibilityImageView.setContentHuggingPriority(.required - 1, for: .vertical) - - // subtitle container: [username] - let subtitleContainerStackView = UIStackView() - authorMetaContainerStackView.addArrangedSubview(subtitleContainerStackView) - subtitleContainerStackView.axis = .horizontal - subtitleContainerStackView.addArrangedSubview(usernameLabel) - - // reveal button - authorContainerStackView.addArrangedSubview(revealContentWarningButton) - revealContentWarningButton.setContentHuggingPriority(.required - 2, for: .horizontal) - - authorContainerStackView.translatesAutoresizingMaskIntoConstraints = false - authorContainerView.addSubview(authorContainerStackView) - NSLayoutConstraint.activate([ - authorContainerStackView.topAnchor.constraint(equalTo: authorContainerView.topAnchor), - authorContainerStackView.leadingAnchor.constraint(equalTo: authorContainerView.leadingAnchor), - authorContainerStackView.trailingAnchor.constraint(equalTo: authorContainerView.trailingAnchor), - authorContainerView.bottomAnchor.constraint(equalTo: authorContainerStackView.bottomAnchor, constant: StatusView.containerStackViewSpacing).priority(.required - 1), - ]) - containerStackView.addArrangedSubview(authorContainerView) - - // status container: [status | image / video | audio | poll | poll status] (overlay with content warning) - containerStackView.addArrangedSubview(statusContainerStackView) - statusContainerStackView.axis = .vertical - statusContainerStackView.spacing = 10 - - // content warning overlay - contentWarningOverlayView.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addSubview(contentWarningOverlayView) - NSLayoutConstraint.activate([ - statusContainerStackView.topAnchor.constraint(equalTo: contentWarningOverlayView.topAnchor).priority(.required - 10), - statusContainerStackView.leftAnchor.constraint(equalTo: contentWarningOverlayView.leftAnchor).priority(.required - 1), - contentWarningOverlayView.rightAnchor.constraint(equalTo: statusContainerStackView.rightAnchor).priority(.required - 1), - contentWarningOverlayView.bottomAnchor.constraint(equalTo: statusContainerStackView.bottomAnchor).priority(.required - 1), - ]) - // avoid overlay behind other views - defer { - containerStackView.bringSubviewToFront(authorContainerView) - } - - // status - statusContainerStackView.addArrangedSubview(contentMetaText.textView) - contentMetaText.textView.setContentCompressionResistancePriority(.required - 1, for: .vertical) - - // image - statusContainerStackView.addArrangedSubview(statusMosaicImageViewContainer) - - // audio - audioView.translatesAutoresizingMaskIntoConstraints = false - statusContainerStackView.addArrangedSubview(audioView) - NSLayoutConstraint.activate([ - audioView.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh) - ]) - - // video & gifv - statusContainerStackView.addArrangedSubview(playerContainerView) - - pollTableView.translatesAutoresizingMaskIntoConstraints = false - statusContainerStackView.addArrangedSubview(pollTableView) - pollTableViewHeightLayoutConstraint = pollTableView.heightAnchor.constraint(equalToConstant: 44.0).priority(.required - 1) - NSLayoutConstraint.activate([ - pollTableViewHeightLayoutConstraint, - ]) - - // statusPollTableViewHeightObservation = pollTableView.observe(\.contentSize, options: .new, changeHandler: { [weak self] tableView, _ in - // guard let self = self else { return } - // guard self.pollTableView.contentSize.height != .zero else { - // self.pollTableViewHeightLayoutConstraint.constant = 44 - // return - // } - // self.pollTableViewHeightLayoutConstraint.constant = self.pollTableView.contentSize.height - // }) - - pollStatusStackView.translatesAutoresizingMaskIntoConstraints = false - statusContainerStackView.addArrangedSubview(pollStatusStackView) - NSLayoutConstraint.activate([ - pollStatusStackView.heightAnchor.constraint(equalToConstant: 30).priority(.required - 10) - ]) - pollStatusStackView.axis = .horizontal - pollStatusStackView.addArrangedSubview(pollVoteCountLabel) - pollStatusStackView.addArrangedSubview(pollStatusDotLabel) - pollStatusStackView.addArrangedSubview(pollCountdownLabel) - pollStatusStackView.addArrangedSubview(pollVoteButton) - pollVoteCountLabel.setContentHuggingPriority(.defaultHigh + 2, for: .horizontal) - pollStatusDotLabel.setContentHuggingPriority(.defaultHigh + 1, for: .horizontal) - pollCountdownLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) - pollVoteButton.setContentHuggingPriority(.defaultHigh + 3, for: .horizontal) - - // action toolbar container - containerStackView.addArrangedSubview(actionToolbarContainer) - containerStackView.sendSubviewToBack(actionToolbarContainer) - actionToolbarContainer.setContentCompressionResistancePriority(.defaultHigh, for: .vertical) - actionToolbarContainer.setContentHuggingPriority(.required - 1, for: .vertical) - - actionToolbarPlaceholderPaddingView.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(actionToolbarPlaceholderPaddingView) - NSLayoutConstraint.activate([ - actionToolbarPlaceholderPaddingView.heightAnchor.constraint(equalToConstant: 12).priority(.required - 1), - ]) - actionToolbarPlaceholderPaddingView.isHidden = true - - headerContainerView.isHidden = true - statusMosaicImageViewContainer.isHidden = true - pollTableView.isHidden = true - pollStatusStackView.isHidden = true - audioView.isHidden = true - playerContainerView.isHidden = true - - avatarStackedContainerButton.isHidden = true - contentWarningOverlayView.isHidden = true - - contentMetaText.textView.delegate = self - contentMetaText.textView.linkDelegate = self - playerContainerView.delegate = self - contentWarningOverlayView.delegate = self - - headerInfoLabelTapGestureRecognizer.addTarget(self, action: #selector(StatusView.headerInfoLabelTapGestureRecognizerHandler(_:))) - headerInfoLabel.isUserInteractionEnabled = true - headerInfoLabel.addGestureRecognizer(headerInfoLabelTapGestureRecognizer) - - avatarButton.addTarget(self, action: #selector(StatusView.avatarButtonDidPressed(_:)), for: .touchUpInside) - avatarStackedContainerButton.addTarget(self, action: #selector(StatusView.avatarStackedContainerButtonDidPressed(_:)), for: .touchUpInside) - revealContentWarningButton.addTarget(self, action: #selector(StatusView.revealContentWarningButtonDidPressed(_:)), for: .touchUpInside) - pollVoteButton.addTarget(self, action: #selector(StatusView.pollVoteButtonPressed(_:)), for: .touchUpInside) - } - -} - -extension StatusView { - - func updateContentWarningDisplay(isHidden: Bool, animated: Bool, completion: (() -> Void)? = nil) { - func updateOverlayView() { - contentWarningOverlayView.contentOverlayView.alpha = isHidden ? 0 : 1 - contentWarningOverlayView.isUserInteractionEnabled = !isHidden - } - - contentWarningOverlayView.blurContentWarningTitleLabel.isHidden = isHidden - - if animated { - UIView.animate(withDuration: 0.33, delay: 0, options: .curveEaseInOut) { - updateOverlayView() - } completion: { _ in - completion!() - } - } else { - updateOverlayView() - completion?() - } - } - - func updateRevealContentWarningButton(isRevealing: Bool) { - self.isRevealing = isRevealing - - if !isRevealing { - let image = traitCollection.userInterfaceStyle == .light ? UIImage(systemName: "eye")! : UIImage(systemName: "eye.fill") - revealContentWarningButton.setImage(image, for: .normal) - } else { - let image = traitCollection.userInterfaceStyle == .light ? UIImage(systemName: "eye.slash")! : UIImage(systemName: "eye.slash.fill") - revealContentWarningButton.setImage(image, for: .normal) - } - // TODO: a11y - } - - func updateVisibility(visibility: Mastodon.Entity.Status.Visibility) { - switch visibility { - case .public: - visibilityImageView.image = UIImage(systemName: "globe", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13, weight: .regular)) - case .private: - visibilityImageView.image = UIImage(systemName: "person.3", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13, weight: .regular)) - case .unlisted: - visibilityImageView.image = UIImage(systemName: "eye.slash", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13, weight: .regular)) - case .direct: - visibilityImageView.image = UIImage(systemName: "at", withConfiguration: UIImage.SymbolConfiguration(pointSize: 13, weight: .regular)) - case ._other: - visibilityImageView.image = nil - } - } - -} - -extension StatusView { - - @objc private func headerInfoLabelTapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.statusView(self, headerInfoLabelDidPressed: headerInfoLabel) - } - - @objc private func avatarButtonDidPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.statusView(self, avatarImageViewDidPressed: avatarButton.avatarImageView) - } - - @objc private func avatarStackedContainerButtonDidPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.statusView(self, avatarImageViewDidPressed: avatarStackedContainerButton.topLeadingAvatarStackedImageView) - } - - @objc private func revealContentWarningButtonDidPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.statusView(self, revealContentWarningButtonDidPressed: sender) - } - - @objc private func pollVoteButtonPressed(_ sender: UIButton) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.statusView(self, pollVoteButtonPressed: sender) - } - -} - -// MARK: - MetaTextViewDelegate -extension StatusView: MetaTextViewDelegate { - func metaTextView(_ metaTextView: MetaTextView, didSelectMeta meta: Meta) { - logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") - switch metaTextView { - case contentMetaText.textView: - delegate?.statusView(self, metaText: contentMetaText, didSelectMeta: meta) - default: - assertionFailure() - break - } - } -} - -// MARK: - UITextViewDelegate -extension StatusView: UITextViewDelegate { - - func textView(_ textView: UITextView, shouldInteractWith textAttachment: NSTextAttachment, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { - switch textView { - case contentMetaText.textView: - return false - default: - assertionFailure() - return true - } - } - - func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { - switch textView { - case contentMetaText.textView: - return false - default: - assertionFailure() - return true - } - } -} - -// MARK: - ContentWarningOverlayViewDelegate -extension StatusView: ContentWarningOverlayViewDelegate { - func contentWarningOverlayViewDidPressed(_ contentWarningOverlayView: ContentWarningOverlayView) { - assert(contentWarningOverlayView === self.contentWarningOverlayView) - delegate?.statusView(self, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } - -} - -// MARK: - PlayerContainerViewDelegate -extension StatusView: PlayerContainerViewDelegate { - func playerContainerView(_ playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - delegate?.statusView(self, playerContainerView: playerContainerView, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } -} - -// MARK: - AvatarConfigurableView -extension StatusView: AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { return Self.avatarImageSize } - static var configurableAvatarImageCornerRadius: CGFloat { return 4 } - var configurableAvatarImageView: FLAnimatedImageView? { avatarButton.avatarImageView } -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct StatusView_Previews: PreviewProvider { - - static let avatarFlora = UIImage(named: "tiraya-adam") - static let avatarMarkus = UIImage(named: "markus-spiske") - - static var previews: some View { - Group { - UIViewPreview(width: 375) { - let statusView = StatusView() - statusView.configure( - with: AvatarConfigurableViewConfiguration( - avatarImageURL: nil, - placeholderImage: avatarFlora - ) - ) - return statusView - } - .previewLayout(.fixed(width: 375, height: 200)) - .previewDisplayName("Normal") - UIViewPreview(width: 375) { - let statusView = StatusView() - statusView.headerContainerView.isHidden = false - statusView.avatarButton.isHidden = true - statusView.avatarStackedContainerButton.isHidden = false - statusView.avatarStackedContainerButton.topLeadingAvatarStackedImageView.configure( - with: AvatarConfigurableViewConfiguration( - avatarImageURL: nil, - placeholderImage: avatarFlora - ) - ) - statusView.avatarStackedContainerButton.bottomTrailingAvatarStackedImageView.configure( - with: AvatarConfigurableViewConfiguration( - avatarImageURL: nil, - placeholderImage: avatarMarkus - ) - ) - return statusView - } - .previewLayout(.fixed(width: 375, height: 200)) - .previewDisplayName("Reblog") - UIViewPreview(width: 375) { - let statusView = StatusView(frame: CGRect(x: 0, y: 0, width: 375, height: 500)) - statusView.configure( - with: AvatarConfigurableViewConfiguration( - avatarImageURL: nil, - placeholderImage: avatarFlora - ) - ) - statusView.headerContainerView.isHidden = false - let images = MosaicImageView_Previews.images - let mosaics = statusView.statusMosaicImageViewContainer.setupImageViews(count: 4, maxSize: CGSize(width: 375, height: 162)) - for (i, mosaic) in mosaics.enumerated() { - mosaic.imageView.image = images[i] - } - statusView.statusMosaicImageViewContainer.isHidden = false - statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isHidden = true - return statusView - } - .previewLayout(.fixed(width: 375, height: 380)) - .previewDisplayName("Image Meida") - UIViewPreview(width: 375) { - let statusView = StatusView(frame: CGRect(x: 0, y: 0, width: 375, height: 500)) - statusView.configure( - with: AvatarConfigurableViewConfiguration( - avatarImageURL: nil, - placeholderImage: avatarFlora - ) - ) - statusView.headerContainerView.isHidden = false - statusView.setNeedsLayout() - statusView.layoutIfNeeded() - statusView.updateContentWarningDisplay(isHidden: false, animated: false) - let images = MosaicImageView_Previews.images - let mosaics = statusView.statusMosaicImageViewContainer.setupImageViews(count: 4, maxSize: CGSize(width: 375, height: 162)) - for (i, mosaic) in mosaics.enumerated() { - mosaic.imageView.image = images[i] - } - statusView.statusMosaicImageViewContainer.isHidden = false - return statusView - } - .previewLayout(.fixed(width: 375, height: 380)) - .previewDisplayName("Content Sensitive") - } - } - -} - -#endif - diff --git a/Mastodon/Scene/Share/View/Content/TimelineHeaderView.swift b/Mastodon/Scene/Share/View/Content/TimelineHeaderView.swift index 50518e59e..e26604dca 100644 --- a/Mastodon/Scene/Share/View/Content/TimelineHeaderView.swift +++ b/Mastodon/Scene/Share/View/Content/TimelineHeaderView.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class TimelineHeaderView: UIView { @@ -83,56 +85,56 @@ extension TimelineHeaderView { } -extension Item.EmptyStateHeaderAttribute.Reason { - var iconImage: UIImage? { - switch self { - case .noStatusFound, .blocking, .blocked: - return UIImage(systemName: "nosign", withConfiguration: UIImage.SymbolConfiguration(pointSize: 64, weight: .bold))! - case .suspended: - return UIImage(systemName: "person.crop.circle.badge.xmark", withConfiguration: UIImage.SymbolConfiguration(pointSize: 64, weight: .bold))! - } - } - - var message: String { - switch self { - case .noStatusFound: - return L10n.Common.Controls.Timeline.Header.noStatusFound - case .blocking(let name): - if let name = name { - return L10n.Common.Controls.Timeline.Header.userBlockingWarning(name) - } else { - return L10n.Common.Controls.Timeline.Header.blockingWarning - } - case .blocked(let name): - if let name = name { - return L10n.Common.Controls.Timeline.Header.userBlockedWarning(name) - } else { - return L10n.Common.Controls.Timeline.Header.blockedWarning - } - case .suspended(let name): - if let name = name { - return L10n.Common.Controls.Timeline.Header.userSuspendedWarning(name) - } else { - return L10n.Common.Controls.Timeline.Header.suspendedWarning - } - } - } -} +//extension Item.EmptyStateHeaderAttribute.Reason { +// var iconImage: UIImage? { +// switch self { +// case .noStatusFound, .blocking, .blocked: +// return UIImage(systemName: "nosign", withConfiguration: UIImage.SymbolConfiguration(pointSize: 64, weight: .bold))! +// case .suspended: +// return UIImage(systemName: "person.crop.circle.badge.xmark", withConfiguration: UIImage.SymbolConfiguration(pointSize: 64, weight: .bold))! +// } +// } +// +// var message: String { +// switch self { +// case .noStatusFound: +// return L10n.Common.Controls.Timeline.Header.noStatusFound +// case .blocking(let name): +// if let name = name { +// return L10n.Common.Controls.Timeline.Header.userBlockingWarning(name) +// } else { +// return L10n.Common.Controls.Timeline.Header.blockingWarning +// } +// case .blocked(let name): +// if let name = name { +// return L10n.Common.Controls.Timeline.Header.userBlockedWarning(name) +// } else { +// return L10n.Common.Controls.Timeline.Header.blockedWarning +// } +// case .suspended(let name): +// if let name = name { +// return L10n.Common.Controls.Timeline.Header.userSuspendedWarning(name) +// } else { +// return L10n.Common.Controls.Timeline.Header.suspendedWarning +// } +// } +// } +//} -#if DEBUG && canImport(SwiftUI) -import SwiftUI - -struct TimelineHeaderView_Previews: PreviewProvider { - static var previews: some View { - Group { - UIViewPreview(width: 375) { - let serverSectionHeaderView = TimelineHeaderView() - serverSectionHeaderView.iconImageView.image = Item.EmptyStateHeaderAttribute.Reason.blocking(name: nil).iconImage - serverSectionHeaderView.messageLabel.text = Item.EmptyStateHeaderAttribute.Reason.blocking(name: nil).message - return serverSectionHeaderView - } - .previewLayout(.fixed(width: 375, height: 400)) - } - } -} -#endif +//#if DEBUG && canImport(SwiftUI) +//import SwiftUI +// +//struct TimelineHeaderView_Previews: PreviewProvider { +// static var previews: some View { +// Group { +// UIViewPreview(width: 375) { +// let serverSectionHeaderView = TimelineHeaderView() +// serverSectionHeaderView.iconImageView.image = Item.EmptyStateHeaderAttribute.Reason.blocking(name: nil).iconImage +// serverSectionHeaderView.messageLabel.text = Item.EmptyStateHeaderAttribute.Reason.blocking(name: nil).message +// return serverSectionHeaderView +// } +// .previewLayout(.fixed(width: 375, height: 400)) +// } +// } +//} +//#endif diff --git a/Mastodon/Scene/Share/View/Content/UserView+Configuration.swift b/Mastodon/Scene/Share/View/Content/UserView+Configuration.swift new file mode 100644 index 000000000..3d22eedae --- /dev/null +++ b/Mastodon/Scene/Share/View/Content/UserView+Configuration.swift @@ -0,0 +1,49 @@ +// +// UserView+Configuration.swift +// Mastodon +// +// Created by MainasuK on 2022-1-19. +// + +import UIKit +import Combine +import MastodonUI +import CoreDataStack +import MastodonLocalization +import MastodonMeta +import Meta + +extension UserView { + public func configure(user: MastodonUser) { + Publishers.CombineLatest( + user.publisher(for: \.avatar), + UserDefaults.shared.publisher(for: \.preferredStaticAvatar) + ) + .map { _ in user.avatarImageURL() } + .assign(to: \.authorAvatarImageURL, on: viewModel) + .store(in: &disposeBag) + + // author name + Publishers.CombineLatest( + user.publisher(for: \.displayName), + user.publisher(for: \.emojis) + ) + .map { _, emojis in + do { + let content = MastodonContent(content: user.displayNameWithFallback, emojis: emojis.asDictionary) + let metaContent = try MastodonMetaContent.convert(document: content) + return metaContent + } catch { + assertionFailure(error.localizedDescription) + return PlaintextMetaContent(string: user.displayNameWithFallback) + } + } + .assign(to: \.authorName, on: viewModel) + .store(in: &disposeBag) + // author username + user.publisher(for: \.acct) + .map { $0 as String? } + .assign(to: \.authorUsername, on: viewModel) + .store(in: &disposeBag) + } +} diff --git a/Mastodon/Scene/Share/View/ImageView/AvatarImageView.swift b/Mastodon/Scene/Share/View/ImageView/AvatarImageView.swift deleted file mode 100644 index 0b3f2a8f4..000000000 --- a/Mastodon/Scene/Share/View/ImageView/AvatarImageView.swift +++ /dev/null @@ -1,11 +0,0 @@ -// -// AvatarImageView.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-7-21. -// - -import UIKit -import FLAnimatedImage - -class AvatarImageView: FLAnimatedImageView { } diff --git a/Mastodon/Scene/Share/View/TableviewCell/PollOptionTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/PollOptionTableViewCell.swift deleted file mode 100644 index 16b39feb5..000000000 --- a/Mastodon/Scene/Share/View/TableviewCell/PollOptionTableViewCell.swift +++ /dev/null @@ -1,151 +0,0 @@ -// -// PollOptionTableViewCell.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-2-25. -// - -import UIKit -import Combine - -final class PollOptionTableViewCell: UITableViewCell { - - static let height: CGFloat = PollOptionView.height - - var disposeBag = Set() - - let pollOptionView = PollOptionView() - var attribute: PollItem.Attribute? - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - - override func setSelected(_ selected: Bool, animated: Bool) { - super.setSelected(selected, animated: animated) - - guard let voteState = attribute?.voteState else { return } - switch voteState { - case .hidden: - let color = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor - pollOptionView.roundedBackgroundView.backgroundColor = isHighlighted ? color.withAlphaComponent(0.8) : color - case .reveal: - break - } - } - - override func setHighlighted(_ highlighted: Bool, animated: Bool) { - super.setHighlighted(highlighted, animated: animated) - - guard let voteState = attribute?.voteState else { return } - switch voteState { - case .hidden: - let color = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor - pollOptionView.roundedBackgroundView.backgroundColor = isHighlighted ? color.withAlphaComponent(0.8) : color - case .reveal: - break - } - } - -} - -extension PollOptionTableViewCell { - - private func _init() { - selectionStyle = .none - backgroundColor = .clear - pollOptionView.optionTextField.isUserInteractionEnabled = false - - pollOptionView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(pollOptionView) - NSLayoutConstraint.activate([ - pollOptionView.topAnchor.constraint(equalTo: contentView.topAnchor), - pollOptionView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - pollOptionView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - pollOptionView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - ]) - } - - func updateTextAppearance() { - guard let voteState = attribute?.voteState else { - pollOptionView.optionTextField.textColor = Asset.Colors.Label.primary.color - pollOptionView.optionTextField.layer.removeShadow() - return - } - - switch voteState { - case .hidden: - pollOptionView.optionTextField.textColor = Asset.Colors.Label.primary.color - pollOptionView.optionTextField.layer.removeShadow() - case .reveal(_, let percentage, _): - if CGFloat(percentage) * pollOptionView.voteProgressStripView.frame.width > pollOptionView.optionLabelMiddlePaddingView.frame.minX { - pollOptionView.optionTextField.textColor = .white - pollOptionView.optionTextField.layer.setupShadow(x: 0, y: 0, blur: 4, spread: 0) - } else { - pollOptionView.optionTextField.textColor = Asset.Colors.Label.primary.color - pollOptionView.optionTextField.layer.removeShadow() - } - - if CGFloat(percentage) * pollOptionView.voteProgressStripView.frame.width > pollOptionView.optionLabelMiddlePaddingView.frame.maxX { - pollOptionView.optionPercentageLabel.textColor = .white - pollOptionView.optionPercentageLabel.layer.setupShadow(x: 0, y: 0, blur: 4, spread: 0) - } else { - pollOptionView.optionPercentageLabel.textColor = Asset.Colors.Label.primary.color - pollOptionView.optionPercentageLabel.layer.removeShadow() - } - } - } - - override func layoutSubviews() { - super.layoutSubviews() - updateTextAppearance() - } - -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct PollTableViewCell_Previews: PreviewProvider { - - static var controls: some View { - Group { - UIViewPreview() { - PollOptionTableViewCell() - } - .previewLayout(.fixed(width: 375, height: 44 + 10)) - UIViewPreview() { - let cell = PollOptionTableViewCell() - PollSection.configure(cell: cell, selectState: .off) - return cell - } - .previewLayout(.fixed(width: 375, height: 44 + 10)) - UIViewPreview() { - let cell = PollOptionTableViewCell() - PollSection.configure(cell: cell, selectState: .on) - return cell - } - .previewLayout(.fixed(width: 375, height: 44 + 10)) - } - .background(Color(.systemBackground)) - } - - static var previews: some View { - Group { - controls - .colorScheme(.light) - controls - .colorScheme(.dark) - } - } - -} - -#endif - diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift new file mode 100644 index 000000000..87c01b189 --- /dev/null +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift @@ -0,0 +1,57 @@ +// +// StatusTableViewCell+ViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-1-12. +// + +import UIKit +import CoreDataStack + +extension StatusTableViewCell { + final class ViewModel { + let value: Value + + init(value: Value) { + self.value = value + } + + enum Value { + case feed(Feed) + case status(Status) + } + } +} + +extension StatusTableViewCell { + + func configure( + tableView: UITableView, + viewModel: ViewModel, + delegate: StatusTableViewCellDelegate? + ) { + if statusView.frame == .zero { + // set status view width + statusView.frame.size.width = tableView.frame.width + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") + } + + switch viewModel.value { + case .feed(let feed): + statusView.configure(feed: feed) + + feed.publisher(for: \.hasMore) + .sink { [weak self] hasMore in + guard let self = self else { return } + self.separatorLine.isHidden = hasMore + } + .store(in: &disposeBag) + + case .status(let status): + statusView.configure(status: status) + } + + self.delegate = delegate + } + +} diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift index 38c86c112..aa8da714b 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift @@ -7,98 +7,40 @@ import os.log import UIKit -import AVKit import Combine -import CoreData -import CoreDataStack -import Meta -import MetaTextKit +import MastodonAsset +import MastodonLocalization +import MastodonUI -protocol StatusTableViewCellDelegate: AnyObject { - var context: AppContext! { get } - var managedObjectContext: NSManagedObjectContext { get } +final class StatusTableViewCell: UITableViewCell { - func parent() -> UIViewController - var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { get } - - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, headerInfoLabelDidPressed label: UILabel) - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, pollVoteButtonPressed button: UIButton) - func statusTableViewCell(_ cell: StatusTableViewCell, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) - - func statusTableViewCell(_ cell: StatusTableViewCell, mosaicImageViewContainer: MosaicImageViewContainer, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) - func statusTableViewCell(_ cell: StatusTableViewCell, mosaicImageViewContainer: MosaicImageViewContainer, didTapImageView imageView: UIImageView, atIndex index: Int) - - func statusTableViewCell(_ cell: StatusTableViewCell, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) - func statusTableViewCell(_ cell: StatusTableViewCell, playerViewControllerDidPressed playerViewController: AVPlayerViewController) - - func statusTableViewCell(_ cell: StatusTableViewCell, actionToolbarContainer: ActionToolbarContainer, replyButtonDidPressed sender: UIButton) - func statusTableViewCell(_ cell: StatusTableViewCell, actionToolbarContainer: ActionToolbarContainer, reblogButtonDidPressed sender: UIButton) - func statusTableViewCell(_ cell: StatusTableViewCell, actionToolbarContainer: ActionToolbarContainer, likeButtonDidPressed sender: UIButton) - - func statusTableViewCell(_ cell: StatusTableViewCell, pollTableView: PollTableView, didSelectRowAt indexPath: IndexPath) -} - -extension StatusTableViewCellDelegate { - func statusTableViewCell(_ cell: StatusTableViewCell, playerViewControllerDidPressed playerViewController: AVPlayerViewController) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - playerViewController.showsPlaybackControls.toggle() - } -} - -final class StatusTableViewCell: UITableViewCell, StatusCell { + let logger = Logger(subsystem: "StatusTableViewCell", category: "View") - static let bottomPaddingHeight: CGFloat = 10 - weak var delegate: StatusTableViewCellDelegate? - var disposeBag = Set() - var pollCountdownSubscription: AnyCancellable? - var observations = Set() - + let statusView = StatusView() - let threadMetaStackView = UIStackView() - let threadMetaView = ThreadMetaView() let separatorLine = UIView.separatorLine - - var separatorLineToEdgeLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToEdgeTrailingLayoutConstraint: NSLayoutConstraint! - - var separatorLineToMarginLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToMarginTrailingLayoutConstraint: NSLayoutConstraint! - - var isFiltered: Bool = false { - didSet { - configure(isFiltered: isFiltered) - } - } - - let filteredLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.secondary.color - label.text = L10n.Common.Controls.Timeline.filtered - label.font = .preferredFont(forTextStyle: .body) - return label - }() +// var isFiltered: Bool = false { +// didSet { +// configure(isFiltered: isFiltered) +// } +// } +// +// let filteredLabel: UILabel = { +// let label = UILabel() +// label.textColor = Asset.Colors.Label.secondary.color +// label.text = L10n.Common.Controls.Timeline.filtered +// label.font = .preferredFont(forTextStyle: .body) +// return label +// }() +// override func prepareForReuse() { super.prepareForReuse() - selectionStyle = .default - isFiltered = false - statusView.statusMosaicImageViewContainer.resetImageTask() - statusView.contentMetaText.textView.isSelectable = false - statusView.updateContentWarningDisplay(isHidden: true, animated: false) - statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isUserInteractionEnabled = true - statusView.pollTableView.dataSource = nil - statusView.playerContainerView.reset() - statusView.playerContainerView.contentWarningOverlayView.isUserInteractionEnabled = true - statusView.playerContainerView.isHidden = true - threadMetaView.isHidden = true + disposeBag.removeAll() - observations.removeAll() - isAccessibilityElement = false // reset behavior + statusView.prepareForReuse() } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { @@ -123,253 +65,262 @@ extension StatusTableViewCell { statusView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(statusView) NSLayoutConstraint.activate([ - statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 20), - statusView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - contentView.readableContentGuide.trailingAnchor.constraint(equalTo: statusView.trailingAnchor), + statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), + statusView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + statusView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + statusView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), ]) - - threadMetaStackView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(threadMetaStackView) - NSLayoutConstraint.activate([ - threadMetaStackView.topAnchor.constraint(equalTo: statusView.bottomAnchor), - threadMetaStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - threadMetaStackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), - threadMetaStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - ]) - threadMetaStackView.addArrangedSubview(threadMetaView) + statusView.setup(style: .inline) separatorLine.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(separatorLine) - separatorLineToEdgeLeadingLayoutConstraint = separatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) - separatorLineToEdgeTrailingLayoutConstraint = separatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor) - separatorLineToMarginLeadingLayoutConstraint = separatorLine.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor) - separatorLineToMarginTrailingLayoutConstraint = separatorLine.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor) NSLayoutConstraint.activate([ + separatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + separatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)), + separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.required - 1), ]) - resetSeparatorLineLayout() - - filteredLabel.translatesAutoresizingMaskIntoConstraints = false - addSubview(filteredLabel) - NSLayoutConstraint.activate([ - filteredLabel.centerXAnchor.constraint(equalTo: centerXAnchor), - filteredLabel.centerYAnchor.constraint(equalTo: centerYAnchor), - ]) - filteredLabel.isHidden = true - + statusView.delegate = self - statusView.pollTableView.delegate = self - statusView.statusMosaicImageViewContainer.delegate = self - statusView.actionToolbarContainer.delegate = self - - // default hidden - threadMetaView.isHidden = true +// statusView.translatesAutoresizingMaskIntoConstraints = false +// contentView.addSubview(statusView) +// NSLayoutConstraint.activate([ +// statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 20), +// statusView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), +// contentView.readableContentGuide.trailingAnchor.constraint(equalTo: statusView.trailingAnchor), +// ]) +// +// threadMetaStackView.translatesAutoresizingMaskIntoConstraints = false +// contentView.addSubview(threadMetaStackView) +// NSLayoutConstraint.activate([ +// threadMetaStackView.topAnchor.constraint(equalTo: statusView.bottomAnchor), +// threadMetaStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), +// threadMetaStackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), +// threadMetaStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), +// ]) +// threadMetaStackView.addArrangedSubview(threadMetaView) +// +// filteredLabel.translatesAutoresizingMaskIntoConstraints = false +// addSubview(filteredLabel) +// NSLayoutConstraint.activate([ +// filteredLabel.centerXAnchor.constraint(equalTo: centerXAnchor), +// filteredLabel.centerYAnchor.constraint(equalTo: centerYAnchor), +// ]) +// filteredLabel.isHidden = true +// +// statusView.delegate = self +// statusView.pollTableView.delegate = self +// statusView.statusMosaicImageViewContainer.delegate = self +// statusView.actionToolbarContainer.delegate = self +// +// // default hidden +// threadMetaView.isHidden = true } - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - resetSeparatorLineLayout() - } - - private func configure(isFiltered: Bool) { - statusView.alpha = isFiltered ? 0 : 1 - threadMetaView.alpha = isFiltered ? 0 : 1 - filteredLabel.isHidden = !isFiltered - isUserInteractionEnabled = !isFiltered - } +// override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { +// super.traitCollectionDidChange(previousTraitCollection) +// +// resetSeparatorLineLayout() +// } +// +// private func configure(isFiltered: Bool) { +// statusView.alpha = isFiltered ? 0 : 1 +// threadMetaView.alpha = isFiltered ? 0 : 1 +// filteredLabel.isHidden = !isFiltered +// isUserInteractionEnabled = !isFiltered +// } } -extension StatusTableViewCell { - - private func resetSeparatorLineLayout() { - separatorLineToEdgeLeadingLayoutConstraint.isActive = false - separatorLineToEdgeTrailingLayoutConstraint.isActive = false - separatorLineToMarginLeadingLayoutConstraint.isActive = false - separatorLineToMarginTrailingLayoutConstraint.isActive = false - - if traitCollection.userInterfaceIdiom == .phone { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeLeadingLayoutConstraint, - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - if traitCollection.horizontalSizeClass == .compact { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeLeadingLayoutConstraint, - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - // to margin - NSLayoutConstraint.activate([ - separatorLineToMarginLeadingLayoutConstraint, - separatorLineToMarginTrailingLayoutConstraint, - ]) - } - } - } +//extension StatusTableViewCell { +// +// private func resetSeparatorLineLayout() { +// separatorLineToEdgeLeadingLayoutConstraint.isActive = false +// separatorLineToEdgeTrailingLayoutConstraint.isActive = false +// separatorLineToMarginLeadingLayoutConstraint.isActive = false +// separatorLineToMarginTrailingLayoutConstraint.isActive = false +// +// if traitCollection.userInterfaceIdiom == .phone { +// // to edge +// NSLayoutConstraint.activate([ +// separatorLineToEdgeLeadingLayoutConstraint, +// separatorLineToEdgeTrailingLayoutConstraint, +// ]) +// } else { +// if traitCollection.horizontalSizeClass == .compact { +// // to edge +// NSLayoutConstraint.activate([ +// separatorLineToEdgeLeadingLayoutConstraint, +// separatorLineToEdgeTrailingLayoutConstraint, +// ]) +// } else { +// // to margin +// NSLayoutConstraint.activate([ +// separatorLineToMarginLeadingLayoutConstraint, +// separatorLineToMarginTrailingLayoutConstraint, +// ]) +// } +// } +// } +// +//} +// +//// MARK: - MosaicImageViewContainerPresentable +//extension StatusTableViewCell: MosaicImageViewContainerPresentable { +// +// var mosaicImageViewContainer: MosaicImageViewContainer { +// return statusView.statusMosaicImageViewContainer +// } +// +// var isRevealing: Bool { +// return statusView.isRevealing +// } +// +//} +// +//// MARK: - UITableViewDelegate +//extension StatusTableViewCell: UITableViewDelegate { +// +// func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool { +// if tableView === statusView.pollTableView, let diffableDataSource = statusView.pollTableViewDataSource { +// var pollID: String? +// defer { +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s. PollID: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription, pollID ?? "") +// } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath), +// case let .option(objectID, _) = item, +// let option = delegate?.managedObjectContext.object(with: objectID) as? PollOption else { +// return false +// } +// pollID = option.poll.id +// return !option.poll.expired +// } else { +// assertionFailure() +// return true +// } +// } +// +// func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { +// if tableView === statusView.pollTableView, let diffableDataSource = statusView.pollTableViewDataSource { +// var pollID: String? +// defer { +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s. PollID: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription, pollID ?? "") +// } +// +// guard let context = delegate?.context else { return nil } +// guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return nil } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath), +// case let .option(objectID, _) = item, +// let option = delegate?.managedObjectContext.object(with: objectID) as? PollOption else { +// return nil +// } +// let poll = option.poll +// pollID = poll.id +// +// // disallow select when: poll expired OR user voted remote OR user voted local +// let userID = activeMastodonAuthenticationBox.userID +// let didVotedRemote = (option.poll.votedBy ?? Set()).contains(where: { $0.id == userID }) +// let votedOptions = poll.options.filter { option in +// (option.votedBy ?? Set()).map { $0.id }.contains(userID) +// } +// let didVotedLocal = !votedOptions.isEmpty +// +// if poll.multiple { +// guard !option.poll.expired, !didVotedRemote else { +// return nil +// } +// } else { +// guard !option.poll.expired, !didVotedRemote, !didVotedLocal else { +// return nil +// } +// } +// +// return indexPath +// } else { +// assertionFailure() +// return indexPath +// } +// } +// +// +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// if tableView === statusView.pollTableView { +// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription) +// delegate?.statusTableViewCell(self, pollTableView: statusView.pollTableView, didSelectRowAt: indexPath) +// } else { +// assertionFailure() +// } +// } +// +//} -} -// MARK: - MosaicImageViewContainerPresentable -extension StatusTableViewCell: MosaicImageViewContainerPresentable { - - var mosaicImageViewContainer: MosaicImageViewContainer { - return statusView.statusMosaicImageViewContainer - } - - var isRevealing: Bool { - return statusView.isRevealing - } - -} - -// MARK: - UITableViewDelegate -extension StatusTableViewCell: UITableViewDelegate { - - func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool { - if tableView === statusView.pollTableView, let diffableDataSource = statusView.pollTableViewDataSource { - var pollID: String? - defer { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s. PollID: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription, pollID ?? "") - } - guard let item = diffableDataSource.itemIdentifier(for: indexPath), - case let .option(objectID, _) = item, - let option = delegate?.managedObjectContext.object(with: objectID) as? PollOption else { - return false - } - pollID = option.poll.id - return !option.poll.expired - } else { - assertionFailure() - return true - } - } - - func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { - if tableView === statusView.pollTableView, let diffableDataSource = statusView.pollTableViewDataSource { - var pollID: String? - defer { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s. PollID: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription, pollID ?? "") - } - - guard let context = delegate?.context else { return nil } - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return nil } - guard let item = diffableDataSource.itemIdentifier(for: indexPath), - case let .option(objectID, _) = item, - let option = delegate?.managedObjectContext.object(with: objectID) as? PollOption else { - return nil - } - let poll = option.poll - pollID = poll.id - - // disallow select when: poll expired OR user voted remote OR user voted local - let userID = activeMastodonAuthenticationBox.userID - let didVotedRemote = (option.poll.votedBy ?? Set()).contains(where: { $0.id == userID }) - let votedOptions = poll.options.filter { option in - (option.votedBy ?? Set()).map { $0.id }.contains(userID) - } - let didVotedLocal = !votedOptions.isEmpty - - if poll.multiple { - guard !option.poll.expired, !didVotedRemote else { - return nil - } - } else { - guard !option.poll.expired, !didVotedRemote, !didVotedLocal else { - return nil - } - } - - return indexPath - } else { - assertionFailure() - return indexPath - } - } - - - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - if tableView === statusView.pollTableView { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription) - delegate?.statusTableViewCell(self, pollTableView: statusView.pollTableView, didSelectRowAt: indexPath) - } else { - assertionFailure() - } - } - -} +// MARK: - StatusViewContainerTableViewCell +extension StatusTableViewCell: StatusViewContainerTableViewCell { } // MARK: - StatusViewDelegate -extension StatusTableViewCell: StatusViewDelegate { - - func statusView(_ statusView: StatusView, headerInfoLabelDidPressed label: UILabel) { - delegate?.statusTableViewCell(self, statusView: statusView, headerInfoLabelDidPressed: label) - } +extension StatusTableViewCell: StatusViewDelegate { } - func statusView(_ statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) { - delegate?.statusTableViewCell(self, statusView: statusView, avatarImageViewDidPressed: imageView) - } - - func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { - delegate?.statusTableViewCell(self, statusView: statusView, revealContentWarningButtonDidPressed: button) - } - - func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - delegate?.statusTableViewCell(self, statusView: statusView, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } - - func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - delegate?.statusTableViewCell(self, playerContainerView: playerContainerView, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } - - func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) { - delegate?.statusTableViewCell(self, statusView: statusView, pollVoteButtonPressed: button) - } - func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { - delegate?.statusTableViewCell(self, statusView: statusView, metaText: metaText, didSelectMeta: meta) - } - -} - -// MARK: - MosaicImageViewDelegate -extension StatusTableViewCell: MosaicImageViewContainerDelegate { - - func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, didTapImageView imageView: UIImageView, atIndex index: Int) { - delegate?.statusTableViewCell(self, mosaicImageViewContainer: mosaicImageViewContainer, didTapImageView: imageView, atIndex: index) - } - - func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - delegate?.statusTableViewCell(self, mosaicImageViewContainer: mosaicImageViewContainer, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } - -} - -// MARK: - ActionToolbarContainerDelegate -extension StatusTableViewCell: ActionToolbarContainerDelegate { - - func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, replayButtonDidPressed sender: UIButton) { - delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, replyButtonDidPressed: sender) - } - - func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, reblogButtonDidPressed sender: UIButton) { - delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, reblogButtonDidPressed: sender) - } - - func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, starButtonDidPressed sender: UIButton) { - delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, likeButtonDidPressed: sender) - } - -} - -extension StatusTableViewCell { - override var accessibilityActivationPoint: CGPoint { - get { return .zero } - set { } - } -} +//// MARK: - StatusViewDelegate +//extension StatusTableViewCell: StatusViewDelegate { +// +// func statusView(_ statusView: StatusView, headerInfoLabelDidPressed label: UILabel) { +// delegate?.statusTableViewCell(self, statusView: statusView, headerInfoLabelDidPressed: label) +// } +// +// func statusView(_ statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) { +// delegate?.statusTableViewCell(self, statusView: statusView, avatarImageViewDidPressed: imageView) +// } +// +// func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { +// delegate?.statusTableViewCell(self, statusView: statusView, revealContentWarningButtonDidPressed: button) +// } +// +// func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { +// delegate?.statusTableViewCell(self, statusView: statusView, contentWarningOverlayViewDidPressed: contentWarningOverlayView) +// } +// +// func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { +// delegate?.statusTableViewCell(self, playerContainerView: playerContainerView, contentWarningOverlayViewDidPressed: contentWarningOverlayView) +// } +// +// func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) { +// delegate?.statusTableViewCell(self, statusView: statusView, pollVoteButtonPressed: button) +// } +// +// func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { +// delegate?.statusTableViewCell(self, statusView: statusView, metaText: metaText, didSelectMeta: meta) +// } +// +//} +// +//// MARK: - MosaicImageViewDelegate +//extension StatusTableViewCell: MosaicImageViewContainerDelegate { +// +// func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, didTapImageView imageView: UIImageView, atIndex index: Int) { +// delegate?.statusTableViewCell(self, mosaicImageViewContainer: mosaicImageViewContainer, didTapImageView: imageView, atIndex: index) +// } +// +// func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { +// delegate?.statusTableViewCell(self, mosaicImageViewContainer: mosaicImageViewContainer, contentWarningOverlayViewDidPressed: contentWarningOverlayView) +// } +// +//} +// +//// MARK: - ActionToolbarContainerDelegate +//extension StatusTableViewCell: ActionToolbarContainerDelegate { +// +// func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, replayButtonDidPressed sender: UIButton) { +// delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, replyButtonDidPressed: sender) +// } +// +// func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, reblogButtonDidPressed sender: UIButton) { +// delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, reblogButtonDidPressed: sender) +// } +// +// func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, starButtonDidPressed sender: UIButton) { +// delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, likeButtonDidPressed: sender) +// } +// +//} diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift new file mode 100644 index 000000000..dcbf41f4d --- /dev/null +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift @@ -0,0 +1,74 @@ +// +// StatusViewTableViewCellDelegate.swift +// Mastodon +// +// Created by MainasuK on 2022-1-13. +// + +import UIKit +import MetaTextKit +import MastodonUI + +// sourcery: protocolName = "StatusViewDelegate" +// sourcery: replaceOf = "statusView(statusView" +// sourcery: replaceWith = "delegate?.tableViewCell(self, statusView: statusView" +protocol StatusViewContainerTableViewCell: UITableViewCell, AutoGenerateProtocolRelayDelegate { + var delegate: StatusTableViewCellDelegate? { get } + var statusView: StatusView { get } +} + +// MARK: - AutoGenerateProtocolDelegate +// sourcery: protocolName = "StatusViewDelegate" +// sourcery: replaceOf = "statusView(_" +// sourcery: replaceWith = "func tableViewCell(_ cell: UITableViewCell," +protocol StatusTableViewCellDelegate: AnyObject, AutoGenerateProtocolDelegate { + // sourcery:inline:StatusTableViewCellDelegate.AutoGenerateProtocolDelegate + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, headerDidPressed header: UIView) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, pollTableView tableView: UITableView, didSelectRowAt indexPath: IndexPath) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, pollVoteButtonPressed button: UIButton) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) + // sourcery:end +} + + +// MARK: - AutoGenerateProtocolDelegate +// Protocol Extension +extension StatusViewDelegate where Self: StatusViewContainerTableViewCell { + // sourcery:inline:StatusViewContainerTableViewCell.AutoGenerateProtocolRelayDelegate + func statusView(_ statusView: StatusView, headerDidPressed header: UIView) { + delegate?.tableViewCell(self, statusView: statusView, headerDidPressed: header) + } + + func statusView(_ statusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) { + delegate?.tableViewCell(self, statusView: statusView, authorAvatarButtonDidPressed: button) + } + + func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { + delegate?.tableViewCell(self, statusView: statusView, metaText: metaText, didSelectMeta: meta) + } + + func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) { + delegate?.tableViewCell(self, statusView: statusView, mediaGridContainerView: mediaGridContainerView, mediaView: mediaView, didSelectMediaViewAt: index) + } + + func statusView(_ statusView: StatusView, pollTableView tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + delegate?.tableViewCell(self, statusView: statusView, pollTableView: tableView, didSelectRowAt: indexPath) + } + + func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) { + delegate?.tableViewCell(self, statusView: statusView, pollVoteButtonPressed: button) + } + + func statusView(_ statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) { + delegate?.tableViewCell(self, statusView: statusView, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action) + } + + func statusView(_ statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) { + delegate?.tableViewCell(self, statusView: statusView, menuButton: button, didSelectAction: action) + } + // sourcery:end +} diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift new file mode 100644 index 000000000..d549ba1f5 --- /dev/null +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift @@ -0,0 +1,46 @@ +// +// StatusThreadRootTableViewCell+ViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import UIKit +import CoreDataStack + +extension StatusThreadRootTableViewCell { + final class ViewModel { + let value: Value + + init(value: Value) { + self.value = value + } + + enum Value { + case status(Status) + } + } +} + +extension StatusThreadRootTableViewCell { + + func configure( + tableView: UITableView, + viewModel: ViewModel, + delegate: StatusTableViewCellDelegate? + ) { + if statusView.frame == .zero { + // set status view width + statusView.frame.size.width = tableView.frame.width + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") + } + + switch viewModel.value { + case .status(let status): + statusView.configure(status: status) + } + + self.delegate = delegate + } + +} diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift new file mode 100644 index 000000000..a330161f3 --- /dev/null +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift @@ -0,0 +1,85 @@ +// +// StatusThreadRootTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import os.log +import UIKit +import Combine +import MastodonAsset +import MastodonLocalization +import MastodonUI + +final class StatusThreadRootTableViewCell: UITableViewCell { + + let logger = Logger(subsystem: "StatusTableViewCell", category: "View") + + weak var delegate: StatusTableViewCellDelegate? + var disposeBag = Set() + + let statusView = StatusView() + let separatorLine = UIView.separatorLine + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + statusView.prepareForReuse() + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + +} + +extension StatusThreadRootTableViewCell { + + private func _init() { + selectionStyle = .none + + statusView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(statusView) + NSLayoutConstraint.activate([ + statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), + statusView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + statusView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + statusView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + ]) + statusView.setup(style: .plain) + + separatorLine.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(separatorLine) + NSLayoutConstraint.activate([ + separatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + separatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.required - 1), + ]) + + statusView.delegate = self + + // a11y + statusView.contentMetaText.textView.isSelectable = true + statusView.contentMetaText.textView.isAccessibilityElement = false + } + +} + +// MARK: - StatusViewContainerTableViewCell +extension StatusThreadRootTableViewCell: StatusViewContainerTableViewCell { } + +// MARK: - StatusViewDelegate +extension StatusThreadRootTableViewCell: StatusViewDelegate { } diff --git a/Mastodon/Scene/Share/View/TableviewCell/ThreadReplyLoaderTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/ThreadReplyLoaderTableViewCell.swift index a819f301c..065a41281 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/ThreadReplyLoaderTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/ThreadReplyLoaderTableViewCell.swift @@ -8,6 +8,8 @@ import os.log import UIKit import Combine +import MastodonAsset +import MastodonLocalization protocol ThreadReplyLoaderTableViewCellDelegate: AnyObject { func threadReplyLoaderTableViewCell(_ cell: ThreadReplyLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) diff --git a/Mastodon/Scene/Share/View/TableviewCell/TimelineFooterTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/TimelineFooterTableViewCell.swift index 43dd2c6fa..a1b9fe083 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/TimelineFooterTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/TimelineFooterTableViewCell.swift @@ -6,6 +6,8 @@ // import UIKit +import MastodonAsset +import MastodonLocalization final class TimelineFooterTableViewCell: UITableViewCell { diff --git a/Mastodon/Scene/Share/View/TableviewCell/TimelineLoaderTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/TimelineLoaderTableViewCell.swift index da0b80fb4..29344eb28 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/TimelineLoaderTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/TimelineLoaderTableViewCell.swift @@ -7,6 +7,8 @@ import UIKit import Combine +import MastodonAsset +import MastodonLocalization class TimelineLoaderTableViewCell: UITableViewCell { diff --git a/Mastodon/Scene/Share/View/TableviewCell/TimelineMiddleLoaderTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/TimelineMiddleLoaderTableViewCell+ViewModel.swift new file mode 100644 index 000000000..406d2a7ec --- /dev/null +++ b/Mastodon/Scene/Share/View/TableviewCell/TimelineMiddleLoaderTableViewCell+ViewModel.swift @@ -0,0 +1,50 @@ +// +// TimelineMiddleLoaderTableViewCell+ViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import UIKit +import Combine +import CoreDataStack + +extension TimelineMiddleLoaderTableViewCell { + class ViewModel { + var disposeBag = Set() + + @Published var isFetching = false + } +} + +extension TimelineMiddleLoaderTableViewCell.ViewModel { + func bind(cell: TimelineMiddleLoaderTableViewCell) { + $isFetching + .sink { isFetching in + if isFetching { + cell.startAnimating() + } else { + cell.stopAnimating() + } + } + .store(in: &disposeBag) + } +} + + +extension TimelineMiddleLoaderTableViewCell { + func configure( + feed: Feed, + delegate: TimelineMiddleLoaderTableViewCellDelegate? + ) { + feed.publisher(for: \.isLoadingMore) + .sink { [weak self] isLoadingMore in + guard let self = self else { return } + self.viewModel.isFetching = isLoadingMore + } + .store(in: &disposeBag) + + self.delegate = delegate + } + +} diff --git a/Mastodon/Scene/Share/View/TableviewCell/TimelineMiddleLoaderTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/TimelineMiddleLoaderTableViewCell.swift index 4a0b623ef..a12920c59 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/TimelineMiddleLoaderTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/TimelineMiddleLoaderTableViewCell.swift @@ -11,13 +11,19 @@ import os.log import UIKit protocol TimelineMiddleLoaderTableViewCellDelegate: AnyObject { - func configure(cell: TimelineMiddleLoaderTableViewCell, upperTimelineStatusID: String?, timelineIndexobjectID:NSManagedObjectID?) func timelineMiddleLoaderTableViewCell(_ cell: TimelineMiddleLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) } final class TimelineMiddleLoaderTableViewCell: TimelineLoaderTableViewCell { + weak var delegate: TimelineMiddleLoaderTableViewCellDelegate? + private(set) lazy var viewModel: ViewModel = { + let viewModel = ViewModel() + viewModel.bind(cell: self) + return viewModel + }() + let topSawToothView = SawToothView() let bottomSawToothView = SawToothView() diff --git a/Mastodon/Scene/Share/View/TableviewCell/UserTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/UserTableViewCell+ViewModel.swift new file mode 100644 index 000000000..3ec85fa4a --- /dev/null +++ b/Mastodon/Scene/Share/View/TableviewCell/UserTableViewCell+ViewModel.swift @@ -0,0 +1,41 @@ +// +// UserTableViewCell+ViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-1-19. +// + +import UIKit +import CoreDataStack + +extension UserTableViewCell { + final class ViewModel { + let value: Value + + init(value: Value) { + self.value = value + } + + enum Value { + case user(MastodonUser) + // case status(Status) + } + } +} + +extension UserTableViewCell { + + func configure( + tableView: UITableView, + viewModel: ViewModel, + delegate: UserTableViewCellDelegate? + ) { + switch viewModel.value { + case .user(let user): + userView.configure(user: user) + } + + self.delegate = delegate + } + +} diff --git a/Mastodon/Scene/Share/View/TableviewCell/UserTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/UserTableViewCell.swift index 29e28415e..425226b71 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/UserTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/UserTableViewCell.swift @@ -5,13 +5,13 @@ // Created by Cirno MainasuK on 2021-11-1. // -import CoreData -import CoreDataStack -import MastodonSDK import UIKit -import MetaTextKit -import MastodonMeta -import FLAnimatedImage +import Combine +import CoreDataStack +import MastodonAsset +import MastodonLocalization +import MastodonUI +import MastodonSDK protocol UserTableViewCellDelegate: AnyObject { } @@ -19,25 +19,16 @@ final class UserTableViewCell: UITableViewCell { weak var delegate: UserTableViewCellDelegate? - let avatarImageView: AvatarImageView = { - let imageView = AvatarImageView() - imageView.tintColor = Asset.Colors.Label.primary.color - imageView.layer.cornerRadius = 4 - imageView.clipsToBounds = true - return imageView - }() - - let nameLabel = MetaLabel(style: .statusName) - - let usernameLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.secondary.color - label.font = .preferredFont(forTextStyle: .body) - return label - }() + let userView = UserView() let separatorLine = UIView.separatorLine + override func prepareForReuse() { + super.prepareForReuse() + + userView.prepareForReuse() + } + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) _init() @@ -53,79 +44,23 @@ final class UserTableViewCell: UITableViewCell { extension UserTableViewCell { private func _init() { - let containerStackView = UIStackView() - containerStackView.axis = .horizontal - containerStackView.distribution = .fill - containerStackView.spacing = 12 - containerStackView.layoutMargins = UIEdgeInsets(top: 12, left: 0, bottom: 12, right: 0) - containerStackView.isLayoutMarginsRelativeArrangement = true - containerStackView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(containerStackView) + userView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(userView) NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) + userView.topAnchor.constraint(equalTo: contentView.topAnchor), + userView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), + userView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), + userView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), ]) - avatarImageView.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(avatarImageView) - NSLayoutConstraint.activate([ - avatarImageView.widthAnchor.constraint(equalToConstant: 42).priority(.required - 1), - avatarImageView.heightAnchor.constraint(equalToConstant: 42).priority(.required - 1), - ]) - - let textStackView = UIStackView() - textStackView.axis = .vertical - textStackView.distribution = .fill - textStackView.translatesAutoresizingMaskIntoConstraints = false - nameLabel.translatesAutoresizingMaskIntoConstraints = false - textStackView.addArrangedSubview(nameLabel) - usernameLabel.translatesAutoresizingMaskIntoConstraints = false - textStackView.addArrangedSubview(usernameLabel) - usernameLabel.setContentHuggingPriority(.defaultLow - 1, for: .vertical) - - containerStackView.addArrangedSubview(textStackView) - separatorLine.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(separatorLine) NSLayoutConstraint.activate([ - separatorLine.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - separatorLine.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + separatorLine.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), + separatorLine.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)), + separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.required - 1), ]) - - - nameLabel.isUserInteractionEnabled = false - usernameLabel.isUserInteractionEnabled = false - avatarImageView.isUserInteractionEnabled = false } } - -// MARK: - AvatarStackedImageView -extension UserTableViewCell: AvatarConfigurableView { - static var configurableAvatarImageSize: CGSize { CGSize(width: 42, height: 42) } - static var configurableAvatarImageCornerRadius: CGFloat { 4 } - var configurableAvatarImageView: FLAnimatedImageView? { avatarImageView } -} - -extension UserTableViewCell { - func configure(user: MastodonUser) { - // avatar - configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: user.avatarImageURL())) - // name - let name = user.displayNameWithFallback - do { - let mastodonContent = MastodonContent(content: name, emojis: user.emojiMeta) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - nameLabel.configure(content: metaContent) - } catch { - let metaContent = PlaintextMetaContent(string: name) - nameLabel.configure(content: metaContent) - } - // username - usernameLabel.text = "@" + user.acct - } -} diff --git a/Mastodon/Scene/Share/View/ToolBar/ActionToolBarContainer.swift b/Mastodon/Scene/Share/View/ToolBar/ActionToolBarContainer.swift deleted file mode 100644 index f771f8bb2..000000000 --- a/Mastodon/Scene/Share/View/ToolBar/ActionToolBarContainer.swift +++ /dev/null @@ -1,229 +0,0 @@ -// -// ActionToolBarContainer.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/1. -// - -import os.log -import UIKit - -protocol ActionToolbarContainerDelegate: AnyObject { - func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, replayButtonDidPressed sender: UIButton) - func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, reblogButtonDidPressed sender: UIButton) - func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, starButtonDidPressed sender: UIButton) -} - - -final class ActionToolbarContainer: UIView { - - let replyButton = HighlightDimmableButton() - let reblogButton = HighlightDimmableButton() - let favoriteButton = HighlightDimmableButton() - let moreButton = HighlightDimmableButton() - - var isReblogButtonHighlight: Bool = false { - didSet { isReblogButtonHighlightStateDidChange(to: isReblogButtonHighlight) } - } - - var isFavoriteButtonHighlight: Bool = false { - didSet { isFavoriteButtonHighlightStateDidChange(to: isFavoriteButtonHighlight) } - } - - weak var delegate: ActionToolbarContainerDelegate? - - private let container = UIStackView() - private var style: Style? - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - -} - -extension ActionToolbarContainer { - - private func _init() { - container.translatesAutoresizingMaskIntoConstraints = false - addSubview(container) - NSLayoutConstraint.activate([ - container.topAnchor.constraint(equalTo: topAnchor), - container.leadingAnchor.constraint(equalTo: leadingAnchor), - trailingAnchor.constraint(equalTo: container.trailingAnchor), - bottomAnchor.constraint(equalTo: container.bottomAnchor), - ]) - - replyButton.addTarget(self, action: #selector(ActionToolbarContainer.replyButtonDidPressed(_:)), for: .touchUpInside) - reblogButton.addTarget(self, action: #selector(ActionToolbarContainer.reblogButtonDidPressed(_:)), for: .touchUpInside) - favoriteButton.addTarget(self, action: #selector(ActionToolbarContainer.favoriteButtonDidPressed(_:)), for: .touchUpInside) - } - -} - -extension ActionToolbarContainer { - - enum Style { - case inline - case plain - - var buttonTitleImagePadding: CGFloat { - switch self { - case .inline: return 4.0 - case .plain: return 0 - } - } - } - - func configure(for style: Style) { - guard needsConfigure(for: style) else { - return - } - - self.style = style - container.arrangedSubviews.forEach { subview in - container.removeArrangedSubview(subview) - subview.removeFromSuperview() - } - - let buttons = [replyButton, reblogButton, favoriteButton, moreButton] - buttons.forEach { button in - button.tintColor = Asset.Colors.Button.actionToolbar.color - button.titleLabel?.font = .monospacedDigitSystemFont(ofSize: 12, weight: .regular) - button.setTitle("", for: .normal) - button.setTitleColor(.secondaryLabel, for: .normal) - button.expandEdgeInsets = UIEdgeInsets(top: -10, left: -10, bottom: -10, right: -10) - button.setInsets(forContentPadding: .zero, imageTitlePadding: style.buttonTitleImagePadding) - } - // add more expand for menu button - moreButton.expandEdgeInsets = UIEdgeInsets(top: -10, left: -20, bottom: -10, right: -20) - - let replyImage = UIImage(systemName: "arrowshape.turn.up.left.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .ultraLight))!.withRenderingMode(.alwaysTemplate) - let reblogImage = UIImage(systemName: "arrow.2.squarepath", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .bold))!.withRenderingMode(.alwaysTemplate) - let starImage = UIImage(systemName: "star.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .bold))!.withRenderingMode(.alwaysTemplate) - let moreImage = UIImage(systemName: "ellipsis", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .bold))!.withRenderingMode(.alwaysTemplate) - - replyButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.reply - reblogButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.reblog // needs update to follow state - favoriteButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.favorite // needs update to follow state - moreButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.menu - - switch style { - case .inline: - buttons.forEach { button in - button.contentHorizontalAlignment = .leading - } - replyButton.setImage(replyImage, for: .normal) - reblogButton.setImage(reblogImage, for: .normal) - favoriteButton.setImage(starImage, for: .normal) - moreButton.setImage(moreImage, for: .normal) - - container.axis = .horizontal - container.distribution = .fill - - replyButton.translatesAutoresizingMaskIntoConstraints = false - reblogButton.translatesAutoresizingMaskIntoConstraints = false - favoriteButton.translatesAutoresizingMaskIntoConstraints = false - moreButton.translatesAutoresizingMaskIntoConstraints = false - container.addArrangedSubview(replyButton) - container.addArrangedSubview(reblogButton) - container.addArrangedSubview(favoriteButton) - container.addArrangedSubview(moreButton) - NSLayoutConstraint.activate([ - replyButton.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh), - replyButton.heightAnchor.constraint(equalTo: reblogButton.heightAnchor).priority(.defaultHigh), - replyButton.heightAnchor.constraint(equalTo: favoriteButton.heightAnchor).priority(.defaultHigh), - replyButton.heightAnchor.constraint(equalTo: moreButton.heightAnchor).priority(.defaultHigh), - replyButton.widthAnchor.constraint(equalTo: reblogButton.widthAnchor).priority(.defaultHigh), - replyButton.widthAnchor.constraint(equalTo: favoriteButton.widthAnchor).priority(.defaultHigh), - ]) - moreButton.setContentHuggingPriority(.defaultHigh, for: .horizontal) - moreButton.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal) - - case .plain: - buttons.forEach { button in - button.contentHorizontalAlignment = .center - } - replyButton.setImage(replyImage, for: .normal) - reblogButton.setImage(reblogImage, for: .normal) - favoriteButton.setImage(starImage, for: .normal) - - container.axis = .horizontal - container.spacing = 8 - container.distribution = .fillEqually - - container.addArrangedSubview(replyButton) - container.addArrangedSubview(reblogButton) - container.addArrangedSubview(favoriteButton) - } - } - - private func needsConfigure(for style: Style) -> Bool { - guard let oldStyle = self.style else { return true } - return oldStyle != style - } - - private func isReblogButtonHighlightStateDidChange(to isHighlight: Bool) { - let tintColor = isHighlight ? Asset.Colors.successGreen.color : Asset.Colors.Button.actionToolbar.color - reblogButton.tintColor = tintColor - reblogButton.setTitleColor(tintColor, for: .normal) - reblogButton.setTitleColor(tintColor, for: .highlighted) - } - - private func isFavoriteButtonHighlightStateDidChange(to isHighlight: Bool) { - let tintColor = isHighlight ? Asset.Colors.systemOrange.color : Asset.Colors.Button.actionToolbar.color - favoriteButton.tintColor = tintColor - favoriteButton.setTitleColor(tintColor, for: .normal) - favoriteButton.setTitleColor(tintColor, for: .highlighted) - } -} - -extension ActionToolbarContainer { - - @objc private func replyButtonDidPressed(_ sender: UIButton) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.actionToolbarContainer(self, replayButtonDidPressed: sender) - } - - @objc private func reblogButtonDidPressed(_ sender: UIButton) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.actionToolbarContainer(self, reblogButtonDidPressed: sender) - } - - @objc private func favoriteButtonDidPressed(_ sender: UIButton) { - os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.actionToolbarContainer(self, starButtonDidPressed: sender) - } - -} - -extension ActionToolbarContainer { - - override var accessibilityElements: [Any]? { - get { [replyButton, reblogButton, favoriteButton, moreButton] } - set { } - } -} - -#if DEBUG -import SwiftUI - -struct ActionToolbarContainer_Previews: PreviewProvider { - static var previews: some View { - Group { - UIViewPreview(width: 300) { - let toolbar = ActionToolbarContainer() - toolbar.configure(for: .inline) - return toolbar - } - .previewLayout(.fixed(width: 300, height: 44)) - .previewDisplayName("Inline") - } - } -} -#endif diff --git a/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift b/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift index c31802211..bec9ab124 100644 --- a/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift +++ b/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift @@ -11,107 +11,108 @@ import UIKit class AudioContainerViewModel { - static func configure( - cell: StatusCell, - audioAttachment: Attachment, - audioService: AudioPlaybackService - ) { - guard let duration = audioAttachment.meta?.original?.duration else { return } - let audioView = cell.statusView.audioView - audioView.timeLabel.text = duration.asString(style: .positional) - - audioView.playButton.publisher(for: .touchUpInside) - .sink { [weak audioService] _ in - guard let audioService = audioService else { return } - if audioAttachment === audioService.attachment { - if audioService.isPlaying() { - audioService.pause() - } else { - audioService.resume() - } - if audioService.currentTimeSubject.value == 0 { - audioService.playAudio(audioAttachment: audioAttachment) - } - } else { - audioService.playAudio(audioAttachment: audioAttachment) - } - } - .store(in: &cell.disposeBag) - audioView.slider.maximumValue = Float(duration) - audioView.slider.publisher(for: .valueChanged) - .sink { [weak audioService] slider in - guard let audioService = audioService else { return } - let slider = slider as! UISlider - let time = TimeInterval(slider.value) - audioService.seekToTime(time: time) - } - .store(in: &cell.disposeBag) - observePlayer(cell: cell, audioAttachment: audioAttachment, audioService: audioService) - if audioAttachment != audioService.attachment { - configureAudioView(audioView: audioView, audioAttachment: audioAttachment, playbackState: .stopped) - } - } - - static func observePlayer( - cell: StatusCell, - audioAttachment: Attachment, - audioService: AudioPlaybackService - ) { - let audioView = cell.statusView.audioView - var lastCurrentTimeSubject: TimeInterval? - audioService.currentTimeSubject - .throttle(for: 0.008, scheduler: DispatchQueue.main, latest: true) - .compactMap { [weak audioService] time -> TimeInterval? in - defer { - lastCurrentTimeSubject = time - } - guard audioAttachment === audioService?.attachment else { return nil } - // guard let duration = audioAttachment.meta?.original?.duration else { return nil } - - if let lastCurrentTimeSubject = lastCurrentTimeSubject, time != 0.0 { - guard abs(time - lastCurrentTimeSubject) < 0.5 else { return nil } // debounce - } - - guard !audioView.slider.isTracking else { return nil } - return TimeInterval(time) - } - .sink(receiveValue: { time in - audioView.timeLabel.text = time.asString(style: .positional) - audioView.slider.setValue(Float(time), animated: true) - }) - .store(in: &cell.disposeBag) - audioService.playbackState - .receive(on: DispatchQueue.main) - .sink(receiveValue: { playbackState in - if audioAttachment === audioService.attachment { - configureAudioView(audioView: audioView, audioAttachment: audioAttachment, playbackState: playbackState) - } else { - configureAudioView(audioView: audioView, audioAttachment: audioAttachment, playbackState: .stopped) - } - }) - .store(in: &cell.disposeBag) - } +// static func configure( +// cell: StatusCell, +// audioAttachment: Attachment, +// audioService: AudioPlaybackService +// ) { +// guard let duration = audioAttachment.meta?.original?.duration else { return } +// let audioView = cell.statusView.audioView +// audioView.timeLabel.text = duration.asString(style: .positional) +// +// audioView.playButton.publisher(for: .touchUpInside) +// .sink { [weak audioService] _ in +// guard let audioService = audioService else { return } +// if audioAttachment === audioService.attachment { +// if audioService.isPlaying() { +// audioService.pause() +// } else { +// audioService.resume() +// } +// if audioService.currentTimeSubject.value == 0 { +// audioService.playAudio(audioAttachment: audioAttachment) +// } +// } else { +// audioService.playAudio(audioAttachment: audioAttachment) +// } +// } +// .store(in: &cell.disposeBag) +// audioView.slider.maximumValue = Float(duration) +// audioView.slider.publisher(for: .valueChanged) +// .sink { [weak audioService] slider in +// guard let audioService = audioService else { return } +// let slider = slider as! UISlider +// let time = TimeInterval(slider.value) +// audioService.seekToTime(time: time) +// } +// .store(in: &cell.disposeBag) +// observePlayer(cell: cell, audioAttachment: audioAttachment, audioService: audioService) +// if audioAttachment != audioService.attachment { +// configureAudioView(audioView: audioView, audioAttachment: audioAttachment, playbackState: .stopped) +// } +// } +// +// static func observePlayer( +// cell: StatusCell, +// audioAttachment: Attachment, +// audioService: AudioPlaybackService +// ) { +// let audioView = cell.statusView.audioView +// var lastCurrentTimeSubject: TimeInterval? +// audioService.currentTimeSubject +// .throttle(for: 0.008, scheduler: DispatchQueue.main, latest: true) +// .compactMap { [weak audioService] time -> TimeInterval? in +// defer { +// lastCurrentTimeSubject = time +// } +// guard audioAttachment === audioService?.attachment else { return nil } +// // guard let duration = audioAttachment.meta?.original?.duration else { return nil } +// +// if let lastCurrentTimeSubject = lastCurrentTimeSubject, time != 0.0 { +// guard abs(time - lastCurrentTimeSubject) < 0.5 else { return nil } // debounce +// } +// +// guard !audioView.slider.isTracking else { return nil } +// return TimeInterval(time) +// } +// .sink(receiveValue: { time in +// audioView.timeLabel.text = time.asString(style: .positional) +// audioView.slider.setValue(Float(time), animated: true) +// }) +// .store(in: &cell.disposeBag) +// audioService.playbackState +// .receive(on: DispatchQueue.main) +// .sink(receiveValue: { playbackState in +// if audioAttachment === audioService.attachment { +// configureAudioView(audioView: audioView, audioAttachment: audioAttachment, playbackState: playbackState) +// } else { +// configureAudioView(audioView: audioView, audioAttachment: audioAttachment, playbackState: .stopped) +// } +// }) +// .store(in: &cell.disposeBag) +// } static func configureAudioView( audioView: AudioContainerView, - audioAttachment: Attachment, + audioAttachment: MastodonAttachment, playbackState: PlaybackState ) { - switch playbackState { - case .stopped: - audioView.playButton.isSelected = false - audioView.slider.isUserInteractionEnabled = false - audioView.slider.setValue(0, animated: false) - case .paused: - audioView.playButton.isSelected = false - audioView.slider.isUserInteractionEnabled = true - case .playing, .readyToPlay: - audioView.playButton.isSelected = true - audioView.slider.isUserInteractionEnabled = true - default: - assertionFailure() - } - guard let duration = audioAttachment.meta?.original?.duration else { return } - audioView.timeLabel.text = duration.asString(style: .positional) + fatalError() +// switch playbackState { +// case .stopped: +// audioView.playButton.isSelected = false +// audioView.slider.isUserInteractionEnabled = false +// audioView.slider.setValue(0, animated: false) +// case .paused: +// audioView.playButton.isSelected = false +// audioView.slider.isUserInteractionEnabled = true +// case .playing, .readyToPlay: +// audioView.playButton.isSelected = true +// audioView.slider.isUserInteractionEnabled = true +// default: +// assertionFailure() +// } +// guard let duration = audioAttachment.meta?.original?.duration else { return } +// audioView.timeLabel.text = duration.asString(style: .positional) } } diff --git a/Mastodon/Scene/Share/ViewModel/MosaicImageViewModel.swift b/Mastodon/Scene/Share/ViewModel/MosaicImageViewModel.swift index 5ceb87818..8f53e4ddb 100644 --- a/Mastodon/Scene/Share/ViewModel/MosaicImageViewModel.swift +++ b/Mastodon/Scene/Share/ViewModel/MosaicImageViewModel.swift @@ -9,47 +9,47 @@ import UIKit import Combine import CoreDataStack -struct MosaicImageViewModel { - - let metas: [MosaicMeta] - - init(mediaAttachments: [Attachment]) { - var metas: [MosaicMeta] = [] - for element in mediaAttachments where element.type == .image { - guard let meta = element.meta, - let width = meta.original?.width, - let height = meta.original?.height, - let url = URL(string: element.url) else { - continue - } - let mosaicMeta = MosaicMeta( - previewURL: element.previewURL.flatMap { URL(string: $0) }, - url: url, - size: CGSize(width: width, height: height), - blurhash: element.blurhash, - altText: element.descriptionString - ) - metas.append(mosaicMeta) - } - self.metas = metas - } - -} - -struct MosaicMeta { - static let edgeMaxLength: CGFloat = 20 - - let previewURL: URL? - let url: URL - let size: CGSize - let blurhash: String? - let altText: String? - - func blurhashImagePublisher() -> AnyPublisher { - guard let blurhash = blurhash else { - return Just(nil).eraseToAnyPublisher() - } - return AppContext.shared.blurhashImageCacheService.image(blurhash: blurhash, size: size, url: url) - } - -} +//struct MosaicImageViewModel { +// +// let metas: [MosaicMeta] +// +// init(mediaAttachments: [Attachment]) { +// var metas: [MosaicMeta] = [] +// for element in mediaAttachments where element.type == .image { +// guard let meta = element.meta, +// let width = meta.original?.width, +// let height = meta.original?.height, +// let url = URL(string: element.url) else { +// continue +// } +// let mosaicMeta = MosaicMeta( +// previewURL: element.previewURL.flatMap { URL(string: $0) }, +// url: url, +// size: CGSize(width: width, height: height), +// blurhash: element.blurhash, +// altText: element.descriptionString +// ) +// metas.append(mosaicMeta) +// } +// self.metas = metas +// } +// +//} +// +//struct MosaicMeta { +// static let edgeMaxLength: CGFloat = 20 +// +// let previewURL: URL? +// let url: URL +// let size: CGSize +// let blurhash: String? +// let altText: String? +// +// func blurhashImagePublisher() -> AnyPublisher { +// guard let blurhash = blurhash else { +// return Just(nil).eraseToAnyPublisher() +// } +// return AppContext.shared.blurhashImageCacheService.image(blurhash: blurhash, size: size, url: url) +// } +// +//} diff --git a/Mastodon/Scene/SuggestionAccount/CollectionViewCell/SuggestionAccountCollectionViewCell.swift b/Mastodon/Scene/SuggestionAccount/CollectionViewCell/SuggestionAccountCollectionViewCell.swift index a973e1c52..2fb467fbd 100644 --- a/Mastodon/Scene/SuggestionAccount/CollectionViewCell/SuggestionAccountCollectionViewCell.swift +++ b/Mastodon/Scene/SuggestionAccount/CollectionViewCell/SuggestionAccountCollectionViewCell.swift @@ -8,6 +8,8 @@ import CoreDataStack import Foundation import UIKit +import MastodonAsset +import MastodonLocalization class SuggestionAccountCollectionViewCell: UICollectionViewCell { let imageView: UIImageView = { diff --git a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift index d27c1fbe5..13c2efb3d 100644 --- a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift +++ b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift @@ -11,6 +11,8 @@ import CoreDataStack import Foundation import OSLog import UIKit +import MastodonAsset +import MastodonLocalization class SuggestionAccountViewController: UIViewController, NeedsDependency { weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } @@ -66,47 +68,49 @@ class SuggestionAccountViewController: UIViewController, NeedsDependency { extension SuggestionAccountViewController { override func viewDidLoad() { super.viewDidLoad() + + fatalError() - setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) - ThemeService.shared.currentTheme - .receive(on: RunLoop.main) - .sink { [weak self] theme in - guard let self = self else { return } - self.setupBackgroundColor(theme: theme) - } - .store(in: &disposeBag) - - title = L10n.Scene.SuggestionAccount.title - navigationItem.rightBarButtonItem - = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.done, - target: self, - action: #selector(SuggestionAccountViewController.doneButtonDidClick(_:))) - - tableView.delegate = self - tableView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) - viewModel.diffableDataSource = RecommendAccountSection.tableViewDiffableDataSource( - for: tableView, - managedObjectContext: context.managedObjectContext, - viewModel: viewModel, - delegate: self - ) - - viewModel.collectionDiffableDataSource = SelectedAccountSection.collectionViewDiffableDataSource(for: selectedCollectionView, managedObjectContext: context.managedObjectContext) - - viewModel.accounts - .receive(on: DispatchQueue.main) - .sink { [weak self] accounts in - guard let self = self else { return } - self.setupHeader(accounts: accounts) - } - .store(in: &disposeBag) +// setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) +// ThemeService.shared.currentTheme +// .receive(on: RunLoop.main) +// .sink { [weak self] theme in +// guard let self = self else { return } +// self.setupBackgroundColor(theme: theme) +// } +// .store(in: &disposeBag) +// +// title = L10n.Scene.SuggestionAccount.title +// navigationItem.rightBarButtonItem +// = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.done, +// target: self, +// action: #selector(SuggestionAccountViewController.doneButtonDidClick(_:))) +// +// tableView.delegate = self +// tableView.translatesAutoresizingMaskIntoConstraints = false +// view.addSubview(tableView) +// NSLayoutConstraint.activate([ +// tableView.topAnchor.constraint(equalTo: view.topAnchor), +// tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), +// tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), +// tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), +// ]) +// viewModel.diffableDataSource = RecommendAccountSection.tableViewDiffableDataSource( +// for: tableView, +// managedObjectContext: context.managedObjectContext, +// viewModel: viewModel, +// delegate: self +// ) +// +// viewModel.collectionDiffableDataSource = SelectedAccountSection.collectionViewDiffableDataSource(for: selectedCollectionView, managedObjectContext: context.managedObjectContext) +// +// viewModel.accounts +// .receive(on: DispatchQueue.main) +// .sink { [weak self] accounts in +// guard let self = self else { return } +// self.setupHeader(accounts: accounts) +// } +// .store(in: &disposeBag) } override func viewWillAppear(_ animated: Bool) { diff --git a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift index e876041ca..a6786adff 100644 --- a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift +++ b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift @@ -193,39 +193,41 @@ final class SuggestionAccountViewModel: NSObject { } func followAction(objectID: NSManagedObjectID) -> AnyPublisher, Error>? { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return nil } - - let mastodonUser = context.managedObjectContext.object(with: objectID) as! MastodonUser - return context.apiService.toggleFollow( - for: mastodonUser, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox - ) + fatalError() +// guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return nil } +// +// let mastodonUser = context.managedObjectContext.object(with: objectID) as! MastodonUser +// return context.apiService.toggleFollow( +// for: mastodonUser, +// activeMastodonAuthenticationBox: activeMastodonAuthenticationBox +// ) } func checkAccountsFollowState() { - guard let currentMastodonUser = currentMastodonUser.value else { - return - } - let users: [MastodonUser] = accounts.value.compactMap { - guard let user = context.managedObjectContext.object(with: $0) as? MastodonUser else { - return nil - } - let isBlock = user.blockingBy.flatMap { $0.contains(currentMastodonUser) } ?? false - let isDomainBlock = user.domainBlockingBy.flatMap { $0.contains(currentMastodonUser) } ?? false - if isBlock || isDomainBlock { - return nil - } else { - return user - } - } - accounts.value = users.map(\.objectID) - - let followingUsers = users.filter { user -> Bool in - let isFollowing = user.followingBy.flatMap { $0.contains(currentMastodonUser) } ?? false - let isPending = user.followRequestedBy.flatMap { $0.contains(currentMastodonUser) } ?? false - return isFollowing || isPending - }.map(\.objectID) - - selectedAccounts.value = followingUsers + fatalError() +// guard let currentMastodonUser = currentMastodonUser.value else { +// return +// } +// let users: [MastodonUser] = accounts.value.compactMap { +// guard let user = context.managedObjectContext.object(with: $0) as? MastodonUser else { +// return nil +// } +// let isBlock = user.blockingBy.flatMap { $0.contains(currentMastodonUser) } ?? false +// let isDomainBlock = user.domainBlockingBy.flatMap { $0.contains(currentMastodonUser) } ?? false +// if isBlock || isDomainBlock { +// return nil +// } else { +// return user +// } +// } +// accounts.value = users.map(\.objectID) +// +// let followingUsers = users.filter { user -> Bool in +// let isFollowing = user.followingBy.flatMap { $0.contains(currentMastodonUser) } ?? false +// let isPending = user.followRequestedBy.flatMap { $0.contains(currentMastodonUser) } ?? false +// return isFollowing || isPending +// }.map(\.objectID) +// +// selectedAccounts.value = followingUsers } } diff --git a/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift index 905e1db32..5f679a2ca 100644 --- a/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift +++ b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift @@ -13,6 +13,8 @@ import MastodonSDK import UIKit import MetaTextKit import MastodonMeta +import MastodonAsset +import MastodonLocalization protocol SuggestionAccountTableViewCellDelegate: AnyObject { func accountButtonPressed(objectID: NSManagedObjectID, cell: SuggestionAccountTableViewCell) @@ -147,7 +149,7 @@ extension SuggestionAccountTableViewCell { imageTransition: .crossDissolve(0.2) ) } - let mastodonContent = MastodonContent(content: account.displayNameWithFallback, emojis: account.emojiMeta) + let mastodonContent = MastodonContent(content: account.displayNameWithFallback, emojis: account.emojis.asDictionary) do { let metaContent = try MastodonMetaContent.convert(document: mastodonContent) titleLabel.configure(content: metaContent) diff --git a/Mastodon/Scene/Thread/CachedThreadViewModel.swift b/Mastodon/Scene/Thread/CachedThreadViewModel.swift index d4866b0bd..c4ff3b985 100644 --- a/Mastodon/Scene/Thread/CachedThreadViewModel.swift +++ b/Mastodon/Scene/Thread/CachedThreadViewModel.swift @@ -10,6 +10,10 @@ import CoreDataStack final class CachedThreadViewModel: ThreadViewModel { init(context: AppContext, status: Status) { - super.init(context: context, optionalStatus: status) + let threadContext = StatusItem.Thread.Context(status: .init(objectID: status.objectID)) + super.init( + context: context, + optionalRoot: .root(context: threadContext) + ) } } diff --git a/Mastodon/Scene/Thread/MastodonStatusThreadViewModel.swift b/Mastodon/Scene/Thread/MastodonStatusThreadViewModel.swift new file mode 100644 index 000000000..c158270cb --- /dev/null +++ b/Mastodon/Scene/Thread/MastodonStatusThreadViewModel.swift @@ -0,0 +1,278 @@ +// +// MastodonStatusThreadViewModel.swift +// MastodonStatusThreadViewModel +// +// Created by Cirno MainasuK on 2021-9-6. +// Copyright © 2021 Twidere. All rights reserved. +// + +import os.log +import Foundation +import Combine +import CoreData +import CoreDataStack +import MastodonSDK +import MastodonMeta + +final class MastodonStatusThreadViewModel { + + var disposeBag = Set() + + // input + let context: AppContext + @Published private(set) var deletedObjectIDs: Set = Set() + + // output + @Published var __ancestors: [StatusItem] = [] + @Published var ancestors: [StatusItem] = [] + + @Published var __descendants: [StatusItem] = [] + @Published var descendants: [StatusItem] = [] + + init(context: AppContext) { + self.context = context + + Publishers.CombineLatest( + $__ancestors, + $deletedObjectIDs + ) + .sink { [weak self] items, deletedObjectIDs in + guard let self = self else { return } + let newItems = items.filter { item in + switch item { + case .thread(let thread): + return !deletedObjectIDs.contains(thread.record.objectID) + default: + assertionFailure() + return false + } + } + self.ancestors = newItems + } + .store(in: &disposeBag) + + Publishers.CombineLatest( + $__descendants, + $deletedObjectIDs + ) + .sink { [weak self] items, deletedObjectIDs in + guard let self = self else { return } + let newItems = items.filter { item in + switch item { + case .thread(let thread): + return !deletedObjectIDs.contains(thread.record.objectID) + default: + assertionFailure() + return false + } + } + self.descendants = newItems + } + .store(in: &disposeBag) + } + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + +} + +extension MastodonStatusThreadViewModel { + + func appendAncestor( + domain: String, + nodes: [Node] + ) { + let ids = nodes.map { $0.statusID } + var dictionary: [Status.ID: Status] = [:] + do { + let request = Status.sortedFetchRequest + request.predicate = Status.predicate(domain: domain, ids: ids) + let statuses = try self.context.managedObjectContext.fetch(request) + for status in statuses { + dictionary[status.id] = status + } + } catch { + os_log("%{public}s[%{public}ld], %{public}s: fetch conversation fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) + return + } + + var newItems: [StatusItem] = [] + for (i, node) in nodes.enumerated() { + guard let status = dictionary[node.statusID] else { continue } + let isLast = i == nodes.count - 1 + + let record = ManagedObjectRecord(objectID: status.objectID) + let context = StatusItem.Thread.Context( + status: record, + displayUpperConversationLink: !isLast, + displayBottomConversationLink: true + ) + let item = StatusItem.thread(.leaf(context: context)) + newItems.append(item) + } + + let items = self.__ancestors + newItems + self.__ancestors = items + } + + func appendDescendant( + domain: String, + nodes: [Node] + ) { + let childrenIDs = nodes + .map { node in [node.statusID, node.children.first?.statusID].compactMap { $0 } } + .flatMap { $0 } + var dictionary: [Status.ID: Status] = [:] + do { + let request = Status.sortedFetchRequest + request.predicate = Status.predicate(domain: domain, ids: childrenIDs) + let statuses = try self.context.managedObjectContext.fetch(request) + for status in statuses { + dictionary[status.id] = status + } + } catch { + os_log("%{public}s[%{public}ld], %{public}s: fetch conversation fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) + return + } + + var newItems: [StatusItem] = [] + for node in nodes { + guard let status = dictionary[node.statusID] else { continue } + // first tier + let record = ManagedObjectRecord(objectID: status.objectID) + let context = StatusItem.Thread.Context( + status: record + ) + let item = StatusItem.thread(.leaf(context: context)) + newItems.append(item) + + // second tier + if let child = node.children.first { + guard let secondaryStatus = dictionary[child.statusID] else { continue } + let secondaryRecord = ManagedObjectRecord(objectID: secondaryStatus.objectID) + let secondaryContext = StatusItem.Thread.Context( + status: secondaryRecord, + displayUpperConversationLink: true + ) + let secondaryItem = StatusItem.thread(.leaf(context: secondaryContext)) + newItems.append(secondaryItem) + + // update first tier context + context.displayBottomConversationLink = true + } + } + + var items = self.__descendants + for item in newItems { + guard !items.contains(item) else { continue } + items.append(item) + } + self.__descendants = items + } + +} + +extension MastodonStatusThreadViewModel { + class Node { + typealias ID = String + + let statusID: ID + let children: [Node] + + init( + statusID: ID, + children: [MastodonStatusThreadViewModel.Node] + ) { + self.statusID = statusID + self.children = children + } + } +} + +extension MastodonStatusThreadViewModel.Node { + static func replyToThread( + for replyToID: Mastodon.Entity.Status.ID?, + from statuses: [Mastodon.Entity.Status] + ) -> [MastodonStatusThreadViewModel.Node] { + guard let replyToID = replyToID else { + return [] + } + + var dict: [Mastodon.Entity.Status.ID: Mastodon.Entity.Status] = [:] + for status in statuses { + dict[status.id] = status + } + + var nextID: Mastodon.Entity.Status.ID? = replyToID + var nodes: [MastodonStatusThreadViewModel.Node] = [] + while let _nextID = nextID { + guard let status = dict[_nextID] else { break } + nodes.append(MastodonStatusThreadViewModel.Node( + statusID: _nextID, + children: [] + )) + nextID = status.inReplyToID + } + + return nodes + } +} + +extension MastodonStatusThreadViewModel.Node { + static func children( + of statusID: ID, + from statuses: [Mastodon.Entity.Status] + ) -> [MastodonStatusThreadViewModel.Node] { + var dictionary: [ID: Mastodon.Entity.Status] = [:] + var mapping: [ID: Set] = [:] + + for status in statuses { + dictionary[status.id] = status + guard let replyToID = status.inReplyToID else { continue } + if var set = mapping[replyToID] { + set.insert(status.id) + mapping[replyToID] = set + } else { + mapping[replyToID] = Set([status.id]) + } + } + + var children: [MastodonStatusThreadViewModel.Node] = [] + let replies = Array(mapping[statusID] ?? Set()) + .compactMap { dictionary[$0] } + .sorted(by: { $0.createdAt > $1.createdAt }) + for reply in replies { + let child = child(of: reply.id, dictionary: dictionary, mapping: mapping) + children.append(child) + } + return children + } + + static func child( + of statusID: ID, + dictionary: [ID: Mastodon.Entity.Status], + mapping: [ID: Set] + ) -> MastodonStatusThreadViewModel.Node { + let childrenIDs = mapping[statusID] ?? [] + let children = Array(childrenIDs) + .compactMap { dictionary[$0] } + .sorted(by: { $0.createdAt > $1.createdAt }) + .map { status in child(of: status.id, dictionary: dictionary, mapping: mapping) } + return MastodonStatusThreadViewModel.Node( + statusID: statusID, + children: children + ) + } + +} + +extension MastodonStatusThreadViewModel { + func delete(objectIDs: [NSManagedObjectID]) { + var set = deletedObjectIDs + for objectID in objectIDs { + set.insert(objectID) + } + self.deletedObjectIDs = set + } +} diff --git a/Mastodon/Scene/Thread/RemoteThreadViewModel.swift b/Mastodon/Scene/Thread/RemoteThreadViewModel.swift index f8f5d3e7e..6d2e3d975 100644 --- a/Mastodon/Scene/Thread/RemoteThreadViewModel.swift +++ b/Mastodon/Scene/Thread/RemoteThreadViewModel.swift @@ -12,29 +12,26 @@ import MastodonSDK final class RemoteThreadViewModel: ThreadViewModel { - init(context: AppContext, statusID: Mastodon.Entity.Status.ID) { - super.init(context: context, optionalStatus: nil) + init( + context: AppContext, + statusID: Mastodon.Entity.Status.ID + ) { + super.init( + context: context, + optionalRoot: nil + ) - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - let domain = activeMastodonAuthenticationBox.domain - context.apiService.status( - domain: domain, - statusID: statusID, - authorizationBox: activeMastodonAuthenticationBox - ) - .retry(3) - .sink { completion in - switch completion { - case .failure(let error): - // TODO: handle error - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote status %s fetch failed: %s", ((#file as NSString).lastPathComponent), #line, #function, statusID, error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote status %s fetched", ((#file as NSString).lastPathComponent), #line, #function, statusID) - } - } receiveValue: { [weak self] response in - guard let self = self else { return } + + Task { @MainActor in + let domain = authenticationBox.domain + let response = try await context.apiService.status( + statusID: statusID, + authenticationBox: authenticationBox + ) + let managedObjectContext = context.managedObjectContext let request = Status.sortedFetchRequest request.fetchLimit = 1 @@ -43,33 +40,32 @@ final class RemoteThreadViewModel: ThreadViewModel { assertionFailure() return } - self.rootItem.value = .root(statusObjectID: status.objectID, attribute: Item.StatusAttribute()) - } - .store(in: &disposeBag) + let threadContext = StatusItem.Thread.Context(status: .init(objectID: status.objectID)) + self.root = .root(context: threadContext) + + } // end Task } - init(context: AppContext, notificationID: Mastodon.Entity.Notification.ID) { - super.init(context: context, optionalStatus: nil) + init( + context: AppContext, + notificationID: Mastodon.Entity.Notification.ID + ) { + super.init( + context: context, + optionalRoot: nil + ) - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - let domain = activeMastodonAuthenticationBox.domain - context.apiService.notification( - notificationID: notificationID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .retry(3) - .sink { completion in - switch completion { - case .failure(let error): - // TODO: handle error - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote notification %s fetch failed: %s", ((#file as NSString).lastPathComponent), #line, #function, notificationID, error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote notification %s fetched", ((#file as NSString).lastPathComponent), #line, #function, notificationID) - } - } receiveValue: { [weak self] response in - guard let self = self else { return } + + Task { @MainActor in + let domain = authenticationBox.domain + let response = try await context.apiService.notification( + notificationID: notificationID, + authenticationBox: authenticationBox + ) + guard let statusID = response.value.status?.id else { return } let managedObjectContext = context.managedObjectContext @@ -80,9 +76,9 @@ final class RemoteThreadViewModel: ThreadViewModel { assertionFailure() return } - self.rootItem.value = .root(statusObjectID: status.objectID, attribute: Item.StatusAttribute()) - } - .store(in: &disposeBag) + let threadContext = StatusItem.Thread.Context(status: .init(objectID: status.objectID)) + self.root = .root(context: threadContext) + } // end Task } } diff --git a/Mastodon/Scene/Thread/ThreadViewController+DataSourceProvider.swift b/Mastodon/Scene/Thread/ThreadViewController+DataSourceProvider.swift new file mode 100644 index 000000000..fc2584dc5 --- /dev/null +++ b/Mastodon/Scene/Thread/ThreadViewController+DataSourceProvider.swift @@ -0,0 +1,36 @@ +// +// ThreadViewController+DataSourceProvider.swift +// Mastodon +// +// Created by MainasuK on 2022-1-17. +// + +import UIKit + +// MARK: - DataSourceProvider +extension ThreadViewController: DataSourceProvider { + func item(from source: DataSourceItem.Source) async -> DataSourceItem? { + var _indexPath = source.indexPath + if _indexPath == nil, let cell = source.tableViewCell { + _indexPath = await self.indexPath(for: cell) + } + guard let indexPath = _indexPath else { return nil } + + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return nil + } + + switch item { + case .thread(let thread): + return .status(record: thread.record) + default: + assertionFailure() + return nil + } + } + + @MainActor + private func indexPath(for cell: UITableViewCell) async -> IndexPath? { + return tableView.indexPath(for: cell) + } +} diff --git a/Mastodon/Scene/Thread/ThreadViewController+Provider.swift b/Mastodon/Scene/Thread/ThreadViewController+Provider.swift deleted file mode 100644 index c6bd29e15..000000000 --- a/Mastodon/Scene/Thread/ThreadViewController+Provider.swift +++ /dev/null @@ -1,96 +0,0 @@ -// -// ThreadViewController+Provider.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-4-12. -// - -import UIKit -import Combine -import CoreData -import CoreDataStack - -// MARK: - StatusProvider -extension ThreadViewController: StatusProvider { - - func status() -> Future { - return Future { promise in promise(.success(nil)) } - } - - func status(for cell: UITableViewCell?, indexPath: IndexPath?) -> Future { - return Future { promise in - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - promise(.success(nil)) - return - } - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - promise(.success(nil)) - return - } - - switch item { - case .root(let statusObjectID, _), - .reply(let statusObjectID, _), - .leaf(let statusObjectID, _): - let managedObjectContext = self.viewModel.context.managedObjectContext - managedObjectContext.perform { - let status = managedObjectContext.object(with: statusObjectID) as? Status - promise(.success(status)) - } - default: - promise(.success(nil)) - } - } - } - - func status(for cell: UICollectionViewCell) -> Future { - return Future { promise in promise(.success(nil)) } - } - - var managedObjectContext: NSManagedObjectContext { - return viewModel.context.managedObjectContext - } - - var tableViewDiffableDataSource: UITableViewDiffableDataSource? { - return viewModel.diffableDataSource - } - - func item(for cell: UITableViewCell?, indexPath: IndexPath?) -> Item? { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return nil - } - - guard let indexPath = indexPath ?? cell.flatMap({ self.tableView.indexPath(for: $0) }), - let item = diffableDataSource.itemIdentifier(for: indexPath) else { - return nil - } - - return item - } - - func items(indexPaths: [IndexPath]) -> [Item] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { - assertionFailure() - return [] - } - - var items: [Item] = [] - for indexPath in indexPaths { - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { continue } - items.append(item) - } - return items - } - - func statusObjectItems(indexPaths: [IndexPath]) -> [StatusObjectItem] { - guard let diffableDataSource = self.viewModel.diffableDataSource else { return [] } - let items = indexPaths.compactMap { diffableDataSource.itemIdentifier(for: $0)?.statusObjectItem } - return items - } - -} - -extension ThreadViewController: UserProvider {} diff --git a/Mastodon/Scene/Thread/ThreadViewController.swift b/Mastodon/Scene/Thread/ThreadViewController.swift index a0de13477..cfc28447c 100644 --- a/Mastodon/Scene/Thread/ThreadViewController.swift +++ b/Mastodon/Scene/Thread/ThreadViewController.swift @@ -11,8 +11,12 @@ import Combine import CoreData import AVKit import MastodonMeta +import MastodonAsset +import MastodonLocalization final class ThreadViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { + + let logger = Logger(subsystem: "ThreadViewController", category: "ViewController") weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } @@ -55,27 +59,29 @@ extension ThreadViewController { view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.view.backgroundColor = theme.secondarySystemBackgroundColor } .store(in: &disposeBag) + navigationItem.title = L10n.Scene.Thread.backTitle navigationItem.titleView = titleView navigationItem.rightBarButtonItem = replyBarButtonItem replyBarButtonItem.button.addTarget(self, action: #selector(ThreadViewController.replyBarButtonItemPressed(_:)), for: .touchUpInside) - viewModel.tableView = tableView - viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self - tableView.delegate = self - tableView.prefetchDataSource = self - viewModel.setupDiffableDataSource( - for: tableView, - dependency: self, - statusTableViewCellDelegate: self, - threadReplyLoaderTableViewCellDelegate: self - ) + viewModel.$navigationBarTitle + .receive(on: DispatchQueue.main) + .sink { [weak self] title in + guard let self = self else { return } + guard let title = title else { + self.titleView.update(title: "", subtitle: nil) + return + } + self.titleView.update(titleMetaContent: title, subtitle: nil) + } + .store(in: &disposeBag) tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) @@ -85,97 +91,60 @@ extension ThreadViewController { tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) - - Publishers.CombineLatest( - viewModel.navigationBarTitle, - viewModel.navigationBarTitleEmojiMeta + +// viewModel.tableView = tableView +// viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self + tableView.delegate = self +// tableView.prefetchDataSource = self + viewModel.setupDiffableDataSource( + tableView: tableView, + statusTableViewCellDelegate: self ) - .receive(on: DispatchQueue.main) - .sink { [weak self] title, emojiMeta in - guard let self = self else { return } - guard let title = title else { - self.titleView.update(title: "", subtitle: nil) - return - } - let mastodonContent = MastodonContent(content: title, emojis: emojiMeta) - do { - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - self.titleView.update(titleMetaContent: metaContent, subtitle: nil) - } catch { - assertionFailure() - } - } - .store(in: &disposeBag) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - aspectViewWillAppear(animated) - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - - aspectViewDidDisappear(animated) + tableView.deselectRow(with: transitionCoordinator, animated: animated) } } extension ThreadViewController { @objc private func replyBarButtonItemPressed(_ sender: UIBarButtonItem) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - guard let rootItem = viewModel.rootItem.value, - case let .root(statusObjectID, _) = rootItem else { return } - let composeViewModel = ComposeViewModel(context: context, composeKind: .reply(repliedToStatusObjectID: statusObjectID)) - coordinator.present(scene: .compose(viewModel: composeViewModel), from: self, transition: .modal(animated: true, completion: nil)) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + guard case let .root(threadContext) = viewModel.root else { return } + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + let composeViewModel = ComposeViewModel( + context: context, + composeKind: .reply(status: threadContext.status), + authenticationBox: authenticationBox + ) + coordinator.present( + scene: .compose(viewModel: composeViewModel), + from: self, + transition: .modal(animated: true, completion: nil) + ) } } -// MARK: - StatusTableViewControllerAspect -extension ThreadViewController: StatusTableViewControllerAspect { } - -// MARK: - TableViewCellHeightCacheableContainer -extension ThreadViewController: TableViewCellHeightCacheableContainer { - var cellFrameCache: NSCache { viewModel.cellFrameCache } -} +//// MARK: - StatusTableViewControllerAspect +//extension ThreadViewController: StatusTableViewControllerAspect { } // MARK: - UITableViewDelegate -extension ThreadViewController: UITableViewDelegate { +extension ThreadViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { + // sourcery:inline:ThreadViewController.AutoGenerateTableViewDelegate - func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { - aspectTableView(tableView, estimatedHeightForRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) - } - - func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { - aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) - } - + // Generated using Sourcery + // DO NOT EDIT func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { aspectTableView(tableView, didSelectRowAt: indexPath) } - - func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { - guard let diffableDataSource = viewModel.diffableDataSource else { return nil } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return nil } - - // disable root selection - switch item { - case .root: - return nil - default: - return indexPath - } - } - + func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) } - + func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) } @@ -183,85 +152,145 @@ extension ThreadViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) } - + func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) } + // sourcery:end + + func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { + guard let diffableDataSource = viewModel.diffableDataSource else { return nil } + guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return nil } + + switch item { + case .thread(let thread): + switch thread { + case .root: + return nil + default: + return indexPath + } + default: + return indexPath + } + } + + +// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { +// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// aspectTableView(tableView, didSelectRowAt: indexPath) +// } +// +// func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { +// guard let diffableDataSource = viewModel.diffableDataSource else { return nil } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return nil } +// +// // disable root selection +// switch item { +// case .root: +// return nil +// default: +// return indexPath +// } +// } +// +// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { +// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +// } +// +// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { +// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +// } +// +// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { +// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +// } } // MARK: - UITableViewDataSourcePrefetching -extension ThreadViewController: UITableViewDataSourcePrefetching { - func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - aspectTableView(tableView, prefetchRowsAt: indexPaths) - } -} - -// MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate -extension ThreadViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { - func navigationBar() -> UINavigationBar? { - return navigationController?.navigationBar - } -} +//extension ThreadViewController: UITableViewDataSourcePrefetching { +// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { +// aspectTableView(tableView, prefetchRowsAt: indexPaths) +// } +//} // MARK: - AVPlayerViewControllerDelegate -extension ThreadViewController: AVPlayerViewControllerDelegate { - - func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) - } - - func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) - } - -} +//extension ThreadViewController: AVPlayerViewControllerDelegate { +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { +// aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) +// } +// +//} // MARK: - statusTableViewCellDelegate -extension ThreadViewController: StatusTableViewCellDelegate { - weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } - func parent() -> UIViewController { return self } -} +//extension ThreadViewController: StatusTableViewCellDelegate { +// weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } +// func parent() -> UIViewController { return self } +//} // MARK: - ThreadReplyLoaderTableViewCellDelegate -extension ThreadViewController: ThreadReplyLoaderTableViewCellDelegate { - func threadReplyLoaderTableViewCell(_ cell: ThreadReplyLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let indexPath = tableView.indexPath(for: cell) else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - guard case let .leafBottomLoader(statusObjectID) = item else { return } - - let nodes = viewModel.descendantNodes.value - nodes.forEach { node in - expandReply(node: node, statusObjectID: statusObjectID) - } - viewModel.descendantNodes.value = nodes - } - - private func expandReply(node: ThreadViewModel.LeafNode, statusObjectID: NSManagedObjectID) { - if node.objectID == statusObjectID { - node.isChildrenExpanded = true - } else { - for child in node.children { - expandReply(node: child, statusObjectID: statusObjectID) - } - } - } -} +//extension ThreadViewController: ThreadReplyLoaderTableViewCellDelegate { +// func threadReplyLoaderTableViewCell(_ cell: ThreadReplyLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) { +// guard let diffableDataSource = viewModel.diffableDataSource else { return } +// guard let indexPath = tableView.indexPath(for: cell) else { return } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } +// guard case let .leafBottomLoader(statusObjectID) = item else { return } +// +// let nodes = viewModel.descendantNodes.value +// nodes.forEach { node in +// expandReply(node: node, statusObjectID: statusObjectID) +// } +// viewModel.descendantNodes.value = nodes +// } +// +// private func expandReply(node: ThreadViewModel.LeafNode, statusObjectID: NSManagedObjectID) { +// if node.objectID == statusObjectID { +// node.isChildrenExpanded = true +// } else { +// for child in node.children { +// expandReply(node: child, statusObjectID: statusObjectID) +// } +// } +// } +//} -extension ThreadViewController { - override var keyCommands: [UIKeyCommand]? { - return navigationKeyCommands + statusNavigationKeyCommands - } -} +//extension ThreadViewController { +// override var keyCommands: [UIKeyCommand]? { +// return navigationKeyCommands + statusNavigationKeyCommands +// } +//} +// +//// MARK: - StatusTableViewControllerNavigateable +//extension ThreadViewController: StatusTableViewControllerNavigateable { +// @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// navigateKeyCommandHandler(sender) +// } +// +// @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// statusKeyCommandHandler(sender) +// } +//} -// MARK: - StatusTableViewControllerNavigateable -extension ThreadViewController: StatusTableViewControllerNavigateable { - @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - navigateKeyCommandHandler(sender) - } - - @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { - statusKeyCommandHandler(sender) - } -} +// MARK: - StatusTableViewCellDelegate +extension ThreadViewController: StatusTableViewCellDelegate { } diff --git a/Mastodon/Scene/Thread/ThreadViewModel+Diffable.swift b/Mastodon/Scene/Thread/ThreadViewModel+Diffable.swift index 853bee9da..71dd003f6 100644 --- a/Mastodon/Scene/Thread/ThreadViewModel+Diffable.swift +++ b/Mastodon/Scene/Thread/ThreadViewModel+Diffable.swift @@ -13,228 +13,421 @@ import MastodonSDK extension ThreadViewModel { + @MainActor func setupDiffableDataSource( - for tableView: UITableView, - dependency: NeedsDependency, - statusTableViewCellDelegate: StatusTableViewCellDelegate, - threadReplyLoaderTableViewCellDelegate: ThreadReplyLoaderTableViewCellDelegate + tableView: UITableView, + statusTableViewCellDelegate: StatusTableViewCellDelegate ) { - diffableDataSource = StatusSection.tableViewDiffableDataSource( - for: tableView, - timelineContext: .thread, - dependency: dependency, - managedObjectContext: context.managedObjectContext, - statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: nil, - threadReplyLoaderTableViewCellDelegate: threadReplyLoaderTableViewCellDelegate + diffableDataSource = StatusSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: StatusSection.Configuration( + statusTableViewCellDelegate: statusTableViewCellDelegate, + timelineMiddleLoaderTableViewCellDelegate: nil + ) ) - var snapshot = NSDiffableDataSourceSnapshot() + // make initial snapshot animation smooth + var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) - if let rootNode = self.rootNode.value, rootNode.replyToID != nil { - snapshot.appendItems([.topLoader], toSection: .main) + if let root = self.root { + if case let .root(threadContext) = root, + let status = threadContext.status.object(in: context.managedObjectContext), + status.inReplyToID != nil + { + snapshot.appendItems([.topLoader], toSection: .main) + } + + snapshot.appendItems([.thread(root)], toSection: .main) + } else { + } + diffableDataSource?.apply(snapshot) - diffableDataSource?.apply(snapshot, animatingDifferences: false, completion: nil) - - Publishers.CombineLatest3( - rootItem.removeDuplicates(), - ancestorItems.removeDuplicates(), - descendantItems.removeDuplicates() - ) - .receive(on: RunLoop.main) - .sink { [weak self] rootItem, ancestorItems, descendantItems in - guard let self = self else { return } - var items: [Item] = [] - rootItem.flatMap { items.append($0) } - items.append(contentsOf: ancestorItems) - items.append(contentsOf: descendantItems) - self.updateDeletedStatus(for: items) - } - .store(in: &disposeBag) - - Publishers.CombineLatest4( - rootItem, - ancestorItems, - descendantItems, - existStatusFetchedResultsController.objectIDs - ) - .debounce(for: .milliseconds(100), scheduler: RunLoop.main) // some magic to avoid jitter - .sink { [weak self] rootItem, ancestorItems, descendantItems, existObjectIDs in - guard let self = self else { return } - guard let tableView = self.tableView, - let navigationBar = self.contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() - else { return } - - guard let diffableDataSource = self.diffableDataSource else { return } - let oldSnapshot = diffableDataSource.snapshot() - - var newSnapshot = NSDiffableDataSourceSnapshot() - newSnapshot.appendSections([.main]) - - let currentState = self.loadThreadStateMachine.currentState - - // reply to - if self.rootNode.value?.replyToID != nil, !(currentState is LoadThreadState.NoMore) { - newSnapshot.appendItems([.topLoader], toSection: .main) - } - - let ancestorItems = ancestorItems.filter { item in - guard case let .reply(statusObjectID, _) = item else { return false } - return existObjectIDs.contains(statusObjectID) - } - newSnapshot.appendItems(ancestorItems, toSection: .main) - - // root - if let rootItem = rootItem, - case let .root(objectID, _) = rootItem, - existObjectIDs.contains(objectID) { - newSnapshot.appendItems([rootItem], toSection: .main) - } - - // leaf - if !(currentState is LoadThreadState.NoMore) { - newSnapshot.appendItems([.bottomLoader], toSection: .main) - } - - let descendantItems = descendantItems.filter { item in - switch item { - case .leaf(let statusObjectID, _): - return existObjectIDs.contains(statusObjectID) - default: - return true - } - } - newSnapshot.appendItems(descendantItems, toSection: .main) - - // difference for first visible item exclude .topLoader - guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { - diffableDataSource.apply(newSnapshot) - return - } - - // additional margin for .topLoader - let oldTopMargin: CGFloat = { - let marginHeight = TimelineTopLoaderTableViewCell.cellHeight - if oldSnapshot.itemIdentifiers.contains(.topLoader) { - return marginHeight - } - if !ancestorItems.isEmpty { - return marginHeight - } - - return .zero - }() - - let oldRootCell: UITableViewCell? = { - guard let rootItem = rootItem else { return nil } - guard let index = oldSnapshot.indexOfItem(rootItem) else { return nil } - guard let cell = tableView.cellForRow(at: IndexPath(row: index, section: 0)) else { return nil } - return cell - }() - // save height before cell reuse - let oldRootCellHeight = oldRootCell?.frame.height - - diffableDataSource.reloadData(snapshot: newSnapshot) { - guard let _ = rootItem else { + $threadContext + .receive(on: DispatchQueue.main) + .sink { [weak self] threadContext in + guard let self = self else { return } + guard let _ = threadContext else { return } - if let oldRootCellHeight = oldRootCellHeight { - // set bottom inset. Make root item pin to top (with margin). - let bottomSpacing = tableView.safeAreaLayoutGuide.layoutFrame.height - oldRootCellHeight - oldTopMargin - tableView.contentInset.bottom = max(0, bottomSpacing) - } - // set scroll position - tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) - let contentOffsetY: CGFloat = { - var offset: CGFloat = tableView.contentOffset.y - difference.offset - if tableView.contentInset.bottom != 0.0 && descendantItems.isEmpty { - // needs restore top margin if bottom inset adjusted AND no descendantItems - offset += oldTopMargin - } - return offset - }() - tableView.setContentOffset(CGPoint(x: 0, y: contentOffsetY), animated: false) + self.loadThreadStateMachine.enter(LoadThreadState.Loading.self) } + .store(in: &disposeBag) + + Publishers.CombineLatest3( + $root, + mastodonStatusThreadViewModel.$ancestors, + mastodonStatusThreadViewModel.$descendants + ) + .throttle(for: 1, scheduler: DispatchQueue.main, latest: true) + .sink { [weak self] root, ancestors, descendants in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + Task { @MainActor in + let oldSnapshot = diffableDataSource.snapshot() + + var newSnapshot = NSDiffableDataSourceSnapshot() + newSnapshot.appendSections([.main]) + + // top loader + let _hasReplyTo: Bool? = try? await self.context.managedObjectContext.perform { + guard case let .root(threadContext) = root else { return nil } + guard let status = threadContext.status.object(in: self.context.managedObjectContext) else { return nil } + return status.inReplyToID != nil + } + if let hasReplyTo = _hasReplyTo, hasReplyTo { + let state = self.loadThreadStateMachine.currentState + if state is LoadThreadState.NoMore { + // do nothing + } else { + newSnapshot.appendItems([.topLoader], toSection: .main) + } + } + + // replies + newSnapshot.appendItems(ancestors.reversed(), toSection: .main) + // root + if let root = root { + let item = StatusItem.thread(root) + newSnapshot.appendItems([item], toSection: .main) + } + // leafs + newSnapshot.appendItems(descendants, toSection: .main) + // bottom loader + if let currentState = self.loadThreadStateMachine.currentState { + switch currentState { + case is LoadThreadState.Initial, + is LoadThreadState.Loading, + is LoadThreadState.Fail: + newSnapshot.appendItems([.bottomLoader], toSection: .main) + default: + break + } + } + + let hasChanges = newSnapshot.itemIdentifiers != oldSnapshot.itemIdentifiers + if !hasChanges { + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): snapshot not changes") + return + } else { + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): snapshot has changes") + } + + guard let difference = self.calculateReloadSnapshotDifference( + tableView: tableView, + oldSnapshot: oldSnapshot, + newSnapshot: newSnapshot + ) else { + await self.updateDataSource(snapshot: newSnapshot, animatingDifferences: false) + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): applied new snapshot without tweak") + return + } + + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Snapshot] oldSnapshot: \(oldSnapshot.itemIdentifiers.debugDescription)") + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Snapshot] newSnapshot: \(newSnapshot.itemIdentifiers.debugDescription)") + await self.updateSnapshotUsingReloadData( + tableView: tableView, + oldSnapshot: oldSnapshot, + newSnapshot: newSnapshot, + difference: difference + ) + } // end Task } .store(in: &disposeBag) + + +// Publishers.CombineLatest3( +// rootItem.removeDuplicates(), +// ancestorItems.removeDuplicates(), +// descendantItems.removeDuplicates() +// ) +// .receive(on: RunLoop.main) +// .sink { [weak self] rootItem, ancestorItems, descendantItems in +// guard let self = self else { return } +// var items: [Item] = [] +// rootItem.flatMap { items.append($0) } +// items.append(contentsOf: ancestorItems) +// items.append(contentsOf: descendantItems) +// self.updateDeletedStatus(for: items) +// } +// .store(in: &disposeBag) +// +// Publishers.CombineLatest4( +// rootItem, +// ancestorItems, +// descendantItems, +// existStatusFetchedResultsController.objectIDs +// ) +// .debounce(for: .milliseconds(100), scheduler: RunLoop.main) // some magic to avoid jitter +// .sink { [weak self] rootItem, ancestorItems, descendantItems, existObjectIDs in +// guard let self = self else { return } +// guard let tableView = self.tableView, +// let navigationBar = self.contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() +// else { return } +// +// guard let diffableDataSource = self.diffableDataSource else { return } +// let oldSnapshot = diffableDataSource.snapshot() +// +// var newSnapshot = NSDiffableDataSourceSnapshot() +// newSnapshot.appendSections([.main]) +// +// let currentState = self.loadThreadStateMachine.currentState +// +// // reply to +// if self.rootNode.value?.replyToID != nil, !(currentState is LoadThreadState.NoMore) { +// newSnapshot.appendItems([.topLoader], toSection: .main) +// } +// +// let ancestorItems = ancestorItems.filter { item in +// guard case let .reply(statusObjectID, _) = item else { return false } +// return existObjectIDs.contains(statusObjectID) +// } +// newSnapshot.appendItems(ancestorItems, toSection: .main) +// +// // root +// if let rootItem = rootItem, +// case let .root(objectID, _) = rootItem, +// existObjectIDs.contains(objectID) { +// newSnapshot.appendItems([rootItem], toSection: .main) +// } +// +// // leaf +// if !(currentState is LoadThreadState.NoMore) { +// newSnapshot.appendItems([.bottomLoader], toSection: .main) +// } +// +// let descendantItems = descendantItems.filter { item in +// switch item { +// case .leaf(let statusObjectID, _): +// return existObjectIDs.contains(statusObjectID) +// default: +// return true +// } +// } +// newSnapshot.appendItems(descendantItems, toSection: .main) +// +// // difference for first visible item exclude .topLoader +// guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { +// diffableDataSource.apply(newSnapshot) +// return +// } +// +// // additional margin for .topLoader +// let oldTopMargin: CGFloat = { +// let marginHeight = TimelineTopLoaderTableViewCell.cellHeight +// if oldSnapshot.itemIdentifiers.contains(.topLoader) { +// return marginHeight +// } +// if !ancestorItems.isEmpty { +// return marginHeight +// } +// +// return .zero +// }() +// +// let oldRootCell: UITableViewCell? = { +// guard let rootItem = rootItem else { return nil } +// guard let index = oldSnapshot.indexOfItem(rootItem) else { return nil } +// guard let cell = tableView.cellForRow(at: IndexPath(row: index, section: 0)) else { return nil } +// return cell +// }() +// // save height before cell reuse +// let oldRootCellHeight = oldRootCell?.frame.height +// +// diffableDataSource.reloadData(snapshot: newSnapshot) { +// guard let _ = rootItem else { +// return +// } +// if let oldRootCellHeight = oldRootCellHeight { +// // set bottom inset. Make root item pin to top (with margin). +// let bottomSpacing = tableView.safeAreaLayoutGuide.layoutFrame.height - oldRootCellHeight - oldTopMargin +// tableView.contentInset.bottom = max(0, bottomSpacing) +// } +// +// // set scroll position +// tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) +// let contentOffsetY: CGFloat = { +// var offset: CGFloat = tableView.contentOffset.y - difference.offset +// if tableView.contentInset.bottom != 0.0 && descendantItems.isEmpty { +// // needs restore top margin if bottom inset adjusted AND no descendantItems +// offset += oldTopMargin +// } +// return offset +// }() +// tableView.setContentOffset(CGPoint(x: 0, y: contentOffsetY), animated: false) +// } +// } +// .store(in: &disposeBag) } } + extension ThreadViewModel { - private struct Difference { - let item: T - let sourceIndexPath: IndexPath - let targetIndexPath: IndexPath - let offset: CGFloat + + @MainActor func updateDataSource( + snapshot: NSDiffableDataSourceSnapshot, + animatingDifferences: Bool + ) async { + diffableDataSource?.apply(snapshot, animatingDifferences: animatingDifferences) } - private func calculateReloadSnapshotDifference( - navigationBar: UINavigationBar, - tableView: UITableView, - oldSnapshot: NSDiffableDataSourceSnapshot, - newSnapshot: NSDiffableDataSourceSnapshot - ) -> Difference? { - guard oldSnapshot.numberOfItems != 0 else { return nil } - guard let visibleIndexPaths = tableView.indexPathsForVisibleRows?.sorted() else { return nil } + @MainActor func updateSnapshotUsingReloadData( + snapshot: NSDiffableDataSourceSnapshot + ) async { + if #available(iOS 15.0, *) { + await self.diffableDataSource?.applySnapshotUsingReloadData(snapshot) + } else { + diffableDataSource?.applySnapshot(snapshot, animated: false, completion: nil) + } + } - // find index of the first visible item exclude .topLoader + // Some UI tweaks to present replies and conversation smoothly + @MainActor private func updateSnapshotUsingReloadData( + tableView: UITableView, + oldSnapshot: NSDiffableDataSourceSnapshot, + newSnapshot: NSDiffableDataSourceSnapshot, + difference: ThreadViewModel.Difference // + ) async { + let replies: [StatusItem] = { + newSnapshot.itemIdentifiers.filter { item in + guard case let .thread(thread) = item else { return false } + guard case .reply = thread else { return false } + return true + } + }() + // additional margin for .topLoader + let oldTopMargin: CGFloat = { + let marginHeight = TimelineTopLoaderTableViewCell.cellHeight + if oldSnapshot.itemIdentifiers.contains(.topLoader) || !replies.isEmpty { + return marginHeight + } + return .zero + }() + + await self.updateSnapshotUsingReloadData(snapshot: newSnapshot) + + // note: + // tweak the content offset and bottom inset + // make the table view stable when data reload + // the keypoint is set the bottom inset to make the root padding with "TopLoaderHeight" to top edge + // and restore the "TopLoaderHeight" when bottom inset adjusted + + // set bottom inset. Make root item pin to top. + if let item = root.flatMap({ StatusItem.thread($0) }), + let index = newSnapshot.indexOfItem(item), + let cell = tableView.cellForRow(at: IndexPath(row: index, section: 0)) + { + // always set bottom inset due to lazy reply loading + // otherwise tableView will jump when insert replies + let bottomSpacing = tableView.safeAreaLayoutGuide.layoutFrame.height - cell.frame.height - oldTopMargin + let additionalInset = round(tableView.contentSize.height - cell.frame.maxY) + + tableView.contentInset.bottom = max(0, bottomSpacing - additionalInset) + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): content inset bottom: \(tableView.contentInset.bottom)") + } + + // set scroll position + tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) + tableView.contentOffset.y = { + var offset: CGFloat = tableView.contentOffset.y - difference.sourceDistanceToTableViewTopEdge + if tableView.contentInset.bottom != 0.0 { + // needs restore top margin if bottom inset adjusted + offset += oldTopMargin + } + return offset + }() + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): applied new snapshot") + } +} + +extension ThreadViewModel { + struct Difference { + let item: StatusItem + let sourceIndexPath: IndexPath + let sourceDistanceToTableViewTopEdge: CGFloat + let targetIndexPath: IndexPath + } + + @MainActor private func calculateReloadSnapshotDifference( + tableView: UITableView, + oldSnapshot: NSDiffableDataSourceSnapshot, + newSnapshot: NSDiffableDataSourceSnapshot + ) -> Difference? { + guard oldSnapshot.numberOfItems != 0 else { return nil } + guard let indexPathsForVisibleRows = tableView.indexPathsForVisibleRows?.sorted() else { return nil } + + // find index of the first visible item in both old and new snapshot var _index: Int? let items = oldSnapshot.itemIdentifiers(inSection: .main) for (i, item) in items.enumerated() { - if case .topLoader = item { continue } - guard visibleIndexPaths.contains(where: { $0.row == i }) else { continue } - + guard let indexPath = indexPathsForVisibleRows.first(where: { $0.row == i }) else { continue } + guard newSnapshot.indexOfItem(item) != nil else { continue } + let rectForCell = tableView.rectForRow(at: indexPath) + let distanceToTableViewTopEdge = tableView.convert(rectForCell, to: nil).origin.y - tableView.safeAreaInsets.top + guard distanceToTableViewTopEdge >= 0 else { continue } _index = i break } - - guard let index = _index else { return nil } + + guard let index = _index else { return nil } let sourceIndexPath = IndexPath(row: index, section: 0) - guard sourceIndexPath.row < oldSnapshot.itemIdentifiers(inSection: .main).count else { return nil } - - let item = oldSnapshot.itemIdentifiers(inSection: .main)[sourceIndexPath.row] - guard let itemIndex = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: item) else { return nil } - let targetIndexPath = IndexPath(row: itemIndex, section: 0) - - let offset = UIViewController.tableViewCellOriginOffsetToWindowTop(in: tableView, at: sourceIndexPath, navigationBar: navigationBar) + + let rectForSourceItemCell = tableView.rectForRow(at: sourceIndexPath) + let sourceDistanceToTableViewTopEdge = tableView.convert(rectForSourceItemCell, to: nil).origin.y - tableView.safeAreaInsets.top + + guard sourceIndexPath.section < oldSnapshot.numberOfSections, + sourceIndexPath.row < oldSnapshot.numberOfItems(inSection: oldSnapshot.sectionIdentifiers[sourceIndexPath.section]) + else { return nil } + + let sectionIdentifier = oldSnapshot.sectionIdentifiers[sourceIndexPath.section] + let item = oldSnapshot.itemIdentifiers(inSection: sectionIdentifier)[sourceIndexPath.row] + + guard let targetIndexPathRow = newSnapshot.indexOfItem(item), + let newSectionIdentifier = newSnapshot.sectionIdentifier(containingItem: item), + let targetIndexPathSection = newSnapshot.indexOfSection(newSectionIdentifier) + else { return nil } + + let targetIndexPath = IndexPath(row: targetIndexPathRow, section: targetIndexPathSection) + return Difference( item: item, sourceIndexPath: sourceIndexPath, - targetIndexPath: targetIndexPath, - offset: offset + sourceDistanceToTableViewTopEdge: sourceDistanceToTableViewTopEdge, + targetIndexPath: targetIndexPath ) } } -extension ThreadViewModel { - private func updateDeletedStatus(for items: [Item]) { - let parentManagedObjectContext = context.managedObjectContext - let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) - managedObjectContext.parent = parentManagedObjectContext - managedObjectContext.perform { - var statusIDs: [Status.ID] = [] - for item in items { - switch item { - case .root(let objectID, _): - guard let status = managedObjectContext.object(with: objectID) as? Status else { continue } - statusIDs.append(status.id) - case .reply(let objectID, _): - guard let status = managedObjectContext.object(with: objectID) as? Status else { continue } - statusIDs.append(status.id) - case .leaf(let objectID, _): - guard let status = managedObjectContext.object(with: objectID) as? Status else { continue } - statusIDs.append(status.id) - default: - continue - } - } - DispatchQueue.main.async { [weak self] in - guard let self = self else { return } - self.existStatusFetchedResultsController.statusIDs.value = statusIDs - } - } - } -} +//extension ThreadViewModel { +// private func updateDeletedStatus(for items: [Item]) { +// let parentManagedObjectContext = context.managedObjectContext +// let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) +// managedObjectContext.parent = parentManagedObjectContext +// managedObjectContext.perform { +// var statusIDs: [Status.ID] = [] +// for item in items { +// switch item { +// case .root(let objectID, _): +// guard let status = managedObjectContext.object(with: objectID) as? Status else { continue } +// statusIDs.append(status.id) +// case .reply(let objectID, _): +// guard let status = managedObjectContext.object(with: objectID) as? Status else { continue } +// statusIDs.append(status.id) +// case .leaf(let objectID, _): +// guard let status = managedObjectContext.object(with: objectID) as? Status else { continue } +// statusIDs.append(status.id) +// default: +// continue +// } +// } +// DispatchQueue.main.async { [weak self] in +// guard let self = self else { return } +// self.existStatusFetchedResultsController.statusIDs.value = statusIDs +// } +// } +// } +//} diff --git a/Mastodon/Scene/Thread/ThreadViewModel+LoadThreadState.swift b/Mastodon/Scene/Thread/ThreadViewModel+LoadThreadState.swift index 827242644..86fdc2111 100644 --- a/Mastodon/Scene/Thread/ThreadViewModel+LoadThreadState.swift +++ b/Mastodon/Scene/Thread/ThreadViewModel+LoadThreadState.swift @@ -13,7 +13,16 @@ import CoreDataStack import MastodonSDK extension ThreadViewModel { - class LoadThreadState: GKState { + class LoadThreadState: GKState, NamingState { + + let logger = Logger(subsystem: "ThreadViewModel.LoadThreadState", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + weak var viewModel: ThreadViewModel? init(viewModel: ThreadViewModel) { @@ -21,7 +30,18 @@ extension ThreadViewModel { } override func didEnter(from previousState: GKState?) { - os_log("%{public}s[%{public}ld], %{public}s: enter %s, previous: %s", ((#file as NSString).lastPathComponent), #line, #function, self.debugDescription, previousState.debugDescription) + super.didEnter(from: previousState) + let previousState = previousState as? ThreadViewModel.LoadThreadState + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + } + + @MainActor + func enter(state: LoadThreadState.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") } } } @@ -40,62 +60,57 @@ extension ThreadViewModel.LoadThreadState { override func isValidNextState(_ stateClass: AnyClass) -> Bool { switch stateClass { case is Fail.Type: return true - case is NoMore.Type: return true + case is NoMore.Type: return true default: return false } } override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) - - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - guard let mastodonAuthenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { - stateMachine.enter(Fail.self) - return - } - - guard let rootNode = viewModel.rootNode.value else { - stateMachine.enter(Fail.self) - return - } - - // trigger data source update - viewModel.rootItem.value = viewModel.rootItem.value - - let domain = rootNode.domain - let statusID = rootNode.statusID - let replyToID = rootNode.replyToID - - viewModel.context.apiService.statusContext( - domain: domain, - statusID: statusID, - mastodonAuthenticationBox: mastodonAuthenticationBox - ) - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch status context for %s fail: %s", ((#file as NSString).lastPathComponent), #line, #function, statusID, error.localizedDescription) - stateMachine.enter(Fail.self) - case .finished: - break - } - } receiveValue: { response in - stateMachine.enter(NoMore.self) - viewModel.ancestorNodes.value = ThreadViewModel.ReplyNode.replyToThread( - for: replyToID, - from: response.value.ancestors, - domain: domain, - managedObjectContext: viewModel.context.managedObjectContext - ) - viewModel.descendantNodes.value = ThreadViewModel.LeafNode.tree( - for: rootNode.statusID, - from: response.value.descendants, - domain: domain, - managedObjectContext: viewModel.context.managedObjectContext - ) + guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + stateMachine.enter(Fail.self) + return + } + + guard let threadContext = viewModel.threadContext else { + stateMachine.enter(Fail.self) + return + } + + Task { + do { + let response = try await viewModel.context.apiService.statusContext( + statusID: threadContext.statusID, + authenticationBox: authenticationBox + ) + + await enter(state: NoMore.self) + + // assert(!Thread.isMainThread) + // await Task.sleep(1_000_000_000) // 1s delay to prevent UI render issue + + viewModel.mastodonStatusThreadViewModel.appendAncestor( + domain: threadContext.domain, + nodes: MastodonStatusThreadViewModel.Node.replyToThread( + for: threadContext.replyToID, + from: response.value.ancestors + ) + ) + viewModel.mastodonStatusThreadViewModel.appendDescendant( + domain: threadContext.domain, + nodes: MastodonStatusThreadViewModel.Node.children( + of: threadContext.statusID, + from: response.value.descendants + ) + ) + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch status context for \(threadContext.statusID) fail: \(error.localizedDescription)") + await enter(state: Fail.self) + } + } - .store(in: &viewModel.disposeBag) } } diff --git a/Mastodon/Scene/Thread/ThreadViewModel.swift b/Mastodon/Scene/Thread/ThreadViewModel.swift index 7c2f07c31..5a3127e66 100644 --- a/Mastodon/Scene/Thread/ThreadViewModel.swift +++ b/Mastodon/Scene/Thread/ThreadViewModel.swift @@ -13,24 +13,31 @@ import CoreDataStack import GameplayKit import MastodonSDK import MastodonMeta +import MastodonAsset +import MastodonLocalization class ThreadViewModel { + let logger = Logger(subsystem: "ThreadViewModel", category: "ViewModel") + var disposeBag = Set() var rootItemObserver: AnyCancellable? // input let context: AppContext - let rootNode: CurrentValueSubject - let rootItem: CurrentValueSubject - let cellFrameCache = NSCache() - let existStatusFetchedResultsController: StatusFetchedResultsController + let mastodonStatusThreadViewModel: MastodonStatusThreadViewModel - weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? - weak var tableView: UITableView? +// let cellFrameCache = NSCache() +// let existStatusFetchedResultsController: StatusFetchedResultsController + +// weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? +// weak var tableView: UITableView? // output - var diffableDataSource: UITableViewDiffableDataSource? + var diffableDataSource: UITableViewDiffableDataSource? + @Published var root: StatusItem.Thread? + @Published var threadContext: ThreadContext? + private(set) lazy var loadThreadStateMachine: GKStateMachine = { let stateMachine = GKStateMachine(states: [ LoadThreadState.Initial(viewModel: self), @@ -42,153 +49,174 @@ class ThreadViewModel { stateMachine.enter(LoadThreadState.Initial.self) return stateMachine }() - let ancestorNodes = CurrentValueSubject<[ReplyNode], Never>([]) - let ancestorItems = CurrentValueSubject<[Item], Never>([]) - let descendantNodes = CurrentValueSubject<[LeafNode], Never>([]) - let descendantItems = CurrentValueSubject<[Item], Never>([]) - let navigationBarTitle: CurrentValueSubject - let navigationBarTitleEmojiMeta: CurrentValueSubject + @Published var navigationBarTitle: MastodonMetaContent? - init(context: AppContext, optionalStatus: Status?) { + init( + context: AppContext, + optionalRoot: StatusItem.Thread? + ) { self.context = context - self.rootNode = CurrentValueSubject(optionalStatus.flatMap { RootNode(domain: $0.domain, statusID: $0.id, replyToID: $0.inReplyToID) }) - self.rootItem = CurrentValueSubject(optionalStatus.flatMap { Item.root(statusObjectID: $0.objectID, attribute: Item.StatusAttribute()) }) - self.existStatusFetchedResultsController = StatusFetchedResultsController(managedObjectContext: context.managedObjectContext, domain: nil, additionalTweetPredicate: nil) - self.navigationBarTitle = CurrentValueSubject( - optionalStatus.flatMap { L10n.Scene.Thread.title($0.author.displayNameWithFallback) }) - self.navigationBarTitleEmojiMeta = CurrentValueSubject(optionalStatus.flatMap { $0.author.emojiMeta } ?? [:]) + self.root = optionalRoot + self.mastodonStatusThreadViewModel = MastodonStatusThreadViewModel(context: context) +// self.rootNode = CurrentValueSubject(optionalStatus.flatMap { RootNode(domain: $0.domain, statusID: $0.id, replyToID: $0.inReplyToID) }) +// self.rootItem = CurrentValueSubject(optionalStatus.flatMap { Item.root(statusObjectID: $0.objectID, attribute: Item.StatusAttribute()) }) +// self.existStatusFetchedResultsController = StatusFetchedResultsController(managedObjectContext: context.managedObjectContext, domain: nil, additionalTweetPredicate: nil) +// self.navigationBarTitle = CurrentValueSubject( +// optionalStatus.flatMap { L10n.Scene.Thread.title($0.author.displayNameWithFallback) }) +// self.navigationBarTitleEmojiMeta = CurrentValueSubject(optionalStatus.flatMap { $0.author.emojis.asDictionary } ?? [:]) + // end init - // bind fetcher domain - context.authenticationService.activeMastodonAuthenticationBox - .receive(on: RunLoop.main) - .sink { [weak self] box in + ManagedObjectObserver.observe(context: context.managedObjectContext) + .sink(receiveCompletion: { completion in + // do nohting + }, receiveValue: { [weak self] changes in guard let self = self else { return } - self.existStatusFetchedResultsController.domain.value = box?.domain - } + + let objectIDs: [NSManagedObjectID] = changes.changeTypes.compactMap { changeType in + guard case let .delete(object) = changeType else { return nil } + return object.objectID + } + + self.delete(objectIDs: objectIDs) + }) .store(in: &disposeBag) - rootNode +// // bind fetcher domain +// context.authenticationService.activeMastodonAuthenticationBox +// .receive(on: RunLoop.main) +// .sink { [weak self] box in +// guard let self = self else { return } +// self.existStatusFetchedResultsController.domain.value = box?.domain +// } +// .store(in: &disposeBag) +// +// rootNode +// .receive(on: DispatchQueue.main) +// .sink { [weak self] rootNode in +// guard let self = self else { return } +// guard rootNode != nil else { return } +// self.loadThreadStateMachine.enter(LoadThreadState.Loading.self) +// } +// .store(in: &disposeBag) + + $root .receive(on: DispatchQueue.main) - .sink { [weak self] rootNode in + .sink { [weak self] root in guard let self = self else { return } - guard rootNode != nil else { return } - self.loadThreadStateMachine.enter(LoadThreadState.Loading.self) + guard case let .root(threadContext) = root else { return } + guard let status = threadContext.status.object(in: self.context.managedObjectContext) else { return } + + // bind threadContext + self.threadContext = .init( + domain: status.domain, + statusID: status.id, + replyToID: status.inReplyToID + ) + + // bind titleView + self.navigationBarTitle = { + let title = L10n.Scene.Thread.title(status.author.displayNameWithFallback) + let content = MastodonContent(content: title, emojis: status.author.emojis.asDictionary) + return try? MastodonMetaContent.convert(document: content) + }() } .store(in: &disposeBag) - - if optionalStatus == nil { - rootItem - .receive(on: DispatchQueue.main) - .sink { [weak self] rootItem in - guard let self = self else { return } - guard case let .root(objectID, _) = rootItem else { return } - self.context.managedObjectContext.perform { - guard let status = self.context.managedObjectContext.object(with: objectID) as? Status else { - return - } - self.rootNode.value = RootNode(domain: status.domain, statusID: status.id, replyToID: status.inReplyToID) - self.navigationBarTitle.value = L10n.Scene.Thread.title(status.author.displayNameWithFallback) - self.navigationBarTitleEmojiMeta.value = status.author.emojiMeta - } - } - .store(in: &disposeBag) - } - - rootItem - .receive(on: DispatchQueue.main) - .sink { [weak self] rootItem in - guard let self = self else { return } - guard case let .root(objectID, _) = rootItem else { return } - self.context.managedObjectContext.perform { - guard let status = self.context.managedObjectContext.object(with: objectID) as? Status else { - return - } - self.rootItemObserver = ManagedObjectObserver.observe(object: status) - .receive(on: DispatchQueue.main) - .sink(receiveCompletion: { _ in - // do nothing - }, receiveValue: { [weak self] change in - guard let self = self else { return } - switch change.changeType { - case .delete: - self.rootItem.value = nil - default: - break - } - }) - } - } - .store(in: &disposeBag) - - ancestorNodes - .receive(on: DispatchQueue.main) - .compactMap { [weak self] nodes -> [Item]? in - guard let self = self else { return nil } - guard !nodes.isEmpty else { return [] } - - guard let diffableDataSource = self.diffableDataSource else { return nil } - let oldSnapshot = diffableDataSource.snapshot() - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] - for item in oldSnapshot.itemIdentifiers { - switch item { - case .reply(let objectID, let attribute): - oldSnapshotAttributeDict[objectID] = attribute - default: - break - } - } - - var items: [Item] = [] - for node in nodes { - let attribute = oldSnapshotAttributeDict[node.statusObjectID] ?? Item.StatusAttribute() - items.append(Item.reply(statusObjectID: node.statusObjectID, attribute: attribute)) - } - - return items.reversed() - } - .assign(to: \.value, on: ancestorItems) - .store(in: &disposeBag) - - descendantNodes - .receive(on: DispatchQueue.main) - .compactMap { [weak self] nodes -> [Item]? in - guard let self = self else { return nil } - guard !nodes.isEmpty else { return [] } - - guard let diffableDataSource = self.diffableDataSource else { return nil } - let oldSnapshot = diffableDataSource.snapshot() - var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] - for item in oldSnapshot.itemIdentifiers { - switch item { - case .leaf(let objectID, let attribute): - oldSnapshotAttributeDict[objectID] = attribute - default: - break - } - } - - var items: [Item] = [] - - func buildThread(node: LeafNode) { - let attribute = oldSnapshotAttributeDict[node.objectID] ?? Item.StatusAttribute() - items.append(Item.leaf(statusObjectID: node.objectID, attribute: attribute)) - // only expand the first child - if let firstChild = node.children.first { - if !node.isChildrenExpanded { - items.append(Item.leafBottomLoader(statusObjectID: node.objectID)) - } else { - buildThread(node: firstChild) - } - } - } - - for node in nodes { - buildThread(node: node) - } - return items - } - .assign(to: \.value, on: descendantItems) - .store(in: &disposeBag) + +// rootItem +// .receive(on: DispatchQueue.main) +// .sink { [weak self] rootItem in +// guard let self = self else { return } +// guard case let .root(objectID, _) = rootItem else { return } +// self.context.managedObjectContext.perform { +// guard let status = self.context.managedObjectContext.object(with: objectID) as? Status else { +// return +// } +// self.rootItemObserver = ManagedObjectObserver.observe(object: status) +// .receive(on: DispatchQueue.main) +// .sink(receiveCompletion: { _ in +// // do nothing +// }, receiveValue: { [weak self] change in +// guard let self = self else { return } +// switch change.changeType { +// case .delete: +// self.rootItem.value = nil +// default: +// break +// } +// }) +// } +// } +// .store(in: &disposeBag) +// +// ancestorNodes +// .receive(on: DispatchQueue.main) +// .compactMap { [weak self] nodes -> [Item]? in +// guard let self = self else { return nil } +// guard !nodes.isEmpty else { return [] } +// +// guard let diffableDataSource = self.diffableDataSource else { return nil } +// let oldSnapshot = diffableDataSource.snapshot() +// var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] +// for item in oldSnapshot.itemIdentifiers { +// switch item { +// case .reply(let objectID, let attribute): +// oldSnapshotAttributeDict[objectID] = attribute +// default: +// break +// } +// } +// +// var items: [Item] = [] +// for node in nodes { +// let attribute = oldSnapshotAttributeDict[node.statusObjectID] ?? Item.StatusAttribute() +// items.append(Item.reply(statusObjectID: node.statusObjectID, attribute: attribute)) +// } +// +// return items.reversed() +// } +// .assign(to: \.value, on: ancestorItems) +// .store(in: &disposeBag) +// +// descendantNodes +// .receive(on: DispatchQueue.main) +// .compactMap { [weak self] nodes -> [Item]? in +// guard let self = self else { return nil } +// guard !nodes.isEmpty else { return [] } +// +// guard let diffableDataSource = self.diffableDataSource else { return nil } +// let oldSnapshot = diffableDataSource.snapshot() +// var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] +// for item in oldSnapshot.itemIdentifiers { +// switch item { +// case .leaf(let objectID, let attribute): +// oldSnapshotAttributeDict[objectID] = attribute +// default: +// break +// } +// } +// +// var items: [Item] = [] +// +// func buildThread(node: LeafNode) { +// let attribute = oldSnapshotAttributeDict[node.objectID] ?? Item.StatusAttribute() +// items.append(Item.leaf(statusObjectID: node.objectID, attribute: attribute)) +// // only expand the first child +// if let firstChild = node.children.first { +// if !node.isChildrenExpanded { +// items.append(Item.leafBottomLoader(statusObjectID: node.objectID)) +// } else { +// buildThread(node: firstChild) +// } +// } +// } +// +// for node in nodes { +// buildThread(node: node) +// } +// return items +// } +// .assign(to: \.value, on: descendantItems) +// .store(in: &disposeBag) } deinit { @@ -199,119 +227,23 @@ class ThreadViewModel { extension ThreadViewModel { - struct RootNode { + struct ThreadContext { let domain: String let statusID: Mastodon.Entity.Status.ID let replyToID: Mastodon.Entity.Status.ID? } - class ReplyNode { - let statusID: Mastodon.Entity.Status.ID - let statusObjectID: NSManagedObjectID - - init(statusID: Mastodon.Entity.Status.ID, statusObjectID: NSManagedObjectID) { - self.statusID = statusID - self.statusObjectID = statusObjectID - } - - static func replyToThread( - for replyToID: Mastodon.Entity.Status.ID?, - from statuses: [Mastodon.Entity.Status], - domain: String, - managedObjectContext: NSManagedObjectContext - ) -> [ReplyNode] { - guard let replyToID = replyToID else { - return [] - } - - var nodes: [ReplyNode] = [] - managedObjectContext.performAndWait { - let request = Status.sortedFetchRequest - request.predicate = Status.predicate(domain: domain, ids: statuses.map { $0.id }) - request.fetchLimit = statuses.count - let objects = managedObjectContext.safeFetch(request) - - var objectDict: [Mastodon.Entity.Status.ID: Status] = [:] - for object in objects { - objectDict[object.id] = object - } - var nextID: Mastodon.Entity.Status.ID? = replyToID - while let _nextID = nextID { - guard let object = objectDict[_nextID] else { break } - nodes.append(ThreadViewModel.ReplyNode(statusID: _nextID, statusObjectID: object.objectID)) - nextID = object.inReplyToID - } - } - return nodes - } - } - - class LeafNode { - let statusID: Mastodon.Entity.Status.ID - let objectID: NSManagedObjectID - let repliesCount: Int - let children: [LeafNode] - - var isChildrenExpanded: Bool = false // default collapsed - - init( - statusID: Mastodon.Entity.Status.ID, - objectID: NSManagedObjectID, - repliesCount: Int, - children: [ThreadViewModel.LeafNode] - ) { - self.statusID = statusID - self.objectID = objectID - self.repliesCount = repliesCount - self.children = children - } - - static func tree( - for statusID: Mastodon.Entity.Status.ID, - from statuses: [Mastodon.Entity.Status], - domain: String, - managedObjectContext: NSManagedObjectContext - ) -> [LeafNode] { - // make an cache collection - var objectDict: [Mastodon.Entity.Status.ID: Status] = [:] - - managedObjectContext.performAndWait { - let request = Status.sortedFetchRequest - request.predicate = Status.predicate(domain: domain, ids: statuses.map { $0.id }) - request.fetchLimit = statuses.count - let objects = managedObjectContext.safeFetch(request) - - for object in objects { - objectDict[object.id] = object - } - } - - var tree: [LeafNode] = [] - let firstTierStatuses = statuses.filter { $0.inReplyToID == statusID } - for status in firstTierStatuses { - guard let node = node(of: status.id, objectDict: objectDict) else { continue } - tree.append(node) - } - - return tree - } - - static func node( - of statusID: Mastodon.Entity.Status.ID, - objectDict: [Mastodon.Entity.Status.ID: Status] - ) -> LeafNode? { - guard let object = objectDict[statusID] else { return nil } - let replies = (object.replyFrom ?? Set()).sorted( - by: { $0.createdAt > $1.createdAt } // order by date - ) - let children = replies.compactMap { node(of: $0.id, objectDict: objectDict) } - return LeafNode( - statusID: statusID, - objectID: object.objectID, - repliesCount: object.repliesCount?.intValue ?? 0, - children: children - ) - } - } - +} + +extension ThreadViewModel { + func delete(objectIDs: [NSManagedObjectID]) { + if let root = self.root, + case let .root(threadContext) = root, + objectIDs.contains(threadContext.status.objectID) + { + self.root = nil + } + + self.mastodonStatusThreadViewModel.delete(objectIDs: objectIDs) + } } diff --git a/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift b/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift index ec4ac35ad..8078ba1c1 100644 --- a/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift +++ b/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift @@ -58,7 +58,7 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { // set to image hidden toVC.pagingViewController.view.alpha = 0 // set from image hidden. update hidden when paging. seealso: `MediaPreviewViewController` - transitionItem.source.updateAppearance(position: .start, index: toVC.viewModel.currentPage.value) + transitionItem.source.updateAppearance(position: .start, index: toVC.viewModel.currentPage) // Set transition image view assert(transitionItem.initialFrame != nil) @@ -162,7 +162,7 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { var needsMaskWithAnimation = true let maskLayerToRect: CGRect? = { - guard case .mosaic = transitionItem.source else { return nil } + guard case .attachments = transitionItem.source else { return nil } guard let navigationBar = toVC.navigationController?.navigationBar, let navigationBarSuperView = navigationBar.superview else { return nil } let navigationBarFrameInWindow = navigationBarSuperView.convert(navigationBar.frame, to: nil) @@ -183,7 +183,7 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { }() let maskLayerToPath = maskLayerToRect.flatMap { UIBezierPath(rect: $0) }?.cgPath let maskLayerToFinalRect: CGRect? = { - guard case .mosaic = transitionItem.source else { return nil } + guard case .attachments = transitionItem.source else { return nil } var rect = maskLayerToRect ?? transitionMaskView.frame // clip tabBar when bar visible guard let tabBarController = toVC.tabBarController, @@ -450,7 +450,7 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { var needsMaskWithAnimation = true let maskLayerToRect: CGRect? = { - guard case .mosaic = transitionItem.source else { return nil } + guard case .attachments = transitionItem.source else { return nil } guard let navigationBar = toVC.navigationController?.navigationBar, let navigationBarSuperView = navigationBar.superview else { return nil } let navigationBarFrameInWindow = navigationBarSuperView.convert(navigationBar.frame, to: nil) @@ -476,7 +476,7 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { } let maskLayerToFinalRect: CGRect? = { - guard case .mosaic = transitionItem.source else { return nil } + guard case .attachments = transitionItem.source else { return nil } var rect = maskLayerToRect ?? transitionMaskView.frame // clip rect bottom when tabBar visible guard let tabBarController = toVC.tabBarController, diff --git a/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionController.swift b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionController.swift index bd5781b0b..d8d822bc5 100644 --- a/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionController.swift +++ b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionController.swift @@ -76,7 +76,7 @@ extension MediaPreviewTransitionController: UIViewControllerTransitioningDelegat return MediaHostToMediaPreviewViewControllerAnimatedTransitioning( operation: .push, - transitionItem: mediaPreviewViewController.viewModel.pushTransitionItem, + transitionItem: mediaPreviewViewController.viewModel.transitionItem, panGestureRecognizer: panGestureRecognizer ) } @@ -94,7 +94,7 @@ extension MediaPreviewTransitionController: UIViewControllerTransitioningDelegat return MediaHostToMediaPreviewViewControllerAnimatedTransitioning( operation: .pop, - transitionItem: mediaPreviewViewController.viewModel.pushTransitionItem, + transitionItem: mediaPreviewViewController.viewModel.transitionItem, panGestureRecognizer: panGestureRecognizer ) } diff --git a/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionItem.swift b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionItem.swift index 7024d3056..42efde451 100644 --- a/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionItem.swift +++ b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionItem.swift @@ -7,6 +7,7 @@ import UIKit import CoreData +import MastodonUI class MediaPreviewTransitionItem: Identifiable { @@ -43,21 +44,24 @@ class MediaPreviewTransitionItem: Identifiable { extension MediaPreviewTransitionItem { enum Source { - case mosaic(MosaicImageViewContainer) + case attachment(MediaView) + case attachments(MediaGridContainerView) case profileAvatar(ProfileHeaderView) case profileBanner(ProfileHeaderView) func updateAppearance(position: UIViewAnimatingPosition, index: Int?) { let alpha: CGFloat = position == .end ? 1 : 0 switch self { - case .mosaic(let mosaicImageViewContainer): + case .attachment(let mediaView): + mediaView.alpha = alpha + case .attachments(let mediaGridContainerView): if let index = index { - mosaicImageViewContainer.setImageView(alpha: 0, index: index) + mediaGridContainerView.setAlpha(0, index: index) } else { - mosaicImageViewContainer.setImageViews(alpha: alpha) + mediaGridContainerView.setAlpha(alpha) } case .profileAvatar(let profileHeaderView): - profileHeaderView.avatarImageView.alpha = alpha + profileHeaderView.avatarButton.alpha = alpha case .profileBanner: break // keep source } diff --git a/Mastodon/Scene/Transition/MediaPreview/MediaPreviewableViewController.swift b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewableViewController.swift index 1fedf0d40..696b72abd 100644 --- a/Mastodon/Scene/Transition/MediaPreview/MediaPreviewableViewController.swift +++ b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewableViewController.swift @@ -15,12 +15,14 @@ protocol MediaPreviewableViewController: UIViewController { extension MediaPreviewableViewController { func sourceFrame(transitionItem: MediaPreviewTransitionItem, index: Int) -> CGRect? { switch transitionItem.source { - case .mosaic(let mosaicImageViewContainer): - guard index < mosaicImageViewContainer.imageViews.count else { return nil } - let imageView = mosaicImageViewContainer.imageViews[index] - return imageView.superview?.convert(imageView.frame, to: nil) + case .attachment(let mediaView): + return mediaView.superview?.convert(mediaView.frame, to: nil) + case .attachments(let mediaGridContainerView): + guard index < mediaGridContainerView.mediaViews.count else { return nil } + let mediaView = mediaGridContainerView.mediaViews[index] + return mediaView.superview?.convert(mediaView.frame, to: nil) case .profileAvatar(let profileHeaderView): - return profileHeaderView.avatarImageView.superview?.convert(profileHeaderView.avatarImageView.frame, to: nil) + return profileHeaderView.avatarButton.superview?.convert(profileHeaderView.avatarButton.frame, to: nil) case .profileBanner: return nil // fallback to snapshot.frame } diff --git a/Mastodon/Scene/Wizard/WizardViewController.swift b/Mastodon/Scene/Wizard/WizardViewController.swift index 9152e64f1..d7530d49b 100644 --- a/Mastodon/Scene/Wizard/WizardViewController.swift +++ b/Mastodon/Scene/Wizard/WizardViewController.swift @@ -8,6 +8,8 @@ import os.log import UIKit import Combine +import MastodonAsset +import MastodonLocalization protocol WizardViewControllerDelegate: AnyObject { func readyToLayoutItem(_ wizardViewController: WizardViewController, item: WizardViewController.Item) -> Bool diff --git a/Mastodon/Service/APIService/APIService+APIError.swift b/Mastodon/Service/APIService/APIService+APIError.swift index 181495cf4..5670f8053 100644 --- a/Mastodon/Service/APIService/APIService+APIError.swift +++ b/Mastodon/Service/APIService/APIService+APIError.swift @@ -7,6 +7,7 @@ import UIKit import MastodonSDK +import MastodonLocalization extension APIService { enum APIError: Error { diff --git a/Mastodon/Service/APIService/APIService+Account.swift b/Mastodon/Service/APIService/APIService+Account.swift index 7638f2444..7bd262893 100644 --- a/Mastodon/Service/APIService/APIService+Account.swift +++ b/Mastodon/Service/APIService/APIService+Account.swift @@ -5,6 +5,7 @@ // Created by MainasuK Cirno on 2021/2/2. // +import os.log import Foundation import Combine import CommonOSLog @@ -16,42 +17,61 @@ extension APIService { domain: String, userID: Mastodon.Entity.Account.ID, authorization: Mastodon.API.OAuth.Authorization - ) -> AnyPublisher, Error> { - return Mastodon.API.Account.accountInfo( + ) async throws -> Mastodon.Response.Content { + let response = try await Mastodon.API.Account.accountInfo( session: session, domain: domain, userID: userID, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - let log = OSLog.api - let account = response.value - - return self.backgroundManagedObjectContext.performChanges { - let (mastodonUser, isCreated) = APIService.CoreData.createOrMergeMastodonUser( - into: self.backgroundManagedObjectContext, - for: nil, - in: domain, - entity: account, - userCache: nil, - networkDate: response.networkDate, - log: log + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let result = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: domain, + entity: response.value, + cache: nil, + networkDate: response.networkDate ) - let flag = isCreated ? "+" : "-" - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", ((#file as NSString).lastPathComponent), #line, #function, flag, mastodonUser.id, mastodonUser.username) - } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + ) + + let flag = result.isNewInsertion ? "+" : "-" + let logger = Logger(subsystem: "APIService", category: "AccountInfo") + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch mastodon user [\(flag)](\(response.value.id))\(response.value.username)") } - .eraseToAnyPublisher() + + return response +// .flatMap { response -> AnyPublisher, Error> in +// let log = OSLog.api +// let account = response.value +// +// return self.backgroundManagedObjectContext.performChanges { +// let (mastodonUser, isCreated) = APIService.CoreData.createOrMergeMastodonUser( +// into: self.backgroundManagedObjectContext, +// for: nil, +// in: domain, +// entity: account, +// userCache: nil, +// networkDate: response.networkDate, +// log: log +// ) +// let flag = isCreated ? "+" : "-" +// os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", ((#file as NSString).lastPathComponent), #line, #function, flag, mastodonUser.id, mastodonUser.username) +// } +// .setFailureType(to: Error.self) +// .tryMap { result -> Mastodon.Response.Content in +// switch result { +// case .success: +// return response +// case .failure(let error): +// throw error +// } +// } +// .eraseToAnyPublisher() +// } +// .eraseToAnyPublisher() } } @@ -71,18 +91,19 @@ extension APIService { let log = OSLog.api let account = response.value - return self.backgroundManagedObjectContext.performChanges { - let (mastodonUser, isCreated) = APIService.CoreData.createOrMergeMastodonUser( - into: self.backgroundManagedObjectContext, - for: nil, - in: domain, - entity: account, - userCache: nil, - networkDate: response.networkDate, - log: log + let managedObjectContext = self.backgroundManagedObjectContext + return managedObjectContext.performChanges { + let result = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: domain, + entity: account, + cache: nil, + networkDate: response.networkDate + ) ) - let flag = isCreated ? "+" : "-" - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: mastodon user [%s](%s)%s verifed", ((#file as NSString).lastPathComponent), #line, #function, flag, mastodonUser.id, mastodonUser.username) + let flag = result.isNewInsertion ? "+" : "-" + os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: mastodon user [%s](%s)%s verifed", ((#file as NSString).lastPathComponent), #line, #function, flag, result.user.id, result.user.username) } .setFailureType(to: Error.self) .tryMap { result -> Mastodon.Response.Content in @@ -102,41 +123,34 @@ extension APIService { domain: String, query: Mastodon.API.Account.UpdateCredentialQuery, authorization: Mastodon.API.OAuth.Authorization - ) -> AnyPublisher, Error> { - return Mastodon.API.Account.updateCredentials( + ) async throws -> Mastodon.Response.Content { + let logger = Logger(subsystem: "APIService", category: "Account") + + let response = try await Mastodon.API.Account.updateCredentials( session: session, domain: domain, query: query, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - let log = OSLog.api - let account = response.value - - return self.backgroundManagedObjectContext.performChanges { - let (mastodonUser, isCreated) = APIService.CoreData.createOrMergeMastodonUser( - into: self.backgroundManagedObjectContext, - for: nil, - in: domain, - entity: account, - userCache: nil, - networkDate: response.networkDate, - log: log) - let flag = isCreated ? "+" : "-" - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: mastodon user [%s](%s)%s verifed", ((#file as NSString).lastPathComponent), #line, #function, flag, mastodonUser.id, mastodonUser.username) - } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let result = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: domain, + entity: response.value, + cache: nil, + networkDate: response.networkDate + ) + ) + let flag = result.isNewInsertion ? "+" : "-" + let userID = response.value.id + let username = response.value.username + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): mastodon user [\(flag)](\(userID)\(username) verifed") } - .eraseToAnyPublisher() + + return response } func accountRegister( diff --git a/Mastodon/Service/APIService/APIService+Block.swift b/Mastodon/Service/APIService/APIService+Block.swift index 209ee361f..428401703 100644 --- a/Mastodon/Service/APIService/APIService+Block.swift +++ b/Mastodon/Service/APIService/APIService+Block.swift @@ -14,184 +14,99 @@ import MastodonSDK extension APIService { + private struct MastodonBlockContext { + let sourceUserID: MastodonUser.ID + let targetUserID: MastodonUser.ID + let targetUsername: String + let isBlocking: Bool + let isFollowing: Bool + } + func toggleBlock( - for mastodonUser: MastodonUser, - activeMastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let impactFeedbackGenerator = UIImpactFeedbackGenerator(style: .light) - let notificationFeedbackGenerator = UINotificationFeedbackGenerator() + user: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let logger = Logger(subsystem: "APIService", category: "Block") - return blockUpdateLocal( - mastodonUserObjectID: mastodonUser.objectID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .receive(on: DispatchQueue.main) - .handleEvents { _ in - impactFeedbackGenerator.prepare() - } receiveOutput: { _ in - impactFeedbackGenerator.impactOccurred() - } receiveCompletion: { completion in - switch completion { - case .failure(let error): - // TODO: handle error - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] local relationship update fail", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - assertionFailure(error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] local relationship update success", ((#file as NSString).lastPathComponent), #line, #function) - break + let managedObjectContext = backgroundManagedObjectContext + let blockContext: MastodonBlockContext = try await managedObjectContext.performChanges { + guard let user = user.object(in: managedObjectContext), + let authentication = authenticationBox.authenticationRecord.object(in: managedObjectContext) + else { + throw APIError.implicit(.badRequest) } - } - .flatMap { blockQueryType, mastodonUserID -> AnyPublisher, Error> in - return self.blockUpdateRemote( - blockQueryType: blockQueryType, - mastodonUserID: mastodonUserID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox + let me = authentication.user + let isBlocking = user.blockingBy.contains(me) + let isFollowing = user.followingBy.contains(me) + // toggle block state + user.update(isBlocking: !isBlocking, by: me) + // update follow state implicitly + if !isBlocking { + // will do block action. set to unfollow + user.update(isFollowing: false, by: me) + } + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Local] update user[\(user.id)](\(user.username)) block state: \(!isBlocking)") + return MastodonBlockContext( + sourceUserID: me.id, + targetUserID: user.id, + targetUsername: user.username, + isBlocking: isBlocking, + isFollowing: isFollowing ) } - .receive(on: DispatchQueue.main) - .handleEvents(receiveCompletion: { [weak self] completion in - guard let self = self else { return } - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: [Relationship] remote friendship update fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - // TODO: handle error - - // rollback - - self.blockUpdateLocal( - mastodonUserObjectID: mastodonUser.objectID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .sink { completion in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Friendship] rollback finish", ((#file as NSString).lastPathComponent), #line, #function) - } receiveValue: { _ in - // do nothing - notificationFeedbackGenerator.prepare() - notificationFeedbackGenerator.notificationOccurred(.error) - } - .store(in: &self.disposeBag) - - case .finished: - notificationFeedbackGenerator.notificationOccurred(.success) - os_log("%{public}s[%{public}ld], %{public}s: [Friendship] remote friendship update success", ((#file as NSString).lastPathComponent), #line, #function) - } - }) - .eraseToAnyPublisher() - } - -} - -extension APIService { - - // update database local and return block query update type for remote request - func blockUpdateLocal( - mastodonUserObjectID: NSManagedObjectID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher<(Mastodon.API.Account.BlockQueryType, MastodonUser.ID), Error> { - let domain = mastodonAuthenticationBox.domain - let requestMastodonUserID = mastodonAuthenticationBox.userID - var _targetMastodonUserID: MastodonUser.ID? - var _queryType: Mastodon.API.Account.BlockQueryType? - let managedObjectContext = backgroundManagedObjectContext - - return managedObjectContext.performChanges { - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - guard let _requestMastodonUser = managedObjectContext.safeFetch(request).first else { - assertionFailure() - return + let result: Result, Error> + do { + if blockContext.isBlocking { + let response = try await Mastodon.API.Account.unblock( + session: session, + domain: authenticationBox.domain, + accountID: blockContext.targetUserID, + authorization: authenticationBox.userAuthorization + ).singleOutput() + result = .success(response) + } else { + let response = try await Mastodon.API.Account.block( + session: session, + domain: authenticationBox.domain, + accountID: blockContext.targetUserID, + authorization: authenticationBox.userAuthorization + ).singleOutput() + result = .success(response) } - - let mastodonUser = managedObjectContext.object(with: mastodonUserObjectID) as! MastodonUser - _targetMastodonUserID = mastodonUser.id - - let isBlocking = (mastodonUser.blockingBy ?? Set()).contains(_requestMastodonUser) - _queryType = isBlocking ? .unblock : .block - mastodonUser.update(isBlocking: !isBlocking, by: _requestMastodonUser) + } catch { + result = .failure(error) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Remote] update user[\(blockContext.targetUserID)](\(blockContext.targetUsername)) block failure: \(error.localizedDescription)") } - .tryMap { result in + + try await managedObjectContext.performChanges { + guard let user = user.object(in: managedObjectContext), + let authentication = authenticationBox.authenticationRecord.object(in: managedObjectContext) + else { return } + let me = authentication.user + switch result { - case .success: - guard let targetMastodonUserID = _targetMastodonUserID, - let queryType = _queryType else { - throw APIError.implicit(.badRequest) - } - return (queryType, targetMastodonUserID) - - case .failure(let error): - assertionFailure(error.localizedDescription) - throw error + case .success(let response): + let relationship = response.value + Persistence.MastodonUser.update( + mastodonUser: user, + context: Persistence.MastodonUser.RelationshipContext( + entity: relationship, + me: me, + networkDate: response.networkDate + ) + ) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Remote] update user[\(blockContext.targetUserID)](\(blockContext.targetUsername)) block state: \(relationship.blocking)") + case .failure: + // rollback + user.update(isBlocking: blockContext.isBlocking, by: me) + user.update(isFollowing: blockContext.isFollowing, by: me) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Remote] rollback user[\(blockContext.targetUserID)](\(blockContext.targetUsername)) block state") } } - .eraseToAnyPublisher() - } - - func blockUpdateRemote( - blockQueryType: Mastodon.API.Account.BlockQueryType, - mastodonUserID: MastodonUser.ID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let domain = mastodonAuthenticationBox.domain - let authorization = mastodonAuthenticationBox.userAuthorization - let requestMastodonUserID = mastodonAuthenticationBox.userID - - return Mastodon.API.Account.block( - session: session, - domain: domain, - accountID: mastodonUserID, - blockQueryType: blockQueryType, - authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - let managedObjectContext = self.backgroundManagedObjectContext - return managedObjectContext.performChanges { - let requestMastodonUserRequest = MastodonUser.sortedFetchRequest - requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - requestMastodonUserRequest.fetchLimit = 1 - guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } - - let lookUpMastodonUserRequest = MastodonUser.sortedFetchRequest - lookUpMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: mastodonUserID) - lookUpMastodonUserRequest.fetchLimit = 1 - let lookUpMastodonUser = managedObjectContext.safeFetch(lookUpMastodonUserRequest).first - - if let lookUpMastodonUser = lookUpMastodonUser { - let entity = response.value - APIService.CoreData.update(user: lookUpMastodonUser, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) - } - } - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() - } - .handleEvents(receiveCompletion: { [weak self] completion in - guard let _ = self else { return } - switch completion { - case .failure(let error): - // TODO: handle error in banner - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] block update fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - - case .finished: - // TODO: update relationship - switch blockQueryType { - case .block: - break - case .unblock: - break - } - } - }) - .eraseToAnyPublisher() + + let response = try result.get() + return response } } - diff --git a/Mastodon/Service/APIService/APIService+Favorite.swift b/Mastodon/Service/APIService/APIService+Favorite.swift index 78a20d10a..20c2fe729 100644 --- a/Mastodon/Service/APIService/APIService+Favorite.swift +++ b/Mastodon/Service/APIService/APIService+Favorite.swift @@ -15,122 +15,94 @@ import CommonOSLog extension APIService { - // make local state change only - func favorite( - statusObjectID: NSManagedObjectID, - mastodonUserObjectID: NSManagedObjectID, - favoriteKind: Mastodon.API.Favorites.FavoriteKind - ) -> AnyPublisher { - var _targetStatusID: Status.ID? - let managedObjectContext = backgroundManagedObjectContext - return managedObjectContext.performChanges { - let status = managedObjectContext.object(with: statusObjectID) as! Status - let mastodonUser = managedObjectContext.object(with: mastodonUserObjectID) as! MastodonUser - let targetStatus = status.reblog ?? status - let targetStatusID = targetStatus.id - _targetStatusID = targetStatusID - - let favouritesCount: NSNumber - switch favoriteKind { - case .create: - favouritesCount = NSNumber(value: targetStatus.favouritesCount.intValue + 1) - case .destroy: - favouritesCount = NSNumber(value: max(0, targetStatus.favouritesCount.intValue - 1)) - } - targetStatus.update(favouritesCount: favouritesCount) - targetStatus.update(liked: favoriteKind == .create, by: mastodonUser) - - } - .tryMap { result in - switch result { - case .success: - guard let targetStatusID = _targetStatusID else { - throw APIError.implicit(.badRequest) - } - return targetStatusID - - case .failure(let error): - assertionFailure(error.localizedDescription) - throw error - } - } - .eraseToAnyPublisher() + private struct MastodonFavoriteContext { + let statusID: Status.ID + let isFavorited: Bool + let favoritedCount: Int64 } - // send favorite request to remote func favorite( - statusID: Mastodon.Entity.Status.ID, - favoriteKind: Mastodon.API.Favorites.FavoriteKind, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization - let requestMastodonUserID = mastodonAuthenticationBox.userID - return Mastodon.API.Favorites.favorites(domain: mastodonAuthenticationBox.domain, statusID: statusID, session: session, authorization: authorization, favoriteKind: favoriteKind) - .map { response -> AnyPublisher, Error> in - let log = OSLog.api - let entity = response.value - let managedObjectContext = self.backgroundManagedObjectContext - - return managedObjectContext.performChanges { - let _requestMastodonUser: MastodonUser? = { - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: mastodonAuthenticationBox.domain, id: requestMastodonUserID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - let _oldStatus: Status? = { - let request = Status.sortedFetchRequest - request.predicate = Status.predicate(domain: mastodonAuthenticationBox.domain, id: statusID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - request.relationshipKeyPathsForPrefetching = [#keyPath(Status.reblog)] - do { - return try managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - - guard let requestMastodonUser = _requestMastodonUser, - let oldStatus = _oldStatus else { - assertionFailure() - return - } - APIService.CoreData.merge(status: oldStatus, entity: entity, requestMastodonUser: requestMastodonUser, domain: mastodonAuthenticationBox.domain, networkDate: response.networkDate) - if favoriteKind == .destroy { - oldStatus.update(favouritesCount: NSNumber(value: max(0, oldStatus.favouritesCount.intValue - 1))) - } - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: did update status %{public}s like status to: %{public}s. now %ld likes", ((#file as NSString).lastPathComponent), #line, #function, entity.id, entity.favourited.flatMap { $0 ? "like" : "unlike" } ?? "", entity.favouritesCount ) - } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + record: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let logger = Logger(subsystem: "APIService", category: "Favorite") + + let managedObjectContext = backgroundManagedObjectContext + + // update like state and retrieve like context + let favoriteContext: MastodonFavoriteContext = try await managedObjectContext.performChanges { + guard let authentication = authenticationBox.authenticationRecord.object(in: managedObjectContext), + let _status = record.object(in: managedObjectContext) + else { + throw APIError.implicit(.badRequest) } - .switchToLatest() - .handleEvents(receiveCompletion: { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: error:", ((#file as NSString).lastPathComponent), #line, #function) - debugPrint(error) - case .finished: - break + let me = authentication.user + let status = _status.reblog ?? _status + let isFavorited = status.favouritedBy.contains(me) + let favoritedCount = status.favouritesCount + let favoriteCount = isFavorited ? favoritedCount - 1 : favoritedCount + 1 + status.update(liked: !isFavorited, by: me) + status.update(favouritesCount: favoriteCount) + let context = MastodonFavoriteContext( + statusID: status.id, + isFavorited: isFavorited, + favoritedCount: favoritedCount + ) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): update status favorite: \(!isFavorited), \(favoriteCount)") + return context + } + + // request like or undo like + let result: Result, Error> + do { + let response = try await Mastodon.API.Favorites.favorites( + domain: authenticationBox.domain, + statusID: favoriteContext.statusID, + session: session, + authorization: authenticationBox.userAuthorization, + favoriteKind: favoriteContext.isFavorited ? .destroy : .create + ).singleOutput() + result = .success(response) + } catch { + result = .failure(error) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): update favorite failure: \(error.localizedDescription)") + } + + // update like state + try await managedObjectContext.performChanges { + guard let authentication = authenticationBox.authenticationRecord.object(in: managedObjectContext), + let _status = record.object(in: managedObjectContext) + else { return } + let me = authentication.user + let status = _status.reblog ?? _status + + switch result { + case .success(let response): + _ = Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: authenticationBox.domain, + entity: response.value, + me: me, + statusCache: nil, + userCache: nil, + networkDate: response.networkDate + ) + ) + if favoriteContext.isFavorited { + status.update(favouritesCount: max(0, status.favouritesCount - 1)) // undo API return count has delay. Needs -1 local } - }) - .eraseToAnyPublisher() + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): update status favorite: \(response.value.favourited.debugDescription)") + case .failure: + // rollback + status.update(liked: favoriteContext.isFavorited, by: me) + status.update(favouritesCount: favoriteContext.favoritedCount) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): rollback status favorite") + } + } + + let response = try result.get() + return response } } @@ -139,41 +111,42 @@ extension APIService { func favoritedStatuses( limit: Int = onceRequestStatusMaxCount, maxID: String? = nil, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - - let requestMastodonUserID = mastodonAuthenticationBox.userID + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Status]> { let query = Mastodon.API.Favorites.FavoriteStatusesQuery(limit: limit, minID: nil, maxID: maxID) - return Mastodon.API.Favorites.favoritedStatus( - domain: mastodonAuthenticationBox.domain, + + let response = try await Mastodon.API.Favorites.favoritedStatus( + domain: authenticationBox.domain, session: session, - authorization: mastodonAuthenticationBox.userAuthorization, + authorization: authenticationBox.userAuthorization, query: query - ) - .map { response -> AnyPublisher, Error> in - let log = OSLog.api - - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: mastodonAuthenticationBox.domain, - query: query, - response: response, - persistType: .likeList, - requestMastodonUserID: requestMastodonUserID, - log: log - ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Status]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { + assertionFailure() + return } - .switchToLatest() - .eraseToAnyPublisher() - } + + for entity in response.value { + let result = Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: authenticationBox.domain, + entity: entity, + me: me, + statusCache: nil, + userCache: nil, + networkDate: response.networkDate + ) + ) + + result.status.update(liked: true, by: me) + result.status.reblog?.update(liked: true, by: me) + } // end for … in + } + + return response + } // end func } diff --git a/Mastodon/Service/APIService/APIService+Follow.swift b/Mastodon/Service/APIService/APIService+Follow.swift index ac2ccbead..1e908a2e4 100644 --- a/Mastodon/Service/APIService/APIService+Follow.swift +++ b/Mastodon/Service/APIService/APIService+Follow.swift @@ -14,6 +14,14 @@ import MastodonSDK extension APIService { + private struct MastodonFollowContext { + let sourceUserID: MastodonUser.ID + let targetUserID: MastodonUser.ID + let isFollowing: Bool + let isPending: Bool + let needsUnfollow: Bool + } + /// Toggle friendship between target MastodonUser and current MastodonUser /// /// Following / Following pending <-> Unfollow @@ -23,197 +31,95 @@ extension APIService { /// - activeMastodonAuthenticationBox: `AuthenticationService.MastodonAuthenticationBox` /// - Returns: publisher for `Relationship` func toggleFollow( - for mastodonUser: MastodonUser, - activeMastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { + user: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let logger = Logger(subsystem: "APIService", category: "Follow") - let impactFeedbackGenerator = UIImpactFeedbackGenerator(style: .light) - let notificationFeedbackGenerator = UINotificationFeedbackGenerator() - - - return followUpdateLocal( - mastodonUserObjectID: mastodonUser.objectID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .receive(on: DispatchQueue.main) - .handleEvents { _ in - impactFeedbackGenerator.prepare() - } receiveOutput: { _ in - impactFeedbackGenerator.impactOccurred() - } receiveCompletion: { completion in - switch completion { - case .failure(let error): - // TODO: handle error - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] local relationship update fail", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - assertionFailure(error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] local relationship update success", ((#file as NSString).lastPathComponent), #line, #function) - break - } - } - .flatMap { followQueryType, mastodonUserID -> AnyPublisher, Error> in - return self.followUpdateRemote( - followQueryType: followQueryType, - mastodonUserID: mastodonUserID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - } - .receive(on: DispatchQueue.main) - .handleEvents(receiveCompletion: { [weak self] completion in - guard let self = self else { return } - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: [Relationship] remote friendship update fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - // TODO: handle error - - // rollback - - self.followUpdateLocal( - mastodonUserObjectID: mastodonUser.objectID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .sink { completion in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Friendship] rollback finish", ((#file as NSString).lastPathComponent), #line, #function) - } receiveValue: { _ in - // do nothing - notificationFeedbackGenerator.prepare() - notificationFeedbackGenerator.notificationOccurred(.error) - } - .store(in: &self.disposeBag) - - case .finished: - notificationFeedbackGenerator.notificationOccurred(.success) - os_log("%{public}s[%{public}ld], %{public}s: [Friendship] remote friendship update success", ((#file as NSString).lastPathComponent), #line, #function) - } - }) - .eraseToAnyPublisher() - } - -} - -extension APIService { - - // update database local and return follow query update type for remote request - func followUpdateLocal( - mastodonUserObjectID: NSManagedObjectID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher<(Mastodon.API.Account.FollowQueryType, MastodonUser.ID), Error> { - let domain = mastodonAuthenticationBox.domain - let requestMastodonUserID = mastodonAuthenticationBox.userID - - var _targetMastodonUserID: MastodonUser.ID? - var _queryType: Mastodon.API.Account.FollowQueryType? let managedObjectContext = backgroundManagedObjectContext - - return managedObjectContext.performChanges { - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - guard let _requestMastodonUser = managedObjectContext.safeFetch(request).first else { - assertionFailure() - return - } + let _followContext: MastodonFollowContext? = try await managedObjectContext.performChanges { + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { return nil } + guard let user = user.object(in: managedObjectContext) else { return nil } - let mastodonUser = managedObjectContext.object(with: mastodonUserObjectID) as! MastodonUser - _targetMastodonUserID = mastodonUser.id + let isFollowing = user.followingBy.contains(me) + let isPending = user.followRequestedBy.contains(me) + let needsUnfollow = isFollowing || isPending - let isPending = (mastodonUser.followRequestedBy ?? Set()).contains(_requestMastodonUser) - let isFollowing = (mastodonUser.followingBy ?? Set()).contains(_requestMastodonUser) - - if isFollowing || isPending { - _queryType = .unfollow - mastodonUser.update(isFollowing: false, by: _requestMastodonUser) - mastodonUser.update(isFollowRequested: false, by: _requestMastodonUser) + if needsUnfollow { + // unfollow + user.update(isFollowing: false, by: me) + user.update(isFollowRequested: false, by: me) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Local] update user friendship: undo follow") } else { - _queryType = .follow(query: Mastodon.API.Account.FollowQuery()) - if mastodonUser.locked { - mastodonUser.update(isFollowing: false, by: _requestMastodonUser) - mastodonUser.update(isFollowRequested: true, by: _requestMastodonUser) + // follow + if user.locked { + user.update(isFollowing: false, by: me) + user.update(isFollowRequested: true, by: me) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Local] update user friendship: pending follow") } else { - mastodonUser.update(isFollowing: true, by: _requestMastodonUser) - mastodonUser.update(isFollowRequested: false, by: _requestMastodonUser) + user.update(isFollowing: true, by: me) + user.update(isFollowRequested: false, by: me) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Local] update user friendship: following") } } + let context = MastodonFollowContext( + sourceUserID: me.id, + targetUserID: user.id, + isFollowing: isFollowing, + isPending: isPending, + needsUnfollow: needsUnfollow + ) + return context } - .tryMap { result in - switch result { - case .success: - guard let targetMastodonUserID = _targetMastodonUserID, - let queryType = _queryType else { - throw APIError.implicit(.badRequest) - } - return (queryType, targetMastodonUserID) - - case .failure(let error): - assertionFailure(error.localizedDescription) - throw error - } - } - .eraseToAnyPublisher() - } - - func followUpdateRemote( - followQueryType: Mastodon.API.Account.FollowQueryType, - mastodonUserID: MastodonUser.ID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let domain = mastodonAuthenticationBox.domain - let authorization = mastodonAuthenticationBox.userAuthorization - let requestMastodonUserID = mastodonAuthenticationBox.userID - return Mastodon.API.Account.follow( - session: session, - domain: domain, - accountID: mastodonUserID, - followQueryType: followQueryType, - authorization: authorization - ) -// .handleEvents(receiveCompletion: { [weak self] completion in -// guard let _ = self else { return } -// switch completion { -// case .failure(let error): -// // TODO: handle error -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] update follow fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) -// break -// case .finished: -// switch followQueryType { -// case .follow: -// break -// case .unfollow: -// break -// } -// } -// }) - .flatMap { response -> AnyPublisher, Error> in - let managedObjectContext = self.backgroundManagedObjectContext - return managedObjectContext.performChanges { - let requestMastodonUserRequest = MastodonUser.sortedFetchRequest - requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - requestMastodonUserRequest.fetchLimit = 1 - guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } - - let lookUpMastodonUserRequest = MastodonUser.sortedFetchRequest - lookUpMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: mastodonUserID) - lookUpMastodonUserRequest.fetchLimit = 1 - let lookUpMastodonUser = managedObjectContext.safeFetch(lookUpMastodonUserRequest).first - - if let lookUpMastodonUser = lookUpMastodonUser { - let entity = response.value - APIService.CoreData.update(user: lookUpMastodonUser, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) - } - } - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + guard let followContext = _followContext else { + throw APIError.implicit(.badRequest) } - .eraseToAnyPublisher() + + // request follow or unfollow + let result: Result, Error> + do { + let response = try await Mastodon.API.Account.follow( + session: session, + domain: authenticationBox.domain, + accountID: followContext.targetUserID, + followQueryType: followContext.needsUnfollow ? .unfollow : .follow(query: .init()), + authorization: authenticationBox.userAuthorization + ).singleOutput() + result = .success(response) + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Remote] update friendship failure: \(error.localizedDescription)") + result = .failure(error) + } + + // update friendship state + try await managedObjectContext.performChanges { + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user, + let user = user.object(in: managedObjectContext) + else { return } + + switch result { + case .success(let response): + Persistence.MastodonUser.update( + mastodonUser: user, + context: Persistence.MastodonUser.RelationshipContext( + entity: response.value, + me: me, + networkDate: response.networkDate + ) + ) + let following = response.value.following + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Remote] update user friendship: following \(following)") + case .failure: + // rollback + user.update(isFollowing: followContext.isFollowing, by: me) + user.update(isFollowRequested: followContext.isPending, by: me) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Remote] rollback user friendship") + } + } + + let response = try result.get() + return response } } diff --git a/Mastodon/Service/APIService/APIService+FollowRequest.swift b/Mastodon/Service/APIService/APIService+FollowRequest.swift index 0f5c3c25d..b2029f3db 100644 --- a/Mastodon/Service/APIService/APIService+FollowRequest.swift +++ b/Mastodon/Service/APIService/APIService+FollowRequest.swift @@ -15,91 +15,91 @@ import CommonOSLog import MastodonSDK extension APIService { - func acceptFollowRequest( - mastodonUserID: MastodonUser.ID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let domain = mastodonAuthenticationBox.domain - let authorization = mastodonAuthenticationBox.userAuthorization - let requestMastodonUserID = mastodonAuthenticationBox.userID - - return Mastodon.API.Account.acceptFollowRequest( - session: session, - domain: domain, - userID: mastodonUserID, - authorization: authorization) - .flatMap { response -> AnyPublisher, Error> in - let managedObjectContext = self.backgroundManagedObjectContext - return managedObjectContext.performChanges { - let requestMastodonUserRequest = MastodonUser.sortedFetchRequest - requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - requestMastodonUserRequest.fetchLimit = 1 - guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } - - let lookUpMastodonUserRequest = MastodonUser.sortedFetchRequest - lookUpMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: mastodonUserID) - lookUpMastodonUserRequest.fetchLimit = 1 - let lookUpMastodonuser = managedObjectContext.safeFetch(lookUpMastodonUserRequest).first - - if let lookUpMastodonuser = lookUpMastodonuser { - let entity = response.value - APIService.CoreData.update(user: lookUpMastodonuser, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) - } - } - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() - } - .eraseToAnyPublisher() - } +// func acceptFollowRequest( +// mastodonUserID: MastodonUser.ID, +// mastodonAuthenticationBox: MastodonAuthenticationBox +// ) -> AnyPublisher, Error> { +// let domain = mastodonAuthenticationBox.domain +// let authorization = mastodonAuthenticationBox.userAuthorization +// let requestMastodonUserID = mastodonAuthenticationBox.userID +// +// return Mastodon.API.Account.acceptFollowRequest( +// session: session, +// domain: domain, +// userID: mastodonUserID, +// authorization: authorization) +// .flatMap { response -> AnyPublisher, Error> in +// let managedObjectContext = self.backgroundManagedObjectContext +// return managedObjectContext.performChanges { +// let requestMastodonUserRequest = MastodonUser.sortedFetchRequest +// requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) +// requestMastodonUserRequest.fetchLimit = 1 +// guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } +// +// let lookUpMastodonUserRequest = MastodonUser.sortedFetchRequest +// lookUpMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: mastodonUserID) +// lookUpMastodonUserRequest.fetchLimit = 1 +// let lookUpMastodonuser = managedObjectContext.safeFetch(lookUpMastodonUserRequest).first +// +// if let lookUpMastodonuser = lookUpMastodonuser { +// let entity = response.value +// APIService.CoreData.update(user: lookUpMastodonuser, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) +// } +// } +// .tryMap { result -> Mastodon.Response.Content in +// switch result { +// case .success: +// return response +// case .failure(let error): +// throw error +// } +// } +// .eraseToAnyPublisher() +// } +// .eraseToAnyPublisher() +// } - func rejectFollowRequest( - mastodonUserID: MastodonUser.ID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let domain = mastodonAuthenticationBox.domain - let authorization = mastodonAuthenticationBox.userAuthorization - let requestMastodonUserID = mastodonAuthenticationBox.userID - - return Mastodon.API.Account.rejectFollowRequest( - session: session, - domain: domain, - userID: mastodonUserID, - authorization: authorization) - .flatMap { response -> AnyPublisher, Error> in - let managedObjectContext = self.backgroundManagedObjectContext - return managedObjectContext.performChanges { - let requestMastodonUserRequest = MastodonUser.sortedFetchRequest - requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - requestMastodonUserRequest.fetchLimit = 1 - guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } - - let lookUpMastodonUserRequest = MastodonUser.sortedFetchRequest - lookUpMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: mastodonUserID) - lookUpMastodonUserRequest.fetchLimit = 1 - let lookUpMastodonuser = managedObjectContext.safeFetch(lookUpMastodonUserRequest).first - - if let lookUpMastodonuser = lookUpMastodonuser { - let entity = response.value - APIService.CoreData.update(user: lookUpMastodonuser, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) - } - } - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() - } - .eraseToAnyPublisher() - } +// func rejectFollowRequest( +// mastodonUserID: MastodonUser.ID, +// mastodonAuthenticationBox: MastodonAuthenticationBox +// ) -> AnyPublisher, Error> { +// let domain = mastodonAuthenticationBox.domain +// let authorization = mastodonAuthenticationBox.userAuthorization +// let requestMastodonUserID = mastodonAuthenticationBox.userID +// +// return Mastodon.API.Account.rejectFollowRequest( +// session: session, +// domain: domain, +// userID: mastodonUserID, +// authorization: authorization) +// .flatMap { response -> AnyPublisher, Error> in +// let managedObjectContext = self.backgroundManagedObjectContext +// return managedObjectContext.performChanges { +// let requestMastodonUserRequest = MastodonUser.sortedFetchRequest +// requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) +// requestMastodonUserRequest.fetchLimit = 1 +// guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } +// +// let lookUpMastodonUserRequest = MastodonUser.sortedFetchRequest +// lookUpMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: mastodonUserID) +// lookUpMastodonUserRequest.fetchLimit = 1 +// let lookUpMastodonuser = managedObjectContext.safeFetch(lookUpMastodonUserRequest).first +// +// if let lookUpMastodonuser = lookUpMastodonuser { +// let entity = response.value +// APIService.CoreData.update(user: lookUpMastodonuser, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) +// } +// } +// .tryMap { result -> Mastodon.Response.Content in +// switch result { +// case .success: +// return response +// case .failure(let error): +// throw error +// } +// } +// .eraseToAnyPublisher() +// } +// .eraseToAnyPublisher() +// } } diff --git a/Mastodon/Service/APIService/APIService+Follower.swift b/Mastodon/Service/APIService/APIService+Follower.swift index f75d2420d..f0350013f 100644 --- a/Mastodon/Service/APIService/APIService+Follower.swift +++ b/Mastodon/Service/APIService/APIService+Follower.swift @@ -17,54 +17,44 @@ extension APIService { func followers( userID: Mastodon.Entity.Account.ID, maxID: String?, - authorizationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let domain = authorizationBox.domain - let authorization = authorizationBox.userAuthorization - let requestMastodonUserID = authorizationBox.userID + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Account]> { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization let query = Mastodon.API.Account.FollowerQuery( maxID: maxID, limit: nil ) - return Mastodon.API.Account.followers( + let response = try await Mastodon.API.Account.followers( session: session, domain: domain, userID: userID, query: query, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - let managedObjectContext = self.backgroundManagedObjectContext - return managedObjectContext.performChanges { - let requestMastodonUserRequest = MastodonUser.sortedFetchRequest - requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - requestMastodonUserRequest.fetchLimit = 1 - guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } - - for entity in response.value { - _ = APIService.CoreData.createOrMergeMastodonUser( - into: managedObjectContext, - for: requestMastodonUser, - in: domain, + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + + for entity in response.value { + let result = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: domain, entity: entity, - userCache: nil, - networkDate: response.networkDate, - log: .api + cache: nil, + networkDate: response.networkDate ) - } + ) + + let user = result.user + me?.update(isFollowing: true, by: user) } - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Account]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() + + return response } } diff --git a/Mastodon/Service/APIService/APIService+Following.swift b/Mastodon/Service/APIService/APIService+Following.swift index 8f477d6ec..d0cdc233f 100644 --- a/Mastodon/Service/APIService/APIService+Following.swift +++ b/Mastodon/Service/APIService/APIService+Following.swift @@ -17,54 +17,48 @@ extension APIService { func following( userID: Mastodon.Entity.Account.ID, maxID: String?, - authorizationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let domain = authorizationBox.domain - let authorization = authorizationBox.userAuthorization - let requestMastodonUserID = authorizationBox.userID + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Account]> { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization let query = Mastodon.API.Account.FollowingQuery( maxID: maxID, limit: nil ) - return Mastodon.API.Account.following( + + let response = try await Mastodon.API.Account.following( session: session, domain: domain, userID: userID, query: query, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - let managedObjectContext = self.backgroundManagedObjectContext - return managedObjectContext.performChanges { - let requestMastodonUserRequest = MastodonUser.sortedFetchRequest - requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - requestMastodonUserRequest.fetchLimit = 1 - guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } - - for entity in response.value { - _ = APIService.CoreData.createOrMergeMastodonUser( - into: managedObjectContext, - for: requestMastodonUser, - in: domain, - entity: entity, - userCache: nil, - networkDate: response.networkDate, - log: .api - ) - } + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + + for entity in response.value { + let result = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: domain, + entity: entity, + cache: nil, + networkDate: response.networkDate + ) + ) + + if let me = me { + let user = result.user + user.update(isFollowing: true, by: me) } - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Account]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() + + } + + return response } } diff --git a/Mastodon/Service/APIService/APIService+HashtagTimeline.swift b/Mastodon/Service/APIService/APIService+HashtagTimeline.swift index 241c78853..ce8783895 100644 --- a/Mastodon/Service/APIService/APIService+HashtagTimeline.swift +++ b/Mastodon/Service/APIService/APIService+HashtagTimeline.swift @@ -22,10 +22,11 @@ extension APIService { limit: Int = onceRequestStatusMaxCount, local: Bool? = nil, hashtag: String, - authorizationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = authorizationBox.userAuthorization - let requestMastodonUserID = authorizationBox.userID + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Status]> { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization + let query = Mastodon.API.Timeline.HashtagTimelineQuery( maxID: maxID, sinceID: sinceID, @@ -34,36 +35,35 @@ extension APIService { local: local, onlyMedia: false ) - - return Mastodon.API.Timeline.hashtag( + + let response = try await Mastodon.API.Timeline.hashtag( session: session, domain: domain, query: query, hashtag: hashtag, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: domain, - query: query, - response: response, - persistType: .lookUp, - requestMastodonUserID: requestMastodonUserID, - log: OSLog.api - ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Status]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + + for entity in response.value { + _ = Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: domain, + entity: entity, + me: me, + statusCache: nil, + userCache: nil, + networkDate: response.networkDate + ) + ) } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() + + return response } } diff --git a/Mastodon/Service/APIService/APIService+HomeTimeline.swift b/Mastodon/Service/APIService/APIService+HomeTimeline.swift index 28f68274c..39d4cf6e1 100644 --- a/Mastodon/Service/APIService/APIService+HomeTimeline.swift +++ b/Mastodon/Service/APIService/APIService+HomeTimeline.swift @@ -16,15 +16,14 @@ import MastodonSDK extension APIService { func homeTimeline( - domain: String, sinceID: Mastodon.Entity.Status.ID? = nil, maxID: Mastodon.Entity.Status.ID? = nil, limit: Int = onceRequestStatusMaxCount, local: Bool? = nil, - authorizationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = authorizationBox.userAuthorization - let requestMastodonUserID = authorizationBox.userID + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Status]> { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization let query = Mastodon.API.Timeline.HomeTimelineQuery( maxID: maxID, sinceID: sinceID, @@ -33,34 +32,80 @@ extension APIService { local: local ) - return Mastodon.API.Timeline.home( + let response = try await Mastodon.API.Timeline.home( session: session, domain: domain, query: query, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: domain, - query: query, - response: response, - persistType: .home, - requestMastodonUserID: requestMastodonUserID, - log: OSLog.api - ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Status]> in - switch result { - case .success: - return response - case .failure(let error): - throw error + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { + assertionFailure() + return + } + + // persist status + var statuses: [Status] = [] + for entity in response.value { + let result = Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: domain, + entity: entity, + me: me, + statusCache: nil, // TODO: add cache + userCache: nil, // TODO: add cache + networkDate: response.networkDate + ) + ) + statuses.append(result.status) + } + + // locate anchor status + let anchorStatus: Status? = { + guard let maxID = maxID else { return nil } + let request = Status.sortedFetchRequest + request.predicate = Status.predicate(domain: domain, id: maxID) + request.fetchLimit = 1 + return try? managedObjectContext.fetch(request).first + }() + + // update hasMore flag for anchor status + let acct = Feed.Acct.mastodon(domain: authenticationBox.domain, userID: authenticationBox.userID) + if let anchorStatus = anchorStatus, + let feed = anchorStatus.feed(kind: .home, acct: acct) { + feed.update(hasMore: false) + } + + // persist Feed relationship + let sortedStatuses = statuses.sorted(by: { $0.createdAt < $1.createdAt }) + let oldestStatus = sortedStatuses.first + for status in sortedStatuses { + let _feed = status.feed(kind: .home, acct: acct) + if let feed = _feed { + feed.update(updatedAt: response.networkDate) + } else { + let feedProperty = Feed.Property( + acct: acct, + kind: .home, + hasMore: false, + createdAt: status.createdAt, + updatedAt: response.networkDate + ) + let feed = Feed.insert(into: managedObjectContext, property: feedProperty) + status.attach(feed: feed) + + // set hasMore on oldest status if is new feed + if status === oldestStatus { + feed.update(hasMore: true) + } } } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() + + return response } } diff --git a/Mastodon/Service/APIService/APIService+Mute.swift b/Mastodon/Service/APIService/APIService+Mute.swift index 40f97acdc..c93dbcf6f 100644 --- a/Mastodon/Service/APIService/APIService+Mute.swift +++ b/Mastodon/Service/APIService/APIService+Mute.swift @@ -14,153 +14,92 @@ import MastodonSDK extension APIService { + private struct MastodonMuteContext { + let sourceUserID: MastodonUser.ID + let targetUserID: MastodonUser.ID + let targetUsername: String + let isMuting: Bool + } + func toggleMute( - for mastodonUser: MastodonUser, - activeMastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let impactFeedbackGenerator = UIImpactFeedbackGenerator(style: .light) - let notificationFeedbackGenerator = UINotificationFeedbackGenerator() + user: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let logger = Logger(subsystem: "APIService", category: "Mute") - return muteUpdateLocal( - mastodonUserObjectID: mastodonUser.objectID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .receive(on: DispatchQueue.main) - .handleEvents { _ in - impactFeedbackGenerator.prepare() - } receiveOutput: { _ in - impactFeedbackGenerator.impactOccurred() - } receiveCompletion: { completion in - switch completion { - case .failure(let error): - // TODO: handle error - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] local relationship update fail", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - assertionFailure(error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] local relationship update success", ((#file as NSString).lastPathComponent), #line, #function) - break + let managedObjectContext = backgroundManagedObjectContext + let muteContext: MastodonMuteContext = try await managedObjectContext.performChanges { + guard let user = user.object(in: managedObjectContext), + let authentication = authenticationBox.authenticationRecord.object(in: managedObjectContext) + else { + throw APIError.implicit(.badRequest) } - } - .flatMap { muteQueryType, mastodonUserID -> AnyPublisher, Error> in - return self.muteUpdateRemote( - muteQueryType: muteQueryType, - mastodonUserID: mastodonUserID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox + + let me = authentication.user + let isMuting = user.mutingBy.contains(me) + + // toggle mute state + user.update(isMuting: !isMuting, by: me) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Local] update user[\(user.id)](\(user.username)) mute state: \(!isMuting)") + return MastodonMuteContext( + sourceUserID: me.id, + targetUserID: user.id, + targetUsername: user.username, + isMuting: isMuting ) } - .receive(on: DispatchQueue.main) - .handleEvents(receiveCompletion: { [weak self] completion in - guard let self = self else { return } - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: [Relationship] remote friendship update fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - // TODO: handle error - - // rollback - - self.muteUpdateLocal( - mastodonUserObjectID: mastodonUser.objectID, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .sink { completion in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Friendship] rollback finish", ((#file as NSString).lastPathComponent), #line, #function) - } receiveValue: { _ in - // do nothing - notificationFeedbackGenerator.prepare() - notificationFeedbackGenerator.notificationOccurred(.error) - } - .store(in: &self.disposeBag) - - case .finished: - notificationFeedbackGenerator.notificationOccurred(.success) - os_log("%{public}s[%{public}ld], %{public}s: [Friendship] remote friendship update success", ((#file as NSString).lastPathComponent), #line, #function) - } - }) - .eraseToAnyPublisher() - } - -} - -extension APIService { - - // update database local and return mute query update type for remote request - func muteUpdateLocal( - mastodonUserObjectID: NSManagedObjectID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher<(Mastodon.API.Account.MuteQueryType, MastodonUser.ID), Error> { - let domain = mastodonAuthenticationBox.domain - let requestMastodonUserID = mastodonAuthenticationBox.userID - var _targetMastodonUserID: MastodonUser.ID? - var _queryType: Mastodon.API.Account.MuteQueryType? - let managedObjectContext = backgroundManagedObjectContext - - return managedObjectContext.performChanges { - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - guard let _requestMastodonUser = managedObjectContext.safeFetch(request).first else { - assertionFailure() - return + let result: Result, Error> + do { + if muteContext.isMuting { + let response = try await Mastodon.API.Account.unmute( + session: session, + domain: authenticationBox.domain, + accountID: muteContext.targetUserID, + authorization: authenticationBox.userAuthorization + ).singleOutput() + result = .success(response) + } else { + let response = try await Mastodon.API.Account.mute( + session: session, + domain: authenticationBox.domain, + accountID: muteContext.targetUserID, + authorization: authenticationBox.userAuthorization + ).singleOutput() + result = .success(response) } - - let mastodonUser = managedObjectContext.object(with: mastodonUserObjectID) as! MastodonUser - _targetMastodonUserID = mastodonUser.id - - let isMuting = (mastodonUser.mutingBy ?? Set()).contains(_requestMastodonUser) - _queryType = isMuting ? .unmute : .mute - mastodonUser.update(isMuting: !isMuting, by: _requestMastodonUser) + } catch { + result = .failure(error) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Remote] update user[\(muteContext.targetUserID)](\(muteContext.targetUsername)) mute failure: \(error.localizedDescription)") } - .tryMap { result in + + try await managedObjectContext.performChanges { + guard let user = user.object(in: managedObjectContext), + let authentication = authenticationBox.authenticationRecord.object(in: managedObjectContext) + else { return } + let me = authentication.user + switch result { - case .success: - guard let targetMastodonUserID = _targetMastodonUserID, - let queryType = _queryType else { - throw APIError.implicit(.badRequest) - } - return (queryType, targetMastodonUserID) - - case .failure(let error): - assertionFailure(error.localizedDescription) - throw error + case .success(let response): + let relationship = response.value + Persistence.MastodonUser.update( + mastodonUser: user, + context: Persistence.MastodonUser.RelationshipContext( + entity: relationship, + me: me, + networkDate: response.networkDate + ) + ) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Remote] update user[\(muteContext.targetUserID)](\(muteContext.targetUsername)) mute state: \(relationship.muting.debugDescription)") + case .failure: + // rollback + user.update(isMuting: muteContext.isMuting, by: me) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [Remote] rollback user[\(muteContext.targetUserID)](\(muteContext.targetUsername)) mute state") } } - .eraseToAnyPublisher() - } - - func muteUpdateRemote( - muteQueryType: Mastodon.API.Account.MuteQueryType, - mastodonUserID: MastodonUser.ID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let domain = mastodonAuthenticationBox.domain - let authorization = mastodonAuthenticationBox.userAuthorization - return Mastodon.API.Account.mute( - session: session, - domain: domain, - accountID: mastodonUserID, - muteQueryType: muteQueryType, - authorization: authorization - ) - .handleEvents(receiveCompletion: { [weak self] completion in - guard let _ = self else { return } - switch completion { - case .failure(let error): - // TODO: handle error - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Relationship] Mute update fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - // TODO: update relationship - switch muteQueryType { - case .mute: - break - case .unmute: - break - } - } - }) - .eraseToAnyPublisher() + let response = try result.get() + return response } } diff --git a/Mastodon/Service/APIService/APIService+Notification.swift b/Mastodon/Service/APIService/APIService+Notification.swift index 9f7d3bb54..6cc0dbba3 100644 --- a/Mastodon/Service/APIService/APIService+Notification.swift +++ b/Mastodon/Service/APIService/APIService+Notification.swift @@ -11,109 +11,137 @@ import CoreDataStack import Foundation import MastodonSDK import OSLog +import class CoreDataStack.Notification extension APIService { - func allNotifications( - domain: String, - query: Mastodon.API.Notifications.Query, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization - let userID = mastodonAuthenticationBox.userID - return Mastodon.API.Notifications.getNotifications( + func notifications( + maxID: Mastodon.Entity.Status.ID?, + scope: NotificationTimelineViewModel.Scope, + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Notification]> { + let authorization = authenticationBox.userAuthorization + + let query = Mastodon.API.Notifications.Query( + maxID: maxID, + excludeTypes: { + switch scope { + case .everything: + return nil + case .mentions: + return [.follow, .followRequest, .reblog, .favourite, .poll] + } + }() + ) + + let response = try await Mastodon.API.Notifications.getNotifications( session: session, - domain: domain, + domain: authenticationBox.domain, query: query, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - let log = OSLog.api - return self.backgroundManagedObjectContext.performChanges { - if query.maxID == nil { - let requestMastodonNotificationRequest = MastodonNotification.sortedFetchRequest - requestMastodonNotificationRequest.predicate = MastodonNotification.predicate(domain: domain, userID: userID) - let oldNotifications = self.backgroundManagedObjectContext.safeFetch(requestMastodonNotificationRequest) - oldNotifications.forEach { notification in - self.backgroundManagedObjectContext.delete(notification) + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { + assertionFailure() + return + } + + var notifications: [Notification] = [] + for entity in response.value { + let result = Persistence.Notification.createOrMerge( + in: managedObjectContext, + context: Persistence.Notification.PersistContext( + domain: authenticationBox.domain, + entity: entity, + me: me, + networkDate: response.networkDate + ) + ) + notifications.append(result.notification) + } + + // locate anchor notification + let anchorNotification: Notification? = { + guard let maxID = query.maxID else { return nil } + let request = Notification.sortedFetchRequest + request.predicate = Notification.predicate( + domain: authenticationBox.domain, + userID: authenticationBox.userID, + id: maxID + ) + request.fetchLimit = 1 + return try? managedObjectContext.fetch(request).first + }() + + // update hasMore flag for anchor status + let acct = Feed.Acct.mastodon(domain: authenticationBox.domain, userID: authenticationBox.userID) + let kind: Feed.Kind = scope == .everything ? .notificationAll : .notificationMentions + if let anchorNotification = anchorNotification, + let feed = anchorNotification.feed(kind: kind, acct: acct) { + feed.update(hasMore: false) + } + + // persist Feed relationship + let sortedNotifications = notifications.sorted(by: { $0.createAt < $1.createAt }) + let oldestNotification = sortedNotifications.first + for notification in notifications { + let _feed = notification.feed(kind: kind, acct: acct) + if let feed = _feed { + feed.update(updatedAt: response.networkDate) + } else { + let feedProperty = Feed.Property( + acct: acct, + kind: kind, + hasMore: false, + createdAt: notification.createAt, + updatedAt: response.networkDate + ) + let feed = Feed.insert(into: managedObjectContext, property: feedProperty) + notification.attach(feed: feed) + + // set hasMore on oldest notification if is new feed + if notification === oldestNotification { + feed.update(hasMore: true) } } - response.value.forEach { notification in - let (mastodonUser, _) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: notification.account, userCache: nil, networkDate: Date(), log: log) - var status: Status? - if let statusEntity = notification.status { - let (statusInCoreData, _, _) = APIService.CoreData.createOrMergeStatus( - into: self.backgroundManagedObjectContext, - for: nil, - domain: domain, - entity: statusEntity, - statusCache: nil, - userCache: nil, - networkDate: Date(), - log: log - ) - status = statusInCoreData - } - // use constrain to avoid repeated save - let property = MastodonNotification.Property(id: notification.id, typeRaw: notification.type.rawValue, account: mastodonUser, status: status, createdAt: notification.createdAt) - let notification = MastodonNotification.insert(into: self.backgroundManagedObjectContext, domain: domain, userID: userID, networkDate: response.networkDate, property: property) - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)", (#file as NSString).lastPathComponent, #line, #function, notification.typeRaw, notification.account.username) - } } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Notification]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() + + return response } - +} + +extension APIService { func notification( notificationID: Mastodon.Entity.Notification.ID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let domain = mastodonAuthenticationBox.domain - let authorization = mastodonAuthenticationBox.userAuthorization + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization - return Mastodon.API.Notifications.getNotification( + let response = try await Mastodon.API.Notifications.getNotification( session: session, domain: domain, notificationID: notificationID, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - guard let status = response.value.status else { - return Just(response) - .setFailureType(to: Error.self) - .eraseToAnyPublisher() - } - - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: domain, - query: nil, - response: response.map { _ in [status] }, - persistType: .lookUp, - requestMastodonUserID: nil, - log: OSLog.api + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { return } + _ = Persistence.Notification.createOrMerge( + in: managedObjectContext, + context: Persistence.Notification.PersistContext( + domain: domain, + entity: response.value, + me: me, + networkDate: response.networkDate + ) ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() + + return response } } diff --git a/Mastodon/Service/APIService/APIService+Poll.swift b/Mastodon/Service/APIService/APIService+Poll.swift index ca091161f..15a6847c7 100644 --- a/Mastodon/Service/APIService/APIService+Poll.swift +++ b/Mastodon/Service/APIService/APIService+Poll.swift @@ -16,182 +16,83 @@ import MastodonSDK extension APIService { func poll( - domain: String, - pollID: Mastodon.Entity.Poll.ID, - pollObjectID: NSManagedObjectID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization - let requestMastodonUserID = mastodonAuthenticationBox.userID + poll: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let authorization = authenticationBox.userAuthorization - return Mastodon.API.Polls.poll( + let managedObjectContext = self.backgroundManagedObjectContext + let pollID: Poll.ID = try await managedObjectContext.perform { + guard let poll = poll.object(in: managedObjectContext) else { + throw APIError.implicit(.badRequest) + } + return poll.id + } + + let response = try await Mastodon.API.Polls.poll( session: session, - domain: domain, + domain: authenticationBox.domain, pollID: pollID, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - let entity = response.value - let managedObjectContext = self.backgroundManagedObjectContext - - return managedObjectContext.performChanges { - let _requestMastodonUser: MastodonUser? = { - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: mastodonAuthenticationBox.domain, id: requestMastodonUserID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - guard let requestMastodonUser = _requestMastodonUser else { - assertionFailure() - return - } - guard let poll = managedObjectContext.object(with: pollObjectID) as? Poll else { return } - APIService.CoreData.merge(poll: poll, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) - } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + ).singleOutput() + + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + _ = Persistence.Poll.createOrMerge( + in: managedObjectContext, + context: Persistence.Poll.PersistContext( + domain: authenticationBox.domain, + entity: response.value, + me: me, + networkDate: response.networkDate + ) + ) } - .eraseToAnyPublisher() + + return response } } extension APIService { - - /// vote local - /// # Note - /// Not mark the poll voted so that view model could know when to reveal the results + func vote( - pollObjectID: NSManagedObjectID, - mastodonUserObjectID: NSManagedObjectID, - choices: [Int] - ) -> AnyPublisher { - var _targetPollID: Mastodon.Entity.Poll.ID? - var isPollExpired = false - var didVotedLocal = false - - let managedObjectContext = backgroundManagedObjectContext - return managedObjectContext.performChanges { - let poll = managedObjectContext.object(with: pollObjectID) as! Poll - let mastodonUser = managedObjectContext.object(with: mastodonUserObjectID) as! MastodonUser - - _targetPollID = poll.id - - if let expiresAt = poll.expiresAt, Date().timeIntervalSince(expiresAt) > 0 { - isPollExpired = true - poll.update(expired: true) - return - } - - let options = poll.options.sorted(by: { $0.index.intValue < $1.index.intValue }) - let votedOptions = poll.options.filter { option in - (option.votedBy ?? Set()).map { $0.id }.contains(mastodonUser.id) - } - - if !poll.multiple, !votedOptions.isEmpty { - // if did voted for single poll. Do not allow vote again - didVotedLocal = true - return - } - - for option in options { - let voted = choices.contains(option.index.intValue) - option.update(voted: voted, by: mastodonUser) - option.didUpdate(at: option.updatedAt) // trigger update without change anything - } - poll.didUpdate(at: poll.updatedAt) // trigger update without change anything - } - .tryMap { result in - guard !isPollExpired else { - throw APIError.explicit(APIError.ErrorReason.voteExpiredPoll) - } - guard !didVotedLocal else { - throw APIError.implicit(APIError.ErrorReason.badRequest) - } - switch result { - case .success: - guard let targetPollID = _targetPollID else { - throw APIError.implicit(.badRequest) - } - return targetPollID - - case .failure(let error): - assertionFailure(error.localizedDescription) - throw error - } - } - .eraseToAnyPublisher() - } - - /// send vote request to remote - func vote( - domain: String, - pollID: Mastodon.Entity.Poll.ID, - pollObjectID: NSManagedObjectID, + poll: ManagedObjectRecord, choices: [Int], - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization - let requestMastodonUserID = mastodonAuthenticationBox.userID - - let query = Mastodon.API.Polls.VoteQuery(choices: choices) - return Mastodon.API.Polls.vote( - session: session, - domain: domain, - pollID: pollID, - query: query, - authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - let entity = response.value - let managedObjectContext = self.backgroundManagedObjectContext - - return managedObjectContext.performChanges { - let _requestMastodonUser: MastodonUser? = { - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: mastodonAuthenticationBox.domain, id: requestMastodonUserID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - guard let requestMastodonUser = _requestMastodonUser else { - assertionFailure() - return - } - guard let poll = managedObjectContext.object(with: pollObjectID) as? Poll else { return } - APIService.CoreData.merge(poll: poll, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) - } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let managedObjectContext = backgroundManagedObjectContext + let _pollID: Poll.ID? = try await managedObjectContext.perform { + guard let poll = poll.object(in: managedObjectContext) else { return nil } + return poll.id } - .eraseToAnyPublisher() + + guard let pollID = _pollID else { + throw APIError.implicit(.badRequest) + } + + let response = try await Mastodon.API.Polls.vote( + session: session, + domain: authenticationBox.domain, + pollID: pollID, + query: Mastodon.API.Polls.VoteQuery(choices: choices), + authorization: authenticationBox.userAuthorization + ).singleOutput() + + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + _ = Persistence.Poll.createOrMerge( + in: managedObjectContext, + context: Persistence.Poll.PersistContext( + domain: authenticationBox.domain, + entity: response.value, + me: me, + networkDate: response.networkDate + ) + ) + } + + return response } } diff --git a/Mastodon/Service/APIService/APIService+PublicTimeline.swift b/Mastodon/Service/APIService/APIService+PublicTimeline.swift deleted file mode 100644 index bd176f311..000000000 --- a/Mastodon/Service/APIService/APIService+PublicTimeline.swift +++ /dev/null @@ -1,65 +0,0 @@ -// -// APIService+PublicTimeline.swift -// Mastodon -// -// Created by sxiaojian on 2021/1/28. -// - -import Foundation -import Combine -import CoreData -import CoreDataStack -import CommonOSLog -import DateToolsSwift -import MastodonSDK - -extension APIService { - - static let publicTimelineRequestWindowInSec: TimeInterval = 15 * 60 - - func publicTimeline( - domain: String, - sinceID: Mastodon.Entity.Status.ID? = nil, - maxID: Mastodon.Entity.Status.ID? = nil, - limit: Int = onceRequestStatusMaxCount - ) -> AnyPublisher, Error> { - let query = Mastodon.API.Timeline.PublicTimelineQuery( - local: nil, - remote: nil, - onlyMedia: nil, - maxID: maxID, - sinceID: sinceID, - minID: nil, // prefer sinceID - limit: limit - ) - - return Mastodon.API.Timeline.public( - session: session, - domain: domain, - query: query - ) - .flatMap { response -> AnyPublisher, Error> in - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: domain, - query: query, - response: response, - persistType: .public, - requestMastodonUserID: nil, - log: OSLog.api - ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Status]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() - } - .eraseToAnyPublisher() - } - -} diff --git a/Mastodon/Service/APIService/APIService+Reblog.swift b/Mastodon/Service/APIService/APIService+Reblog.swift index 88da60f25..c8dde08bb 100644 --- a/Mastodon/Service/APIService/APIService+Reblog.swift +++ b/Mastodon/Service/APIService/APIService+Reblog.swift @@ -14,134 +14,95 @@ import CommonOSLog extension APIService { - // make local state change only - func reblog( - statusObjectID: NSManagedObjectID, - mastodonUserObjectID: NSManagedObjectID, - reblogKind: Mastodon.API.Reblog.ReblogKind - ) -> AnyPublisher { - var _targetStatusID: Status.ID? - let managedObjectContext = backgroundManagedObjectContext - return managedObjectContext.performChanges { - let status = managedObjectContext.object(with: statusObjectID) as! Status - let mastodonUser = managedObjectContext.object(with: mastodonUserObjectID) as! MastodonUser - let targetStatus = status.reblog ?? status - let targetStatusID = targetStatus.id - _targetStatusID = targetStatusID - - let reblogsCount: NSNumber - switch reblogKind { - case .reblog: - targetStatus.update(reblogged: true, by: mastodonUser) - reblogsCount = NSNumber(value: targetStatus.reblogsCount.intValue + 1) - case .undoReblog: - targetStatus.update(reblogged: false, by: mastodonUser) - reblogsCount = NSNumber(value: max(0, targetStatus.reblogsCount.intValue - 1)) - } - - targetStatus.update(reblogsCount: reblogsCount) - - } - .tryMap { result in - switch result { - case .success: - guard let targetStatusID = _targetStatusID else { - throw APIError.implicit(.badRequest) - } - return targetStatusID - - case .failure(let error): - assertionFailure(error.localizedDescription) - throw error - } - } - .eraseToAnyPublisher() + private struct MastodonReblogContext { + let statusID: Status.ID + let isReblogged: Bool + let rebloggedCount: Int64 } - - // send reblog request to remote + func reblog( - statusID: Mastodon.Entity.Status.ID, - reblogKind: Mastodon.API.Reblog.ReblogKind, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let domain = mastodonAuthenticationBox.domain - let authorization = mastodonAuthenticationBox.userAuthorization - let requestMastodonUserID = mastodonAuthenticationBox.userID - return Mastodon.API.Reblog.reblog( - session: session, - domain: domain, - statusID: statusID, - reblogKind: reblogKind, - authorization: authorization - ) - .map { response -> AnyPublisher, Error> in - let log = OSLog.api - let entity = response.value - let managedObjectContext = self.backgroundManagedObjectContext - - return managedObjectContext.performChanges { - guard let requestMastodonUser: MastodonUser = { - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: mastodonAuthenticationBox.domain, id: requestMastodonUserID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - return managedObjectContext.safeFetch(request).first - }() else { - return - } - - guard let oldStatus: Status = { - let request = Status.sortedFetchRequest - request.predicate = Status.predicate(domain: domain, id: statusID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - request.relationshipKeyPathsForPrefetching = [#keyPath(Status.reblog)] - return managedObjectContext.safeFetch(request).first - }() else { - return - } - - APIService.CoreData.merge(status: oldStatus, entity: entity.reblog ?? entity, requestMastodonUser: requestMastodonUser, domain: mastodonAuthenticationBox.domain, networkDate: response.networkDate) - switch reblogKind { - case .undoReblog: - // update reblogged status - oldStatus.update(reblogsCount: NSNumber(value: max(0, oldStatus.reblogsCount.intValue - 1))) - - // remove reblog from statuses - let reblogFroms = oldStatus.reblogFrom?.filter { status in - return status.author.domain == domain && status.author.id == requestMastodonUserID - } ?? Set() - reblogFroms.forEach { reblogFrom in - managedObjectContext.delete(reblogFrom) - } - - default: - break - } - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: did update status %{public}s reblog status to: %{public}s. now %ld reblog", ((#file as NSString).lastPathComponent), #line, #function, entity.id, entity.reblogged.flatMap { $0 ? "reblog" : "unreblog" } ?? "", entity.reblogsCount ) - } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + record: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let logger = Logger(subsystem: "APIService", category: "Reblog") + let managedObjectContext = backgroundManagedObjectContext + + // update repost state and retrieve repost context + let _reblogContext: MastodonReblogContext? = try await managedObjectContext.performChanges { + guard let authentication = authenticationBox.authenticationRecord.object(in: managedObjectContext), + let _status = record.object(in: managedObjectContext) + else { return nil } + + let me = authentication.user + let status = _status.reblog ?? _status + let isReblogged = status.rebloggedBy.contains(me) + let rebloggedCount = status.reblogsCount + let reblogCount = isReblogged ? rebloggedCount - 1 : rebloggedCount + 1 + status.update(reblogged: !isReblogged, by: me) + status.update(reblogsCount: Int64(max(0, reblogCount))) + let reblogContext = MastodonReblogContext( + statusID: status.id, + isReblogged: isReblogged, + rebloggedCount: rebloggedCount + ) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): update status reblog: \(!isReblogged), \(reblogCount)") + return reblogContext } - .switchToLatest() - .handleEvents(receiveCompletion: { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: error:", ((#file as NSString).lastPathComponent), #line, #function) - debugPrint(error) - case .finished: - break + guard let reblogContext = _reblogContext else { + throw APIError.implicit(.badRequest) + } + + // request repost or undo repost + let result: Result, Error> + do { + let response = try await Mastodon.API.Reblog.reblog( + session: session, + domain: authenticationBox.domain, + statusID: reblogContext.statusID, + reblogKind: reblogContext.isReblogged ? .undoReblog : .reblog(query: Mastodon.API.Reblog.ReblogQuery(visibility: .public)), + authorization: authenticationBox.userAuthorization + ).singleOutput() + result = .success(response) + } catch { + result = .failure(error) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): update reblog failure: \(error.localizedDescription)") + } + + // update repost state + try await managedObjectContext.performChanges { + guard let authentication = authenticationBox.authenticationRecord.object(in: managedObjectContext), + let _status = record.object(in: managedObjectContext) + else { return } + let me = authentication.user + let status = _status.reblog ?? _status + + switch result { + case .success(let response): + _ = Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: authentication.domain, + entity: response.value, + me: me, + statusCache: nil, + userCache: nil, + networkDate: response.networkDate + ) + ) + if reblogContext.isReblogged { + status.update(reblogsCount: max(0, status.reblogsCount - 1)) // undo API return count has delay. Needs -1 local + } + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): update status reblog: \(!reblogContext.isReblogged)") + case .failure: + // rollback + status.update(reblogged: reblogContext.isReblogged, by: me) + status.update(reblogsCount: reblogContext.rebloggedCount) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): rollback status reblog") } - }) - .eraseToAnyPublisher() + } + + let response = try result.get() + return response } } diff --git a/Mastodon/Service/APIService/APIService+Recommend.swift b/Mastodon/Service/APIService/APIService+Recommend.swift index 458cb7402..7c24fdbf1 100644 --- a/Mastodon/Service/APIService/APIService+Recommend.swift +++ b/Mastodon/Service/APIService/APIService+Recommend.swift @@ -18,30 +18,31 @@ extension APIService { query: Mastodon.API.Suggestions.Query?, mastodonAuthenticationBox: MastodonAuthenticationBox ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization - - return Mastodon.API.Suggestions.get(session: session, domain: domain, query: query, authorization: authorization) - .flatMap { response -> AnyPublisher, Error> in - let log = OSLog.api - return self.backgroundManagedObjectContext.performChanges { - response.value.forEach { user in - let (mastodonUser,isCreated) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: user, userCache: nil, networkDate: Date(), log: log) - let flag = isCreated ? "+" : "-" - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", (#file as NSString).lastPathComponent, #line, #function, flag, mastodonUser.id, mastodonUser.username) - } - } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Account]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() - } - .eraseToAnyPublisher() + fatalError() +// let authorization = mastodonAuthenticationBox.userAuthorization +// +// return Mastodon.API.Suggestions.get(session: session, domain: domain, query: query, authorization: authorization) +// .flatMap { response -> AnyPublisher, Error> in +// let log = OSLog.api +// return self.backgroundManagedObjectContext.performChanges { +// response.value.forEach { user in +// let (mastodonUser,isCreated) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: user, userCache: nil, networkDate: Date(), log: log) +// let flag = isCreated ? "+" : "-" +// os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", (#file as NSString).lastPathComponent, #line, #function, flag, mastodonUser.id, mastodonUser.username) +// } +// } +// .setFailureType(to: Error.self) +// .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Account]> in +// switch result { +// case .success: +// return response +// case .failure(let error): +// throw error +// } +// } +// .eraseToAnyPublisher() +// } +// .eraseToAnyPublisher() } func suggestionAccountV2( @@ -49,37 +50,32 @@ extension APIService { query: Mastodon.API.Suggestions.Query?, mastodonAuthenticationBox: MastodonAuthenticationBox ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization + fatalError() +// let authorization = mastodonAuthenticationBox.userAuthorization +// +// return Mastodon.API.V2.Suggestions.get(session: session, domain: domain, query: query, authorization: authorization) +// .flatMap { response -> AnyPublisher, Error> in +// let log = OSLog.api +// return self.backgroundManagedObjectContext.performChanges { +// response.value.forEach { suggestionAccount in +// let user = suggestionAccount.account +// let (mastodonUser,isCreated) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: user, userCache: nil, networkDate: Date(), log: log) +// let flag = isCreated ? "+" : "-" +// os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", (#file as NSString).lastPathComponent, #line, #function, flag, mastodonUser.id, mastodonUser.username) +// } +// } +// .setFailureType(to: Error.self) +// .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.V2.SuggestionAccount]> in +// switch result { +// case .success: +// return response +// case .failure(let error): +// throw error +// } +// } +// .eraseToAnyPublisher() +// } +// .eraseToAnyPublisher() + } - return Mastodon.API.V2.Suggestions.get(session: session, domain: domain, query: query, authorization: authorization) - .flatMap { response -> AnyPublisher, Error> in - let log = OSLog.api - return self.backgroundManagedObjectContext.performChanges { - response.value.forEach { suggestionAccount in - let user = suggestionAccount.account - let (mastodonUser,isCreated) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: user, userCache: nil, networkDate: Date(), log: log) - let flag = isCreated ? "+" : "-" - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", (#file as NSString).lastPathComponent, #line, #function, flag, mastodonUser.id, mastodonUser.username) - } - } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.V2.SuggestionAccount]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() - } - .eraseToAnyPublisher() - } - - func recommendTrends( - domain: String, - query: Mastodon.API.Trends.Query? - ) -> AnyPublisher, Error> { - Mastodon.API.Trends.get(session: session, domain: domain, query: query) - } } diff --git a/Mastodon/Service/APIService/APIService+Relationship.swift b/Mastodon/Service/APIService/APIService+Relationship.swift index 7efd2b396..8c10f137f 100644 --- a/Mastodon/Service/APIService/APIService+Relationship.swift +++ b/Mastodon/Service/APIService/APIService+Relationship.swift @@ -15,51 +15,55 @@ import MastodonSDK extension APIService { func relationship( - domain: String, - accountIDs: [Mastodon.Entity.Account.ID], - authorizationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = authorizationBox.userAuthorization - let requestMastodonUserID = authorizationBox.userID - let query = Mastodon.API.Account.RelationshipQuery( - ids: accountIDs - ) - - return Mastodon.API.Account.relationships( - session: session, - domain: domain, - query: query, - authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - let managedObjectContext = self.backgroundManagedObjectContext - return managedObjectContext.performChanges { - let requestMastodonUserRequest = MastodonUser.sortedFetchRequest - requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - requestMastodonUserRequest.fetchLimit = 1 - guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } - - let lookUpMastodonUserRequest = MastodonUser.sortedFetchRequest - lookUpMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, ids: accountIDs) - lookUpMastodonUserRequest.fetchLimit = accountIDs.count - let lookUpMastodonusers = managedObjectContext.safeFetch(lookUpMastodonUserRequest) - - for user in lookUpMastodonusers { - guard let entity = response.value.first(where: { $0.id == user.id }) else { continue } - APIService.CoreData.update(user: user, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) - } + records: [ManagedObjectRecord], + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Relationship]> { + let managedObjectContext = backgroundManagedObjectContext + + let _query: Mastodon.API.Account.RelationshipQuery? = try? await managedObjectContext.perform { + var ids: [MastodonUser.ID] = [] + for record in records { + guard let user = record.object(in: managedObjectContext) else { continue } + guard user.id != authenticationBox.userID else { continue } + ids.append(user.id) } - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Relationship]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + guard !ids.isEmpty else { return nil } + return Mastodon.API.Account.RelationshipQuery(ids: ids) } - .eraseToAnyPublisher() + guard let query = _query else { + throw APIError.implicit(.badRequest) + } + + let response = try await Mastodon.API.Account.relationships( + session: session, + domain: authenticationBox.domain, + query: query, + authorization: authenticationBox.userAuthorization + ).singleOutput() + + try await managedObjectContext.performChanges { + guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { + assertionFailure() + return + } + + let relationships = response.value + for record in records { + guard let user = record.object(in: managedObjectContext) else { continue } + guard let relationship = relationships.first(where: { $0.id == user.id }) else { continue } + + Persistence.MastodonUser.update( + mastodonUser: user, + context: Persistence.MastodonUser.RelationshipContext( + entity: relationship, + me: me, + networkDate: response.networkDate + ) + ) + } // end for in + } + + return response } } diff --git a/Mastodon/Service/APIService/APIService+Search.swift b/Mastodon/Service/APIService/APIService+Search.swift index 4b636806f..724d7f611 100644 --- a/Mastodon/Service/APIService/APIService+Search.swift +++ b/Mastodon/Service/APIService/APIService+Search.swift @@ -13,37 +13,52 @@ import CommonOSLog extension APIService { func search( - domain: String, query: Mastodon.API.V2.Search.Query, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization - let requestMastodonUserID = mastodonAuthenticationBox.userID + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization - return Mastodon.API.V2.Search.search(session: session, domain: domain, query: query, authorization: authorization) - .flatMap { response -> AnyPublisher, Error> in - // persist status - let statusResponse = response.map { $0.statuses } - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: domain, - query: nil, - response: statusResponse, - persistType: .lookUp, - requestMastodonUserID: requestMastodonUserID, - log: OSLog.api + let response = try await Mastodon.API.V2.Search.search( + session: session, + domain: domain, + query: query, + authorization: authorization + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + + // user + for entity in response.value.accounts { + _ = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: domain, + entity: entity, + cache: nil, + networkDate: response.networkDate + ) ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() + + // statuses + for entity in response.value.statuses { + _ = Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: domain, + entity: entity, + me: me, + statusCache: nil, + userCache: nil, + networkDate: response.networkDate + ) + ) + } + } // ent try await managedObjectContext.performChanges { … } + + return response } } diff --git a/Mastodon/Service/APIService/APIService+Status+Publish.swift b/Mastodon/Service/APIService/APIService+Status+Publish.swift index 1bd3363cf..2b49584f1 100644 --- a/Mastodon/Service/APIService/APIService+Status+Publish.swift +++ b/Mastodon/Service/APIService/APIService+Status+Publish.swift @@ -18,45 +18,38 @@ extension APIService { domain: String, idempotencyKey: String?, query: Mastodon.API.Statuses.PublishStatusQuery, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization - return Mastodon.API.Statuses.publishStatus( + let response = try await Mastodon.API.Statuses.publishStatus( session: session, domain: domain, idempotencyKey: idempotencyKey, query: query, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - #if APP_EXTENSION - return Just(response) - .setFailureType(to: Error.self) - .eraseToAnyPublisher() - #else - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: domain, - query: nil, - response: response.map { [$0] }, - persistType: .lookUp, - requestMastodonUserID: nil, - log: OSLog.api + ).singleOutput() + + #if !APP_EXTENSION + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + _ = Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: domain, + entity: response.value, + me: me, + statusCache: nil, + userCache: nil, + networkDate: response.networkDate + ) ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() - #endif } - .eraseToAnyPublisher() + #endif + + return response } } diff --git a/Mastodon/Service/APIService/APIService+Status.swift b/Mastodon/Service/APIService/APIService+Status.swift index 7f82406f7..3d764663c 100644 --- a/Mastodon/Service/APIService/APIService+Status.swift +++ b/Mastodon/Service/APIService/APIService+Status.swift @@ -16,93 +16,67 @@ import MastodonSDK extension APIService { func status( - domain: String, statusID: Mastodon.Entity.Status.ID, - authorizationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = authorizationBox.userAuthorization - return Mastodon.API.Statuses.status( + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization + + let response = try await Mastodon.API.Statuses.status( session: session, domain: domain, statusID: statusID, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: domain, - query: nil, - response: response.map { [$0] }, - persistType: .lookUp, - requestMastodonUserID: nil, - log: OSLog.api + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + _ = Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: domain, + entity: response.value, + me: me, + statusCache: nil, + userCache: nil, + networkDate: response.networkDate + ) ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() + + return response } func deleteStatus( - domain: String, - statusID: Mastodon.Entity.Status.ID, - authorizationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = authorizationBox.userAuthorization - let query = Mastodon.API.Statuses.DeleteStatusQuery(id: statusID) - return Mastodon.API.Statuses.deleteStatus( + status: ManagedObjectRecord, + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let authorization = authenticationBox.userAuthorization + + let managedObjectContext = backgroundManagedObjectContext + let _query: Mastodon.API.Statuses.DeleteStatusQuery? = try? await managedObjectContext.perform { + guard let _status = status.object(in: managedObjectContext) else { return nil } + let status = _status.reblog ?? _status + return Mastodon.API.Statuses.DeleteStatusQuery(id: status.id) + } + guard let query = _query else { + throw APIError.implicit(.badRequest) + } + + let response = try await Mastodon.API.Statuses.deleteStatus( session: session, - domain: domain, + domain: authenticationBox.domain, query: query, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - return self.backgroundManagedObjectContext.performChanges{ - // fetch old Status - let oldStatus: Status? = { - let request = Status.sortedFetchRequest - request.predicate = Status.predicate(domain: domain, id: response.value.id) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try self.backgroundManagedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - if let status = oldStatus { - let homeTimelineIndexes = status.homeTimelineIndexes ?? Set() - for homeTimelineIndex in homeTimelineIndexes { - self.backgroundManagedObjectContext.delete(homeTimelineIndex) - } - let inNotifications = status.inNotifications ?? Set() - for notification in inNotifications { - self.backgroundManagedObjectContext.delete(notification) - } - self.backgroundManagedObjectContext.delete(status) - } - } - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } - } - .eraseToAnyPublisher() + ).singleOutput() + + try await managedObjectContext.performChanges { + guard let status = status.object(in: managedObjectContext) else { return } + managedObjectContext.delete(status) } - .eraseToAnyPublisher() + + return response } } diff --git a/Mastodon/Service/APIService/APIService+Thread.swift b/Mastodon/Service/APIService/APIService+Thread.swift index 3bebdffe0..782da5886 100644 --- a/Mastodon/Service/APIService/APIService+Thread.swift +++ b/Mastodon/Service/APIService/APIService+Thread.swift @@ -15,43 +15,40 @@ import MastodonSDK extension APIService { func statusContext( - domain: String, statusID: Mastodon.Entity.Status.ID, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization - guard domain == mastodonAuthenticationBox.domain else { - return Fail(error: APIError.implicit(.badRequest)).eraseToAnyPublisher() - } + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization - return Mastodon.API.Statuses.statusContext( + let response = try await Mastodon.API.Statuses.statusContext( session: session, domain: domain, statusID: statusID, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: domain, - query: nil, - response: response.map { $0.ancestors + $0.descendants }, - persistType: .lookUp, - requestMastodonUserID: nil, - log: OSLog.api - ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content in - switch result { - case .success: - return response - case .failure(let error): - throw error - } + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + let value = response.value.ancestors + response.value.descendants + + for entity in value { + Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: domain, + entity: entity, + me: me, + statusCache: nil, + userCache: nil, + networkDate: response.networkDate + ) + ) } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() - } + + return response + } // end func } diff --git a/Mastodon/Service/APIService/APIService+Trend.swift b/Mastodon/Service/APIService/APIService+Trend.swift new file mode 100644 index 000000000..0ce2a86a8 --- /dev/null +++ b/Mastodon/Service/APIService/APIService+Trend.swift @@ -0,0 +1,24 @@ +// +// APIService+Trend.swift +// Mastodon +// +// Created by MainasuK on 2022-1-18. +// + +import Foundation +import MastodonSDK + +extension APIService { + func trends( + domain: String, + query: Mastodon.API.Trends.Query? + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Tag]> { + let response = try await Mastodon.API.Trends.get( + session: session, + domain: domain, + query: query + ).singleOutput() + + return response + } +} diff --git a/Mastodon/Service/APIService/APIService+UserTimeline.swift b/Mastodon/Service/APIService/APIService+UserTimeline.swift index 7a449d37e..c5cb63180 100644 --- a/Mastodon/Service/APIService/APIService+UserTimeline.swift +++ b/Mastodon/Service/APIService/APIService+UserTimeline.swift @@ -15,7 +15,6 @@ import MastodonSDK extension APIService { func userTimeline( - domain: String, accountID: String, maxID: Mastodon.Entity.Status.ID? = nil, sinceID: Mastodon.Entity.Status.ID? = nil, @@ -23,10 +22,11 @@ extension APIService { excludeReplies: Bool? = nil, excludeReblogs: Bool? = nil, onlyMedia: Bool? = nil, - authorizationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = authorizationBox.userAuthorization - let requestMastodonUserID = authorizationBox.userID + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Status]> { + let domain = authenticationBox.domain + let authorization = authenticationBox.userAuthorization + let query = Mastodon.API.Account.AccountStatusesQuery( maxID: maxID, sinceID: sinceID, @@ -36,35 +36,33 @@ extension APIService { limit: limit ) - return Mastodon.API.Account.statuses( + let response = try await Mastodon.API.Account.statuses( session: session, domain: domain, accountID: accountID, query: query, authorization: authorization - ) - .flatMap { response -> AnyPublisher, Error> in - return APIService.Persist.persistStatus( - managedObjectContext: self.backgroundManagedObjectContext, - domain: domain, - query: nil, - response: response, - persistType: .user, - requestMastodonUserID: requestMastodonUserID, - log: OSLog.api - ) - .setFailureType(to: Error.self) - .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Status]> in - switch result { - case .success: - return response - case .failure(let error): - throw error - } + ).singleOutput() + + let managedObjectContext = self.backgroundManagedObjectContext + try await managedObjectContext.performChanges { + let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user + for entity in response.value { + Persistence.Status.createOrMerge( + in: managedObjectContext, + context: Persistence.Status.PersistContext( + domain: domain, + entity: entity, + me: me, + statusCache: nil, + userCache: nil, + networkDate: response.networkDate + ) + ) } - .eraseToAnyPublisher() } - .eraseToAnyPublisher() - } + + return response + } // end func } diff --git a/Mastodon/Service/APIService/CoreData/APIService+CoreData+MastodonUser.swift b/Mastodon/Service/APIService/CoreData/APIService+CoreData+MastodonUser.swift deleted file mode 100644 index 90d482bca..000000000 --- a/Mastodon/Service/APIService/CoreData/APIService+CoreData+MastodonUser.swift +++ /dev/null @@ -1,133 +0,0 @@ -// -// APIService+CoreData+MastodonUser.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021/2/3. -// - -import os.log -import Foundation -import CoreData -import CoreDataStack -import MastodonSDK - -extension APIService.CoreData { - - static func createOrMergeMastodonUser( - into managedObjectContext: NSManagedObjectContext, - for requestMastodonUser: MastodonUser?, - in domain: String, - entity: Mastodon.Entity.Account, - userCache: APIService.Persist.PersistCache?, - networkDate: Date, - log: OSLog - ) -> (user: MastodonUser, isCreated: Bool) { - let processEntityTaskSignpostID = OSSignpostID(log: log) - os_signpost(.begin, log: log, name: "update database - process entity: createOrMergeMastodonUser", signpostID: processEntityTaskSignpostID, "process mastodon user %{public}s", entity.id) - defer { - os_signpost(.end, log: log, name: "update database - process entity: createOrMergeMastodonUser", signpostID: processEntityTaskSignpostID, "process msstodon user %{public}s", entity.id) - } - - // fetch old mastodon user - let oldMastodonUser: MastodonUser? = { - if let userCache = userCache { - return userCache.dictionary[entity.id] - } else { - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: domain, id: entity.id) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - } - }() - - if let oldMastodonUser = oldMastodonUser { - // merge old mastodon usre - APIService.CoreData.merge( - user: oldMastodonUser, - entity: entity, - requestMastodonUser: requestMastodonUser, - domain: domain, - networkDate: networkDate - ) - return (oldMastodonUser, false) - } else { - let mastodonUserProperty = MastodonUser.Property(entity: entity, domain: domain, networkDate: networkDate) - let mastodonUser = MastodonUser.insert( - into: managedObjectContext, - property: mastodonUserProperty - ) - userCache?.dictionary[entity.id] = mastodonUser - os_signpost(.event, log: log, name: "update database - process entity: createOrMergeMastodonUser", signpostID: processEntityTaskSignpostID, "did insert new mastodon user %{public}s: name %s", mastodonUser.identifier, mastodonUser.username) - return (mastodonUser, true) - } - } - -} - -extension APIService.CoreData { - - static func merge( - user: MastodonUser, - entity: Mastodon.Entity.Account, - requestMastodonUser: MastodonUser?, - domain: String, - networkDate: Date - ) { - guard networkDate > user.updatedAt else { return } - let property = MastodonUser.Property(entity: entity, domain: domain, networkDate: networkDate) - - // only fulfill API supported fields - user.update(acct: property.acct) - user.update(username: property.username) - user.update(displayName: property.displayName) - user.update(avatar: property.avatar) - user.update(avatarStatic: property.avatarStatic) - user.update(header: property.header) - user.update(headerStatic: property.headerStatic) - user.update(note: property.note) - user.update(url: property.url) - user.update(statusesCount: property.statusesCount) - user.update(followingCount: property.followingCount) - user.update(followersCount: property.followersCount) - user.update(locked: property.locked) - property.bot.flatMap { user.update(bot: $0) } - property.suspended.flatMap { user.update(suspended: $0) } - property.emojisData.flatMap { user.update(emojisData: $0) } - property.fieldsData.flatMap { user.update(fieldsData: $0) } - - user.didUpdate(at: networkDate) - } - -} - -extension APIService.CoreData { - - static func update( - user: MastodonUser, - entity: Mastodon.Entity.Relationship, - requestMastodonUser: MastodonUser, - domain: String, - networkDate: Date - ) { - guard networkDate > user.updatedAt else { return } - guard entity.id != requestMastodonUser.id else { return } // not update relationship for self - - user.update(isFollowing: entity.following, by: requestMastodonUser) - entity.requested.flatMap { user.update(isFollowRequested: $0, by: requestMastodonUser) } - entity.endorsed.flatMap { user.update(isEndorsed: $0, by: requestMastodonUser) } - requestMastodonUser.update(isFollowing: entity.followedBy, by: user) - entity.muting.flatMap { user.update(isMuting: $0, by: requestMastodonUser) } - user.update(isBlocking: entity.blocking, by: requestMastodonUser) - entity.domainBlocking.flatMap { user.update(isDomainBlocking: $0, by: requestMastodonUser) } - entity.blockedBy.flatMap { requestMastodonUser.update(isBlocking: $0, by: user) } - - user.didUpdate(at: networkDate) - } - -} diff --git a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Status.swift b/Mastodon/Service/APIService/CoreData/APIService+CoreData+Status.swift deleted file mode 100644 index 673cb4de3..000000000 --- a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Status.swift +++ /dev/null @@ -1,225 +0,0 @@ -// -// APIService+CoreData+Status.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/3. -// - -import Foundation -import CoreData -import CoreDataStack -import CommonOSLog -import MastodonSDK - -extension APIService.CoreData { - - static func createOrMergeStatus( - into managedObjectContext: NSManagedObjectContext, - for requestMastodonUser: MastodonUser?, - domain: String, - entity: Mastodon.Entity.Status, - statusCache: APIService.Persist.PersistCache?, - userCache: APIService.Persist.PersistCache?, - networkDate: Date, - log: OSLog - ) -> (status: Status, isStatusCreated: Bool, isMastodonUserCreated: Bool) { - let processEntityTaskSignpostID = OSSignpostID(log: log) - os_signpost(.begin, log: log, name: "update database - process entity: createOrMergeStatus", signpostID: processEntityTaskSignpostID, "process status %{public}s", entity.id) - defer { - os_signpost(.end, log: log, name: "update database - process entity: createOrMergeStatus", signpostID: processEntityTaskSignpostID, "process status %{public}s", entity.id) - } - - // build tree - let reblog = entity.reblog.flatMap { entity -> Status in - let (status, _, _) = createOrMergeStatus( - into: managedObjectContext, - for: requestMastodonUser, - domain: domain, - entity: entity, - statusCache: statusCache, - userCache: userCache, - networkDate: networkDate, - log: log - ) - return status - } - - // fetch old Status - let oldStatus: Status? = { - if let statusCache = statusCache { - return statusCache.dictionary[entity.id] - } else { - let request = Status.sortedFetchRequest - request.predicate = Status.predicate(domain: domain, id: entity.id) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - } - }() - - if let oldStatus = oldStatus { - // merge old Status - APIService.CoreData.merge(status: oldStatus, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: networkDate) - return (oldStatus, false, false) - } else { - let (mastodonUser, isMastodonUserCreated) = createOrMergeMastodonUser(into: managedObjectContext, for: requestMastodonUser,in: domain, entity: entity.account, userCache: userCache, networkDate: networkDate, log: log) - let application = entity.application.flatMap { app -> Application? in - Application.insert(into: managedObjectContext, property: Application.Property(name: app.name, website: app.website, vapidKey: app.vapidKey)) - } - let replyTo: Status? = { - // could be nil if target replyTo status's persist task in the queue - guard let inReplyToID = entity.inReplyToID, - let replyTo = statusCache?.dictionary[inReplyToID] else { return nil } - return replyTo - }() - let poll = entity.poll.flatMap { poll -> Poll in - let options = poll.options.enumerated().map { i, option -> PollOption in - let votedBy: MastodonUser? = (poll.ownVotes ?? []).contains(i) ? requestMastodonUser : nil - return PollOption.insert(into: managedObjectContext, property: PollOption.Property(index: i, title: option.title, votesCount: option.votesCount, networkDate: networkDate), votedBy: votedBy) - } - let votedBy: MastodonUser? = (poll.voted ?? false) ? requestMastodonUser : nil - let object = Poll.insert(into: managedObjectContext, property: Poll.Property(id: poll.id, expiresAt: poll.expiresAt, expired: poll.expired, multiple: poll.multiple, votesCount: poll.votesCount, votersCount: poll.votersCount, networkDate: networkDate), votedBy: votedBy, options: options) - return object - } - let mentions = entity.mentions?.enumerated().compactMap { index, mention -> Mention in - Mention.insert(into: managedObjectContext, property: Mention.Property(id: mention.id, username: mention.username, acct: mention.acct, url: mention.url), index: index) - } - let mediaAttachments: [Attachment]? = { - let encoder = JSONEncoder() - var attachments: [Attachment] = [] - for (index, attachment) in (entity.mediaAttachments ?? []).enumerated() { - let metaData = attachment.meta.flatMap { meta in - try? encoder.encode(meta) - } - let property = Attachment.Property(domain: domain, index: index, id: attachment.id, typeRaw: attachment.type.rawValue, url: attachment.url ?? "", previewURL: attachment.previewURL, remoteURL: attachment.remoteURL, metaData: metaData, textURL: attachment.textURL, descriptionString: attachment.description, blurhash: attachment.blurhash, networkDate: networkDate) - attachments.append(Attachment.insert(into: managedObjectContext, property: property)) - } - guard !attachments.isEmpty else { return nil } - return attachments - }() - let statusProperty = Status.Property(entity: entity, domain: domain, networkDate: networkDate) - let status = Status.insert( - into: managedObjectContext, - property: statusProperty, - author: mastodonUser, - reblog: reblog, - application: application, - replyTo: replyTo, - poll: poll, - mentions: mentions, - mediaAttachments: mediaAttachments, - favouritedBy: (entity.favourited ?? false) ? requestMastodonUser : nil, - rebloggedBy: (entity.reblogged ?? false) ? requestMastodonUser : nil, - mutedBy: (entity.muted ?? false) ? requestMastodonUser : nil, - bookmarkedBy: (entity.bookmarked ?? false) ? requestMastodonUser : nil, - pinnedBy: (entity.pinned ?? false) ? requestMastodonUser : nil - ) - statusCache?.dictionary[entity.id] = status - os_signpost(.event, log: log, name: "update database - process entity: createOrMergeStatus", signpostID: processEntityTaskSignpostID, "did insert new tweet %{public}s: %s", mastodonUser.identifier, entity.id) - return (status, true, isMastodonUserCreated) - } - } - -} - -extension APIService.CoreData { - static func merge( - status: Status, - entity: Mastodon.Entity.Status, - requestMastodonUser: MastodonUser?, - domain: String, - networkDate: Date - ) { - guard networkDate > status.updatedAt else { return } - - // merge poll - if let poll = status.poll, let entity = entity.poll { - merge(poll: poll, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: networkDate) - } - - // merge metrics - if entity.favouritesCount != status.favouritesCount.intValue { - status.update(favouritesCount:NSNumber(value: entity.favouritesCount)) - } - if let repliesCount = entity.repliesCount { - if (repliesCount != status.repliesCount?.intValue) { - status.update(repliesCount:NSNumber(value: repliesCount)) - } - } - if entity.reblogsCount != status.reblogsCount.intValue { - status.update(reblogsCount:NSNumber(value: entity.reblogsCount)) - } - - // merge relationship - if let mastodonUser = requestMastodonUser { - if let favourited = entity.favourited { - status.update(liked: favourited, by: mastodonUser) - } - if let reblogged = entity.reblogged { - status.update(reblogged: reblogged, by: mastodonUser) - } - if let muted = entity.muted { - status.update(muted: muted, by: mastodonUser) - } - if let bookmarked = entity.bookmarked { - status.update(bookmarked: bookmarked, by: mastodonUser) - } - } - - // set updateAt - status.didUpdate(at: networkDate) - - // merge user - merge( - user: status.author, - entity: entity.account, - requestMastodonUser: requestMastodonUser, - domain: domain, - networkDate: networkDate - ) - - // merge indirect reblog - if let reblog = status.reblog, let reblogEntity = entity.reblog { - merge( - status: reblog, - entity: reblogEntity, - requestMastodonUser: requestMastodonUser, - domain: domain, - networkDate: networkDate - ) - } - } -} - -extension APIService.CoreData { - static func merge( - poll: Poll, - entity: Mastodon.Entity.Poll, - requestMastodonUser: MastodonUser?, - domain: String, - networkDate: Date - ) { - poll.update(expiresAt: entity.expiresAt) - poll.update(expired: entity.expired) - poll.update(votesCount: entity.votesCount) - poll.update(votersCount: entity.votersCount) - requestMastodonUser.flatMap { - poll.update(voted: entity.voted ?? false, by: $0) - } - - let oldOptions = poll.options.sorted(by: { $0.index.intValue < $1.index.intValue }) - for (i, (optionEntity, option)) in zip(entity.options, oldOptions).enumerated() { - let voted: Bool = (entity.ownVotes ?? []).contains(i) - option.update(votesCount: optionEntity.votesCount) - requestMastodonUser.flatMap { option.update(voted: voted, by: $0) } - option.didUpdate(at: networkDate) - } - - poll.didUpdate(at: networkDate) - } -} diff --git a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Tag.swift b/Mastodon/Service/APIService/CoreData/APIService+CoreData+Tag.swift deleted file mode 100644 index bc5718bc0..000000000 --- a/Mastodon/Service/APIService/CoreData/APIService+CoreData+Tag.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// APIService+CoreData+Tag.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/8. -// - -import CoreData -import CoreDataStack -import Foundation -import MastodonSDK - -extension APIService.CoreData { - static func createOrMergeTag( - into managedObjectContext: NSManagedObjectContext, - entity: Mastodon.Entity.Tag - ) -> (Tag: Tag, isCreated: Bool) { - // fetch old hashtag  - let oldTag: Tag? = { - let request = Tag.sortedFetchRequest - request.predicate = Tag.predicate(name: entity.name) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - - if let oldTag = oldTag { - APIService.CoreData.merge(tag: oldTag, entity: entity, into: managedObjectContext) - return (oldTag, false) - } else { - let histories = entity.history?.prefix(2).compactMap { history -> History in - History.insert(into: managedObjectContext, property: History.Property(day: history.day, uses: history.uses, accounts: history.accounts)) - } - let tagInCoreData = Tag.insert(into: managedObjectContext, property: Tag.Property(name: entity.name, url: entity.url, histories: histories)) - return (tagInCoreData, true) - } - } - - static func merge(tag: Tag, entity: Mastodon.Entity.Tag, into managedObjectContext: NSManagedObjectContext) { - tag.update(url: tag.url) - guard let tagHistories = tag.histories else { return } - guard let entityHistories = entity.history?.prefix(2) else { return } - let entityHistoriesCount = entityHistories.count - if entityHistoriesCount == 0 { - return - } - for n in 0 ..< tagHistories.count { - if n < entityHistories.count { - let entityHistory = entityHistories[n] - tag.updateHistory(index: n, day: entityHistory.day, uses: entityHistory.uses, account: entityHistory.accounts) - } - } - if entityHistoriesCount <= tagHistories.count { - return - } - for n in 1 ... (entityHistoriesCount - tagHistories.count) { - let entityHistory = entityHistories[entityHistoriesCount - n] - tag.appendHistory(history: History.insert(into: managedObjectContext, property: History.Property(day: entityHistory.day, uses: entityHistory.uses, accounts: entityHistory.accounts))) - } - } -} diff --git a/Mastodon/Service/APIService/Persist/APIService+Persist+PersistCache.swift b/Mastodon/Service/APIService/Persist/APIService+Persist+PersistCache.swift deleted file mode 100644 index eb354035f..000000000 --- a/Mastodon/Service/APIService/Persist/APIService+Persist+PersistCache.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// APIService+Persist+PersistCache.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-10. -// - -import Foundation -import CoreDataStack -import MastodonSDK - -extension APIService.Persist { - - class PersistCache { - var dictionary: [String : T] = [:] - } - -} - -extension APIService.Persist.PersistCache where T == Status { - - static func ids(for statuses: [Mastodon.Entity.Status]) -> Set { - var value = Set() - for status in statuses { - value = value.union(ids(for: status)) - } - return value - } - - static func ids(for status: Mastodon.Entity.Status) -> Set { - var value = Set() - value.insert(status.id) - if let inReplyToID = status.inReplyToID { - value.insert(inReplyToID) - } - if let reblog = status.reblog { - value = value.union(ids(for: reblog)) - } - return value - } - -} - -extension APIService.Persist.PersistCache where T == MastodonUser { - - static func ids(for statuses: [Mastodon.Entity.Status]) -> Set { - var value = Set() - for status in statuses { - value = value.union(ids(for: status)) - } - return value - } - - static func ids(for status: Mastodon.Entity.Status) -> Set { - var value = Set() - value.insert(status.account.id) - if let inReplyToAccountID = status.inReplyToAccountID { - value.insert(inReplyToAccountID) - } - if let reblog = status.reblog { - value = value.union(ids(for: reblog)) - } - return value - } - -} diff --git a/Mastodon/Service/APIService/Persist/APIService+Persist+PersistMemo.swift b/Mastodon/Service/APIService/Persist/APIService+Persist+PersistMemo.swift deleted file mode 100644 index dab4ba6ad..000000000 --- a/Mastodon/Service/APIService/Persist/APIService+Persist+PersistMemo.swift +++ /dev/null @@ -1,226 +0,0 @@ -// -// APIService+Persist+PersistMemo.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-10. -// - -import os.log -import Foundation -import CoreData -import CoreDataStack -import MastodonSDK - -extension APIService.Persist { - - class PersistMemo { - - let status: T - let children: [PersistMemo] - let memoType: MemoType - let statusProcessType: ProcessType - let authorProcessType: ProcessType - - enum MemoType { - case homeTimeline - case mentionTimeline - case userTimeline - case publicTimeline - case likeList - case searchList - case lookUp - - case reblog - - var flag: String { - switch self { - case .homeTimeline: return "H" - case .mentionTimeline: return "M" - case .userTimeline: return "U" - case .publicTimeline: return "P" - case .likeList: return "L" - case .searchList: return "S" - case .lookUp: return "LU" - case .reblog: return "R" - } - } - } - - enum ProcessType { - case create - case merge - - var flag: String { - switch self { - case .create: return "+" - case .merge: return "~" - } - } - } - - init( - status: T, - children: [PersistMemo], - memoType: MemoType, - statusProcessType: ProcessType, - authorProcessType: ProcessType - ) { - self.status = status - self.children = children - self.memoType = memoType - self.statusProcessType = statusProcessType - self.authorProcessType = authorProcessType - } - - } - -} - -extension APIService.Persist.PersistMemo { - - struct Counting { - var status = Counter() - var user = Counter() - - static func + (left: Counting, right: Counting) -> Counting { - return Counting( - status: left.status + right.status, - user: left.user + right.user - ) - } - - struct Counter { - var create = 0 - var merge = 0 - - static func + (left: Counter, right: Counter) -> Counter { - return Counter( - create: left.create + right.create, - merge: left.merge + right.merge - ) - } - } - } - - func count() -> Counting { - var counting = Counting() - - switch statusProcessType { - case .create: counting.status.create += 1 - case .merge: counting.status.merge += 1 - } - - switch authorProcessType { - case .create: counting.user.create += 1 - case .merge: counting.user.merge += 1 - } - - for child in children { - let childCounting = child.count() - counting = counting + childCounting - } - - return counting - } - -} - -extension APIService.Persist.PersistMemo where T == Status, U == MastodonUser { - - static func createOrMergeStatus( - into managedObjectContext: NSManagedObjectContext, - for requestMastodonUser: MastodonUser?, - requestMastodonUserID: MastodonUser.ID?, - domain: String, - entity: Mastodon.Entity.Status, - memoType: MemoType, - statusCache: APIService.Persist.PersistCache?, - userCache: APIService.Persist.PersistCache?, - networkDate: Date, - log: OSLog - ) -> APIService.Persist.PersistMemo { - let processEntityTaskSignpostID = OSSignpostID(log: log) - os_signpost(.begin, log: log, name: "update database - process entity: createOrMergeStatus", signpostID: processEntityTaskSignpostID, "process status %{public}s", entity.id) - defer { - os_signpost(.end, log: log, name: "update database - process entity: createOrMergeStatus", signpostID: processEntityTaskSignpostID, "finish process status %{public}s", entity.id) - } - - // build tree - let reblogMemo = entity.reblog.flatMap { entity -> APIService.Persist.PersistMemo in - createOrMergeStatus( - into: managedObjectContext, - for: requestMastodonUser, - requestMastodonUserID: requestMastodonUserID, - domain: domain, - entity: entity, - memoType: .reblog, - statusCache: statusCache, - userCache: userCache, - networkDate: networkDate, - log: log - ) - } - let children = [reblogMemo].compactMap { $0 } - - - let (status, isStatusCreated, isMastodonUserCreated) = APIService.CoreData.createOrMergeStatus( - into: managedObjectContext, - for: requestMastodonUser, - domain: domain, - entity: entity, - statusCache: statusCache, - userCache: userCache, - networkDate: networkDate, - log: log - ) - let memo = APIService.Persist.PersistMemo( - status: status, - children: children, - memoType: memoType, - statusProcessType: isStatusCreated ? .create : .merge, - authorProcessType: isMastodonUserCreated ? .create : .merge - ) - - switch (memo.statusProcessType, memoType) { - case (.create, .homeTimeline), (.merge, .homeTimeline): - let timelineIndex = status.homeTimelineIndexes? - .first { $0.userID == requestMastodonUserID } - guard let requestMastodonUserID = requestMastodonUserID else { - assertionFailure() - break - } - if timelineIndex == nil { - // make it indexed - let timelineIndexProperty = HomeTimelineIndex.Property(domain: domain, userID: requestMastodonUserID) - let _ = HomeTimelineIndex.insert(into: managedObjectContext, property: timelineIndexProperty, status: status) - } else { - // enity already in home timeline - } - case (.create, .mentionTimeline), (.merge, .mentionTimeline): - break - // TODO: - default: - break - } - - return memo - } - - func log(indentLevel: Int = 0) -> String { - let indent = Array(repeating: " ", count: indentLevel).joined() - let preview = status.content.prefix(32).replacingOccurrences(of: "\n", with: " ") - let message = "\(indent)[\(statusProcessType.flag)\(memoType.flag)](\(status.id)) [\(authorProcessType.flag)](\(status.author.id))@\(status.author.username) ~> \(preview)" - - var childrenMessages: [String] = [] - for child in children { - childrenMessages.append(child.log(indentLevel: indentLevel + 1)) - } - let result = [[message] + childrenMessages] - .flatMap { $0 } - .joined(separator: "\n") - - return result - } - -} - diff --git a/Mastodon/Service/APIService/Persist/APIService+Persist+Status.swift b/Mastodon/Service/APIService/Persist/APIService+Persist+Status.swift deleted file mode 100644 index f5bb4ea3d..000000000 --- a/Mastodon/Service/APIService/Persist/APIService+Persist+Status.swift +++ /dev/null @@ -1,263 +0,0 @@ -// -// APIService+Persist+Status.swift -// Mastodon -// -// Created by sxiaojian on 2021/1/27. -// - -import os.log -import func QuartzCore.CACurrentMediaTime -import Foundation -import Combine -import CoreData -import CoreDataStack -import MastodonSDK - -extension APIService.Persist { - - enum PersistTimelineType { - case `public` - case home - case user - case likeList - case lookUp - } - - static func persistStatus( - managedObjectContext: NSManagedObjectContext, - domain: String, - query: Mastodon.API.Timeline.TimelineQuery?, - response: Mastodon.Response.Content<[Mastodon.Entity.Status]>, - persistType: PersistTimelineType, - requestMastodonUserID: MastodonUser.ID?, // could be nil when response from public endpoint - log: OSLog - ) -> AnyPublisher, Never> { - return managedObjectContext.performChanges { - let statuses = response.value - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: persist %{public}ld statuses…", ((#file as NSString).lastPathComponent), #line, #function, statuses.count) - - let contextTaskSignpostID = OSSignpostID(log: log) - let start = CACurrentMediaTime() - os_signpost(.begin, log: log, name: #function, signpostID: contextTaskSignpostID) - defer { - os_signpost(.end, log: .api, name: #function, signpostID: contextTaskSignpostID) - let end = CACurrentMediaTime() - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: persist cost %.2fs", ((#file as NSString).lastPathComponent), #line, #function, end - start) - } - - // load request mastodon user - let requestMastodonUser: MastodonUser? = { - guard let requestMastodonUserID = requestMastodonUserID else { return nil } - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - - // load working set into context to avoid cache miss - let cacheTaskSignpostID = OSSignpostID(log: log) - os_signpost(.begin, log: log, name: "load statuses & users into cache", signpostID: cacheTaskSignpostID) - - // contains reblog - let statusCache: PersistCache = { - let cache = PersistCache() - let cacheIDs = PersistCache.ids(for: statuses) - let cachedStatuses: [Status] = { - let request = Status.sortedFetchRequest - let ids = Array(cacheIDs) - request.predicate = Status.predicate(domain: domain, ids: ids) - request.returnsObjectsAsFaults = false - request.relationshipKeyPathsForPrefetching = [#keyPath(Status.reblog)] - do { - return try managedObjectContext.fetch(request) - } catch { - assertionFailure(error.localizedDescription) - return [] - } - }() - for status in cachedStatuses { - cache.dictionary[status.id] = status - } - os_signpost(.event, log: log, name: "load status into cache", signpostID: cacheTaskSignpostID, "cached %{public}ld statuses", cachedStatuses.count) - return cache - }() - - let userCache: PersistCache = { - let cache = PersistCache() - let cacheIDs = PersistCache.ids(for: statuses) - let cachedMastodonUsers: [MastodonUser] = { - let request = MastodonUser.sortedFetchRequest - let ids = Array(cacheIDs) - request.predicate = MastodonUser.predicate(domain: domain, ids: ids) - //request.returnsObjectsAsFaults = false - do { - return try managedObjectContext.fetch(request) - } catch { - assertionFailure(error.localizedDescription) - return [] - } - }() - for mastodonuser in cachedMastodonUsers { - cache.dictionary[mastodonuser.id] = mastodonuser - } - os_signpost(.event, log: log, name: "load user into cache", signpostID: cacheTaskSignpostID, "cached %{public}ld users", cachedMastodonUsers.count) - return cache - }() - - os_signpost(.end, log: log, name: "load statuses & users into cache", signpostID: cacheTaskSignpostID) - - // remote timeline merge local timeline record set - // declare it before persist - let mergedOldStatusesInTimeline = statusCache.dictionary.values.filter { - return $0.homeTimelineIndexes?.contains(where: { $0.userID == requestMastodonUserID }) ?? false - } - - let updateDatabaseTaskSignpostID = OSSignpostID(log: log) - let memoType: PersistMemo.MemoType = { - switch persistType { - case .home: return .homeTimeline - case .public: return .publicTimeline - case .user: return .userTimeline - case .likeList: return .likeList - case .lookUp: return .lookUp - } - }() - - var persistMemos: [PersistMemo] = [] - os_signpost(.begin, log: log, name: "update database", signpostID: updateDatabaseTaskSignpostID) - for entity in statuses { - let processEntityTaskSignpostID = OSSignpostID(log: log) - os_signpost(.begin, log: log, name: "update database - process entity", signpostID: processEntityTaskSignpostID, "process entity %{public}s", entity.id) - defer { - os_signpost(.end, log: log, name: "update database - process entity", signpostID: processEntityTaskSignpostID, "process entity %{public}s", entity.id) - } - let memo = PersistMemo.createOrMergeStatus( - into: managedObjectContext, - for: requestMastodonUser, - requestMastodonUserID: requestMastodonUserID, - domain: domain, - entity: entity, - memoType: memoType, - statusCache: statusCache, - userCache: userCache, - networkDate: response.networkDate, - log: log - ) - persistMemos.append(memo) - } // end for… - os_signpost(.end, log: log, name: "update database", signpostID: updateDatabaseTaskSignpostID) - - // home timeline tasks - switch persistType { - case .home: - guard let query = query, - let requestMastodonUserID = requestMastodonUserID else { - assertionFailure() - return - } - // Task 1: update anchor hasMore - // update maxID anchor hasMore attribute when fetching on home timeline - // do not use working records due to anchor status is removable on the remote - var anchorStatus: Status? - if let maxID = query.maxID { - do { - // load anchor status from database - let request = Status.sortedFetchRequest - request.predicate = Status.predicate(domain: domain, id: maxID) - request.returnsObjectsAsFaults = false - request.fetchLimit = 1 - anchorStatus = try managedObjectContext.fetch(request).first - if persistType == .home { - let timelineIndex = anchorStatus.flatMap { status in - status.homeTimelineIndexes?.first(where: { $0.userID == requestMastodonUserID }) - } - timelineIndex?.update(hasMore: false) - } else { - assertionFailure() - } - } catch { - assertionFailure(error.localizedDescription) - } - } - - // Task 2: set last status hasMore when fetched statuses not overlap with the timeline in the local database - let _oldestMemo = persistMemos - .sorted(by: { $0.status.createdAt < $1.status.createdAt }) - .first - if let oldestMemo = _oldestMemo { - if let anchorStatus = anchorStatus { - // using anchor. set hasMore when (overlap itself OR no overlap) AND oldest record NOT anchor - let isNoOverlap = mergedOldStatusesInTimeline.isEmpty - let isOnlyOverlapItself = mergedOldStatusesInTimeline.count == 1 && mergedOldStatusesInTimeline.first?.id == anchorStatus.id - let isAnchorEqualOldestRecord = oldestMemo.status.id == anchorStatus.id - if (isNoOverlap || isOnlyOverlapItself) && !isAnchorEqualOldestRecord { - if persistType == .home { - let timelineIndex = oldestMemo.status.homeTimelineIndexes? - .first(where: { $0.userID == requestMastodonUserID }) - timelineIndex?.update(hasMore: true) - } else { - assertionFailure() - } - } - - } else if mergedOldStatusesInTimeline.isEmpty { - // no anchor. set hasMore when no overlap - if persistType == .home { - let timelineIndex = oldestMemo.status.homeTimelineIndexes? - .first(where: { $0.userID == requestMastodonUserID }) - timelineIndex?.update(hasMore: true) - } - } - } else { - // empty working record. mark anchor hasMore in the task 1 - } - default: - break - } - - // reply relationship link - for (_, status) in statusCache.dictionary { - guard let replyToID = status.inReplyToID, status.replyTo == nil else { continue } - guard let replyTo = statusCache.dictionary[replyToID] else { continue } - status.update(replyTo: replyTo) - } - - // print working record tree map - #if DEBUG - DispatchQueue.global(qos: .utility).async { - let logs = persistMemos - .map { record in record.log() } - .joined(separator: "\n") - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: working status: \n%s", ((#file as NSString).lastPathComponent), #line, #function, logs) - let counting = persistMemos - .map { record in record.count() } - .reduce(into: PersistMemo.Counting(), { result, next in result = result + next }) - let newTweetsInTimeLineCount = persistMemos.reduce(0, { result, next in - return next.statusProcessType == .create ? result + 1 : result - }) - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: status: insert %{public}ldT(%{public}ldTRQ), merge %{public}ldT(%{public}ldTRQ)", ((#file as NSString).lastPathComponent), #line, #function, newTweetsInTimeLineCount, counting.status.create, mergedOldStatusesInTimeline.count, counting.status.merge) - os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: mastodon user: insert %{public}ld, merge %{public}ld", ((#file as NSString).lastPathComponent), #line, #function, counting.user.create, counting.user.merge) - } - #endif - } - .eraseToAnyPublisher() - .handleEvents(receiveOutput: { result in - switch result { - case .success: - break - case .failure(let error): - #if DEBUG - debugPrint(error) - #endif - assertionFailure(error.localizedDescription) - } - }) - .eraseToAnyPublisher() - } -} diff --git a/Mastodon/Service/AudioPlaybackService.swift b/Mastodon/Service/AudioPlaybackService.swift index 42d3edf7d..af7d574ce 100644 --- a/Mastodon/Service/AudioPlaybackService.swift +++ b/Mastodon/Service/AudioPlaybackService.swift @@ -21,7 +21,7 @@ final class AudioPlaybackService: NSObject { var player = AVPlayer() var timeObserver: Any? var statusObserver: Any? - var attachment: Attachment? + var attachment: MastodonAttachment? let playbackState = CurrentValueSubject(PlaybackState.unknown) @@ -51,10 +51,10 @@ final class AudioPlaybackService: NSObject { } extension AudioPlaybackService { - func playAudio(audioAttachment: Attachment) { - guard let url = URL(string: audioAttachment.url) else { - return - } + func playAudio(audioAttachment: MastodonAttachment) { + guard let assetURL = audioAttachment.assetURL, + let url = URL(string: assetURL) else + { return } notifyWillPlayAudioNotification() if audioAttachment == attachment { diff --git a/Mastodon/Service/AuthenticationService.swift b/Mastodon/Service/AuthenticationService.swift index 9e27caab6..b587a5733 100644 --- a/Mastodon/Service/AuthenticationService.swift +++ b/Mastodon/Service/AuthenticationService.swift @@ -66,6 +66,7 @@ final class AuthenticationService: NSObject { .sorted(by: { $0.activedAt > $1.activedAt }) .compactMap { authentication -> MastodonAuthenticationBox? in return MastodonAuthenticationBox( + authenticationRecord: .init(objectID: authentication.objectID), domain: authentication.domain, userID: authentication.userID, appAuthorization: Mastodon.API.OAuth.Authorization(accessToken: authentication.appAccessToken), @@ -121,6 +122,7 @@ extension AuthenticationService { // force set to avoid delay self.activeMastodonAuthentication.value = mastodonAuthentication self.activeMastodonAuthenticationBox.value = MastodonAuthenticationBox( + authenticationRecord: .init(objectID: mastodonAuthentication.objectID), domain: mastodonAuthentication.domain, userID: mastodonAuthentication.userID, appAuthorization: Mastodon.API.OAuth.Authorization(accessToken: mastodonAuthentication.appAccessToken), @@ -148,6 +150,7 @@ extension AuthenticationService { return } _mastodonAuthenticationBox = MastodonAuthenticationBox( + authenticationRecord: .init(objectID: mastodonAuthentication.objectID), domain: mastodonAuthentication.domain, userID: mastodonAuthentication.userID, appAuthorization: Mastodon.API.OAuth.Authorization(accessToken: mastodonAuthentication.appAccessToken), diff --git a/Mastodon/Service/BlockDomainService.swift b/Mastodon/Service/BlockDomainService.swift index 036083e60..90d860143 100644 --- a/Mastodon/Service/BlockDomainService.swift +++ b/Mastodon/Service/BlockDomainService.swift @@ -44,79 +44,79 @@ final class BlockDomainService { } } - func blockDomain( - userProvider: UserProvider, - cell: UITableViewCell? - ) { - guard let activeMastodonAuthenticationBox = userProvider.context.authenticationService.activeMastodonAuthenticationBox.value else { return } - guard let context = userProvider.context else { - return - } - var mastodonUser: AnyPublisher - if let cell = cell { - mastodonUser = userProvider.mastodonUser(for: cell).eraseToAnyPublisher() - } else { - mastodonUser = userProvider.mastodonUser().eraseToAnyPublisher() - } - mastodonUser - .compactMap { mastodonUser -> AnyPublisher, Error>? in - guard let mastodonUser = mastodonUser else { - return nil - } - return context.apiService.blockDomain(user: mastodonUser, authorizationBox: activeMastodonAuthenticationBox) - } - .switchToLatest() - .flatMap { _ -> AnyPublisher, Error> in - context.apiService.getDomainblocks(domain: activeMastodonAuthenticationBox.domain, authorizationBox: activeMastodonAuthenticationBox) - } - .sink { completion in - switch completion { - case .finished: - break - case .failure(let error): - print(error) - } - } receiveValue: { [weak self] response in - self?.blockedDomains.value = response.value - } - .store(in: &userProvider.disposeBag) - } - - func unblockDomain( - userProvider: UserProvider, - cell: UITableViewCell? - ) { - guard let activeMastodonAuthenticationBox = userProvider.context.authenticationService.activeMastodonAuthenticationBox.value else { return } - guard let context = userProvider.context else { - return - } - var mastodonUser: AnyPublisher - if let cell = cell { - mastodonUser = userProvider.mastodonUser(for: cell).eraseToAnyPublisher() - } else { - mastodonUser = userProvider.mastodonUser().eraseToAnyPublisher() - } - mastodonUser - .compactMap { mastodonUser -> AnyPublisher, Error>? in - guard let mastodonUser = mastodonUser else { - return nil - } - return context.apiService.unblockDomain(user: mastodonUser, authorizationBox: activeMastodonAuthenticationBox) - } - .switchToLatest() - .flatMap { _ -> AnyPublisher, Error> in - context.apiService.getDomainblocks(domain: activeMastodonAuthenticationBox.domain, authorizationBox: activeMastodonAuthenticationBox) - } - .sink { completion in - switch completion { - case .finished: - break - case .failure(let error): - print(error) - } - } receiveValue: { [weak self] response in - self?.blockedDomains.value = response.value - } - .store(in: &userProvider.disposeBag) - } +// func blockDomain( +// userProvider: UserProvider, +// cell: UITableViewCell? +// ) { +// guard let activeMastodonAuthenticationBox = userProvider.context.authenticationService.activeMastodonAuthenticationBox.value else { return } +// guard let context = userProvider.context else { +// return +// } +// var mastodonUser: AnyPublisher +// if let cell = cell { +// mastodonUser = userProvider.mastodonUser(for: cell).eraseToAnyPublisher() +// } else { +// mastodonUser = userProvider.mastodonUser().eraseToAnyPublisher() +// } +// mastodonUser +// .compactMap { mastodonUser -> AnyPublisher, Error>? in +// guard let mastodonUser = mastodonUser else { +// return nil +// } +// return context.apiService.blockDomain(user: mastodonUser, authorizationBox: activeMastodonAuthenticationBox) +// } +// .switchToLatest() +// .flatMap { _ -> AnyPublisher, Error> in +// context.apiService.getDomainblocks(domain: activeMastodonAuthenticationBox.domain, authorizationBox: activeMastodonAuthenticationBox) +// } +// .sink { completion in +// switch completion { +// case .finished: +// break +// case .failure(let error): +// print(error) +// } +// } receiveValue: { [weak self] response in +// self?.blockedDomains.value = response.value +// } +// .store(in: &userProvider.disposeBag) +// } +// +// func unblockDomain( +// userProvider: UserProvider, +// cell: UITableViewCell? +// ) { +// guard let activeMastodonAuthenticationBox = userProvider.context.authenticationService.activeMastodonAuthenticationBox.value else { return } +// guard let context = userProvider.context else { +// return +// } +// var mastodonUser: AnyPublisher +// if let cell = cell { +// mastodonUser = userProvider.mastodonUser(for: cell).eraseToAnyPublisher() +// } else { +// mastodonUser = userProvider.mastodonUser().eraseToAnyPublisher() +// } +// mastodonUser +// .compactMap { mastodonUser -> AnyPublisher, Error>? in +// guard let mastodonUser = mastodonUser else { +// return nil +// } +// return context.apiService.unblockDomain(user: mastodonUser, authorizationBox: activeMastodonAuthenticationBox) +// } +// .switchToLatest() +// .flatMap { _ -> AnyPublisher, Error> in +// context.apiService.getDomainblocks(domain: activeMastodonAuthenticationBox.domain, authorizationBox: activeMastodonAuthenticationBox) +// } +// .sink { completion in +// switch completion { +// case .finished: +// break +// case .failure(let error): +// print(error) +// } +// } receiveValue: { [weak self] response in +// self?.blockedDomains.value = response.value +// } +// .store(in: &userProvider.disposeBag) +// } } diff --git a/Mastodon/Service/BlurhashImageCacheService.swift b/Mastodon/Service/BlurhashImageCacheService.swift index be729a2f8..580cb5429 100644 --- a/Mastodon/Service/BlurhashImageCacheService.swift +++ b/Mastodon/Service/BlurhashImageCacheService.swift @@ -37,22 +37,23 @@ final class BlurhashImageCacheService { } static func blurhashImage(blurhash: String, size: CGSize, url: URL) -> UIImage? { - let imageSize: CGSize = { - let aspectRadio = size.width / size.height - if size.width > size.height { - let width: CGFloat = MosaicMeta.edgeMaxLength - let height = width / aspectRadio - return CGSize(width: width, height: height) - } else { - let height: CGFloat = MosaicMeta.edgeMaxLength - let width = height * aspectRadio - return CGSize(width: width, height: height) - } - }() - - let image = UIImage(blurHash: blurhash, size: imageSize) - - return image + fatalError() +// let imageSize: CGSize = { +// let aspectRadio = size.width / size.height +// if size.width > size.height { +// let width: CGFloat = MosaicMeta.edgeMaxLength +// let height = width / aspectRadio +// return CGSize(width: width, height: height) +// } else { +// let height: CGFloat = MosaicMeta.edgeMaxLength +// let width = height * aspectRadio +// return CGSize(width: width, height: height) +// } +// }() +// +// let image = UIImage(blurHash: blurhash, size: imageSize) +// +// return image } } diff --git a/Mastodon/Service/NotificationService.swift b/Mastodon/Service/NotificationService.swift index 6eb3120c7..d707c1ee5 100644 --- a/Mastodon/Service/NotificationService.swift +++ b/Mastodon/Service/NotificationService.swift @@ -144,9 +144,7 @@ extension NotificationService { let authenticationRequest = MastodonAuthentication.sortedFetchRequest authenticationRequest.predicate = MastodonAuthentication.predicate(domain: domain, userID: userID) - let authentication = managedObjectContext.safeFetch(authenticationRequest).first - - guard authentication == nil else { + guard let authentication = managedObjectContext.safeFetch(authenticationRequest).first else { // do nothing if still sign-in return } @@ -154,6 +152,7 @@ extension NotificationService { // cancel subscription if sign-out let accessToken = mastodonPushNotification.accessToken let mastodonAuthenticationBox = MastodonAuthenticationBox( + authenticationRecord: .init(objectID: authentication.objectID), domain: domain, userID: userID, appAuthorization: .init(accessToken: accessToken), diff --git a/Mastodon/Service/SettingService.swift b/Mastodon/Service/SettingService.swift index 79ed47abf..1e8022c59 100644 --- a/Mastodon/Service/SettingService.swift +++ b/Mastodon/Service/SettingService.swift @@ -10,6 +10,8 @@ import UIKit import Combine import CoreDataStack import MastodonSDK +import MastodonAsset +import MastodonLocalization final class SettingService { diff --git a/Mastodon/Service/StatusPrefetchingService.swift b/Mastodon/Service/StatusPrefetchingService.swift deleted file mode 100644 index e22ba69f0..000000000 --- a/Mastodon/Service/StatusPrefetchingService.swift +++ /dev/null @@ -1,152 +0,0 @@ -// -// StatusPrefetchingService.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-10. -// - -import os.log -import Foundation -import Combine -import CoreData -import CoreDataStack -import MastodonSDK -import MastodonMeta - -final class StatusPrefetchingService { - - typealias TaskID = String - typealias StatusObjectID = NSManagedObjectID - - let workingQueue = DispatchQueue(label: "org.joinmastodon.app.StatusPrefetchingService.working-queue") - - // StatusContentOperation - let statusContentOperationQueue: OperationQueue = { - let queue = OperationQueue() - queue.name = "org.joinmastodon.app.StatusPrefetchingService.statusContentOperationQueue" - queue.maxConcurrentOperationCount = 2 - return queue - }() - var statusContentOperations: [StatusObjectID: StatusContentOperation] = [:] - - var disposeBag = Set() - private(set) var statusPrefetchingDisposeBagDict: [TaskID: AnyCancellable] = [:] - - // input - weak var apiService: APIService? - let managedObjectContext: NSManagedObjectContext - let backgroundManagedObjectContext: NSManagedObjectContext // read-only - - init( - managedObjectContext: NSManagedObjectContext, - backgroundManagedObjectContext: NSManagedObjectContext, - apiService: APIService - ) { - self.managedObjectContext = managedObjectContext - self.backgroundManagedObjectContext = backgroundManagedObjectContext - self.apiService = apiService - } - - private func status(from statusObjectItem: StatusObjectItem) -> Status? { - assert(Thread.isMainThread) - switch statusObjectItem { - case .homeTimelineIndex(let objectID): - let homeTimelineIndex = try? managedObjectContext.existingObject(with: objectID) as? HomeTimelineIndex - return homeTimelineIndex?.status - case .mastodonNotification(let objectID): - let mastodonNotification = try? managedObjectContext.existingObject(with: objectID) as? MastodonNotification - return mastodonNotification?.status - case .status(let objectID): - let status = try? managedObjectContext.existingObject(with: objectID) as? Status - return status - } - - } - -} - -extension StatusPrefetchingService { - func prefetch(statusObjectItems items: [StatusObjectItem]) { - for item in items { - guard let status = status(from: item), !status.isDeleted else { continue } - - // status content parser task - if statusContentOperations[status.objectID] == nil { - let mastodonContent = MastodonContent( - content: (status.reblog ?? status).content, - emojis: (status.reblog ?? status).emojiMeta - ) - let operation = StatusContentOperation( - statusObjectID: status.objectID, - mastodonContent: mastodonContent - ) - statusContentOperations[status.objectID] = operation - statusContentOperationQueue.addOperation(operation) - } - } - } - - func cancelPrefetch(statusObjectItems items: [StatusObjectItem]) { - for item in items { - guard let status = status(from: item), !status.isDeleted else { continue } - - // cancel status content parser task - statusContentOperations.removeValue(forKey: status.objectID)?.cancel() - } - } - -} - -extension StatusPrefetchingService { - - func prefetchReplyTo( - domain: String, - statusObjectID: NSManagedObjectID, - statusID: Mastodon.Entity.Status.ID, - replyToStatusID: Mastodon.Entity.Status.ID, - authorizationBox: MastodonAuthenticationBox - ) { - workingQueue.async { [weak self] in - guard let self = self, let apiService = self.apiService else { return } - let taskID = domain + "@" + statusID + "->" + replyToStatusID - guard self.statusPrefetchingDisposeBagDict[taskID] == nil else { return } - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: prefetching replyTo: %s", ((#file as NSString).lastPathComponent), #line, #function, taskID) - - self.statusPrefetchingDisposeBagDict[taskID] = apiService.status( - domain: domain, - statusID: replyToStatusID, - authorizationBox: authorizationBox - ) - .sink(receiveCompletion: { [weak self] completion in - // remove task when completed - guard let self = self else { return } - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: prefeched replyTo: %s", ((#file as NSString).lastPathComponent), #line, #function, taskID) - self.statusPrefetchingDisposeBagDict[taskID] = nil - }, receiveValue: { [weak self] _ in - guard let self = self else { return } - let backgroundManagedObjectContext = apiService.backgroundManagedObjectContext - backgroundManagedObjectContext.performChanges { - guard let status = backgroundManagedObjectContext.object(with: statusObjectID) as? Status else { return } - do { - let predicate = Status.predicate(domain: domain, id: replyToStatusID) - let request = Status.sortedFetchRequest - request.predicate = predicate - request.returnsObjectsAsFaults = false - request.fetchLimit = 1 - guard let replyTo = try backgroundManagedObjectContext.fetch(request).first else { return } - status.update(replyTo: replyTo) - } catch { - assertionFailure(error.localizedDescription) - } - } - .sink { _ in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: update status replyTo: %s", ((#file as NSString).lastPathComponent), #line, #function, taskID) - } receiveValue: { _ in - // do nothing - } - .store(in: &self.disposeBag) - }) - } - } - -} diff --git a/Mastodon/Service/ThemeService/MastodonTheme.swift b/Mastodon/Service/ThemeService/MastodonTheme.swift index 1f0fd4e38..0dad463b6 100644 --- a/Mastodon/Service/ThemeService/MastodonTheme.swift +++ b/Mastodon/Service/ThemeService/MastodonTheme.swift @@ -6,6 +6,7 @@ // import UIKit +import MastodonAsset struct MastodonTheme: Theme { diff --git a/Mastodon/Service/ThemeService/SystemTheme.swift b/Mastodon/Service/ThemeService/SystemTheme.swift index 26673d57d..7796fde7b 100644 --- a/Mastodon/Service/ThemeService/SystemTheme.swift +++ b/Mastodon/Service/ThemeService/SystemTheme.swift @@ -6,6 +6,7 @@ // import UIKit +import MastodonAsset struct SystemTheme: Theme { diff --git a/Mastodon/Service/VideoPlaybackService.swift b/Mastodon/Service/VideoPlaybackService.swift index f1e289926..3c5ad8a08 100644 --- a/Mastodon/Service/VideoPlaybackService.swift +++ b/Mastodon/Service/VideoPlaybackService.swift @@ -47,16 +47,15 @@ extension VideoPlaybackService { } extension VideoPlaybackService { - func dequeueVideoPlayerViewModel(for media: Attachment) -> VideoPlayerViewModel? { + func dequeueVideoPlayerViewModel(for media: MastodonAttachment) -> VideoPlayerViewModel? { // Core Data entity not thread-safe. Save attribute before enter working queue - guard let height = media.meta?.original?.height, - let width = media.meta?.original?.width, - let url = URL(string: media.url), - media.type == .gifv || media.type == .video + guard let assetURL = media.assetURL, + let url = URL(string: assetURL), + media.kind == .gifv || media.kind == .video else { return nil } let previewImageURL = media.previewURL.flatMap { URL(string: $0) } - let videoKind: VideoPlayerViewModel.Kind = media.type == .gifv ? .gif : .video + let videoKind: VideoPlayerViewModel.Kind = media.kind == .gifv ? .gif : .video var _viewModel: VideoPlayerViewModel? workingQueue.sync { @@ -66,7 +65,7 @@ extension VideoPlaybackService { let viewModel = VideoPlayerViewModel( previewImageURL: previewImageURL, videoURL: url, - videoSize: CGSize(width: width, height: height), + videoSize: media.size, videoKind: videoKind ) viewPlayerViewModelDict[url] = viewModel @@ -101,9 +100,10 @@ extension VideoPlaybackService { extension VideoPlaybackService { func markTransitioning(for status: Status) { - guard let videoAttachment = status.mediaAttachments?.filter({ $0.type == .gifv || $0.type == .video }).first else { return } - guard let videoPlayerViewModel = dequeueVideoPlayerViewModel(for: videoAttachment) else { return } - videoPlayerViewModel.isTransitioning = true + // TODO: +// guard let videoAttachment = status.mediaAttachments?.filter({ $0.type == .gifv || $0.type == .video }).first else { return } +// guard let videoPlayerViewModel = dequeueVideoPlayerViewModel(for: videoAttachment) else { return } +// videoPlayerViewModel.isTransitioning = true } func viewDidDisappear(from viewController: UIViewController?) { diff --git a/Mastodon/State/AppContext.swift b/Mastodon/State/AppContext.swift index d7c08d47f..0b7e37d4a 100644 --- a/Mastodon/State/AppContext.swift +++ b/Mastodon/State/AppContext.swift @@ -27,7 +27,6 @@ class AppContext: ObservableObject { let emojiService: EmojiService let audioPlaybackService = AudioPlaybackService() let videoPlaybackService = VideoPlaybackService() - let statusPrefetchingService: StatusPrefetchingService let statusPublishService = StatusPublishService() let notificationService: NotificationService let settingService: SettingService @@ -71,11 +70,6 @@ class AppContext: ObservableObject { apiService: apiService ) - statusPrefetchingService = StatusPrefetchingService( - managedObjectContext: _managedObjectContext, - backgroundManagedObjectContext: _backgroundManagedObjectContext, - apiService: _apiService - ) let _notificationService = NotificationService( apiService: _apiService, authenticationService: _authenticationService diff --git a/Mastodon/Supporting Files/SceneDelegate.swift b/Mastodon/Supporting Files/SceneDelegate.swift index 4809fe5f9..1ed702768 100644 --- a/Mastodon/Supporting Files/SceneDelegate.swift +++ b/Mastodon/Supporting Files/SceneDelegate.swift @@ -72,7 +72,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { .store(in: &observations) #if DEBUG - fpsIndicator = FPSIndicator(windowScene: windowScene) + // fpsIndicator = FPSIndicator(windowScene: windowScene) #endif } @@ -131,12 +131,16 @@ extension SceneDelegate { if coordinator?.tabBarController.topMost is ComposeViewController { logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): composing…") } else { - if AppContext.shared.authenticationService.activeMastodonAuthenticationBox.value == nil { - logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): not authenticated") - } else { - let composeViewModel = ComposeViewModel(context: AppContext.shared, composeKind: .post) + if let authenticationBox = AppContext.shared.authenticationService.activeMastodonAuthenticationBox.value { + let composeViewModel = ComposeViewModel( + context: AppContext.shared, + composeKind: .post, + authenticationBox: authenticationBox + ) coordinator?.present(scene: .compose(viewModel: composeViewModel), from: nil, transition: .modal(animated: true, completion: nil)) logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): present compose scene") + } else { + logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): not authenticated") } } case "org.joinmastodon.app.search": diff --git a/Mastodon/Template/AutoGenerateProtocolDelegate.swift b/Mastodon/Template/AutoGenerateProtocolDelegate.swift new file mode 100644 index 000000000..421abab8c --- /dev/null +++ b/Mastodon/Template/AutoGenerateProtocolDelegate.swift @@ -0,0 +1,10 @@ +// +// AutoGenerateProtocolDelegate.swift +// Mastodon +// +// Created by MainasuK on 2022-1-13. +// + +import Foundation + +protocol AutoGenerateProtocolDelegate { } diff --git a/Mastodon/Template/AutoGenerateProtocolDelegate.swifttemplate b/Mastodon/Template/AutoGenerateProtocolDelegate.swifttemplate new file mode 100644 index 000000000..47eb4ce19 --- /dev/null +++ b/Mastodon/Template/AutoGenerateProtocolDelegate.swifttemplate @@ -0,0 +1,11 @@ +<% for type in types.implementing["AutoGenerateProtocolDelegate"] { + guard let replaceOf = type.annotations["replaceOf"] as? String else { continue } + guard let replaceWith = type.annotations["replaceWith"] as? String else { continue } + guard let protocolToGenerate = type.annotations["protocolName"] as? String else { continue } + guard let aProtocol = types.protocols.first(where: { $0.name == protocolToGenerate }) else { continue } -%> +// sourcery:inline:<%= type.name %>.AutoGenerateProtocolDelegate +<% for method in aProtocol.methods { -%> +<%= method.name.replacingOccurrences(of: replaceOf, with: replaceWith) %> +<% } -%> +// sourcery:end +<% } %> diff --git a/Mastodon/Template/AutoGenerateProtocolRelayDelegate.swift b/Mastodon/Template/AutoGenerateProtocolRelayDelegate.swift new file mode 100644 index 000000000..585eb0074 --- /dev/null +++ b/Mastodon/Template/AutoGenerateProtocolRelayDelegate.swift @@ -0,0 +1,10 @@ +// +// AutoGenerateProtocolRelayDelegate.swift +// Mastodon +// +// Created by MainasuK on 2022-1-13. +// + +import Foundation + +protocol AutoGenerateProtocolRelayDelegate { } diff --git a/Mastodon/Template/AutoGenerateProtocolRelayDelegate.swifttemplate b/Mastodon/Template/AutoGenerateProtocolRelayDelegate.swifttemplate new file mode 100644 index 000000000..b57f26038 --- /dev/null +++ b/Mastodon/Template/AutoGenerateProtocolRelayDelegate.swifttemplate @@ -0,0 +1,51 @@ +<% +func methodDeclaration(_ method: SourceryRuntime.Method) -> String { + var result = method.name + if method.throws { + result = result + " throws" + } else if method.rethrows { + result = result + " rethrows" + } + return result + " -> \(method.returnTypeName)" +} +-%> +<%# Constructs method call string passing in parameters with their local names -%> +<% +func methodCall( + _ method: SourceryRuntime.Method, + replaceOf: String, + replaceWith: String +) -> String { + let params = method.parameters.map({ + if let label = $0.argumentLabel { + return "\(label): \($0.name)" + } else { + return $0.name + } + }).joined(separator: ", ") + var result = "\(method.callName)(\(params))" + + if method.throws { + result = "try " + result + } + if !method.returnTypeName.isVoid { + result = "return " + result + } + result = result.replacingOccurrences(of: replaceOf, with: replaceWith) + return result +} +-%> +<% for type in types.implementing["AutoGenerateProtocolRelayDelegate"] { + guard let replaceOf = type.annotations["replaceOf"] as? String else { continue } + guard let replaceWith = type.annotations["replaceWith"] as? String else { continue } + guard let protocolToGenerate = type.annotations["protocolName"] as? String else { continue } + guard let aProtocol = types.protocols.first(where: { $0.name == protocolToGenerate }) else { continue } -%> +// sourcery:inline:<%= type.name %>.AutoGenerateProtocolRelayDelegate +<% for method in aProtocol.methods { -%> +func <%= method.name -%> { + <%= methodCall(method, replaceOf: replaceOf, replaceWith: replaceWith) %> +} + +<% } -%> +// sourcery:end +<% } %> diff --git a/Mastodon/Template/AutoGenerateTableViewDelegate.stencil b/Mastodon/Template/AutoGenerateTableViewDelegate.stencil new file mode 100644 index 000000000..68516a762 --- /dev/null +++ b/Mastodon/Template/AutoGenerateTableViewDelegate.stencil @@ -0,0 +1,29 @@ +{% for type in types.implementing.AutoGenerateTableViewDelegate %} +// sourcery:inline:{{type.name}}.AutoGenerateTableViewDelegate + +// Generated using Sourcery +// DO NOT EDIT +func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + aspectTableView(tableView, didSelectRowAt: indexPath) +} + +{% if type.based.MediaPreviewableViewController %} +func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { + return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +} + +func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +} + +func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +} + +func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { + aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +} +{% endif %} +// sourcery:end +{% endfor %} + diff --git a/Mastodon/Template/AutoGenerateTableViewDelegate.swift b/Mastodon/Template/AutoGenerateTableViewDelegate.swift new file mode 100644 index 000000000..6110535cd --- /dev/null +++ b/Mastodon/Template/AutoGenerateTableViewDelegate.swift @@ -0,0 +1,10 @@ +// +// AutoGenerateTableViewDelegate.swift +// Mastodon +// +// Created by MainasuK on 2022-1-13. +// + +import Foundation + +protocol AutoGenerateTableViewDelegate { } diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 78d3b58e3..47b226285 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 90 + 91 NSExtension NSExtensionAttributes diff --git a/MastodonIntent/SendPostIntentHandler.swift b/MastodonIntent/SendPostIntentHandler.swift index 75e7049aa..1ad843088 100644 --- a/MastodonIntent/SendPostIntentHandler.swift +++ b/MastodonIntent/SendPostIntentHandler.swift @@ -32,6 +32,7 @@ final class SendPostIntentHandler: NSObject, SendPostIntentHandling { } let box = MastodonAuthenticationBox( + authenticationRecord: .init(objectID: authentication.objectID), domain: authentication.domain, userID: authentication.userID, appAuthorization: .init(accessToken: authentication.appAccessToken), @@ -58,28 +59,31 @@ final class SendPostIntentHandler: NSObject, SendPostIntentHandling { let idempotencyKey = UUID().uuidString - APIService.shared.publishStatus( - domain: box.domain, - idempotencyKey: idempotencyKey, - query: query, - mastodonAuthenticationBox: box - ) - .sink { _completion in - switch _completion { - case .failure(let error): - let failureReason = error.localizedDescription - completion(SendPostIntentResponse.failure(failureReason: failureReason)) - case .finished: - break + Just(Void()) + .asyncMap { + try await APIService.shared.publishStatus( + domain: box.domain, + idempotencyKey: idempotencyKey, + query: query, + authenticationBox: box + ) } - } receiveValue: { response in - let post = Post(identifier: response.value.id, display: intent.content ?? "") - post.url = URL(string: response.value.url ?? response.value.uri) - let result = SendPostIntentResponse(code: .success, userActivity: nil) - result.post = post - completion(result) - } - .store(in: &disposeBag) + .sink { _completion in + switch _completion { + case .failure(let error): + let failureReason = error.localizedDescription + completion(SendPostIntentResponse.failure(failureReason: failureReason)) + case .finished: + break + } + } receiveValue: { response in + let post = Post(identifier: response.value.id, display: intent.content ?? "") + post.url = URL(string: response.value.url ?? response.value.uri) + let result = SendPostIntentResponse(code: .success, userActivity: nil) + result.post = post + completion(result) + } + .store(in: &disposeBag) } } diff --git a/MastodonIntent/eu-ES.lproj/Intents.strings b/MastodonIntent/eu-ES.lproj/Intents.strings new file mode 100644 index 000000000..b85bec4c5 --- /dev/null +++ b/MastodonIntent/eu-ES.lproj/Intents.strings @@ -0,0 +1,52 @@ +"16wxgf" = "Post on Mastodon"; + +"751xkl" = "Text Content"; + +"CsR7G2" = "Post on Mastodon"; + +"HZSGTr" = "What content to post?"; + +"HdGikU" = "Posting failed"; + +"KDNTJ4" = "Failure Reason"; + +"RHxKOw" = "Send Post with text content"; + +"RxSqsb" = "Post"; + +"WCIR3D" = "Post ${content} on Mastodon"; + +"ZKJSNu" = "Post"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Visibility"; + +"Zo4jgJ" = "Post Visibility"; + +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; + +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; + +"ayoYEb-dYQ5NN" = "${content}, Public"; + +"ayoYEb-ehFLjY" = "${content}, Followers Only"; + +"dUyuGg" = "Post on Mastodon"; + +"dYQ5NN" = "Public"; + +"ehFLjY" = "Followers Only"; + +"gfePDu" = "Posting failed. ${failureReason}"; + +"k7dbKQ" = "Post was sent successfully."; + +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; + +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Post was sent successfully."; + diff --git a/MastodonIntent/eu-ES.lproj/Intents.stringsdict b/MastodonIntent/eu-ES.lproj/Intents.stringsdict new file mode 100644 index 000000000..5a39d5e64 --- /dev/null +++ b/MastodonIntent/eu-ES.lproj/Intents.stringsdict @@ -0,0 +1,54 @@ + + + + + There are ${count} options matching ‘${content}’. - 2 + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${content}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + zero + 0 options + one + 1 option + two + 2 options + few + %ld options + many + %ld options + other + %ld options + + + There are ${count} options matching ‘${visibility}’. + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${visibility}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + zero + 0 options + one + 1 option + two + 2 options + few + %ld options + many + %ld options + other + %ld options + + + + diff --git a/MastodonIntent/sv-FI.lproj/Intents.strings b/MastodonIntent/sv-FI.lproj/Intents.strings new file mode 100644 index 000000000..b85bec4c5 --- /dev/null +++ b/MastodonIntent/sv-FI.lproj/Intents.strings @@ -0,0 +1,52 @@ +"16wxgf" = "Post on Mastodon"; + +"751xkl" = "Text Content"; + +"CsR7G2" = "Post on Mastodon"; + +"HZSGTr" = "What content to post?"; + +"HdGikU" = "Posting failed"; + +"KDNTJ4" = "Failure Reason"; + +"RHxKOw" = "Send Post with text content"; + +"RxSqsb" = "Post"; + +"WCIR3D" = "Post ${content} on Mastodon"; + +"ZKJSNu" = "Post"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Visibility"; + +"Zo4jgJ" = "Post Visibility"; + +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; + +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; + +"ayoYEb-dYQ5NN" = "${content}, Public"; + +"ayoYEb-ehFLjY" = "${content}, Followers Only"; + +"dUyuGg" = "Post on Mastodon"; + +"dYQ5NN" = "Public"; + +"ehFLjY" = "Followers Only"; + +"gfePDu" = "Posting failed. ${failureReason}"; + +"k7dbKQ" = "Post was sent successfully."; + +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; + +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Post was sent successfully."; + diff --git a/MastodonIntent/sv-FI.lproj/Intents.stringsdict b/MastodonIntent/sv-FI.lproj/Intents.stringsdict new file mode 100644 index 000000000..5a39d5e64 --- /dev/null +++ b/MastodonIntent/sv-FI.lproj/Intents.stringsdict @@ -0,0 +1,54 @@ + + + + + There are ${count} options matching ‘${content}’. - 2 + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${content}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + zero + 0 options + one + 1 option + two + 2 options + few + %ld options + many + %ld options + other + %ld options + + + There are ${count} options matching ‘${visibility}’. + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${visibility}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + zero + 0 options + one + 1 option + two + 2 options + few + %ld options + many + %ld options + other + %ld options + + + + diff --git a/MastodonIntent/sv_FI.lproj/Intents.strings b/MastodonIntent/sv_FI.lproj/Intents.strings new file mode 100644 index 000000000..d4531ed64 --- /dev/null +++ b/MastodonIntent/sv_FI.lproj/Intents.strings @@ -0,0 +1,51 @@ +"16wxgf" = "Post on Mastodon"; + +"751xkl" = "Text Content"; + +"CsR7G2" = "Post on Mastodon"; + +"HZSGTr" = "What content to post?"; + +"HdGikU" = "Posting failed"; + +"KDNTJ4" = "Failure Reason"; + +"RHxKOw" = "Send Post with text content"; + +"RxSqsb" = "Post"; + +"WCIR3D" = "Posta ${content} på Mastodon"; + +"ZKJSNu" = "Post"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Visibility"; + +"Zo4jgJ" = "Post Visibility"; + +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; + +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; + +"ayoYEb-dYQ5NN" = "${content}, Public"; + +"ayoYEb-ehFLjY" = "${content}, Followers Only"; + +"dUyuGg" = "Post on Mastodon"; + +"dYQ5NN" = "Public"; + +"ehFLjY" = "Followers Only"; + +"gfePDu" = "Posting failed. ${failureReason}"; + +"k7dbKQ" = "Post was sent successfully."; + +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; + +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Post was sent successfully. "; diff --git a/MastodonSDK/Package.swift b/MastodonSDK/Package.swift index ef5f93131..fae124f1e 100644 --- a/MastodonSDK/Package.swift +++ b/MastodonSDK/Package.swift @@ -5,24 +5,29 @@ import PackageDescription let package = Package( name: "MastodonSDK", + defaultLocalization: "en", platforms: [ .iOS(.v14), ], products: [ .library( name: "MastodonSDK", - targets: ["MastodonSDK"]), - .library( - name: "MastodonUI", - targets: ["MastodonUI"]), - .library( - name: "MastodonExtension", - targets: ["MastodonExtension"]), + targets: [ + "MastodonSDK", + "MastodonExtension", + "MastodonAsset", + "MastodonLocalization", + "MastodonUI", + ]), ], dependencies: [ .package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "5.0.0"), .package(url: "https://github.com/apple/swift-nio.git", from: "1.0.0"), .package(url: "https://github.com/kean/Nuke.git", from: "10.3.1"), + .package(url: "https://github.com/Flipboard/FLAnimatedImage.git", from: "1.0.0"), + .package(url: "https://github.com/TwidereProject/MetaTextKit.git", .exact("2.1.2")), + .package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.4.0"), + .package(url: "https://github.com/Alamofire/AlamofireImage.git", from: "4.1.0"), .package(name: "NukeFLAnimatedImagePlugin", url: "https://github.com/kean/Nuke-FLAnimatedImage-Plugin.git", from: "8.0.0"), .package(name: "UITextView+Placeholder", url: "https://github.com/MainasuK/UITextView-Placeholder.git", from: "1.4.1"), .package(name: "Introspect", url: "https://github.com/siteline/SwiftUI-Introspect.git", from: "0.1.3") @@ -37,21 +42,35 @@ let package = Package( .product(name: "NIOHTTP1", package: "swift-nio"), ] ), + .target( + name: "MastodonExtension", + dependencies: [] + ), + .target( + name: "MastodonAsset", + dependencies: [] + ), + .target( + name: "MastodonLocalization", + dependencies: [] + ), .target( name: "MastodonUI", dependencies: [ "MastodonSDK", "MastodonExtension", + "MastodonAsset", + "MastodonLocalization", "Nuke", "NukeFLAnimatedImagePlugin", "UITextView+Placeholder", "Introspect", + .product(name: "Alamofire", package: "Alamofire"), + .product(name: "AlamofireImage", package: "AlamofireImage"), + .product(name: "MetaTextKit", package: "MetaTextKit"), + .product(name: "FLAnimatedImage", package: "FLAnimatedImage"), ] ), - .target( - name: "MastodonExtension", - dependencies: [] - ), .testTarget( name: "MastodonSDKTests", dependencies: ["MastodonSDK"] diff --git a/Mastodon/Resources/Assets.xcassets/Asset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Asset/email.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/email.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/email.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/email.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Asset/email.imageset/c1 1~universal.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/email.imageset/c1 1~universal.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/email.imageset/c1 1~universal.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/email.imageset/c1 1~universal.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Asset/friends.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/friends.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/friends.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/friends.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Asset/friends.imageset/friends 1.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/friends.imageset/friends 1.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/friends.imageset/friends 1.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/friends.imageset/friends 1.png diff --git a/Mastodon/Resources/Assets.xcassets/Asset/friends.imageset/friends 2.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/friends.imageset/friends 2.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/friends.imageset/friends 2.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/friends.imageset/friends 2.png diff --git a/Mastodon/Resources/Assets.xcassets/Asset/friends.imageset/friends 3.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/friends.imageset/friends 3.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/friends.imageset/friends 3.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/friends.imageset/friends 3.png diff --git a/Mastodon/Resources/Assets.xcassets/Asset/mastodon.text.logo.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/mastodon.text.logo.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/mastodon.text.logo.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/mastodon.text.logo.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Asset/mastodon.text.logo.imageset/mastodon.title.logo.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/mastodon.text.logo.imageset/mastodon.title.logo.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Asset/mastodon.text.logo.imageset/mastodon.title.logo.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Asset/mastodon.text.logo.imageset/mastodon.title.logo.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Circles/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Circles/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Circles/plus.circle.fill.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/plus.circle.fill.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Circles/plus.circle.fill.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/plus.circle.fill.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Circles/plus.circle.fill.imageset/plus.circle.fill.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/plus.circle.fill.imageset/plus.circle.fill.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Circles/plus.circle.fill.imageset/plus.circle.fill.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/plus.circle.fill.imageset/plus.circle.fill.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Circles/plus.circle.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/plus.circle.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Circles/plus.circle.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/plus.circle.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Circles/plus.circle.imageset/plus.circle.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/plus.circle.imageset/plus.circle.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Circles/plus.circle.imageset/plus.circle.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Circles/plus.circle.imageset/plus.circle.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Border/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Border/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Border/compose.poll.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/compose.poll.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Border/compose.poll.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/compose.poll.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Border/searchCard.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/searchCard.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Colors/Border/searchCard.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/searchCard.colorset/Contents.json index a0ce2efb8..f28745f07 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Border/searchCard.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/searchCard.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.300", - "blue" : "213", - "green" : "213", - "red" : "213" + "blue" : "0.835", + "green" : "0.835", + "red" : "0.835" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Border/status.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/status.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Colors/Border/status.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/status.colorset/Contents.json index 486f86490..14df8ad4a 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Border/status.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Border/status.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.003", - "blue" : "213", - "green" : "213", - "red" : "213" + "blue" : "0.835", + "green" : "0.835", + "red" : "0.835" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Button/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Button/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Button/action.toolbar.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/action.toolbar.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Colors/Button/action.toolbar.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/action.toolbar.colorset/Contents.json index 8b7864ebe..579de1da7 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Button/action.toolbar.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/action.toolbar.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.600", - "blue" : "67", - "green" : "60", - "red" : "60" + "blue" : "0.263", + "green" : "0.235", + "red" : "0.235" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.600", - "blue" : "245", - "green" : "235", - "red" : "235" + "blue" : "0.961", + "green" : "0.922", + "red" : "0.922" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Button/disabled.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/disabled.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Button/disabled.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/disabled.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Button/inactive.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/inactive.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Colors/Button/inactive.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/inactive.colorset/Contents.json index 717d78925..9fbab2202 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Button/inactive.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Button/inactive.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "140", - "green" : "130", - "red" : "110" + "blue" : "0.549", + "green" : "0.510", + "red" : "0.431" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "100", - "green" : "93", - "red" : "79" + "blue" : "0.392", + "green" : "0.365", + "red" : "0.310" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Icon/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Icon/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Icon/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Icon/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/badge.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Icon/plus.colorset/Contents.json similarity index 74% rename from Mastodon/Resources/Assets.xcassets/Colors/badge.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Icon/plus.colorset/Contents.json index f58a604a1..13aaacf16 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/badge.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Icon/plus.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "48", - "green" : "59", - "red" : "255" + "blue" : "0.349", + "green" : "0.780", + "red" : "0.098" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Label/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/primary.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Colors/Label/primary.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/primary.colorset/Contents.json index ee70bcc16..a36ab82ce 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/primary.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0xEE", - "green" : "0xEE", - "red" : "0xEE" + "blue" : "0.933", + "green" : "0.933", + "red" : "0.933" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/primary.reverse.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/primary.reverse.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Label/primary.reverse.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/primary.reverse.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json index 104dfd026..9d73ead03 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.600", - "blue" : "0x43", - "green" : "0x3C", - "red" : "0x3C" + "blue" : "0.263", + "green" : "0.235", + "red" : "0.235" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0xAD", - "green" : "0x9D", - "red" : "0x97" + "blue" : "0.678", + "green" : "0.616", + "red" : "0.592" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/tertiary.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/tertiary.colorset/Contents.json similarity index 74% rename from Mastodon/Resources/Assets.xcassets/Colors/Label/tertiary.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/tertiary.colorset/Contents.json index d4f558bfd..fe0e4dbc2 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Label/tertiary.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/tertiary.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.300", - "blue" : "67", - "green" : "60", - "red" : "60" + "blue" : "0.263", + "green" : "0.235", + "red" : "0.235" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Notification/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Notification/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json similarity index 74% rename from Mastodon/Resources/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json index 36de20274..f287ce105 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/favourite.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0", - "green" : "204", - "red" : "255" + "blue" : "0.000", + "green" : "0.800", + "red" : "1.000" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json index ec427ccaa..c2416c589 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "89", - "green" : "199", - "red" : "52" + "blue" : "0.871", + "green" : "0.322", + "red" : "0.686" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "75", - "green" : "215", - "red" : "20" + "blue" : "0.949", + "green" : "0.353", + "red" : "0.749" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json index 9dff2f59b..ac763a858 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Notification/mention.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Notification/reblog.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "222", - "green" : "82", - "red" : "175" + "blue" : "0.349", + "green" : "0.780", + "red" : "0.204" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "242", - "green" : "90", - "red" : "191" + "blue" : "0.294", + "green" : "0.843", + "red" : "0.078" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Poll/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Poll/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Poll/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Poll/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Poll/disabled.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Poll/disabled.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Poll/disabled.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Poll/disabled.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Shadow/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Shadow/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Shadow/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Shadow/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Shadow/SearchCard.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Shadow/SearchCard.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Colors/Shadow/SearchCard.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Shadow/SearchCard.colorset/Contents.json index a28cf0793..c0dd4f8d2 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Shadow/SearchCard.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Shadow/SearchCard.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0", - "green" : "0", - "red" : "0" + "blue" : "0.000", + "green" : "0.000", + "red" : "0.000" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Slider/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Slider/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/Slider/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Slider/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Slider/track.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Slider/track.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Colors/Slider/track.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Slider/track.colorset/Contents.json index ccbeb8648..ac8203aef 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Slider/track.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Slider/track.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.600", - "blue" : "213", - "green" : "213", - "red" : "212" + "blue" : "0.835", + "green" : "0.835", + "red" : "0.831" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.300", - "blue" : "60", - "green" : "60", - "red" : "60" + "blue" : "0.235", + "green" : "0.235", + "red" : "0.235" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/TextField/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/TextField/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/TextField/background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/background.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Colors/TextField/background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/background.colorset/Contents.json index cde0cdf00..c34bae049 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/TextField/background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.600", - "blue" : "213", - "green" : "212", - "red" : "212" + "blue" : "0.835", + "green" : "0.831", + "red" : "0.831" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.240", - "blue" : "128", - "green" : "118", - "red" : "118" + "blue" : "0.502", + "green" : "0.463", + "red" : "0.463" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/TextField/invalid.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/invalid.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/TextField/invalid.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/invalid.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/TextField/valid.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/valid.colorset/Contents.json similarity index 74% rename from Mastodon/Resources/Assets.xcassets/Colors/TextField/valid.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/valid.colorset/Contents.json index 7ccf54a1c..861cb3a04 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/TextField/valid.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/TextField/valid.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "89", - "green" : "199", - "red" : "52" + "blue" : "0.349", + "green" : "0.780", + "red" : "0.204" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/alert.yellow.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/alert.yellow.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/alert.yellow.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/alert.yellow.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Icon/plus.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/badge.background.colorset/Contents.json similarity index 74% rename from Mastodon/Resources/Assets.xcassets/Colors/Icon/plus.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/badge.background.colorset/Contents.json index f783ce00f..69346039d 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/Icon/plus.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/badge.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "89", - "green" : "199", - "red" : "25" + "blue" : "0.188", + "green" : "0.231", + "red" : "1.000" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json similarity index 74% rename from Mastodon/Resources/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json index 37df8107f..fdd0acdb9 100644 --- a/Mastodon/Resources/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/battleshipGrey.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.200", - "blue" : "0x80", - "green" : "0x78", - "red" : "0x78" + "blue" : "0.502", + "green" : "0.471", + "red" : "0.471" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/brand.blue.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/brand.blue.colorset/Contents.json new file mode 100644 index 000000000..e973fbf3b --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/brand.blue.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.851", + "green" : "0.565", + "red" : "0.169" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.894", + "green" : "0.616", + "red" : "0.227" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/brand.blue.darken.20.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/brand.blue.darken.20.colorset/Contents.json new file mode 100644 index 000000000..97aaed2bc --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/brand.blue.darken.20.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.690", + "green" : "0.451", + "red" : "0.122" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.788", + "green" : "0.502", + "red" : "0.106" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/danger.border.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/danger.border.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/danger.border.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/danger.border.colorset/Contents.json diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/danger.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/danger.colorset/Contents.json new file mode 100644 index 000000000..dabccc33e --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/danger.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.353", + "green" : "0.251", + "red" : "0.875" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/disabled.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/disabled.colorset/Contents.json new file mode 100644 index 000000000..f2e6f489e --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/disabled.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.784", + "green" : "0.682", + "red" : "0.608" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.392", + "green" : "0.365", + "red" : "0.310" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/inactive.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/inactive.colorset/Contents.json new file mode 100644 index 000000000..9fbab2202 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/inactive.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.549", + "green" : "0.510", + "red" : "0.431" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.392", + "green" : "0.365", + "red" : "0.310" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/media.type.indicotor.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/media.type.indicotor.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/media.type.indicotor.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/media.type.indicotor.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Colors/success.green.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/success.green.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Colors/success.green.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/success.green.colorset/Contents.json diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/system.orange.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/system.orange.colorset/Contents.json new file mode 100644 index 000000000..70b342097 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/system.orange.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.039", + "green" : "0.624", + "red" : "1.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Connectivity/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Connectivity/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Connectivity/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Connectivity/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Connectivity/photo.fill.split.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Connectivity/photo.fill.split.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Connectivity/photo.fill.split.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Connectivity/photo.fill.split.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Connectivity/photo.fill.split.imageset/Frame 2.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Connectivity/photo.fill.split.imageset/Frame 2.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Connectivity/photo.fill.split.imageset/Frame 2.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Connectivity/photo.fill.split.imageset/Frame 2.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Human/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Human/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Human/face.smiling.adaptive.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/face.smiling.adaptive.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Human/face.smiling.adaptive.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/face.smiling.adaptive.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconDark.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconDark.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconDark.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconDark.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconLight.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconLight.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconLight.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/face.smiling.adaptive.imageset/emojiIconLight.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Onboarding/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82.jpg b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82.jpg similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82.jpg rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82.jpg diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@2x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@2x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@2x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@3x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@3x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@3x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/avatar.placeholder.imageset/Frame 82@3x.png diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json new file mode 100644 index 000000000..fb6807b05 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.200", + "blue" : "0.502", + "green" : "0.471", + "red" : "0.471" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json index 7136040b0..b7b5a14de 100644 --- a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.back.button.background.highlighted.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0xE5", - "green" : "0xE5", - "red" : "0xE5" + "blue" : "0.898", + "green" : "0.898", + "red" : "0.898" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.400", - "blue" : "0x80", - "green" : "0x78", - "red" : "0x78" + "blue" : "0.502", + "green" : "0.471", + "red" : "0.471" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json new file mode 100644 index 000000000..a36ab82ce --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.216", + "green" : "0.173", + "red" : "0.157" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.933", + "green" : "0.933", + "red" : "0.933" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json new file mode 100644 index 000000000..2dfe8b1c4 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.highlighted.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.106", + "green" : "0.082", + "red" : "0.075" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.729", + "green" : "0.729", + "red" : "0.729" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json new file mode 100644 index 000000000..4d55227b9 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.969", + "green" : "0.949", + "red" : "0.949" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.129", + "green" : "0.106", + "red" : "0.098" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json index f16bb02fc..6cfd2655d 100644 --- a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/search.bar.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.200", - "blue" : "0x80", - "green" : "0x78", - "red" : "0x78" + "blue" : "0.502", + "green" : "0.471", + "red" : "0.471" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.240", - "blue" : "0x80", - "green" : "0x76", - "red" : "0x76" + "blue" : "0.502", + "green" : "0.463", + "red" : "0.463" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/profile.field.collection.view.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/textField.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/profile.field.collection.view.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/textField.background.colorset/Contents.json index 82edd034b..33b71ef90 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/profile.field.collection.view.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/textField.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "30", - "green" : "28", - "red" : "28" + "blue" : "0.216", + "green" : "0.173", + "red" : "0.157" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/bio.edit.background.gray.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/bio.edit.background.gray.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/bio.edit.background.gray.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/bio.edit.background.gray.colorset/Contents.json index aa5323a21..64f158348 100644 --- a/Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/bio.edit.background.gray.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/bio.edit.background.gray.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.200", - "blue" : "128", - "green" : "120", - "red" : "120" + "blue" : "0.502", + "green" : "0.471", + "red" : "0.471" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.360", - "blue" : "128", - "green" : "120", - "red" : "120" + "blue" : "0.502", + "green" : "0.471", + "red" : "0.471" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/name.edit.background.gray.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/name.edit.background.gray.colorset/Contents.json similarity index 74% rename from Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/name.edit.background.gray.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/name.edit.background.gray.colorset/Contents.json index b4ce9fd5b..d1c47604a 100644 --- a/Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/name.edit.background.gray.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/name.edit.background.gray.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.360", - "blue" : "128", - "green" : "120", - "red" : "120" + "blue" : "0.502", + "green" : "0.471", + "red" : "0.471" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/username.gray.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/username.gray.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Profile/Banner/username.gray.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Banner/username.gray.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Profile/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Profile/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Sidebar/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Sidebar/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Sidebar/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Sidebar/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Sidebar/logo.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Sidebar/logo.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Sidebar/logo.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Sidebar/logo.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Sidebar/logo.imageset/logo.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Sidebar/logo.imageset/logo.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Sidebar/logo.imageset/logo.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Sidebar/logo.imageset/logo.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/Contents.json diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/background.cyan.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/background.cyan.colorset/Contents.json new file mode 100644 index 000000000..de0f60b66 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/background.cyan.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.910", + "green" : "0.812", + "red" : "0.235" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@2x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@2x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@2x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@3x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@3x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@3x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.extend.imageset/cloud.base.extend@3x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@2x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@2x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@2x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@3x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@3x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@3x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/cloud.base.imageset/untitled10007Group61@3x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@2x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@2x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@2x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@3x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@3x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@3x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.on.airplane.with.contrail.imageset/untitled10006Group21@3x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@2x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@2x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@2x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@3x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@3x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@3x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.extend.imageset/elephant.three.on.grass.extend@3x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@2x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@2x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@2x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@3x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@3x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@3x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.imageset/untitled10003Group11@3x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@2x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@2x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@2x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@3x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@3x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@3x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three.imageset/untitled10005Group101@3x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@2x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@2x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@2x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@2x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@3x.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@3x.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@3x.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two.imageset/untitled10004Group111@3x.png diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/mastodon.logo.black.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/mastodon.logo.black.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/mastodon.logo.black.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.black.imageset/mastodon.logo.black.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/mastodon.logo.black.large.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/mastodon.logo.black.large.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/mastodon.logo.black.large.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.black.large.imageset/mastodon.logo.black.large.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/logotypeFull1.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/logotypeFull1.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/logotypeFull1.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.imageset/logotypeFull1.pdf diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/logotypeFull1.large.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/logotypeFull1.large.pdf similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/logotypeFull1.large.pdf rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/mastodon.logo.large.imageset/logotypeFull1.large.pdf diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json new file mode 100644 index 000000000..4872f3188 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Welcome/sign.in.button.background.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.506", + "green" : "0.675", + "red" : "0.345" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Settings/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Settings/black.auto.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.auto.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/black.auto.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.auto.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Settings/black.auto.imageset/Mixed_Black_Light.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.auto.imageset/Mixed_Black_Light.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/black.auto.imageset/Mixed_Black_Light.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.auto.imageset/Mixed_Black_Light.png diff --git a/Mastodon/Resources/Assets.xcassets/Settings/black.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/black.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Settings/black.imageset/Home Black.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Home Black.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/black.imageset/Home Black.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Home Black.png diff --git a/Mastodon/Resources/Assets.xcassets/Settings/dark.auto.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.auto.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/dark.auto.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.auto.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Settings/dark.auto.imageset/Mixed_Dark_Light.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.auto.imageset/Mixed_Dark_Light.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/dark.auto.imageset/Mixed_Dark_Light.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.auto.imageset/Mixed_Dark_Light.png diff --git a/Mastodon/Resources/Assets.xcassets/Settings/dark.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/dark.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Settings/dark.imageset/Home Dark.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Home Dark.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/dark.imageset/Home Dark.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Home Dark.png diff --git a/Mastodon/Resources/Assets.xcassets/Settings/light.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/light.imageset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Settings/light.imageset/Home Light.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/Home Light.png similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Settings/light.imageset/Home Light.png rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/Home Light.png diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/compose.toolbar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/compose.toolbar.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/compose.toolbar.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/compose.toolbar.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/content.warning.overlay.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/content.warning.overlay.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/content.warning.overlay.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/content.warning.overlay.background.colorset/Contents.json index 54427c610..7d751f897 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/content.warning.overlay.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/content.warning.overlay.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0x6E", - "green" : "0x57", - "red" : "0x4F" + "blue" : "0.431", + "green" : "0.341", + "red" : "0.310" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/tab.bar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/navigation.bar.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/tab.bar.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/navigation.bar.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/profile.field.collection.view.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/profile.field.collection.view.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/profile.field.collection.view.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/profile.field.collection.view.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/secondary.grouped.system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/secondary.grouped.system.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/secondary.grouped.system.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/secondary.grouped.system.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/secondary.system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/secondary.system.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/secondary.system.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/secondary.system.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json index c24074078..e30d6cabe 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0xF1", - "green" : "0xF1", - "red" : "0xF1" + "blue" : "0.945", + "green" : "0.945", + "red" : "0.945" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/system.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/textField.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Scene/Onboarding/textField.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json index 147cca83c..33b71ef90 100644 --- a/Mastodon/Resources/Assets.xcassets/Scene/Onboarding/textField.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0x37", - "green" : "0x2C", - "red" : "0x28" + "blue" : "0.216", + "green" : "0.173", + "red" : "0.157" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/system.grouped.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.grouped.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/system.grouped.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.grouped.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/navigation.bar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tab.bar.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/navigation.bar.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tab.bar.background.colorset/Contents.json index ec7c19fac..e3ffa5a61 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/navigation.bar.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tab.bar.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "67", - "green" : "53", - "red" : "49" + "blue" : "0.263", + "green" : "0.208", + "red" : "0.192" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/table.view.cell.selection.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.selection.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/table.view.cell.selection.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.selection.background.colorset/Contents.json index d211d7df9..7d751f897 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/table.view.cell.selection.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/table.view.cell.selection.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "60", - "green" : "58", - "red" : "58" + "blue" : "0.431", + "green" : "0.341", + "red" : "0.310" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.grouped.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.grouped.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.grouped.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.grouped.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/notification.status.border.color.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/notification.status.border.color.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/notification.status.border.color.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/notification.status.border.color.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/separator.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/separator.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/separator.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/separator.colorset/Contents.json diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/tab.bar.item.inactive.icon.color.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/tab.bar.item.inactive.icon.color.colorset/Contents.json new file mode 100644 index 000000000..baf4b4b42 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/tab.bar.item.inactive.icon.color.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.600", + "green" : "0.600", + "red" : "0.600" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.600", + "green" : "0.600", + "red" : "0.600" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/compose.toolbar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/compose.toolbar.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/compose.toolbar.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/compose.toolbar.background.colorset/Contents.json diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json new file mode 100644 index 000000000..0ca6215a8 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/content.warning.overlay.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.922", + "green" : "0.894", + "red" : "0.867" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.235", + "green" : "0.227", + "red" : "0.227" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/tab.bar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/navigation.bar.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/tab.bar.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/navigation.bar.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/profile.field.collection.view.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/profile.field.collection.view.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json index 036066700..b054549a3 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "46", - "green" : "44", - "red" : "44" + "blue" : "0.180", + "green" : "0.173", + "red" : "0.173" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json new file mode 100644 index 000000000..facc139f8 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.910", + "green" : "0.878", + "red" : "0.851" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.180", + "green" : "0.173", + "red" : "0.173" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json index ee5b1c373..03bc91c33 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0x2E", - "green" : "0x2C", - "red" : "0x2C" + "blue" : "0.180", + "green" : "0.173", + "red" : "0.173" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.background.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.background.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/table.view.cell.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/table.view.cell.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset/Contents.json index 6b983510e..ca11ee759 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/table.view.cell.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0", - "green" : "0", - "red" : "0" + "blue" : "0.118", + "green" : "0.110", + "red" : "0.110" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json index daac70e02..bcd0e01ff 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0xE8", - "green" : "0xE0", - "red" : "0xD9" + "blue" : "0.910", + "green" : "0.878", + "red" : "0.851" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/navigation.bar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tab.bar.background.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/navigation.bar.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tab.bar.background.colorset/Contents.json index 7f9578a7a..8ef5fd6db 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/navigation.bar.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tab.bar.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.940", - "blue" : "249", - "green" : "249", - "red" : "249" + "blue" : "0.976", + "green" : "0.976", + "red" : "0.976" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.940", - "blue" : "29", - "green" : "29", - "red" : "29" + "blue" : "0.114", + "green" : "0.114", + "red" : "0.114" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/table.view.cell.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/table.view.cell.background.colorset/Contents.json index dd6cbfd91..04256378a 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/table.view.cell.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "55", - "green" : "44", - "red" : "40" + "blue" : "0.000", + "green" : "0.000", + "red" : "0.000" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/table.view.cell.selection.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/table.view.cell.selection.background.colorset/Contents.json new file mode 100644 index 000000000..640af3a21 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/table.view.cell.selection.background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.922", + "green" : "0.898", + "red" : "0.867" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.235", + "green" : "0.227", + "red" : "0.227" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/tertiary.system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/tertiary.system.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.background.colorset/Contents.json index e7d7e3cd0..c752c3a5c 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/tertiary.system.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "60", - "green" : "58", - "red" : "58" + "blue" : "0.235", + "green" : "0.227", + "red" : "0.227" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json similarity index 88% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json index ab65a98ec..6b9fb70a6 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "60", - "green" : "58", - "red" : "58" + "blue" : "0.235", + "green" : "0.227", + "red" : "0.227" } }, "idiom" : "universal" diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/system/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/notification.status.border.color.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/notification.status.border.color.colorset/Contents.json similarity index 100% rename from Mastodon/Resources/Assets.xcassets/Theme/system/notification.status.border.color.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/notification.status.border.color.colorset/Contents.json diff --git a/Mastodon/Resources/Assets.xcassets/Theme/system/separator.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/separator.colorset/Contents.json similarity index 76% rename from Mastodon/Resources/Assets.xcassets/Theme/system/separator.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/separator.colorset/Contents.json index 04fbae35d..ec5491c94 100644 --- a/Mastodon/Resources/Assets.xcassets/Theme/system/separator.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/separator.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.290", - "blue" : "0x43", - "green" : "0x3C", - "red" : "0x3C" + "blue" : "0.263", + "green" : "0.235", + "red" : "0.235" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.650", - "blue" : "0x58", - "green" : "0x54", - "red" : "0x54" + "blue" : "0.345", + "green" : "0.329", + "red" : "0.329" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/tab.bar.item.inactive.icon.color.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/tab.bar.item.inactive.icon.color.colorset/Contents.json new file mode 100644 index 000000000..baf4b4b42 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/tab.bar.item.inactive.icon.color.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.600", + "green" : "0.600", + "red" : "0.600" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.600", + "green" : "0.600", + "red" : "0.600" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift new file mode 100644 index 000000000..9524153a3 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift @@ -0,0 +1,259 @@ +// swiftlint:disable all +// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen + +#if os(macOS) + import AppKit +#elseif os(iOS) + import UIKit +#elseif os(tvOS) || os(watchOS) + import UIKit +#endif + +// Deprecated typealiases +@available(*, deprecated, renamed: "ColorAsset.Color", message: "This typealias will be removed in SwiftGen 7.0") +public typealias AssetColorTypeAlias = ColorAsset.Color +@available(*, deprecated, renamed: "ImageAsset.Image", message: "This typealias will be removed in SwiftGen 7.0") +public typealias AssetImageTypeAlias = ImageAsset.Image + +// swiftlint:disable superfluous_disable_command file_length implicit_return + +// MARK: - Asset Catalogs + +// swiftlint:disable identifier_name line_length nesting type_body_length type_name +public enum Asset { + public enum Asset { + public static let email = ImageAsset(name: "Asset/email") + public static let friends = ImageAsset(name: "Asset/friends") + public static let mastodonTextLogo = ImageAsset(name: "Asset/mastodon.text.logo") + } + public enum Circles { + public static let plusCircleFill = ImageAsset(name: "Circles/plus.circle.fill") + public static let plusCircle = ImageAsset(name: "Circles/plus.circle") + } + public enum Colors { + public enum Border { + public static let composePoll = ColorAsset(name: "Colors/Border/compose.poll") + public static let searchCard = ColorAsset(name: "Colors/Border/searchCard") + public static let status = ColorAsset(name: "Colors/Border/status") + } + public enum Button { + public static let actionToolbar = ColorAsset(name: "Colors/Button/action.toolbar") + public static let disabled = ColorAsset(name: "Colors/Button/disabled") + public static let inactive = ColorAsset(name: "Colors/Button/inactive") + } + public enum Icon { + public static let plus = ColorAsset(name: "Colors/Icon/plus") + } + public enum Label { + public static let primary = ColorAsset(name: "Colors/Label/primary") + public static let primaryReverse = ColorAsset(name: "Colors/Label/primary.reverse") + public static let secondary = ColorAsset(name: "Colors/Label/secondary") + public static let tertiary = ColorAsset(name: "Colors/Label/tertiary") + } + public enum Notification { + public static let favourite = ColorAsset(name: "Colors/Notification/favourite") + public static let mention = ColorAsset(name: "Colors/Notification/mention") + public static let reblog = ColorAsset(name: "Colors/Notification/reblog") + } + public enum Poll { + public static let disabled = ColorAsset(name: "Colors/Poll/disabled") + } + public enum Shadow { + public static let searchCard = ColorAsset(name: "Colors/Shadow/SearchCard") + } + public enum Slider { + public static let track = ColorAsset(name: "Colors/Slider/track") + } + public enum TextField { + public static let background = ColorAsset(name: "Colors/TextField/background") + public static let invalid = ColorAsset(name: "Colors/TextField/invalid") + public static let valid = ColorAsset(name: "Colors/TextField/valid") + } + public static let alertYellow = ColorAsset(name: "Colors/alert.yellow") + public static let badgeBackground = ColorAsset(name: "Colors/badge.background") + public static let battleshipGrey = ColorAsset(name: "Colors/battleshipGrey") + public static let brandBlue = ColorAsset(name: "Colors/brand.blue") + public static let brandBlueDarken20 = ColorAsset(name: "Colors/brand.blue.darken.20") + public static let dangerBorder = ColorAsset(name: "Colors/danger.border") + public static let danger = ColorAsset(name: "Colors/danger") + public static let disabled = ColorAsset(name: "Colors/disabled") + public static let inactive = ColorAsset(name: "Colors/inactive") + public static let mediaTypeIndicotor = ColorAsset(name: "Colors/media.type.indicotor") + public static let successGreen = ColorAsset(name: "Colors/success.green") + public static let systemOrange = ColorAsset(name: "Colors/system.orange") + } + public enum Connectivity { + public static let photoFillSplit = ImageAsset(name: "Connectivity/photo.fill.split") + } + public enum Human { + public static let faceSmilingAdaptive = ImageAsset(name: "Human/face.smiling.adaptive") + } + public enum Scene { + public enum Onboarding { + public static let avatarPlaceholder = ImageAsset(name: "Scene/Onboarding/avatar.placeholder") + public static let navigationBackButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background") + public static let navigationBackButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background.highlighted") + public static let navigationNextButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background") + public static let navigationNextButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background.highlighted") + public static let onboardingBackground = ColorAsset(name: "Scene/Onboarding/onboarding.background") + public static let searchBarBackground = ColorAsset(name: "Scene/Onboarding/search.bar.background") + public static let textFieldBackground = ColorAsset(name: "Scene/Onboarding/textField.background") + } + public enum Profile { + public enum Banner { + public static let bioEditBackgroundGray = ColorAsset(name: "Scene/Profile/Banner/bio.edit.background.gray") + public static let nameEditBackgroundGray = ColorAsset(name: "Scene/Profile/Banner/name.edit.background.gray") + public static let usernameGray = ColorAsset(name: "Scene/Profile/Banner/username.gray") + } + } + public enum Sidebar { + public static let logo = ImageAsset(name: "Scene/Sidebar/logo") + } + public enum Welcome { + public enum Illustration { + public static let backgroundCyan = ColorAsset(name: "Scene/Welcome/illustration/background.cyan") + public static let cloudBaseExtend = ImageAsset(name: "Scene/Welcome/illustration/cloud.base.extend") + public static let cloudBase = ImageAsset(name: "Scene/Welcome/illustration/cloud.base") + public static let elephantOnAirplaneWithContrail = ImageAsset(name: "Scene/Welcome/illustration/elephant.on.airplane.with.contrail") + public static let elephantThreeOnGrassExtend = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass.extend") + public static let elephantThreeOnGrass = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass") + public static let elephantThreeOnGrassWithTreeThree = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass.with.tree.three") + public static let elephantThreeOnGrassWithTreeTwo = ImageAsset(name: "Scene/Welcome/illustration/elephant.three.on.grass.with.tree.two") + } + public static let mastodonLogoBlack = ImageAsset(name: "Scene/Welcome/mastodon.logo.black") + public static let mastodonLogoBlackLarge = ImageAsset(name: "Scene/Welcome/mastodon.logo.black.large") + public static let mastodonLogo = ImageAsset(name: "Scene/Welcome/mastodon.logo") + public static let mastodonLogoLarge = ImageAsset(name: "Scene/Welcome/mastodon.logo.large") + public static let signInButtonBackground = ColorAsset(name: "Scene/Welcome/sign.in.button.background") + } + } + public enum Settings { + public static let blackAuto = ImageAsset(name: "Settings/black.auto") + public static let black = ImageAsset(name: "Settings/black") + public static let darkAuto = ImageAsset(name: "Settings/dark.auto") + public static let dark = ImageAsset(name: "Settings/dark") + public static let light = ImageAsset(name: "Settings/light") + } + public enum Theme { + public enum Mastodon { + public static let composeToolbarBackground = ColorAsset(name: "Theme/Mastodon/compose.toolbar.background") + public static let contentWarningOverlayBackground = ColorAsset(name: "Theme/Mastodon/content.warning.overlay.background") + public static let navigationBarBackground = ColorAsset(name: "Theme/Mastodon/navigation.bar.background") + public static let profileFieldCollectionViewBackground = ColorAsset(name: "Theme/Mastodon/profile.field.collection.view.background") + public static let secondaryGroupedSystemBackground = ColorAsset(name: "Theme/Mastodon/secondary.grouped.system.background") + public static let secondarySystemBackground = ColorAsset(name: "Theme/Mastodon/secondary.system.background") + public static let sidebarBackground = ColorAsset(name: "Theme/Mastodon/sidebar.background") + public static let systemBackground = ColorAsset(name: "Theme/Mastodon/system.background") + public static let systemElevatedBackground = ColorAsset(name: "Theme/Mastodon/system.elevated.background") + public static let systemGroupedBackground = ColorAsset(name: "Theme/Mastodon/system.grouped.background") + public static let tabBarBackground = ColorAsset(name: "Theme/Mastodon/tab.bar.background") + public static let tableViewCellBackground = ColorAsset(name: "Theme/Mastodon/table.view.cell.background") + public static let tableViewCellSelectionBackground = ColorAsset(name: "Theme/Mastodon/table.view.cell.selection.background") + public static let tertiarySystemBackground = ColorAsset(name: "Theme/Mastodon/tertiary.system.background") + public static let tertiarySystemGroupedBackground = ColorAsset(name: "Theme/Mastodon/tertiary.system.grouped.background") + public static let notificationStatusBorderColor = ColorAsset(name: "Theme/Mastodon/notification.status.border.color") + public static let separator = ColorAsset(name: "Theme/Mastodon/separator") + public static let tabBarItemInactiveIconColor = ColorAsset(name: "Theme/Mastodon/tab.bar.item.inactive.icon.color") + } + public enum System { + public static let composeToolbarBackground = ColorAsset(name: "Theme/system/compose.toolbar.background") + public static let contentWarningOverlayBackground = ColorAsset(name: "Theme/system/content.warning.overlay.background") + public static let navigationBarBackground = ColorAsset(name: "Theme/system/navigation.bar.background") + public static let profileFieldCollectionViewBackground = ColorAsset(name: "Theme/system/profile.field.collection.view.background") + public static let secondaryGroupedSystemBackground = ColorAsset(name: "Theme/system/secondary.grouped.system.background") + public static let secondarySystemBackground = ColorAsset(name: "Theme/system/secondary.system.background") + public static let sidebarBackground = ColorAsset(name: "Theme/system/sidebar.background") + public static let systemBackground = ColorAsset(name: "Theme/system/system.background") + public static let systemElevatedBackground = ColorAsset(name: "Theme/system/system.elevated.background") + public static let systemGroupedBackground = ColorAsset(name: "Theme/system/system.grouped.background") + public static let tabBarBackground = ColorAsset(name: "Theme/system/tab.bar.background") + public static let tableViewCellBackground = ColorAsset(name: "Theme/system/table.view.cell.background") + public static let tableViewCellSelectionBackground = ColorAsset(name: "Theme/system/table.view.cell.selection.background") + public static let tertiarySystemBackground = ColorAsset(name: "Theme/system/tertiary.system.background") + public static let tertiarySystemGroupedBackground = ColorAsset(name: "Theme/system/tertiary.system.grouped.background") + public static let notificationStatusBorderColor = ColorAsset(name: "Theme/system/notification.status.border.color") + public static let separator = ColorAsset(name: "Theme/system/separator") + public static let tabBarItemInactiveIconColor = ColorAsset(name: "Theme/system/tab.bar.item.inactive.icon.color") + } + } +} +// swiftlint:enable identifier_name line_length nesting type_body_length type_name + +// MARK: - Implementation Details + +public final class ColorAsset { + public fileprivate(set) var name: String + + #if os(macOS) + public typealias Color = NSColor + #elseif os(iOS) || os(tvOS) || os(watchOS) + public typealias Color = UIColor + #endif + + @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) + public private(set) lazy var color: Color = { + guard let color = Color(asset: self) else { + fatalError("Unable to load color asset named \(name).") + } + return color + }() + + fileprivate init(name: String) { + self.name = name + } +} + +public extension ColorAsset.Color { + @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) + convenience init?(asset: ColorAsset) { + let bundle = Bundle.module + #if os(iOS) || os(tvOS) + self.init(named: asset.name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + self.init(named: NSColor.Name(asset.name), bundle: bundle) + #elseif os(watchOS) + self.init(named: asset.name) + #endif + } +} + +public struct ImageAsset { + public fileprivate(set) var name: String + + #if os(macOS) + public typealias Image = NSImage + #elseif os(iOS) || os(tvOS) || os(watchOS) + public typealias Image = UIImage + #endif + + public var image: Image { + let bundle = Bundle.module + #if os(iOS) || os(tvOS) + let image = Image(named: name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + let name = NSImage.Name(self.name) + let image = (bundle == .main) ? NSImage(named: name) : bundle.image(forResource: name) + #elseif os(watchOS) + let image = Image(named: name) + #endif + guard let result = image else { + fatalError("Unable to load image asset named \(name).") + } + return result + } +} + +public extension ImageAsset.Image { + @available(macOS, deprecated, + message: "This initializer is unsafe on macOS, please use the ImageAsset.image property") + convenience init?(asset: ImageAsset) { + #if os(iOS) || os(tvOS) + let bundle = Bundle.module + self.init(named: asset.name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + self.init(named: NSImage.Name(asset.name)) + #elseif os(watchOS) + self.init(named: asset.name) + #endif + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/MastodonAsset+Bundle.swift b/MastodonSDK/Sources/MastodonAsset/MastodonAsset+Bundle.swift new file mode 100644 index 000000000..45d5b3371 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/MastodonAsset+Bundle.swift @@ -0,0 +1,14 @@ +// +// MastodonAsset+Bundle.swift +// +// +// Created by MainasuK on 2022-1-10. +// + +import Foundation + +public enum MastodonAsset { + public static var bundle: Bundle { + Bundle.module + } +} diff --git a/MastodonSDK/Sources/MastodonExtension/Collection.swift b/MastodonSDK/Sources/MastodonExtension/Collection.swift new file mode 100644 index 000000000..8892583df --- /dev/null +++ b/MastodonSDK/Sources/MastodonExtension/Collection.swift @@ -0,0 +1,66 @@ +// +// Collection.swift +// +// +// Created by MainasuK on 2021-12-7. +// + +import Foundation + +// https://gist.github.com/DougGregor/92a2e4f6e11f6d733fb5065e9d1c880f +extension Collection { + public func parallelMap( + parallelism requestedParallelism: Int? = nil, + _ transform: @escaping (Element) async throws -> T + ) async rethrows -> [T] { + let defaultParallelism = 2 + let parallelism = requestedParallelism ?? defaultParallelism + + let n = count + if n == 0 { + return [] + } + return try await withThrowingTaskGroup(of: (Int, T).self, returning: [T].self) { group in + var result = [T?](repeatElement(nil, count: n)) + + var i = self.startIndex + var submitted = 0 + + func submitNext() async throws { + if i == self.endIndex { return } + + group.addTask { [submitted, i] in + let value = try await transform(self[i]) + return (submitted, value) + } + submitted += 1 + formIndex(after: &i) + } + + // submit first initial tasks + for _ in 0 ..< parallelism { + try await submitNext() + } + + // as each task completes, submit a new task until we run out of work + while let (index, taskResult) = try await group.next() { + result[index] = taskResult + + try Task.checkCancellation() + try await submitNext() + } + + assert(result.count == n) + return Array(result.compactMap { $0 }) + } + } + + func parallelEach( + parallelism requestedParallelism: Int? = nil, + _ work: @escaping (Element) async throws -> Void + ) async rethrows { + _ = try await parallelMap { + try await work($0) + } + } +} diff --git a/MastodonSDK/Sources/MastodonExtension/Publisher.swift b/MastodonSDK/Sources/MastodonExtension/Publisher.swift new file mode 100644 index 000000000..6bbf19f57 --- /dev/null +++ b/MastodonSDK/Sources/MastodonExtension/Publisher.swift @@ -0,0 +1,90 @@ +import Combine + +// Ref: https://www.swiftbysundell.com/articles/connecting-async-await-with-other-swift-code/ + +extension Publishers { + public struct MissingOutputError: Error {} +} + +extension Publisher { + public func singleOutput() async throws -> Output { + var cancellable: AnyCancellable? + var didReceiveValue = false + + return try await withCheckedThrowingContinuation { continuation in + cancellable = sink( + receiveCompletion: { completion in + switch completion { + case .failure(let error): + continuation.resume(throwing: error) + case .finished: + if !didReceiveValue { + continuation.resume( + throwing: Publishers.MissingOutputError() + ) + } + } + }, + receiveValue: { value in + guard !didReceiveValue else { return } + + didReceiveValue = true + cancellable?.cancel() + continuation.resume(returning: value) + } + ) + } + } +} + +// ref: https://www.swiftbysundell.com/articles/calling-async-functions-within-a-combine-pipeline/ + +extension Publisher { + public func asyncMap( + _ transform: @escaping (Output) async -> T + ) -> Publishers.FlatMap, Self> { + flatMap { value in + Future { promise in + Task { + let output = await transform(value) + promise(.success(output)) + } + } + } + } + + public func asyncMap( + _ transform: @escaping (Output) async throws -> T + ) -> Publishers.FlatMap, Self> { + flatMap { value in + Future { promise in + Task { + do { + let output = try await transform(value) + promise(.success(output)) + } catch { + promise(.failure(error)) + } + } + } + } + } + + public func asyncMap( + _ transform: @escaping (Output) async throws -> T + ) -> Publishers.FlatMap, + Publishers.SetFailureType> { + flatMap { value in + Future { promise in + Task { + do { + let output = try await transform(value) + promise(.success(output)) + } catch { + promise(.failure(error)) + } + } + } + } + } +} diff --git a/Mastodon/Extension/UIButton.swift b/MastodonSDK/Sources/MastodonExtension/UIButton.swift similarity index 89% rename from Mastodon/Extension/UIButton.swift rename to MastodonSDK/Sources/MastodonExtension/UIButton.swift index 31043157a..6e939f3c6 100644 --- a/Mastodon/Extension/UIButton.swift +++ b/MastodonSDK/Sources/MastodonExtension/UIButton.swift @@ -1,14 +1,14 @@ // // UIButton.swift -// Mastodon +// // -// Created by sxiaojian on 2021/2/1. +// Created by MainasuK on 2022-1-17. // import UIKit extension UIButton { - func setInsets( + public func setInsets( forContentPadding contentPadding: UIEdgeInsets, imageTitlePadding: CGFloat ) { @@ -44,7 +44,7 @@ extension UIButton { } extension UIButton { - func setBackgroundColor(_ color: UIColor, for state: UIControl.State) { + public func setBackgroundColor(_ color: UIColor, for state: UIControl.State) { self.setBackgroundImage( UIImage.placeholder(color: color), for: state diff --git a/MastodonSDK/Sources/MastodonExtension/UIView.swift b/MastodonSDK/Sources/MastodonExtension/UIView.swift new file mode 100644 index 000000000..5466c464d --- /dev/null +++ b/MastodonSDK/Sources/MastodonExtension/UIView.swift @@ -0,0 +1,14 @@ +// +// UIView.swift +// +// +// Created by MainasuK on 2022-1-17. +// + +import UIKit + +extension UIView { + public static var isZoomedMode: Bool { + return UIScreen.main.scale != UIScreen.main.nativeScale + } +} diff --git a/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift b/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift new file mode 100644 index 000000000..805a7e52b --- /dev/null +++ b/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift @@ -0,0 +1,1155 @@ +// swiftlint:disable all +// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen + +import Foundation + +// swiftlint:disable superfluous_disable_command file_length implicit_return + +// MARK: - Strings + +// swiftlint:disable explicit_type_interface function_parameter_count identifier_name line_length +// swiftlint:disable nesting type_body_length type_name vertical_whitespace_opening_braces +public enum L10n { + + public enum Common { + public enum Alerts { + public enum BlockDomain { + /// Block Domain + public static let blockEntireDomain = L10n.tr("Localizable", "Common.Alerts.BlockDomain.BlockEntireDomain") + /// Are you really, really sure you want to block the entire %@? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed. + public static func title(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Alerts.BlockDomain.Title", String(describing: p1)) + } + } + public enum CleanCache { + /// Successfully cleaned %@ cache. + public static func message(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Alerts.CleanCache.Message", String(describing: p1)) + } + /// Clean Cache + public static let title = L10n.tr("Localizable", "Common.Alerts.CleanCache.Title") + } + public enum Common { + /// Please try again. + public static let pleaseTryAgain = L10n.tr("Localizable", "Common.Alerts.Common.PleaseTryAgain") + /// Please try again later. + public static let pleaseTryAgainLater = L10n.tr("Localizable", "Common.Alerts.Common.PleaseTryAgainLater") + } + public enum DeletePost { + /// Delete + public static let delete = L10n.tr("Localizable", "Common.Alerts.DeletePost.Delete") + /// Are you sure you want to delete this post? + public static let title = L10n.tr("Localizable", "Common.Alerts.DeletePost.Title") + } + public enum DiscardPostContent { + /// Confirm to discard composed post content. + public static let message = L10n.tr("Localizable", "Common.Alerts.DiscardPostContent.Message") + /// Discard Draft + public static let title = L10n.tr("Localizable", "Common.Alerts.DiscardPostContent.Title") + } + public enum EditProfileFailure { + /// Cannot edit profile. Please try again. + public static let message = L10n.tr("Localizable", "Common.Alerts.EditProfileFailure.Message") + /// Edit Profile Error + public static let title = L10n.tr("Localizable", "Common.Alerts.EditProfileFailure.Title") + } + public enum PublishPostFailure { + /// Failed to publish the post.\nPlease check your internet connection. + public static let message = L10n.tr("Localizable", "Common.Alerts.PublishPostFailure.Message") + /// Publish Failure + public static let title = L10n.tr("Localizable", "Common.Alerts.PublishPostFailure.Title") + public enum AttachmentsMessage { + /// Cannot attach more than one video. + public static let moreThanOneVideo = L10n.tr("Localizable", "Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo") + /// Cannot attach a video to a post that already contains images. + public static let videoAttachWithPhoto = L10n.tr("Localizable", "Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto") + } + } + public enum SavePhotoFailure { + /// Please enable the photo library access permission to save the photo. + public static let message = L10n.tr("Localizable", "Common.Alerts.SavePhotoFailure.Message") + /// Save Photo Failure + public static let title = L10n.tr("Localizable", "Common.Alerts.SavePhotoFailure.Title") + } + public enum ServerError { + /// Server Error + public static let title = L10n.tr("Localizable", "Common.Alerts.ServerError.Title") + } + public enum SignOut { + /// Sign Out + public static let confirm = L10n.tr("Localizable", "Common.Alerts.SignOut.Confirm") + /// Are you sure you want to sign out? + public static let message = L10n.tr("Localizable", "Common.Alerts.SignOut.Message") + /// Sign Out + public static let title = L10n.tr("Localizable", "Common.Alerts.SignOut.Title") + } + public enum SignUpFailure { + /// Sign Up Failure + public static let title = L10n.tr("Localizable", "Common.Alerts.SignUpFailure.Title") + } + public enum VoteFailure { + /// The poll has ended + public static let pollEnded = L10n.tr("Localizable", "Common.Alerts.VoteFailure.PollEnded") + /// Vote Failure + public static let title = L10n.tr("Localizable", "Common.Alerts.VoteFailure.Title") + } + } + public enum Controls { + public enum Actions { + /// Add + public static let add = L10n.tr("Localizable", "Common.Controls.Actions.Add") + /// Back + public static let back = L10n.tr("Localizable", "Common.Controls.Actions.Back") + /// Block %@ + public static func blockDomain(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Actions.BlockDomain", String(describing: p1)) + } + /// Cancel + public static let cancel = L10n.tr("Localizable", "Common.Controls.Actions.Cancel") + /// Compose + public static let compose = L10n.tr("Localizable", "Common.Controls.Actions.Compose") + /// Confirm + public static let confirm = L10n.tr("Localizable", "Common.Controls.Actions.Confirm") + /// Continue + public static let `continue` = L10n.tr("Localizable", "Common.Controls.Actions.Continue") + /// Copy Photo + public static let copyPhoto = L10n.tr("Localizable", "Common.Controls.Actions.CopyPhoto") + /// Delete + public static let delete = L10n.tr("Localizable", "Common.Controls.Actions.Delete") + /// Discard + public static let discard = L10n.tr("Localizable", "Common.Controls.Actions.Discard") + /// Done + public static let done = L10n.tr("Localizable", "Common.Controls.Actions.Done") + /// Edit + public static let edit = L10n.tr("Localizable", "Common.Controls.Actions.Edit") + /// Find people to follow + public static let findPeople = L10n.tr("Localizable", "Common.Controls.Actions.FindPeople") + /// Manually search instead + public static let manuallySearch = L10n.tr("Localizable", "Common.Controls.Actions.ManuallySearch") + /// Next + public static let next = L10n.tr("Localizable", "Common.Controls.Actions.Next") + /// OK + public static let ok = L10n.tr("Localizable", "Common.Controls.Actions.Ok") + /// Open + public static let `open` = L10n.tr("Localizable", "Common.Controls.Actions.Open") + /// Open in Safari + public static let openInSafari = L10n.tr("Localizable", "Common.Controls.Actions.OpenInSafari") + /// Preview + public static let preview = L10n.tr("Localizable", "Common.Controls.Actions.Preview") + /// Previous + public static let previous = L10n.tr("Localizable", "Common.Controls.Actions.Previous") + /// Remove + public static let remove = L10n.tr("Localizable", "Common.Controls.Actions.Remove") + /// Reply + public static let reply = L10n.tr("Localizable", "Common.Controls.Actions.Reply") + /// Report %@ + public static func reportUser(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Actions.ReportUser", String(describing: p1)) + } + /// Save + public static let save = L10n.tr("Localizable", "Common.Controls.Actions.Save") + /// Save Photo + public static let savePhoto = L10n.tr("Localizable", "Common.Controls.Actions.SavePhoto") + /// See More + public static let seeMore = L10n.tr("Localizable", "Common.Controls.Actions.SeeMore") + /// Settings + public static let settings = L10n.tr("Localizable", "Common.Controls.Actions.Settings") + /// Share + public static let share = L10n.tr("Localizable", "Common.Controls.Actions.Share") + /// Share Post + public static let sharePost = L10n.tr("Localizable", "Common.Controls.Actions.SharePost") + /// Share %@ + public static func shareUser(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Actions.ShareUser", String(describing: p1)) + } + /// Sign In + public static let signIn = L10n.tr("Localizable", "Common.Controls.Actions.SignIn") + /// Sign Up + public static let signUp = L10n.tr("Localizable", "Common.Controls.Actions.SignUp") + /// Skip + public static let skip = L10n.tr("Localizable", "Common.Controls.Actions.Skip") + /// Take Photo + public static let takePhoto = L10n.tr("Localizable", "Common.Controls.Actions.TakePhoto") + /// Try Again + public static let tryAgain = L10n.tr("Localizable", "Common.Controls.Actions.TryAgain") + /// Unblock %@ + public static func unblockDomain(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Actions.UnblockDomain", String(describing: p1)) + } + } + public enum Friendship { + /// Block + public static let block = L10n.tr("Localizable", "Common.Controls.Friendship.Block") + /// Block %@ + public static func blockDomain(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Friendship.BlockDomain", String(describing: p1)) + } + /// Blocked + public static let blocked = L10n.tr("Localizable", "Common.Controls.Friendship.Blocked") + /// Block %@ + public static func blockUser(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Friendship.BlockUser", String(describing: p1)) + } + /// Edit Info + public static let editInfo = L10n.tr("Localizable", "Common.Controls.Friendship.EditInfo") + /// Follow + public static let follow = L10n.tr("Localizable", "Common.Controls.Friendship.Follow") + /// Following + public static let following = L10n.tr("Localizable", "Common.Controls.Friendship.Following") + /// Mute + public static let mute = L10n.tr("Localizable", "Common.Controls.Friendship.Mute") + /// Muted + public static let muted = L10n.tr("Localizable", "Common.Controls.Friendship.Muted") + /// Mute %@ + public static func muteUser(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Friendship.MuteUser", String(describing: p1)) + } + /// Pending + public static let pending = L10n.tr("Localizable", "Common.Controls.Friendship.Pending") + /// Request + public static let request = L10n.tr("Localizable", "Common.Controls.Friendship.Request") + /// Unblock + public static let unblock = L10n.tr("Localizable", "Common.Controls.Friendship.Unblock") + /// Unblock %@ + public static func unblockUser(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Friendship.UnblockUser", String(describing: p1)) + } + /// Unmute + public static let unmute = L10n.tr("Localizable", "Common.Controls.Friendship.Unmute") + /// Unmute %@ + public static func unmuteUser(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Friendship.UnmuteUser", String(describing: p1)) + } + } + public enum Keyboard { + public enum Common { + /// Compose New Post + public static let composeNewPost = L10n.tr("Localizable", "Common.Controls.Keyboard.Common.ComposeNewPost") + /// Open Settings + public static let openSettings = L10n.tr("Localizable", "Common.Controls.Keyboard.Common.OpenSettings") + /// Show Favorites + public static let showFavorites = L10n.tr("Localizable", "Common.Controls.Keyboard.Common.ShowFavorites") + /// Switch to %@ + public static func switchToTab(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Keyboard.Common.SwitchToTab", String(describing: p1)) + } + } + public enum SegmentedControl { + /// Next Section + public static let nextSection = L10n.tr("Localizable", "Common.Controls.Keyboard.SegmentedControl.NextSection") + /// Previous Section + public static let previousSection = L10n.tr("Localizable", "Common.Controls.Keyboard.SegmentedControl.PreviousSection") + } + public enum Timeline { + /// Next Post + public static let nextStatus = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.NextStatus") + /// Open Author's Profile + public static let openAuthorProfile = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.OpenAuthorProfile") + /// Open Reblogger's Profile + public static let openRebloggerProfile = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.OpenRebloggerProfile") + /// Open Post + public static let openStatus = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.OpenStatus") + /// Preview Image + public static let previewImage = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.PreviewImage") + /// Previous Post + public static let previousStatus = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.PreviousStatus") + /// Reply to Post + public static let replyStatus = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.ReplyStatus") + /// Toggle Content Warning + public static let toggleContentWarning = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.ToggleContentWarning") + /// Toggle Favorite on Post + public static let toggleFavorite = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.ToggleFavorite") + /// Toggle Reblog on Post + public static let toggleReblog = L10n.tr("Localizable", "Common.Controls.Keyboard.Timeline.ToggleReblog") + } + } + public enum Status { + /// Content Warning + public static let contentWarning = L10n.tr("Localizable", "Common.Controls.Status.ContentWarning") + /// Tap anywhere to reveal + public static let mediaContentWarning = L10n.tr("Localizable", "Common.Controls.Status.MediaContentWarning") + /// Show Post + public static let showPost = L10n.tr("Localizable", "Common.Controls.Status.ShowPost") + /// Show user profile + public static let showUserProfile = L10n.tr("Localizable", "Common.Controls.Status.ShowUserProfile") + /// %@ reblogged + public static func userReblogged(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Status.UserReblogged", String(describing: p1)) + } + /// Replied to %@ + public static func userRepliedTo(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Status.UserRepliedTo", String(describing: p1)) + } + public enum Actions { + /// Favorite + public static let favorite = L10n.tr("Localizable", "Common.Controls.Status.Actions.Favorite") + /// Menu + public static let menu = L10n.tr("Localizable", "Common.Controls.Status.Actions.Menu") + /// Reblog + public static let reblog = L10n.tr("Localizable", "Common.Controls.Status.Actions.Reblog") + /// Reply + public static let reply = L10n.tr("Localizable", "Common.Controls.Status.Actions.Reply") + /// Unfavorite + public static let unfavorite = L10n.tr("Localizable", "Common.Controls.Status.Actions.Unfavorite") + /// Undo reblog + public static let unreblog = L10n.tr("Localizable", "Common.Controls.Status.Actions.Unreblog") + } + public enum Poll { + /// Closed + public static let closed = L10n.tr("Localizable", "Common.Controls.Status.Poll.Closed") + /// Vote + public static let vote = L10n.tr("Localizable", "Common.Controls.Status.Poll.Vote") + } + public enum Tag { + /// Email + public static let email = L10n.tr("Localizable", "Common.Controls.Status.Tag.Email") + /// Emoji + public static let emoji = L10n.tr("Localizable", "Common.Controls.Status.Tag.Emoji") + /// Hashtag + public static let hashtag = L10n.tr("Localizable", "Common.Controls.Status.Tag.Hashtag") + /// Link + public static let link = L10n.tr("Localizable", "Common.Controls.Status.Tag.Link") + /// Mention + public static let mention = L10n.tr("Localizable", "Common.Controls.Status.Tag.Mention") + /// URL + public static let url = L10n.tr("Localizable", "Common.Controls.Status.Tag.Url") + } + } + public enum Tabs { + /// Home + public static let home = L10n.tr("Localizable", "Common.Controls.Tabs.Home") + /// Notification + public static let notification = L10n.tr("Localizable", "Common.Controls.Tabs.Notification") + /// Profile + public static let profile = L10n.tr("Localizable", "Common.Controls.Tabs.Profile") + /// Search + public static let search = L10n.tr("Localizable", "Common.Controls.Tabs.Search") + } + public enum Timeline { + /// Filtered + public static let filtered = L10n.tr("Localizable", "Common.Controls.Timeline.Filtered") + public enum Header { + /// You can’t view this user’s profile\nuntil they unblock you. + public static let blockedWarning = L10n.tr("Localizable", "Common.Controls.Timeline.Header.BlockedWarning") + /// You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them. + public static let blockingWarning = L10n.tr("Localizable", "Common.Controls.Timeline.Header.BlockingWarning") + /// No Post Found + public static let noStatusFound = L10n.tr("Localizable", "Common.Controls.Timeline.Header.NoStatusFound") + /// This user has been suspended. + public static let suspendedWarning = L10n.tr("Localizable", "Common.Controls.Timeline.Header.SuspendedWarning") + /// You can’t view %@’s profile\nuntil they unblock you. + public static func userBlockedWarning(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Timeline.Header.UserBlockedWarning", String(describing: p1)) + } + /// You can’t view %@’s profile\nuntil you unblock them.\nYour profile looks like this to them. + public static func userBlockingWarning(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Timeline.Header.UserBlockingWarning", String(describing: p1)) + } + /// %@’s account has been suspended. + public static func userSuspendedWarning(_ p1: Any) -> String { + return L10n.tr("Localizable", "Common.Controls.Timeline.Header.UserSuspendedWarning", String(describing: p1)) + } + } + public enum Loader { + /// Loading missing posts... + public static let loadingMissingPosts = L10n.tr("Localizable", "Common.Controls.Timeline.Loader.LoadingMissingPosts") + /// Load missing posts + public static let loadMissingPosts = L10n.tr("Localizable", "Common.Controls.Timeline.Loader.LoadMissingPosts") + /// Show more replies + public static let showMoreReplies = L10n.tr("Localizable", "Common.Controls.Timeline.Loader.ShowMoreReplies") + } + public enum Timestamp { + /// Now + public static let now = L10n.tr("Localizable", "Common.Controls.Timeline.Timestamp.Now") + } + } + } + } + + public enum Scene { + public enum AccountList { + /// Add Account + public static let addAccount = L10n.tr("Localizable", "Scene.AccountList.AddAccount") + /// Dismiss Account Switcher + public static let dismissAccountSwitcher = L10n.tr("Localizable", "Scene.AccountList.DismissAccountSwitcher") + /// Current selected profile: %@. Double tap then hold to show account switcher + public static func tabBarHint(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.AccountList.TabBarHint", String(describing: p1)) + } + } + public enum Compose { + /// Publish + public static let composeAction = L10n.tr("Localizable", "Scene.Compose.ComposeAction") + /// Type or paste what’s on your mind + public static let contentInputPlaceholder = L10n.tr("Localizable", "Scene.Compose.ContentInputPlaceholder") + /// replying to %@ + public static func replyingToUser(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Compose.ReplyingToUser", String(describing: p1)) + } + public enum Accessibility { + /// Add Attachment + public static let appendAttachment = L10n.tr("Localizable", "Scene.Compose.Accessibility.AppendAttachment") + /// Add Poll + public static let appendPoll = L10n.tr("Localizable", "Scene.Compose.Accessibility.AppendPoll") + /// Custom Emoji Picker + public static let customEmojiPicker = L10n.tr("Localizable", "Scene.Compose.Accessibility.CustomEmojiPicker") + /// Disable Content Warning + public static let disableContentWarning = L10n.tr("Localizable", "Scene.Compose.Accessibility.DisableContentWarning") + /// Enable Content Warning + public static let enableContentWarning = L10n.tr("Localizable", "Scene.Compose.Accessibility.EnableContentWarning") + /// Post Visibility Menu + public static let postVisibilityMenu = L10n.tr("Localizable", "Scene.Compose.Accessibility.PostVisibilityMenu") + /// Remove Poll + public static let removePoll = L10n.tr("Localizable", "Scene.Compose.Accessibility.RemovePoll") + } + public enum Attachment { + /// This %@ is broken and can’t be\nuploaded to Mastodon. + public static func attachmentBroken(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Compose.Attachment.AttachmentBroken", String(describing: p1)) + } + /// Describe the photo for the visually-impaired... + public static let descriptionPhoto = L10n.tr("Localizable", "Scene.Compose.Attachment.DescriptionPhoto") + /// Describe the video for the visually-impaired... + public static let descriptionVideo = L10n.tr("Localizable", "Scene.Compose.Attachment.DescriptionVideo") + /// photo + public static let photo = L10n.tr("Localizable", "Scene.Compose.Attachment.Photo") + /// video + public static let video = L10n.tr("Localizable", "Scene.Compose.Attachment.Video") + } + public enum AutoComplete { + /// Space to add + public static let spaceToAdd = L10n.tr("Localizable", "Scene.Compose.AutoComplete.SpaceToAdd") + } + public enum ContentWarning { + /// Write an accurate warning here... + public static let placeholder = L10n.tr("Localizable", "Scene.Compose.ContentWarning.Placeholder") + } + public enum Keyboard { + /// Add Attachment - %@ + public static func appendAttachmentEntry(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Compose.Keyboard.AppendAttachmentEntry", String(describing: p1)) + } + /// Discard Post + public static let discardPost = L10n.tr("Localizable", "Scene.Compose.Keyboard.DiscardPost") + /// Publish Post + public static let publishPost = L10n.tr("Localizable", "Scene.Compose.Keyboard.PublishPost") + /// Select Visibility - %@ + public static func selectVisibilityEntry(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Compose.Keyboard.SelectVisibilityEntry", String(describing: p1)) + } + /// Toggle Content Warning + public static let toggleContentWarning = L10n.tr("Localizable", "Scene.Compose.Keyboard.ToggleContentWarning") + /// Toggle Poll + public static let togglePoll = L10n.tr("Localizable", "Scene.Compose.Keyboard.TogglePoll") + } + public enum MediaSelection { + /// Browse + public static let browse = L10n.tr("Localizable", "Scene.Compose.MediaSelection.Browse") + /// Take Photo + public static let camera = L10n.tr("Localizable", "Scene.Compose.MediaSelection.Camera") + /// Photo Library + public static let photoLibrary = L10n.tr("Localizable", "Scene.Compose.MediaSelection.PhotoLibrary") + } + public enum Poll { + /// Duration: %@ + public static func durationTime(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Compose.Poll.DurationTime", String(describing: p1)) + } + /// 1 Day + public static let oneDay = L10n.tr("Localizable", "Scene.Compose.Poll.OneDay") + /// 1 Hour + public static let oneHour = L10n.tr("Localizable", "Scene.Compose.Poll.OneHour") + /// Option %ld + public static func optionNumber(_ p1: Int) -> String { + return L10n.tr("Localizable", "Scene.Compose.Poll.OptionNumber", p1) + } + /// 7 Days + public static let sevenDays = L10n.tr("Localizable", "Scene.Compose.Poll.SevenDays") + /// 6 Hours + public static let sixHours = L10n.tr("Localizable", "Scene.Compose.Poll.SixHours") + /// 30 minutes + public static let thirtyMinutes = L10n.tr("Localizable", "Scene.Compose.Poll.ThirtyMinutes") + /// 3 Days + public static let threeDays = L10n.tr("Localizable", "Scene.Compose.Poll.ThreeDays") + } + public enum Title { + /// New Post + public static let newPost = L10n.tr("Localizable", "Scene.Compose.Title.NewPost") + /// New Reply + public static let newReply = L10n.tr("Localizable", "Scene.Compose.Title.NewReply") + } + public enum Visibility { + /// Only people I mention + public static let direct = L10n.tr("Localizable", "Scene.Compose.Visibility.Direct") + /// Followers only + public static let `private` = L10n.tr("Localizable", "Scene.Compose.Visibility.Private") + /// Public + public static let `public` = L10n.tr("Localizable", "Scene.Compose.Visibility.Public") + /// Unlisted + public static let unlisted = L10n.tr("Localizable", "Scene.Compose.Visibility.Unlisted") + } + } + public enum ConfirmEmail { + /// We just sent an email to %@,\ntap the link to confirm your account. + public static func subtitle(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.ConfirmEmail.Subtitle", String(describing: p1)) + } + /// One last thing. + public static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.Title") + public enum Button { + /// I never got an email + public static let dontReceiveEmail = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.DontReceiveEmail") + /// Open Email App + public static let openEmailApp = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.OpenEmailApp") + } + public enum DontReceiveEmail { + /// Check if your email address is correct as well as your junk folder if you haven’t. + public static let description = L10n.tr("Localizable", "Scene.ConfirmEmail.DontReceiveEmail.Description") + /// Resend Email + public static let resendEmail = L10n.tr("Localizable", "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail") + /// Check your email + public static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.DontReceiveEmail.Title") + } + public enum OpenEmailApp { + /// We just sent you an email. Check your junk folder if you haven’t. + public static let description = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.Description") + /// Mail + public static let mail = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.Mail") + /// Open Email Client + public static let openEmailClient = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient") + /// Check your inbox. + public static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.OpenEmailApp.Title") + } + } + public enum Favorite { + /// Your Favorites + public static let title = L10n.tr("Localizable", "Scene.Favorite.Title") + } + public enum Follower { + /// Followers from other servers are not displayed. + public static let footer = L10n.tr("Localizable", "Scene.Follower.Footer") + } + public enum Following { + /// Follows from other servers are not displayed. + public static let footer = L10n.tr("Localizable", "Scene.Following.Footer") + } + public enum HomeTimeline { + /// Home + public static let title = L10n.tr("Localizable", "Scene.HomeTimeline.Title") + public enum NavigationBarState { + /// See new posts + public static let newPosts = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.NewPosts") + /// Offline + public static let offline = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Offline") + /// Published! + public static let published = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Published") + /// Publishing post... + public static let publishing = L10n.tr("Localizable", "Scene.HomeTimeline.NavigationBarState.Publishing") + } + } + public enum Notification { + /// %@ favorited your post + public static func userFavoritedYourPost(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Notification.UserFavorited Your Post", String(describing: p1)) + } + /// %@ followed you + public static func userFollowedYou(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Notification.UserFollowedYou", String(describing: p1)) + } + /// %@ mentioned you + public static func userMentionedYou(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Notification.UserMentionedYou", String(describing: p1)) + } + /// %@ reblogged your post + public static func userRebloggedYourPost(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Notification.UserRebloggedYourPost", String(describing: p1)) + } + /// %@ requested to follow you + public static func userRequestedToFollowYou(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Notification.UserRequestedToFollowYou", String(describing: p1)) + } + /// %@ Your poll has ended + public static func userYourPollHasEnded(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Notification.UserYourPollHasEnded", String(describing: p1)) + } + public enum Keyobard { + /// Show Everything + public static let showEverything = L10n.tr("Localizable", "Scene.Notification.Keyobard.ShowEverything") + /// Show Mentions + public static let showMentions = L10n.tr("Localizable", "Scene.Notification.Keyobard.ShowMentions") + } + public enum Title { + /// Everything + public static let everything = L10n.tr("Localizable", "Scene.Notification.Title.Everything") + /// Mentions + public static let mentions = L10n.tr("Localizable", "Scene.Notification.Title.Mentions") + } + } + public enum Preview { + public enum Keyboard { + /// Close Preview + public static let closePreview = L10n.tr("Localizable", "Scene.Preview.Keyboard.ClosePreview") + /// Show Next + public static let showNext = L10n.tr("Localizable", "Scene.Preview.Keyboard.ShowNext") + /// Show Previous + public static let showPrevious = L10n.tr("Localizable", "Scene.Preview.Keyboard.ShowPrevious") + } + } + public enum Profile { + public enum Dashboard { + /// followers + public static let followers = L10n.tr("Localizable", "Scene.Profile.Dashboard.Followers") + /// following + public static let following = L10n.tr("Localizable", "Scene.Profile.Dashboard.Following") + /// posts + public static let posts = L10n.tr("Localizable", "Scene.Profile.Dashboard.Posts") + } + public enum Fields { + /// Add Row + public static let addRow = L10n.tr("Localizable", "Scene.Profile.Fields.AddRow") + public enum Placeholder { + /// Content + public static let content = L10n.tr("Localizable", "Scene.Profile.Fields.Placeholder.Content") + /// Label + public static let label = L10n.tr("Localizable", "Scene.Profile.Fields.Placeholder.Label") + } + } + public enum RelationshipActionAlert { + public enum ConfirmUnblockUsre { + /// Confirm to unblock %@ + public static func message(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message", String(describing: p1)) + } + /// Unblock Account + public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title") + } + public enum ConfirmUnmuteUser { + /// Confirm to unmute %@ + public static func message(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message", String(describing: p1)) + } + /// Unmute Account + public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title") + } + } + public enum SegmentedControl { + /// Media + public static let media = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Media") + /// Posts + public static let posts = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Posts") + /// Replies + public static let replies = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Replies") + } + } + public enum Register { + /// Tell us about you. + public static let title = L10n.tr("Localizable", "Scene.Register.Title") + public enum Error { + public enum Item { + /// Agreement + public static let agreement = L10n.tr("Localizable", "Scene.Register.Error.Item.Agreement") + /// Email + public static let email = L10n.tr("Localizable", "Scene.Register.Error.Item.Email") + /// Locale + public static let locale = L10n.tr("Localizable", "Scene.Register.Error.Item.Locale") + /// Password + public static let password = L10n.tr("Localizable", "Scene.Register.Error.Item.Password") + /// Reason + public static let reason = L10n.tr("Localizable", "Scene.Register.Error.Item.Reason") + /// Username + public static let username = L10n.tr("Localizable", "Scene.Register.Error.Item.Username") + } + public enum Reason { + /// %@ must be accepted + public static func accepted(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.Accepted", String(describing: p1)) + } + /// %@ is required + public static func blank(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.Blank", String(describing: p1)) + } + /// %@ contains a disallowed email provider + public static func blocked(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.Blocked", String(describing: p1)) + } + /// %@ is not a supported value + public static func inclusion(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.Inclusion", String(describing: p1)) + } + /// %@ is invalid + public static func invalid(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.Invalid", String(describing: p1)) + } + /// %@ is a reserved keyword + public static func reserved(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.Reserved", String(describing: p1)) + } + /// %@ is already in use + public static func taken(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.Taken", String(describing: p1)) + } + /// %@ is too long + public static func tooLong(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.TooLong", String(describing: p1)) + } + /// %@ is too short + public static func tooShort(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.TooShort", String(describing: p1)) + } + /// %@ does not seem to exist + public static func unreachable(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Error.Reason.Unreachable", String(describing: p1)) + } + } + public enum Special { + /// This is not a valid email address + public static let emailInvalid = L10n.tr("Localizable", "Scene.Register.Error.Special.EmailInvalid") + /// Password is too short (must be at least 8 characters) + public static let passwordTooShort = L10n.tr("Localizable", "Scene.Register.Error.Special.PasswordTooShort") + /// Username must only contain alphanumeric characters and underscores + public static let usernameInvalid = L10n.tr("Localizable", "Scene.Register.Error.Special.UsernameInvalid") + /// Username is too long (can’t be longer than 30 characters) + public static let usernameTooLong = L10n.tr("Localizable", "Scene.Register.Error.Special.UsernameTooLong") + } + } + public enum Input { + public enum Avatar { + /// Delete + public static let delete = L10n.tr("Localizable", "Scene.Register.Input.Avatar.Delete") + } + public enum DisplayName { + /// display name + public static let placeholder = L10n.tr("Localizable", "Scene.Register.Input.DisplayName.Placeholder") + } + public enum Email { + /// email + public static let placeholder = L10n.tr("Localizable", "Scene.Register.Input.Email.Placeholder") + } + public enum Invite { + /// Why do you want to join? + public static let registrationUserInviteRequest = L10n.tr("Localizable", "Scene.Register.Input.Invite.RegistrationUserInviteRequest") + } + public enum Password { + /// Your password needs at least eight characters + public static let hint = L10n.tr("Localizable", "Scene.Register.Input.Password.Hint") + /// password + public static let placeholder = L10n.tr("Localizable", "Scene.Register.Input.Password.Placeholder") + } + public enum Username { + /// This username is taken. + public static let duplicatePrompt = L10n.tr("Localizable", "Scene.Register.Input.Username.DuplicatePrompt") + /// username + public static let placeholder = L10n.tr("Localizable", "Scene.Register.Input.Username.Placeholder") + } + } + } + public enum Report { + /// Are there any other posts you’d like to add to the report? + public static let content1 = L10n.tr("Localizable", "Scene.Report.Content1") + /// Is there anything the moderators should know about this report? + public static let content2 = L10n.tr("Localizable", "Scene.Report.Content2") + /// Send Report + public static let send = L10n.tr("Localizable", "Scene.Report.Send") + /// Send without comment + public static let skipToSend = L10n.tr("Localizable", "Scene.Report.SkipToSend") + /// Step 1 of 2 + public static let step1 = L10n.tr("Localizable", "Scene.Report.Step1") + /// Step 2 of 2 + public static let step2 = L10n.tr("Localizable", "Scene.Report.Step2") + /// Type or paste additional comments + public static let textPlaceholder = L10n.tr("Localizable", "Scene.Report.TextPlaceholder") + /// Report %@ + public static func title(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Report.Title", String(describing: p1)) + } + } + public enum Search { + /// Search + public static let title = L10n.tr("Localizable", "Scene.Search.Title") + public enum Recommend { + /// See All + public static let buttonText = L10n.tr("Localizable", "Scene.Search.Recommend.ButtonText") + public enum Accounts { + /// You may like to follow these accounts + public static let description = L10n.tr("Localizable", "Scene.Search.Recommend.Accounts.Description") + /// Follow + public static let follow = L10n.tr("Localizable", "Scene.Search.Recommend.Accounts.Follow") + /// Accounts you might like + public static let title = L10n.tr("Localizable", "Scene.Search.Recommend.Accounts.Title") + } + public enum HashTag { + /// Hashtags that are getting quite a bit of attention + public static let description = L10n.tr("Localizable", "Scene.Search.Recommend.HashTag.Description") + /// %@ people are talking + public static func peopleTalking(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Search.Recommend.HashTag.PeopleTalking", String(describing: p1)) + } + /// Trending on Mastodon + public static let title = L10n.tr("Localizable", "Scene.Search.Recommend.HashTag.Title") + } + } + public enum SearchBar { + /// Cancel + public static let cancel = L10n.tr("Localizable", "Scene.Search.SearchBar.Cancel") + /// Search hashtags and users + public static let placeholder = L10n.tr("Localizable", "Scene.Search.SearchBar.Placeholder") + } + public enum Searching { + /// Clear + public static let clear = L10n.tr("Localizable", "Scene.Search.Searching.Clear") + /// Recent searches + public static let recentSearch = L10n.tr("Localizable", "Scene.Search.Searching.RecentSearch") + public enum EmptyState { + /// No results + public static let noResults = L10n.tr("Localizable", "Scene.Search.Searching.EmptyState.NoResults") + } + public enum Segment { + /// All + public static let all = L10n.tr("Localizable", "Scene.Search.Searching.Segment.All") + /// Hashtags + public static let hashtags = L10n.tr("Localizable", "Scene.Search.Searching.Segment.Hashtags") + /// People + public static let people = L10n.tr("Localizable", "Scene.Search.Searching.Segment.People") + /// Posts + public static let posts = L10n.tr("Localizable", "Scene.Search.Searching.Segment.Posts") + } + } + } + public enum ServerPicker { + /// Pick a server,\nany server. + public static let title = L10n.tr("Localizable", "Scene.ServerPicker.Title") + public enum Button { + /// See Less + public static let seeLess = L10n.tr("Localizable", "Scene.ServerPicker.Button.SeeLess") + /// See More + public static let seeMore = L10n.tr("Localizable", "Scene.ServerPicker.Button.SeeMore") + public enum Category { + /// academia + public static let academia = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Academia") + /// activism + public static let activism = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Activism") + /// All + public static let all = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.All") + /// Category: All + public static let allAccessiblityDescription = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.AllAccessiblityDescription") + /// art + public static let art = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Art") + /// food + public static let food = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Food") + /// furry + public static let furry = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Furry") + /// games + public static let games = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Games") + /// general + public static let general = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.General") + /// journalism + public static let journalism = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Journalism") + /// lgbt + public static let lgbt = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Lgbt") + /// music + public static let music = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Music") + /// regional + public static let regional = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Regional") + /// tech + public static let tech = L10n.tr("Localizable", "Scene.ServerPicker.Button.Category.Tech") + } + } + public enum EmptyState { + /// Something went wrong while loading the data. Check your internet connection. + public static let badNetwork = L10n.tr("Localizable", "Scene.ServerPicker.EmptyState.BadNetwork") + /// Finding available servers... + public static let findingServers = L10n.tr("Localizable", "Scene.ServerPicker.EmptyState.FindingServers") + /// No results + public static let noResults = L10n.tr("Localizable", "Scene.ServerPicker.EmptyState.NoResults") + } + public enum Input { + /// Find a server or join your own... + public static let placeholder = L10n.tr("Localizable", "Scene.ServerPicker.Input.Placeholder") + } + public enum Label { + /// CATEGORY + public static let category = L10n.tr("Localizable", "Scene.ServerPicker.Label.Category") + /// LANGUAGE + public static let language = L10n.tr("Localizable", "Scene.ServerPicker.Label.Language") + /// USERS + public static let users = L10n.tr("Localizable", "Scene.ServerPicker.Label.Users") + } + } + public enum ServerRules { + /// privacy policy + public static let privacyPolicy = L10n.tr("Localizable", "Scene.ServerRules.PrivacyPolicy") + /// By continuing, you’re subject to the terms of service and privacy policy for %@. + public static func prompt(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.ServerRules.Prompt", String(describing: p1)) + } + /// These rules are set by the admins of %@. + public static func subtitle(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.ServerRules.Subtitle", String(describing: p1)) + } + /// terms of service + public static let termsOfService = L10n.tr("Localizable", "Scene.ServerRules.TermsOfService") + /// Some ground rules. + public static let title = L10n.tr("Localizable", "Scene.ServerRules.Title") + public enum Button { + /// I Agree + public static let confirm = L10n.tr("Localizable", "Scene.ServerRules.Button.Confirm") + } + } + public enum Settings { + /// Settings + public static let title = L10n.tr("Localizable", "Scene.Settings.Title") + public enum Footer { + /// Mastodon is open source software. You can report issues on GitHub at %@ (%@) + public static func mastodonDescription(_ p1: Any, _ p2: Any) -> String { + return L10n.tr("Localizable", "Scene.Settings.Footer.MastodonDescription", String(describing: p1), String(describing: p2)) + } + } + public enum Keyboard { + /// Close Settings Window + public static let closeSettingsWindow = L10n.tr("Localizable", "Scene.Settings.Keyboard.CloseSettingsWindow") + } + public enum Section { + public enum Appearance { + /// Automatic + public static let automatic = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Automatic") + /// Always Dark + public static let dark = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Dark") + /// Always Light + public static let light = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Light") + /// Appearance + public static let title = L10n.tr("Localizable", "Scene.Settings.Section.Appearance.Title") + } + public enum BoringZone { + /// Account Settings + public static let accountSettings = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.AccountSettings") + /// Privacy Policy + public static let privacy = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Privacy") + /// Terms of Service + public static let terms = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Terms") + /// The Boring Zone + public static let title = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Title") + } + public enum Notifications { + /// Reblogs my post + public static let boosts = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Boosts") + /// Favorites my post + public static let favorites = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Favorites") + /// Follows me + public static let follows = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Follows") + /// Mentions me + public static let mentions = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Mentions") + /// Notifications + public static let title = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Title") + public enum Trigger { + /// anyone + public static let anyone = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Anyone") + /// anyone I follow + public static let follow = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Follow") + /// a follower + public static let follower = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Follower") + /// no one + public static let noone = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Noone") + /// Notify me when + public static let title = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Trigger.Title") + } + } + public enum Preference { + /// Disable animated avatars + public static let disableAvatarAnimation = L10n.tr("Localizable", "Scene.Settings.Section.Preference.DisableAvatarAnimation") + /// Disable animated emojis + public static let disableEmojiAnimation = L10n.tr("Localizable", "Scene.Settings.Section.Preference.DisableEmojiAnimation") + /// Preferences + public static let title = L10n.tr("Localizable", "Scene.Settings.Section.Preference.Title") + /// True black dark mode + public static let trueBlackDarkMode = L10n.tr("Localizable", "Scene.Settings.Section.Preference.TrueBlackDarkMode") + /// Use default browser to open links + public static let usingDefaultBrowser = L10n.tr("Localizable", "Scene.Settings.Section.Preference.UsingDefaultBrowser") + } + public enum SpicyZone { + /// Clear Media Cache + public static let clear = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Clear") + /// Sign Out + public static let signout = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Signout") + /// The Spicy Zone + public static let title = L10n.tr("Localizable", "Scene.Settings.Section.SpicyZone.Title") + } + } + } + public enum SuggestionAccount { + /// When you follow someone, you’ll see their posts in your home feed. + public static let followExplain = L10n.tr("Localizable", "Scene.SuggestionAccount.FollowExplain") + /// Find People to Follow + public static let title = L10n.tr("Localizable", "Scene.SuggestionAccount.Title") + } + public enum Thread { + /// Post + public static let backTitle = L10n.tr("Localizable", "Scene.Thread.BackTitle") + /// Post from %@ + public static func title(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Thread.Title", String(describing: p1)) + } + } + public enum Welcome { + /// Social networking\nback in your hands. + public static let slogan = L10n.tr("Localizable", "Scene.Welcome.Slogan") + } + public enum Wizard { + /// Double tap to dismiss this wizard + public static let accessibilityHint = L10n.tr("Localizable", "Scene.Wizard.AccessibilityHint") + /// Switch between multiple accounts by holding the profile button. + public static let multipleAccountSwitchIntroDescription = L10n.tr("Localizable", "Scene.Wizard.MultipleAccountSwitchIntroDescription") + /// New in Mastodon + public static let newInMastodon = L10n.tr("Localizable", "Scene.Wizard.NewInMastodon") + } + } + + public enum A11y { + public enum Plural { + public enum Count { + /// Plural format key: "Input limit exceeds %#@character_count@" + public static func inputLimitExceeds(_ p1: Int) -> String { + return L10n.tr("Localizable", "a11y.plural.count.input_limit_exceeds", p1) + } + /// Plural format key: "Input limit remains %#@character_count@" + public static func inputLimitRemains(_ p1: Int) -> String { + return L10n.tr("Localizable", "a11y.plural.count.input_limit_remains", p1) + } + public enum Unread { + /// Plural format key: "%#@notification_count_unread_notification@" + public static func notification(_ p1: Int) -> String { + return L10n.tr("Localizable", "a11y.plural.count.unread.notification", p1) + } + } + } + } + } + + public enum Date { + public enum Day { + /// Plural format key: "%#@count_day_left@" + public static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.day.left", p1) + } + public enum Ago { + /// Plural format key: "%#@count_day_ago_abbr@" + public static func abbr(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.day.ago.abbr", p1) + } + } + } + public enum Hour { + /// Plural format key: "%#@count_hour_left@" + public static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.hour.left", p1) + } + public enum Ago { + /// Plural format key: "%#@count_hour_ago_abbr@" + public static func abbr(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.hour.ago.abbr", p1) + } + } + } + public enum Minute { + /// Plural format key: "%#@count_minute_left@" + public static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.minute.left", p1) + } + public enum Ago { + /// Plural format key: "%#@count_minute_ago_abbr@" + public static func abbr(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.minute.ago.abbr", p1) + } + } + } + public enum Month { + /// Plural format key: "%#@count_month_left@" + public static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.month.left", p1) + } + public enum Ago { + /// Plural format key: "%#@count_month_ago_abbr@" + public static func abbr(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.month.ago.abbr", p1) + } + } + } + public enum Second { + /// Plural format key: "%#@count_second_left@" + public static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.second.left", p1) + } + public enum Ago { + /// Plural format key: "%#@count_second_ago_abbr@" + public static func abbr(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.second.ago.abbr", p1) + } + } + } + public enum Year { + /// Plural format key: "%#@count_year_left@" + public static func `left`(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.year.left", p1) + } + public enum Ago { + /// Plural format key: "%#@count_year_ago_abbr@" + public static func abbr(_ p1: Int) -> String { + return L10n.tr("Localizable", "date.year.ago.abbr", p1) + } + } + } + } + + public enum Plural { + /// Plural format key: "%#@count_people_talking@" + public static func peopleTalking(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.people_talking", p1) + } + public enum Count { + /// Plural format key: "%#@favorite_count@" + public static func favorite(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.favorite", p1) + } + /// Plural format key: "%#@count_follower@" + public static func follower(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.follower", p1) + } + /// Plural format key: "%#@count_following@" + public static func following(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.following", p1) + } + /// Plural format key: "%#@post_count@" + public static func post(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.post", p1) + } + /// Plural format key: "%#@reblog_count@" + public static func reblog(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.reblog", p1) + } + /// Plural format key: "%#@vote_count@" + public static func vote(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.vote", p1) + } + /// Plural format key: "%#@voter_count@" + public static func voter(_ p1: Int) -> String { + return L10n.tr("Localizable", "plural.count.voter", p1) + } + public enum MetricFormatted { + /// Plural format key: "%@ %#@post_count@" + public static func post(_ p1: Any, _ p2: Int) -> String { + return L10n.tr("Localizable", "plural.count.metric_formatted.post", String(describing: p1), p2) + } + } + } + } +} +// swiftlint:enable explicit_type_interface function_parameter_count identifier_name line_length +// swiftlint:enable nesting type_body_length type_name vertical_whitespace_opening_braces + +// MARK: - Implementation Details + +extension L10n { + private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String { + let format = Bundle.module.localizedString(forKey: key, value: nil, table: table) + return String(format: format, locale: Locale.current, arguments: args) + } +} diff --git a/Mastodon/Resources/ar.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/ar.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings diff --git a/Mastodon/Resources/ar.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/ar.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/ca.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/ca.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings diff --git a/Mastodon/Resources/ca.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/ca.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/de.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/de.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings diff --git a/Mastodon/Resources/de.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/de.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/en.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/en.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings diff --git a/Mastodon/Resources/en.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/en.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/es-419.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/es-419.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings diff --git a/Mastodon/Resources/es-419.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/es-419.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/es.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/es.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings diff --git a/Mastodon/Resources/es.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/es.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/fr.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/fr.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings diff --git a/Mastodon/Resources/fr.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/fr.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/gd-GB.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/gd-GB.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings diff --git a/Mastodon/Resources/gd-GB.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/gd-GB.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/ja.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/ja.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings diff --git a/Mastodon/Resources/ja.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/ja.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/ku-TR.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ku-TR.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/ku-TR.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/ku-TR.lproj/Localizable.strings diff --git a/Mastodon/Resources/ku-TR.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/ku-TR.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/ku-TR.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/ku-TR.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/nl.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/nl.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings diff --git a/Mastodon/Resources/nl.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/nl.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/ru.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/ru.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings diff --git a/Mastodon/Resources/ru.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/ru.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.stringsdict diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings new file mode 100644 index 000000000..bf57c0401 --- /dev/null +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings @@ -0,0 +1,349 @@ +"Common.Alerts.BlockDomain.BlockEntireDomain" = "Block Domain"; +"Common.Alerts.BlockDomain.Title" = "Are you really, really sure you want to block the entire %@? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed."; +"Common.Alerts.CleanCache.Message" = "Successfully cleaned %@ cache."; +"Common.Alerts.CleanCache.Title" = "Clean Cache"; +"Common.Alerts.Common.PleaseTryAgain" = "Var god försök igen."; +"Common.Alerts.Common.PleaseTryAgainLater" = "Var god försök igen senare."; +"Common.Alerts.DeletePost.Delete" = "Radera"; +"Common.Alerts.DeletePost.Title" = "Are you sure you want to delete this post?"; +"Common.Alerts.DiscardPostContent.Message" = "Confirm to discard composed post content."; +"Common.Alerts.DiscardPostContent.Title" = "Discard Draft"; +"Common.Alerts.EditProfileFailure.Message" = "Cannot edit profile. Please try again."; +"Common.Alerts.EditProfileFailure.Title" = "Edit Profile Error"; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Cannot attach more than one video."; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Cannot attach a video to a post that already contains images."; +"Common.Alerts.PublishPostFailure.Message" = "Failed to publish the post. +Please check your internet connection."; +"Common.Alerts.PublishPostFailure.Title" = "Publish Failure"; +"Common.Alerts.SavePhotoFailure.Message" = "Please enable the photo library access permission to save the photo."; +"Common.Alerts.SavePhotoFailure.Title" = "Save Photo Failure"; +"Common.Alerts.ServerError.Title" = "Serverfel"; +"Common.Alerts.SignOut.Confirm" = "Sign Out"; +"Common.Alerts.SignOut.Message" = "Är du säker på att du vill logga ut?"; +"Common.Alerts.SignOut.Title" = "Sign Out"; +"Common.Alerts.SignUpFailure.Title" = "Sign Up Failure"; +"Common.Alerts.VoteFailure.PollEnded" = "Omröstningen har avslutats"; +"Common.Alerts.VoteFailure.Title" = "Vote Failure"; +"Common.Controls.Actions.Add" = "Add"; +"Common.Controls.Actions.Back" = "Back"; +"Common.Controls.Actions.BlockDomain" = "Block %@"; +"Common.Controls.Actions.Cancel" = "Avbryt"; +"Common.Controls.Actions.Compose" = "Compose"; +"Common.Controls.Actions.Confirm" = "Confirm"; +"Common.Controls.Actions.Continue" = "Fortsätt"; +"Common.Controls.Actions.CopyPhoto" = "Copy Photo"; +"Common.Controls.Actions.Delete" = "Radera"; +"Common.Controls.Actions.Discard" = "Discard"; +"Common.Controls.Actions.Done" = "Done"; +"Common.Controls.Actions.Edit" = "Redigera"; +"Common.Controls.Actions.FindPeople" = "Find people to follow"; +"Common.Controls.Actions.ManuallySearch" = "Manually search instead"; +"Common.Controls.Actions.Next" = "Next"; +"Common.Controls.Actions.Ok" = "OK"; +"Common.Controls.Actions.Open" = "Open"; +"Common.Controls.Actions.OpenInSafari" = "Öppna i Safari"; +"Common.Controls.Actions.Preview" = "Preview"; +"Common.Controls.Actions.Previous" = "Previous"; +"Common.Controls.Actions.Remove" = "Remove"; +"Common.Controls.Actions.Reply" = "Reply"; +"Common.Controls.Actions.ReportUser" = "Rapportera %@"; +"Common.Controls.Actions.Save" = "Spara"; +"Common.Controls.Actions.SavePhoto" = "Save Photo"; +"Common.Controls.Actions.SeeMore" = "See More"; +"Common.Controls.Actions.Settings" = "Inställningar"; +"Common.Controls.Actions.Share" = "Dela"; +"Common.Controls.Actions.SharePost" = "Share Post"; +"Common.Controls.Actions.ShareUser" = "Dela %@"; +"Common.Controls.Actions.SignIn" = "Sign In"; +"Common.Controls.Actions.SignUp" = "Sign Up"; +"Common.Controls.Actions.Skip" = "Skip"; +"Common.Controls.Actions.TakePhoto" = "Take Photo"; +"Common.Controls.Actions.TryAgain" = "Försök igen"; +"Common.Controls.Actions.UnblockDomain" = "Unblock %@"; +"Common.Controls.Friendship.Block" = "Block"; +"Common.Controls.Friendship.BlockDomain" = "Block %@"; +"Common.Controls.Friendship.BlockUser" = "Block %@"; +"Common.Controls.Friendship.Blocked" = "Blocked"; +"Common.Controls.Friendship.EditInfo" = "Edit Info"; +"Common.Controls.Friendship.Follow" = "Följ"; +"Common.Controls.Friendship.Following" = "Följer"; +"Common.Controls.Friendship.Mute" = "Mute"; +"Common.Controls.Friendship.MuteUser" = "Mute %@"; +"Common.Controls.Friendship.Muted" = "Muted"; +"Common.Controls.Friendship.Pending" = "Pending"; +"Common.Controls.Friendship.Request" = "Request"; +"Common.Controls.Friendship.Unblock" = "Unblock"; +"Common.Controls.Friendship.UnblockUser" = "Unblock %@"; +"Common.Controls.Friendship.Unmute" = "Unmute"; +"Common.Controls.Friendship.UnmuteUser" = "Unmute %@"; +"Common.Controls.Keyboard.Common.ComposeNewPost" = "Compose New Post"; +"Common.Controls.Keyboard.Common.OpenSettings" = "Open Settings"; +"Common.Controls.Keyboard.Common.ShowFavorites" = "Show Favorites"; +"Common.Controls.Keyboard.Common.SwitchToTab" = "Switch to %@"; +"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Next Section"; +"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Previous Section"; +"Common.Controls.Keyboard.Timeline.NextStatus" = "Next Post"; +"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Open Author's Profile"; +"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Open Reblogger's Profile"; +"Common.Controls.Keyboard.Timeline.OpenStatus" = "Open Post"; +"Common.Controls.Keyboard.Timeline.PreviewImage" = "Preview Image"; +"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Previous Post"; +"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Reply to Post"; +"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Toggle Content Warning"; +"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Toggle Favorite on Post"; +"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Toggle Reblog on Post"; +"Common.Controls.Status.Actions.Favorite" = "Favorite"; +"Common.Controls.Status.Actions.Menu" = "Meny"; +"Common.Controls.Status.Actions.Reblog" = "Reblog"; +"Common.Controls.Status.Actions.Reply" = "Reply"; +"Common.Controls.Status.Actions.Unfavorite" = "Unfavorite"; +"Common.Controls.Status.Actions.Unreblog" = "Undo reblog"; +"Common.Controls.Status.ContentWarning" = "Content Warning"; +"Common.Controls.Status.MediaContentWarning" = "Tap anywhere to reveal"; +"Common.Controls.Status.Poll.Closed" = "Closed"; +"Common.Controls.Status.Poll.Vote" = "Vote"; +"Common.Controls.Status.ShowPost" = "Show Post"; +"Common.Controls.Status.ShowUserProfile" = "Show user profile"; +"Common.Controls.Status.Tag.Email" = "Email"; +"Common.Controls.Status.Tag.Emoji" = "Emoji"; +"Common.Controls.Status.Tag.Hashtag" = "Hashtag"; +"Common.Controls.Status.Tag.Link" = "Link"; +"Common.Controls.Status.Tag.Mention" = "Mention"; +"Common.Controls.Status.Tag.Url" = "URL"; +"Common.Controls.Status.UserReblogged" = "%@ reblogged"; +"Common.Controls.Status.UserRepliedTo" = "Replied to %@"; +"Common.Controls.Tabs.Home" = "Home"; +"Common.Controls.Tabs.Notification" = "Notification"; +"Common.Controls.Tabs.Profile" = "Profil"; +"Common.Controls.Tabs.Search" = "Search"; +"Common.Controls.Timeline.Filtered" = "Filtered"; +"Common.Controls.Timeline.Header.BlockedWarning" = "You can’t view this user’s profile +until they unblock you."; +"Common.Controls.Timeline.Header.BlockingWarning" = "You can’t view this user's profile +until you unblock them. +Your profile looks like this to them."; +"Common.Controls.Timeline.Header.NoStatusFound" = "No Post Found"; +"Common.Controls.Timeline.Header.SuspendedWarning" = "This user has been suspended."; +"Common.Controls.Timeline.Header.UserBlockedWarning" = "You can’t view %@’s profile +until they unblock you."; +"Common.Controls.Timeline.Header.UserBlockingWarning" = "You can’t view %@’s profile +until you unblock them. +Your profile looks like this to them."; +"Common.Controls.Timeline.Header.UserSuspendedWarning" = "%@’s account has been suspended."; +"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Load missing posts"; +"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Loading missing posts..."; +"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Visa fler svar"; +"Common.Controls.Timeline.Timestamp.Now" = "Now"; +"Scene.AccountList.AddAccount" = "Lägg till konto"; +"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher"; +"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher"; +"Scene.Compose.Accessibility.AppendAttachment" = "Add Attachment"; +"Scene.Compose.Accessibility.AppendPoll" = "Add Poll"; +"Scene.Compose.Accessibility.CustomEmojiPicker" = "Custom Emoji Picker"; +"Scene.Compose.Accessibility.DisableContentWarning" = "Disable Content Warning"; +"Scene.Compose.Accessibility.EnableContentWarning" = "Enable Content Warning"; +"Scene.Compose.Accessibility.PostVisibilityMenu" = "Post Visibility Menu"; +"Scene.Compose.Accessibility.RemovePoll" = "Remove Poll"; +"Scene.Compose.Attachment.AttachmentBroken" = "This %@ is broken and can’t be +uploaded to Mastodon."; +"Scene.Compose.Attachment.DescriptionPhoto" = "Describe the photo for the visually-impaired..."; +"Scene.Compose.Attachment.DescriptionVideo" = "Describe the video for the visually-impaired..."; +"Scene.Compose.Attachment.Photo" = "photo"; +"Scene.Compose.Attachment.Video" = "video"; +"Scene.Compose.AutoComplete.SpaceToAdd" = "Space to add"; +"Scene.Compose.ComposeAction" = "Publicera"; +"Scene.Compose.ContentInputPlaceholder" = "Type or paste what’s on your mind"; +"Scene.Compose.ContentWarning.Placeholder" = "Write an accurate warning here..."; +"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Add Attachment - %@"; +"Scene.Compose.Keyboard.DiscardPost" = "Discard Post"; +"Scene.Compose.Keyboard.PublishPost" = "Publish Post"; +"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Select Visibility - %@"; +"Scene.Compose.Keyboard.ToggleContentWarning" = "Toggle Content Warning"; +"Scene.Compose.Keyboard.TogglePoll" = "Toggle Poll"; +"Scene.Compose.MediaSelection.Browse" = "Bläddra"; +"Scene.Compose.MediaSelection.Camera" = "Take Photo"; +"Scene.Compose.MediaSelection.PhotoLibrary" = "Photo Library"; +"Scene.Compose.Poll.DurationTime" = "Varaktighet: %@"; +"Scene.Compose.Poll.OneDay" = "1 Day"; +"Scene.Compose.Poll.OneHour" = "1 Hour"; +"Scene.Compose.Poll.OptionNumber" = "Option %ld"; +"Scene.Compose.Poll.SevenDays" = "7 Days"; +"Scene.Compose.Poll.SixHours" = "6 Hours"; +"Scene.Compose.Poll.ThirtyMinutes" = "30 minuter"; +"Scene.Compose.Poll.ThreeDays" = "3 Days"; +"Scene.Compose.ReplyingToUser" = "replying to %@"; +"Scene.Compose.Title.NewPost" = "New Post"; +"Scene.Compose.Title.NewReply" = "New Reply"; +"Scene.Compose.Visibility.Direct" = "Only people I mention"; +"Scene.Compose.Visibility.Private" = "Followers only"; +"Scene.Compose.Visibility.Public" = "Public"; +"Scene.Compose.Visibility.Unlisted" = "Unlisted"; +"Scene.ConfirmEmail.Button.DontReceiveEmail" = "I never got an email"; +"Scene.ConfirmEmail.Button.OpenEmailApp" = "Open Email App"; +"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Check if your email address is correct as well as your junk folder if you haven’t."; +"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Resend Email"; +"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Check your email"; +"Scene.ConfirmEmail.OpenEmailApp.Description" = "We just sent you an email. Check your junk folder if you haven’t."; +"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Mail"; +"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Open Email Client"; +"Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox."; +"Scene.ConfirmEmail.Subtitle" = "We just sent an email to %@, +tap the link to confirm your account."; +"Scene.ConfirmEmail.Title" = "One last thing."; +"Scene.Favorite.Title" = "Your Favorites"; +"Scene.Follower.Footer" = "Followers from other servers are not displayed."; +"Scene.Following.Footer" = "Follows from other servers are not displayed."; +"Scene.HomeTimeline.NavigationBarState.NewPosts" = "See new posts"; +"Scene.HomeTimeline.NavigationBarState.Offline" = "Offline"; +"Scene.HomeTimeline.NavigationBarState.Published" = "Published!"; +"Scene.HomeTimeline.NavigationBarState.Publishing" = "Publishing post..."; +"Scene.HomeTimeline.Title" = "Home"; +"Scene.Notification.Keyobard.ShowEverything" = "Show Everything"; +"Scene.Notification.Keyobard.ShowMentions" = "Show Mentions"; +"Scene.Notification.Title.Everything" = "Everything"; +"Scene.Notification.Title.Mentions" = "Mentions"; +"Scene.Notification.UserFavorited Your Post" = "%@ favorited your post"; +"Scene.Notification.UserFollowedYou" = "%@ följde dig"; +"Scene.Notification.UserMentionedYou" = "%@ nämnde dig"; +"Scene.Notification.UserRebloggedYourPost" = "%@ reblogged your post"; +"Scene.Notification.UserRequestedToFollowYou" = "%@ har begärt att följa dig"; +"Scene.Notification.UserYourPollHasEnded" = "%@ Omröstningen har avslutats"; +"Scene.Preview.Keyboard.ClosePreview" = "Close Preview"; +"Scene.Preview.Keyboard.ShowNext" = "Show Next"; +"Scene.Preview.Keyboard.ShowPrevious" = "Show Previous"; +"Scene.Profile.Dashboard.Followers" = "followers"; +"Scene.Profile.Dashboard.Following" = "following"; +"Scene.Profile.Dashboard.Posts" = "posts"; +"Scene.Profile.Fields.AddRow" = "Add Row"; +"Scene.Profile.Fields.Placeholder.Content" = "Content"; +"Scene.Profile.Fields.Placeholder.Label" = "Label"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Confirm to unblock %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Unblock Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirm to unmute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Unmute Account"; +"Scene.Profile.SegmentedControl.Media" = "Media"; +"Scene.Profile.SegmentedControl.Posts" = "Posts"; +"Scene.Profile.SegmentedControl.Replies" = "Replies"; +"Scene.Register.Error.Item.Agreement" = "Agreement"; +"Scene.Register.Error.Item.Email" = "Email"; +"Scene.Register.Error.Item.Locale" = "Locale"; +"Scene.Register.Error.Item.Password" = "Password"; +"Scene.Register.Error.Item.Reason" = "Reason"; +"Scene.Register.Error.Item.Username" = "Användarnamn"; +"Scene.Register.Error.Reason.Accepted" = "%@ must be accepted"; +"Scene.Register.Error.Reason.Blank" = "%@ is required"; +"Scene.Register.Error.Reason.Blocked" = "%@ contains a disallowed email provider"; +"Scene.Register.Error.Reason.Inclusion" = "%@ is not a supported value"; +"Scene.Register.Error.Reason.Invalid" = "%@ is invalid"; +"Scene.Register.Error.Reason.Reserved" = "%@ is a reserved keyword"; +"Scene.Register.Error.Reason.Taken" = "%@ is already in use"; +"Scene.Register.Error.Reason.TooLong" = "%@ is too long"; +"Scene.Register.Error.Reason.TooShort" = "%@ is too short"; +"Scene.Register.Error.Reason.Unreachable" = "%@ does not seem to exist"; +"Scene.Register.Error.Special.EmailInvalid" = "This is not a valid email address"; +"Scene.Register.Error.Special.PasswordTooShort" = "Password is too short (must be at least 8 characters)"; +"Scene.Register.Error.Special.UsernameInvalid" = "Username must only contain alphanumeric characters and underscores"; +"Scene.Register.Error.Special.UsernameTooLong" = "Username is too long (can’t be longer than 30 characters)"; +"Scene.Register.Input.Avatar.Delete" = "Radera"; +"Scene.Register.Input.DisplayName.Placeholder" = "display name"; +"Scene.Register.Input.Email.Placeholder" = "email"; +"Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Why do you want to join?"; +"Scene.Register.Input.Password.Hint" = "Your password needs at least eight characters"; +"Scene.Register.Input.Password.Placeholder" = "password"; +"Scene.Register.Input.Username.DuplicatePrompt" = "This username is taken."; +"Scene.Register.Input.Username.Placeholder" = "username"; +"Scene.Register.Title" = "Tell us about you."; +"Scene.Report.Content1" = "Are there any other posts you’d like to add to the report?"; +"Scene.Report.Content2" = "Is there anything the moderators should know about this report?"; +"Scene.Report.Send" = "Send Report"; +"Scene.Report.SkipToSend" = "Send without comment"; +"Scene.Report.Step1" = "Steg 1 av 2"; +"Scene.Report.Step2" = "Steg 2 av 2"; +"Scene.Report.TextPlaceholder" = "Type or paste additional comments"; +"Scene.Report.Title" = "Rapportera %@"; +"Scene.Search.Recommend.Accounts.Description" = "You may like to follow these accounts"; +"Scene.Search.Recommend.Accounts.Follow" = "Följ"; +"Scene.Search.Recommend.Accounts.Title" = "Accounts you might like"; +"Scene.Search.Recommend.ButtonText" = "See All"; +"Scene.Search.Recommend.HashTag.Description" = "Hashtags that are getting quite a bit of attention"; +"Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ people are talking"; +"Scene.Search.Recommend.HashTag.Title" = "Trending on Mastodon"; +"Scene.Search.SearchBar.Cancel" = "Avbryt"; +"Scene.Search.SearchBar.Placeholder" = "Search hashtags and users"; +"Scene.Search.Searching.Clear" = "Clear"; +"Scene.Search.Searching.EmptyState.NoResults" = "Inga resultat"; +"Scene.Search.Searching.RecentSearch" = "Recent searches"; +"Scene.Search.Searching.Segment.All" = "All"; +"Scene.Search.Searching.Segment.Hashtags" = "Hashtags"; +"Scene.Search.Searching.Segment.People" = "People"; +"Scene.Search.Searching.Segment.Posts" = "Posts"; +"Scene.Search.Title" = "Search"; +"Scene.ServerPicker.Button.Category.Academia" = "academia"; +"Scene.ServerPicker.Button.Category.Activism" = "activism"; +"Scene.ServerPicker.Button.Category.All" = "All"; +"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "Kategori: Alla"; +"Scene.ServerPicker.Button.Category.Art" = "art"; +"Scene.ServerPicker.Button.Category.Food" = "food"; +"Scene.ServerPicker.Button.Category.Furry" = "furry"; +"Scene.ServerPicker.Button.Category.Games" = "games"; +"Scene.ServerPicker.Button.Category.General" = "general"; +"Scene.ServerPicker.Button.Category.Journalism" = "journalism"; +"Scene.ServerPicker.Button.Category.Lgbt" = "lgbt"; +"Scene.ServerPicker.Button.Category.Music" = "music"; +"Scene.ServerPicker.Button.Category.Regional" = "regional"; +"Scene.ServerPicker.Button.Category.Tech" = "tech"; +"Scene.ServerPicker.Button.SeeLess" = "See Less"; +"Scene.ServerPicker.Button.SeeMore" = "See More"; +"Scene.ServerPicker.EmptyState.BadNetwork" = "Something went wrong while loading the data. Check your internet connection."; +"Scene.ServerPicker.EmptyState.FindingServers" = "Finding available servers..."; +"Scene.ServerPicker.EmptyState.NoResults" = "Inga resultat"; +"Scene.ServerPicker.Input.Placeholder" = "Find a server or join your own..."; +"Scene.ServerPicker.Label.Category" = "KATEGORI"; +"Scene.ServerPicker.Label.Language" = "SPRÅK"; +"Scene.ServerPicker.Label.Users" = "ANVÄNDARE"; +"Scene.ServerPicker.Title" = "Pick a server, +any server."; +"Scene.ServerRules.Button.Confirm" = "I Agree"; +"Scene.ServerRules.PrivacyPolicy" = "integritetspolicy"; +"Scene.ServerRules.Prompt" = "By continuing, you’re subject to the terms of service and privacy policy for %@."; +"Scene.ServerRules.Subtitle" = "These rules are set by the admins of %@."; +"Scene.ServerRules.TermsOfService" = "terms of service"; +"Scene.ServerRules.Title" = "Some ground rules."; +"Scene.Settings.Footer.MastodonDescription" = "Mastodon is open source software. You can report issues on GitHub at %@ (%@)"; +"Scene.Settings.Keyboard.CloseSettingsWindow" = "Close Settings Window"; +"Scene.Settings.Section.Appearance.Automatic" = "Automatic"; +"Scene.Settings.Section.Appearance.Dark" = "Always Dark"; +"Scene.Settings.Section.Appearance.Light" = "Always Light"; +"Scene.Settings.Section.Appearance.Title" = "Appearance"; +"Scene.Settings.Section.BoringZone.AccountSettings" = "Account Settings"; +"Scene.Settings.Section.BoringZone.Privacy" = "Integritetspolicy"; +"Scene.Settings.Section.BoringZone.Terms" = "Terms of Service"; +"Scene.Settings.Section.BoringZone.Title" = "The Boring Zone"; +"Scene.Settings.Section.Notifications.Boosts" = "Reblogs my post"; +"Scene.Settings.Section.Notifications.Favorites" = "Favorites my post"; +"Scene.Settings.Section.Notifications.Follows" = "Follows me"; +"Scene.Settings.Section.Notifications.Mentions" = "Mentions me"; +"Scene.Settings.Section.Notifications.Title" = "Notifications"; +"Scene.Settings.Section.Notifications.Trigger.Anyone" = "anyone"; +"Scene.Settings.Section.Notifications.Trigger.Follow" = "anyone I follow"; +"Scene.Settings.Section.Notifications.Trigger.Follower" = "a follower"; +"Scene.Settings.Section.Notifications.Trigger.Noone" = "no one"; +"Scene.Settings.Section.Notifications.Trigger.Title" = "Notify me when"; +"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Disable animated avatars"; +"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Disable animated emojis"; +"Scene.Settings.Section.Preference.Title" = "Preferences"; +"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "True black dark mode"; +"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Use default browser to open links"; +"Scene.Settings.Section.SpicyZone.Clear" = "Clear Media Cache"; +"Scene.Settings.Section.SpicyZone.Signout" = "Logga ut"; +"Scene.Settings.Section.SpicyZone.Title" = "The Spicy Zone"; +"Scene.Settings.Title" = "Inställningar"; +"Scene.SuggestionAccount.FollowExplain" = "When you follow someone, you’ll see their posts in your home feed."; +"Scene.SuggestionAccount.Title" = "Find People to Follow"; +"Scene.Thread.BackTitle" = "Post"; +"Scene.Thread.Title" = "Post from %@"; +"Scene.Welcome.Slogan" = "Social networking +back in your hands."; +"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard"; +"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button."; +"Scene.Wizard.NewInMastodon" = "New in Mastodon"; \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.stringsdict new file mode 100644 index 000000000..65316e3d0 --- /dev/null +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.stringsdict @@ -0,0 +1,390 @@ + + + + + a11y.plural.count.unread.notification + + NSStringLocalizedFormatKey + %#@notification_count_unread_notification@ + notification_count_unread_notification + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 unread notification + other + %ld unread notification + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld characters + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + post + other + posts + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 favorite + other + %ld favorites + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 reblog + other + %ld reblogs + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 vote + other + %ld votes + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 voter + other + %ld voters + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 people talking + other + %ld people talking + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 följare + other + %ld följare + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 year left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 day left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hour left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minute left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 second left + other + %ld seconds left + + + date.year.ago.abbr + + NSStringLocalizedFormatKey + %#@count_year_ago_abbr@ + count_year_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1y ago + other + %ldy ago + + + date.month.ago.abbr + + NSStringLocalizedFormatKey + %#@count_month_ago_abbr@ + count_month_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1M ago + other + %ldM ago + + + date.day.ago.abbr + + NSStringLocalizedFormatKey + %#@count_day_ago_abbr@ + count_day_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1d ago + other + %ldd ago + + + date.hour.ago.abbr + + NSStringLocalizedFormatKey + %#@count_hour_ago_abbr@ + count_hour_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1h ago + other + %ldh ago + + + date.minute.ago.abbr + + NSStringLocalizedFormatKey + %#@count_minute_ago_abbr@ + count_minute_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1m ago + other + %ldm ago + + + date.second.ago.abbr + + NSStringLocalizedFormatKey + %#@count_second_ago_abbr@ + count_second_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1s ago + other + %lds ago + + + + diff --git a/Mastodon/Resources/th.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/th.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings diff --git a/Mastodon/Resources/th.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/th.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.stringsdict diff --git a/Mastodon/Resources/zh-Hans.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings similarity index 100% rename from Mastodon/Resources/zh-Hans.lproj/Localizable.strings rename to MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings diff --git a/Mastodon/Resources/zh-Hans.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.stringsdict similarity index 100% rename from Mastodon/Resources/zh-Hans.lproj/Localizable.stringsdict rename to MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.stringsdict diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Tag.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Tag.swift index 740001572..b017d1551 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Tag.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Tag.swift @@ -16,7 +16,8 @@ extension Mastodon.Entity { /// 2021/1/28 /// # Reference /// [Document](https://docs.joinmastodon.org/entities/tag/) - public struct Tag: Codable { + public struct Tag: Hashable, Codable { + // Base public let name: String public let url: String @@ -28,5 +29,14 @@ extension Mastodon.Entity { case url case history } + + public static func == (lhs: Mastodon.Entity.Tag, rhs: Mastodon.Entity.Tag) -> Bool { + return lhs.name == rhs.name + && lhs.url == rhs.url + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(name) + } } } diff --git a/MastodonSDK/Sources/MastodonUI/Extension/Date.swift b/MastodonSDK/Sources/MastodonUI/Extension/Date.swift new file mode 100644 index 000000000..de377ee24 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/Extension/Date.swift @@ -0,0 +1,61 @@ +// +// Date.swift +// Mastodon +// +// Created by MainasuK Cirno on 2021-6-1. +// + +import Foundation +import MastodonAsset +import MastodonLocalization + +extension Date { + + public func localizedShortTimeAgo(since date: Date) -> String { + let earlierDate = date < self ? date : self + let latestDate = earlierDate == date ? self : date + + let components = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: earlierDate, to: latestDate) + + if components.year! > 0 { + return L10n.Date.Year.Ago.abbr(components.year!) + } else if components.month! > 0 { + return L10n.Date.Month.Ago.abbr(components.month!) + } else if components.day! > 0 { + return L10n.Date.Day.Ago.abbr(components.day!) + } else if components.hour! > 0 { + return L10n.Date.Hour.Ago.abbr(components.hour!) + } else if components.minute! > 0 { + return L10n.Date.Minute.Ago.abbr(components.minute!) + } else if components.second! > 0 { + return L10n.Date.Year.Ago.abbr(components.second!) + } else { + return "" + } + } + + public func localizedTimeLeft() -> String { + let date = Date() + let earlierDate = date < self ? date : self + let latestDate = earlierDate == date ? self : date + + let components = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: earlierDate, to: latestDate) + + if components.year! > 0 { + return L10n.Date.Year.left(components.year!) + } else if components.month! > 0 { + return L10n.Date.Month.left(components.month!) + } else if components.day! > 0 { + return L10n.Date.Day.left(components.day!) + } else if components.hour! > 0 { + return L10n.Date.Hour.left(components.hour!) + } else if components.minute! > 0 { + return L10n.Date.Minute.left(components.minute!) + } else if components.second! > 0 { + return L10n.Date.Year.left(components.second!) + } else { + return "" + } + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/Extension/FLAnimatedImageView.swift b/MastodonSDK/Sources/MastodonUI/Extension/FLAnimatedImageView.swift new file mode 100644 index 000000000..3fc92a4b5 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/Extension/FLAnimatedImageView.swift @@ -0,0 +1,90 @@ +// +// FLAnimatedImageView.swift +// FLAnimatedImageView +// +// Created by Cirno MainasuK on 2021-8-20. +// Copyright © 2021 Twidere. All rights reserved. +// + +import Foundation +import Combine +import Alamofire +import AlamofireImage +import FLAnimatedImage + +private enum FLAnimatedImageViewAssociatedKeys { + static var activeAvatarRequestURL = "FLAnimatedImageViewAssociatedKeys.activeAvatarRequestURL" + static var avatarRequestCancellable = "FLAnimatedImageViewAssociatedKeys.avatarRequestCancellable" +} + +extension FLAnimatedImageView { + + public var activeAvatarRequestURL: URL? { + get { + objc_getAssociatedObject(self, &FLAnimatedImageViewAssociatedKeys.activeAvatarRequestURL) as? URL + } + set { + objc_setAssociatedObject(self, &FLAnimatedImageViewAssociatedKeys.activeAvatarRequestURL, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } + + public var avatarRequestCancellable: AnyCancellable? { + get { + objc_getAssociatedObject(self, &FLAnimatedImageViewAssociatedKeys.avatarRequestCancellable) as? AnyCancellable + } + set { + objc_setAssociatedObject(self, &FLAnimatedImageViewAssociatedKeys.avatarRequestCancellable, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } + + public func setImage( + url: URL?, + placeholder: UIImage?, + scaleToSize: CGSize? + ) { + // cancel task + cancelTask() + + // set placeholder + image = placeholder + + // set image + guard let url = url else { return } + activeAvatarRequestURL = url + let avatarRequest = AF.request(url).publishData() + avatarRequestCancellable = avatarRequest + .sink { response in + switch response.result { + case .success(let data): + DispatchQueue.global().async { + let image: UIImage? = { + if let scaleToSize = scaleToSize { + return UIImage(data: data)?.af.imageScaled(to: scaleToSize, scale: UIScreen.main.scale) + } else { + return UIImage(data: data) + } + }() + let animatedImage = FLAnimatedImage(animatedGIFData: data) + + DispatchQueue.main.async { [weak self] in + guard let self = self else { return } + if self.activeAvatarRequestURL == url { + if let animatedImage = animatedImage { + self.animatedImage = animatedImage + } else { + self.image = image + } + } + } + } + case .failure: + break + } + } + } + + public func cancelTask() { + activeAvatarRequestURL = nil + avatarRequestCancellable?.cancel() + } +} diff --git a/Mastodon/Extension/MetaLabel.swift b/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift similarity index 73% rename from Mastodon/Extension/MetaLabel.swift rename to MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift index cf7d27cc0..dbee8e9b3 100644 --- a/Mastodon/Extension/MetaLabel.swift +++ b/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift @@ -8,11 +8,13 @@ import UIKit import Meta import MetaTextKit +import MastodonAsset extension MetaLabel { - enum Style { + public enum Style { case statusHeader case statusName + case statusUsername case notificationTitle case profileFieldName case profileFieldValue @@ -26,7 +28,7 @@ extension MetaLabel { case sidebarSubheadline(isSelected: Bool) } - convenience init(style: Style) { + public convenience init(style: Style) { self.init() layer.masksToBounds = true @@ -37,31 +39,34 @@ extension MetaLabel { setup(style: style) } - func setup(style: Style) { + public func setup(style: Style) { let font: UIFont let textColor: UIColor switch style { case .statusHeader: - font = UIFontMetrics(forTextStyle: .footnote).scaledFont(for: .systemFont(ofSize: 13, weight: .medium), maximumPointSize: 17) + font = UIFontMetrics(forTextStyle: .footnote).scaledFont(for: .systemFont(ofSize: 13, weight: .bold)) textColor = Asset.Colors.Label.secondary.color case .statusName: - font = .systemFont(ofSize: 17, weight: .semibold) + font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .bold)) textColor = Asset.Colors.Label.primary.color + case .statusUsername: + font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular)) + textColor = Asset.Colors.Label.secondary.color + case .notificationTitle: - font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular), maximumPointSize: 20) + font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 14, weight: .regular)) textColor = Asset.Colors.Label.secondary.color case .profileFieldName: - font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold), maximumPointSize: 20) - textColor = Asset.Colors.Label.primary.color + font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 13, weight: .semibold)) + textColor = Asset.Colors.Label.secondary.color case .profileFieldValue: - font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular), maximumPointSize: 20) + font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) textColor = Asset.Colors.Label.primary.color - textAlignment = .right case .titleView: font = .systemFont(ofSize: 17, weight: .semibold) @@ -110,34 +115,3 @@ extension MetaLabel { } } - -extension MetaLabel { - func configure(attributedString: NSAttributedString) { - let attributedString = NSMutableAttributedString(attributedString: attributedString) - - MetaText.setAttributes( - for: attributedString, - textAttributes: textAttributes, - linkAttributes: linkAttributes, - paragraphStyle: paragraphStyle, - content: PlaintextMetaContent(string: "") - ) - - textStorage.setAttributedString(attributedString) - self.attributedText = attributedString - setNeedsDisplay() - } -} - -struct PlaintextMetaContent: MetaContent { - let string: String - let entities: [Meta.Entity] = [] - - init(string: String) { - self.string = string - } - - func metaAttachment(for entity: Meta.Entity) -> MetaAttachment? { - return nil - } -} diff --git a/MastodonSDK/Sources/MastodonUI/Extension/UIContentSizeCategory.swift b/MastodonSDK/Sources/MastodonUI/Extension/UIContentSizeCategory.swift new file mode 100644 index 000000000..76fb3e216 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/Extension/UIContentSizeCategory.swift @@ -0,0 +1,27 @@ +// +// UIContentSizeCategory.swift +// UIContentSizeCategory +// +// Created by Cirno MainasuK on 2021-9-10. +// Copyright © 2021 Twidere. All rights reserved. +// + +import UIKit +import Combine + +extension UIContentSizeCategory { + // for Dynamic Type + public static var publisher: AnyPublisher { + return NotificationCenter.default.publisher(for: UIContentSizeCategory.didChangeNotification) + .map { notification in + let key = UIContentSizeCategory.newValueUserInfoKey + guard let category = notification.userInfo?[key] as? UIContentSizeCategory else { + assertionFailure() + return UIApplication.shared.preferredContentSizeCategory + } + return category + } + .prepend(UIApplication.shared.preferredContentSizeCategory) + .eraseToAnyPublisher() + } +} diff --git a/MastodonSDK/Sources/MastodonUI/Extension/UITapGestureRecognizer.swift b/MastodonSDK/Sources/MastodonUI/Extension/UITapGestureRecognizer.swift new file mode 100644 index 000000000..2f79fdfc8 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/Extension/UITapGestureRecognizer.swift @@ -0,0 +1,27 @@ +// +// UITapGestureRecognizer.swift +// TwidereX +// +// Created by Cirno MainasuK on 2020-11-5. +// Copyright © 2020 Twidere. All rights reserved. +// + +import UIKit + +extension UITapGestureRecognizer { + + public static var singleTapGestureRecognizer: UITapGestureRecognizer { + let tapGestureRecognizer = UITapGestureRecognizer() + tapGestureRecognizer.numberOfTapsRequired = 1 + tapGestureRecognizer.numberOfTouchesRequired = 1 + return tapGestureRecognizer + } + + public static var doubleTapGestureRecognizer: UITapGestureRecognizer { + let tapGestureRecognizer = UITapGestureRecognizer() + tapGestureRecognizer.numberOfTapsRequired = 2 + tapGestureRecognizer.numberOfTouchesRequired = 1 + return tapGestureRecognizer + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/Model/PlaintextMetaContent.swift b/MastodonSDK/Sources/MastodonUI/Model/PlaintextMetaContent.swift new file mode 100644 index 000000000..8a2ef91c2 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/Model/PlaintextMetaContent.swift @@ -0,0 +1,22 @@ +// +// PlaintextMetaContent.swift +// +// +// Created by MainasuK on 2022-1-10. +// + +import Foundation +import Meta + +public struct PlaintextMetaContent: MetaContent { + public let string: String + public let entities: [Meta.Entity] = [] + + public init(string: String) { + self.string = string + } + + public func metaAttachment(for entity: Meta.Entity) -> MetaAttachment? { + return nil + } +} diff --git a/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift b/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift new file mode 100644 index 000000000..b21a45b2d --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift @@ -0,0 +1,14 @@ +// +// PollItem.swift +// +// +// Created by MainasuK on 2022-1-12. +// + +import Foundation +import CoreData +import CoreDataStack + +public enum PollItem: Hashable { + case option(record: ManagedObjectRecord) +} diff --git a/MastodonSDK/Sources/MastodonUI/Model/Poll/PollSection.swift b/MastodonSDK/Sources/MastodonUI/Model/Poll/PollSection.swift new file mode 100644 index 000000000..10dd023f4 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/Model/Poll/PollSection.swift @@ -0,0 +1,12 @@ +// +// PollSection.swift +// +// +// Created by MainasuK on 2022-1-12. +// + +import Foundation + +public enum PollSection: Hashable { + case main +} diff --git a/MastodonSDK/Sources/MastodonUI/UserIdentifier.swift b/MastodonSDK/Sources/MastodonUI/UserIdentifier.swift new file mode 100644 index 000000000..ecde41d32 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/UserIdentifier.swift @@ -0,0 +1,14 @@ +// +// UserIdentifier.swift +// +// +// Created by MainasuK on 2022-1-12. +// + +import Foundation +import MastodonSDK + +public protocol UserIdentifier { + var domain: String { get } + var userID: Mastodon.Entity.Account.ID { get } +} diff --git a/Mastodon/Scene/Share/View/Button/AvatarButton.swift b/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift similarity index 77% rename from Mastodon/Scene/Share/View/Button/AvatarButton.swift rename to MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift index 6249ea373..3854c4700 100644 --- a/Mastodon/Scene/Share/View/Button/AvatarButton.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift @@ -8,26 +8,26 @@ import os.log import UIKit -class AvatarButton: UIControl { +open class AvatarButton: UIControl { // UIControl.Event - Application: 0x0F000000 static let primaryAction = UIControl.Event(rawValue: 1 << 25) // 0x01000000 - var primaryActionState: UIControl.State = .normal + public var primaryActionState: UIControl.State = .normal - var avatarImageSize = CGSize(width: 42, height: 42) - let avatarImageView = AvatarImageView() + public var size = CGSize(width: 46, height: 46) + public let avatarImageView = AvatarImageView() - override init(frame: CGRect) { + public override init(frame: CGRect) { super.init(frame: frame) _init() } - required init?(coder: NSCoder) { + public required init?(coder: NSCoder) { super.init(coder: coder) _init() } - func _init() { + open func _init() { avatarImageView.frame = bounds avatarImageView.translatesAutoresizingMaskIntoConstraints = false addSubview(avatarImageView) @@ -39,19 +39,19 @@ class AvatarButton: UIControl { ]) } - override func layoutSubviews() { + public override func layoutSubviews() { super.layoutSubviews() updateAppearance() } - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) updateAppearance() } - func updateAppearance() { + open func updateAppearance() { avatarImageView.alpha = primaryActionState.contains(.highlighted) ? 0.6 : 1.0 } @@ -59,25 +59,25 @@ class AvatarButton: UIControl { extension AvatarButton { - override var intrinsicContentSize: CGSize { - return avatarImageSize + public override var intrinsicContentSize: CGSize { + return size } - override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { + public override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { defer { updateAppearance() } updateState(touch: touch, event: event) return super.beginTracking(touch, with: event) } - override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { + public override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { defer { updateAppearance() } updateState(touch: touch, event: event) return super.continueTracking(touch, with: event) } - override func endTracking(_ touch: UITouch?, with event: UIEvent?) { + public override func endTracking(_ touch: UITouch?, with event: UIEvent?) { defer { updateAppearance() } resetState() @@ -92,7 +92,7 @@ extension AvatarButton { super.endTracking(touch, with: event) } - override func cancelTracking(with event: UIEvent?) { + public override func cancelTracking(with event: UIEvent?) { defer { updateAppearance() } resetState() diff --git a/Mastodon/Scene/Share/View/Button/CircleAvatarButton.swift b/MastodonSDK/Sources/MastodonUI/View/Button/CircleAvatarButton.swift similarity index 58% rename from Mastodon/Scene/Share/View/Button/CircleAvatarButton.swift rename to MastodonSDK/Sources/MastodonUI/View/Button/CircleAvatarButton.swift index 74591dda9..ff4dcf75b 100644 --- a/Mastodon/Scene/Share/View/Button/CircleAvatarButton.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Button/CircleAvatarButton.swift @@ -7,14 +7,14 @@ import UIKit -final class CircleAvatarButton: AvatarButton { +public final class CircleAvatarButton: AvatarButton { - @Published var needsHighlighted = false + @Published public var needsHighlighted = false - var borderColor: UIColor = UIColor.systemFill - var borderWidth: CGFloat = 1.0 + public var borderColor: UIColor = UIColor.systemFill + public var borderWidth: CGFloat = 1.0 - override func updateAppearance() { + public override func updateAppearance() { super.updateAppearance() layer.masksToBounds = true diff --git a/MastodonSDK/Sources/MastodonUI/View/Button/HitTestExpandedButton.swift b/MastodonSDK/Sources/MastodonUI/View/Button/HitTestExpandedButton.swift new file mode 100644 index 000000000..c07d1d8d0 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Button/HitTestExpandedButton.swift @@ -0,0 +1,18 @@ +// +// HitTestExpandedButton.swift +// Mastodon +// +// Created by sxiaojian on 2021/2/1. +// + +import UIKit + +public final class HitTestExpandedButton: UIButton { + + public var expandEdgeInsets = UIEdgeInsets(top: -10, left: -10, bottom: -10, right: -10) + + public override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { + return bounds.inset(by: expandEdgeInsets).contains(point) + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Button/RoundedEdgesButton.swift b/MastodonSDK/Sources/MastodonUI/View/Button/RoundedEdgesButton.swift index 4d62a5c2c..1fd608091 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Button/RoundedEdgesButton.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Button/RoundedEdgesButton.swift @@ -8,12 +8,18 @@ import UIKit open class RoundedEdgesButton: UIButton { + + public var cornerRadius: CGFloat = .zero { + didSet { + setNeedsDisplay() + } + } open override func layoutSubviews() { super.layoutSubviews() layer.masksToBounds = true - layer.cornerRadius = bounds.height * 0.5 + layer.cornerRadius = cornerRadius > .zero ? cornerRadius : bounds.height * 0.5 } } diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift new file mode 100644 index 000000000..c460d6693 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift @@ -0,0 +1,58 @@ +// +// MediaGridContainerView+ViewModel.swift +// +// +// Created by MainasuK on 2021-12-14. +// + +import UIKit +import Combine + +extension MediaGridContainerView { + public class ViewModel { + var disposeBag = Set() + + + @Published public var isSensitiveToggleButtonDisplay: Bool = false + @Published public var isContentWarningOverlayDisplay: Bool? = nil + } +} + +extension MediaGridContainerView.ViewModel { + + func resetContentWarningOverlay() { + isContentWarningOverlayDisplay = nil + } + + func bind(view: MediaGridContainerView) { + $isSensitiveToggleButtonDisplay + .sink { isDisplay in + view.sensitiveToggleButtonBlurVisualEffectView.isHidden = !isDisplay + } + .store(in: &disposeBag) + $isContentWarningOverlayDisplay + .sink { isDisplay in + assert(Thread.isMainThread) + guard let isDisplay = isDisplay else { return } + let withAnimation = self.isContentWarningOverlayDisplay != nil + view.configureOverlayDisplay(isDisplay: isDisplay, animated: withAnimation) + } + .store(in: &disposeBag) + } + +} + +extension MediaGridContainerView { + func configureOverlayDisplay(isDisplay: Bool, animated: Bool) { + if animated { + UIView.animate(withDuration: 0.33, delay: 0, options: .curveEaseInOut) { + self.contentWarningOverlayView.blurVisualEffectView.alpha = isDisplay ? 1 : 0 + } + } else { + contentWarningOverlayView.blurVisualEffectView.alpha = isDisplay ? 1 : 0 + } + + contentWarningOverlayView.isUserInteractionEnabled = isDisplay + contentWarningOverlayView.tapGestureRecognizer.isEnabled = isDisplay + } +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift new file mode 100644 index 000000000..fd33b72d4 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift @@ -0,0 +1,337 @@ +// +// MediaGridContainerView.swift +// MediaGridContainerView +// +// Created by Cirno MainasuK on 2021-8-23. +// Copyright © 2021 Twidere. All rights reserved. +// + +import os.log +import UIKit +import func AVFoundation.AVMakeRect + +public protocol MediaGridContainerViewDelegate: AnyObject { + func mediaGridContainerView(_ container: MediaGridContainerView, didTapMediaView mediaView: MediaView, at index: Int) + func mediaGridContainerView(_ container: MediaGridContainerView, toggleContentWarningOverlayViewDisplay contentWarningOverlayView: ContentWarningOverlayView) +} + +public final class MediaGridContainerView: UIView { + + public static let maxCount = 9 + + let logger = Logger(subsystem: "MediaGridContainerView", category: "UI") + + public weak var delegate: MediaGridContainerViewDelegate? + public private(set) lazy var viewModel: ViewModel = { + let viewModel = ViewModel() + viewModel.bind(view: self) + return viewModel + }() + + // lazy var is required here to setup gesture recognizer target-action + // Swift not doesn't emit compiler error if without `lazy` here + private(set) lazy var _mediaViews: [MediaView] = { + var mediaViews: [MediaView] = [] + for i in 0.. MediaView { + prepareForReuse() + + let mediaView = _mediaViews[0] + layout.layout(in: self, mediaView: mediaView) + + layoutSensitiveToggleButton() + bringSubviewToFront(sensitiveToggleButtonBlurVisualEffectView) + + layoutContentOverlayView(on: mediaView) + bringSubviewToFront(contentWarningOverlayView) + + return mediaView + } + + public func dequeueMediaView(gridLayout layout: GridLayout) -> [MediaView] { + prepareForReuse() + + let mediaViews = Array(_mediaViews[0.. UIStackView { + let stackView = UIStackView() + stackView.axis = axis + stackView.semanticContentAttribute = .forceLeftToRight + stackView.spacing = GridLayout.spacing + stackView.distribution = .fillEqually + return stackView + } + + public func layout(in view: UIView, mediaViews: [MediaView]) { + let containerVerticalStackView = createStackView(axis: .vertical) + containerVerticalStackView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(containerVerticalStackView) + NSLayoutConstraint.activate([ + containerVerticalStackView.topAnchor.constraint(equalTo: view.topAnchor), + containerVerticalStackView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + containerVerticalStackView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + containerVerticalStackView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + let count = mediaViews.count + switch count { + case 1: + assertionFailure("should use Adaptive Layout") + containerVerticalStackView.addArrangedSubview(mediaViews[0]) + case 2: + let horizontalStackView = createStackView(axis: .horizontal) + containerVerticalStackView.addArrangedSubview(horizontalStackView) + horizontalStackView.addArrangedSubview(mediaViews[0]) + horizontalStackView.addArrangedSubview(mediaViews[1]) + case 3: + let horizontalStackView = createStackView(axis: .horizontal) + containerVerticalStackView.addArrangedSubview(horizontalStackView) + horizontalStackView.addArrangedSubview(mediaViews[0]) + + let verticalStackView = createStackView(axis: .vertical) + horizontalStackView.addArrangedSubview(verticalStackView) + verticalStackView.addArrangedSubview(mediaViews[1]) + verticalStackView.addArrangedSubview(mediaViews[2]) + case 4: + let topHorizontalStackView = createStackView(axis: .horizontal) + containerVerticalStackView.addArrangedSubview(topHorizontalStackView) + topHorizontalStackView.addArrangedSubview(mediaViews[0]) + topHorizontalStackView.addArrangedSubview(mediaViews[1]) + + let bottomHorizontalStackView = createStackView(axis: .horizontal) + containerVerticalStackView.addArrangedSubview(bottomHorizontalStackView) + bottomHorizontalStackView.addArrangedSubview(mediaViews[2]) + bottomHorizontalStackView.addArrangedSubview(mediaViews[3]) + case 5...9: + let topHorizontalStackView = createStackView(axis: .horizontal) + containerVerticalStackView.addArrangedSubview(topHorizontalStackView) + topHorizontalStackView.addArrangedSubview(mediaViews[0]) + topHorizontalStackView.addArrangedSubview(mediaViews[1]) + topHorizontalStackView.addArrangedSubview(mediaViews[2]) + + func mediaViewOrPlaceholderView(at index: Int) -> UIView { + return index < mediaViews.count ? mediaViews[index] : UIView() + } + let middleHorizontalStackView = createStackView(axis: .horizontal) + containerVerticalStackView.addArrangedSubview(middleHorizontalStackView) + middleHorizontalStackView.addArrangedSubview(mediaViews[3]) + middleHorizontalStackView.addArrangedSubview(mediaViews[4]) + middleHorizontalStackView.addArrangedSubview(mediaViewOrPlaceholderView(at: 5)) + + if count > 6 { + let bottomHorizontalStackView = createStackView(axis: .horizontal) + containerVerticalStackView.addArrangedSubview(bottomHorizontalStackView) + bottomHorizontalStackView.addArrangedSubview(mediaViewOrPlaceholderView(at: 6)) + bottomHorizontalStackView.addArrangedSubview(mediaViewOrPlaceholderView(at: 7)) + bottomHorizontalStackView.addArrangedSubview(mediaViewOrPlaceholderView(at: 8)) + } + default: + assertionFailure() + return + } + + let containerWidth = maxSize.width + let containerHeight = count > 6 ? containerWidth : containerWidth * 2 / 3 + NSLayoutConstraint.activate([ + view.widthAnchor.constraint(equalToConstant: containerWidth).priority(.required - 1), + view.heightAnchor.constraint(equalToConstant: containerHeight).priority(.required - 1), + ]) + } + } +} + +// MARK: - ContentWarningOverlayViewDelegate +extension MediaGridContainerView: ContentWarningOverlayViewDelegate { + public func contentWarningOverlayViewDidPressed(_ contentWarningOverlayView: ContentWarningOverlayView) { + delegate?.mediaGridContainerView(self, toggleContentWarningOverlayViewDisplay: contentWarningOverlayView) + } +} diff --git a/Mastodon/Scene/Share/View/Container/TouchBlockingView.swift b/MastodonSDK/Sources/MastodonUI/View/Container/TouchBlockingView.swift similarity index 69% rename from Mastodon/Scene/Share/View/Container/TouchBlockingView.swift rename to MastodonSDK/Sources/MastodonUI/View/Container/TouchBlockingView.swift index 5a1518122..94cd99622 100644 --- a/Mastodon/Scene/Share/View/Container/TouchBlockingView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Container/TouchBlockingView.swift @@ -7,14 +7,14 @@ import UIKit -class TouchBlockingView: UIView { +public class TouchBlockingView: UIView { - override init(frame: CGRect) { + public override init(frame: CGRect) { super.init(frame: frame) _init() } - required init?(coder: NSCoder) { + public required init?(coder: NSCoder) { super.init(coder: coder) _init() } @@ -27,7 +27,7 @@ extension TouchBlockingView { isUserInteractionEnabled = true } - override func touchesBegan(_ touches: Set, with event: UIEvent?) { + public override func touchesBegan(_ touches: Set, with event: UIEvent?) { // Blocking responder chain by not call super // The subviews in this view will received touch event but superview not } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift new file mode 100644 index 000000000..b5468726d --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift @@ -0,0 +1,97 @@ +// +// MediaView+Configuration.swift +// TwidereX +// +// Created by Cirno MainasuK on 2021-10-14. +// Copyright © 2021 Twidere. All rights reserved. +// + +import UIKit +import Combine +import CoreData +import Photos + +extension MediaView { + public enum Configuration: Hashable { + case image(info: ImageInfo) + case gif(info: VideoInfo) + case video(info: VideoInfo) + + public var aspectRadio: CGSize { + switch self { + case .image(let info): return info.aspectRadio + case .gif(let info): return info.aspectRadio + case .video(let info): return info.aspectRadio + } + } + + public var assetURL: String? { + switch self { + case .image(let info): + return info.assetURL + case .gif(let info): + return info.assetURL + case .video(let info): + return info.assetURL + } + } + + public var resourceType: PHAssetResourceType { + switch self { + case .image: + return .photo + case .gif: + return .video + case .video: + return .video + } + } + + public struct ImageInfo: Hashable { + public let aspectRadio: CGSize + public let assetURL: String? + + public init( + aspectRadio: CGSize, + assetURL: String? + ) { + self.aspectRadio = aspectRadio + self.assetURL = assetURL + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(aspectRadio.width) + hasher.combine(aspectRadio.height) + assetURL.flatMap { hasher.combine($0) } + } + } + + public struct VideoInfo: Hashable { + public let aspectRadio: CGSize + public let assetURL: String? + public let previewURL: String? + public let durationMS: Int? + + public init( + aspectRadio: CGSize, + assetURL: String?, + previewURL: String?, + durationMS: Int? + ) { + self.aspectRadio = aspectRadio + self.assetURL = assetURL + self.previewURL = previewURL + self.durationMS = durationMS + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(aspectRadio.width) + hasher.combine(aspectRadio.height) + assetURL.flatMap { hasher.combine($0) } + previewURL.flatMap { hasher.combine($0) } + durationMS.flatMap { hasher.combine($0) } + } + } + } +} + diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift new file mode 100644 index 000000000..7cc040076 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift @@ -0,0 +1,277 @@ +// +// MediaView.swift +// MediaView +// +// Created by Cirno MainasuK on 2021-8-23. +// Copyright © 2021 Twidere. All rights reserved. +// + +import AVKit +import UIKit + +public final class MediaView: UIView { + + public static let cornerRadius: CGFloat = 0 + public static let durationFormatter: DateComponentsFormatter = { + let formatter = DateComponentsFormatter() + formatter.zeroFormattingBehavior = .pad + formatter.allowedUnits = [.minute, .second] + return formatter + }() + + public let container = TouchBlockingView() + + public private(set) var configuration: Configuration? + + private(set) lazy var imageView: UIImageView = { + let imageView = UIImageView() + imageView.contentMode = .scaleAspectFill + imageView.isUserInteractionEnabled = false + imageView.layer.masksToBounds = true // clip overflow + return imageView + }() + + private(set) lazy var playerViewController: AVPlayerViewController = { + let playerViewController = AVPlayerViewController() + playerViewController.view.layer.masksToBounds = true + playerViewController.view.isUserInteractionEnabled = false + return playerViewController + }() + private var playerLooper: AVPlayerLooper? + + private(set) lazy var indicatorBlurEffectView: UIVisualEffectView = { + let effectView = UIVisualEffectView(effect: UIBlurEffect(style: .systemUltraThinMaterial)) + effectView.layer.masksToBounds = true + effectView.layer.cornerCurve = .continuous + effectView.layer.cornerRadius = 4 + return effectView + }() + private(set) lazy var indicatorVibrancyEffectView = UIVisualEffectView( + effect: UIVibrancyEffect(blurEffect: UIBlurEffect(style: .systemUltraThinMaterial)) + ) +// private(set) lazy var playerIndicatorLabel: UILabel = { +// let label = UILabel() +// label.font = .preferredFont(forTextStyle: .caption1) +// label.textColor = .secondaryLabel +// return label +// }() + + public override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension MediaView { + + @MainActor + public func thumbnail() async -> UIImage? { + return imageView.image + } + + public func thumbnail() -> UIImage? { + return imageView.image + } + +} + +extension MediaView { + private func _init() { + // lazy load content later + } + + public func setup(configuration: Configuration) { + self.configuration = configuration + + setupContainerViewHierarchy() + + switch configuration { + case .image(let info): + configure(image: info) + case .gif(let info): + configure(gif: info) + case .video(let info): + configure(video: info) + } + } + + private func configure(image info: Configuration.ImageInfo) { + imageView.translatesAutoresizingMaskIntoConstraints = false + container.addSubview(imageView) + NSLayoutConstraint.activate([ + imageView.topAnchor.constraint(equalTo: container.topAnchor), + imageView.leadingAnchor.constraint(equalTo: container.leadingAnchor), + imageView.trailingAnchor.constraint(equalTo: container.trailingAnchor), + imageView.bottomAnchor.constraint(equalTo: container.bottomAnchor), + ]) + + let placeholder = UIImage.placeholder(color: .systemGray6) + guard let urlString = info.assetURL, + let url = URL(string: urlString) else { + imageView.image = placeholder + return + } + imageView.af.setImage( + withURL: url, + placeholderImage: placeholder + ) + } + + private func configure(gif info: Configuration.VideoInfo) { + // use view controller as View here + playerViewController.view.translatesAutoresizingMaskIntoConstraints = false + container.addSubview(playerViewController.view) + NSLayoutConstraint.activate([ + playerViewController.view.topAnchor.constraint(equalTo: container.topAnchor), + playerViewController.view.leadingAnchor.constraint(equalTo: container.leadingAnchor), + playerViewController.view.trailingAnchor.constraint(equalTo: container.trailingAnchor), + playerViewController.view.bottomAnchor.constraint(equalTo: container.bottomAnchor), + ]) + + assert(playerViewController.contentOverlayView != nil) + if let contentOverlayView = playerViewController.contentOverlayView { + indicatorBlurEffectView.translatesAutoresizingMaskIntoConstraints = false + contentOverlayView.addSubview(indicatorBlurEffectView) + NSLayoutConstraint.activate([ + contentOverlayView.trailingAnchor.constraint(equalTo: indicatorBlurEffectView.trailingAnchor, constant: 11), + contentOverlayView.bottomAnchor.constraint(equalTo: indicatorBlurEffectView.bottomAnchor, constant: 8), + ]) + setupIndicatorViewHierarchy() + } +// playerIndicatorLabel.attributedText = NSAttributedString(AttributedString("GIF")) + + guard let player = setupGIFPlayer(info: info) else { return } + setupPlayerLooper(player: player) + playerViewController.player = player + playerViewController.showsPlaybackControls = false + + // auto play for GIF + player.play() + } + + private func configure(video info: Configuration.VideoInfo) { + let imageInfo = Configuration.ImageInfo( + aspectRadio: info.aspectRadio, + assetURL: info.previewURL + ) + configure(image: imageInfo) + + indicatorBlurEffectView.translatesAutoresizingMaskIntoConstraints = false + imageView.addSubview(indicatorBlurEffectView) + NSLayoutConstraint.activate([ + imageView.trailingAnchor.constraint(equalTo: indicatorBlurEffectView.trailingAnchor, constant: 11), + imageView.bottomAnchor.constraint(equalTo: indicatorBlurEffectView.bottomAnchor, constant: 8), + ]) + setupIndicatorViewHierarchy() + +// playerIndicatorLabel.attributedText = { +// let imageAttachment = NSTextAttachment(image: UIImage(systemName: "play.fill")!) +// let imageAttributedString = AttributedString(NSAttributedString(attachment: imageAttachment)) +// let duration: String = { +// guard let durationMS = info.durationMS else { return "" } +// let timeInterval = TimeInterval(durationMS / 1000) +// guard timeInterval > 0 else { return "" } +// guard let text = MediaView.durationFormatter.string(from: timeInterval) else { return "" } +// return " \(text)" +// }() +// let textAttributedString = AttributedString("\(duration)") +// var attributedString = imageAttributedString + textAttributedString +// attributedString.foregroundColor = .secondaryLabel +// return NSAttributedString(attributedString) +// }() + + } + + public func prepareForReuse() { + // reset appearance + alpha = 1 + + // reset image + imageView.removeFromSuperview() + imageView.removeConstraints(imageView.constraints) + imageView.af.cancelImageRequest() + imageView.image = nil + + // reset player + playerViewController.view.removeFromSuperview() + playerViewController.contentOverlayView.flatMap { view in + view.removeConstraints(view.constraints) + } + playerViewController.player?.pause() + playerViewController.player = nil + playerLooper = nil + + // reset indicator + indicatorBlurEffectView.removeFromSuperview() + + // reset container + container.removeFromSuperview() + container.removeConstraints(container.constraints) + + // reset configuration + configuration = nil + } +} + +extension MediaView { + private func setupGIFPlayer(info: Configuration.VideoInfo) -> AVPlayer? { + guard let urlString = info.assetURL, + let url = URL(string: urlString) + else { return nil } + let playerItem = AVPlayerItem(url: url) + let player = AVQueuePlayer(playerItem: playerItem) + player.isMuted = true + return player + } + + private func setupPlayerLooper(player: AVPlayer) { + guard let queuePlayer = player as? AVQueuePlayer else { return } + guard let templateItem = queuePlayer.items().first else { return } + playerLooper = AVPlayerLooper(player: queuePlayer, templateItem: templateItem) + } + + private func setupContainerViewHierarchy() { + guard container.superview == nil else { return } + container.translatesAutoresizingMaskIntoConstraints = false + addSubview(container) + NSLayoutConstraint.activate([ + container.topAnchor.constraint(equalTo: topAnchor), + container.leadingAnchor.constraint(equalTo: leadingAnchor), + container.trailingAnchor.constraint(equalTo: trailingAnchor), + container.bottomAnchor.constraint(equalTo: bottomAnchor), + ]) + } + + private func setupIndicatorViewHierarchy() { +// let blurEffectView = indicatorBlurEffectView +// let vibrancyEffectView = indicatorVibrancyEffectView +// +// if vibrancyEffectView.superview == nil { +// vibrancyEffectView.translatesAutoresizingMaskIntoConstraints = false +// blurEffectView.contentView.addSubview(vibrancyEffectView) +// NSLayoutConstraint.activate([ +// vibrancyEffectView.topAnchor.constraint(equalTo: blurEffectView.contentView.topAnchor), +// vibrancyEffectView.leadingAnchor.constraint(equalTo: blurEffectView.contentView.leadingAnchor), +// vibrancyEffectView.trailingAnchor.constraint(equalTo: blurEffectView.contentView.trailingAnchor), +// vibrancyEffectView.bottomAnchor.constraint(equalTo: blurEffectView.contentView.bottomAnchor), +// ]) +// } +// +// if playerIndicatorLabel.superview == nil { +// playerIndicatorLabel.translatesAutoresizingMaskIntoConstraints = false +// vibrancyEffectView.contentView.addSubview(playerIndicatorLabel) +// NSLayoutConstraint.activate([ +// playerIndicatorLabel.topAnchor.constraint(equalTo: vibrancyEffectView.contentView.topAnchor), +// playerIndicatorLabel.leadingAnchor.constraint(equalTo: vibrancyEffectView.contentView.leadingAnchor, constant: 3), +// vibrancyEffectView.contentView.trailingAnchor.constraint(equalTo: playerIndicatorLabel.trailingAnchor, constant: 3), +// playerIndicatorLabel.bottomAnchor.constraint(equalTo: vibrancyEffectView.contentView.bottomAnchor), +// ]) +// } + } +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift new file mode 100644 index 000000000..e73dd3efd --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift @@ -0,0 +1,151 @@ +// +// NotificationView+ViewModel.swift +// +// +// Created by MainasuK on 2022-1-21. +// + +import os.log +import UIKit +import Combine +import Meta +import MastodonSDK +import MastodonAsset +import MastodonLocalization +import MastodonExtension + +extension NotificationView { + public final class ViewModel: ObservableObject { + public var disposeBag = Set() + + let logger = Logger(subsystem: "StatusView", category: "ViewModel") + + @Published public var userIdentifier: UserIdentifier? // me + + @Published public var notificationIndicatorText: MetaContent? + + @Published public var authorAvatarImage: UIImage? + @Published public var authorAvatarImageURL: URL? + @Published public var authorName: MetaContent? + @Published public var authorUsername: String? + + @Published public var isMyself = false + @Published public var isMuting = false + @Published public var isBlocking = false + + @Published public var timestamp: Date? + public var timestampFormatter: ((_ date: Date) -> String)? + + let timestampUpdatePublisher = Timer.publish(every: 1.0, on: .main, in: .common) + .autoconnect() + .share() + .eraseToAnyPublisher() + + } +} + +extension NotificationView.ViewModel { + func bind(notificationView: NotificationView) { + bindAuthor(notificationView: notificationView) + bindAuthorMenu(notificationView: notificationView) + + $userIdentifier + .assign(to: \.userIdentifier, on: notificationView.statusView.viewModel) + .store(in: &disposeBag) + $userIdentifier + .assign(to: \.userIdentifier, on: notificationView.quoteStatusView.viewModel) + .store(in: &disposeBag) + } + + private func bindAuthor(notificationView: NotificationView) { + // avatar + Publishers.CombineLatest( + $authorAvatarImage, + $authorAvatarImageURL + ) + .sink { image, url in + let configuration: AvatarImageView.Configuration = { + if let image = image { + return AvatarImageView.Configuration(image: image) + } else { + return AvatarImageView.Configuration(url: url) + } + }() + notificationView.avatarButton.avatarImageView.configure(configuration: configuration) + notificationView.avatarButton.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 12))) + } + .store(in: &disposeBag) + // name + $authorName + .sink { metaContent in + let metaContent = metaContent ?? PlaintextMetaContent(string: " ") + notificationView.authorNameLabel.configure(content: metaContent) + } + .store(in: &disposeBag) + // username + $authorUsername + .map { text -> String in + guard let text = text else { return "" } + return "@\(text)" + } + .sink { username in + let metaContent = PlaintextMetaContent(string: username) + notificationView.authorUsernameLabel.configure(content: metaContent) + } + .store(in: &disposeBag) + // timestamp + Publishers.CombineLatest( + $timestamp, + timestampUpdatePublisher.prepend(Date()).eraseToAnyPublisher() + ) + .sink { [weak self] timestamp, _ in + guard let self = self else { return } + guard let timestamp = timestamp, + let text = self.timestampFormatter?(timestamp) + else { + notificationView.dateLabel.configure(content: PlaintextMetaContent(string: "")) + return + } + + notificationView.dateLabel.configure(content: PlaintextMetaContent(string: text)) + } + .store(in: &disposeBag) + // notification type indicator + $notificationIndicatorText + .sink { text in + if let text = text { + notificationView.notificationTypeIndicatorLabel.configure(content: text) + } else { + notificationView.notificationTypeIndicatorLabel.reset() + } + } + .store(in: &disposeBag) + } + + private func bindAuthorMenu(notificationView: NotificationView) { + Publishers.CombineLatest4( + $authorName, + $isMuting, + $isBlocking, + $isMyself + ) + .sink { authorName, isMuting, isBlocking, isMyself in + guard let name = authorName?.string else { + notificationView.menuButton.menu = nil + return + } + + let menuContext = NotificationView.AuthorMenuContext( + name: name, + isMuting: isMuting, + isBlocking: isBlocking, + isMyself: isMyself + ) + notificationView.menuButton.menu = notificationView.setupAuthorMenu(menuContext: menuContext) + notificationView.menuButton.showsMenuAsPrimaryAction = true + + notificationView.menuButton.isHidden = menuContext.isMyself + } + .store(in: &disposeBag) + } +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift new file mode 100644 index 000000000..a3f367e47 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -0,0 +1,394 @@ +// +// NotificationView.swift +// +// +// Created by MainasuK on 2022-1-21. +// + +import os.log +import UIKit +import Combine +import MetaTextKit +import Meta +import MastodonAsset +import MastodonLocalization + +public protocol NotificationViewDelegate: AnyObject { + func notificationView(_ notificationView: NotificationView, authorAvatarButtonDidPressed button: AvatarButton) + func notificationView(_ notificationView: NotificationView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) + + func notificationView(_ notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + func notificationView(_ notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) + + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) +} + +public final class NotificationView: UIView { + + static let containerLayoutMargin = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16) + + let logger = Logger(subsystem: "NotificationView", category: "View") + + public weak var delegate: NotificationViewDelegate? + + var _disposeBag = Set() + public var disposeBag = Set() + + public private(set) lazy var viewModel: ViewModel = { + let viewModel = ViewModel() + viewModel.bind(notificationView: self) + return viewModel + }() + + let containerStackView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .vertical + stackView.spacing = 10 + return stackView + }() + + // author + let authorContainerView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .horizontal + stackView.spacing = 12 + return stackView + }() + let authorContainerViewBottomPaddingView = UIView() + + // avatar + public let avatarButton = AvatarButton() + + // author name + public let authorNameLabel = MetaLabel(style: .statusName) + + // author username + public let authorUsernameLabel = MetaLabel(style: .statusUsername) + + public let usernameTrialingDotLabel: MetaLabel = { + let label = MetaLabel(style: .statusUsername) + label.configure(content: PlaintextMetaContent(string: "·")) + return label + }() + + // timestamp + public let dateLabel = MetaLabel(style: .statusUsername) + + public let menuButton: UIButton = { + let button = HitTestExpandedButton(type: .system) + let image = UIImage(systemName: "ellipsis", withConfiguration: UIImage.SymbolConfiguration(font: .systemFont(ofSize: 15))) + button.setImage(image, for: .normal) + return button + }() + + // notification type indicator imageView + public let notificationTypeIndicatorImageView: UIImageView = { + let imageView = UIImageView() + imageView.tintColor = Asset.Colors.Label.secondary.color + return imageView + }() + + // notification type indicator imageView + public let notificationTypeIndicatorLabel = MetaLabel(style: .notificationTitle) + + public let statusView = StatusView() + + public let quoteStatusViewContainerView = UIView() + public let quoteStatusView = StatusView() + + public func prepareForReuse() { + disposeBag.removeAll() + + viewModel.authorAvatarImageURL = nil + avatarButton.avatarImageView.cancelTask() + + authorContainerViewBottomPaddingView.isHidden = true + + statusView.isHidden = true + statusView.prepareForReuse() + + quoteStatusViewContainerView.isHidden = true + quoteStatusView.prepareForReuse() + } + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension NotificationView { + private func _init() { + // container: V - [ author container | (authorContainerViewBottomPaddingView) | statusView | quoteStatusView ] + containerStackView.layoutMargins = StatusView.containerLayoutMargin + + containerStackView.translatesAutoresizingMaskIntoConstraints = false + addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), + bottomAnchor.constraint(equalTo: containerStackView.bottomAnchor), + ]) + + // author container: H - [ avatarButton | author meta container ] + authorContainerView.preservesSuperviewLayoutMargins = true + authorContainerView.isLayoutMarginsRelativeArrangement = true + containerStackView.addArrangedSubview(authorContainerView) + UIContentSizeCategory.publisher + .sink { [weak self] category in + guard let self = self else { return } + self.authorContainerView.axis = category > .accessibilityLarge ? .vertical : .horizontal + self.authorContainerView.alignment = category > .accessibilityLarge ? .leading : .center + } + .store(in: &_disposeBag) + + // avatarButton + let authorAvatarButtonSize = CGSize(width: 46, height: 46) + avatarButton.size = authorAvatarButtonSize + avatarButton.avatarImageView.imageViewSize = authorAvatarButtonSize + avatarButton.translatesAutoresizingMaskIntoConstraints = false + authorContainerView.addArrangedSubview(avatarButton) + NSLayoutConstraint.activate([ + avatarButton.widthAnchor.constraint(equalToConstant: authorAvatarButtonSize.width).priority(.required - 1), + avatarButton.heightAnchor.constraint(equalToConstant: authorAvatarButtonSize.height).priority(.required - 1), + ]) + avatarButton.setContentHuggingPriority(.required - 1, for: .vertical) + avatarButton.setContentCompressionResistancePriority(.required - 1, for: .vertical) + + // authrMetaContainer: V - [ authorPrimaryContainer | authorSecondaryMetaContainer ] + let authrMetaContainer = UIStackView() + authrMetaContainer.axis = .vertical + authrMetaContainer.spacing = 4 + authorContainerView.addArrangedSubview(authrMetaContainer) + + // authorPrimaryContainer: H - [ authorNameLabel | notificationTypeIndicatorLabel | (padding) | menuButton ] + let authorPrimaryContainer = UIStackView() + authorPrimaryContainer.axis = .horizontal + authrMetaContainer.addArrangedSubview(authorPrimaryContainer) + + authorPrimaryContainer.addArrangedSubview(authorNameLabel) + authorPrimaryContainer.addArrangedSubview(notificationTypeIndicatorLabel) + authorPrimaryContainer.addArrangedSubview(UIView()) + authorPrimaryContainer.addArrangedSubview(menuButton) + authorNameLabel.setContentHuggingPriority(.required - 10, for: .horizontal) + authorNameLabel.setContentCompressionResistancePriority(.required - 10, for: .horizontal) + notificationTypeIndicatorLabel.setContentHuggingPriority(.required - 4, for: .horizontal) + notificationTypeIndicatorLabel.setContentCompressionResistancePriority(.required - 4, for: .horizontal) + menuButton.setContentHuggingPriority(.required - 5, for: .horizontal) + menuButton.setContentCompressionResistancePriority(.required - 5, for: .horizontal) + + // authorSecondaryMetaContainer: H - [ authorUsername | (padding) ] + let authorSecondaryMetaContainer = UIStackView() + authorSecondaryMetaContainer.axis = .horizontal + authorSecondaryMetaContainer.spacing = 4 + authrMetaContainer.addArrangedSubview(authorSecondaryMetaContainer) + authrMetaContainer.setCustomSpacing(4, after: authorSecondaryMetaContainer) + + authorSecondaryMetaContainer.addArrangedSubview(authorUsernameLabel) + authorUsernameLabel.setContentHuggingPriority(.required - 8, for: .horizontal) + authorUsernameLabel.setContentCompressionResistancePriority(.required - 8, for: .horizontal) + authorSecondaryMetaContainer.addArrangedSubview(usernameTrialingDotLabel) + usernameTrialingDotLabel.setContentHuggingPriority(.required - 2, for: .horizontal) + usernameTrialingDotLabel.setContentCompressionResistancePriority(.required - 2, for: .horizontal) + authorSecondaryMetaContainer.addArrangedSubview(dateLabel) + dateLabel.setContentHuggingPriority(.required - 1, for: .horizontal) + dateLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) + authorSecondaryMetaContainer.addArrangedSubview(UIView()) + + // authorContainerViewBottomPaddingView + authorContainerViewBottomPaddingView.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(authorContainerViewBottomPaddingView) + NSLayoutConstraint.activate([ + authorContainerViewBottomPaddingView.heightAnchor.constraint(equalToConstant: 16).priority(.required - 1), + ]) + authorContainerViewBottomPaddingView.isHidden = true + + // statusView + containerStackView.addArrangedSubview(statusView) + statusView.setup(style: .notification) + + // quoteStatusView + containerStackView.addArrangedSubview(quoteStatusViewContainerView) + quoteStatusViewContainerView.layoutMargins = UIEdgeInsets( + top: 0, + left: StatusView.containerLayoutMargin.left, + bottom: 16, + right: StatusView.containerLayoutMargin.right + ) + + let quoteBackgroundView = UIView() + quoteBackgroundView.layoutMargins = UIEdgeInsets(top: 16, left: 0, bottom: 0, right: 0) + + quoteBackgroundView.translatesAutoresizingMaskIntoConstraints = false + quoteStatusViewContainerView.addSubview(quoteBackgroundView) + NSLayoutConstraint.activate([ + quoteBackgroundView.topAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.topAnchor), + quoteBackgroundView.leadingAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.leadingAnchor), + quoteBackgroundView.trailingAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.trailingAnchor), + quoteBackgroundView.bottomAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.bottomAnchor), + ]) + quoteBackgroundView.backgroundColor = .secondarySystemBackground + quoteBackgroundView.layer.masksToBounds = true + quoteBackgroundView.layer.cornerCurve = .continuous + quoteBackgroundView.layer.cornerRadius = 8 + quoteBackgroundView.layer.borderWidth = 1 + quoteBackgroundView.layer.borderColor = UIColor.separator.cgColor + + quoteStatusView.translatesAutoresizingMaskIntoConstraints = false + quoteBackgroundView.addSubview(quoteStatusView) + NSLayoutConstraint.activate([ + quoteStatusView.topAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.topAnchor), + quoteStatusView.leadingAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.leadingAnchor), + quoteStatusView.trailingAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.trailingAnchor), + quoteStatusView.bottomAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.bottomAnchor), + ]) + quoteStatusView.setup(style: .notificationQuote) + + statusView.isHidden = true + quoteStatusViewContainerView.isHidden = true + + authorNameLabel.isUserInteractionEnabled = false + authorUsernameLabel.isUserInteractionEnabled = false + notificationTypeIndicatorLabel.isUserInteractionEnabled = false + + avatarButton.addTarget(self, action: #selector(NotificationView.avatarButtonDidPressed(_:)), for: .touchUpInside) + + statusView.delegate = self + quoteStatusView.delegate = self + } +} + +extension NotificationView { + @objc private func avatarButtonDidPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.notificationView(self, authorAvatarButtonDidPressed: avatarButton) + } +} + +extension NotificationView { + + public func setAuthorContainerBottomPaddingViewDisplay() { + authorContainerViewBottomPaddingView.isHidden = false + } + + public func setStatusViewDisplay() { + statusView.isHidden = false + } + + public func setQuoteStatusViewDisplay() { + quoteStatusViewContainerView.isHidden = false + } + +} + +extension NotificationView { + public typealias AuthorMenuContext = StatusView.AuthorMenuContext + + public func setupAuthorMenu(menuContext: AuthorMenuContext) -> UIMenu { + var actions: [MastodonMenu.Action] = [] + + actions = [ + .muteUser(.init( + name: menuContext.name, + isMuting: menuContext.isMuting + )), + .blockUser(.init( + name: menuContext.name, + isBlocking: menuContext.isBlocking + )), + .reportUser( + .init(name: menuContext.name) + ), + ] + + if menuContext.isMyself { + actions.append(.deleteStatus) + } + + + let menu = MastodonMenu.setupMenu( + actions: actions, + delegate: self + ) + + return menu + } + +} + +// MARK: - StatusViewDelegate +extension NotificationView: StatusViewDelegate { + + public func statusView(_ statusView: StatusView, headerDidPressed header: UIView) { + // do nothing + } + + public func statusView(_ statusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) { + switch statusView { + case self.statusView: + assertionFailure() + case quoteStatusView: + delegate?.notificationView(self, quoteStatusView: statusView, authorAvatarButtonDidPressed: button) + default: + assertionFailure() + } + } + + public func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { + switch statusView { + case self.statusView: + delegate?.notificationView(self, statusView: statusView, metaText: metaText, didSelectMeta: meta) + case quoteStatusView: + delegate?.notificationView(self, quoteStatusView: statusView, metaText: metaText, didSelectMeta: meta) + default: + assertionFailure() + } + } + + public func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) { + assertionFailure() + } + + public func statusView(_ statusView: StatusView, pollTableView tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + assertionFailure() + } + + public func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) { + assertionFailure() + } + + public func statusView(_ statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) { + switch statusView { + case self.statusView: + delegate?.notificationView(self, statusView: statusView, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action) + case quoteStatusView: + assertionFailure() + default: + assertionFailure() + } + } + + public func statusView(_ statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) { + assertionFailure() + } + + + +} + +// MARK: - MastodonMenuDelegate +extension NotificationView: MastodonMenuDelegate { + public func menuAction(_ action: MastodonMenu.Action) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + + delegate?.notificationView(self, menuButton: menuButton, didSelectAction: action) + } +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView+ViewModel.swift new file mode 100644 index 000000000..ff458e7ad --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView+ViewModel.swift @@ -0,0 +1,180 @@ +// +// PollOptionView+ViewModel.swift +// +// +// Created by MainasuK on 2021-12-8. +// + +import UIKit +import Combine +import CoreData +import MetaTextKit +import MastodonAsset + +extension PollOptionView { + + static let percentageFormatter: NumberFormatter = { + let formatter = NumberFormatter() + formatter.numberStyle = .percent + formatter.maximumFractionDigits = 1 + formatter.minimumIntegerDigits = 1 + formatter.roundingMode = .down + return formatter + }() + + public final class ViewModel: ObservableObject { + var disposeBag = Set() + var observations = Set() + public var objects = Set() + + @Published public var userIdentifier: UserIdentifier? + + @Published public var style: PollOptionView.Style? + + @Published public var content: String = "" // for edit style + + @Published public var metaContent: MetaContent? // for plain style + @Published public var percentage: Double? + + @Published public var isExpire: Bool = false + @Published public var isMultiple: Bool = false + @Published public var isSelect: Bool? = false // nil for server not return selection array + @Published public var isPollVoted: Bool = false + @Published public var isMyPoll: Bool = false + @Published public var isReveal: Bool = false + + @Published public var selectState: SelectState = .none + @Published public var voteState: VoteState = .hidden + + @Published public var roundedBackgroundViewColor: UIColor = .clear + @Published public var primaryStripProgressViewTintColor: UIColor = Asset.Colors.brandBlue.color + @Published public var secondaryStripProgressViewTintColor: UIColor = Asset.Colors.brandBlue.color.withAlphaComponent(0.5) + + init() { + // selectState + Publishers.CombineLatest3( + $isSelect, + $isExpire, + $isPollVoted + ) + .map { isSelect, isExpire, isPollVoted -> SelectState in + if isSelect == true { + return .on + } else if isExpire { + return .none + } else if isPollVoted, isSelect == nil { + return .none + } else { + return .off + } + } + .assign(to: &$selectState) + // voteState + Publishers.CombineLatest3( + $isReveal, + $isSelect, + $percentage + ) + .map { isReveal, isSelect, percentage -> VoteState in + guard isReveal else { + return .hidden + } + let oldPercentage = self.percentage + let animated = oldPercentage != nil && percentage != nil + + return .reveal(voted: isSelect == true, percentage: percentage ?? 0, animating: animated) + } + .assign(to: &$voteState) + // isReveal + Publishers.CombineLatest3( + $isExpire, + $isPollVoted, + $isMyPoll + ) + .map { isExpire, isPollVoted, isMyPoll in + return isExpire || isPollVoted || isMyPoll + } + .assign(to: &$isReveal) + + + } + + public enum Corner: Hashable { + case none + case circle + case radius(CGFloat) + } + + public enum SelectState: Equatable, Hashable { + case none + case off + case on + } + + public enum VoteState: Equatable, Hashable { + case hidden + case reveal(voted: Bool, percentage: Double, animating: Bool) + } + } +} + +extension PollOptionView.ViewModel { + public func bind(view: PollOptionView) { + // backgroundColor + $roundedBackgroundViewColor + .map { $0 as UIColor? } + .assign(to: \.backgroundColor, on: view.roundedBackgroundView) + .store(in: &disposeBag) + // content + NotificationCenter.default + .publisher(for: UITextField.textDidChangeNotification, object: view.optionTextField) + .receive(on: DispatchQueue.main) + .map { _ in view.optionTextField.text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" } + .assign(to: &$content) + // metaContent + $metaContent + .sink { metaContent in + guard let metaContent = metaContent else { + view.optionTextField.text = "" + return + } + view.optionTextField.text = metaContent.string + } + .store(in: &disposeBag) + // selectState + $selectState + .sink { selectState in + switch selectState { + case .none: + view.checkmarkBackgroundView.isHidden = true + view.checkmarkImageView.isHidden = true + case .off: + view.checkmarkBackgroundView.isHidden = false + view.checkmarkImageView.isHidden = true + case .on: + view.checkmarkBackgroundView.isHidden = false + view.checkmarkImageView.isHidden = false + } + } + .store(in: &disposeBag) + // voteState + $voteState + .sink { [weak self] voteState in + guard let self = self else { return } + switch voteState { + case .hidden: + view.optionPercentageLabel.isHidden = true + view.voteProgressStripView.isHidden = true + view.voteProgressStripView.setProgress(0.0, animated: false) + case .reveal(let voted, let percentage, let animating): + view.optionPercentageLabel.isHidden = false + view.optionPercentageLabel.text = String(Int(100 * percentage)) + "%" + view.voteProgressStripView.isHidden = false + view.voteProgressStripView.tintColor = voted ? self.primaryStripProgressViewTintColor : self.secondaryStripProgressViewTintColor + view.voteProgressStripView.setProgress(CGFloat(percentage), animated: animating) + } + } + .store(in: &disposeBag) + } +} + diff --git a/Mastodon/Scene/Share/View/Content/PollOptionView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift similarity index 67% rename from Mastodon/Scene/Share/View/Content/PollOptionView.swift rename to MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift index db84b95df..d56ac06e9 100644 --- a/Mastodon/Scene/Share/View/Content/PollOptionView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift @@ -7,34 +7,41 @@ import UIKit import Combine +import MastodonAsset +import MastodonLocalization -final class PollOptionView: UIView { +public final class PollOptionView: UIView { - static let height: CGFloat = optionHeight + 2 * verticalMargin - static let optionHeight: CGFloat = 44 - static let verticalMargin: CGFloat = 5 - static let checkmarkImageSize = CGSize(width: 26, height: 26) - static let checkmarkBackgroundLeadingMargin: CGFloat = 9 + public static let height: CGFloat = optionHeight + 2 * verticalMargin + public static let optionHeight: CGFloat = 44 + public static let verticalMargin: CGFloat = 5 + public static let checkmarkImageSize = CGSize(width: 26, height: 26) + public static let checkmarkBackgroundLeadingMargin: CGFloat = 9 private var viewStateDisposeBag = Set() - var disposeBag = Set() + public var disposeBag = Set() + public private(set) lazy var viewModel: ViewModel = { + let viewModel = ViewModel() + viewModel.bind(view: self) + return viewModel + }() - let roundedBackgroundView = UIView() - let voteProgressStripView: StripProgressView = { + public private(set) var style: Style? + + public let roundedBackgroundView = UIView() + public let voteProgressStripView: StripProgressView = { let view = StripProgressView() view.tintColor = Asset.Colors.brandBlue.color return view }() - let checkmarkBackgroundView: UIView = { + public let checkmarkBackgroundView: UIView = { let view = UIView() - // FIXME: missing update trigger - view.backgroundColor = ThemeService.shared.currentTheme.value.tertiarySystemBackgroundColor return view }() - let checkmarkImageView: UIImageView = { + public let checkmarkImageView: UIImageView = { let imageView = UIImageView() let image = UIImage(systemName: "checkmark", withConfiguration: UIImage.SymbolConfiguration(pointSize: 14, weight: .bold))! imageView.image = image.withRenderingMode(.alwaysTemplate) @@ -42,7 +49,7 @@ final class PollOptionView: UIView { return imageView }() - let plusCircleImageView: UIImageView = { + public let plusCircleImageView: UIImageView = { let imageView = UIImageView() let image = Asset.Circles.plusCircle.image imageView.image = image.withRenderingMode(.alwaysTemplate) @@ -50,7 +57,7 @@ final class PollOptionView: UIView { return imageView }() - let optionTextField: DeleteBackwardResponseTextField = { + public let optionTextField: DeleteBackwardResponseTextField = { let textField = DeleteBackwardResponseTextField() textField.font = .systemFont(ofSize: 15, weight: .medium) textField.textColor = Asset.Colors.Label.primary.color @@ -59,9 +66,9 @@ final class PollOptionView: UIView { return textField }() - let optionLabelMiddlePaddingView = UIView() + public let optionLabelMiddlePaddingView = UIView() - let optionPercentageLabel: UILabel = { + public let optionPercentageLabel: UILabel = { let label = UILabel() label.font = .systemFont(ofSize: 13, weight: .regular) label.textColor = Asset.Colors.Label.primary.color @@ -70,12 +77,19 @@ final class PollOptionView: UIView { return label }() - override init(frame: CGRect) { + public func prepareForReuse() { + disposeBag.removeAll() + viewModel.objects.removeAll() + viewModel.percentage = nil + voteProgressStripView.setProgress(0, animated: false) + } + + public override init(frame: CGRect) { super.init(frame: frame) _init() } - required init?(coder: NSCoder) { + public required init?(coder: NSCoder) { super.init(coder: coder) _init() } @@ -84,9 +98,6 @@ final class PollOptionView: UIView { extension PollOptionView { private func _init() { - // default color in the timeline - roundedBackgroundView.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor - roundedBackgroundView.translatesAutoresizingMaskIntoConstraints = false addSubview(roundedBackgroundView) NSLayoutConstraint.activate([ @@ -164,13 +175,71 @@ extension PollOptionView { optionPercentageLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) plusCircleImageView.isHidden = true + + updateCornerRadius() } - override func layoutSubviews() { + public override func layoutSubviews() { super.layoutSubviews() + updateCornerRadius() } + public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) { + +// func updateTextAppearance() { +// // guard let voteState = attribute?.voteState else { +// // pollOptionView.optionTextField.textColor = Asset.Colors.Label.primary.color +// // pollOptionView.optionTextField.layer.removeShadow() +// // return +// // } +// // +// // switch voteState { +// // case .hidden: +// // pollOptionView.optionTextField.textColor = Asset.Colors.Label.primary.color +// // pollOptionView.optionTextField.layer.removeShadow() +// // case .reveal(_, let percentage, _): +// // if CGFloat(percentage) * pollOptionView.voteProgressStripView.frame.width > pollOptionView.optionLabelMiddlePaddingView.frame.minX { +// // pollOptionView.optionTextField.textColor = .white +// // pollOptionView.optionTextField.layer.setupShadow(x: 0, y: 0, blur: 4, spread: 0) +// // } else { +// // pollOptionView.optionTextField.textColor = Asset.Colors.Label.primary.color +// // pollOptionView.optionTextField.layer.removeShadow() +// // } +// // +// // if CGFloat(percentage) * pollOptionView.voteProgressStripView.frame.width > pollOptionView.optionLabelMiddlePaddingView.frame.maxX { +// // pollOptionView.optionPercentageLabel.textColor = .white +// // pollOptionView.optionPercentageLabel.layer.setupShadow(x: 0, y: 0, blur: 4, spread: 0) +// // } else { +// // pollOptionView.optionPercentageLabel.textColor = Asset.Colors.Label.primary.color +// // pollOptionView.optionPercentageLabel.layer.removeShadow() +// // } +// // } +// } + + } + } + +} + +extension PollOptionView { + public enum Style { + case plain + case edit + } + + public func setup(style: Style) { + guard self.style == nil else { + assertionFailure("Should only setup once") + return + } + self.style = style + self.viewModel.style = style + } + } extension PollOptionView { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusMetricView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusMetricView.swift new file mode 100644 index 000000000..7b356fc6e --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusMetricView.swift @@ -0,0 +1,96 @@ +// +// StatusMetricView.swift +// +// +// Created by MainasuK on 2022-1-17. +// + +import UIKit + +public final class StatusMetricView: UIView { + + // container + public let containerStackView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .horizontal + stackView.spacing = 4 + return stackView + }() + + // date + public let dateLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .subheadline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular)) + label.text = "Date" + label.adjustsFontSizeToFitWidth = true + label.minimumScaleFactor = 0.5 + label.numberOfLines = 2 + return label + }() + + // meter + public let meterContainer: UIStackView = { + let stackView = UIStackView() + stackView.axis = .horizontal + stackView.spacing = 20 + return stackView + }() + + // reblog meter + public let reblogButton: UIButton = { + let button = UIButton(type: .system) + button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)) + button.setTitle("0 reblog", for: .normal) + return button + }() + + // favorite meter + public let favoriteButton: UIButton = { + let button = UIButton(type: .system) + button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)) + button.setTitle("0 favorite", for: .normal) + return button + }() + + public override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension StatusMetricView { + private func _init() { + // container: H - [ dateLabel | meterContainer ] + containerStackView.translatesAutoresizingMaskIntoConstraints = false + addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: topAnchor, constant: 8), + containerStackView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor), + bottomAnchor.constraint(equalTo: containerStackView.bottomAnchor, constant: 12), + ]) + + containerStackView.addArrangedSubview(dateLabel) + dateLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) + containerStackView.addArrangedSubview(meterContainer) + + // meterContainer: H - [ reblogButton | favoriteButton ] + meterContainer.addArrangedSubview(reblogButton) + meterContainer.addArrangedSubview(favoriteButton) + reblogButton.setContentHuggingPriority(.required - 2, for: .horizontal) + reblogButton.setContentCompressionResistancePriority(.required - 2, for: .horizontal) + favoriteButton.setContentHuggingPriority(.required - 1, for: .horizontal) + favoriteButton.setContentCompressionResistancePriority(.required - 1, for: .horizontal) + + // TODO: + reblogButton.isAccessibilityElement = false + favoriteButton.isAccessibilityElement = false + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift new file mode 100644 index 000000000..b711b3aed --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -0,0 +1,525 @@ +// +// StatusView+ViewModel.swift +// +// +// Created by MainasuK on 2022-1-10. +// + +import os.log +import UIKit +import Combine +import CoreData +import Meta +import MastodonSDK +import MastodonAsset +import MastodonLocalization +import MastodonExtension + +extension StatusView { + public final class ViewModel: ObservableObject { + var disposeBag = Set() + var observations = Set() + public var objects = Set() + + let logger = Logger(subsystem: "StatusView", category: "ViewModel") + + @Published public var userIdentifier: UserIdentifier? // me + + // Header + @Published public var header: Header = .none + + // Author + @Published public var authorAvatarImage: UIImage? + @Published public var authorAvatarImageURL: URL? + @Published public var authorName: MetaContent? + @Published public var authorUsername: String? + + @Published public var isMyself = false + @Published public var isMuting = false + @Published public var isBlocking = false + + @Published public var timestamp: Date? + public var timestampFormatter: ((_ date: Date) -> String)? + + // Status + @Published public var content: MetaContent? + + // Media + @Published public var mediaViewConfigurations: [MediaView.Configuration] = [] + + // Poll + @Published public var pollItems: [PollItem] = [] + @Published public var isVotable: Bool = false + @Published public var isVoting: Bool = false + @Published public var isVoteButtonEnabled: Bool = false + @Published public var voterCount: Int? + @Published public var voteCount = 0 + @Published public var expireAt: Date? + @Published public var expired: Bool = false + + // Toolbar + @Published public var isReblog: Bool = false + @Published public var isReblogEnabled: Bool = true + @Published public var isFavorite: Bool = false + + @Published public var replyCount: Int = 0 + @Published public var reblogCount: Int = 0 + @Published public var favoriteCount: Int = 0 + + let timestampUpdatePublisher = Timer.publish(every: 1.0, on: .main, in: .common) + .autoconnect() + .share() + .eraseToAnyPublisher() + + public enum Header { + case none + case reply(info: ReplyInfo) + case repost(info: RepostInfo) + // case notification(info: NotificationHeaderInfo) + + public class ReplyInfo { + public let header: MetaContent + + public init(header: MetaContent) { + self.header = header + } + } + + public struct RepostInfo { + public let header: MetaContent + + public init(header: MetaContent) { + self.header = header + } + } + } + } +} + +extension StatusView.ViewModel { + func bind(statusView: StatusView) { + bindHeader(statusView: statusView) + bindAuthor(statusView: statusView) + bindContent(statusView: statusView) + bindMedia(statusView: statusView) + bindPoll(statusView: statusView) + bindToolbar(statusView: statusView) + bindMetric(statusView: statusView) + bindMenu(statusView: statusView) + } + + private func bindHeader(statusView: StatusView) { + $header + .sink { header in + switch header { + case .none: + return + case .repost(let info): + statusView.headerIconImageView.image = UIImage(systemName: "arrow.2.squarepath") + statusView.headerInfoLabel.configure(content: info.header) + statusView.setHeaderDisplay() + case .reply(let info): + statusView.headerIconImageView.image = UIImage(systemName: "arrowshape.turn.up.left.fill") + statusView.headerInfoLabel.configure(content: info.header) + statusView.setHeaderDisplay() + } + } + .store(in: &disposeBag) + } + + private func bindAuthor(statusView: StatusView) { + // avatar + Publishers.CombineLatest( + $authorAvatarImage.removeDuplicates(), + $authorAvatarImageURL.removeDuplicates() + ) + .sink { image, url in + let configuration: AvatarImageView.Configuration = { + if let image = image { + return AvatarImageView.Configuration(image: image) + } else { + return AvatarImageView.Configuration(url: url) + } + }() + statusView.avatarButton.avatarImageView.configure(configuration: configuration) + statusView.avatarButton.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 12))) + } + .store(in: &disposeBag) + // name + $authorName + .sink { metaContent in + let metaContent = metaContent ?? PlaintextMetaContent(string: " ") + statusView.authorNameLabel.configure(content: metaContent) + } + .store(in: &disposeBag) + // username + $authorUsername + .map { text -> String in + guard let text = text else { return "" } + return "@\(text)" + } + .sink { username in + let metaContent = PlaintextMetaContent(string: username) + statusView.authorUsernameLabel.configure(content: metaContent) + } + .store(in: &disposeBag) +// // visibility +// $visibility +// .sink { visibility in +// guard let visibility = visibility, +// let image = visibility.inlineImage +// else { return } +// +// statusView.visibilityImageView.image = image +// statusView.setVisibilityDisplay() +// } +// .store(in: &disposeBag) + + // timestamp + Publishers.CombineLatest( + $timestamp, + timestampUpdatePublisher.prepend(Date()).eraseToAnyPublisher() + ) + .sink { [weak self] timestamp, _ in + guard let self = self else { return } + guard let timestamp = timestamp, + let text = self.timestampFormatter?(timestamp) else { + statusView.dateLabel.configure(content: PlaintextMetaContent(string: "")) + return + } + + statusView.dateLabel.configure(content: PlaintextMetaContent(string: text)) + } + .store(in: &disposeBag) + } + + private func bindContent(statusView: StatusView) { + $content + .sink { content in + guard let content = content else { + statusView.contentMetaText.reset() + statusView.contentMetaText.textView.accessibilityLabel = "" + return + } + + statusView.contentMetaText.configure(content: content) + statusView.contentMetaText.textView.accessibilityLabel = content.string + statusView.contentMetaText.textView.accessibilityTraits = [.staticText] + statusView.contentMetaText.textView.accessibilityElementsHidden = false + + } + .store(in: &disposeBag) +// $spoilerContent +// .sink { metaContent in +// guard let metaContent = metaContent else { +// statusView.spoilerContentTextView.reset() +// return +// } +// statusView.spoilerContentTextView.configure(content: metaContent) +// statusView.setSpoilerDisplay() +// } +// .store(in: &disposeBag) +// +// Publishers.CombineLatest( +// $isContentReveal, +// $spoilerContent +// ) +// .receive(on: DispatchQueue.main) +// .sink { [weak self] isContentReveal, spoilerContent in +// guard let self = self else { return } +// guard spoilerContent != nil else { +// // ignore reveal state when no spoiler exists +// statusView.contentTextView.isHidden = false +// return +// } +// +// statusView.contentTextView.isHidden = !isContentReveal +// self.contentRevealChangePublisher.send() +// } +// .store(in: &disposeBag) +// $source +// .sink { source in +// statusView.metricsDashboardView.sourceLabel.text = source ?? "" +// } +// .store(in: &disposeBag) +// // dashboard +// Publishers.CombineLatest4( +// $replyCount, +// $reblogCount, +// $quoteCount, +// $favoriteCount +// ) +// .sink { replyCount, reblogCount, quoteCount, favoriteCount in +// switch statusView.style { +// case .plain: +// statusView.setMetricsDisplay() +// +// statusView.metricsDashboardView.setupReply(count: replyCount) +// statusView.metricsDashboardView.setupRepost(count: reblogCount) +// statusView.metricsDashboardView.setupQuote(count: quoteCount) +// statusView.metricsDashboardView.setupLike(count: favoriteCount) +// +// let needsDashboardDisplay = replyCount > 0 || reblogCount > 0 || quoteCount > 0 || favoriteCount > 0 +// statusView.metricsDashboardView.dashboardContainer.isHidden = !needsDashboardDisplay +// default: +// break +// } +// } +// .store(in: &disposeBag) + } + + private func bindMedia(statusView: StatusView) { + $mediaViewConfigurations + .sink { [weak self] configurations in + guard let self = self else { return } + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): configure media") + + let maxSize = CGSize( + width: statusView.contentMaxLayoutWidth, + height: 9999 // fulfill the width + ) + var needsDisplay = true + switch configurations.count { + case 0: + needsDisplay = false + case 1: + let configuration = configurations[0] + let adaptiveLayout = MediaGridContainerView.AdaptiveLayout( + aspectRatio: configuration.aspectRadio, + maxSize: maxSize + ) + let mediaView = statusView.mediaGridContainerView.dequeueMediaView(adaptiveLayout: adaptiveLayout) + mediaView.setup(configuration: configuration) + default: + let gridLayout = MediaGridContainerView.GridLayout( + count: configurations.count, + maxSize: maxSize + ) + let mediaViews = statusView.mediaGridContainerView.dequeueMediaView(gridLayout: gridLayout) + for (i, (configuration, mediaView)) in zip(configurations, mediaViews).enumerated() { + guard i < MediaGridContainerView.maxCount else { break } + mediaView.setup(configuration: configuration) + } + } + if needsDisplay { + statusView.setMediaDisplay() + } + } + .store(in: &disposeBag) + + // FIXME: + statusView.mediaGridContainerView.viewModel.isContentWarningOverlayDisplay = false +// $isMediaReveal +// .sink { isMediaReveal in +// statusView.mediaGridContainerView.viewModel.isContentWarningOverlayDisplay = isMediaReveal +// } +// .store(in: &disposeBag) +// $isMediaSensitiveSwitchable +// .sink { isMediaSensitiveSwitchable in +// statusView.mediaGridContainerView.viewModel.isSensitiveToggleButtonDisplay = isMediaSensitiveSwitchable +// } +// .store(in: &disposeBag) + } + + private func bindPoll(statusView: StatusView) { + $pollItems + .sink { items in + guard !items.isEmpty else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + snapshot.appendItems(items, toSection: .main) + if #available(iOS 15.0, *) { + statusView.pollTableViewDiffableDataSource?.applySnapshotUsingReloadData(snapshot) + } else { + // Fallback on earlier versions + statusView.pollTableViewDiffableDataSource?.apply(snapshot, animatingDifferences: false) + } + + statusView.pollTableViewHeightLayoutConstraint.constant = CGFloat(items.count) * PollOptionTableViewCell.height + statusView.setPollDisplay() + } + .store(in: &disposeBag) + $isVotable + .sink { isVotable in + statusView.pollTableView.allowsSelection = isVotable + } + .store(in: &disposeBag) + // poll + let pollVoteDescription = Publishers.CombineLatest( + $voterCount, + $voteCount + ) + .map { voterCount, voteCount -> String in + var description = "" + if let voterCount = voterCount { + description += L10n.Plural.Count.voter(voterCount) + } else { + description += L10n.Plural.Count.vote(voteCount) + } + return description + } + let pollCountdownDescription = Publishers.CombineLatest3( + $expireAt, + $expired, + timestampUpdatePublisher.prepend(Date()).eraseToAnyPublisher() + ) + .map { expireAt, expired, _ -> String? in + guard !expired else { + return L10n.Common.Controls.Status.Poll.closed + } + + guard let expireAt = expireAt else { + return nil + } + let timeLeft = expireAt.localizedTimeLeft() + + return timeLeft + } + Publishers.CombineLatest( + pollVoteDescription, + pollCountdownDescription + ) + .sink { pollVoteDescription, pollCountdownDescription in + statusView.pollVoteCountLabel.text = pollVoteDescription ?? "-" + statusView.pollCountdownLabel.text = pollCountdownDescription ?? "-" + } + .store(in: &disposeBag) + Publishers.CombineLatest( + $isVotable, + $isVoting + ) + .sink { isVotable, isVoting in + guard isVotable else { + statusView.pollVoteButton.isHidden = true + statusView.pollVoteActivityIndicatorView.isHidden = true + return + } + + statusView.pollVoteButton.isHidden = isVoting + statusView.pollVoteActivityIndicatorView.isHidden = !isVoting + statusView.pollVoteActivityIndicatorView.startAnimating() + } + .store(in: &disposeBag) + $isVoteButtonEnabled + .assign(to: \.isEnabled, on: statusView.pollVoteButton) + .store(in: &disposeBag) + } + + private func bindToolbar(statusView: StatusView) { + $replyCount + .sink { count in + statusView.actionToolbarContainer.configureReply( + count: count, + isEnabled: true + ) + } + .store(in: &disposeBag) + Publishers.CombineLatest3( + $reblogCount, + $isReblog, + $isReblogEnabled + ) + .sink { count, isHighlighted, isEnabled in + statusView.actionToolbarContainer.configureReblog( + count: count, + isEnabled: isEnabled, + isHighlighted: isHighlighted + ) + } + .store(in: &disposeBag) + Publishers.CombineLatest( + $favoriteCount, + $isFavorite + ) + .sink { count, isHighlighted in + statusView.actionToolbarContainer.configureFavorite( + count: count, + isEnabled: true, + isHighlighted: isHighlighted + ) + } + .store(in: &disposeBag) + } + + private func bindMetric(statusView: StatusView) { + let reblogButtonTitle = $reblogCount.map { count in + L10n.Plural.Count.reblog(count) + }.share() + + let favoriteButtonTitle = $favoriteCount.map { count in + L10n.Plural.Count.favorite(count) + }.share() + + + let metricButtonTitleLength = Publishers.CombineLatest( + reblogButtonTitle, + favoriteButtonTitle + ).map { $0.count + $1.count } + + Publishers.CombineLatest( + $timestamp, + metricButtonTitleLength + ) + .sink { timestamp, metricButtonTitleLength in + let text: String = { + guard let timestamp = timestamp else { return " " } + + let formatter = DateFormatter() + + // make adaptive UI + if UIView.isZoomedMode || metricButtonTitleLength > 20 { + formatter.dateStyle = .short + formatter.timeStyle = .short + } else { + formatter.dateStyle = .medium + formatter.timeStyle = .short + } + return formatter.string(from: timestamp) + }() + + statusView.statusMetricView.dateLabel.text = text + } + .store(in: &disposeBag) + + reblogButtonTitle + .sink { title in + statusView.statusMetricView.reblogButton.setTitle(title, for: .normal) + } + .store(in: &disposeBag) + + favoriteButtonTitle + .sink { title in + statusView.statusMetricView.favoriteButton.setTitle(title, for: .normal) + } + .store(in: &disposeBag) + } + + private func bindMenu(statusView: StatusView) { + Publishers.CombineLatest4( + $authorName, + $isMuting, + $isBlocking, + $isMyself + ) + .sink { authorName, isMuting, isBlocking, isMyself in + guard let name = authorName?.string else { + statusView.menuButton.menu = nil + return + } + + let menuContext = StatusView.AuthorMenuContext( + name: name, + isMuting: isMuting, + isBlocking: isBlocking, + isMyself: isMyself + ) + statusView.menuButton.menu = statusView.setupAuthorMenu(menuContext: menuContext) + statusView.menuButton.showsMenuAsPrimaryAction = true + } + .store(in: &disposeBag) + } + +} + + diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift new file mode 100644 index 000000000..d6f9106bd --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -0,0 +1,694 @@ +// +// StatusView.swift +// +// +// Created by MainasuK on 2022-1-10. +// + +import os.log +import UIKit +import Combine +import MetaTextKit +import Meta +import MastodonAsset +import MastodonLocalization + +public protocol StatusViewDelegate: AnyObject { + func statusView(_ statusView: StatusView, headerDidPressed header: UIView) + func statusView(_ statusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) + func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) + func statusView(_ statusView: StatusView, pollTableView tableView: UITableView, didSelectRowAt indexPath: IndexPath) + func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) + func statusView(_ statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) + func statusView(_ statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) +// func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) +// func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) +// func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) +} + +public final class StatusView: UIView { + + public static let containerLayoutMargin = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16) + + let logger = Logger(subsystem: "StatusView", category: "View") + + private var _disposeBag = Set() // which lifetime same to view scope + public var disposeBag = Set() + + public weak var delegate: StatusViewDelegate? + + public private(set) var style: Style? + + public private(set) lazy var viewModel: ViewModel = { + let viewModel = ViewModel() + viewModel.bind(statusView: self) + return viewModel + }() + + let containerStackView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .vertical + stackView.spacing = 10 + return stackView + }() + + // header + let headerContainerView = UIView() + + // header icon + let headerIconImageView: UIImageView = { + let imageView = UIImageView() + imageView.tintColor = Asset.Colors.Label.secondary.color + imageView.contentMode = .scaleAspectFill + return imageView + }() + + // header info + let headerInfoLabel = MetaLabel(style: .statusHeader) + + // author + let authorContainerView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .horizontal + stackView.spacing = 12 + return stackView + }() + + // avatar + public let avatarButton = AvatarButton() + + // author name + public let authorNameLabel = MetaLabel(style: .statusName) + + // author username + public let authorUsernameLabel = MetaLabel(style: .statusUsername) + + public let usernameTrialingDotLabel: MetaLabel = { + let label = MetaLabel(style: .statusUsername) + label.configure(content: PlaintextMetaContent(string: "·")) + return label + }() + + // timestamp + public let dateLabel = MetaLabel(style: .statusUsername) + + public let menuButton: UIButton = { + let button = HitTestExpandedButton(type: .system) + let image = UIImage(systemName: "ellipsis", withConfiguration: UIImage.SymbolConfiguration(font: .systemFont(ofSize: 15))) + button.setImage(image, for: .normal) + return button + }() + + // content + let contentContainer = UIStackView() + public let contentMetaText: MetaText = { + let metaText = MetaText() + metaText.textView.backgroundColor = .clear + metaText.textView.isEditable = false + metaText.textView.isSelectable = false + metaText.textView.isScrollEnabled = false + metaText.textView.textContainer.lineFragmentPadding = 0 + metaText.textView.textContainerInset = .zero + metaText.textView.layer.masksToBounds = false + metaText.textView.textDragInteraction?.isEnabled = false // disable drag for link and attachment + + metaText.paragraphStyle = { + let style = NSMutableParagraphStyle() + style.lineSpacing = 5 + style.paragraphSpacing = 8 + style.alignment = .natural + return style + }() + metaText.textAttributes = [ + .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 15, weight: .regular)), + .foregroundColor: Asset.Colors.Label.primary.color, + ] + metaText.linkAttributes = [ + .font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)), + .foregroundColor: Asset.Colors.brandBlue.color, + ] + return metaText + }() + + // media + public let mediaContainerView = UIView() + public let mediaGridContainerView = MediaGridContainerView() + + // poll + public let pollContainerView = UIStackView() + public let pollTableView: UITableView = { + let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) + tableView.register(PollOptionTableViewCell.self, forCellReuseIdentifier: String(describing: PollOptionTableViewCell.self)) + tableView.isScrollEnabled = false + tableView.estimatedRowHeight = 36 + tableView.tableFooterView = UIView() + tableView.backgroundColor = .clear + tableView.separatorStyle = .none + return tableView + }() + public var pollTableViewHeightLayoutConstraint: NSLayoutConstraint! + public var pollTableViewDiffableDataSource: UITableViewDiffableDataSource? + + let pollStatusStackView = UIStackView() + let pollVoteCountLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) + label.textColor = Asset.Colors.Label.secondary.color + label.text = L10n.Plural.Count.vote(0) + return label + }() + let pollStatusDotLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) + label.textColor = Asset.Colors.Label.secondary.color + label.text = " · " + return label + }() + let pollCountdownLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) + label.textColor = Asset.Colors.Label.secondary.color + label.text = "1 day left" + return label + }() + let pollVoteButton: UIButton = { + let button = HitTestExpandedButton() + button.titleLabel?.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 14, weight: .semibold)) + button.setTitle(L10n.Common.Controls.Status.Poll.vote, for: .normal) + button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) + button.setTitleColor(Asset.Colors.brandBlue.color.withAlphaComponent(0.8), for: .highlighted) + button.setTitleColor(Asset.Colors.Button.disabled.color, for: .disabled) + button.isEnabled = false + return button + }() + let pollVoteActivityIndicatorView: UIActivityIndicatorView = { + let indicatorView = UIActivityIndicatorView(style: .medium) + indicatorView.hidesWhenStopped = true + indicatorView.stopAnimating() + return indicatorView + }() + + // toolbar + public let actionToolbarContainer = ActionToolbarContainer() + + // metric + public let statusMetricView = StatusMetricView() + + public func prepareForReuse() { + disposeBag.removeAll() + + viewModel.objects.removeAll() + viewModel.authorAvatarImageURL = nil + + avatarButton.avatarImageView.cancelTask() + mediaGridContainerView.prepareForReuse() + if var snapshot = pollTableViewDiffableDataSource?.snapshot() { + snapshot.deleteAllItems() + if #available(iOS 15.0, *) { + pollTableViewDiffableDataSource?.applySnapshotUsingReloadData(snapshot) + } else { + // Fallback on earlier versions + pollTableViewDiffableDataSource?.apply(snapshot, animatingDifferences: false) + } + } + + headerContainerView.isHidden = true + mediaContainerView.isHidden = true + pollContainerView.isHidden = true + } + + public override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension StatusView { + private func _init() { + // container + containerStackView.translatesAutoresizingMaskIntoConstraints = false + addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), + containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor), + ]) + + // header + headerIconImageView.isUserInteractionEnabled = false + headerInfoLabel.isUserInteractionEnabled = false + let headerTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer + headerTapGestureRecognizer.addTarget(self, action: #selector(StatusView.headerDidPressed(_:))) + headerContainerView.addGestureRecognizer(headerTapGestureRecognizer) + + // avatar button + avatarButton.addTarget(self, action: #selector(StatusView.authorAvatarButtonDidPressed(_:)), for: .touchUpInside) + authorNameLabel.isUserInteractionEnabled = false + authorUsernameLabel.isUserInteractionEnabled = false + + // dateLabel + dateLabel.isUserInteractionEnabled = false + + // content + contentMetaText.textView.delegate = self + contentMetaText.textView.linkDelegate = self + + // media + mediaGridContainerView.delegate = self + + // poll + pollTableView.translatesAutoresizingMaskIntoConstraints = false + pollTableViewHeightLayoutConstraint = pollTableView.heightAnchor.constraint(equalToConstant: 44.0).priority(.required - 1) + NSLayoutConstraint.activate([ + pollTableViewHeightLayoutConstraint, + ]) + pollTableView.delegate = self + pollVoteButton.addTarget(self, action: #selector(StatusView.pollVoteButtonDidPressed(_:)), for: .touchUpInside) + + // toolbar + actionToolbarContainer.delegate = self + } +} + +extension StatusView { + + @objc private func headerDidPressed(_ sender: UITapGestureRecognizer) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + assert(sender.view === headerContainerView) + delegate?.statusView(self, headerDidPressed: headerContainerView) + } + + @objc private func authorAvatarButtonDidPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.statusView(self, authorAvatarButtonDidPressed: avatarButton) + } + + @objc private func pollVoteButtonDidPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.statusView(self, pollVoteButtonPressed: pollVoteButton) + } + +} + +extension StatusView { + + public func setup(style: Style) { + guard self.style == nil else { + assertionFailure("Should only setup once") + return + } + self.style = style + style.layout(statusView: self) + prepareForReuse() + } + + public enum Style { + case inline + case plain + case notification + case notificationQuote + case composeStatusReplica + case composeStatusAuthor + } +} + +extension StatusView.Style { + + func layout(statusView: StatusView) { + switch self { + case .inline: inline(statusView: statusView) + case .plain: plain(statusView: statusView) + case .notification: notification(statusView: statusView) + case .notificationQuote: notificationQuote(statusView: statusView) + case .composeStatusReplica: composeStatusReplica(statusView: statusView) + case .composeStatusAuthor: composeStatusAuthor(statusView: statusView) + } + } + + func inline(statusView: StatusView) { + // container: V - [ header container | author container | content container | media container | pollTableView | actionToolbarContainer ] + statusView.containerStackView.layoutMargins = StatusView.containerLayoutMargin + + // header container: H - [ icon | label ] + statusView.headerContainerView.preservesSuperviewLayoutMargins = true + statusView.containerStackView.addArrangedSubview(statusView.headerContainerView) + statusView.headerIconImageView.translatesAutoresizingMaskIntoConstraints = false + statusView.headerInfoLabel.translatesAutoresizingMaskIntoConstraints = false + statusView.headerContainerView.addSubview(statusView.headerIconImageView) + statusView.headerContainerView.addSubview(statusView.headerInfoLabel) + NSLayoutConstraint.activate([ + statusView.headerIconImageView.leadingAnchor.constraint(equalTo: statusView.headerContainerView.layoutMarginsGuide.leadingAnchor), + statusView.headerIconImageView.heightAnchor.constraint(equalTo: statusView.headerInfoLabel.heightAnchor, multiplier: 1.0).priority(.required - 1), + statusView.headerIconImageView.widthAnchor.constraint(equalTo: statusView.headerIconImageView.heightAnchor, multiplier: 1.0).priority(.required - 1), + statusView.headerInfoLabel.topAnchor.constraint(equalTo: statusView.headerContainerView.topAnchor), + statusView.headerInfoLabel.leadingAnchor.constraint(equalTo: statusView.headerIconImageView.trailingAnchor, constant: 6), + statusView.headerInfoLabel.trailingAnchor.constraint(equalTo: statusView.headerContainerView.layoutMarginsGuide.trailingAnchor), + statusView.headerInfoLabel.bottomAnchor.constraint(equalTo: statusView.headerContainerView.bottomAnchor), + statusView.headerInfoLabel.centerYAnchor.constraint(equalTo: statusView.headerIconImageView.centerYAnchor), + ]) + statusView.headerInfoLabel.setContentHuggingPriority(.required, for: .vertical) + statusView.headerIconImageView.setContentHuggingPriority(.defaultLow, for: .vertical) + statusView.headerIconImageView.setContentHuggingPriority(.defaultLow, for: .horizontal) + statusView.headerIconImageView.setContentCompressionResistancePriority(.defaultLow, for: .vertical) + statusView.headerIconImageView.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) + + // author container: H - [ avatarButton | author meta container ] + statusView.authorContainerView.preservesSuperviewLayoutMargins = true + statusView.authorContainerView.isLayoutMarginsRelativeArrangement = true + statusView.containerStackView.addArrangedSubview(statusView.authorContainerView) + UIContentSizeCategory.publisher + .sink { category in + statusView.authorContainerView.axis = category > .accessibilityLarge ? .vertical : .horizontal + statusView.authorContainerView.alignment = category > .accessibilityLarge ? .leading : .center + } + .store(in: &statusView._disposeBag) + + // avatarButton + let authorAvatarButtonSize = CGSize(width: 46, height: 46) + statusView.avatarButton.size = authorAvatarButtonSize + statusView.avatarButton.avatarImageView.imageViewSize = authorAvatarButtonSize + statusView.avatarButton.translatesAutoresizingMaskIntoConstraints = false + statusView.authorContainerView.addArrangedSubview(statusView.avatarButton) + NSLayoutConstraint.activate([ + statusView.avatarButton.widthAnchor.constraint(equalToConstant: authorAvatarButtonSize.width).priority(.required - 1), + statusView.avatarButton.heightAnchor.constraint(equalToConstant: authorAvatarButtonSize.height).priority(.required - 1), + ]) + statusView.avatarButton.setContentHuggingPriority(.required - 1, for: .vertical) + statusView.avatarButton.setContentCompressionResistancePriority(.required - 1, for: .vertical) + + // authrMetaContainer: V - [ authorPrimaryMetaContainer | authorSecondaryMetaContainer ] + let authorMetaContainer = UIStackView() + authorMetaContainer.axis = .vertical + authorMetaContainer.spacing = 4 + statusView.authorContainerView.addArrangedSubview(authorMetaContainer) + + // authorPrimaryMetaContainer: H - [ authorNameLabel | (padding) | menuButton ] + let authorPrimaryMetaContainer = UIStackView() + authorPrimaryMetaContainer.axis = .horizontal + authorMetaContainer.addArrangedSubview(authorPrimaryMetaContainer) + + // authorNameLabel + authorPrimaryMetaContainer.addArrangedSubview(statusView.authorNameLabel) + authorPrimaryMetaContainer.addArrangedSubview(UIView()) + // menuButton + authorPrimaryMetaContainer.addArrangedSubview(statusView.menuButton) + + // authorSecondaryMetaContainer: H - [ authorUsername | usernameTrialingDotLabel | dateLabel | (padding) ] + let authorSecondaryMetaContainer = UIStackView() + authorSecondaryMetaContainer.axis = .horizontal + authorSecondaryMetaContainer.spacing = 4 + authorMetaContainer.addArrangedSubview(authorSecondaryMetaContainer) + + authorSecondaryMetaContainer.addArrangedSubview(statusView.authorUsernameLabel) + statusView.authorUsernameLabel.setContentHuggingPriority(.required - 8, for: .horizontal) + statusView.authorUsernameLabel.setContentCompressionResistancePriority(.required - 8, for: .horizontal) + authorSecondaryMetaContainer.addArrangedSubview(statusView.usernameTrialingDotLabel) + statusView.usernameTrialingDotLabel.setContentHuggingPriority(.required - 2, for: .horizontal) + statusView.usernameTrialingDotLabel.setContentCompressionResistancePriority(.required - 2, for: .horizontal) + authorSecondaryMetaContainer.addArrangedSubview(statusView.dateLabel) + statusView.dateLabel.setContentHuggingPriority(.required - 1, for: .horizontal) + statusView.dateLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) + authorSecondaryMetaContainer.addArrangedSubview(UIView()) + + // content container: V - [ contentMetaText | ] + statusView.contentContainer.axis = .vertical + statusView.contentContainer.spacing = 12 + statusView.contentContainer.distribution = .fill + statusView.contentContainer.alignment = .top + + statusView.contentContainer.preservesSuperviewLayoutMargins = true + statusView.contentContainer.isLayoutMarginsRelativeArrangement = true + statusView.containerStackView.addArrangedSubview(statusView.contentContainer) + statusView.contentContainer.setContentHuggingPriority(.required - 1, for: .vertical) + statusView.contentContainer.setContentCompressionResistancePriority(.required - 1, for: .vertical) + + // status + statusView.contentContainer.addArrangedSubview(statusView.contentMetaText.textView) + statusView.contentMetaText.textView.setContentHuggingPriority(.required - 1, for: .vertical) + statusView.contentMetaText.textView.setContentCompressionResistancePriority(.required - 1, for: .vertical) + + // media container: V - [ mediaGridContainerView ] + statusView.containerStackView.addArrangedSubview(statusView.mediaContainerView) + + statusView.mediaGridContainerView.translatesAutoresizingMaskIntoConstraints = false + statusView.mediaContainerView.addSubview(statusView.mediaGridContainerView) + NSLayoutConstraint.activate([ + statusView.mediaGridContainerView.topAnchor.constraint(equalTo: statusView.mediaContainerView.topAnchor), + statusView.mediaGridContainerView.leadingAnchor.constraint(equalTo: statusView.mediaContainerView.leadingAnchor), + statusView.mediaGridContainerView.trailingAnchor.constraint(equalTo: statusView.mediaContainerView.trailingAnchor), + statusView.mediaGridContainerView.bottomAnchor.constraint(equalTo: statusView.mediaContainerView.bottomAnchor), + ]) + + // pollContainerView: V - [ pollTableView | pollStatusStackView ] + statusView.pollContainerView.axis = .vertical + statusView.pollContainerView.preservesSuperviewLayoutMargins = true + statusView.pollContainerView.isLayoutMarginsRelativeArrangement = true + statusView.containerStackView.addArrangedSubview(statusView.pollContainerView) + + // pollTableView + statusView.pollContainerView.addArrangedSubview(statusView.pollTableView) + + // pollStatusStackView + statusView.pollStatusStackView.axis = .horizontal + statusView.pollContainerView.addArrangedSubview(statusView.pollStatusStackView) + + statusView.pollStatusStackView.addArrangedSubview(statusView.pollVoteCountLabel) + statusView.pollStatusStackView.addArrangedSubview(statusView.pollStatusDotLabel) + statusView.pollStatusStackView.addArrangedSubview(statusView.pollCountdownLabel) + statusView.pollStatusStackView.addArrangedSubview(statusView.pollVoteButton) + statusView.pollStatusStackView.addArrangedSubview(statusView.pollVoteActivityIndicatorView) + statusView.pollVoteCountLabel.setContentHuggingPriority(.defaultHigh + 2, for: .horizontal) + statusView.pollStatusDotLabel.setContentHuggingPriority(.defaultHigh + 1, for: .horizontal) + statusView.pollCountdownLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) + statusView.pollVoteButton.setContentHuggingPriority(.defaultHigh + 3, for: .horizontal) + + // action toolbar + statusView.actionToolbarContainer.configure(for: .inline) + statusView.actionToolbarContainer.preservesSuperviewLayoutMargins = true + statusView.containerStackView.addArrangedSubview(statusView.actionToolbarContainer) + } + + func plain(statusView: StatusView) { + // container: V - [ … | statusMetricView ] + inline(statusView: statusView) // override the inline style + + // statusMetricView + statusView.statusMetricView.layoutMargins = StatusView.containerLayoutMargin + statusView.containerStackView.addArrangedSubview(statusView.statusMetricView) + UIContentSizeCategory.publisher + .sink { category in + statusView.statusMetricView.containerStackView.axis = category > .accessibilityLarge ? .vertical : .horizontal + statusView.statusMetricView.containerStackView.alignment = category > .accessibilityLarge ? .leading : .fill + } + .store(in: &statusView._disposeBag) + } + + func notification(statusView: StatusView) { + inline(statusView: statusView) // override the inline style + + statusView.headerContainerView.removeFromSuperview() + statusView.authorContainerView.removeFromSuperview() + } + + func notificationQuote(statusView: StatusView) { + inline(statusView: statusView) // override the inline style + + statusView.contentContainer.layoutMargins.bottom = 16 // fix contentText align to edge issue + statusView.menuButton.removeFromSuperview() + statusView.actionToolbarContainer.removeFromSuperview() + } + + func composeStatusReplica(statusView: StatusView) { + inline(statusView: statusView) + + statusView.avatarButton.isUserInteractionEnabled = false + statusView.menuButton.removeFromSuperview() + statusView.actionToolbarContainer.removeFromSuperview() + } + + func composeStatusAuthor(statusView: StatusView) { + inline(statusView: statusView) + + statusView.avatarButton.isUserInteractionEnabled = false + statusView.menuButton.removeFromSuperview() + statusView.usernameTrialingDotLabel.removeFromSuperview() + statusView.dateLabel.removeFromSuperview() + statusView.contentContainer.removeFromSuperview() + statusView.mediaContainerView.removeFromSuperview() + statusView.pollContainerView.removeFromSuperview() + statusView.actionToolbarContainer.removeFromSuperview() + } + +} + +extension StatusView { + func setHeaderDisplay() { + headerContainerView.isHidden = false + } + + func setMediaDisplay() { + mediaContainerView.isHidden = false + } + + func setPollDisplay() { + pollContainerView.isHidden = false + } + + // content text Width + public var contentMaxLayoutWidth: CGFloat { + let inset = contentLayoutInset + return frame.width - inset.left - inset.right + } + + public var contentLayoutInset: UIEdgeInsets { + // TODO: adaptive iPad regular horizontal size class + return .zero + } +} + +extension StatusView { + + public struct AuthorMenuContext { + public let name: String + + public let isMuting: Bool + public let isBlocking: Bool + public let isMyself: Bool + } + + public func setupAuthorMenu(menuContext: AuthorMenuContext) -> UIMenu { + var actions: [MastodonMenu.Action] = [] + + actions = [ + .muteUser(.init( + name: menuContext.name, + isMuting: menuContext.isMuting + )), + .blockUser(.init( + name: menuContext.name, + isBlocking: menuContext.isBlocking + )), + .reportUser( + .init(name: menuContext.name) + ), + ] + + if menuContext.isMyself { + actions.append(.deleteStatus) + } + + + let menu = MastodonMenu.setupMenu( + actions: actions, + delegate: self + ) + + return menu + } + +} + +// MARK: - UITextViewDelegate +extension StatusView: UITextViewDelegate { + + public func textView(_ textView: UITextView, shouldInteractWith textAttachment: NSTextAttachment, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { + switch textView { + case contentMetaText.textView: + return false + default: + assertionFailure() + return true + } + } + + public func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { + switch textView { + case contentMetaText.textView: + return false + default: + assertionFailure() + return true + } + } +} + +// MARK: - MetaTextViewDelegate +extension StatusView: MetaTextViewDelegate { + public func metaTextView(_ metaTextView: MetaTextView, didSelectMeta meta: Meta) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + switch metaTextView { + case contentMetaText.textView: + delegate?.statusView(self, metaText: contentMetaText, didSelectMeta: meta) + default: + assertionFailure() + break + } + } +} + +// MARK: - MediaGridContainerViewDelegate +extension StatusView: MediaGridContainerViewDelegate { + public func mediaGridContainerView(_ container: MediaGridContainerView, didTapMediaView mediaView: MediaView, at index: Int) { + delegate?.statusView(self, mediaGridContainerView: container, mediaView: mediaView, didSelectMediaViewAt: index) + } + + public func mediaGridContainerView(_ container: MediaGridContainerView, toggleContentWarningOverlayViewDisplay contentWarningOverlayView: ContentWarningOverlayView) { + fatalError() + } +} + +// MARK: - UITableViewDelegate +extension StatusView: UITableViewDelegate { + public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): select \(indexPath.debugDescription)") + + switch tableView { + case pollTableView: + delegate?.statusView(self, pollTableView: tableView, didSelectRowAt: indexPath) + default: + assertionFailure() + } + } +} + +// MARK: ActionToolbarContainerDelegate +extension StatusView: ActionToolbarContainerDelegate { + public func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) { + delegate?.statusView(self, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action) + } +} + +// MARK: - MastodonMenuDelegate +extension StatusView: MastodonMenuDelegate { + public func menuAction(_ action: MastodonMenu.Action) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.statusView(self, menuButton: menuButton, didSelectAction: action) + } +} + +#if DEBUG +import SwiftUI + +struct StatusView_Preview: PreviewProvider { + static var previews: some View { + UIViewPreview { + let statusView = StatusView() + statusView.setup(style: .inline) + configureStub(statusView: statusView) + return statusView + } + } + + static func configureStub(statusView: StatusView) { + // statusView.viewModel + } +} +#endif diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/UserView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/UserView+ViewModel.swift new file mode 100644 index 000000000..0a970e884 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/UserView+ViewModel.swift @@ -0,0 +1,65 @@ +// +// UserView+ViewModel.swift +// +// +// Created by MainasuK on 2022-1-19. +// + +import os.log +import UIKit +import Combine +import MetaTextKit + +extension UserView { + public final class ViewModel: ObservableObject { + public var disposeBag = Set() + public var observations = Set() + + let logger = Logger(subsystem: "StatusView", category: "ViewModel") + + @Published public var authorAvatarImage: UIImage? + @Published public var authorAvatarImageURL: URL? + @Published public var authorName: MetaContent? + @Published public var authorUsername: String? + } +} + +extension UserView.ViewModel { + func bind(userView: UserView) { + // avatar + Publishers.CombineLatest( + $authorAvatarImage, + $authorAvatarImageURL + ) + .sink { image, url in + let configuration: AvatarImageView.Configuration = { + if let image = image { + return AvatarImageView.Configuration(image: image) + } else { + return AvatarImageView.Configuration(url: url) + } + }() + userView.avatarButton.avatarImageView.configure(configuration: configuration) + userView.avatarButton.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 7))) + } + .store(in: &disposeBag) + // name + $authorName + .sink { metaContent in + let metaContent = metaContent ?? PlaintextMetaContent(string: " ") + userView.authorNameLabel.configure(content: metaContent) + } + .store(in: &disposeBag) + // username + $authorUsername + .map { text -> String in + guard let text = text else { return "" } + return "@\(text)" + } + .sink { username in + let metaContent = PlaintextMetaContent(string: username) + userView.authorUsernameLabel.configure(content: metaContent) + } + .store(in: &disposeBag) + } +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/UserView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/UserView.swift new file mode 100644 index 000000000..cb066abfd --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Content/UserView.swift @@ -0,0 +1,100 @@ +// +// UserView.swift +// +// +// Created by MainasuK on 2022-1-19. +// + +import UIKit +import Combine +import MetaTextKit + +public final class UserView: UIView { + + public var disposeBag = Set() + + public private(set) lazy var viewModel: ViewModel = { + let viewModel = ViewModel() + viewModel.bind(userView: self) + return viewModel + }() + + public let containerStackView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .horizontal + stackView.alignment = .center + stackView.spacing = 12 + stackView.layoutMargins = UIEdgeInsets(top: 12, left: 0, bottom: 12, right: 0) + stackView.isLayoutMarginsRelativeArrangement = true + return stackView + }() + + // avatar + public let avatarButton = AvatarButton() + + // author name + public let authorNameLabel = MetaLabel(style: .statusName) + + // author username + public let authorUsernameLabel = MetaLabel(style: .statusUsername) + + public func prepareForReuse() { + disposeBag.removeAll() + + // viewModel.objects.removeAll() + viewModel.authorAvatarImageURL = nil + + avatarButton.avatarImageView.cancelTask() + } + + public override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + + +extension UserView { + + private func _init() { + // container + containerStackView.translatesAutoresizingMaskIntoConstraints = false + addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), + containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor) + ]) + + avatarButton.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(avatarButton) + NSLayoutConstraint.activate([ + avatarButton.widthAnchor.constraint(equalToConstant: 28).priority(.required - 1), + avatarButton.heightAnchor.constraint(equalToConstant: 28).priority(.required - 1), + ]) + avatarButton.setContentHuggingPriority(.defaultLow, for: .vertical) + avatarButton.setContentHuggingPriority(.defaultLow, for: .horizontal) + + // label container + let labelStackView = UIStackView() + labelStackView.axis = .vertical + containerStackView.addArrangedSubview(labelStackView) + + labelStackView.addArrangedSubview(authorNameLabel) + labelStackView.addArrangedSubview(authorUsernameLabel) + authorNameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) + authorUsernameLabel.setContentCompressionResistancePriority(.required - 1, for: .vertical) + + avatarButton.isUserInteractionEnabled = false + authorNameLabel.isUserInteractionEnabled = false + authorUsernameLabel.isUserInteractionEnabled = false + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift new file mode 100644 index 000000000..b126e8c7d --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift @@ -0,0 +1,279 @@ +// +// ActionToolBarContainer.swift +// Mastodon +// +// Created by sxiaojian on 2021/2/1. +// + +import os.log +import UIKit +import MastodonAsset +import MastodonLocalization + +public protocol ActionToolbarContainerDelegate: AnyObject { + func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) +} + +public final class ActionToolbarContainer: UIView { + + let logger = Logger(subsystem: "ActionToolbarContainer", category: "Control") + + static let replyImage = UIImage(systemName: "bubble.left", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) + static let reblogImage = UIImage(systemName: "arrow.2.squarepath", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) + static let starImage = UIImage(systemName: "star", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) + static let starFillImage = UIImage(systemName: "star.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) + static let shareImage = UIImage(systemName: "square.and.arrow.up", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) + + public let replyButton = HighlightDimmableButton() + public let reblogButton = HighlightDimmableButton() + public let favoriteButton = HighlightDimmableButton() + public let shareButton = HighlightDimmableButton() + + public weak var delegate: ActionToolbarContainerDelegate? + + private let container = UIStackView() + private var style: Style? + + public override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ActionToolbarContainer { + + private func _init() { + container.preservesSuperviewLayoutMargins = true + container.isLayoutMarginsRelativeArrangement = true + + container.translatesAutoresizingMaskIntoConstraints = false + addSubview(container) + NSLayoutConstraint.activate([ + container.topAnchor.constraint(equalTo: topAnchor), + container.leadingAnchor.constraint(equalTo: leadingAnchor), + trailingAnchor.constraint(equalTo: container.trailingAnchor), + bottomAnchor.constraint(equalTo: container.bottomAnchor), + ]) + + replyButton.addTarget(self, action: #selector(ActionToolbarContainer.buttonDidPressed(_:)), for: .touchUpInside) + reblogButton.addTarget(self, action: #selector(ActionToolbarContainer.buttonDidPressed(_:)), for: .touchUpInside) + favoriteButton.addTarget(self, action: #selector(ActionToolbarContainer.buttonDidPressed(_:)), for: .touchUpInside) + shareButton.addTarget(self, action: #selector(ActionToolbarContainer.buttonDidPressed(_:)), for: .touchUpInside) + } + + public func configure(for style: Style) { + guard needsConfigure(for: style) else { + return + } + + self.style = style + container.arrangedSubviews.forEach { subview in + container.removeArrangedSubview(subview) + subview.removeFromSuperview() + } + + let buttons = [replyButton, reblogButton, favoriteButton, shareButton] + buttons.forEach { button in + button.tintColor = Asset.Colors.Button.actionToolbar.color + button.titleLabel?.font = .monospacedDigitSystemFont(ofSize: 12, weight: .regular) + button.setTitle("", for: .normal) + button.setTitleColor(.secondaryLabel, for: .normal) + button.expandEdgeInsets = UIEdgeInsets(top: -10, left: -10, bottom: -10, right: -10) + button.setInsets(forContentPadding: .zero, imageTitlePadding: style.buttonTitleImagePadding) + } + // add more expand for menu button + shareButton.expandEdgeInsets = UIEdgeInsets(top: -10, left: -20, bottom: -10, right: -20) + + replyButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.reply + reblogButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.reblog // needs update to follow state + favoriteButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.favorite // needs update to follow state + shareButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.menu + + switch style { + case .inline: + buttons.forEach { button in + button.contentHorizontalAlignment = .leading + } + replyButton.setImage(ActionToolbarContainer.replyImage, for: .normal) + reblogButton.setImage(ActionToolbarContainer.reblogImage, for: .normal) + favoriteButton.setImage(ActionToolbarContainer.starImage, for: .normal) + shareButton.setImage(ActionToolbarContainer.shareImage, for: .normal) + + container.axis = .horizontal + container.distribution = .fill + + replyButton.translatesAutoresizingMaskIntoConstraints = false + reblogButton.translatesAutoresizingMaskIntoConstraints = false + favoriteButton.translatesAutoresizingMaskIntoConstraints = false + shareButton.translatesAutoresizingMaskIntoConstraints = false + container.addArrangedSubview(replyButton) + container.addArrangedSubview(reblogButton) + container.addArrangedSubview(favoriteButton) + container.addArrangedSubview(shareButton) + NSLayoutConstraint.activate([ + replyButton.heightAnchor.constraint(equalToConstant: 44).priority(.defaultHigh), + replyButton.heightAnchor.constraint(equalTo: reblogButton.heightAnchor).priority(.defaultHigh), + replyButton.heightAnchor.constraint(equalTo: favoriteButton.heightAnchor).priority(.defaultHigh), + replyButton.heightAnchor.constraint(equalTo: shareButton.heightAnchor).priority(.defaultHigh), + replyButton.widthAnchor.constraint(equalTo: reblogButton.widthAnchor).priority(.defaultHigh), + replyButton.widthAnchor.constraint(equalTo: favoriteButton.widthAnchor).priority(.defaultHigh), + ]) + shareButton.setContentHuggingPriority(.defaultHigh, for: .horizontal) + shareButton.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal) + + case .plain: + buttons.forEach { button in + button.contentHorizontalAlignment = .center + } + replyButton.setImage(ActionToolbarContainer.replyImage, for: .normal) + reblogButton.setImage(ActionToolbarContainer.reblogImage, for: .normal) + favoriteButton.setImage(ActionToolbarContainer.starImage, for: .normal) + + container.axis = .horizontal + container.spacing = 8 + container.distribution = .fillEqually + + container.addArrangedSubview(replyButton) + container.addArrangedSubview(reblogButton) + container.addArrangedSubview(favoriteButton) + } + } + + private func needsConfigure(for style: Style) -> Bool { + guard let oldStyle = self.style else { return true } + return oldStyle != style + } + +} + +extension ActionToolbarContainer { + + public enum Action: String, CaseIterable { + case reply + case reblog + case like + case share + } + + public enum Style { + case inline + case plain + + var buttonTitleImagePadding: CGFloat { + switch self { + case .inline: return 4.0 + case .plain: return 0 + } + } + } + + private func isReblogButtonHighlightStateDidChange(to isHighlight: Bool) { + let tintColor = isHighlight ? Asset.Colors.successGreen.color : Asset.Colors.Button.actionToolbar.color + reblogButton.tintColor = tintColor + reblogButton.setTitleColor(tintColor, for: .normal) + reblogButton.setTitleColor(tintColor, for: .highlighted) + } + + private func isFavoriteButtonHighlightStateDidChange(to isHighlight: Bool) { + let tintColor = isHighlight ? Asset.Colors.systemOrange.color : Asset.Colors.Button.actionToolbar.color + favoriteButton.tintColor = tintColor + favoriteButton.setTitleColor(tintColor, for: .normal) + favoriteButton.setTitleColor(tintColor, for: .highlighted) + } + +} + +extension ActionToolbarContainer { + + @objc private func buttonDidPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + + let _action: Action? + switch sender { + case replyButton: _action = .reply + case reblogButton: _action = .reblog + case favoriteButton: _action = .like + case shareButton: _action = .share + default: _action = nil + } + + guard let action = _action else { + assertionFailure() + return + } + + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): \(action.rawValue) button pressed") + delegate?.actionToolbarContainer(self, buttonDidPressed: sender, action: action) + } + +} + +extension ActionToolbarContainer { + + public func configureReply(count: Int, isEnabled: Bool) { + let title = ActionToolbarContainer.title(from: count) + replyButton.setTitle(title, for: .normal) + } + + public func configureReblog(count: Int, isEnabled: Bool, isHighlighted: Bool) { + let title = ActionToolbarContainer.title(from: count) + reblogButton.setTitle(title, for: .normal) + reblogButton.isEnabled = isEnabled + reblogButton.setImage(ActionToolbarContainer.reblogImage, for: .normal) + let tintColor = isHighlighted ? Asset.Colors.successGreen.color : Asset.Colors.Button.actionToolbar.color + reblogButton.tintColor = tintColor + reblogButton.setTitleColor(tintColor, for: .normal) + reblogButton.setTitleColor(tintColor, for: .highlighted) + } + + public func configureFavorite(count: Int, isEnabled: Bool, isHighlighted: Bool) { + let title = ActionToolbarContainer.title(from: count) + favoriteButton.setTitle(title, for: .normal) + favoriteButton.isEnabled = isEnabled + let image = isHighlighted ? ActionToolbarContainer.starFillImage : ActionToolbarContainer.starImage + favoriteButton.setImage(image, for: .normal) + let tintColor = isHighlighted ? Asset.Colors.systemOrange.color : Asset.Colors.Button.actionToolbar.color + favoriteButton.tintColor = tintColor + favoriteButton.setTitleColor(tintColor, for: .normal) + favoriteButton.setTitleColor(tintColor, for: .highlighted) + } + +} + +extension ActionToolbarContainer { + private static func title(from number: Int?) -> String { + guard let number = number, number > 0 else { return "" } + return String(number) + } +} + +extension ActionToolbarContainer { + public override var accessibilityElements: [Any]? { + get { [replyButton, reblogButton, favoriteButton, shareButton] } + set { } + } +} + +#if DEBUG +import SwiftUI + +struct ActionToolbarContainer_Previews: PreviewProvider { + static var previews: some View { + Group { + UIViewPreview(width: 300) { + let toolbar = ActionToolbarContainer() + toolbar.configure(for: .inline) + return toolbar + } + .previewLayout(.fixed(width: 300, height: 44)) + .previewDisplayName("Inline") + } + } +} +#endif diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/ContentWarningOverlayView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/ContentWarningOverlayView.swift new file mode 100644 index 000000000..d559e4e04 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Control/ContentWarningOverlayView.swift @@ -0,0 +1,83 @@ +// +// ContentWarningOverlayView.swift +// +// +// Created by MainasuK on 2021-12-14. +// + +import os.log +import UIKit + +public protocol ContentWarningOverlayViewDelegate: AnyObject { + func contentWarningOverlayViewDidPressed(_ contentWarningOverlayView: ContentWarningOverlayView) +} + +public final class ContentWarningOverlayView: UIView { + + public static let blurVisualEffect = UIBlurEffect(style: .systemUltraThinMaterial) + + let logger = Logger(subsystem: "ContentWarningOverlayView", category: "View") + + public weak var delegate: ContentWarningOverlayViewDelegate? + + public let blurVisualEffectView = UIVisualEffectView(effect: ContentWarningOverlayView.blurVisualEffect) + public let vibrancyVisualEffectView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: ContentWarningOverlayView.blurVisualEffect)) +// let alertImageView: UIImageView = { +// let imageView = UIImageView() +// imageView.image = Asset.Indices.exclamationmarkTriangleLarge.image.withRenderingMode(.alwaysTemplate) +// return imageView +// }() + + public let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ContentWarningOverlayView { + private func _init() { + // overlay + blurVisualEffectView.translatesAutoresizingMaskIntoConstraints = false + addSubview(blurVisualEffectView) + NSLayoutConstraint.activate([ + blurVisualEffectView.topAnchor.constraint(equalTo: topAnchor), + blurVisualEffectView.leadingAnchor.constraint(equalTo: leadingAnchor), + blurVisualEffectView.trailingAnchor.constraint(equalTo: trailingAnchor), + blurVisualEffectView.bottomAnchor.constraint(equalTo: bottomAnchor), + ]) + + vibrancyVisualEffectView.translatesAutoresizingMaskIntoConstraints = false + blurVisualEffectView.contentView.addSubview(vibrancyVisualEffectView) + NSLayoutConstraint.activate([ + vibrancyVisualEffectView.topAnchor.constraint(equalTo: blurVisualEffectView.contentView.topAnchor), + vibrancyVisualEffectView.leadingAnchor.constraint(equalTo: blurVisualEffectView.contentView.leadingAnchor), + vibrancyVisualEffectView.trailingAnchor.constraint(equalTo: blurVisualEffectView.contentView.trailingAnchor), + vibrancyVisualEffectView.bottomAnchor.constraint(equalTo: blurVisualEffectView.contentView.bottomAnchor), + ]) + +// alertImageView.translatesAutoresizingMaskIntoConstraints = false +// vibrancyVisualEffectView.contentView.addSubview(alertImageView) +// NSLayoutConstraint.activate([ +// alertImageView.centerXAnchor.constraint(equalTo: vibrancyVisualEffectView.contentView.centerXAnchor), +// alertImageView.centerYAnchor.constraint(equalTo: vibrancyVisualEffectView.contentView.centerYAnchor), +// ]) + + tapGestureRecognizer.addTarget(self, action: #selector(ContentWarningOverlayView.tapGestureRecognizerHandler(_:))) + addGestureRecognizer(tapGestureRecognizer) + } +} + +extension ContentWarningOverlayView { + @objc private func tapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.contentWarningOverlayViewDidPressed(self) + } +} diff --git a/Mastodon/Scene/Share/View/Control/StripProgressView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/StripProgressView.swift similarity index 91% rename from Mastodon/Scene/Share/View/Control/StripProgressView.swift rename to MastodonSDK/Sources/MastodonUI/View/Control/StripProgressView.swift index 710d8567d..8d429594f 100644 --- a/Mastodon/Scene/Share/View/Control/StripProgressView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Control/StripProgressView.swift @@ -9,15 +9,15 @@ import os.log import UIKit import Combine -private final class StripProgressLayer: CALayer { +public final class StripProgressLayer: CALayer { static let progressAnimationKey = "progressAnimationKey" static let progressKey = "progress" - var tintColor: UIColor = .black + public var tintColor: UIColor = .black @NSManaged var progress: CGFloat - override class func needsDisplay(forKey key: String) -> Bool { + public override class func needsDisplay(forKey key: String) -> Bool { switch key { case StripProgressLayer.progressKey: return true @@ -26,7 +26,7 @@ private final class StripProgressLayer: CALayer { } } - override func display() { + public override func display() { let progress: CGFloat = { guard animation(forKey: StripProgressLayer.progressAnimationKey) != nil else { return self.progress @@ -64,7 +64,7 @@ private final class StripProgressLayer: CALayer { } -final class StripProgressView: UIView { +public final class StripProgressView: UIView { var disposeBag = Set() @@ -73,7 +73,7 @@ final class StripProgressView: UIView { return layer }() - override var tintColor: UIColor! { + public override var tintColor: UIColor! { didSet { stripProgressLayer.tintColor = tintColor setNeedsDisplay() @@ -97,12 +97,12 @@ final class StripProgressView: UIView { } } - override init(frame: CGRect) { + public override init(frame: CGRect) { super.init(frame: frame) _init() } - required init?(coder: NSCoder) { + public required init?(coder: NSCoder) { super.init(coder: coder) _init() } @@ -116,7 +116,7 @@ extension StripProgressView { updateLayerPath() } - override func layoutSubviews() { + public override func layoutSubviews() { super.layoutSubviews() updateLayerPath() } diff --git a/MastodonSDK/Sources/MastodonUI/View/ImageView/AvatarImageView.swift b/MastodonSDK/Sources/MastodonUI/View/ImageView/AvatarImageView.swift new file mode 100644 index 000000000..c0204bc65 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/ImageView/AvatarImageView.swift @@ -0,0 +1,126 @@ +// +// AvatarImageView.swift +// Mastodon +// +// Created by MainasuK Cirno on 2021-7-21. +// + +import UIKit +import FLAnimatedImage +import AlamofireImage + +public class AvatarImageView: FLAnimatedImageView { + public var imageViewSize: CGSize? + public var configuration = Configuration(url: nil) + public var cornerConfiguration = CornerConfiguration() +} + +extension AvatarImageView { + + public func prepareForReuse() { + cancelTask() + af.cancelImageRequest() + } + + override public func layoutSubviews() { + super.layoutSubviews() + + setup(corner: cornerConfiguration.corner) + } + + private func setup(corner: CornerConfiguration.Corner) { + layer.masksToBounds = true + switch corner { + case .circle: + layer.cornerCurve = .circular + layer.cornerRadius = frame.width / 2 + case .fixed(let radius): + layer.cornerCurve = .continuous + layer.cornerRadius = radius + case .scale(let ratio): + let radius = CGFloat(Int(bounds.width) / ratio) // even number from quoter of width + layer.cornerCurve = .continuous + layer.cornerRadius = radius + } + } + +} + +extension AvatarImageView { + + public static let placeholder = UIImage.placeholder(color: .systemFill) + + public struct Configuration { + public let url: URL? + public let placeholder: UIImage? + + public init( + url: URL?, + placeholder: UIImage = AvatarImageView.placeholder + ) { + self.url = url + self.placeholder = placeholder + } + + public init( + image: UIImage + ) { + self.url = nil + self.placeholder = image + } + } + + public func configure(configuration: Configuration) { + prepareForReuse() + + self.configuration = configuration + + guard let url = configuration.url else { + image = configuration.placeholder + return + } + + switch url.pathExtension.lowercased() { + case "gif": + setImage( + url: configuration.url, + placeholder: configuration.placeholder, + scaleToSize: imageViewSize + ) + default: + let filter: ImageFilter? = { + if let imageViewSize = self.imageViewSize { + return ScaledToSizeFilter(size: imageViewSize) + } + guard self.frame.size.width != 0, + self.frame.size.height != 0 + else { return nil } + return ScaledToSizeFilter(size: self.frame.size) + }() + + af.setImage(withURL: url, filter: filter) + } + } + +} + +extension AvatarImageView { + public struct CornerConfiguration { + public let corner: Corner + + public init(corner: Corner = .circle) { + self.corner = corner + } + + public enum Corner { + case circle + case fixed(radius: CGFloat) + case scale(ratio: Int = 4) // width / ratio + } + } + + public func configure(cornerConfiguration: CornerConfiguration) { + self.cornerConfiguration = cornerConfiguration + setup(corner: cornerConfiguration.corner) + } +} diff --git a/MastodonSDK/Sources/MastodonUI/View/MastodonMenu.swift b/MastodonSDK/Sources/MastodonUI/View/MastodonMenu.swift new file mode 100644 index 000000000..de4bc403d --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/MastodonMenu.swift @@ -0,0 +1,146 @@ +// +// MastodonMenu.swift +// +// +// Created by MainasuK on 2022-1-26. +// + +import UIKit +import MastodonLocalization + +public protocol MastodonMenuDelegate: AnyObject { + func menuAction(_ action: MastodonMenu.Action) +} + +public enum MastodonMenu { + public static func setupMenu( + actions: [Action], + delegate: MastodonMenuDelegate + ) -> UIMenu { + var children: [UIMenuElement] = [] + for action in actions { + let element = action.build(delegate: delegate) + children.append(element) + } + return UIMenu(title: "", options: [], children: children) + } +} + +extension MastodonMenu { + public enum Action { + case muteUser(MuteUserActionContext) + case blockUser(BlockUserActionContext) + case reportUser(ReportUserActionContext) + case shareUser(ShareUserActionContext) + case deleteStatus + + func build(delegate: MastodonMenuDelegate) -> UIMenuElement { + switch self { + case .muteUser(let context): + let muteAction = UIAction( + title: context.isMuting ? L10n.Common.Controls.Friendship.unmuteUser(context.name) : L10n.Common.Controls.Friendship.muteUser(context.name), + image: context.isMuting ? UIImage(systemName: "speaker.wave.2") : UIImage(systemName: "speaker.slash"), + identifier: nil, + discoverabilityTitle: nil, + attributes: [], + state: .off + ) { [weak delegate] _ in + guard let delegate = delegate else { return } + delegate.menuAction(self) + } + return muteAction + case .blockUser(let context): + let blockAction = UIAction( + title: context.isBlocking ? L10n.Common.Controls.Friendship.unblockUser(context.name) : L10n.Common.Controls.Friendship.blockUser(context.name), + image: context.isBlocking ? UIImage(systemName: "hand.raised") : UIImage(systemName: "hand.raised"), + identifier: nil, + discoverabilityTitle: nil, + attributes: [], + state: .off + ) { [weak delegate] _ in + guard let delegate = delegate else { return } + delegate.menuAction(self) + } + return blockAction + case .reportUser(let context): + let reportAction = UIAction( + title: L10n.Common.Controls.Actions.reportUser(context.name), + image: UIImage(systemName: "flag"), + identifier: nil, + discoverabilityTitle: nil, + attributes: [], + state: .off + ) { [weak delegate] _ in + guard let delegate = delegate else { return } + delegate.menuAction(self) + } + return reportAction + case .shareUser(let context): + let shareAction = UIAction( + title: L10n.Common.Controls.Actions.shareUser(context.name), + image: UIImage(systemName: "square.and.arrow.up"), + identifier: nil, + discoverabilityTitle: nil, + attributes: [], + state: .off + ) { [weak delegate] _ in + guard let delegate = delegate else { return } + delegate.menuAction(self) + } + return shareAction + case .deleteStatus: + let deleteAction = UIAction( + title: L10n.Common.Controls.Actions.delete, + image: UIImage(systemName: "minus.circle"), + identifier: nil, + discoverabilityTitle: nil, + attributes: .destructive, + state: .off + ) { [weak delegate] _ in + guard let delegate = delegate else { return } + delegate.menuAction(self) + } + return deleteAction + } // end switch + } // end func build + } // end enum Action +} + +extension MastodonMenu { + public struct MuteUserActionContext { + public let name: String + public let isMuting: Bool + + public init(name: String, isMuting: Bool) { + self.name = name + self.isMuting = isMuting + } + } + + public struct BlockUserActionContext { + public let name: String + public let isBlocking: Bool + + public init(name: String, isBlocking: Bool) { + self.name = name + self.isBlocking = isBlocking + } + } + + public struct ReportUserActionContext { + public let name: String + + public init(name: String) { + self.name = name + } + } + + public struct ShareUserActionContext { + public let name: String + + public init(name: String) { + self.name = name + } + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/View/TableViewCell/PollOptionTableViewCell.swift b/MastodonSDK/Sources/MastodonUI/View/TableViewCell/PollOptionTableViewCell.swift new file mode 100644 index 000000000..6ae6ea0b5 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/TableViewCell/PollOptionTableViewCell.swift @@ -0,0 +1,65 @@ +// +// PollOptionTableViewCell.swift +// Mastodon +// +// Created by MainasuK Cirno on 2021-2-25. +// + +import UIKit +import Combine +import MastodonAsset +import MastodonLocalization + +public final class PollOptionTableViewCell: UITableViewCell { + + static let height: CGFloat = PollOptionView.height + + public var disposeBag = Set() + + public let pollOptionView = PollOptionView() + + public override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + pollOptionView.prepareForReuse() + } + + public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + public required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + + public override func setHighlighted(_ highlighted: Bool, animated: Bool) { + super.setHighlighted(highlighted, animated: animated) + + pollOptionView.alpha = highlighted ? 0.5 : 1 + } + +} + +extension PollOptionTableViewCell { + + private func _init() { + selectionStyle = .none + backgroundColor = .clear + pollOptionView.isUserInteractionEnabled = false + // pollOptionView.optionTextField.isUserInteractionEnabled = false + + pollOptionView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(pollOptionView) + NSLayoutConstraint.activate([ + pollOptionView.topAnchor.constraint(equalTo: contentView.topAnchor), + pollOptionView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + pollOptionView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + pollOptionView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + ]) + pollOptionView.setup(style: .plain) + } + +} diff --git a/Mastodon/Scene/Share/View/TextField/DeleteBackwardResponseTextField.swift b/MastodonSDK/Sources/MastodonUI/View/TextField/DeleteBackwardResponseTextField.swift similarity index 61% rename from Mastodon/Scene/Share/View/TextField/DeleteBackwardResponseTextField.swift rename to MastodonSDK/Sources/MastodonUI/View/TextField/DeleteBackwardResponseTextField.swift index 08c085aa9..6fd760430 100644 --- a/Mastodon/Scene/Share/View/TextField/DeleteBackwardResponseTextField.swift +++ b/MastodonSDK/Sources/MastodonUI/View/TextField/DeleteBackwardResponseTextField.swift @@ -7,15 +7,15 @@ import UIKit -protocol DeleteBackwardResponseTextFieldDelegate: AnyObject { +public protocol DeleteBackwardResponseTextFieldDelegate: AnyObject { func deleteBackwardResponseTextField(_ textField: DeleteBackwardResponseTextField, textBeforeDelete: String?) } -final class DeleteBackwardResponseTextField: UITextField { +public final class DeleteBackwardResponseTextField: UITextField { - weak var deleteBackwardDelegate: DeleteBackwardResponseTextFieldDelegate? + public weak var deleteBackwardDelegate: DeleteBackwardResponseTextFieldDelegate? - override func deleteBackward() { + public override func deleteBackward() { let text = self.text super.deleteBackward() deleteBackwardDelegate?.deleteBackwardResponseTextField(self, textBeforeDelete: text) diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index f652792e2..697cdf4d2 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 90 + 91 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index f652792e2..697cdf4d2 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 90 + 91 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 77c7421d3..5793db76b 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 90 + 91 NSExtension NSExtensionPointIdentifier diff --git a/Podfile b/Podfile index 4a2e7bc6d..3d4bcb827 100644 --- a/Podfile +++ b/Podfile @@ -13,6 +13,7 @@ target 'Mastodon' do pod 'SwiftGen', '~> 6.4.0' pod 'DateToolsSwift', '~> 5.0.0' pod 'Kanna', '~> 5.2.2' + pod 'Sourcery', '~> 1.6.1' # DEBUG pod 'FLEX', '~> 4.4.0', :configurations => ['Debug'] diff --git a/Podfile.lock b/Podfile.lock index ea4ef8238..0593a8e24 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -3,6 +3,9 @@ PODS: - FLEX (4.4.1) - Kanna (5.2.7) - Keys (1.0.1) + - Sourcery (1.6.1): + - Sourcery/CLI-Only (= 1.6.1) + - Sourcery/CLI-Only (1.6.1) - SwiftGen (6.4.0) - "UITextField+Shake (1.2.1)" @@ -11,6 +14,7 @@ DEPENDENCIES: - FLEX (~> 4.4.0) - Kanna (~> 5.2.2) - Keys (from `Pods/CocoaPodsKeys`) + - Sourcery (~> 1.6.1) - SwiftGen (~> 6.4.0) - "UITextField+Shake (~> 1.2)" @@ -19,6 +23,7 @@ SPEC REPOS: - DateToolsSwift - FLEX - Kanna + - Sourcery - SwiftGen - "UITextField+Shake" @@ -31,9 +36,10 @@ SPEC CHECKSUMS: FLEX: 7ca2c8cd3a435ff501ff6d2f2141e9bdc934eaab Kanna: 01cfbddc127f5ff0963692f285fcbc8a9d62d234 Keys: a576f4c9c1c641ca913a959a9c62ed3f215a8de9 + Sourcery: f3759f803bd0739f74fc92a4341eed0473ce61ac SwiftGen: 67860cc7c3cfc2ed25b9b74cfd55495fc89f9108 "UITextField+Shake": 298ac5a0f239d731bdab999b19b628c956ca0ac3 -PODFILE CHECKSUM: 37aa3ed14a767c806ece40b6c99ab3c59b9f8475 +PODFILE CHECKSUM: 1426a4b78d8d711a5ae7600b9deea8986ddfdf7d COCOAPODS: 1.11.2 diff --git a/README.md b/README.md index e1686b2e8..4e785f29b 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ The app is compatible with [toot-relay](https://github.com/DagAgren/toot-relay) - [SwiftUI-Introspect](https://github.com/siteline/SwiftUI-Introspect) - [SwiftyJSON](https://github.com/SwiftyJSON/SwiftyJSON) - [Tabman](https://github.com/uias/Tabman) -- [Texture](https://github.com/TextureGroup/Texture) +- [TwidereX-iOS](https://github.com/TwidereProject/TwidereX-iOS) - [ThirdPartyMailer](https://github.com/vtourraine/ThirdPartyMailer) - [TOCropViewController](https://github.com/TimOliver/TOCropViewController) - [TwitterProfile](https://github.com/OfTheWolf/TwitterProfile) diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index ae9484886..2e4cd6c58 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 90 + 91 NSExtension NSExtensionAttributes diff --git a/ShareActionExtension/Scene/ShareViewController.swift b/ShareActionExtension/Scene/ShareViewController.swift index 765c42d1e..d45558f1a 100644 --- a/ShareActionExtension/Scene/ShareViewController.swift +++ b/ShareActionExtension/Scene/ShareViewController.swift @@ -10,6 +10,8 @@ import UIKit import Combine import MastodonUI import SwiftUI +import MastodonAsset +import MastodonLocalization class ShareViewController: UIViewController { diff --git a/ShareActionExtension/Scene/ShareViewModel.swift b/ShareActionExtension/Scene/ShareViewModel.swift index 76089e17d..fe54e7e59 100644 --- a/ShareActionExtension/Scene/ShareViewModel.swift +++ b/ShareActionExtension/Scene/ShareViewModel.swift @@ -14,6 +14,8 @@ import MastodonSDK import MastodonUI import SwiftUI import UniformTypeIdentifiers +import MastodonAsset +import MastodonLocalization final class ShareViewModel { @@ -298,7 +300,8 @@ extension ShareViewModel { guard let authentication = composeViewModel.authentication else { return Fail(error: APIService.APIError.implicit(.authenticationMissing)).eraseToAnyPublisher() } - let mastodonAuthenticationBox = MastodonAuthenticationBox( + let authenticationBox = MastodonAuthenticationBox( + authenticationRecord: .init(objectID: authentication.objectID), domain: authentication.domain, userID: authentication.userID, appAuthorization: Mastodon.API.OAuth.Authorization(accessToken: authentication.appAccessToken), @@ -334,7 +337,7 @@ extension ShareViewModel { domain: domain, attachmentID: attachmentID, query: query, - mastodonAuthenticationBox: mastodonAuthenticationBox + mastodonAuthenticationBox: authenticationBox ) subscriptions.append(subscription) } @@ -345,7 +348,7 @@ extension ShareViewModel { return Publishers.MergeMany(updateMediaQuerySubscriptions) .collect() - .flatMap { attachments -> AnyPublisher, Error> in + .asyncMap { attachments in let query = Mastodon.API.Statuses.PublishStatusQuery( status: status, mediaIDs: mediaIDs.isEmpty ? nil : mediaIDs, @@ -356,11 +359,11 @@ extension ShareViewModel { spoilerText: spoilerText, visibility: visibility ) - return APIService.shared.publishStatus( + return try await APIService.shared.publishStatus( domain: domain, idempotencyKey: nil, // FIXME: query: query, - mastodonAuthenticationBox: mastodonAuthenticationBox + authenticationBox: authenticationBox ) } .eraseToAnyPublisher() diff --git a/ShareActionExtension/Scene/View/ComposeToolbarView.swift b/ShareActionExtension/Scene/View/ComposeToolbarView.swift index d88bb018c..73caac735 100644 --- a/ShareActionExtension/Scene/View/ComposeToolbarView.swift +++ b/ShareActionExtension/Scene/View/ComposeToolbarView.swift @@ -10,6 +10,8 @@ import UIKit import Combine import MastodonSDK import MastodonUI +import MastodonAsset +import MastodonLocalization protocol ComposeToolbarViewDelegate: AnyObject { func composeToolbarView(_ composeToolbarView: ComposeToolbarView, contentWarningButtonDidPressed sender: UIButton) diff --git a/ShareActionExtension/Scene/View/StatusAttachmentView.swift b/ShareActionExtension/Scene/View/StatusAttachmentView.swift index 4bc2ff9a5..90b8aceeb 100644 --- a/ShareActionExtension/Scene/View/StatusAttachmentView.swift +++ b/ShareActionExtension/Scene/View/StatusAttachmentView.swift @@ -105,22 +105,22 @@ extension View { } -struct StatusAttachmentView_Previews: PreviewProvider { - static var previews: some View { - ScrollView { - StatusAttachmentView( - image: UIImage(systemName: "photo"), - descriptionPlaceholder: "Describe photo", - description: .constant(""), - errorPrompt: nil, - errorPromptImage: StatusAttachmentViewModel.photoFillSplitImage, - isUploading: true, - progressViewTintColor: .systemFill, - removeButtonAction: { - // do nothing - } - ) - .padding(20) - } - } -} +//struct StatusAttachmentView_Previews: PreviewProvider { +// static var previews: some View { +// ScrollView { +// StatusAttachmentView( +// image: UIImage(systemName: "photo"), +// descriptionPlaceholder: "Describe photo", +// description: .constant(""), +// errorPrompt: nil, +// errorPromptImage: StatusAttachmentViewModel.photoFillSplitImage, +// isUploading: true, +// progressViewTintColor: .systemFill, +// removeButtonAction: { +// // do nothing +// } +// ) +// .padding(20) +// } +// } +//} diff --git a/ShareActionExtension/Scene/View/StatusAttachmentViewModel+UploadState.swift b/ShareActionExtension/Scene/View/StatusAttachmentViewModel+UploadState.swift index cfd0a4de8..ce0544aa1 100644 --- a/ShareActionExtension/Scene/View/StatusAttachmentViewModel+UploadState.swift +++ b/ShareActionExtension/Scene/View/StatusAttachmentViewModel+UploadState.swift @@ -67,6 +67,7 @@ extension StatusAttachmentViewModel.UploadState { ) let mastodonAuthenticationBox = MastodonAuthenticationBox( + authenticationRecord: .init(objectID: authentication.objectID), domain: authentication.domain, userID: authentication.userID, appAuthorization: Mastodon.API.OAuth.Authorization(accessToken: authentication.appAccessToken), diff --git a/ShareActionExtension/Scene/View/StatusAttachmentViewModel.swift b/ShareActionExtension/Scene/View/StatusAttachmentViewModel.swift index f0c1e6447..37d4f82e8 100644 --- a/ShareActionExtension/Scene/View/StatusAttachmentViewModel.swift +++ b/ShareActionExtension/Scene/View/StatusAttachmentViewModel.swift @@ -16,6 +16,8 @@ import AVFoundation import GameplayKit import MobileCoreServices import UniformTypeIdentifiers +import MastodonAsset +import MastodonLocalization protocol StatusAttachmentViewModelDelegate: AnyObject { func statusAttachmentViewModel(_ viewModel: StatusAttachmentViewModel, uploadStateDidChange state: StatusAttachmentViewModel.UploadState?) diff --git a/swiftgen.yml b/swiftgen.yml index e086533fb..fa8189cf2 100644 --- a/swiftgen.yml +++ b/swiftgen.yml @@ -1,12 +1,18 @@ strings: inputs: - - Mastodon/Resources/en.lproj/Localizable.strings - - Mastodon/Resources/en.lproj/Localizable.stringsdict + - MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings + - MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.stringsdict outputs: - templateName: structured-swift5 - output: Mastodon/Generated/Strings.swift + output: MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift + params: + bundle: Bundle.module + publicAccess: true xcassets: - inputs: Mastodon/Resources/Assets.xcassets + inputs: MastodonSDK/Sources/MastodonAsset/Assets.xcassets outputs: templateName: swift5 - output: Mastodon/Generated/Assets.swift + output: MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift + params: + bundle: Bundle.module + publicAccess: true diff --git a/update_localization.sh b/update_localization.sh index 006fd8cf1..b234cd933 100755 --- a/update_localization.sh +++ b/update_localization.sh @@ -12,7 +12,7 @@ cd ${SRCROOT}/Localization/StringsConvertor sh ./scripts/build.sh # task 2 copy strings file -cp -R ${SRCROOT}/Localization/StringsConvertor/output/ ${SRCROOT}/Mastodon/Resources +cp -R ${SRCROOT}/Localization/StringsConvertor/output/module/ ${SRCROOT}/MastodonSDK/Sources/MastodonLocalization/Resources cp -R ${SRCROOT}/Localization/StringsConvertor/Intents/output/ ${SRCROOT}/MastodonIntent # task 3 swiftgen From 573ed8fd8d3ef7019f7267503af3a5b78aa05493 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 27 Jan 2022 21:50:02 +0800 Subject: [PATCH 137/374] fix: update the Xcode version to fix the CI failure --- .github/workflows/main.yml | 4 ++-- .../Scene/HashtagTimeline/HashtagTimelineViewController.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b2979d002..a2f99d23e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,8 +19,8 @@ jobs: steps: - name: checkout uses: actions/checkout@v2 - - name: force Xcode 13.1 - run: sudo xcode-select -switch /Applications/Xcode_13.1.app + - name: force Xcode 13.2.1 + run: sudo xcode-select -switch /Applications/Xcode_13.2.1.app - name: setup run: exec ./.github/scripts/setup.sh - name: build diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift index 73fc96786..b3a8ca040 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift @@ -204,7 +204,7 @@ extension HashtagTimelineViewController: UITableViewDelegate, AutoGenerateTableV func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) } - // sourcery:endz + // sourcery:end // func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { // return aspectTableView(tableView, estimatedHeightForRowAt: indexPath) From 9c7da4389e35f358e8605037c0180e96d532bd3a Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 27 Jan 2022 22:00:03 +0800 Subject: [PATCH 138/374] fix: remove unavailable framework import --- MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift b/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift index b21a45b2d..825c1af8a 100644 --- a/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift +++ b/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift @@ -7,7 +7,6 @@ import Foundation import CoreData -import CoreDataStack public enum PollItem: Hashable { case option(record: ManagedObjectRecord) From 12b73f5a10d9a617f93eca62fc5eeae781a1f56e Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 28 Jan 2022 12:09:28 +0800 Subject: [PATCH 139/374] fix: project dependency issue --- AppShared/AppSecret.swift | 1 + AppShared/UserDefaults.swift | 1 + CoreDataStack/CoreDataStack.h | 18 - CoreDataStack/Info.plist | 22 - CoreDataStackTests/CoreDataStackTests.swift | 33 - CoreDataStackTests/Info.plist | 22 - Mastodon.xcodeproj/project.pbxproj | 666 ++---------------- .../xcschemes/xcschememanagement.plist | 6 +- .../StatusFetchedResultsController.swift | 1 + .../UserFetchedResultsController.swift | 1 + Mastodon/Diffiable/Status/StatusItem.swift | 1 + .../Provider/DataSourceFacade+Model.swift | 1 + .../Service/ThemeService/ThemeService.swift | 1 + MastodonSDK/Package.swift | 32 +- .../Sources/CoreDataStack}/.sourcery.yml | 0 .../CoreData.xcdatamodeld/.xccurrentversion | 0 .../CoreData 2.xcdatamodel/contents | 0 .../CoreData 3.xcdatamodel/contents | 38 +- .../CoreData.xcdatamodel/contents | 0 .../CoreDataStack}/CoreDataStack.swift | 4 +- .../CoreDataStack}/Entity/App/Feed.swift | 0 .../Entity/App/HomeTimelineIndex.swift | 0 .../CoreDataStack}/Entity/App/Setting.swift | 0 .../Entity/Mastodon/Application.swift | 0 .../Entity/Mastodon/DomainBlock.swift | 0 .../Entity/Mastodon/Emoji.swift | 0 .../Entity/Mastodon/History.swift | 0 .../Entity/Mastodon/Instance.swift | 0 .../Mastodon/MastodonAuthentication.swift | 0 .../Entity/Mastodon/MastodonUser.swift | 0 .../Entity/Mastodon/Notification.swift | 0 .../CoreDataStack}/Entity/Mastodon/Poll.swift | 0 .../Entity/Mastodon/PollOption.swift | 0 .../Entity/Mastodon/PrivateNote.swift | 0 .../Entity/Mastodon/SearchHistory.swift | 0 .../Entity/Mastodon/Status.swift | 0 .../Entity/Mastodon/Subscription.swift | 0 .../Entity/Mastodon/SubscriptionAlerts.swift | 0 .../CoreDataStack}/Entity/Mastodon/Tag.swift | 0 .../Entity/Transient/Acct.swift | 0 .../Entity/Transient/Feed+Kind.swift | 0 .../Entity/Transient/MastodonAttachment.swift | 0 .../Entity/Transient/MastodonEmoji.swift | 0 .../Entity/Transient/MastodonField.swift | 0 .../Entity/Transient/MastodonMention.swift | 0 .../Transient/MastodonNotificationType.swift | 0 .../Entity/Transient/MastodonTagHistory.swift | 0 .../Entity/Transient/MastodonVisibility.swift | 0 .../CoreDataStack}/Extension/Collection.swift | 0 .../Extension/NSManagedObjectContext.swift | 2 +- .../CoreDataStack}/Extension/UIFont.swift | 0 .../CoreDataStack}/Extension/URL.swift | 0 .../CoreDataStack}/Protocol/Managed.swift | 0 .../Protocol/NetworkUpdatable.swift | 0 ...ManagedObjectContextObjectsDidChange.swift | 0 .../Stack/ManagedObjectObserver.swift | 0 .../Template/AutoGenerateProperty.swift | 0 .../Template/AutoGenerateRelationship.swift | 0 .../Template/AutoUpdatableObject.swift | 0 .../Stencil/AutoGenerateProperty.stencil | 0 .../Stencil/AutoGenerateRelationship.stencil | 0 .../Stencil/AutoUpdatableObject.stencil | 0 .../Utility/ManagedObjectRecord.swift | 2 +- .../Sources/MastodonCommon}/AppName.swift | 2 +- .../MastodonUI/Model/Poll/PollItem.swift | 1 + 65 files changed, 113 insertions(+), 742 deletions(-) delete mode 100644 CoreDataStack/CoreDataStack.h delete mode 100644 CoreDataStack/Info.plist delete mode 100644 CoreDataStackTests/CoreDataStackTests.swift delete mode 100644 CoreDataStackTests/Info.plist rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/.sourcery.yml (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/CoreData.xcdatamodeld/.xccurrentversion (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/CoreData.xcdatamodeld/CoreData 2.xcdatamodel/contents (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents (93%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/CoreDataStack.swift (98%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/App/Feed.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/App/HomeTimelineIndex.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/App/Setting.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/Application.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/DomainBlock.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/Emoji.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/History.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/Instance.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/MastodonAuthentication.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/MastodonUser.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/Notification.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/Poll.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/PollOption.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/PrivateNote.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/SearchHistory.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/Status.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/Subscription.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/SubscriptionAlerts.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Mastodon/Tag.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Transient/Acct.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Transient/Feed+Kind.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Transient/MastodonAttachment.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Transient/MastodonEmoji.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Transient/MastodonField.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Transient/MastodonMention.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Transient/MastodonNotificationType.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Transient/MastodonTagHistory.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Entity/Transient/MastodonVisibility.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Extension/Collection.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Extension/NSManagedObjectContext.swift (98%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Extension/UIFont.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Extension/URL.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Protocol/Managed.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Protocol/NetworkUpdatable.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Stack/ManagedObjectContextObjectsDidChange.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Stack/ManagedObjectObserver.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Template/AutoGenerateProperty.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Template/AutoGenerateRelationship.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Template/AutoUpdatableObject.swift (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Template/Stencil/AutoGenerateProperty.stencil (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Template/Stencil/AutoGenerateRelationship.stencil (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Template/Stencil/AutoUpdatableObject.stencil (100%) rename {CoreDataStack => MastodonSDK/Sources/CoreDataStack}/Utility/ManagedObjectRecord.swift (91%) rename {AppShared => MastodonSDK/Sources/MastodonCommon}/AppName.swift (90%) diff --git a/AppShared/AppSecret.swift b/AppShared/AppSecret.swift index 7ef7a0821..9110f2490 100644 --- a/AppShared/AppSecret.swift +++ b/AppShared/AppSecret.swift @@ -10,6 +10,7 @@ import Foundation import CryptoKit import KeychainAccess import Keys +import MastodonCommon public final class AppSecret { diff --git a/AppShared/UserDefaults.swift b/AppShared/UserDefaults.swift index 753a3284f..31f8e27ef 100644 --- a/AppShared/UserDefaults.swift +++ b/AppShared/UserDefaults.swift @@ -6,6 +6,7 @@ // import UIKit +import MastodonCommon extension UserDefaults { public static let shared = UserDefaults(suiteName: AppName.groupID)! diff --git a/CoreDataStack/CoreDataStack.h b/CoreDataStack/CoreDataStack.h deleted file mode 100644 index 2e729ae7f..000000000 --- a/CoreDataStack/CoreDataStack.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// CoreDataStack.h -// CoreDataStack -// -// Created by MainasuK Cirno on 2021/1/27. -// - -#import - -//! Project version number for CoreDataStack. -FOUNDATION_EXPORT double CoreDataStackVersionNumber; - -//! Project version string for CoreDataStack. -FOUNDATION_EXPORT const unsigned char CoreDataStackVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - - diff --git a/CoreDataStack/Info.plist b/CoreDataStack/Info.plist deleted file mode 100644 index 697cdf4d2..000000000 --- a/CoreDataStack/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.3.0 - CFBundleVersion - 91 - - diff --git a/CoreDataStackTests/CoreDataStackTests.swift b/CoreDataStackTests/CoreDataStackTests.swift deleted file mode 100644 index 7248e3b9a..000000000 --- a/CoreDataStackTests/CoreDataStackTests.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// CoreDataStackTests.swift -// CoreDataStackTests -// -// Created by MainasuK Cirno on 2021/1/27. -// - -import XCTest -@testable import CoreDataStack - -class CoreDataStackTests: XCTestCase { - - override func setUpWithError() throws { - // Put setup code here. This method is called before the invocation of each test method in the class. - } - - override func tearDownWithError() throws { - // Put teardown code here. This method is called after the invocation of each test method in the class. - } - - func testExample() throws { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct results. - } - - func testPerformanceExample() throws { - // This is an example of a performance test case. - self.measure { - // Put the code you want to measure the time of here. - } - } - -} diff --git a/CoreDataStackTests/Info.plist b/CoreDataStackTests/Info.plist deleted file mode 100644 index 697cdf4d2..000000000 --- a/CoreDataStackTests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.3.0 - CFBundleVersion - 91 - - diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 16a36e6d7..d0439c816 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -26,8 +26,6 @@ 164F0EBC267D4FE400249499 /* BoopSound.caf in Resources */ = {isa = PBXBuildFile; fileRef = 164F0EBB267D4FE400249499 /* BoopSound.caf */; }; 18BC7629F65E6DB12CB8416D /* Pods_Mastodon_MastodonUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */; }; 2D084B8D26258EA3003AA3AF /* NotificationViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */; }; - 2D0B7A1D261D839600B44727 /* SearchHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D0B7A1C261D839600B44727 /* SearchHistory.swift */; }; - 2D152A9225C2980C009AA50C /* UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D152A9125C2980C009AA50C /* UIFont.swift */; }; 2D198643261BF09500F0B013 /* SearchResultItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198642261BF09500F0B013 /* SearchResultItem.swift */; }; 2D198649261C0B8500F0B013 /* SearchResultSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198648261C0B8500F0B013 /* SearchResultSection.swift */; }; 2D206B7225F5D27F00143C56 /* AudioContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */; }; @@ -61,7 +59,6 @@ 2D5A3D3825CF8D9F002347D6 /* ScrollViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D3725CF8D9F002347D6 /* ScrollViewContainer.swift */; }; 2D5A3D6225CFD9CB002347D6 /* HomeTimelineViewController+DebugAction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D6125CFD9CB002347D6 /* HomeTimelineViewController+DebugAction.swift */; }; 2D607AD826242FC500B70763 /* NotificationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D607AD726242FC500B70763 /* NotificationViewModel.swift */; }; - 2D6125472625436B00299647 /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6125462625436B00299647 /* Notification.swift */; }; 2D61254D262547C200299647 /* APIService+Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61254C262547C200299647 /* APIService+Notification.swift */; }; 2D61335E25C1894B00CAE157 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61335D25C1894B00CAE157 /* APIService.swift */; }; 2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */ = {isa = PBXBuildFile; productRef = 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */; }; @@ -77,21 +74,16 @@ 2D8434FB25FF46B300EECE90 /* HomeTimelineNavigationBarTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D8434FA25FF46B300EECE90 /* HomeTimelineNavigationBarTitleView.swift */; }; 2D84350525FF858100EECE90 /* UIScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D84350425FF858100EECE90 /* UIScrollView.swift */; }; 2D8FCA082637EABB00137F46 /* APIService+FollowRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D8FCA072637EABB00137F46 /* APIService+FollowRequest.swift */; }; - 2D927F0825C7E9A8004F19B8 /* Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F0725C7E9A8004F19B8 /* Tag.swift */; }; - 2D927F0E25C7E9C9004F19B8 /* History.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F0D25C7E9C9004F19B8 /* History.swift */; }; - 2D927F1425C7EDD9004F19B8 /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F1325C7EDD9004F19B8 /* Emoji.swift */; }; 2D939AB525EDD8A90076FA61 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D939AB425EDD8A90076FA61 /* String.swift */; }; 2D939AC825EE14620076FA61 /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 2D939AC725EE14620076FA61 /* CropViewController */; }; 2D939AE825EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D939AE725EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift */; }; 2D9DB967263A76FB007C1D71 /* BlockDomainService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D9DB966263A76FB007C1D71 /* BlockDomainService.swift */; }; - 2D9DB969263A833E007C1D71 /* DomainBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D9DB968263A833E007C1D71 /* DomainBlock.swift */; }; 2D9DB96B263A91D1007C1D71 /* APIService+DomainBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D9DB96A263A91D1007C1D71 /* APIService+DomainBlock.swift */; }; 2DA504692601ADE7008F4E6C /* SawToothView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA504682601ADE7008F4E6C /* SawToothView.swift */; }; 2DA6054725F716A2006356F9 /* PlaybackState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA6054625F716A2006356F9 /* PlaybackState.swift */; }; 2DA6055125F74407006356F9 /* AudioContainerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA6055025F74407006356F9 /* AudioContainerViewModel.swift */; }; 2DA7D04425CA52B200804E11 /* TimelineLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7D04325CA52B200804E11 /* TimelineLoaderTableViewCell.swift */; }; 2DA7D04A25CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7D04925CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift */; }; - 2DA7D05725CA693F00804E11 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7D05625CA693F00804E11 /* Application.swift */; }; 2DAC9E38262FC2320062E1A6 /* SuggestionAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DAC9E37262FC2320062E1A6 /* SuggestionAccountViewController.swift */; }; 2DAC9E3E262FC2400062E1A6 /* SuggestionAccountViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DAC9E3D262FC2400062E1A6 /* SuggestionAccountViewModel.swift */; }; 2DAC9E46262FC9FD0062E1A6 /* SuggestionAccountTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DAC9E45262FC9FD0062E1A6 /* SuggestionAccountTableViewCell.swift */; }; @@ -100,8 +92,6 @@ 2DE0FACE2615F7AD00CDF649 /* RecommendAccountSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DE0FACD2615F7AD00CDF649 /* RecommendAccountSection.swift */; }; 2DF123A725C3B0210020F248 /* ActiveLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF123A625C3B0210020F248 /* ActiveLabel.swift */; }; 2DF75BA725D10E1000694EC8 /* APIService+Favorite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75BA625D10E1000694EC8 /* APIService+Favorite.swift */; }; - 2DF75BB925D1474100694EC8 /* ManagedObjectObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75BB825D1474100694EC8 /* ManagedObjectObserver.swift */; }; - 2DF75BC725D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF75BC625D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift */; }; 4278334D6033AEEE0A1C5155 /* Pods_ShareActionExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A32B0CACBF35F4CC3CFAA043 /* Pods_ShareActionExtension.framework */; }; 5B24BBDA262DB14800A9381B /* ReportViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */; }; 5B24BBDB262DB14800A9381B /* ReportViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */; }; @@ -112,9 +102,6 @@ 5B90C460262599800002E742 /* SettingsAppearanceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C45A262599800002E742 /* SettingsAppearanceTableViewCell.swift */; }; 5B90C461262599800002E742 /* SettingsLinkTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C45B262599800002E742 /* SettingsLinkTableViewCell.swift */; }; 5B90C462262599800002E742 /* SettingsSectionHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C45C262599800002E742 /* SettingsSectionHeader.swift */; }; - 5B90C46E26259B2C0002E742 /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C46C26259B2C0002E742 /* Subscription.swift */; }; - 5B90C46F26259B2C0002E742 /* Setting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C46D26259B2C0002E742 /* Setting.swift */; }; - 5B90C47F26259BA90002E742 /* SubscriptionAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C47E26259BA90002E742 /* SubscriptionAlerts.swift */; }; 5B90C48526259BF10002E742 /* APIService+Subscriptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C48426259BF10002E742 /* APIService+Subscriptions.swift */; }; 5B90C48B26259C120002E742 /* APIService+CoreData+Subscriptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C48A26259C120002E742 /* APIService+CoreData+Subscriptions.swift */; }; 5BB04FD5262E7AFF0043BFF6 /* ReportViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB04FD4262E7AFF0043BFF6 /* ReportViewController.swift */; }; @@ -151,12 +138,6 @@ DB023D2A27A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D2927A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift */; }; DB023D2C27A10464005AC798 /* NotificationTimelineViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023D2B27A10464005AC798 /* NotificationTimelineViewController+DataSourceProvider.swift */; }; DB025B78278D606A002F581E /* StatusItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B77278D606A002F581E /* StatusItem.swift */; }; - DB025B84278D6272002F581E /* AutoGenerateProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B81278D6271002F581E /* AutoGenerateProperty.swift */; }; - DB025B85278D6272002F581E /* AutoUpdatableObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B82278D6272002F581E /* AutoUpdatableObject.swift */; }; - DB025B86278D6272002F581E /* AutoGenerateRelationship.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B83278D6272002F581E /* AutoGenerateRelationship.swift */; }; - DB025B89278D6339002F581E /* Feed.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B88278D6339002F581E /* Feed.swift */; }; - DB025B8C278D6374002F581E /* Acct.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B8B278D6374002F581E /* Acct.swift */; }; - DB025B90278D6489002F581E /* Feed+Kind.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B8F278D6489002F581E /* Feed+Kind.swift */; }; DB025B93278D6501002F581E /* Persistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B92278D6501002F581E /* Persistence.swift */; }; DB025B95278D6530002F581E /* Persistence+MastodonUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B94278D6530002F581E /* Persistence+MastodonUser.swift */; }; DB025B97278D66D5002F581E /* MastodonUser+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB025B96278D66D5002F581E /* MastodonUser+Property.swift */; }; @@ -188,7 +169,6 @@ DB0EF72E26FDB24F00347686 /* SidebarListContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0EF72D26FDB24F00347686 /* SidebarListContentView.swift */; }; DB0F8150264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0F814F264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift */; }; DB0FCB68279507EF006C02E2 /* DataSourceFacade+Meta.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB67279507EF006C02E2 /* DataSourceFacade+Meta.swift */; }; - DB0FCB6A27950CB3006C02E2 /* MastodonMention.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB6927950CB3006C02E2 /* MastodonMention.swift */; }; DB0FCB6C27950E29006C02E2 /* MastodonMentionContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB6B27950E29006C02E2 /* MastodonMentionContainer.swift */; }; DB0FCB6E27950E6B006C02E2 /* MastodonMention.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB6D27950E6B006C02E2 /* MastodonMention.swift */; }; DB0FCB7027951368006C02E2 /* TimelineMiddleLoaderTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0FCB6F27951368006C02E2 /* TimelineMiddleLoaderTableViewCell+ViewModel.swift */; }; @@ -234,25 +214,20 @@ DB2F073525E8ECF000957B2D /* AuthenticationViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB2F073325E8ECF000957B2D /* AuthenticationViewModel.swift */; }; DB2FF510260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB2FF50F260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift */; }; DB336F1C278D697E0031E64B /* MastodonUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAE225CA7181005A8AC7 /* MastodonUser.swift */; }; - DB336F1E278D6C3A0031E64B /* MastodonEmoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F1D278D6C3A0031E64B /* MastodonEmoji.swift */; }; DB336F21278D6D960031E64B /* MastodonEmoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F20278D6D960031E64B /* MastodonEmoji.swift */; }; DB336F23278D6DED0031E64B /* MastodonEmojiContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F22278D6DED0031E64B /* MastodonEmojiContainer.swift */; }; - DB336F26278D6E8F0031E64B /* MastodonField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F25278D6E8F0031E64B /* MastodonField.swift */; }; DB336F28278D6EC70031E64B /* MastodonFieldContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F27278D6EC70031E64B /* MastodonFieldContainer.swift */; }; DB336F2A278D6F2B0031E64B /* MastodonField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F29278D6F2B0031E64B /* MastodonField.swift */; }; DB336F2C278D6FC30031E64B /* Persistence+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F2B278D6FC30031E64B /* Persistence+Status.swift */; }; DB336F2E278D71AF0031E64B /* Status+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F2D278D71AF0031E64B /* Status+Property.swift */; }; - DB336F30278D723D0031E64B /* MastodonVisibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F2F278D723D0031E64B /* MastodonVisibility.swift */; }; DB336F32278D77330031E64B /* Persistence+Poll.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F31278D77330031E64B /* Persistence+Poll.swift */; }; DB336F34278D77730031E64B /* Persistence+PollOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F33278D77730031E64B /* Persistence+PollOption.swift */; }; DB336F36278D77A40031E64B /* PollOption+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F35278D77A40031E64B /* PollOption+Property.swift */; }; DB336F38278D7AAF0031E64B /* Poll+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F37278D7AAF0031E64B /* Poll+Property.swift */; }; - DB336F3A278D7D1F0031E64B /* ManagedObjectRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F39278D7D1F0031E64B /* ManagedObjectRecord.swift */; }; DB336F3D278D80040031E64B /* FeedFetchedResultsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F3C278D80040031E64B /* FeedFetchedResultsController.swift */; }; DB336F3F278E668C0031E64B /* StatusTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F3E278E668C0031E64B /* StatusTableViewCell+ViewModel.swift */; }; DB336F41278E68480031E64B /* StatusView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F40278E68480031E64B /* StatusView+Configuration.swift */; }; DB336F43278EB1690031E64B /* MediaView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F42278EB1680031E64B /* MediaView+Configuration.swift */; }; - DB336F45278EB1D70031E64B /* MastodonAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB336F44278EB1D70031E64B /* MastodonAttachment.swift */; }; DB35FC1F2612F1D9006193C9 /* ProfileRelationshipActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB35FC1E2612F1D9006193C9 /* ProfileRelationshipActionButton.swift */; }; DB36679D268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB36679C268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift */; }; DB36679F268ABAF20027D07F /* ComposeStatusAttachmentSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB36679E268ABAF20027D07F /* ComposeStatusAttachmentSection.swift */; }; @@ -274,13 +249,10 @@ DB44768B260B3F2100B66B82 /* CustomEmojiPickerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB44768A260B3F2100B66B82 /* CustomEmojiPickerItem.swift */; }; DB447691260B406600B66B82 /* CustomEmojiPickerItemCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB447690260B406600B66B82 /* CustomEmojiPickerItemCollectionViewCell.swift */; }; DB447697260B439000B66B82 /* CustomEmojiPickerHeaderCollectionReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB447696260B439000B66B82 /* CustomEmojiPickerHeaderCollectionReusableView.swift */; }; - DB4481AD25EE155900BEFB67 /* Poll.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4481AC25EE155900BEFB67 /* Poll.swift */; }; - DB4481B325EE16D000BEFB67 /* PollOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4481B225EE16D000BEFB67 /* PollOption.swift */; }; DB4481B925EE289600BEFB67 /* UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4481B825EE289600BEFB67 /* UITableView.swift */; }; DB45FAB625CA5485005A8AC7 /* UIAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAB525CA5485005A8AC7 /* UIAlertController.swift */; }; DB45FAD725CA6C76005A8AC7 /* UIBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAD625CA6C76005A8AC7 /* UIBarButtonItem.swift */; }; DB45FAE325CA7181005A8AC7 /* MastodonUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAE225CA7181005A8AC7 /* MastodonUser.swift */; }; - DB45FAED25CA7A9A005A8AC7 /* MastodonAuthentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAEC25CA7A9A005A8AC7 /* MastodonAuthentication.swift */; }; DB45FAF925CA80A2005A8AC7 /* APIService+CoreData+MastodonAuthentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FAF825CA80A2005A8AC7 /* APIService+CoreData+MastodonAuthentication.swift */; }; DB45FB0F25CA87D0005A8AC7 /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FB0E25CA87D0005A8AC7 /* AuthenticationService.swift */; }; DB45FB1D25CA9D23005A8AC7 /* APIService+HomeTimeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FB1C25CA9D23005A8AC7 /* APIService+HomeTimeline.swift */; }; @@ -342,13 +314,11 @@ DB63F75A279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F759279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift */; }; DB63F75C279956D000455B82 /* Persistence+Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F75B279956D000455B82 /* Persistence+Tag.swift */; }; DB63F75E27995B3B00455B82 /* Tag+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F75D27995B3B00455B82 /* Tag+Property.swift */; }; - DB63F76027995ECE00455B82 /* MastodonTagHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F75F27995ECE00455B82 /* MastodonTagHistory.swift */; }; DB63F76227996B6600455B82 /* SearchHistoryViewController+DataSourceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F76127996B6600455B82 /* SearchHistoryViewController+DataSourceProvider.swift */; }; DB63F764279A5E3C00455B82 /* NotificationTimelineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F763279A5E3C00455B82 /* NotificationTimelineViewController.swift */; }; DB63F767279A5EB300455B82 /* NotificationTimelineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F766279A5EB300455B82 /* NotificationTimelineViewModel.swift */; }; DB63F769279A5EBB00455B82 /* NotificationTimelineViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F768279A5EBB00455B82 /* NotificationTimelineViewModel+Diffable.swift */; }; DB63F76B279A5ED300455B82 /* NotificationTimelineViewModel+LoadOldestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F76A279A5ED300455B82 /* NotificationTimelineViewModel+LoadOldestState.swift */; }; - DB63F76D279A67BD00455B82 /* MastodonNotificationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F76C279A67BD00455B82 /* MastodonNotificationType.swift */; }; DB63F76F279A7D1100455B82 /* NotificationTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F76E279A7D1100455B82 /* NotificationTableViewCell.swift */; }; DB63F771279A858500455B82 /* Persistence+Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F770279A858500455B82 /* Persistence+Notification.swift */; }; DB63F773279A87DC00455B82 /* Notification+Property.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB63F772279A87DC00455B82 /* Notification+Property.swift */; }; @@ -376,12 +346,9 @@ DB6804832637CD4C00430867 /* AppShared.h in Headers */ = {isa = PBXBuildFile; fileRef = DB6804812637CD4C00430867 /* AppShared.h */; settings = {ATTRIBUTES = (Public, ); }; }; DB6804862637CD4C00430867 /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; DB6804872637CD4C00430867 /* AppShared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - DB6804922637CD8700430867 /* AppName.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804912637CD8700430867 /* AppName.swift */; }; - DB6804A52637CDCC00430867 /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; DB6804D12637CE4700430867 /* UserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804D02637CE4700430867 /* UserDefaults.swift */; }; DB6804FD2637CFEC00430867 /* AppSecret.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804FC2637CFEC00430867 /* AppSecret.swift */; }; DB6805102637D0F800430867 /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = DB68050F2637D0F800430867 /* KeychainAccess */; }; - DB6805262637D7DD00430867 /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; DB68586425E619B700F0A850 /* NSKeyValueObservation.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68586325E619B700F0A850 /* NSKeyValueObservation.swift */; }; DB68A04A25E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68A04925E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift */; }; DB68A05D25E9055900CFDF14 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = DB68A05C25E9055900CFDF14 /* Settings.bundle */; }; @@ -429,7 +396,6 @@ DB7274F4273BB9B200577D95 /* ListBatchFetchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB7274F3273BB9B200577D95 /* ListBatchFetchViewModel.swift */; }; DB73B490261F030A002E9E9F /* SafariActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB73B48F261F030A002E9E9F /* SafariActivity.swift */; }; DB73BF3B2711885500781945 /* UserDefaults+Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB73BF3A2711885500781945 /* UserDefaults+Notification.swift */; }; - DB73BF4127118B6D00781945 /* Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB73BF4027118B6D00781945 /* Instance.swift */; }; DB73BF43271192BB00781945 /* InstanceService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB73BF42271192BB00781945 /* InstanceService.swift */; }; DB73BF45271195AC00781945 /* APIService+CoreData+Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB73BF44271195AC00781945 /* APIService+CoreData+Instance.swift */; }; DB73BF47271199CA00781945 /* Instance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB73BF46271199CA00781945 /* Instance.swift */; }; @@ -447,20 +413,6 @@ DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */; }; DB87D4452609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D4442609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift */; }; DB87D4512609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D4502609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift */; }; - DB89B9F725C10FD0008580ED /* CoreDataStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */; }; - DB89B9FE25C10FD0008580ED /* CoreDataStackTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89B9FD25C10FD0008580ED /* CoreDataStackTests.swift */; }; - DB89BA0025C10FD0008580ED /* CoreDataStack.h in Headers */ = {isa = PBXBuildFile; fileRef = DB89B9F025C10FD0008580ED /* CoreDataStack.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DB89BA0325C10FD0008580ED /* CoreDataStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */; }; - DB89BA0425C10FD0008580ED /* CoreDataStack.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - DB89BA1225C1105C008580ED /* CoreDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89BA1125C1105C008580ED /* CoreDataStack.swift */; }; - DB89BA1B25C1107F008580ED /* Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89BA1825C1107F008580ED /* Collection.swift */; }; - DB89BA1C25C1107F008580ED /* NSManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89BA1925C1107F008580ED /* NSManagedObjectContext.swift */; }; - DB89BA1D25C1107F008580ED /* URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89BA1A25C1107F008580ED /* URL.swift */; }; - DB89BA2725C110B4008580ED /* Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89BA2625C110B4008580ED /* Status.swift */; }; - DB89BA3725C1145C008580ED /* CoreData.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DB89BA3525C1145C008580ED /* CoreData.xcdatamodeld */; }; - DB89BA4325C1165F008580ED /* NetworkUpdatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89BA4125C1165F008580ED /* NetworkUpdatable.swift */; }; - DB89BA4425C1165F008580ED /* Managed.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89BA4225C1165F008580ED /* Managed.swift */; }; - DB8AF52525C131D1002E6C99 /* MastodonUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF52425C131D1002E6C99 /* MastodonUser.swift */; }; DB8AF52E25C13561002E6C99 /* ViewStateStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF52B25C13561002E6C99 /* ViewStateStore.swift */; }; DB8AF52F25C13561002E6C99 /* DocumentStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF52C25C13561002E6C99 /* DocumentStore.swift */; }; DB8AF53025C13561002E6C99 /* AppContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF52D25C13561002E6C99 /* AppContext.swift */; }; @@ -468,13 +420,10 @@ DB8AF54525C13647002E6C99 /* NeedsDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF54325C13647002E6C99 /* NeedsDependency.swift */; }; DB8AF55025C13703002E6C99 /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF54F25C13703002E6C99 /* MainTabBarController.swift */; }; DB8AF55D25C138B7002E6C99 /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF55C25C138B7002E6C99 /* UIViewController.swift */; }; - DB8AF56825C13E2A002E6C99 /* HomeTimelineIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF56725C13E2A002E6C99 /* HomeTimelineIndex.swift */; }; DB8F7076279E954700E1225B /* DataSourceFacade+Follow.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8F7075279E954700E1225B /* DataSourceFacade+Follow.swift */; }; DB8FABC726AEC7B2008E5AF4 /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB8FAB9E26AEC3A2008E5AF4 /* Intents.framework */; }; DB8FABCA26AEC7B2008E5AF4 /* IntentHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8FABC926AEC7B2008E5AF4 /* IntentHandler.swift */; }; DB8FABCE26AEC7B2008E5AF4 /* MastodonIntent.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = DB8FABC626AEC7B2008E5AF4 /* MastodonIntent.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - DB8FABD726AEC873008E5AF4 /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; - DB8FABDC26AEC87B008E5AF4 /* CoreDataStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */; }; DB9282B225F3222800823B15 /* PickServerEmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9282B125F3222800823B15 /* PickServerEmptyStateView.swift */; }; DB938EE62623F50700E5B6C1 /* ThreadViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938EE52623F50700E5B6C1 /* ThreadViewController.swift */; }; DB938EED2623F79B00E5B6C1 /* ThreadViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB938EEC2623F79B00E5B6C1 /* ThreadViewModel.swift */; }; @@ -580,8 +529,6 @@ DBC6461C26A170AB00B0E31B /* ShareActionExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = DBC6461226A170AB00B0E31B /* ShareActionExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; DBC6462326A1712000B0E31B /* ShareViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC6462226A1712000B0E31B /* ShareViewModel.swift */; }; DBC6462826A1736300B0E31B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DB427DDE25BAA00100D1B89D /* Assets.xcassets */; }; - DBC6463326A195DB00B0E31B /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; - DBC6463726A195DB00B0E31B /* CoreDataStack.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */; }; DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC7A671260C897100E57475 /* StatusContentWarningEditorView.swift */; }; DBC7A67C260DFADE00E57475 /* StatusPublishService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC7A67B260DFADE00E57475 /* StatusPublishService.swift */; }; DBCBCBF4267CB070000F5B51 /* Decode85.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCBCBF3267CB070000F5B51 /* Decode85.swift */; }; @@ -592,13 +539,19 @@ DBCC3B36261440BA0045B23D /* UINavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCC3B35261440BA0045B23D /* UINavigationController.swift */; }; DBCC3B8F26148F7B0045B23D /* CachedProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCC3B8E26148F7B0045B23D /* CachedProfileViewModel.swift */; }; DBCC3B9526157E6E0045B23D /* APIService+Relationship.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCC3B9426157E6E0045B23D /* APIService+Relationship.swift */; }; - DBCC3B9B261584A00045B23D /* PrivateNote.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCC3B9A2615849F0045B23D /* PrivateNote.swift */; }; DBCCC71E25F73297007E1AB6 /* APIService+Reblog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCCC71D25F73297007E1AB6 /* APIService+Reblog.swift */; }; DBD376AC2692ECDB007FEC24 /* ThemePreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD376AB2692ECDB007FEC24 /* ThemePreference.swift */; }; DBD376B2269302A4007FEC24 /* UITableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD376B1269302A4007FEC24 /* UITableViewCell.swift */; }; DBD9149025DF6D8D00903DFD /* APIService+Onboarding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD9148F25DF6D8D00903DFD /* APIService+Onboarding.swift */; }; DBE0821525CD382600FD6BBD /* MastodonRegisterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE0821425CD382600FD6BBD /* MastodonRegisterViewController.swift */; }; DBE0822425CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */; }; + DBE3CA6727A39BD900AFE27B /* MastodonCommon in Frameworks */ = {isa = PBXBuildFile; productRef = DBE3CA6627A39BD900AFE27B /* MastodonCommon */; }; + DBE3CA6827A39CAB00AFE27B /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; + DBE3CA6927A39CAB00AFE27B /* AppShared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + DBE3CA6B27A39CAF00AFE27B /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; + DBE3CA6C27A39CAF00AFE27B /* AppShared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + DBE3CA6E27A39CB300AFE27B /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; + DBE3CA6F27A39CB300AFE27B /* AppShared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DBE3CDBB261C427900430CC6 /* TimelineHeaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CDBA261C427900430CC6 /* TimelineHeaderTableViewCell.swift */; }; DBE3CDCF261C42ED00430CC6 /* TimelineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CDCE261C42ED00430CC6 /* TimelineHeaderView.swift */; }; DBE3CDEC261C6B2900430CC6 /* FavoriteViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CDEB261C6B2900430CC6 /* FavoriteViewController.swift */; }; @@ -680,34 +633,6 @@ remoteGlobalIDString = DB68047E2637CD4C00430867; remoteInfo = AppShared; }; - DB6805282637D7DD00430867 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DB427DCA25BAA00100D1B89D /* Project object */; - proxyType = 1; - remoteGlobalIDString = DB68047E2637CD4C00430867; - remoteInfo = AppShared; - }; - DB89B9F825C10FD0008580ED /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DB427DCA25BAA00100D1B89D /* Project object */; - proxyType = 1; - remoteGlobalIDString = DB89B9ED25C10FD0008580ED; - remoteInfo = CoreDataStack; - }; - DB89B9FA25C10FD0008580ED /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DB427DCA25BAA00100D1B89D /* Project object */; - proxyType = 1; - remoteGlobalIDString = DB427DD125BAA00100D1B89D; - remoteInfo = Mastodon; - }; - DB89BA0125C10FD0008580ED /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DB427DCA25BAA00100D1B89D /* Project object */; - proxyType = 1; - remoteGlobalIDString = DB89B9ED25C10FD0008580ED; - remoteInfo = CoreDataStack; - }; DB8FABCC26AEC7B2008E5AF4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = DB427DCA25BAA00100D1B89D /* Project object */; @@ -722,13 +647,6 @@ remoteGlobalIDString = DB68047E2637CD4C00430867; remoteInfo = AppShared; }; - DB8FABDE26AEC87B008E5AF4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DB427DCA25BAA00100D1B89D /* Project object */; - proxyType = 1; - remoteGlobalIDString = DB89B9ED25C10FD0008580ED; - remoteInfo = CoreDataStack; - }; DBC6461A26A170AB00B0E31B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = DB427DCA25BAA00100D1B89D /* Project object */; @@ -743,13 +661,6 @@ remoteGlobalIDString = DB68047E2637CD4C00430867; remoteInfo = AppShared; }; - DBC6463926A195DB00B0E31B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DB427DCA25BAA00100D1B89D /* Project object */; - proxyType = 1; - remoteGlobalIDString = DB89B9ED25C10FD0008580ED; - remoteInfo = CoreDataStack; - }; DBF8AE18263293E400C9C23C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = DB427DCA25BAA00100D1B89D /* Project object */; @@ -767,7 +678,39 @@ dstSubfolderSpec = 10; files = ( DB6804872637CD4C00430867 /* AppShared.framework in Embed Frameworks */, - DB89BA0425C10FD0008580ED /* CoreDataStack.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + DBE3CA6A27A39CAB00AFE27B /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + DBE3CA6927A39CAB00AFE27B /* AppShared.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + DBE3CA6D27A39CAF00AFE27B /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + DBE3CA6C27A39CAF00AFE27B /* AppShared.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + DBE3CA7027A39CB300AFE27B /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + DBE3CA6F27A39CB300AFE27B /* AppShared.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -808,8 +751,6 @@ 164F0EBB267D4FE400249499 /* BoopSound.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = BoopSound.caf; sourceTree = ""; }; 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk - debug.xcconfig"; sourceTree = ""; }; 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+Diffable.swift"; sourceTree = ""; }; - 2D0B7A1C261D839600B44727 /* SearchHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistory.swift; sourceTree = ""; }; - 2D152A9125C2980C009AA50C /* UIFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIFont.swift; sourceTree = ""; }; 2D198642261BF09500F0B013 /* SearchResultItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultItem.swift; sourceTree = ""; }; 2D198648261C0B8500F0B013 /* SearchResultSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultSection.swift; sourceTree = ""; }; 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioContainerView.swift; sourceTree = ""; }; @@ -842,7 +783,6 @@ 2D5A3D3725CF8D9F002347D6 /* ScrollViewContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScrollViewContainer.swift; sourceTree = ""; }; 2D5A3D6125CFD9CB002347D6 /* HomeTimelineViewController+DebugAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeTimelineViewController+DebugAction.swift"; sourceTree = ""; }; 2D607AD726242FC500B70763 /* NotificationViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewModel.swift; sourceTree = ""; }; - 2D6125462625436B00299647 /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = ""; }; 2D61254C262547C200299647 /* APIService+Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Notification.swift"; sourceTree = ""; }; 2D61335D25C1894B00CAE157 /* APIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIService.swift; sourceTree = ""; }; 2D650FAA25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Error+Detail.swift"; sourceTree = ""; }; @@ -857,13 +797,9 @@ 2D8434FA25FF46B300EECE90 /* HomeTimelineNavigationBarTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineNavigationBarTitleView.swift; sourceTree = ""; }; 2D84350425FF858100EECE90 /* UIScrollView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIScrollView.swift; sourceTree = ""; }; 2D8FCA072637EABB00137F46 /* APIService+FollowRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+FollowRequest.swift"; sourceTree = ""; }; - 2D927F0725C7E9A8004F19B8 /* Tag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tag.swift; sourceTree = ""; }; - 2D927F0D25C7E9C9004F19B8 /* History.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = History.swift; sourceTree = ""; }; - 2D927F1325C7EDD9004F19B8 /* Emoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Emoji.swift; sourceTree = ""; }; 2D939AB425EDD8A90076FA61 /* String.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = String.swift; sourceTree = ""; }; 2D939AE725EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonRegisterViewController+Avatar.swift"; sourceTree = ""; }; 2D9DB966263A76FB007C1D71 /* BlockDomainService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockDomainService.swift; sourceTree = ""; }; - 2D9DB968263A833E007C1D71 /* DomainBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainBlock.swift; sourceTree = ""; }; 2D9DB96A263A91D1007C1D71 /* APIService+DomainBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+DomainBlock.swift"; sourceTree = ""; }; 2DA504682601ADE7008F4E6C /* SawToothView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SawToothView.swift; sourceTree = ""; }; 2DA6054625F716A2006356F9 /* PlaybackState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaybackState.swift; sourceTree = ""; }; @@ -871,7 +807,6 @@ 2DA7D04325CA52B200804E11 /* TimelineLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineLoaderTableViewCell.swift; sourceTree = ""; }; 2DA7D04925CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineBottomLoaderTableViewCell.swift; sourceTree = ""; }; 2DA7D05025CA545E00804E11 /* LoadMoreConfigurableTableViewContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadMoreConfigurableTableViewContainer.swift; sourceTree = ""; }; - 2DA7D05625CA693F00804E11 /* Application.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Application.swift; sourceTree = ""; }; 2DAC9E37262FC2320062E1A6 /* SuggestionAccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuggestionAccountViewController.swift; sourceTree = ""; }; 2DAC9E3D262FC2400062E1A6 /* SuggestionAccountViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuggestionAccountViewModel.swift; sourceTree = ""; }; 2DAC9E45262FC9FD0062E1A6 /* SuggestionAccountTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuggestionAccountTableViewCell.swift; sourceTree = ""; }; @@ -880,8 +815,6 @@ 2DE0FACD2615F7AD00CDF649 /* RecommendAccountSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendAccountSection.swift; sourceTree = ""; }; 2DF123A625C3B0210020F248 /* ActiveLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActiveLabel.swift; sourceTree = ""; }; 2DF75BA625D10E1000694EC8 /* APIService+Favorite.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Favorite.swift"; sourceTree = ""; }; - 2DF75BB825D1474100694EC8 /* ManagedObjectObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedObjectObserver.swift; sourceTree = ""; }; - 2DF75BC625D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedObjectContextObjectsDidChange.swift; sourceTree = ""; }; 2E1F6A67FDF9771D3E064FDC /* Pods-Mastodon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.debug.xcconfig"; sourceTree = ""; }; 374AA339A20E0FAC75BCDA6D /* Pods_NotificationService.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NotificationService.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3B7FD8F28DDA8FBCE5562B78 /* Pods-NotificationService.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.asdk - debug.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.asdk - debug.xcconfig"; sourceTree = ""; }; @@ -898,9 +831,6 @@ 5B90C45A262599800002E742 /* SettingsAppearanceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppearanceTableViewCell.swift; sourceTree = ""; }; 5B90C45B262599800002E742 /* SettingsLinkTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsLinkTableViewCell.swift; sourceTree = ""; }; 5B90C45C262599800002E742 /* SettingsSectionHeader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsSectionHeader.swift; sourceTree = ""; }; - 5B90C46C26259B2C0002E742 /* Subscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Subscription.swift; sourceTree = ""; }; - 5B90C46D26259B2C0002E742 /* Setting.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Setting.swift; sourceTree = ""; }; - 5B90C47E26259BA90002E742 /* SubscriptionAlerts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscriptionAlerts.swift; sourceTree = ""; }; 5B90C48426259BF10002E742 /* APIService+Subscriptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+Subscriptions.swift"; sourceTree = ""; }; 5B90C48A26259C120002E742 /* APIService+CoreData+Subscriptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+Subscriptions.swift"; sourceTree = ""; }; 5BB04FD4262E7AFF0043BFF6 /* ReportViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportViewController.swift; sourceTree = ""; }; @@ -954,16 +884,6 @@ DB023D2927A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceProvider+NotificationTableViewCellDelegate.swift"; sourceTree = ""; }; DB023D2B27A10464005AC798 /* NotificationTimelineViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationTimelineViewController+DataSourceProvider.swift"; sourceTree = ""; }; DB025B77278D606A002F581E /* StatusItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusItem.swift; sourceTree = ""; }; - DB025B79278D6138002F581E /* CoreData 3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "CoreData 3.xcdatamodel"; sourceTree = ""; }; - DB025B7D278D6247002F581E /* AutoGenerateProperty.stencil */ = {isa = PBXFileReference; lastKnownFileType = text; path = AutoGenerateProperty.stencil; sourceTree = ""; }; - DB025B7E278D6247002F581E /* AutoUpdatableObject.stencil */ = {isa = PBXFileReference; lastKnownFileType = text; path = AutoUpdatableObject.stencil; sourceTree = ""; }; - DB025B7F278D6247002F581E /* AutoGenerateRelationship.stencil */ = {isa = PBXFileReference; lastKnownFileType = text; path = AutoGenerateRelationship.stencil; sourceTree = ""; }; - DB025B81278D6271002F581E /* AutoGenerateProperty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoGenerateProperty.swift; sourceTree = ""; }; - DB025B82278D6272002F581E /* AutoUpdatableObject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoUpdatableObject.swift; sourceTree = ""; }; - DB025B83278D6272002F581E /* AutoGenerateRelationship.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AutoGenerateRelationship.swift; sourceTree = ""; }; - DB025B88278D6339002F581E /* Feed.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Feed.swift; sourceTree = ""; }; - DB025B8B278D6374002F581E /* Acct.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Acct.swift; sourceTree = ""; }; - DB025B8F278D6489002F581E /* Feed+Kind.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Feed+Kind.swift"; sourceTree = ""; }; DB025B92278D6501002F581E /* Persistence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Persistence.swift; sourceTree = ""; }; DB025B94278D6530002F581E /* Persistence+MastodonUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+MastodonUser.swift"; sourceTree = ""; }; DB025B96278D66D5002F581E /* MastodonUser+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MastodonUser+Property.swift"; sourceTree = ""; }; @@ -995,7 +915,6 @@ DB0F814E264CFFD300F2A12B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/InfoPlist.strings; sourceTree = ""; }; DB0F814F264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerLoaderTableViewCell.swift; sourceTree = ""; }; DB0FCB67279507EF006C02E2 /* DataSourceFacade+Meta.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Meta.swift"; sourceTree = ""; }; - DB0FCB6927950CB3006C02E2 /* MastodonMention.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonMention.swift; sourceTree = ""; }; DB0FCB6B27950E29006C02E2 /* MastodonMentionContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonMentionContainer.swift; sourceTree = ""; }; DB0FCB6D27950E6B006C02E2 /* MastodonMention.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonMention.swift; sourceTree = ""; }; DB0FCB6F27951368006C02E2 /* TimelineMiddleLoaderTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TimelineMiddleLoaderTableViewCell+ViewModel.swift"; sourceTree = ""; }; @@ -1046,25 +965,20 @@ DB2B3ABD25E37E15007045F9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; DB2F073325E8ECF000957B2D /* AuthenticationViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthenticationViewModel.swift; sourceTree = ""; }; DB2FF50F260B113300ADA9FE /* ComposeStatusPollExpiresOptionCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollExpiresOptionCollectionViewCell.swift; sourceTree = ""; }; - DB336F1D278D6C3A0031E64B /* MastodonEmoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonEmoji.swift; sourceTree = ""; }; DB336F20278D6D960031E64B /* MastodonEmoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonEmoji.swift; sourceTree = ""; }; DB336F22278D6DED0031E64B /* MastodonEmojiContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonEmojiContainer.swift; sourceTree = ""; }; - DB336F25278D6E8F0031E64B /* MastodonField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonField.swift; sourceTree = ""; }; DB336F27278D6EC70031E64B /* MastodonFieldContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonFieldContainer.swift; sourceTree = ""; }; DB336F29278D6F2B0031E64B /* MastodonField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonField.swift; sourceTree = ""; }; DB336F2B278D6FC30031E64B /* Persistence+Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+Status.swift"; sourceTree = ""; }; DB336F2D278D71AF0031E64B /* Status+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Status+Property.swift"; sourceTree = ""; }; - DB336F2F278D723D0031E64B /* MastodonVisibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonVisibility.swift; sourceTree = ""; }; DB336F31278D77330031E64B /* Persistence+Poll.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+Poll.swift"; sourceTree = ""; }; DB336F33278D77730031E64B /* Persistence+PollOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+PollOption.swift"; sourceTree = ""; }; DB336F35278D77A40031E64B /* PollOption+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PollOption+Property.swift"; sourceTree = ""; }; DB336F37278D7AAF0031E64B /* Poll+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Poll+Property.swift"; sourceTree = ""; }; - DB336F39278D7D1F0031E64B /* ManagedObjectRecord.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManagedObjectRecord.swift; sourceTree = ""; }; DB336F3C278D80040031E64B /* FeedFetchedResultsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedFetchedResultsController.swift; sourceTree = ""; }; DB336F3E278E668C0031E64B /* StatusTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusTableViewCell+ViewModel.swift"; sourceTree = ""; }; DB336F40278E68480031E64B /* StatusView+Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusView+Configuration.swift"; sourceTree = ""; }; DB336F42278EB1680031E64B /* MediaView+Configuration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "MediaView+Configuration.swift"; sourceTree = ""; }; - DB336F44278EB1D70031E64B /* MastodonAttachment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAttachment.swift; sourceTree = ""; }; DB35FC1E2612F1D9006193C9 /* ProfileRelationshipActionButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileRelationshipActionButton.swift; sourceTree = ""; }; DB36679C268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusAttachmentTableViewCell.swift; sourceTree = ""; }; DB36679E268ABAF20027D07F /* ComposeStatusAttachmentSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusAttachmentSection.swift; sourceTree = ""; }; @@ -1092,13 +1006,10 @@ DB44768A260B3F2100B66B82 /* CustomEmojiPickerItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomEmojiPickerItem.swift; sourceTree = ""; }; DB447690260B406600B66B82 /* CustomEmojiPickerItemCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomEmojiPickerItemCollectionViewCell.swift; sourceTree = ""; }; DB447696260B439000B66B82 /* CustomEmojiPickerHeaderCollectionReusableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomEmojiPickerHeaderCollectionReusableView.swift; sourceTree = ""; }; - DB4481AC25EE155900BEFB67 /* Poll.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Poll.swift; sourceTree = ""; }; - DB4481B225EE16D000BEFB67 /* PollOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollOption.swift; sourceTree = ""; }; DB4481B825EE289600BEFB67 /* UITableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UITableView.swift; sourceTree = ""; }; DB45FAB525CA5485005A8AC7 /* UIAlertController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIAlertController.swift; sourceTree = ""; }; DB45FAD625CA6C76005A8AC7 /* UIBarButtonItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIBarButtonItem.swift; sourceTree = ""; }; DB45FAE225CA7181005A8AC7 /* MastodonUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonUser.swift; sourceTree = ""; }; - DB45FAEC25CA7A9A005A8AC7 /* MastodonAuthentication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAuthentication.swift; sourceTree = ""; }; DB45FAF825CA80A2005A8AC7 /* APIService+CoreData+MastodonAuthentication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+MastodonAuthentication.swift"; sourceTree = ""; }; DB45FB0E25CA87D0005A8AC7 /* AuthenticationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationService.swift; sourceTree = ""; }; DB45FB1C25CA9D23005A8AC7 /* APIService+HomeTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+HomeTimeline.swift"; sourceTree = ""; }; @@ -1176,13 +1087,11 @@ DB63F759279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchHistoryUserCollectionViewCell+ViewModel.swift"; sourceTree = ""; }; DB63F75B279956D000455B82 /* Persistence+Tag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+Tag.swift"; sourceTree = ""; }; DB63F75D27995B3B00455B82 /* Tag+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Tag+Property.swift"; sourceTree = ""; }; - DB63F75F27995ECE00455B82 /* MastodonTagHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonTagHistory.swift; sourceTree = ""; }; DB63F76127996B6600455B82 /* SearchHistoryViewController+DataSourceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchHistoryViewController+DataSourceProvider.swift"; sourceTree = ""; }; DB63F763279A5E3C00455B82 /* NotificationTimelineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationTimelineViewController.swift; sourceTree = ""; }; DB63F766279A5EB300455B82 /* NotificationTimelineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationTimelineViewModel.swift; sourceTree = ""; }; DB63F768279A5EBB00455B82 /* NotificationTimelineViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationTimelineViewModel+Diffable.swift"; sourceTree = ""; }; DB63F76A279A5ED300455B82 /* NotificationTimelineViewModel+LoadOldestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationTimelineViewModel+LoadOldestState.swift"; sourceTree = ""; }; - DB63F76C279A67BD00455B82 /* MastodonNotificationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonNotificationType.swift; sourceTree = ""; }; DB63F76E279A7D1100455B82 /* NotificationTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationTableViewCell.swift; sourceTree = ""; }; DB63F770279A858500455B82 /* Persistence+Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Persistence+Notification.swift"; sourceTree = ""; }; DB63F772279A87DC00455B82 /* Notification+Property.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Notification+Property.swift"; sourceTree = ""; }; @@ -1205,7 +1114,6 @@ DB68047F2637CD4C00430867 /* AppShared.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AppShared.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DB6804812637CD4C00430867 /* AppShared.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppShared.h; sourceTree = ""; }; DB6804822637CD4C00430867 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DB6804912637CD8700430867 /* AppName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppName.swift; sourceTree = ""; }; DB6804D02637CE4700430867 /* UserDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDefaults.swift; sourceTree = ""; }; DB6804FC2637CFEC00430867 /* AppSecret.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSecret.swift; sourceTree = ""; }; DB68053E2638011000430867 /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = ""; }; @@ -1255,7 +1163,6 @@ DB7274F3273BB9B200577D95 /* ListBatchFetchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListBatchFetchViewModel.swift; sourceTree = ""; }; DB73B48F261F030A002E9E9F /* SafariActivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariActivity.swift; sourceTree = ""; }; DB73BF3A2711885500781945 /* UserDefaults+Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserDefaults+Notification.swift"; sourceTree = ""; }; - DB73BF4027118B6D00781945 /* Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Instance.swift; sourceTree = ""; }; DB73BF42271192BB00781945 /* InstanceService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstanceService.swift; sourceTree = ""; }; DB73BF44271195AC00781945 /* APIService+CoreData+Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+Instance.swift"; sourceTree = ""; }; DB73BF46271199CA00781945 /* Instance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Instance.swift; sourceTree = ""; }; @@ -1273,22 +1180,7 @@ DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarViewModel.swift; sourceTree = ""; }; DB87D4442609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollOptionCollectionViewCell.swift; sourceTree = ""; }; DB87D4502609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollOptionAppendEntryCollectionViewCell.swift; sourceTree = ""; }; - DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CoreDataStack.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DB89B9F025C10FD0008580ED /* CoreDataStack.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreDataStack.h; sourceTree = ""; }; - DB89B9F125C10FD0008580ED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DB89B9F625C10FD0008580ED /* CoreDataStackTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreDataStackTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - DB89B9FD25C10FD0008580ED /* CoreDataStackTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataStackTests.swift; sourceTree = ""; }; - DB89B9FF25C10FD0008580ED /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; DB89BA1025C10FF5008580ED /* Mastodon.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Mastodon.entitlements; sourceTree = ""; }; - DB89BA1125C1105C008580ED /* CoreDataStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataStack.swift; sourceTree = ""; }; - DB89BA1825C1107F008580ED /* Collection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Collection.swift; sourceTree = ""; }; - DB89BA1925C1107F008580ED /* NSManagedObjectContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSManagedObjectContext.swift; sourceTree = ""; }; - DB89BA1A25C1107F008580ED /* URL.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URL.swift; sourceTree = ""; }; - DB89BA2625C110B4008580ED /* Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Status.swift; sourceTree = ""; }; - DB89BA3625C1145C008580ED /* CoreData.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = CoreData.xcdatamodel; sourceTree = ""; }; - DB89BA4125C1165F008580ED /* NetworkUpdatable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkUpdatable.swift; sourceTree = ""; }; - DB89BA4225C1165F008580ED /* Managed.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Managed.swift; sourceTree = ""; }; - DB8AF52425C131D1002E6C99 /* MastodonUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonUser.swift; sourceTree = ""; }; DB8AF52B25C13561002E6C99 /* ViewStateStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewStateStore.swift; sourceTree = ""; }; DB8AF52C25C13561002E6C99 /* DocumentStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DocumentStore.swift; sourceTree = ""; }; DB8AF52D25C13561002E6C99 /* AppContext.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppContext.swift; sourceTree = ""; }; @@ -1296,7 +1188,6 @@ DB8AF54325C13647002E6C99 /* NeedsDependency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NeedsDependency.swift; sourceTree = ""; }; DB8AF54F25C13703002E6C99 /* MainTabBarController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = ""; }; DB8AF55C25C138B7002E6C99 /* UIViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIViewController.swift; sourceTree = ""; }; - DB8AF56725C13E2A002E6C99 /* HomeTimelineIndex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineIndex.swift; sourceTree = ""; }; DB8F7075279E954700E1225B /* DataSourceFacade+Follow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceFacade+Follow.swift"; sourceTree = ""; }; DB8FAB9E26AEC3A2008E5AF4 /* Intents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Intents.framework; path = System/Library/Frameworks/Intents.framework; sourceTree = SDKROOT; }; DB8FABA926AEC3A2008E5AF4 /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; }; @@ -1415,7 +1306,6 @@ DBCC3B35261440BA0045B23D /* UINavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UINavigationController.swift; sourceTree = ""; }; DBCC3B8E26148F7B0045B23D /* CachedProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CachedProfileViewModel.swift; sourceTree = ""; }; DBCC3B9426157E6E0045B23D /* APIService+Relationship.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Relationship.swift"; sourceTree = ""; }; - DBCC3B9A2615849F0045B23D /* PrivateNote.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivateNote.swift; sourceTree = ""; }; DBCCC71D25F73297007E1AB6 /* APIService+Reblog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Reblog.swift"; sourceTree = ""; }; DBD376AB2692ECDB007FEC24 /* ThemePreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemePreference.swift; sourceTree = ""; }; DBD376B1269302A4007FEC24 /* UITableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITableViewCell.swift; sourceTree = ""; }; @@ -1433,7 +1323,6 @@ DBE3CE06261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewModel+Diffable.swift"; sourceTree = ""; }; DBE3CE12261D7D4200430CC6 /* StatusTableViewControllerAspect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusTableViewControllerAspect.swift; sourceTree = ""; }; DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationPreference.swift; sourceTree = ""; }; - DBF156DD27006F5D00EC00B7 /* CoreData 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "CoreData 2.xcdatamodel"; sourceTree = ""; }; DBF156DE2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarAddAccountCollectionViewCell.swift; sourceTree = ""; }; DBF156E02702DA6800EC00B7 /* Mastodon-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Mastodon-Bridging-Header.h"; sourceTree = ""; }; DBF156E12702DA6900EC00B7 /* UIStatusBarManager+HandleTapAction.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIStatusBarManager+HandleTapAction.m"; sourceTree = ""; }; @@ -1486,7 +1375,6 @@ buildActionMask = 2147483647; files = ( DB0140BD25C40D7500F9F3CF /* CommonOSLog in Frameworks */, - DB89BA0325C10FD0008580ED /* CoreDataStack.framework in Frameworks */, DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */, 2D939AC825EE14620076FA61 /* CropViewController in Frameworks */, DBB525082611EAC0002F1F29 /* Tabman in Frameworks */, @@ -1529,36 +1417,20 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + DBE3CA6727A39BD900AFE27B /* MastodonCommon in Frameworks */, DB6805102637D0F800430867 /* KeychainAccess in Frameworks */, EE93E8E8F9E0C39EAAEBD92F /* Pods_AppShared.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DB89B9EB25C10FD0008580ED /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DB6805262637D7DD00430867 /* AppShared.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DB89B9F325C10FD0008580ED /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DB89B9F725C10FD0008580ED /* CoreDataStack.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; DB8FABC326AEC7B2008E5AF4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( DB8FABC726AEC7B2008E5AF4 /* Intents.framework in Frameworks */, - DB8FABDC26AEC87B008E5AF4 /* CoreDataStack.framework in Frameworks */, DBB8AB4826AED09C00F6D281 /* MastodonSDK in Frameworks */, - DB8FABD726AEC873008E5AF4 /* AppShared.framework in Frameworks */, BBAC710E327AF1EE1DB36A4E /* Pods_MastodonIntent.framework in Frameworks */, + DBE3CA6E27A39CB300AFE27B /* AppShared.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1567,11 +1439,10 @@ buildActionMask = 2147483647; files = ( DBBC24B826A5421800398BB9 /* CommonOSLog in Frameworks */, - DBC6463726A195DB00B0E31B /* CoreDataStack.framework in Frameworks */, DBBC24D126A5484F00398BB9 /* UITextView+Placeholder in Frameworks */, DBBC24AA26A5301B00398BB9 /* MastodonSDK in Frameworks */, + DBE3CA6B27A39CAF00AFE27B /* AppShared.framework in Frameworks */, DB0C946526A6FD4D0088FB11 /* AlamofireImage in Frameworks */, - DBC6463326A195DB00B0E31B /* AppShared.framework in Frameworks */, 4278334D6033AEEE0A1C5155 /* Pods_ShareActionExtension.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1583,7 +1454,7 @@ DB00CA972632DDB600A54956 /* CommonOSLog in Frameworks */, DB179267278D5A4A00B71DEB /* MastodonSDK in Frameworks */, DB6D9F42263527CE008423CD /* AlamofireImage in Frameworks */, - DB6804A52637CDCC00430867 /* AppShared.framework in Frameworks */, + DBE3CA6827A39CAB00AFE27B /* AppShared.framework in Frameworks */, B914FC6B0B8AF18573C0B291 /* Pods_NotificationService.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1945,15 +1816,6 @@ path = View; sourceTree = ""; }; - 2DF75BB725D1473400694EC8 /* Stack */ = { - isa = PBXGroup; - children = ( - 2DF75BB825D1474100694EC8 /* ManagedObjectObserver.swift */, - 2DF75BC625D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift */, - ); - path = Stack; - sourceTree = ""; - }; 2DFAD5212616F8E300F9EE7C /* Cell */ = { isa = PBXGroup; children = ( @@ -2046,53 +1908,6 @@ path = Onboarding; sourceTree = ""; }; - DB025B7A278D6234002F581E /* Template */ = { - isa = PBXGroup; - children = ( - DB025B80278D6252002F581E /* Stencil */, - DB025B81278D6271002F581E /* AutoGenerateProperty.swift */, - DB025B83278D6272002F581E /* AutoGenerateRelationship.swift */, - DB025B82278D6272002F581E /* AutoUpdatableObject.swift */, - ); - path = Template; - sourceTree = ""; - }; - DB025B80278D6252002F581E /* Stencil */ = { - isa = PBXGroup; - children = ( - DB025B7D278D6247002F581E /* AutoGenerateProperty.stencil */, - DB025B7F278D6247002F581E /* AutoGenerateRelationship.stencil */, - DB025B7E278D6247002F581E /* AutoUpdatableObject.stencil */, - ); - path = Stencil; - sourceTree = ""; - }; - DB025B8A278D6367002F581E /* App */ = { - isa = PBXGroup; - children = ( - DB025B88278D6339002F581E /* Feed.swift */, - DB8AF56725C13E2A002E6C99 /* HomeTimelineIndex.swift */, - 5B90C46D26259B2C0002E742 /* Setting.swift */, - ); - path = App; - sourceTree = ""; - }; - DB025B8D278D6377002F581E /* Transient */ = { - isa = PBXGroup; - children = ( - DB025B8B278D6374002F581E /* Acct.swift */, - DB025B8F278D6489002F581E /* Feed+Kind.swift */, - DB336F1D278D6C3A0031E64B /* MastodonEmoji.swift */, - DB336F25278D6E8F0031E64B /* MastodonField.swift */, - DB0FCB6927950CB3006C02E2 /* MastodonMention.swift */, - DB336F2F278D723D0031E64B /* MastodonVisibility.swift */, - DB336F44278EB1D70031E64B /* MastodonAttachment.swift */, - DB63F75F27995ECE00455B82 /* MastodonTagHistory.swift */, - DB63F76C279A67BD00455B82 /* MastodonNotificationType.swift */, - ); - path = Transient; - sourceTree = ""; - }; DB025B91278D64F0002F581E /* Persistence */ = { isa = PBXGroup; children = ( @@ -2257,29 +2072,6 @@ path = View; sourceTree = ""; }; - DB336F1F278D6C8F0031E64B /* Mastodon */ = { - isa = PBXGroup; - children = ( - DB89BA2625C110B4008580ED /* Status.swift */, - DB8AF52425C131D1002E6C99 /* MastodonUser.swift */, - 2D9DB968263A833E007C1D71 /* DomainBlock.swift */, - 2D6125462625436B00299647 /* Notification.swift */, - 2D0B7A1C261D839600B44727 /* SearchHistory.swift */, - 2D927F0725C7E9A8004F19B8 /* Tag.swift */, - 2D927F0D25C7E9C9004F19B8 /* History.swift */, - 2D927F1325C7EDD9004F19B8 /* Emoji.swift */, - DB45FAEC25CA7A9A005A8AC7 /* MastodonAuthentication.swift */, - 2DA7D05625CA693F00804E11 /* Application.swift */, - DB4481AC25EE155900BEFB67 /* Poll.swift */, - DB4481B225EE16D000BEFB67 /* PollOption.swift */, - DBCC3B9A2615849F0045B23D /* PrivateNote.swift */, - 5B90C46C26259B2C0002E742 /* Subscription.swift */, - 5B90C47E26259BA90002E742 /* SubscriptionAlerts.swift */, - DB73BF4027118B6D00781945 /* Instance.swift */, - ); - path = Mastodon; - sourceTree = ""; - }; DB336F24278D6DF40031E64B /* Protocol */ = { isa = PBXGroup; children = ( @@ -2290,14 +2082,6 @@ path = Protocol; sourceTree = ""; }; - DB336F3B278D7D260031E64B /* Utility */ = { - isa = PBXGroup; - children = ( - DB336F39278D7D1F0031E64B /* ManagedObjectRecord.swift */, - ); - path = Utility; - sourceTree = ""; - }; DB3D0FF725BAA68500EAA174 /* Supporting Files */ = { isa = PBXGroup; children = ( @@ -2332,8 +2116,6 @@ DB427DEB25BAA00100D1B89D /* MastodonTests */, DB427DF625BAA00100D1B89D /* MastodonUITests */, DB6804802637CD4C00430867 /* AppShared */, - DB89B9EF25C10FD0008580ED /* CoreDataStack */, - DB89B9FC25C10FD0008580ED /* CoreDataStackTests */, DBF8AE14263293E400C9C23C /* NotificationService */, DBC6461326A170AB00B0E31B /* ShareActionExtension */, DB8FABC826AEC7B2008E5AF4 /* MastodonIntent */, @@ -2350,8 +2132,6 @@ DB427DD225BAA00100D1B89D /* Mastodon.app */, DB427DE825BAA00100D1B89D /* MastodonTests.xctest */, DB427DF325BAA00100D1B89D /* MastodonUITests.xctest */, - DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */, - DB89B9F625C10FD0008580ED /* CoreDataStackTests.xctest */, DBF8AE13263293E400C9C23C /* NotificationService.appex */, DB68047F2637CD4C00430867 /* AppShared.framework */, DBC6461226A170AB00B0E31B /* ShareActionExtension.appex */, @@ -2696,7 +2476,6 @@ children = ( DB6804812637CD4C00430867 /* AppShared.h */, DB6804822637CD4C00430867 /* Info.plist */, - DB6804912637CD8700430867 /* AppName.swift */, DB6804FC2637CFEC00430867 /* AppSecret.swift */, DB6804D02637CE4700430867 /* UserDefaults.swift */, DB73BF3A2711885500781945 /* UserDefaults+Notification.swift */, @@ -2860,62 +2639,6 @@ path = Root; sourceTree = ""; }; - DB89B9EF25C10FD0008580ED /* CoreDataStack */ = { - isa = PBXGroup; - children = ( - 2DF75BB725D1473400694EC8 /* Stack */, - DB89BA2C25C110B7008580ED /* Entity */, - DB336F3B278D7D260031E64B /* Utility */, - DB89BA1725C1107F008580ED /* Extension */, - DB89BA4025C1165F008580ED /* Protocol */, - DB025B7A278D6234002F581E /* Template */, - DB89B9F125C10FD0008580ED /* Info.plist */, - DB89B9F025C10FD0008580ED /* CoreDataStack.h */, - DB89BA1125C1105C008580ED /* CoreDataStack.swift */, - DB89BA3525C1145C008580ED /* CoreData.xcdatamodeld */, - ); - path = CoreDataStack; - sourceTree = ""; - }; - DB89B9FC25C10FD0008580ED /* CoreDataStackTests */ = { - isa = PBXGroup; - children = ( - DB89B9FD25C10FD0008580ED /* CoreDataStackTests.swift */, - DB89B9FF25C10FD0008580ED /* Info.plist */, - ); - path = CoreDataStackTests; - sourceTree = ""; - }; - DB89BA1725C1107F008580ED /* Extension */ = { - isa = PBXGroup; - children = ( - DB89BA1825C1107F008580ED /* Collection.swift */, - DB89BA1925C1107F008580ED /* NSManagedObjectContext.swift */, - DB89BA1A25C1107F008580ED /* URL.swift */, - 2D152A9125C2980C009AA50C /* UIFont.swift */, - ); - path = Extension; - sourceTree = ""; - }; - DB89BA2C25C110B7008580ED /* Entity */ = { - isa = PBXGroup; - children = ( - DB025B8A278D6367002F581E /* App */, - DB025B8D278D6377002F581E /* Transient */, - DB336F1F278D6C8F0031E64B /* Mastodon */, - ); - path = Entity; - sourceTree = ""; - }; - DB89BA4025C1165F008580ED /* Protocol */ = { - isa = PBXGroup; - children = ( - DB89BA4125C1165F008580ED /* NetworkUpdatable.swift */, - DB89BA4225C1165F008580ED /* Managed.swift */, - ); - path = Protocol; - sourceTree = ""; - }; DB8AF52A25C13561002E6C99 /* State */ = { isa = PBXGroup; children = ( @@ -3442,14 +3165,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - DB89B9E925C10FD0008580ED /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - DB89BA0025C10FD0008580ED /* CoreDataStack.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -3471,7 +3186,6 @@ buildRules = ( ); dependencies = ( - DB89BA0225C10FD0008580ED /* PBXTargetDependency */, DBF8AE19263293E400C9C23C /* PBXTargetDependency */, DB6804852637CD4C00430867 /* PBXTargetDependency */, DB6804CA2637CE3000430867 /* PBXTargetDependency */, @@ -3557,49 +3271,12 @@ name = AppShared; packageProductDependencies = ( DB68050F2637D0F800430867 /* KeychainAccess */, + DBE3CA6627A39BD900AFE27B /* MastodonCommon */, ); productName = AppShared; productReference = DB68047F2637CD4C00430867 /* AppShared.framework */; productType = "com.apple.product-type.framework"; }; - DB89B9ED25C10FD0008580ED /* CoreDataStack */ = { - isa = PBXNativeTarget; - buildConfigurationList = DB89BA0525C10FD0008580ED /* Build configuration list for PBXNativeTarget "CoreDataStack" */; - buildPhases = ( - DB89B9E925C10FD0008580ED /* Headers */, - DB89B9EA25C10FD0008580ED /* Sources */, - DB89B9EB25C10FD0008580ED /* Frameworks */, - DB89B9EC25C10FD0008580ED /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - DB6805292637D7DD00430867 /* PBXTargetDependency */, - ); - name = CoreDataStack; - productName = CoreDataStack; - productReference = DB89B9EE25C10FD0008580ED /* CoreDataStack.framework */; - productType = "com.apple.product-type.framework"; - }; - DB89B9F525C10FD0008580ED /* CoreDataStackTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = DB89BA0925C10FD0008580ED /* Build configuration list for PBXNativeTarget "CoreDataStackTests" */; - buildPhases = ( - DB89B9F225C10FD0008580ED /* Sources */, - DB89B9F325C10FD0008580ED /* Frameworks */, - DB89B9F425C10FD0008580ED /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - DB89B9F925C10FD0008580ED /* PBXTargetDependency */, - DB89B9FB25C10FD0008580ED /* PBXTargetDependency */, - ); - name = CoreDataStackTests; - productName = CoreDataStackTests; - productReference = DB89B9F625C10FD0008580ED /* CoreDataStackTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; DB8FABC526AEC7B2008E5AF4 /* MastodonIntent */ = { isa = PBXNativeTarget; buildConfigurationList = DB8FABCF26AEC7B2008E5AF4 /* Build configuration list for PBXNativeTarget "MastodonIntent" */; @@ -3608,12 +3285,12 @@ DB8FABC226AEC7B2008E5AF4 /* Sources */, DB8FABC326AEC7B2008E5AF4 /* Frameworks */, DB8FABC426AEC7B2008E5AF4 /* Resources */, + DBE3CA7027A39CB300AFE27B /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( DB8FABDA26AEC873008E5AF4 /* PBXTargetDependency */, - DB8FABDF26AEC87B008E5AF4 /* PBXTargetDependency */, ); name = MastodonIntent; packageProductDependencies = ( @@ -3631,12 +3308,12 @@ DBC6460E26A170AB00B0E31B /* Sources */, DBC6460F26A170AB00B0E31B /* Frameworks */, DBC6461026A170AB00B0E31B /* Resources */, + DBE3CA6D27A39CAF00AFE27B /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( DBC6463626A195DB00B0E31B /* PBXTargetDependency */, - DBC6463A26A195DB00B0E31B /* PBXTargetDependency */, ); name = ShareActionExtension; packageProductDependencies = ( @@ -3657,6 +3334,7 @@ DBF8AE0F263293E400C9C23C /* Sources */, DBF8AE10263293E400C9C23C /* Frameworks */, DBF8AE11263293E400C9C23C /* Resources */, + DBE3CA6A27A39CAB00AFE27B /* Embed Frameworks */, ); buildRules = ( ); @@ -3698,14 +3376,6 @@ CreatedOnToolsVersion = 12.4; LastSwiftMigration = 1240; }; - DB89B9ED25C10FD0008580ED = { - CreatedOnToolsVersion = 12.4; - LastSwiftMigration = 1240; - }; - DB89B9F525C10FD0008580ED = { - CreatedOnToolsVersion = 12.4; - TestTargetID = DB427DD125BAA00100D1B89D; - }; DB8FABC526AEC7B2008E5AF4 = { CreatedOnToolsVersion = 12.5.1; }; @@ -3767,8 +3437,6 @@ DB427DE725BAA00100D1B89D /* MastodonTests */, DB427DF225BAA00100D1B89D /* MastodonUITests */, DB68047E2637CD4C00430867 /* AppShared */, - DB89B9ED25C10FD0008580ED /* CoreDataStack */, - DB89B9F525C10FD0008580ED /* CoreDataStackTests */, DBF8AE12263293E400C9C23C /* NotificationService */, DBC6461126A170AB00B0E31B /* ShareActionExtension */, DB8FABC526AEC7B2008E5AF4 /* MastodonIntent */, @@ -3814,20 +3482,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - DB89B9EC25C10FD0008580ED /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DB89B9F425C10FD0008580ED /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; DB8FABC426AEC7B2008E5AF4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4020,7 +3674,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [[ -f \"${PODS_ROOT}/Sourcery/bin/sourcery\" ]]; then\n \"${PODS_ROOT}/Sourcery/bin/sourcery\" --config ./CoreDataStack\nelse\n echo \"warning: Sourcery is not installed. Run 'pod install --repo-update' to install it.\"\nfi\n"; + shellScript = "if [[ -f \"${PODS_ROOT}/Sourcery/bin/sourcery\" ]]; then\n \"${PODS_ROOT}/Sourcery/bin/sourcery\" --config ./MastodonSDK/Sources/CoreDataStack\nelse\n echo \"warning: Sourcery is not installed. Run 'pod install --repo-update' to install it.\"\nfi\n"; }; DB3D100425BAA71500EAA174 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -4612,68 +4266,10 @@ DB6804D12637CE4700430867 /* UserDefaults.swift in Sources */, DB73BF3B2711885500781945 /* UserDefaults+Notification.swift in Sources */, DB4932B726F30F0700EF46D4 /* Array.swift in Sources */, - DB6804922637CD8700430867 /* AppName.swift in Sources */, DB6804FD2637CFEC00430867 /* AppSecret.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DB89B9EA25C10FD0008580ED /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DB025B8C278D6374002F581E /* Acct.swift in Sources */, - 2DA7D05725CA693F00804E11 /* Application.swift in Sources */, - 2D927F1425C7EDD9004F19B8 /* Emoji.swift in Sources */, - DB025B84278D6272002F581E /* AutoGenerateProperty.swift in Sources */, - 2DF75BC725D1475D00694EC8 /* ManagedObjectContextObjectsDidChange.swift in Sources */, - DB336F26278D6E8F0031E64B /* MastodonField.swift in Sources */, - DB89BA1225C1105C008580ED /* CoreDataStack.swift in Sources */, - DB63F76027995ECE00455B82 /* MastodonTagHistory.swift in Sources */, - DB336F3A278D7D1F0031E64B /* ManagedObjectRecord.swift in Sources */, - 5B90C46F26259B2C0002E742 /* Setting.swift in Sources */, - DB89BA1C25C1107F008580ED /* NSManagedObjectContext.swift in Sources */, - 2D927F0E25C7E9C9004F19B8 /* History.swift in Sources */, - DBCC3B9B261584A00045B23D /* PrivateNote.swift in Sources */, - DB89BA3725C1145C008580ED /* CoreData.xcdatamodeld in Sources */, - DB73BF4127118B6D00781945 /* Instance.swift in Sources */, - DB8AF52525C131D1002E6C99 /* MastodonUser.swift in Sources */, - DB336F30278D723D0031E64B /* MastodonVisibility.swift in Sources */, - DB89BA1B25C1107F008580ED /* Collection.swift in Sources */, - DB4481AD25EE155900BEFB67 /* Poll.swift in Sources */, - DB89BA2725C110B4008580ED /* Status.swift in Sources */, - DB025B86278D6272002F581E /* AutoGenerateRelationship.swift in Sources */, - 2D152A9225C2980C009AA50C /* UIFont.swift in Sources */, - DB4481B325EE16D000BEFB67 /* PollOption.swift in Sources */, - DB89BA4425C1165F008580ED /* Managed.swift in Sources */, - 2D6125472625436B00299647 /* Notification.swift in Sources */, - DB89BA4325C1165F008580ED /* NetworkUpdatable.swift in Sources */, - DB8AF56825C13E2A002E6C99 /* HomeTimelineIndex.swift in Sources */, - DB025B85278D6272002F581E /* AutoUpdatableObject.swift in Sources */, - DB45FAED25CA7A9A005A8AC7 /* MastodonAuthentication.swift in Sources */, - DB025B89278D6339002F581E /* Feed.swift in Sources */, - 2DF75BB925D1474100694EC8 /* ManagedObjectObserver.swift in Sources */, - DB0FCB6A27950CB3006C02E2 /* MastodonMention.swift in Sources */, - DB89BA1D25C1107F008580ED /* URL.swift in Sources */, - DB63F76D279A67BD00455B82 /* MastodonNotificationType.swift in Sources */, - 2D9DB969263A833E007C1D71 /* DomainBlock.swift in Sources */, - DB025B90278D6489002F581E /* Feed+Kind.swift in Sources */, - 2D0B7A1D261D839600B44727 /* SearchHistory.swift in Sources */, - DB336F1E278D6C3A0031E64B /* MastodonEmoji.swift in Sources */, - 2D927F0825C7E9A8004F19B8 /* Tag.swift in Sources */, - 5B90C46E26259B2C0002E742 /* Subscription.swift in Sources */, - 5B90C47F26259BA90002E742 /* SubscriptionAlerts.swift in Sources */, - DB336F45278EB1D70031E64B /* MastodonAttachment.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DB89B9F225C10FD0008580ED /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DB89B9FE25C10FD0008580ED /* CoreDataStackTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; DB8FABC226AEC7B2008E5AF4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4760,26 +4356,6 @@ target = DB68047E2637CD4C00430867 /* AppShared */; targetProxy = DB6804C92637CE3000430867 /* PBXContainerItemProxy */; }; - DB6805292637D7DD00430867 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DB68047E2637CD4C00430867 /* AppShared */; - targetProxy = DB6805282637D7DD00430867 /* PBXContainerItemProxy */; - }; - DB89B9F925C10FD0008580ED /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DB89B9ED25C10FD0008580ED /* CoreDataStack */; - targetProxy = DB89B9F825C10FD0008580ED /* PBXContainerItemProxy */; - }; - DB89B9FB25C10FD0008580ED /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DB427DD125BAA00100D1B89D /* Mastodon */; - targetProxy = DB89B9FA25C10FD0008580ED /* PBXContainerItemProxy */; - }; - DB89BA0225C10FD0008580ED /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DB89B9ED25C10FD0008580ED /* CoreDataStack */; - targetProxy = DB89BA0125C10FD0008580ED /* PBXContainerItemProxy */; - }; DB8FABCD26AEC7B2008E5AF4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = DB8FABC526AEC7B2008E5AF4 /* MastodonIntent */; @@ -4790,11 +4366,6 @@ target = DB68047E2637CD4C00430867 /* AppShared */; targetProxy = DB8FABD926AEC873008E5AF4 /* PBXContainerItemProxy */; }; - DB8FABDF26AEC87B008E5AF4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DB89B9ED25C10FD0008580ED /* CoreDataStack */; - targetProxy = DB8FABDE26AEC87B008E5AF4 /* PBXContainerItemProxy */; - }; DBC6461B26A170AB00B0E31B /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = DBC6461126A170AB00B0E31B /* ShareActionExtension */; @@ -4805,11 +4376,6 @@ target = DB68047E2637CD4C00430867 /* AppShared */; targetProxy = DBC6463526A195DB00B0E31B /* PBXContainerItemProxy */; }; - DBC6463A26A195DB00B0E31B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DB89B9ED25C10FD0008580ED /* CoreDataStack */; - targetProxy = DBC6463926A195DB00B0E31B /* PBXContainerItemProxy */; - }; DBF8AE19263293E400C9C23C /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = DBF8AE12263293E400C9C23C /* NotificationService */; @@ -5235,103 +4801,6 @@ }; name = Release; }; - DB89BA0625C10FD0008580ED /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 91; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = CoreDataStack/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStack; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - DB89BA0725C10FD0008580ED /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; - DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 91; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = CoreDataStack/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStack; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - DB89BA0A25C10FD0008580ED /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = CoreDataStackTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStackTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; - }; - name = Debug; - }; - DB89BA0B25C10FD0008580ED /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = 5Z4GVSS33P; - INFOPLIST_FILE = CoreDataStackTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStackTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; - }; - name = Release; - }; DB8FABD026AEC7B2008E5AF4 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 861BE60ED27430771CFD578D /* Pods-MastodonIntent.debug.xcconfig */; @@ -5528,24 +4997,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DB89BA0525C10FD0008580ED /* Build configuration list for PBXNativeTarget "CoreDataStack" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DB89BA0625C10FD0008580ED /* Debug */, - DB89BA0725C10FD0008580ED /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - DB89BA0925C10FD0008580ED /* Build configuration list for PBXNativeTarget "CoreDataStackTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DB89BA0A25C10FD0008580ED /* Debug */, - DB89BA0B25C10FD0008580ED /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; DB8FABCF26AEC7B2008E5AF4 /* Build configuration list for PBXNativeTarget "MastodonIntent" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5823,27 +5274,16 @@ package = DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */; productName = "UITextView+Placeholder"; }; + DBE3CA6627A39BD900AFE27B /* MastodonCommon */ = { + isa = XCSwiftPackageProductDependency; + productName = MastodonCommon; + }; DBF7A0FB26830C33004176A2 /* FPSIndicator */ = { isa = XCSwiftPackageProductDependency; package = DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator" */; productName = FPSIndicator; }; /* End XCSwiftPackageProductDependency section */ - -/* Begin XCVersionGroup section */ - DB89BA3525C1145C008580ED /* CoreData.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - DB025B79278D6138002F581E /* CoreData 3.xcdatamodel */, - DBF156DD27006F5D00EC00B7 /* CoreData 2.xcdatamodel */, - DB89BA3625C1145C008580ED /* CoreData.xcdatamodel */, - ); - currentVersion = DB025B79278D6138002F581E /* CoreData 3.xcdatamodel */; - path = CoreData.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ }; rootObject = DB427DCA25BAA00100D1B89D /* Project object */; } diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index e8b961abd..bf3ad9bfc 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 28 + 19 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 26 + 18 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 25 + 20 SuppressBuildableAutocreation diff --git a/Mastodon/Diffiable/FetchedResultsController/StatusFetchedResultsController.swift b/Mastodon/Diffiable/FetchedResultsController/StatusFetchedResultsController.swift index 10da3f3fa..24d8a6790 100644 --- a/Mastodon/Diffiable/FetchedResultsController/StatusFetchedResultsController.swift +++ b/Mastodon/Diffiable/FetchedResultsController/StatusFetchedResultsController.swift @@ -11,6 +11,7 @@ import Combine import CoreData import CoreDataStack import MastodonSDK +import MastodonUI final class StatusFetchedResultsController: NSObject { diff --git a/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift b/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift index 9ff4c5e55..b49e89a27 100644 --- a/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift +++ b/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift @@ -11,6 +11,7 @@ import Combine import CoreData import CoreDataStack import MastodonSDK +import MastodonUI final class UserFetchedResultsController: NSObject { diff --git a/Mastodon/Diffiable/Status/StatusItem.swift b/Mastodon/Diffiable/Status/StatusItem.swift index c10e410df..5fff31d78 100644 --- a/Mastodon/Diffiable/Status/StatusItem.swift +++ b/Mastodon/Diffiable/Status/StatusItem.swift @@ -7,6 +7,7 @@ import Foundation import CoreDataStack +import MastodonUI enum StatusItem: Hashable { case feed(record: ManagedObjectRecord) diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift index 66110764e..1e16e0407 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift @@ -8,6 +8,7 @@ import Foundation import CoreData import CoreDataStack +import MastodonUI extension DataSourceFacade { static func status( diff --git a/Mastodon/Service/ThemeService/ThemeService.swift b/Mastodon/Service/ThemeService/ThemeService.swift index e3bd7c4ab..b356d3469 100644 --- a/Mastodon/Service/ThemeService/ThemeService.swift +++ b/Mastodon/Service/ThemeService/ThemeService.swift @@ -7,6 +7,7 @@ import UIKit import Combine +import AppShared // ref: https://zamzam.io/protocol-oriented-themes-for-ios-apps/ final class ThemeService { diff --git a/MastodonSDK/Package.swift b/MastodonSDK/Package.swift index fae124f1e..093f592f4 100644 --- a/MastodonSDK/Package.swift +++ b/MastodonSDK/Package.swift @@ -13,12 +13,19 @@ let package = Package( .library( name: "MastodonSDK", targets: [ - "MastodonSDK", - "MastodonExtension", + "CoreDataStack", "MastodonAsset", + "MastodonCommon", + "MastodonExtension", "MastodonLocalization", + "MastodonSDK", "MastodonUI", ]), + .library( + name: "MastodonCommon", + targets: [ + "MastodonCommon", + ]), ], dependencies: [ .package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", from: "5.0.0"), @@ -36,27 +43,38 @@ let package = Package( // Targets are the basic building blocks of a package. A target can define a module or a test suite. // Targets can depend on other targets in this package, and on products in packages this package depends on. .target( - name: "MastodonSDK", + name: "CoreDataStack", dependencies: [ - .product(name: "SwiftyJSON", package: "SwiftyJSON"), - .product(name: "NIOHTTP1", package: "swift-nio"), + "MastodonCommon", ] ), .target( - name: "MastodonExtension", + name: "MastodonAsset", dependencies: [] ), .target( - name: "MastodonAsset", + name: "MastodonCommon", + dependencies: [] + ), + .target( + name: "MastodonExtension", dependencies: [] ), .target( name: "MastodonLocalization", dependencies: [] ), + .target( + name: "MastodonSDK", + dependencies: [ + .product(name: "SwiftyJSON", package: "SwiftyJSON"), + .product(name: "NIOHTTP1", package: "swift-nio"), + ] + ), .target( name: "MastodonUI", dependencies: [ + "CoreDataStack", "MastodonSDK", "MastodonExtension", "MastodonAsset", diff --git a/CoreDataStack/.sourcery.yml b/MastodonSDK/Sources/CoreDataStack/.sourcery.yml similarity index 100% rename from CoreDataStack/.sourcery.yml rename to MastodonSDK/Sources/CoreDataStack/.sourcery.yml diff --git a/CoreDataStack/CoreData.xcdatamodeld/.xccurrentversion b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/.xccurrentversion similarity index 100% rename from CoreDataStack/CoreData.xcdatamodeld/.xccurrentversion rename to MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/.xccurrentversion diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData 2.xcdatamodel/contents b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 2.xcdatamodel/contents similarity index 100% rename from CoreDataStack/CoreData.xcdatamodeld/CoreData 2.xcdatamodel/contents rename to MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 2.xcdatamodel/contents diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents similarity index 93% rename from CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents rename to MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents index cba342dfe..6cb8e91b9 100644 --- a/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents +++ b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents @@ -1,13 +1,13 @@ - + - + @@ -20,7 +20,7 @@ - + @@ -29,7 +29,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -48,14 +48,14 @@ - + - + @@ -70,7 +70,7 @@ - + @@ -119,7 +119,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -160,13 +160,13 @@ - + - + @@ -176,7 +176,7 @@ - + @@ -187,7 +187,7 @@ - + @@ -227,7 +227,7 @@ - + @@ -239,7 +239,7 @@ - + @@ -250,7 +250,7 @@ - + @@ -277,7 +277,7 @@ - + \ No newline at end of file diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents similarity index 100% rename from CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents rename to MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents diff --git a/CoreDataStack/CoreDataStack.swift b/MastodonSDK/Sources/CoreDataStack/CoreDataStack.swift similarity index 98% rename from CoreDataStack/CoreDataStack.swift rename to MastodonSDK/Sources/CoreDataStack/CoreDataStack.swift index 2dfa0c38c..c5f415758 100644 --- a/CoreDataStack/CoreDataStack.swift +++ b/MastodonSDK/Sources/CoreDataStack/CoreDataStack.swift @@ -9,7 +9,7 @@ import os import Foundation import Combine import CoreData -import AppShared +import MastodonCommon public final class CoreDataStack { @@ -46,7 +46,7 @@ public final class CoreDataStack { }() static func persistentContainer() -> NSPersistentContainer { - let bundles = [Bundle(for: Status.self)] + let bundles = [Bundle.module] // .module required for package in the SwiftPM guard let managedObjectModel = NSManagedObjectModel.mergedModel(from: bundles) else { fatalError("cannot locate bundles") } diff --git a/CoreDataStack/Entity/App/Feed.swift b/MastodonSDK/Sources/CoreDataStack/Entity/App/Feed.swift similarity index 100% rename from CoreDataStack/Entity/App/Feed.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/App/Feed.swift diff --git a/CoreDataStack/Entity/App/HomeTimelineIndex.swift b/MastodonSDK/Sources/CoreDataStack/Entity/App/HomeTimelineIndex.swift similarity index 100% rename from CoreDataStack/Entity/App/HomeTimelineIndex.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/App/HomeTimelineIndex.swift diff --git a/CoreDataStack/Entity/App/Setting.swift b/MastodonSDK/Sources/CoreDataStack/Entity/App/Setting.swift similarity index 100% rename from CoreDataStack/Entity/App/Setting.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/App/Setting.swift diff --git a/CoreDataStack/Entity/Mastodon/Application.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Application.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/Application.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Application.swift diff --git a/CoreDataStack/Entity/Mastodon/DomainBlock.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/DomainBlock.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/DomainBlock.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/DomainBlock.swift diff --git a/CoreDataStack/Entity/Mastodon/Emoji.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Emoji.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/Emoji.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Emoji.swift diff --git a/CoreDataStack/Entity/Mastodon/History.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/History.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/History.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/History.swift diff --git a/CoreDataStack/Entity/Mastodon/Instance.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Instance.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/Instance.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Instance.swift diff --git a/CoreDataStack/Entity/Mastodon/MastodonAuthentication.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/MastodonAuthentication.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/MastodonAuthentication.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/MastodonAuthentication.swift diff --git a/CoreDataStack/Entity/Mastodon/MastodonUser.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/MastodonUser.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/MastodonUser.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/MastodonUser.swift diff --git a/CoreDataStack/Entity/Mastodon/Notification.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Notification.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/Notification.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Notification.swift diff --git a/CoreDataStack/Entity/Mastodon/Poll.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Poll.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/Poll.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Poll.swift diff --git a/CoreDataStack/Entity/Mastodon/PollOption.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/PollOption.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/PollOption.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/PollOption.swift diff --git a/CoreDataStack/Entity/Mastodon/PrivateNote.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/PrivateNote.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/PrivateNote.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/PrivateNote.swift diff --git a/CoreDataStack/Entity/Mastodon/SearchHistory.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/SearchHistory.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/SearchHistory.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/SearchHistory.swift diff --git a/CoreDataStack/Entity/Mastodon/Status.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/Status.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift diff --git a/CoreDataStack/Entity/Mastodon/Subscription.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Subscription.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/Subscription.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Subscription.swift diff --git a/CoreDataStack/Entity/Mastodon/SubscriptionAlerts.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/SubscriptionAlerts.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/SubscriptionAlerts.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/SubscriptionAlerts.swift diff --git a/CoreDataStack/Entity/Mastodon/Tag.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Tag.swift similarity index 100% rename from CoreDataStack/Entity/Mastodon/Tag.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Tag.swift diff --git a/CoreDataStack/Entity/Transient/Acct.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Transient/Acct.swift similarity index 100% rename from CoreDataStack/Entity/Transient/Acct.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Transient/Acct.swift diff --git a/CoreDataStack/Entity/Transient/Feed+Kind.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Transient/Feed+Kind.swift similarity index 100% rename from CoreDataStack/Entity/Transient/Feed+Kind.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Transient/Feed+Kind.swift diff --git a/CoreDataStack/Entity/Transient/MastodonAttachment.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonAttachment.swift similarity index 100% rename from CoreDataStack/Entity/Transient/MastodonAttachment.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonAttachment.swift diff --git a/CoreDataStack/Entity/Transient/MastodonEmoji.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonEmoji.swift similarity index 100% rename from CoreDataStack/Entity/Transient/MastodonEmoji.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonEmoji.swift diff --git a/CoreDataStack/Entity/Transient/MastodonField.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonField.swift similarity index 100% rename from CoreDataStack/Entity/Transient/MastodonField.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonField.swift diff --git a/CoreDataStack/Entity/Transient/MastodonMention.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonMention.swift similarity index 100% rename from CoreDataStack/Entity/Transient/MastodonMention.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonMention.swift diff --git a/CoreDataStack/Entity/Transient/MastodonNotificationType.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonNotificationType.swift similarity index 100% rename from CoreDataStack/Entity/Transient/MastodonNotificationType.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonNotificationType.swift diff --git a/CoreDataStack/Entity/Transient/MastodonTagHistory.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonTagHistory.swift similarity index 100% rename from CoreDataStack/Entity/Transient/MastodonTagHistory.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonTagHistory.swift diff --git a/CoreDataStack/Entity/Transient/MastodonVisibility.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonVisibility.swift similarity index 100% rename from CoreDataStack/Entity/Transient/MastodonVisibility.swift rename to MastodonSDK/Sources/CoreDataStack/Entity/Transient/MastodonVisibility.swift diff --git a/CoreDataStack/Extension/Collection.swift b/MastodonSDK/Sources/CoreDataStack/Extension/Collection.swift similarity index 100% rename from CoreDataStack/Extension/Collection.swift rename to MastodonSDK/Sources/CoreDataStack/Extension/Collection.swift diff --git a/CoreDataStack/Extension/NSManagedObjectContext.swift b/MastodonSDK/Sources/CoreDataStack/Extension/NSManagedObjectContext.swift similarity index 98% rename from CoreDataStack/Extension/NSManagedObjectContext.swift rename to MastodonSDK/Sources/CoreDataStack/Extension/NSManagedObjectContext.swift index a3baf4dc4..b921de819 100644 --- a/CoreDataStack/Extension/NSManagedObjectContext.swift +++ b/MastodonSDK/Sources/CoreDataStack/Extension/NSManagedObjectContext.swift @@ -50,7 +50,7 @@ extension NSManagedObjectContext { extension NSManagedObjectContext { public func perform(block: @escaping () throws -> T) async throws -> T { - if #available(iOSApplicationExtension 15.0, *) { + if #available(iOS 15.0, *) { return try await perform(schedule: .enqueued) { try block() } diff --git a/CoreDataStack/Extension/UIFont.swift b/MastodonSDK/Sources/CoreDataStack/Extension/UIFont.swift similarity index 100% rename from CoreDataStack/Extension/UIFont.swift rename to MastodonSDK/Sources/CoreDataStack/Extension/UIFont.swift diff --git a/CoreDataStack/Extension/URL.swift b/MastodonSDK/Sources/CoreDataStack/Extension/URL.swift similarity index 100% rename from CoreDataStack/Extension/URL.swift rename to MastodonSDK/Sources/CoreDataStack/Extension/URL.swift diff --git a/CoreDataStack/Protocol/Managed.swift b/MastodonSDK/Sources/CoreDataStack/Protocol/Managed.swift similarity index 100% rename from CoreDataStack/Protocol/Managed.swift rename to MastodonSDK/Sources/CoreDataStack/Protocol/Managed.swift diff --git a/CoreDataStack/Protocol/NetworkUpdatable.swift b/MastodonSDK/Sources/CoreDataStack/Protocol/NetworkUpdatable.swift similarity index 100% rename from CoreDataStack/Protocol/NetworkUpdatable.swift rename to MastodonSDK/Sources/CoreDataStack/Protocol/NetworkUpdatable.swift diff --git a/CoreDataStack/Stack/ManagedObjectContextObjectsDidChange.swift b/MastodonSDK/Sources/CoreDataStack/Stack/ManagedObjectContextObjectsDidChange.swift similarity index 100% rename from CoreDataStack/Stack/ManagedObjectContextObjectsDidChange.swift rename to MastodonSDK/Sources/CoreDataStack/Stack/ManagedObjectContextObjectsDidChange.swift diff --git a/CoreDataStack/Stack/ManagedObjectObserver.swift b/MastodonSDK/Sources/CoreDataStack/Stack/ManagedObjectObserver.swift similarity index 100% rename from CoreDataStack/Stack/ManagedObjectObserver.swift rename to MastodonSDK/Sources/CoreDataStack/Stack/ManagedObjectObserver.swift diff --git a/CoreDataStack/Template/AutoGenerateProperty.swift b/MastodonSDK/Sources/CoreDataStack/Template/AutoGenerateProperty.swift similarity index 100% rename from CoreDataStack/Template/AutoGenerateProperty.swift rename to MastodonSDK/Sources/CoreDataStack/Template/AutoGenerateProperty.swift diff --git a/CoreDataStack/Template/AutoGenerateRelationship.swift b/MastodonSDK/Sources/CoreDataStack/Template/AutoGenerateRelationship.swift similarity index 100% rename from CoreDataStack/Template/AutoGenerateRelationship.swift rename to MastodonSDK/Sources/CoreDataStack/Template/AutoGenerateRelationship.swift diff --git a/CoreDataStack/Template/AutoUpdatableObject.swift b/MastodonSDK/Sources/CoreDataStack/Template/AutoUpdatableObject.swift similarity index 100% rename from CoreDataStack/Template/AutoUpdatableObject.swift rename to MastodonSDK/Sources/CoreDataStack/Template/AutoUpdatableObject.swift diff --git a/CoreDataStack/Template/Stencil/AutoGenerateProperty.stencil b/MastodonSDK/Sources/CoreDataStack/Template/Stencil/AutoGenerateProperty.stencil similarity index 100% rename from CoreDataStack/Template/Stencil/AutoGenerateProperty.stencil rename to MastodonSDK/Sources/CoreDataStack/Template/Stencil/AutoGenerateProperty.stencil diff --git a/CoreDataStack/Template/Stencil/AutoGenerateRelationship.stencil b/MastodonSDK/Sources/CoreDataStack/Template/Stencil/AutoGenerateRelationship.stencil similarity index 100% rename from CoreDataStack/Template/Stencil/AutoGenerateRelationship.stencil rename to MastodonSDK/Sources/CoreDataStack/Template/Stencil/AutoGenerateRelationship.stencil diff --git a/CoreDataStack/Template/Stencil/AutoUpdatableObject.stencil b/MastodonSDK/Sources/CoreDataStack/Template/Stencil/AutoUpdatableObject.stencil similarity index 100% rename from CoreDataStack/Template/Stencil/AutoUpdatableObject.stencil rename to MastodonSDK/Sources/CoreDataStack/Template/Stencil/AutoUpdatableObject.stencil diff --git a/CoreDataStack/Utility/ManagedObjectRecord.swift b/MastodonSDK/Sources/CoreDataStack/Utility/ManagedObjectRecord.swift similarity index 91% rename from CoreDataStack/Utility/ManagedObjectRecord.swift rename to MastodonSDK/Sources/CoreDataStack/Utility/ManagedObjectRecord.swift index dbdce6c39..ea087d894 100644 --- a/CoreDataStack/Utility/ManagedObjectRecord.swift +++ b/MastodonSDK/Sources/CoreDataStack/Utility/ManagedObjectRecord.swift @@ -9,7 +9,7 @@ import Foundation import CoreData -public class ManagedObjectRecord: Hashable { +public class ManagedObjectRecord: Hashable { public let objectID: NSManagedObjectID diff --git a/AppShared/AppName.swift b/MastodonSDK/Sources/MastodonCommon/AppName.swift similarity index 90% rename from AppShared/AppName.swift rename to MastodonSDK/Sources/MastodonCommon/AppName.swift index e2d356263..df052fb9d 100644 --- a/AppShared/AppName.swift +++ b/MastodonSDK/Sources/MastodonCommon/AppName.swift @@ -1,6 +1,6 @@ // // AppName.swift -// AppShared +// MastodonCommon // // Created by MainasuK Cirno on 2021-4-27. // diff --git a/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift b/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift index 825c1af8a..b21a45b2d 100644 --- a/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift +++ b/MastodonSDK/Sources/MastodonUI/Model/Poll/PollItem.swift @@ -7,6 +7,7 @@ import Foundation import CoreData +import CoreDataStack public enum PollItem: Hashable { case option(record: ManagedObjectRecord) From caaf66286f17595802eabf00be8eef2ce38f844e Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 29 Jan 2022 17:02:30 +0800 Subject: [PATCH 140/374] feat: add content warning for post spoiler --- Localization/app.json | 6 + Mastodon.xcodeproj/project.pbxproj | 2 + .../xcschemes/xcschememanagement.plist | 4 +- .../Provider/DataSourceFacade+Status.swift | 33 ++++ ...Provider+StatusTableViewCellDelegate.swift | 27 +++ .../Notification/NotificationViewModel.swift | 64 ------- .../Search/Search/SearchViewController.swift | 1 + .../Content/StatusView+Configuration.swift | 49 ++++-- .../StatusTableViewCell+ViewModel.swift | 18 +- .../StatusTableViewCellDelegate.swift | 5 + ...tusThreadRootTableViewCell+ViewModel.swift | 17 +- .../Thread/ThreadViewModel+Diffable.swift | 2 +- MastodonSDK/Package.swift | 8 +- .../CoreData 3.xcdatamodel/contents | 4 +- .../Entity/Mastodon/Status.swift | 18 +- .../eye.circle.fill.imageset/Contents.json | 15 ++ .../eye.circle.fill.pdf | 125 +++++++++++++ .../Contents.json | 15 ++ .../eye.slash.circle.fill.pdf | 139 +++++++++++++++ .../MastodonAsset/Generated/Assets.swift | 2 + .../MastodonAsset/Generated/Fonts.swift | 4 + .../MastodonUI/Extension/MetaLabel.swift | 7 + .../View/Content/NotificationView.swift | 4 +- .../View/Content/StatusView+ViewModel.swift | 164 ++++++++++++++---- .../MastodonUI/View/Content/StatusView.swift | 69 +++++++- .../View/Control/SpoilerOverlayView.swift | 90 ++++++++++ .../View/Control/StatusVisibilityView.swift | 74 ++++++++ .../View/{ => Menu}/MastodonMenu.swift | 0 swiftgen.yml | 8 + 29 files changed, 842 insertions(+), 132 deletions(-) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.circle.fill.imageset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.circle.fill.imageset/eye.circle.fill.pdf create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.slash.circle.fill.imageset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.slash.circle.fill.imageset/eye.slash.circle.fill.pdf create mode 100644 MastodonSDK/Sources/MastodonAsset/Generated/Fonts.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Control/StatusVisibilityView.swift rename MastodonSDK/Sources/MastodonUI/View/{ => Menu}/MastodonMenu.swift (100%) diff --git a/Localization/app.json b/Localization/app.json index b6da7c4ea..2e948f3ea 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -149,6 +149,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index d0439c816..9bc2abe2e 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -1315,6 +1315,7 @@ DBDC1CFD272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "ku-TR"; path = "ku-TR.lproj/Intents.stringsdict"; sourceTree = ""; }; DBE0821425CD382600FD6BBD /* MastodonRegisterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterViewController.swift; sourceTree = ""; }; DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterViewModel.swift; sourceTree = ""; }; + DBE3CA7127A3F23D00AFE27B /* MetaTextKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = MetaTextKit; path = ../MetaTextKit; sourceTree = ""; }; DBE3CDBA261C427900430CC6 /* TimelineHeaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineHeaderTableViewCell.swift; sourceTree = ""; }; DBE3CDCE261C42ED00430CC6 /* TimelineHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineHeaderView.swift; sourceTree = ""; }; DBE3CDEB261C6B2900430CC6 /* FavoriteViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteViewController.swift; sourceTree = ""; }; @@ -2111,6 +2112,7 @@ children = ( DBF53F5F25C14E88008AAC7B /* Mastodon.xctestplan */, DBF53F6025C14E9D008AAC7B /* MastodonSDK.xctestplan */, + DBE3CA7127A3F23D00AFE27B /* MetaTextKit */, DB3D0FED25BAA42200EAA174 /* MastodonSDK */, DB427DD425BAA00100D1B89D /* Mastodon */, DB427DEB25BAA00100D1B89D /* MastodonTests */, diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index bf3ad9bfc..6d24f2a7f 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 19 + 21 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 18 + 19 MastodonIntents.xcscheme_^#shared#^_ diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift index 5d3b06951..2861730a2 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift @@ -257,3 +257,36 @@ extension DataSourceFacade { } } // end func } + +extension DataSourceFacade { + + static func responseToToggleSensitiveAction( + dependency: NeedsDependency, + status: ManagedObjectRecord + ) async throws { + let managedObjectContext = dependency.context.managedObjectContext + try await managedObjectContext.performChanges { + guard let _status = status.object(in: managedObjectContext) else { return } + let status = _status.reblog ?? _status + + let isToggled = status.isContentSensitiveToggled || status.isMediaSensitiveToggled + + status.update(isContentSensitiveToggled: !isToggled) + status.update(isMediaSensitiveToggled: !isToggled) + } + } + + static func responseToToggleMediaSensitiveAction( + dependency: NeedsDependency, + status: ManagedObjectRecord + ) async throws { + let managedObjectContext = dependency.context.managedObjectContext + try await managedObjectContext.performChanges { + guard let _status = status.object(in: managedObjectContext) else { return } + let status = _status.reblog ?? _status + + status.update(isMediaSensitiveToggled: !status.isMediaSensitiveToggled) + } + } + +} diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift index 9c5d3912c..cd167cb9d 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift @@ -299,6 +299,7 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { } +// MARK: - menu button extension StatusTableViewCellDelegate where Self: DataSourceProvider { func tableViewCell( _ cell: UITableViewCell, @@ -342,3 +343,29 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { } } + +// MARK: - content warning +extension StatusTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + contentWarningToggleButtonDidPressed button: UIButton + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: status + ) + } // end Task + } +} + diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index 46891ef89..3d4fa6042 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -19,18 +19,6 @@ final class NotificationViewModel { // input let context: AppContext let viewDidLoad = PassthroughSubject() -// let selectedIndex = CurrentValueSubject(.everyThing) -// let noMoreNotification = CurrentValueSubject(false) - -// let activeMastodonAuthenticationBox: CurrentValueSubject -// let fetchedResultsController: NSFetchedResultsController! -// let notificationPredicate = CurrentValueSubject(nil) -// let cellFrameCache = NSCache() - -// var needsScrollToTopAfterDataSourceUpdate = false -// let dataSourceDidUpdated = PassthroughSubject() -// let isFetchingLatestNotification = CurrentValueSubject(false) - // output let scopes = NotificationTimelineViewModel.Scope.allCases @@ -40,59 +28,7 @@ final class NotificationViewModel { init(context: AppContext) { self.context = context -// self.activeMastodonAuthenticationBox = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value) -// self.fetchedResultsController = { -// let fetchRequest = MastodonNotification.sortedFetchRequest -// fetchRequest.returnsObjectsAsFaults = false -// fetchRequest.fetchBatchSize = 10 -// fetchRequest.relationshipKeyPathsForPrefetching = [#keyPath(MastodonNotification.status), #keyPath(MastodonNotification.account)] -// let controller = NSFetchedResultsController( -// fetchRequest: fetchRequest, -// managedObjectContext: context.managedObjectContext, -// sectionNameKeyPath: nil, -// cacheName: nil -// ) -// -// return controller -// }() // end init - -// fetchedResultsController.delegate = self -// context.authenticationService.activeMastodonAuthenticationBox -// .sink(receiveValue: { [weak self] box in -// guard let self = self else { return } -// self.activeMastodonAuthenticationBox.value = box -// if let domain = box?.domain, let userID = box?.userID { -// self.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) -// } -// }) -// .store(in: &disposeBag) - -// notificationPredicate -// .compactMap { $0 } -// .sink { [weak self] predicate in -// guard let self = self else { return } -// self.fetchedResultsController.fetchRequest.predicate = predicate -// do { -// self.diffableDataSource?.defaultRowAnimation = .fade -// try self.fetchedResultsController.performFetch() -// DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in -// guard let self = self else { return } -// self.diffableDataSource?.defaultRowAnimation = .automatic -// } -// } catch { -// assertionFailure(error.localizedDescription) -// } -// } -// .store(in: &disposeBag) - -// viewDidLoad -// .sink { [weak self] in -// -// guard let domain = self?.activeMastodonAuthenticationBox.value?.domain, let userID = self?.activeMastodonAuthenticationBox.value?.userID else { return } -// self?.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) -// } -// .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Search/Search/SearchViewController.swift b/Mastodon/Scene/Search/Search/SearchViewController.swift index ebfa1584c..d1bed9484 100644 --- a/Mastodon/Scene/Search/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/Search/SearchViewController.swift @@ -42,6 +42,7 @@ final class SearchViewController: UIViewController, NeedsDependency { configuration.headerMode = .supplementary let layout = UICollectionViewCompositionalLayout.list(using: configuration) let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + collectionView.backgroundColor = .clear return collectionView }() diff --git a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift index 1605a9935..8530fe244 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift @@ -48,7 +48,7 @@ extension StatusView { configureContent(status: status) configureMedia(status: status) configurePoll(status: status) - configureToolbar(status: status) + configureToolbar(status: status) } } @@ -235,33 +235,42 @@ extension StatusView { private func configureContent(status: Status) { let status = status.reblog ?? status + + // spoilerText + if let spoilerText = status.spoilerText, !spoilerText.isEmpty { + do { + let content = MastodonContent(content: spoilerText, emojis: status.emojis.asDictionary) + let metaContent = try MastodonMetaContent.convert(document: content) + viewModel.spoilerContent = metaContent + } catch { + assertionFailure(error.localizedDescription) + viewModel.spoilerContent = PlaintextMetaContent(string: "") + } + } else { + viewModel.spoilerContent = nil + } + // content do { let content = MastodonContent(content: status.content, emojis: status.emojis.asDictionary) let metaContent = try MastodonMetaContent.convert(document: content) viewModel.content = metaContent - // viewModel.sharePlaintextContent = metaContent.original } catch { assertionFailure(error.localizedDescription) viewModel.content = PlaintextMetaContent(string: "") } + // visibility + status.publisher(for: \.visibilityRaw) + .compactMap { MastodonVisibility(rawValue: $0) } + .assign(to: \.visibility, on: viewModel) + .store(in: &disposeBag) + // sensitive + status.publisher(for: \.isContentSensitiveToggled) + .assign(to: \.isContentSensitiveToggled, on: viewModel) + .store(in: &disposeBag) + status.publisher(for: \.isMediaSensitiveToggled) + .assign(to: \.isMediaSensitiveToggled, on: viewModel) + .store(in: &disposeBag) -// if let spoilerText = status.spoilerText, !spoilerText.isEmpty { -// do { -// let content = MastodonContent(content: spoilerText, emojis: status.emojis.asDictionary) -// let metaContent = try MastodonMetaContent.convert(document: content) -// viewModel.spoilerContent = metaContent -// } catch { -// assertionFailure() -// viewModel.spoilerContent = nil -// } -// } else { -// viewModel.spoilerContent = nil -// } - -// status.publisher(for: \.isContentReveal) -// .assign(to: \.isContentReveal, on: viewModel) -// .store(in: &disposeBag) -// // viewModel.source = status.source } @@ -271,6 +280,8 @@ extension StatusView { // mediaGridContainerView.viewModel.resetContentWarningOverlay() // viewModel.isMediaSensitiveSwitchable = true + viewModel.isMediaSensitive = status.sensitive + MediaView.configuration(status: status) .assign(to: \.mediaViewConfigurations, on: viewModel) .store(in: &disposeBag) diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift index 87c01b189..9a535e9bb 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift @@ -35,7 +35,7 @@ extension StatusTableViewCell { statusView.frame.size.width = tableView.frame.width logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") } - + switch viewModel.value { case .feed(let feed): statusView.configure(feed: feed) @@ -51,7 +51,21 @@ extension StatusTableViewCell { statusView.configure(status: status) } - self.delegate = delegate + self.delegate = delegate + + + statusView.viewModel.$isContentReveal + .removeDuplicates() + .dropFirst() + .receive(on: DispatchQueue.main) + .sink { [weak tableView, weak self] isContentReveal in + guard let tableView = tableView else { return } + guard let self = self else { return } + + tableView.beginUpdates() + tableView.endUpdates() + } + .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift index dcbf41f4d..322441ba2 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift @@ -31,6 +31,7 @@ protocol StatusTableViewCellDelegate: AnyObject, AutoGenerateProtocolDelegate { func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, pollVoteButtonPressed button: UIButton) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, contentWarningToggleButtonDidPressed button: UIButton) // sourcery:end } @@ -70,5 +71,9 @@ extension StatusViewDelegate where Self: StatusViewContainerTableViewCell { func statusView(_ statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) { delegate?.tableViewCell(self, statusView: statusView, menuButton: button, didSelectAction: action) } + + func statusView(_ statusView: StatusView, contentWarningToggleButtonDidPressed button: UIButton) { + delegate?.tableViewCell(self, statusView: statusView, contentWarningToggleButtonDidPressed: button) + } // sourcery:end } diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift index d549ba1f5..240736fd6 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift @@ -40,7 +40,22 @@ extension StatusThreadRootTableViewCell { statusView.configure(status: status) } - self.delegate = delegate + self.delegate = delegate + + statusView.viewModel.$isContentReveal + .removeDuplicates() + .dropFirst() + .receive(on: DispatchQueue.main) + .sink { [weak tableView, weak self] isContentReveal in + guard let tableView = tableView else { return } + guard let self = self else { return } + + guard self.contentView.window != nil else { return } + + tableView.beginUpdates() + tableView.endUpdates() + } + .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Thread/ThreadViewModel+Diffable.swift b/Mastodon/Scene/Thread/ThreadViewModel+Diffable.swift index 71dd003f6..07966713c 100644 --- a/Mastodon/Scene/Thread/ThreadViewModel+Diffable.swift +++ b/Mastodon/Scene/Thread/ThreadViewModel+Diffable.swift @@ -42,7 +42,7 @@ extension ThreadViewModel { } else { } - diffableDataSource?.apply(snapshot) + diffableDataSource?.apply(snapshot, animatingDifferences: false) $threadContext .receive(on: DispatchQueue.main) diff --git a/MastodonSDK/Package.swift b/MastodonSDK/Package.swift index 093f592f4..aba25501a 100644 --- a/MastodonSDK/Package.swift +++ b/MastodonSDK/Package.swift @@ -46,11 +46,17 @@ let package = Package( name: "CoreDataStack", dependencies: [ "MastodonCommon", + ], + exclude: [ + "Template/Stencil" ] ), .target( name: "MastodonAsset", - dependencies: [] + dependencies: [], + resources: [ + .process("Font"), + ] ), .target( name: "MastodonCommon", diff --git a/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents index 6cb8e91b9..9f6f3ce17 100644 --- a/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents +++ b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents @@ -199,6 +199,8 @@ + + @@ -275,7 +277,7 @@ - + diff --git a/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift index c506536df..c9946b3fb 100644 --- a/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift +++ b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift @@ -41,6 +41,11 @@ public final class Status: NSManagedObject { // sourcery: autoUpdatableObject, autoGenerateProperty @NSManaged public private(set) var spoilerText: String? + // sourcery: autoUpdatableObject + @NSManaged public private(set) var isContentSensitiveToggled: Bool + // sourcery: autoUpdatableObject + @NSManaged public private(set) var isMediaSensitiveToggled: Bool + @NSManaged public private(set) var application: Application? // Informational @@ -86,9 +91,6 @@ public final class Status: NSManagedObject { @NSManaged public private(set) var feeds: Set @NSManaged public private(set) var reblogFrom: Set -// @NSManaged public private(set) var mentions: Set? -// @NSManaged public private(set) var homeTimelineIndexes: Set? -// @NSManaged public private(set) var mediaAttachments: Set? @NSManaged public private(set) var replyFrom: Set @NSManaged public private(set) var notifications: Set @NSManaged public private(set) var searchHistories: Set @@ -590,6 +592,16 @@ extension Status: AutoUpdatableObject { self.spoilerText = spoilerText } } + public func update(isContentSensitiveToggled: Bool) { + if self.isContentSensitiveToggled != isContentSensitiveToggled { + self.isContentSensitiveToggled = isContentSensitiveToggled + } + } + public func update(isMediaSensitiveToggled: Bool) { + if self.isMediaSensitiveToggled != isMediaSensitiveToggled { + self.isMediaSensitiveToggled = isMediaSensitiveToggled + } + } public func update(reblogsCount: Int64) { if self.reblogsCount != reblogsCount { self.reblogsCount = reblogsCount diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.circle.fill.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.circle.fill.imageset/Contents.json new file mode 100644 index 000000000..35dacadd5 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.circle.fill.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "eye.circle.fill.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.circle.fill.imageset/eye.circle.fill.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.circle.fill.imageset/eye.circle.fill.pdf new file mode 100644 index 000000000..bbc4a3ac4 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.circle.fill.imageset/eye.circle.fill.pdf @@ -0,0 +1,125 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm +0.000000 0.000000 0.000000 scn +16.989307 0.000000 m +19.322350 0.000000 21.512966 0.441750 23.561153 1.325245 c +25.609318 2.208746 27.416132 3.436619 28.981590 5.008865 c +30.547117 6.581110 31.774899 8.391962 32.664940 10.441422 c +33.554981 12.490898 34.000000 14.677086 34.000000 16.999983 c +34.000000 19.322903 33.554981 21.509090 32.664940 23.558544 c +31.774899 25.608021 30.544210 27.418886 28.972881 28.991137 c +27.401642 30.563387 25.591934 31.791258 23.543745 32.674755 c +21.495579 33.558250 19.304962 34.000000 16.971897 34.000000 c +14.653032 34.000000 12.468869 33.558250 10.419407 32.674755 c +8.369945 31.791258 6.566022 30.563387 5.007641 28.991137 c +3.449283 27.418886 2.225084 25.608021 1.335042 23.558544 c +0.445014 21.509090 0.000000 19.322903 0.000000 16.999983 c +0.000000 14.677086 0.445014 12.490898 1.335042 10.441422 c +2.225084 8.391962 3.452185 6.581110 5.016346 5.008865 c +6.580508 3.436619 8.387330 2.208746 10.436815 1.325245 c +12.486278 0.441750 14.670443 0.000000 16.989307 0.000000 c +h +16.993164 9.949825 m +15.357431 9.949825 13.855102 10.229713 12.486176 10.789488 c +11.117251 11.349285 9.930407 12.031605 8.925645 12.836449 c +7.920860 13.641315 7.142945 14.430695 6.591897 15.204592 c +6.040850 15.978466 5.765326 16.572420 5.765326 16.986456 c +5.765326 17.400492 6.038916 17.994457 6.586094 18.768354 c +7.133273 19.542252 7.906352 20.331621 8.905334 21.136465 c +9.904292 21.941330 11.091135 22.623650 12.465864 23.183426 c +13.840593 23.743221 15.349693 24.023121 16.993164 24.023121 c +18.640503 24.023121 20.147987 23.743221 21.515615 23.183426 c +22.883266 22.623650 24.067867 21.941330 25.069420 21.136465 c +26.070972 20.331621 26.843737 19.542252 27.387707 18.768354 c +27.931677 17.994457 28.203663 17.400492 28.203663 16.986456 c +28.203663 16.572420 27.931677 15.978466 27.387707 15.204592 c +26.843737 14.430695 26.071623 13.641315 25.071367 12.836449 c +24.071089 12.031605 22.887135 11.349285 21.519506 10.789488 c +20.151878 10.229713 18.643097 9.949825 16.993164 9.949825 c +h +16.993164 12.377918 m +17.840057 12.377918 18.611862 12.589771 19.308580 13.013485 c +20.005299 13.437176 20.562477 13.996964 20.980122 14.692844 c +21.397766 15.388702 21.606586 16.153238 21.606586 16.986456 c +21.606586 17.848070 21.397766 18.626804 20.980122 19.322662 c +20.562477 20.018520 20.005299 20.571213 19.308580 20.980740 c +18.611862 21.390266 17.840057 21.595030 16.993164 21.595030 c +16.134687 21.595030 15.357088 21.390266 14.660371 20.980740 c +13.963676 20.571213 13.407145 20.018520 12.990775 19.322662 c +12.574429 18.626804 12.366257 17.848070 12.366257 16.986456 c +12.368829 16.153238 12.578299 15.388702 12.994668 14.692844 c +13.411015 13.996964 13.966898 13.437176 14.662318 13.013485 c +15.357738 12.589771 16.134687 12.377918 16.993164 12.377918 c +h +17.014465 14.958965 m +16.460209 14.958965 15.980392 15.161781 15.575014 15.567413 c +15.169660 15.973045 14.966982 16.446060 14.966982 16.986456 c +14.966982 17.526875 15.169660 17.999889 15.575014 18.405499 c +15.980392 18.811131 16.460209 19.013947 17.014465 19.013947 c +17.554522 19.013947 18.024336 18.811131 18.423910 18.405499 c +18.823484 17.999889 19.023272 17.526875 19.023272 16.986456 c +19.023272 16.446060 18.823484 15.973045 18.423910 15.567413 c +18.024336 15.161781 17.554522 14.958965 17.014465 14.958965 c +h +f +n +Q + +endstream +endobj + +3 0 obj + 3391 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 34.000000 34.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000003481 00000 n +0000003504 00000 n +0000003677 00000 n +0000003751 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +3810 +%%EOF \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.slash.circle.fill.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.slash.circle.fill.imageset/Contents.json new file mode 100644 index 000000000..cc18167f7 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.slash.circle.fill.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "eye.slash.circle.fill.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.slash.circle.fill.imageset/eye.slash.circle.fill.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.slash.circle.fill.imageset/eye.slash.circle.fill.pdf new file mode 100644 index 000000000..3912ea6d3 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Human/eye.slash.circle.fill.imageset/eye.slash.circle.fill.pdf @@ -0,0 +1,139 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 0.000000 0.000000 cm +0.000000 0.000000 0.000000 scn +16.989307 0.000000 m +19.322350 0.000000 21.512964 0.441746 23.561153 1.325245 c +25.609318 2.208746 27.416132 3.436619 28.981590 5.008865 c +30.547117 6.581110 31.774899 8.391962 32.664940 10.441422 c +33.554981 12.490898 34.000000 14.677086 34.000000 16.999983 c +34.000000 19.322903 33.554981 21.509090 32.664940 23.558544 c +31.774899 25.608021 30.544210 27.418886 28.972881 28.991137 c +27.401642 30.563387 25.591932 31.791258 23.543745 32.674755 c +21.495579 33.558250 19.304962 34.000000 16.971897 34.000000 c +14.653033 34.000000 12.468869 33.558250 10.419407 32.674755 c +8.369944 31.791258 6.566022 30.563387 5.007641 28.991137 c +3.449283 27.418886 2.225084 25.608021 1.335042 23.558544 c +0.445014 21.509090 0.000000 19.322903 0.000000 16.999983 c +0.000000 14.677086 0.445014 12.490898 1.335042 10.441422 c +2.225084 8.391962 3.452185 6.581110 5.016346 5.008865 c +6.580508 3.436619 8.387330 2.208746 10.436815 1.325245 c +12.486278 0.441746 14.670442 0.000000 16.989307 0.000000 c +h +20.951313 10.079727 m +20.344168 9.895254 19.708973 9.742058 19.045732 9.620138 c +18.382490 9.498241 17.697016 9.437292 16.989307 9.437292 c +15.235007 9.437292 13.624114 9.738777 12.156626 10.341749 c +10.689138 10.944744 9.420459 11.680578 8.350589 12.549252 c +7.280741 13.417925 6.449994 14.262413 5.858347 15.082718 c +5.266723 15.903046 4.970911 16.537626 4.970911 16.986456 c +4.970911 17.488209 5.335063 18.222446 6.063368 19.189175 c +6.791673 20.155926 7.797766 21.079124 9.081647 21.958775 c +12.354888 18.669945 l +12.148547 18.150091 12.045376 17.588926 12.045376 16.986456 c +12.047971 16.095217 12.269036 15.274912 12.708573 14.525541 c +13.148132 13.776169 13.745263 13.175121 14.499967 12.722397 c +15.254647 12.269672 16.084427 12.043310 16.989307 12.043310 c +17.572033 12.043310 18.128338 12.153637 18.658220 12.374296 c +20.951313 10.079727 l +h +16.610533 14.419378 m +15.995673 14.406466 15.470092 14.628626 15.033787 15.085859 c +14.597482 15.543070 14.387078 16.056072 14.402575 16.624865 c +16.610533 14.419378 l +h +21.635332 15.318474 m +21.833935 15.861555 21.933235 16.417551 21.933235 16.986456 c +21.933235 17.903496 21.712809 18.733810 21.271954 19.477398 c +20.831120 20.220963 20.236252 20.815556 19.487350 21.261173 c +18.738451 21.706795 17.905769 21.929604 16.989307 21.929604 c +16.416889 21.929604 15.868335 21.831537 15.343640 21.635405 c +13.067924 23.908693 l +13.675068 24.090595 14.308327 24.240559 14.967699 24.358583 c +15.627072 24.476631 16.300941 24.535656 16.989307 24.535656 c +18.766796 24.535656 20.389282 24.234158 21.856770 23.631165 c +23.324280 23.028191 24.593609 22.292368 25.664755 21.423695 c +26.735899 20.555000 27.561493 19.710501 28.141533 18.890194 c +28.721573 18.069889 29.011593 17.435308 29.011593 16.986456 c +29.011593 16.487301 28.650341 15.753389 27.927839 14.784727 c +27.205315 13.816063 26.204697 12.890612 24.925982 12.008366 c +21.635332 15.318474 l +h +17.387436 19.586462 m +17.990688 19.576170 18.504028 19.351105 18.927452 18.911270 c +19.350876 18.471457 19.560640 17.965868 19.556749 17.394503 c +17.387436 19.586462 l +h +25.073380 7.792742 m +7.762697 25.118214 l +7.622216 25.261356 7.551338 25.442539 7.550064 25.661762 c +7.548766 25.881008 7.619644 26.069296 7.762697 26.226625 c +7.917356 26.381382 8.105525 26.458761 8.327205 26.458761 c +8.548884 26.458761 8.737055 26.381382 8.891714 26.226625 c +26.181129 8.901154 l +26.335789 8.748993 26.413122 8.565552 26.413122 8.350830 c +26.413122 8.136106 26.335789 7.950079 26.181129 7.792742 c +26.040648 7.647011 25.859568 7.574789 25.637888 7.576080 c +25.416208 7.577374 25.228039 7.649595 25.073380 7.792742 c +h +f +n +Q + +endstream +endobj + +3 0 obj + 3709 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 34.000000 34.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000003799 00000 n +0000003822 00000 n +0000003995 00000 n +0000004069 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +4128 +%%EOF \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift index 9524153a3..f7b676d0c 100644 --- a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift +++ b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift @@ -86,6 +86,8 @@ public enum Asset { public static let photoFillSplit = ImageAsset(name: "Connectivity/photo.fill.split") } public enum Human { + public static let eyeCircleFill = ImageAsset(name: "Human/eye.circle.fill") + public static let eyeSlashCircleFill = ImageAsset(name: "Human/eye.slash.circle.fill") public static let faceSmilingAdaptive = ImageAsset(name: "Human/face.smiling.adaptive") } public enum Scene { diff --git a/MastodonSDK/Sources/MastodonAsset/Generated/Fonts.swift b/MastodonSDK/Sources/MastodonAsset/Generated/Fonts.swift new file mode 100644 index 000000000..600fcb5b4 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Generated/Fonts.swift @@ -0,0 +1,4 @@ +// swiftlint:disable all +// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen + +// No fonts found diff --git a/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift b/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift index dbee8e9b3..ee9bc73ef 100644 --- a/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift +++ b/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift @@ -15,6 +15,7 @@ extension MetaLabel { case statusHeader case statusName case statusUsername + case statusSpoiler case notificationTitle case profileFieldName case profileFieldValue @@ -56,6 +57,12 @@ extension MetaLabel { font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular)) textColor = Asset.Colors.Label.secondary.color + case .statusSpoiler: + font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) + textColor = Asset.Colors.Label.secondary.color + textAlignment = .center + paragraphStyle.alignment = .center + case .notificationTitle: font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 14, weight: .regular)) textColor = Asset.Colors.Label.secondary.color diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index a3f367e47..74fcb9434 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -380,7 +380,9 @@ extension NotificationView: StatusViewDelegate { assertionFailure() } - + public func statusView(_ statusView: StatusView, contentWarningToggleButtonDidPressed button: UIButton) { + assertionFailure() + } } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index b711b3aed..2b1098d11 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -14,6 +14,7 @@ import MastodonSDK import MastodonAsset import MastodonLocalization import MastodonExtension +import CoreDataStack extension StatusView { public final class ViewModel: ObservableObject { @@ -41,6 +42,9 @@ extension StatusView { @Published public var timestamp: Date? public var timestampFormatter: ((_ date: Date) -> String)? + // Spoiler + @Published public var spoilerContent: MetaContent? + // Status @Published public var content: MetaContent? @@ -57,6 +61,19 @@ extension StatusView { @Published public var expireAt: Date? @Published public var expired: Bool = false + // Visibility + @Published public var visibility: MastodonVisibility = .public + + // Sensitive + @Published public var isContentSensitive: Bool = false + @Published public var isContentSensitiveToggled: Bool = false + @Published public var isMediaSensitive: Bool = false + @Published public var isMediaSensitiveToggled: Bool = false + + @Published public var isSensitive: Bool = false // isContentSensitive || isMediaSensitive + @Published public var isContentReveal: Bool = true + @Published public var isMediaReveal: Bool = true + // Toolbar @Published public var isReblog: Bool = false @Published public var isReblogEnabled: Bool = true @@ -93,6 +110,47 @@ extension StatusView { } } } + + public func prepareForReuse() { + authorAvatarImageURL = nil + + isContentSensitive = false + isContentSensitiveToggled = false + isMediaSensitive = false + isMediaSensitiveToggled = false + + isSensitive = false + isContentReveal = false + isMediaReveal = false + } + + init() { + // isContentSensitive + $spoilerContent + .map { $0 != nil } + .assign(to: &$isContentSensitive) + // isSensitive + Publishers.CombineLatest( + $isContentSensitive, + $isMediaSensitive + ) + .map { $0 || $1 } + .assign(to: &$isSensitive) + // $isContentReveal + Publishers.CombineLatest( + $isContentSensitive, + $isContentSensitiveToggled + ) + .map { $1 ? $0 : !$0 } + .assign(to: &$isContentReveal) + // $isMediaReveal + Publishers.CombineLatest( + $isMediaSensitive, + $isMediaSensitiveToggled + ) + .map { $1 ? !$0 : $0} + .assign(to: &$isMediaReveal) + } } } @@ -163,52 +221,98 @@ extension StatusView.ViewModel { statusView.authorUsernameLabel.configure(content: metaContent) } .store(in: &disposeBag) -// // visibility -// $visibility -// .sink { visibility in -// guard let visibility = visibility, -// let image = visibility.inlineImage -// else { return } -// -// statusView.visibilityImageView.image = image -// statusView.setVisibilityDisplay() -// } -// .store(in: &disposeBag) - // timestamp Publishers.CombineLatest( $timestamp, timestampUpdatePublisher.prepend(Date()).eraseToAnyPublisher() ) - .sink { [weak self] timestamp, _ in - guard let self = self else { return } + .compactMap { [weak self] timestamp, _ -> String? in + guard let self = self else { return nil } guard let timestamp = timestamp, - let text = self.timestampFormatter?(timestamp) else { - statusView.dateLabel.configure(content: PlaintextMetaContent(string: "")) - return - } - + let text = self.timestampFormatter?(timestamp) + else { return "" } + return text + } + .removeDuplicates() + .sink { [weak self] text in + guard let _ = self else { return } statusView.dateLabel.configure(content: PlaintextMetaContent(string: text)) } .store(in: &disposeBag) + $isSensitive + .sink { isSensitive in + if !isSensitive { + statusView.setMenuButtonDisplay() + } + } + .store(in: &disposeBag) } private func bindContent(statusView: StatusView) { - $content - .sink { content in - guard let content = content else { - statusView.contentMetaText.reset() - statusView.contentMetaText.textView.accessibilityLabel = "" - return - } - - statusView.contentMetaText.configure(content: content) + Publishers.CombineLatest3( + $spoilerContent, + $content, + $isContentReveal.removeDuplicates() + ) + .sink { spoilerContent, content, isContentReveal in + if let spoilerContent = spoilerContent { + statusView.spoilerOverlayView.spoilerMetaLabel.configure(content: spoilerContent) + } else { + statusView.spoilerOverlayView.spoilerMetaLabel.reset() + } + + if let content = content { + statusView.contentMetaText.configure( + content: content, + isRedactedModeEnabled: !isContentReveal + ) statusView.contentMetaText.textView.accessibilityLabel = content.string statusView.contentMetaText.textView.accessibilityTraits = [.staticText] statusView.contentMetaText.textView.accessibilityElementsHidden = false - + } else { + statusView.contentMetaText.reset() + statusView.contentMetaText.textView.accessibilityLabel = "" } - .store(in: &disposeBag) + + statusView.setSpoilerOverlayViewHidden(isContentReveal) + } + .store(in: &disposeBag) + // visibility + Publishers.CombineLatest( + $visibility, + $isMyself + ) + .sink { visibility, isMyself in + switch visibility { + case .public: + break + case .unlisted: + statusView.statusVisibilityView.label.text = "Everyone can see this post but not display in the public timeline." + statusView.setVisibilityDisplay() + case .private: + statusView.statusVisibilityView.label.text = isMyself ? "Only my followers can see this post." : "Only their followers can see this post." + statusView.setVisibilityDisplay() + case .direct: + statusView.statusVisibilityView.label.text = "Only mentioned user can see this post." + statusView.setVisibilityDisplay() + case ._other: + break + } + } + .store(in: &disposeBag) + Publishers.CombineLatest( + $isContentSensitive, + $isMediaSensitive + ) + .sink { isContentSensitive, isMediaSensitive in + if isContentSensitive || isMediaSensitive { + let image = Asset.Human.eyeCircleFill.image + statusView.contentWarningToggleButton.setImage(image, for: .normal) + statusView.contentWarningToggleButton.tintColor = .systemGray + statusView.setContentWarningToggleButtonDisplay() + } + } + .store(in: &disposeBag) // $spoilerContent // .sink { metaContent in // guard let metaContent = metaContent else { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index d6f9106bd..0b8cae96a 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -22,7 +22,7 @@ public protocol StatusViewDelegate: AnyObject { func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) func statusView(_ statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func statusView(_ statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) -// func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) + func statusView(_ statusView: StatusView, contentWarningToggleButtonDidPressed button: UIButton) // func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) // func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) } @@ -100,6 +100,9 @@ public final class StatusView: UIView { return button }() + // contentWarningToggleButton + public let contentWarningToggleButton = UIButton(type: .system) + // content let contentContainer = UIStackView() public let contentMetaText: MetaText = { @@ -130,6 +133,8 @@ public final class StatusView: UIView { ] return metaText }() + + let spoilerOverlayView = SpoilerOverlayView() // media public let mediaContainerView = UIView() @@ -189,6 +194,9 @@ public final class StatusView: UIView { return indicatorView }() + // visibility + public let statusVisibilityView = StatusVisibilityView() + // toolbar public let actionToolbarContainer = ActionToolbarContainer() @@ -199,7 +207,7 @@ public final class StatusView: UIView { disposeBag.removeAll() viewModel.objects.removeAll() - viewModel.authorAvatarImageURL = nil + viewModel.prepareForReuse() avatarButton.avatarImageView.cancelTask() mediaGridContainerView.prepareForReuse() @@ -214,8 +222,12 @@ public final class StatusView: UIView { } headerContainerView.isHidden = true + menuButton.isHidden = true + contentWarningToggleButton.isHidden = true + setSpoilerOverlayViewHidden(true) mediaContainerView.isHidden = true pollContainerView.isHidden = true + statusVisibilityView.isHidden = true } public override init(frame: CGRect) { @@ -254,6 +266,9 @@ extension StatusView { authorNameLabel.isUserInteractionEnabled = false authorUsernameLabel.isUserInteractionEnabled = false + // contentWarningToggleButton + contentWarningToggleButton.addTarget(self, action: #selector(StatusView.contentWarningToggleButtonDidPressed(_:)), for: .touchUpInside) + // dateLabel dateLabel.isUserInteractionEnabled = false @@ -291,6 +306,11 @@ extension StatusView { delegate?.statusView(self, authorAvatarButtonDidPressed: avatarButton) } + @objc private func contentWarningToggleButtonDidPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.statusView(self, contentWarningToggleButtonDidPressed: contentWarningToggleButton) + } + @objc private func pollVoteButtonDidPressed(_ sender: UIButton) { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") delegate?.statusView(self, pollVoteButtonPressed: pollVoteButton) @@ -360,7 +380,7 @@ extension StatusView.Style { statusView.headerIconImageView.setContentCompressionResistancePriority(.defaultLow, for: .vertical) statusView.headerIconImageView.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) - // author container: H - [ avatarButton | author meta container ] + // author container: H - [ avatarButton | author meta container | contentWarningToggleButton ] statusView.authorContainerView.preservesSuperviewLayoutMargins = true statusView.authorContainerView.isLayoutMarginsRelativeArrangement = true statusView.containerStackView.addArrangedSubview(statusView.authorContainerView) @@ -418,7 +438,12 @@ extension StatusView.Style { statusView.dateLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) authorSecondaryMetaContainer.addArrangedSubview(UIView()) - // content container: V - [ contentMetaText | ] + // contentWarningToggleButton + statusView.authorContainerView.addArrangedSubview(statusView.contentWarningToggleButton) + statusView.contentWarningToggleButton.setContentHuggingPriority(.required - 2, for: .horizontal) + statusView.contentWarningToggleButton.setContentCompressionResistancePriority(.required - 2, for: .horizontal) + + // content container: V - [ contentMetaText ] statusView.contentContainer.axis = .vertical statusView.contentContainer.spacing = 12 statusView.contentContainer.distribution = .fill @@ -430,10 +455,17 @@ extension StatusView.Style { statusView.contentContainer.setContentHuggingPriority(.required - 1, for: .vertical) statusView.contentContainer.setContentCompressionResistancePriority(.required - 1, for: .vertical) - // status + // status content statusView.contentContainer.addArrangedSubview(statusView.contentMetaText.textView) - statusView.contentMetaText.textView.setContentHuggingPriority(.required - 1, for: .vertical) - statusView.contentMetaText.textView.setContentCompressionResistancePriority(.required - 1, for: .vertical) + + statusView.spoilerOverlayView.translatesAutoresizingMaskIntoConstraints = false + statusView.containerStackView.addSubview(statusView.spoilerOverlayView) + NSLayoutConstraint.activate([ + statusView.contentContainer.topAnchor.constraint(equalTo: statusView.spoilerOverlayView.topAnchor), + statusView.contentContainer.leadingAnchor.constraint(equalTo: statusView.spoilerOverlayView.leadingAnchor), + statusView.contentContainer.trailingAnchor.constraint(equalTo: statusView.spoilerOverlayView.trailingAnchor), + statusView.contentContainer.bottomAnchor.constraint(equalTo: statusView.spoilerOverlayView.bottomAnchor), + ]) // media container: V - [ mediaGridContainerView ] statusView.containerStackView.addArrangedSubview(statusView.mediaContainerView) @@ -470,6 +502,10 @@ extension StatusView.Style { statusView.pollCountdownLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) statusView.pollVoteButton.setContentHuggingPriority(.defaultHigh + 3, for: .horizontal) + // statusVisibilityView + statusView.statusVisibilityView.preservesSuperviewLayoutMargins = true + statusView.containerStackView.addArrangedSubview(statusView.statusVisibilityView) + // action toolbar statusView.actionToolbarContainer.configure(for: .inline) statusView.actionToolbarContainer.preservesSuperviewLayoutMargins = true @@ -503,6 +539,7 @@ extension StatusView.Style { statusView.contentContainer.layoutMargins.bottom = 16 // fix contentText align to edge issue statusView.menuButton.removeFromSuperview() + statusView.statusVisibilityView.removeFromSuperview() statusView.actionToolbarContainer.removeFromSuperview() } @@ -524,6 +561,7 @@ extension StatusView.Style { statusView.contentContainer.removeFromSuperview() statusView.mediaContainerView.removeFromSuperview() statusView.pollContainerView.removeFromSuperview() + statusView.statusVisibilityView.removeFromSuperview() statusView.actionToolbarContainer.removeFromSuperview() } @@ -534,6 +572,19 @@ extension StatusView { headerContainerView.isHidden = false } + func setMenuButtonDisplay() { + menuButton.isHidden = false + } + + func setContentWarningToggleButtonDisplay() { + contentWarningToggleButton.isHidden = false + } + + func setSpoilerOverlayViewHidden(_ isHidden: Bool) { + spoilerOverlayView.isHidden = isHidden + spoilerOverlayView.setComponentHidden(isHidden) + } + func setMediaDisplay() { mediaContainerView.isHidden = false } @@ -542,6 +593,10 @@ extension StatusView { pollContainerView.isHidden = false } + func setVisibilityDisplay() { + statusVisibilityView.isHidden = false + } + // content text Width public var contentMaxLayoutWidth: CGFloat { let inset = contentLayoutInset diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift new file mode 100644 index 000000000..d6f3900ae --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift @@ -0,0 +1,90 @@ +// +// SpoilerOverlayView.swift +// +// +// Created by MainasuK on 2022-1-29. +// + +import UIKit +import MastodonLocalization +import MastodonAsset +import MetaTextKit + +final class SpoilerOverlayView: UIView { + + let containerStackView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .vertical + // stackView.spacing = 8 + stackView.alignment = .center + return stackView + }() + + let iconImageView: UIImageView = { + let imageView = UIImageView() + imageView.image = UIImage(systemName: "eye", withConfiguration: UIImage.SymbolConfiguration(font: .systemFont(ofSize: 34, weight: .light))) + imageView.tintColor = Asset.Colors.Label.secondary.color + return imageView + }() + + let titleLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold)) + label.textAlignment = .center + label.textColor = Asset.Colors.Label.primary.color + label.text = L10n.Common.Controls.Status.contentWarning + return label + }() + + let spoilerMetaLabel = MetaLabel(style: .statusSpoiler) + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension SpoilerOverlayView { + private func _init() { + containerStackView.translatesAutoresizingMaskIntoConstraints = false + addSubview(containerStackView) + NSLayoutConstraint.activate([ + containerStackView.topAnchor.constraint(equalTo: topAnchor), + containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), + containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor), + ]) + + + let topPaddingView = UIView() + topPaddingView.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(topPaddingView) + iconImageView.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(iconImageView) + NSLayoutConstraint.activate([ + iconImageView.widthAnchor.constraint(equalToConstant: 52.0).priority(.required - 1), + iconImageView.heightAnchor.constraint(equalToConstant: 32.0).priority(.required - 1), + ]) + iconImageView.setContentCompressionResistancePriority(.required, for: .vertical) + containerStackView.addArrangedSubview(titleLabel) + containerStackView.addArrangedSubview(spoilerMetaLabel) + let bottomPaddingView = UIView() + bottomPaddingView.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(bottomPaddingView) + NSLayoutConstraint.activate([ + topPaddingView.heightAnchor.constraint(equalTo: bottomPaddingView.heightAnchor).priority(.required - 1), + ]) + topPaddingView.setContentCompressionResistancePriority(.defaultLow - 100, for: .vertical) + bottomPaddingView.setContentCompressionResistancePriority(.defaultLow - 100, for: .vertical) + } + + public func setComponentHidden(_ isHidden: Bool) { + containerStackView.arrangedSubviews.forEach { $0.isHidden = isHidden } + } +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/StatusVisibilityView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/StatusVisibilityView.swift new file mode 100644 index 000000000..1866c7e19 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Control/StatusVisibilityView.swift @@ -0,0 +1,74 @@ +// +// StatusVisibilityView.swift +// +// +// Created by MainasuK on 2022-1-28. +// + +import UIKit + +public final class StatusVisibilityView: UIView { + + static let cornerRadius: CGFloat = 8 + static let containerMargin: CGFloat = 14 + + public let containerView = UIView() + + public let label: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .caption1).scaledFont(for: .systemFont(ofSize: 15, weight: .regular)) + label.numberOfLines = 0 + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension StatusVisibilityView { + + private func _init() { + containerView.translatesAutoresizingMaskIntoConstraints = false + addSubview(containerView) + NSLayoutConstraint.activate([ + containerView.topAnchor.constraint(equalTo: topAnchor), + containerView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor), + containerView.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor), + containerView.bottomAnchor.constraint(equalTo: bottomAnchor), + ]) + + containerView.backgroundColor = .secondarySystemBackground + + containerView.layoutMargins = UIEdgeInsets( + top: StatusVisibilityView.containerMargin, + left: StatusVisibilityView.containerMargin, + bottom: StatusVisibilityView.containerMargin, + right: StatusVisibilityView.containerMargin + ) + label.translatesAutoresizingMaskIntoConstraints = false + addSubview(label) + NSLayoutConstraint.activate([ + label.topAnchor.constraint(equalTo: containerView.layoutMarginsGuide.topAnchor), + label.leadingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.leadingAnchor), + label.trailingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.trailingAnchor), + label.bottomAnchor.constraint(equalTo: containerView.layoutMarginsGuide.bottomAnchor), + ]) + } + + public override func layoutSubviews() { + super.layoutSubviews() + + containerView.layer.masksToBounds = false + containerView.layer.cornerCurve = .continuous + containerView.layer.cornerRadius = StatusVisibilityView.cornerRadius + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/View/MastodonMenu.swift b/MastodonSDK/Sources/MastodonUI/View/Menu/MastodonMenu.swift similarity index 100% rename from MastodonSDK/Sources/MastodonUI/View/MastodonMenu.swift rename to MastodonSDK/Sources/MastodonUI/View/Menu/MastodonMenu.swift diff --git a/swiftgen.yml b/swiftgen.yml index fa8189cf2..e9c21260a 100644 --- a/swiftgen.yml +++ b/swiftgen.yml @@ -16,3 +16,11 @@ xcassets: params: bundle: Bundle.module publicAccess: true +fonts: + inputs: MastodonSDK/Sources/MastodonAsset/Font + outputs: + templateName: swift5 + output: MastodonSDK/Sources/MastodonAsset/Generated/Fonts.swift + params: + bundle: Bundle.module + publicAccess: true \ No newline at end of file From d332c98a0f10c030466ef1d703d6f1abf6544542 Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 29 Jan 2022 19:51:40 +0800 Subject: [PATCH 141/374] feat: add content warning for post media --- Mastodon.xcodeproj/project.pbxproj | 16 +-- .../xcshareddata/xcschemes/Mastodon.xcscheme | 7 + Mastodon/Extension/Date.swift | 44 ------ .../Provider/DataSourceFacade+Model.swift | 2 +- .../Protocol/Provider/DataSourceFacade.swift | 4 +- ...Provider+StatusTableViewCellDelegate.swift | 20 ++- .../HomeTimelineViewController.swift | 68 +++------ .../NotificationTableViewCell+ViewModel.swift | 2 +- .../NotificationViewModel+Diffable.swift | 94 ------------- .../Content/MediaView+Configuration.swift | 62 ++++++--- .../NotificationView+Configuration.swift | 12 +- .../Content/StatusView+Configuration.swift | 42 ++---- .../Service/BlurhashImageCacheService.swift | 53 +++---- .../CoreData 3.xcdatamodel/contents | 5 - .../Sources/MastodonUI/DateTimeProvider.swift | 12 ++ .../Sources/MastodonUI/Extension/Date.swift | 34 +++++ .../Content/MediaView+Configuration.swift | 131 +++++++++++------- .../MastodonUI/View/Content/MediaView.swift | 60 +++++++- .../Content/NotificationView+ViewModel.swift | 6 +- .../View/Content/StatusView+ViewModel.swift | 42 ++++-- .../MastodonUI/View/Content/StatusView.swift | 1 + 21 files changed, 355 insertions(+), 362 deletions(-) delete mode 100644 Mastodon/Extension/Date.swift delete mode 100644 Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift create mode 100644 MastodonSDK/Sources/MastodonUI/DateTimeProvider.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 9bc2abe2e..04b0fccab 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -25,7 +25,6 @@ 0FB3D33825E6401400AAD544 /* PickServerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FB3D33725E6401400AAD544 /* PickServerCell.swift */; }; 164F0EBC267D4FE400249499 /* BoopSound.caf in Resources */ = {isa = PBXBuildFile; fileRef = 164F0EBB267D4FE400249499 /* BoopSound.caf */; }; 18BC7629F65E6DB12CB8416D /* Pods_Mastodon_MastodonUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */; }; - 2D084B8D26258EA3003AA3AF /* NotificationViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */; }; 2D198643261BF09500F0B013 /* SearchResultItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198642261BF09500F0B013 /* SearchResultItem.swift */; }; 2D198649261C0B8500F0B013 /* SearchResultSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198648261C0B8500F0B013 /* SearchResultSection.swift */; }; 2D206B7225F5D27F00143C56 /* AudioContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */; }; @@ -413,6 +412,7 @@ DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */; }; DB87D4452609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D4442609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift */; }; DB87D4512609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB87D4502609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift */; }; + DB894CC427A5490600684B74 /* BlurhashImageCacheService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB894CC327A5490600684B74 /* BlurhashImageCacheService.swift */; }; DB8AF52E25C13561002E6C99 /* ViewStateStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF52B25C13561002E6C99 /* ViewStateStore.swift */; }; DB8AF52F25C13561002E6C99 /* DocumentStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF52C25C13561002E6C99 /* DocumentStore.swift */; }; DB8AF53025C13561002E6C99 /* AppContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8AF52D25C13561002E6C99 /* AppContext.swift */; }; @@ -477,7 +477,6 @@ DBAE3F942616E28B004B8251 /* APIService+Follow.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F932616E28B004B8251 /* APIService+Follow.swift */; }; DBAE3F9E2616E308004B8251 /* APIService+Mute.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F9D2616E308004B8251 /* APIService+Mute.swift */; }; DBAE3FAF26172FC0004B8251 /* RemoteProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3FAE26172FC0004B8251 /* RemoteProfileViewModel.swift */; }; - DBAEDE5C267A058D00D25FF5 /* BlurhashImageCacheService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAEDE5B267A058D00D25FF5 /* BlurhashImageCacheService.swift */; }; DBB3BA2A26A81C020004F2D4 /* FLAnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */; }; DBB3BA2B26A81D060004F2D4 /* FLAnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */; }; DBB525082611EAC0002F1F29 /* Tabman in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* Tabman */; }; @@ -516,7 +515,6 @@ DBBC24D126A5484F00398BB9 /* UITextView+Placeholder in Frameworks */ = {isa = PBXBuildFile; productRef = DBBC24D026A5484F00398BB9 /* UITextView+Placeholder */; }; DBBC24DC26A54BCB00398BB9 /* MastodonRegex.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24D626A54BCB00398BB9 /* MastodonRegex.swift */; }; DBBC24DE26A54BCB00398BB9 /* MastodonMetricFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC24D826A54BCB00398BB9 /* MastodonMetricFormatter.swift */; }; - DBBC50BF278ED0E700AF0CC6 /* Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBC50BE278ED0E700AF0CC6 /* Date.swift */; }; DBBE1B4525F3474B0081417A /* MastodonPickServerAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBE1B4425F3474B0081417A /* MastodonPickServerAppearance.swift */; }; DBBF1DBF2652401B00E5B703 /* AutoCompleteViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBF1DBE2652401B00E5B703 /* AutoCompleteViewModel.swift */; }; DBBF1DC226524D2900E5B703 /* AutoCompleteTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBBF1DC126524D2900E5B703 /* AutoCompleteTableViewCell.swift */; }; @@ -750,7 +748,6 @@ 159AC43EFE0A1F95FCB358A4 /* Pods-MastodonIntent.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonIntent.release.xcconfig"; path = "Target Support Files/Pods-MastodonIntent/Pods-MastodonIntent.release.xcconfig"; sourceTree = ""; }; 164F0EBB267D4FE400249499 /* BoopSound.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = BoopSound.caf; sourceTree = ""; }; 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk - debug.xcconfig"; sourceTree = ""; }; - 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+Diffable.swift"; sourceTree = ""; }; 2D198642261BF09500F0B013 /* SearchResultItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultItem.swift; sourceTree = ""; }; 2D198648261C0B8500F0B013 /* SearchResultSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultSection.swift; sourceTree = ""; }; 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioContainerView.swift; sourceTree = ""; }; @@ -1180,6 +1177,7 @@ DB852D1E26FB037800FC9D81 /* SidebarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarViewModel.swift; sourceTree = ""; }; DB87D4442609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollOptionCollectionViewCell.swift; sourceTree = ""; }; DB87D4502609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeStatusPollOptionAppendEntryCollectionViewCell.swift; sourceTree = ""; }; + DB894CC327A5490600684B74 /* BlurhashImageCacheService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurhashImageCacheService.swift; sourceTree = ""; }; DB89BA1025C10FF5008580ED /* Mastodon.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Mastodon.entitlements; sourceTree = ""; }; DB8AF52B25C13561002E6C99 /* ViewStateStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewStateStore.swift; sourceTree = ""; }; DB8AF52C25C13561002E6C99 /* DocumentStore.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DocumentStore.swift; sourceTree = ""; }; @@ -1257,7 +1255,6 @@ DBAE3F932616E28B004B8251 /* APIService+Follow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Follow.swift"; sourceTree = ""; }; DBAE3F9D2616E308004B8251 /* APIService+Mute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Mute.swift"; sourceTree = ""; }; DBAE3FAE26172FC0004B8251 /* RemoteProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteProfileViewModel.swift; sourceTree = ""; }; - DBAEDE5B267A058D00D25FF5 /* BlurhashImageCacheService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurhashImageCacheService.swift; sourceTree = ""; }; DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLAnimatedImageView.swift; sourceTree = ""; }; DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileSegmentedViewController.swift; sourceTree = ""; }; DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePagingViewController.swift; sourceTree = ""; }; @@ -1282,7 +1279,6 @@ DBBC24CE26A547AE00398BB9 /* ThemeService+Appearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ThemeService+Appearance.swift"; sourceTree = ""; }; DBBC24D626A54BCB00398BB9 /* MastodonRegex.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MastodonRegex.swift; sourceTree = ""; }; DBBC24D826A54BCB00398BB9 /* MastodonMetricFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MastodonMetricFormatter.swift; sourceTree = ""; }; - DBBC50BE278ED0E700AF0CC6 /* Date.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Date.swift; sourceTree = ""; }; DBBC50C0278ED49200AF0CC6 /* MastodonAuthenticationBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonAuthenticationBox.swift; sourceTree = ""; }; DBBE1B4425F3474B0081417A /* MastodonPickServerAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonPickServerAppearance.swift; sourceTree = ""; }; DBBF1DBE2652401B00E5B703 /* AutoCompleteViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoCompleteViewModel.swift; sourceTree = ""; }; @@ -1690,9 +1686,9 @@ DB6D9F6226357848008423CD /* SettingService.swift */, DBA5E7A2263AD0A3004598BB /* PhotoLibraryService.swift */, DB297B1A2679FAE200704C90 /* PlaceholderImageCacheService.swift */, - DBAEDE5B267A058D00D25FF5 /* BlurhashImageCacheService.swift */, DB564BD2269F3B35001E39A7 /* StatusFilterService.swift */, DB73BF42271192BB00781945 /* InstanceService.swift */, + DB894CC327A5490600684B74 /* BlurhashImageCacheService.swift */, ); path = Service; sourceTree = ""; @@ -2724,7 +2720,6 @@ DBCC3B35261440BA0045B23D /* UINavigationController.swift */, DB73BF4827140BA300781945 /* UICollectionViewDiffableDataSource.swift */, DB73BF4A27140C0800781945 /* UITableViewDiffableDataSource.swift */, - DBBC50BE278ED0E700AF0CC6 /* Date.swift */, ); path = Extension; sourceTree = ""; @@ -2794,7 +2789,6 @@ 2D35237F26256F470031AF25 /* Cell */, DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */, 2D607AD726242FC500B70763 /* NotificationViewModel.swift */, - 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */, ); path = Notification; sourceTree = ""; @@ -3782,7 +3776,6 @@ 5DF1054125F886D400D6C0D4 /* VideoPlaybackService.swift in Sources */, DB6B35182601FA3400DC1E11 /* MastodonAttachmentService.swift in Sources */, 0FB3D2F725E4C24D00AAD544 /* MastodonPickServerViewModel.swift in Sources */, - DBBC50BF278ED0E700AF0CC6 /* Date.swift in Sources */, 2D61335E25C1894B00CAE157 /* APIService.swift in Sources */, 2D9DB967263A76FB007C1D71 /* BlockDomainService.swift in Sources */, DB336F43278EB1690031E64B /* MediaView+Configuration.swift in Sources */, @@ -3976,7 +3969,6 @@ DB4F0968269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift in Sources */, 0FB3D2FE25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift in Sources */, 5DA732CC2629CEF500A92342 /* UIView+Remove.swift in Sources */, - DBAEDE5C267A058D00D25FF5 /* BlurhashImageCacheService.swift in Sources */, DB1D843026566512000346B3 /* KeyboardPreference.swift in Sources */, DB852D1926FAEB6B00FC9D81 /* SidebarViewController.swift in Sources */, 2D206B9225F60EA700143C56 /* UIControl.swift in Sources */, @@ -4024,7 +4016,6 @@ DB0617EF277F12720030EE79 /* NavigationActionView.swift in Sources */, DB1FD43625F26899004CFCFC /* MastodonPickServerViewModel+LoadIndexedServerState.swift in Sources */, 2D939AE825EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift in Sources */, - 2D084B8D26258EA3003AA3AF /* NotificationViewModel+Diffable.swift in Sources */, DB3667A1268ABB2E0027D07F /* ComposeStatusAttachmentItem.swift in Sources */, DB1D186C25EF5BA7003F1F23 /* PollTableView.swift in Sources */, DBA94434265CBB5300C537E1 /* ProfileFieldSection.swift in Sources */, @@ -4136,6 +4127,7 @@ 2D5A3D0325CF8742002347D6 /* ControlContainableScrollViews.swift in Sources */, DB36679D268AB91B0027D07F /* ComposeStatusAttachmentTableViewCell.swift in Sources */, DB98336B25C9420100AD9700 /* APIService+App.swift in Sources */, + DB894CC427A5490600684B74 /* BlurhashImageCacheService.swift in Sources */, DBFEF07B26A6BCE8006D7ED1 /* APIService+Status+Publish.swift in Sources */, DBA0A11325FB3FC10079C110 /* ComposeToolbarView.swift in Sources */, 5B90C48526259BF10002E742 /* APIService+Subscriptions.swift in Sources */, diff --git a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon.xcscheme b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon.xcscheme index de059787b..b99adf881 100644 --- a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon.xcscheme +++ b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon.xcscheme @@ -86,6 +86,13 @@ ReferencedContainer = "container:Mastodon.xcodeproj"> + + + + String { - let earlierDate = date < self ? date : self - let latestDate = earlierDate == date ? self : date - - if isSlowed, earlierDate.timeIntervalSince(latestDate) >= -60 { - return L10n.Common.Controls.Timeline.Timestamp.now - } else { - if isAbbreviated { - return latestDate.localizedShortTimeAgo(since: earlierDate) - } else { - return Date.relativeTimestampFormatter.localizedString(for: earlierDate, relativeTo: latestDate) - } - } - } - -} diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift index 1e16e0407..efdf41dbd 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Model.swift @@ -47,7 +47,7 @@ extension DataSourceFacade { switch target { case .status: return status.reblog ?? status - case .repost: + case .reblog: return status } } diff --git a/Mastodon/Protocol/Provider/DataSourceFacade.swift b/Mastodon/Protocol/Provider/DataSourceFacade.swift index 809aab424..4d3536517 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade.swift @@ -10,7 +10,7 @@ import Foundation enum DataSourceFacade { enum StatusTarget { - case status // remove repost wrapper - case repost // keep repost wrapper + case status // remove reblog wrapper + case reblog // keep reblog wrapper } } diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift index cd167cb9d..ffd3de8b1 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift @@ -30,7 +30,7 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { } await DataSourceFacade.coordinateToProfileScene( provider: self, - target: .status, // without reblog header + target: .reblog, // keep the wrapper for header author status: status ) } @@ -117,6 +117,24 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider & MediaPrev assertionFailure("only works for status data provider") return } + + let managedObjectContext = self.context.managedObjectContext + let needsToggleMediaSensitive: Bool = try await managedObjectContext.perform { + guard let _status = status.object(in: managedObjectContext) else { return false } + let status = _status.reblog ?? _status + guard status.sensitive else { return false } + guard status.isMediaSensitiveToggled else { return true } + return false + } + + guard !needsToggleMediaSensitive else { + try await DataSourceFacade.responseToToggleMediaSensitiveAction( + dependency: self, + status: status + ) + return + } + try await DataSourceFacade.coordinateToMediaPreviewScene( dependency: self, status: status, diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index e408ab8de..fcef0bffd 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -374,7 +374,7 @@ extension HomeTimelineViewController { @objc private func findPeopleButtonPressed(_ sender: PrimaryActionButton) { // TODO: - let viewModel = SuggestionAccountViewModel(context: context) +// let viewModel = SuggestionAccountViewModel(context: context) // viewModel.delegate = self.viewModel // coordinator.present(scene: .suggestionAccount(viewModel: viewModel), from: self, transition: .modal(animated: true, completion: nil)) } @@ -553,40 +553,9 @@ extension HomeTimelineViewController: UITableViewDelegate, AutoGenerateTableView // func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { // aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) // } -// -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didSelectRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { -// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) -// } -// -// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { -// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) -// } } -// MARK: - UITableViewDataSourcePrefetching -//extension HomeTimelineViewController: UITableViewDataSourcePrefetching { -// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { -// aspectTableView(tableView, prefetchRowsAt: indexPaths) -// } -// -// func tableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) { -// aspectTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) -// } -//} - // MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate extension HomeTimelineViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { func navigationBar() -> UINavigationBar? { @@ -613,24 +582,23 @@ extension HomeTimelineViewController: ScrollViewContainer { var scrollView: UIScrollView { return tableView } func scrollToTop(animated: Bool) { - // TODO: -// if scrollView.contentOffset.y < scrollView.frame.height, -// viewModel.loadLatestStateMachine.canEnterState(HomeTimelineViewModel.LoadLatestState.Loading.self), -// (scrollView.contentOffset.y + scrollView.adjustedContentInset.top) == 0.0, -// !refreshControl.isRefreshing { -// scrollView.scrollRectToVisible(CGRect(origin: CGPoint(x: 0, y: -refreshControl.frame.height), size: CGSize(width: 1, height: 1)), animated: animated) -// DispatchQueue.main.async { [weak self] in -// guard let self = self else { return } -// self.refreshControl.beginRefreshing() -// self.refreshControl.sendActions(for: .valueChanged) -// } -// } else { -// let indexPath = IndexPath(row: 0, section: 0) -// guard viewModel.diffableDataSource?.itemIdentifier(for: indexPath) != nil else { return } -// // save position -// savePositionBeforeScrollToTop() -// tableView.scrollToRow(at: indexPath, at: .top, animated: true) -// } + if scrollView.contentOffset.y < scrollView.frame.height, + viewModel.loadLatestStateMachine.canEnterState(HomeTimelineViewModel.LoadLatestState.Loading.self), + (scrollView.contentOffset.y + scrollView.adjustedContentInset.top) == 0.0, + !refreshControl.isRefreshing { + scrollView.scrollRectToVisible(CGRect(origin: CGPoint(x: 0, y: -refreshControl.frame.height), size: CGSize(width: 1, height: 1)), animated: animated) + DispatchQueue.main.async { [weak self] in + guard let self = self else { return } + self.refreshControl.beginRefreshing() + self.refreshControl.sendActions(for: .valueChanged) + } + } else { + let indexPath = IndexPath(row: 0, section: 0) + guard viewModel.diffableDataSource?.itemIdentifier(for: indexPath) != nil else { return } + // save position + savePositionBeforeScrollToTop() + tableView.scrollToRow(at: indexPath, at: .top, animated: true) + } } } diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift index 99c040424..83bd7b829 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift @@ -42,7 +42,7 @@ extension NotificationTableViewCell { case .feed(let feed): notificationView.configure(feed: feed) } - +// self.delegate = delegate } diff --git a/Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift deleted file mode 100644 index 943db00b0..000000000 --- a/Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift +++ /dev/null @@ -1,94 +0,0 @@ -// -// NotificationViewModel+Diffable.swift -// Mastodon -// -// Created by sxiaojian on 2021/4/13. -// - -import CoreData -import CoreDataStack -import os.log -import UIKit -import MastodonSDK - - - -//extension NotificationViewModel: NSFetchedResultsControllerDelegate { -// func controllerWillChangeContent(_ controller: NSFetchedResultsController) { -// os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) -// } -// -// func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { -// os_log("%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) -// -// guard let tableView = self.tableView else { return } -// guard let navigationBar = contentOffsetAdjustableTimelineViewControllerDelegate?.navigationBar() else { return } -// -// guard let diffableDataSource = self.diffableDataSource else { return } -// -// let predicate: NSPredicate = { -// let notificationTypePredicate = MastodonNotification.predicate( -// validTypesRaws: Mastodon.Entity.Notification.NotificationType.knownCases.map { $0.rawValue } -// ) -// return fetchedResultsController.fetchRequest.predicate.flatMap { -// NSCompoundPredicate(andPredicateWithSubpredicates: [$0, notificationTypePredicate]) -// } ?? notificationTypePredicate -// }() -// let parentManagedObjectContext = fetchedResultsController.managedObjectContext -// let managedObjectContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) -// managedObjectContext.parent = parentManagedObjectContext -// -// managedObjectContext.perform { -// let notifications: [MastodonNotification] = { -// let request = MastodonNotification.sortedFetchRequest -// request.returnsObjectsAsFaults = false -// request.predicate = predicate -// do { -// return try managedObjectContext.fetch(request) -// } catch { -// assertionFailure(error.localizedDescription) -// return [] -// } -// }() -// -// DispatchQueue.main.async { -// let oldSnapshot = diffableDataSource.snapshot() -// var oldSnapshotAttributeDict: [NSManagedObjectID : Item.StatusAttribute] = [:] -// for item in oldSnapshot.itemIdentifiers { -// guard case let .notification(objectID, attribute) = item else { continue } -// oldSnapshotAttributeDict[objectID] = attribute -// } -// var newSnapshot = NSDiffableDataSourceSnapshot() -// newSnapshot.appendSections([.main]) -// -// let segment = self.selectedIndex.value -// switch segment { -// case .everyThing: -// let items: [NotificationItem] = notifications.map { notification in -// let attribute: Item.StatusAttribute = oldSnapshotAttributeDict[notification.objectID] ?? Item.StatusAttribute() -// return NotificationItem.notification(objectID: notification.objectID, attribute: attribute) -// } -// newSnapshot.appendItems(items, toSection: .main) -// case .mentions: -// let items: [NotificationItem] = notifications.map { notification in -// let attribute: Item.StatusAttribute = oldSnapshotAttributeDict[notification.objectID] ?? Item.StatusAttribute() -// return NotificationItem.notificationStatus(objectID: notification.objectID, attribute: attribute) -// } -// newSnapshot.appendItems(items, toSection: .main) -// } -// -// if !notifications.isEmpty, self.noMoreNotification.value == false { -// newSnapshot.appendItems([.bottomLoader], toSection: .main) -// } -// -// self.isFetchingLatestNotification.value = false -// -// diffableDataSource.apply(newSnapshot, animatingDifferences: false) { [weak self] in -// guard let self = self else { return } -// self.dataSourceDidUpdated.send() -// } -// } -// } -// } -// -//} diff --git a/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift b/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift index 5401ec9ba..52651d81b 100644 --- a/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift @@ -25,24 +25,54 @@ extension MediaView { return status.publisher(for: \.attachments) .map { attachments -> [MediaView.Configuration] in return attachments.map { attachment -> MediaView.Configuration in - switch attachment.kind { - case .image: - let info = MediaView.Configuration.ImageInfo( - aspectRadio: attachment.size, - assetURL: attachment.assetURL + let configuration: MediaView.Configuration = { + switch attachment.kind { + case .image: + let info = MediaView.Configuration.ImageInfo( + aspectRadio: attachment.size, + assetURL: attachment.assetURL + ) + return .init( + info: .image(info: info), + blurhash: attachment.blurhash + ) + case .video: + let info = videoInfo(from: attachment) + return .init( + info: .video(info: info), + blurhash: attachment.blurhash + ) + case .gifv: + let info = videoInfo(from: attachment) + return .init( + info: .gif(info: info), + blurhash: attachment.blurhash + ) + case .audio: + // TODO: + let info = videoInfo(from: attachment) + return .init( + info: .video(info: info), + blurhash: attachment.blurhash + ) + } // end switch + }() + + if let assetURL = configuration.assetURL, + let blurhash = configuration.blurhash + { + AppContext.shared.blurhashImageCacheService.image( + blurhash: blurhash, + size: configuration.aspectRadio, + url: assetURL ) - return .image(info: info) - case .video: - let info = videoInfo(from: attachment) - return .video(info: info) - case .gifv: - let info = videoInfo(from: attachment) - return .gif(info: info) - case .audio: - // TODO: - let info = videoInfo(from: attachment) - return .video(info: info) + .assign(to: \.blurhashImage, on: configuration) + .store(in: &configuration.blurhashImageDisposeBag) } + + configuration.isReveal = status.sensitive ? status.isMediaSensitiveToggled : true + + return configuration } } .eraseToAnyPublisher() diff --git a/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift b/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift index 41550a2a8..705e90a76 100644 --- a/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift @@ -92,13 +92,7 @@ extension NotificationView { .assign(to: \.authorUsername, on: viewModel) .store(in: &disposeBag) // timestamp - viewModel.timestampFormatter = { (date: Date) in - date.localizedSlowedTimeAgoSinceNow - } - notification.publisher(for: \.createAt) - .map { $0 as Date? } - .assign(to: \.timestamp, on: viewModel) - .store(in: &disposeBag) + viewModel.timestamp = notification.createAt // notification type indicator Publishers.CombineLatest3( notification.publisher(for: \.typeRaw), @@ -111,7 +105,7 @@ extension NotificationView { self.viewModel.notificationIndicatorText = nil return } - + func createMetaContent(text: String, emojis: MastodonContent.Emojis) -> MetaContent { let content = MastodonContent(content: text, emojis: emojis) guard let metaContent = try? MastodonMetaContent.convert(document: content) else { @@ -119,7 +113,7 @@ extension NotificationView { } return metaContent } - + // TODO: fix the i18n. The subject should assert place at the string beginning switch type { case .follow: diff --git a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift index 8530fe244..249c2cfcb 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift @@ -173,14 +173,10 @@ extension StatusView { .map { $0 as String? } .assign(to: \.authorUsername, on: viewModel) .store(in: &disposeBag) - - // // protected - // author.publisher(for: \.locked) - // .assign(to: \.protected, on: viewModel) - // .store(in: &disposeBag) - // // visibility - // viewModel.visibility = status.visibility.asStatusVisibility - + // locked + author.publisher(for: \.locked) + .assign(to: \.locked, on: viewModel) + .store(in: &disposeBag) // isMuting Publishers.CombineLatest( viewModel.$userIdentifier, @@ -267,42 +263,22 @@ extension StatusView { status.publisher(for: \.isContentSensitiveToggled) .assign(to: \.isContentSensitiveToggled, on: viewModel) .store(in: &disposeBag) - status.publisher(for: \.isMediaSensitiveToggled) - .assign(to: \.isMediaSensitiveToggled, on: viewModel) - .store(in: &disposeBag) - + // viewModel.source = status.source } private func configureMedia(status: Status) { let status = status.reblog ?? status -// mediaGridContainerView.viewModel.resetContentWarningOverlay() -// viewModel.isMediaSensitiveSwitchable = true - - viewModel.isMediaSensitive = status.sensitive + viewModel.isMediaSensitive = status.sensitive && !status.attachments.isEmpty // some servers set media sensitive even empty attachments MediaView.configuration(status: status) .assign(to: \.mediaViewConfigurations, on: viewModel) .store(in: &disposeBag) -// // set directly without delay -// viewModel.isMediaSensitiveToggled = status.isMediaSensitiveToggled -// viewModel.isMediaSensitive = status.isMediaSensitive -// mediaGridContainerView.configureOverlayDisplay( -// isDisplay: status.isMediaSensitiveToggled ? !status.isMediaSensitive : !status.isMediaSensitive, -// animated: false -// ) -// -// status.publisher(for: \.isMediaSensitive) -// .receive(on: DispatchQueue.main) -// .assign(to: \.isMediaSensitive, on: viewModel) -// .store(in: &disposeBag) -// -// status.publisher(for: \.isMediaSensitiveToggled) -// .receive(on: DispatchQueue.main) -// .assign(to: \.isMediaSensitiveToggled, on: viewModel) -// .store(in: &disposeBag) + status.publisher(for: \.isMediaSensitiveToggled) + .assign(to: \.isMediaSensitiveToggled, on: viewModel) + .store(in: &disposeBag) } private func configurePoll(status: Status) { diff --git a/Mastodon/Service/BlurhashImageCacheService.swift b/Mastodon/Service/BlurhashImageCacheService.swift index 580cb5429..b15a9750b 100644 --- a/Mastodon/Service/BlurhashImageCacheService.swift +++ b/Mastodon/Service/BlurhashImageCacheService.swift @@ -8,13 +8,19 @@ import UIKit import Combine -final class BlurhashImageCacheService { +public final class BlurhashImageCacheService { + + static let edgeMaxLength: CGFloat = 20 let cache = NSCache() let workingQueue = DispatchQueue(label: "org.joinmastodon.app.BlurhashImageCacheService.working-queue", qos: .userInitiated, attributes: .concurrent) - func image(blurhash: String, size: CGSize, url: URL) -> AnyPublisher { + public func image( + blurhash: String, + size: CGSize, + url: String + ) -> AnyPublisher { let key = Key(blurhash: blurhash, size: size, url: url) if let image = self.cache.object(forKey: key) { @@ -23,7 +29,7 @@ final class BlurhashImageCacheService { return Future { promise in self.workingQueue.async { - guard let image = BlurhashImageCacheService.blurhashImage(blurhash: blurhash, size: size, url: url) else { + guard let image = BlurhashImageCacheService.blurhashImage(blurhash: blurhash, size: size) else { promise(.success(nil)) return } @@ -33,27 +39,25 @@ final class BlurhashImageCacheService { } .receive(on: RunLoop.main) .eraseToAnyPublisher() - } - static func blurhashImage(blurhash: String, size: CGSize, url: URL) -> UIImage? { - fatalError() -// let imageSize: CGSize = { -// let aspectRadio = size.width / size.height -// if size.width > size.height { -// let width: CGFloat = MosaicMeta.edgeMaxLength -// let height = width / aspectRadio -// return CGSize(width: width, height: height) -// } else { -// let height: CGFloat = MosaicMeta.edgeMaxLength -// let width = height * aspectRadio -// return CGSize(width: width, height: height) -// } -// }() -// -// let image = UIImage(blurHash: blurhash, size: imageSize) -// -// return image + static func blurhashImage(blurhash: String, size: CGSize) -> UIImage? { + let imageSize: CGSize = { + let aspectRadio = size.width / size.height + if size.width > size.height { + let width: CGFloat = BlurhashImageCacheService.edgeMaxLength + let height = width / aspectRadio + return CGSize(width: width, height: height) + } else { + let height: CGFloat = BlurhashImageCacheService.edgeMaxLength + let width = height * aspectRadio + return CGSize(width: width, height: height) + } + }() + + let image = UIImage(blurHash: blurhash, size: imageSize) + + return image } } @@ -62,9 +66,9 @@ extension BlurhashImageCacheService { class Key: NSObject { let blurhash: String let size: CGSize - let url: URL + let url: String - init(blurhash: String, size: CGSize, url: URL) { + init(blurhash: String, size: CGSize, url: String) { self.blurhash = blurhash self.size = size self.url = url @@ -83,6 +87,5 @@ extension BlurhashImageCacheService { size.height.hashValue ^ url.hashValue } - } } diff --git a/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents index 9f6f3ce17..fbdf742ef 100644 --- a/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents +++ b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents @@ -129,11 +129,6 @@ - - - - - diff --git a/MastodonSDK/Sources/MastodonUI/DateTimeProvider.swift b/MastodonSDK/Sources/MastodonUI/DateTimeProvider.swift new file mode 100644 index 000000000..0bd5b695f --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/DateTimeProvider.swift @@ -0,0 +1,12 @@ +// +// DateTimeProvider.swift +// +// +// Created by MainasuK on 2022-1-29. +// + +import Foundation + +public protocol DateTimeProvider { + func shortTimeAgoSinceNow(to date: Date?) -> String? +} diff --git a/MastodonSDK/Sources/MastodonUI/Extension/Date.swift b/MastodonSDK/Sources/MastodonUI/Extension/Date.swift index de377ee24..89d31dc91 100644 --- a/MastodonSDK/Sources/MastodonUI/Extension/Date.swift +++ b/MastodonSDK/Sources/MastodonUI/Extension/Date.swift @@ -9,6 +9,40 @@ import Foundation import MastodonAsset import MastodonLocalization +extension Date { + + public static let relativeTimestampFormatter: RelativeDateTimeFormatter = { + let formatter = RelativeDateTimeFormatter() + formatter.dateTimeStyle = .numeric + formatter.unitsStyle = .full + return formatter + }() + + public var localizedSlowedTimeAgoSinceNow: String { + return self.localizedTimeAgo(since: Date(), isSlowed: true, isAbbreviated: true) + } + + public var localizedTimeAgoSinceNow: String { + return self.localizedTimeAgo(since: Date(), isSlowed: false, isAbbreviated: false) + } + + public func localizedTimeAgo(since date: Date, isSlowed: Bool, isAbbreviated: Bool) -> String { + let earlierDate = date < self ? date : self + let latestDate = earlierDate == date ? self : date + + if isSlowed, earlierDate.timeIntervalSince(latestDate) >= -60 { + return L10n.Common.Controls.Timeline.Timestamp.now + } else { + if isAbbreviated { + return latestDate.localizedShortTimeAgo(since: earlierDate) + } else { + return Date.relativeTimestampFormatter.localizedString(for: earlierDate, relativeTo: latestDate) + } + } + } + +} + extension Date { public func localizedShortTimeAgo(since date: Date) -> String { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift index b5468726d..cb4d742bb 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift @@ -12,13 +12,25 @@ import CoreData import Photos extension MediaView { - public enum Configuration: Hashable { - case image(info: ImageInfo) - case gif(info: VideoInfo) - case video(info: VideoInfo) + public class Configuration: Hashable { + + public let info: Info + public let blurhash: String? + + @Published public var isReveal = true + @Published public var blurhashImage: UIImage? + public var blurhashImageDisposeBag = Set() + + public init( + info: MediaView.Configuration.Info, + blurhash: String? + ) { + self.info = info + self.blurhash = blurhash + } public var aspectRadio: CGSize { - switch self { + switch info { case .image(let info): return info.aspectRadio case .gif(let info): return info.aspectRadio case .video(let info): return info.aspectRadio @@ -26,7 +38,7 @@ extension MediaView { } public var assetURL: String? { - switch self { + switch info { case .image(let info): return info.assetURL case .gif(let info): @@ -37,7 +49,7 @@ extension MediaView { } public var resourceType: PHAssetResourceType { - switch self { + switch info { case .image: return .photo case .gif: @@ -47,51 +59,72 @@ extension MediaView { } } - public struct ImageInfo: Hashable { - public let aspectRadio: CGSize - public let assetURL: String? - - public init( - aspectRadio: CGSize, - assetURL: String? - ) { - self.aspectRadio = aspectRadio - self.assetURL = assetURL - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(aspectRadio.width) - hasher.combine(aspectRadio.height) - assetURL.flatMap { hasher.combine($0) } - } + public static func == (lhs: MediaView.Configuration, rhs: MediaView.Configuration) -> Bool { + return lhs.info == rhs.info + && lhs.blurhash == rhs.blurhash + && lhs.isReveal == rhs.isReveal } - public struct VideoInfo: Hashable { - public let aspectRadio: CGSize - public let assetURL: String? - public let previewURL: String? - public let durationMS: Int? - - public init( - aspectRadio: CGSize, - assetURL: String?, - previewURL: String?, - durationMS: Int? - ) { - self.aspectRadio = aspectRadio - self.assetURL = assetURL - self.previewURL = previewURL - self.durationMS = durationMS - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(aspectRadio.width) - hasher.combine(aspectRadio.height) - assetURL.flatMap { hasher.combine($0) } - previewURL.flatMap { hasher.combine($0) } - durationMS.flatMap { hasher.combine($0) } - } + public func hash(into hasher: inout Hasher) { + hasher.combine(info) + hasher.combine(blurhash) } + } } +extension MediaView.Configuration { + + public enum Info: Hashable { + case image(info: ImageInfo) + case gif(info: VideoInfo) + case video(info: VideoInfo) + } + + public struct ImageInfo: Hashable { + public let aspectRadio: CGSize + public let assetURL: String? + + public init( + aspectRadio: CGSize, + assetURL: String? + ) { + self.aspectRadio = aspectRadio + self.assetURL = assetURL + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(aspectRadio.width) + hasher.combine(aspectRadio.height) + assetURL.flatMap { hasher.combine($0) } + } + } + + public struct VideoInfo: Hashable { + public let aspectRadio: CGSize + public let assetURL: String? + public let previewURL: String? + public let durationMS: Int? + + public init( + aspectRadio: CGSize, + assetURL: String?, + previewURL: String?, + durationMS: Int? + ) { + self.aspectRadio = aspectRadio + self.assetURL = assetURL + self.previewURL = previewURL + self.durationMS = durationMS + } + + public func hash(into hasher: inout Hasher) { + hasher.combine(aspectRadio.width) + hasher.combine(aspectRadio.height) + assetURL.flatMap { hasher.combine($0) } + previewURL.flatMap { hasher.combine($0) } + durationMS.flatMap { hasher.combine($0) } + } + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift index 7cc040076..e51330d7d 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift @@ -8,9 +8,12 @@ import AVKit import UIKit +import Combine public final class MediaView: UIView { + var _disposeBag = Set() + public static let cornerRadius: CGFloat = 0 public static let durationFormatter: DateComponentsFormatter = { let formatter = DateComponentsFormatter() @@ -23,6 +26,14 @@ public final class MediaView: UIView { public private(set) var configuration: Configuration? + private(set) lazy var blurhashImageView: UIImageView = { + let imageView = UIImageView() + imageView.contentMode = .scaleAspectFill + imageView.isUserInteractionEnabled = false + imageView.layer.masksToBounds = true // clip overflow + return imageView + }() + private(set) lazy var imageView: UIImageView = { let imageView = UIImageView() imageView.contentMode = .scaleAspectFill @@ -91,7 +102,7 @@ extension MediaView { setupContainerViewHierarchy() - switch configuration { + switch configuration.info { case .image(let info): configure(image: info) case .gif(let info): @@ -99,6 +110,31 @@ extension MediaView { case .video(let info): configure(video: info) } + + if let blurhash = configuration.blurhash { + configure(blurhash: blurhash) + + configuration.$blurhashImage + .receive(on: DispatchQueue.main) + .assign(to: \.image, on: blurhashImageView) + .store(in: &_disposeBag) + + blurhashImageView.alpha = configuration.isReveal ? 0 : 1 + } + + configuration.$isReveal + .dropFirst() + .removeDuplicates() + .receive(on: DispatchQueue.main) + .sink { [weak self] isReveal in + guard let self = self else { return } + let animator = UIViewPropertyAnimator(duration: 0.3, curve: .easeInOut) + animator.addAnimations { + self.blurhashImageView.alpha = isReveal ? 0 : 1 + } + animator.startAnimation() + } + .store(in: &_disposeBag) } private func configure(image info: Configuration.ImageInfo) { @@ -122,7 +158,7 @@ extension MediaView { placeholderImage: placeholder ) } - + private func configure(gif info: Configuration.VideoInfo) { // use view controller as View here playerViewController.view.translatesAutoresizingMaskIntoConstraints = false @@ -188,7 +224,22 @@ extension MediaView { } + private func configure(blurhash: String) { + blurhashImageView.translatesAutoresizingMaskIntoConstraints = false + container.addSubview(blurhashImageView) + NSLayoutConstraint.activate([ + blurhashImageView.topAnchor.constraint(equalTo: container.topAnchor), + blurhashImageView.leadingAnchor.constraint(equalTo: container.leadingAnchor), + blurhashImageView.trailingAnchor.constraint(equalTo: container.trailingAnchor), + blurhashImageView.bottomAnchor.constraint(equalTo: container.bottomAnchor), + ]) + + blurhashImageView.backgroundColor = .systemGray + } + public func prepareForReuse() { + _disposeBag.removeAll() + // reset appearance alpha = 1 @@ -207,6 +258,11 @@ extension MediaView { playerViewController.player = nil playerLooper = nil + // blurhash + blurhashImageView.removeFromSuperview() + blurhashImageView.removeConstraints(blurhashImageView.constraints) + blurhashImageView.image = nil + // reset indicator indicatorBlurEffectView.removeFromSuperview() diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift index e73dd3efd..2151b55b0 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift @@ -34,7 +34,6 @@ extension NotificationView { @Published public var isBlocking = false @Published public var timestamp: Date? - public var timestampFormatter: ((_ date: Date) -> String)? let timestampUpdatePublisher = Timer.publish(every: 1.0, on: .main, in: .common) .autoconnect() @@ -100,13 +99,12 @@ extension NotificationView.ViewModel { ) .sink { [weak self] timestamp, _ in guard let self = self else { return } - guard let timestamp = timestamp, - let text = self.timestampFormatter?(timestamp) - else { + guard let timestamp = timestamp else { notificationView.dateLabel.configure(content: PlaintextMetaContent(string: "")) return } + let text = timestamp.localizedTimeAgoSinceNow notificationView.dateLabel.configure(content: PlaintextMetaContent(string: text)) } .store(in: &disposeBag) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index 2b1098d11..ea1d6deba 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -35,6 +35,8 @@ extension StatusView { @Published public var authorName: MetaContent? @Published public var authorUsername: String? + @Published public var locked = false + @Published public var isMyself = false @Published public var isMuting = false @Published public var isBlocking = false @@ -125,6 +127,10 @@ extension StatusView { } init() { + // isReblogEnabled + $locked + .map { !$0 } + .assign(to: &$isReblogEnabled) // isContentSensitive $spoilerContent .map { $0 != nil } @@ -141,14 +147,14 @@ extension StatusView { $isContentSensitive, $isContentSensitiveToggled ) - .map { $1 ? $0 : !$0 } + .map { $0 ? $1 : true } .assign(to: &$isContentReveal) // $isMediaReveal Publishers.CombineLatest( $isMediaSensitive, $isMediaSensitiveToggled ) - .map { $1 ? !$0 : $0} + .map { $0 ? $1 : true } .assign(to: &$isMediaReveal) } } @@ -300,19 +306,16 @@ extension StatusView.ViewModel { } } .store(in: &disposeBag) - Publishers.CombineLatest( - $isContentSensitive, - $isMediaSensitive - ) - .sink { isContentSensitive, isMediaSensitive in - if isContentSensitive || isMediaSensitive { - let image = Asset.Human.eyeCircleFill.image - statusView.contentWarningToggleButton.setImage(image, for: .normal) - statusView.contentWarningToggleButton.tintColor = .systemGray - statusView.setContentWarningToggleButtonDisplay() + $isSensitive + .sink { isSensitive in + if isSensitive { + let image = Asset.Human.eyeCircleFill.image + statusView.contentWarningToggleButton.setImage(image, for: .normal) + statusView.contentWarningToggleButton.tintColor = .systemGray + statusView.setContentWarningToggleButtonDisplay() + } } - } - .store(in: &disposeBag) + .store(in: &disposeBag) // $spoilerContent // .sink { metaContent in // guard let metaContent = metaContent else { @@ -411,6 +414,17 @@ extension StatusView.ViewModel { } .store(in: &disposeBag) + Publishers.CombineLatest( + $mediaViewConfigurations, + $isMediaReveal + ) + .sink { configurations, isMediaReveal in + for configuration in configurations { + configuration.isReveal = isMediaReveal + } + } + .store(in: &disposeBag) + // FIXME: statusView.mediaGridContainerView.viewModel.isContentWarningOverlayDisplay = false // $isMediaReveal diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index 0b8cae96a..26ca62490 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -559,6 +559,7 @@ extension StatusView.Style { statusView.usernameTrialingDotLabel.removeFromSuperview() statusView.dateLabel.removeFromSuperview() statusView.contentContainer.removeFromSuperview() + statusView.spoilerOverlayView.removeFromSuperview() statusView.mediaContainerView.removeFromSuperview() statusView.pollContainerView.removeFromSuperview() statusView.statusVisibilityView.removeFromSuperview() From c964255a2ad6c784aff6c401f3df48d793a13915 Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 29 Jan 2022 19:52:22 +0800 Subject: [PATCH 142/374] chore: update version to 1.3.0 (92) --- AppShared/AppSecret.swift | 5 +- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 74 ++++--------------- .../xcschemes/xcschememanagement.plist | 6 +- .../xcshareddata/swiftpm/Package.resolved | 17 ++++- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonSDK/Package.swift | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 12 files changed, 41 insertions(+), 77 deletions(-) diff --git a/AppShared/AppSecret.swift b/AppShared/AppSecret.swift index 9110f2490..1fc5495c7 100644 --- a/AppShared/AppSecret.swift +++ b/AppShared/AppSecret.swift @@ -10,7 +10,10 @@ import Foundation import CryptoKit import KeychainAccess import Keys -import MastodonCommon + +enum AppName { + public static let groupID = "group.org.joinmastodon.app" +} public final class AppSecret { diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 697cdf4d2..82d6779d1 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 91 + 92 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 04b0fccab..9d27d81ca 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -543,13 +543,9 @@ DBD9149025DF6D8D00903DFD /* APIService+Onboarding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD9148F25DF6D8D00903DFD /* APIService+Onboarding.swift */; }; DBE0821525CD382600FD6BBD /* MastodonRegisterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE0821425CD382600FD6BBD /* MastodonRegisterViewController.swift */; }; DBE0822425CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */; }; - DBE3CA6727A39BD900AFE27B /* MastodonCommon in Frameworks */ = {isa = PBXBuildFile; productRef = DBE3CA6627A39BD900AFE27B /* MastodonCommon */; }; DBE3CA6827A39CAB00AFE27B /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; - DBE3CA6927A39CAB00AFE27B /* AppShared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DBE3CA6B27A39CAF00AFE27B /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; - DBE3CA6C27A39CAF00AFE27B /* AppShared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DBE3CA6E27A39CB300AFE27B /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; - DBE3CA6F27A39CB300AFE27B /* AppShared.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DBE3CDBB261C427900430CC6 /* TimelineHeaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CDBA261C427900430CC6 /* TimelineHeaderTableViewCell.swift */; }; DBE3CDCF261C42ED00430CC6 /* TimelineHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CDCE261C42ED00430CC6 /* TimelineHeaderView.swift */; }; DBE3CDEC261C6B2900430CC6 /* FavoriteViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CDEB261C6B2900430CC6 /* FavoriteViewController.swift */; }; @@ -680,39 +676,6 @@ name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; - DBE3CA6A27A39CAB00AFE27B /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - DBE3CA6927A39CAB00AFE27B /* AppShared.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; - DBE3CA6D27A39CAF00AFE27B /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - DBE3CA6C27A39CAF00AFE27B /* AppShared.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; - DBE3CA7027A39CB300AFE27B /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - DBE3CA6F27A39CB300AFE27B /* AppShared.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; DBF8AE1B263293E400C9C23C /* Embed App Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -1311,7 +1274,6 @@ DBDC1CFD272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "ku-TR"; path = "ku-TR.lproj/Intents.stringsdict"; sourceTree = ""; }; DBE0821425CD382600FD6BBD /* MastodonRegisterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterViewController.swift; sourceTree = ""; }; DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonRegisterViewModel.swift; sourceTree = ""; }; - DBE3CA7127A3F23D00AFE27B /* MetaTextKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = MetaTextKit; path = ../MetaTextKit; sourceTree = ""; }; DBE3CDBA261C427900430CC6 /* TimelineHeaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineHeaderTableViewCell.swift; sourceTree = ""; }; DBE3CDCE261C42ED00430CC6 /* TimelineHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineHeaderView.swift; sourceTree = ""; }; DBE3CDEB261C6B2900430CC6 /* FavoriteViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteViewController.swift; sourceTree = ""; }; @@ -1414,7 +1376,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DBE3CA6727A39BD900AFE27B /* MastodonCommon in Frameworks */, DB6805102637D0F800430867 /* KeychainAccess in Frameworks */, EE93E8E8F9E0C39EAAEBD92F /* Pods_AppShared.framework in Frameworks */, ); @@ -2108,7 +2069,6 @@ children = ( DBF53F5F25C14E88008AAC7B /* Mastodon.xctestplan */, DBF53F6025C14E9D008AAC7B /* MastodonSDK.xctestplan */, - DBE3CA7127A3F23D00AFE27B /* MetaTextKit */, DB3D0FED25BAA42200EAA174 /* MastodonSDK */, DB427DD425BAA00100D1B89D /* Mastodon */, DB427DEB25BAA00100D1B89D /* MastodonTests */, @@ -3267,7 +3227,6 @@ name = AppShared; packageProductDependencies = ( DB68050F2637D0F800430867 /* KeychainAccess */, - DBE3CA6627A39BD900AFE27B /* MastodonCommon */, ); productName = AppShared; productReference = DB68047F2637CD4C00430867 /* AppShared.framework */; @@ -3281,7 +3240,6 @@ DB8FABC226AEC7B2008E5AF4 /* Sources */, DB8FABC326AEC7B2008E5AF4 /* Frameworks */, DB8FABC426AEC7B2008E5AF4 /* Resources */, - DBE3CA7027A39CB300AFE27B /* Embed Frameworks */, ); buildRules = ( ); @@ -3304,7 +3262,6 @@ DBC6460E26A170AB00B0E31B /* Sources */, DBC6460F26A170AB00B0E31B /* Frameworks */, DBC6461026A170AB00B0E31B /* Resources */, - DBE3CA6D27A39CAF00AFE27B /* Embed Frameworks */, ); buildRules = ( ); @@ -3330,7 +3287,6 @@ DBF8AE0F263293E400C9C23C /* Sources */, DBF8AE10263293E400C9C23C /* Frameworks */, DBF8AE11263293E400C9C23C /* Resources */, - DBE3CA6A27A39CAB00AFE27B /* Embed Frameworks */, ); buildRules = ( ); @@ -4604,7 +4560,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4633,7 +4589,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4741,11 +4697,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 91; + DYLIB_CURRENT_VERSION = 92; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4772,11 +4728,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 91; + DYLIB_CURRENT_VERSION = 92; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4801,7 +4757,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4826,7 +4782,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4851,7 +4807,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4876,7 +4832,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4901,7 +4857,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4925,7 +4881,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 91; + CURRENT_PROJECT_VERSION = 92; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -5058,7 +5014,7 @@ repositoryURL = "https://github.com/TwidereProject/MetaTextKit.git"; requirement = { kind = exactVersion; - version = 2.1.2; + version = 2.2.0; }; }; DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin" */ = { @@ -5268,10 +5224,6 @@ package = DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */; productName = "UITextView+Placeholder"; }; - DBE3CA6627A39BD900AFE27B /* MastodonCommon */ = { - isa = XCSwiftPackageProductDependency; - productName = MastodonCommon; - }; DBF7A0FB26830C33004176A2 /* FPSIndicator */ = { isa = XCSwiftPackageProductDependency; package = DBF7A0FA26830C33004176A2 /* XCRemoteSwiftPackageReference "FPSIndicator" */; diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 6d24f2a7f..e3a94feeb 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 21 + 22 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 19 + 20 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 20 + 19 SuppressBuildableAutocreation diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index f49285160..dc50a9706 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -87,8 +87,8 @@ "repositoryURL": "https://github.com/TwidereProject/MetaTextKit.git", "state": { "branch": null, - "revision": "7af4182f64329440a4656f2cba307cb5848e496a", - "version": "2.1.2" + "revision": "2e91906221ee154656a34513604c6d3349dced4c", + "version": "2.2.0" } }, { @@ -132,8 +132,8 @@ "repositoryURL": "https://github.com/SDWebImage/SDWebImage.git", "state": { "branch": null, - "revision": "0fff0d7505b5306348263ea64fcc561253bbeb21", - "version": "5.12.2" + "revision": "2c53f531f1bedd253f55d85105409c28ed4a922c", + "version": "5.12.3" } }, { @@ -207,6 +207,15 @@ "revision": "dad97167bf1be16aeecd109130900995dd01c515", "version": "2.6.0" } + }, + { + "package": "UITextView+Placeholder", + "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder", + "state": { + "branch": null, + "revision": "20f513ded04a040cdf5467f0891849b1763ede3b", + "version": "1.4.1" + } } ] }, diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 693c5c6da..7c025e8c7 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 91 + 92 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 47b226285..8206349bd 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 91 + 92 NSExtension NSExtensionAttributes diff --git a/MastodonSDK/Package.swift b/MastodonSDK/Package.swift index aba25501a..42c24c2b6 100644 --- a/MastodonSDK/Package.swift +++ b/MastodonSDK/Package.swift @@ -32,7 +32,7 @@ let package = Package( .package(url: "https://github.com/apple/swift-nio.git", from: "1.0.0"), .package(url: "https://github.com/kean/Nuke.git", from: "10.3.1"), .package(url: "https://github.com/Flipboard/FLAnimatedImage.git", from: "1.0.0"), - .package(url: "https://github.com/TwidereProject/MetaTextKit.git", .exact("2.1.2")), + .package(url: "https://github.com/TwidereProject/MetaTextKit.git", .exact("2.2.0")), .package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.4.0"), .package(url: "https://github.com/Alamofire/AlamofireImage.git", from: "4.1.0"), .package(name: "NukeFLAnimatedImagePlugin", url: "https://github.com/kean/Nuke-FLAnimatedImage-Plugin.git", from: "8.0.0"), diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 697cdf4d2..82d6779d1 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 91 + 92 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 697cdf4d2..82d6779d1 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 91 + 92 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 5793db76b..7a38d4134 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 91 + 92 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 2e4cd6c58..a57563bff 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 91 + 92 NSExtension NSExtensionAttributes From 0d662e2ba545740f21c54c436b89ffadb4a2b0f7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Feb 2022 11:35:41 +0100 Subject: [PATCH 143/374] New translations app.json (French) --- Localization/StringsConvertor/input/fr_FR/app.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index 59e395246..097a7b09c 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -82,7 +82,7 @@ "share_user": "Partager %s", "share_post": "Partager la publication", "open_in_safari": "Ouvrir dans Safari", - "open_in_browser": "Open in Browser", + "open_in_browser": "Ouvrir dans le navigateur", "find_people": "Trouver des personnes à suivre", "manually_search": "Rechercher manuellement à la place", "skip": "Passer", @@ -194,8 +194,8 @@ "scene": { "welcome": { "slogan": "Le réseau social qui vous rend le contrôle.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Prise en main", + "log_in": "Se connecter" }, "server_picker": { "title": "Choisissez un serveur,\nn'importe quel serveur.", @@ -253,8 +253,8 @@ }, "password": { "placeholder": "mot de passe", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "Votre mot de passe doit être composé d’au moins :", + "character_limit": "8 caractères", "accessibility": { "checked": "checked", "unchecked": "unchecked" @@ -309,7 +309,7 @@ "subtitle": "Nous venons d’envoyer un courriel à %s,\ntapotez le lien pour confirmer votre compte.", "button": { "open_email_app": "Ouvrir l’application de courriel", - "resend": "Resend" + "resend": "Renvoyer" }, "dont_receive_email": { "title": "Vérifier vos courriels", From 53ad51c2b3782ac7a12fe8a9b2bc7db0cabe7814 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 6 Feb 2022 11:35:42 +0100 Subject: [PATCH 144/374] New translations Intents.strings (French) --- .../StringsConvertor/Intents/input/fr_FR/Intents.strings | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings b/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings index f4fec3000..774ec7a66 100644 --- a/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings @@ -12,7 +12,7 @@ "RHxKOw" = "Envoyer une publication avec du contenu texte"; -"RxSqsb" = "Post"; +"RxSqsb" = "Publication"; "WCIR3D" = "Publier du ${content} sur Mastodon"; From ec9ced0cef2353f5e7c5be77d2ac4835fd582ee8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 7 Feb 2022 17:05:33 +0100 Subject: [PATCH 145/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 0b40bf193..07f15ee20 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -200,7 +200,7 @@ "server_picker": { "title": "เลือกเซิร์ฟเวอร์\nอันไหนก็ได้", "subtitle": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ", - "subtitle_extend": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละชุมชนดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระทั้งหมด", + "subtitle_extend": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละชุมชนดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระโดยสิ้นเชิง", "button": { "category": { "all": "ทั้งหมด", From f4bb2d947feb1997cc7a540772b77cf4239b3b69 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 8 Feb 2022 12:36:06 +0800 Subject: [PATCH 146/374] feat: update report flow --- Localization/app.json | 5 +- Mastodon.xcodeproj/project.pbxproj | 114 +++++- .../xcschemes/xcschememanagement.plist | 6 +- Mastodon/Coordinator/SceneCoordinator.swift | 18 +- .../Onboarding/PickServerSection.swift | 6 +- Mastodon/Diffiable/Report/ReportItem.swift | 30 +- Mastodon/Diffiable/Report/ReportSection.swift | 133 +++++-- Mastodon/Diffiable/Status/StatusItem.swift | 19 - Mastodon/Diffiable/Status/StatusSection.swift | 7 - .../Provider/DataSourceFacade+Status.swift | 17 +- .../HomeTimelineViewController.swift | 13 - .../HomeTimeline/HomeTimelineViewModel.swift | 23 -- .../MastodonPickServerViewController.swift | 4 - .../Share/NavigationActionView.swift | 9 + .../Timeline/UserTimelineViewController.swift | 1 - Mastodon/Scene/Report/ReportFooterView.swift | 110 ------ Mastodon/Scene/Report/ReportHeaderView.swift | 129 ------ .../ReportResultViewController.swift | 113 ++++++ .../ReportResultViewModel+Diffable.swift | 37 ++ .../ReportResult/ReportResultViewModel.swift | 36 ++ .../ReportStatus/ReportViewController.swift | 221 +++++++++++ .../ReportViewModel+Diffable.swift | 85 ++++ .../ReportStatus/ReportViewModel+State.swift | 173 ++++++++ .../Report/ReportStatus/ReportViewModel.swift | 78 ++++ .../ReportSupplementaryViewController.swift | 181 +++++++++ ...eportSupplementaryViewModel+Diffable.swift | 38 ++ .../ReportSupplementaryViewModel.swift | 82 ++++ .../Scene/Report/ReportViewController.swift | 370 ------------------ .../Scene/Report/ReportViewModel+Data.swift | 141 ------- .../Report/ReportViewModel+Diffable.swift | 36 -- Mastodon/Scene/Report/ReportViewModel.swift | 215 ---------- .../Report/ReportedStatusTableviewCell.swift | 221 ----------- .../Cell/ReportCommentTableViewCell.swift | 83 ++++ .../Cell/ReportHeadlineTableViewCell.swift | 69 ++++ .../ReportResultActionTableViewCell.swift | 145 +++++++ .../ReportStatusTableViewCell+ViewModel.swift | 49 +++ .../Cell/ReportStatusTableViewCell.swift | 102 +++++ .../ReportViewControllerAppearance.swift | 69 ++++ .../APIService/APIService+Report.swift | 17 +- .../Scene/Report/Contents.json | 9 + .../Report/background.colorset/Contents.json | 38 ++ .../report.banner.colorset/Contents.json | 20 + .../Font/Staatliches-Regular.ttf | Bin 0 -> 61400 bytes .../MastodonAsset/Generated/Assets.swift | 4 + .../MastodonAsset/Generated/Fonts.swift | 76 +++- .../View/Content/StatusView+ViewModel.swift | 7 - .../MastodonUI/View/Content/StatusView.swift | 16 +- 47 files changed, 1994 insertions(+), 1381 deletions(-) delete mode 100644 Mastodon/Scene/Report/ReportFooterView.swift delete mode 100644 Mastodon/Scene/Report/ReportHeaderView.swift create mode 100644 Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift create mode 100644 Mastodon/Scene/Report/ReportResult/ReportResultViewModel+Diffable.swift create mode 100644 Mastodon/Scene/Report/ReportResult/ReportResultViewModel.swift create mode 100644 Mastodon/Scene/Report/ReportStatus/ReportViewController.swift create mode 100644 Mastodon/Scene/Report/ReportStatus/ReportViewModel+Diffable.swift create mode 100644 Mastodon/Scene/Report/ReportStatus/ReportViewModel+State.swift create mode 100644 Mastodon/Scene/Report/ReportStatus/ReportViewModel.swift create mode 100644 Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift create mode 100644 Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel+Diffable.swift create mode 100644 Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel.swift delete mode 100644 Mastodon/Scene/Report/ReportViewController.swift delete mode 100644 Mastodon/Scene/Report/ReportViewModel+Data.swift delete mode 100644 Mastodon/Scene/Report/ReportViewModel+Diffable.swift delete mode 100644 Mastodon/Scene/Report/ReportViewModel.swift delete mode 100644 Mastodon/Scene/Report/ReportedStatusTableviewCell.swift create mode 100644 Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift create mode 100644 Mastodon/Scene/Report/Share/Cell/ReportHeadlineTableViewCell.swift create mode 100644 Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift create mode 100644 Mastodon/Scene/Report/Share/Cell/ReportStatusTableViewCell+ViewModel.swift create mode 100644 Mastodon/Scene/Report/Share/Cell/ReportStatusTableViewCell.swift create mode 100644 Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/background.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/report.banner.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Font/Staatliches-Regular.ttf diff --git a/Localization/app.json b/Localization/app.json index 2e948f3ea..e57192a47 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -555,14 +555,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 9d27d81ca..e51739a2a 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -95,7 +95,6 @@ 5B24BBDA262DB14800A9381B /* ReportViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */; }; 5B24BBDB262DB14800A9381B /* ReportViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */; }; 5B24BBE2262DB19100A9381B /* APIService+Report.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B24BBE1262DB19100A9381B /* APIService+Report.swift */; }; - 5B8E055826319E47006E3C53 /* ReportFooterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B8E055726319E47006E3C53 /* ReportFooterView.swift */; }; 5B90C45E262599800002E742 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C456262599800002E742 /* SettingsViewModel.swift */; }; 5B90C45F262599800002E742 /* SettingsToggleTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C459262599800002E742 /* SettingsToggleTableViewCell.swift */; }; 5B90C460262599800002E742 /* SettingsAppearanceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C45A262599800002E742 /* SettingsAppearanceTableViewCell.swift */; }; @@ -104,9 +103,6 @@ 5B90C48526259BF10002E742 /* APIService+Subscriptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C48426259BF10002E742 /* APIService+Subscriptions.swift */; }; 5B90C48B26259C120002E742 /* APIService+CoreData+Subscriptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B90C48A26259C120002E742 /* APIService+CoreData+Subscriptions.swift */; }; 5BB04FD5262E7AFF0043BFF6 /* ReportViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB04FD4262E7AFF0043BFF6 /* ReportViewController.swift */; }; - 5BB04FDB262EA3070043BFF6 /* ReportHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB04FDA262EA3070043BFF6 /* ReportHeaderView.swift */; }; - 5BB04FE9262EFC300043BFF6 /* ReportedStatusTableviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB04FE8262EFC300043BFF6 /* ReportedStatusTableviewCell.swift */; }; - 5BB04FEF262F0DCB0043BFF6 /* ReportViewModel+Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB04FEE262F0DCB0043BFF6 /* ReportViewModel+Data.swift */; }; 5BB04FF5262F0E6D0043BFF6 /* ReportSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB04FF4262F0E6D0043BFF6 /* ReportSection.swift */; }; 5D0393902612D259007FE196 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D03938F2612D259007FE196 /* WebViewController.swift */; }; 5D0393962612D266007FE196 /* WebViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D0393952612D266007FE196 /* WebViewModel.swift */; }; @@ -437,6 +433,19 @@ DB98337125C9443200AD9700 /* APIService+Authentication.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98337025C9443200AD9700 /* APIService+Authentication.swift */; }; DB98337F25C9452D00AD9700 /* APIService+APIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98337E25C9452D00AD9700 /* APIService+APIError.swift */; }; DB98339C25C96DE600AD9700 /* APIService+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98339B25C96DE600AD9700 /* APIService+Account.swift */; }; + DB98EB4727B0DFAA0082E365 /* ReportViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB4627B0DFAA0082E365 /* ReportViewModel+State.swift */; }; + DB98EB4927B0F0CD0082E365 /* ReportStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB4827B0F0CD0082E365 /* ReportStatusTableViewCell.swift */; }; + DB98EB4C27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB4B27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift */; }; + DB98EB5327B0F9890082E365 /* ReportHeadlineTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5227B0F9890082E365 /* ReportHeadlineTableViewCell.swift */; }; + DB98EB5627B0FF1B0082E365 /* ReportViewControllerAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5527B0FF1B0082E365 /* ReportViewControllerAppearance.swift */; }; + DB98EB5927B109890082E365 /* ReportSupplementaryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5827B109890082E365 /* ReportSupplementaryViewController.swift */; }; + DB98EB5C27B10A730082E365 /* ReportSupplementaryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5B27B10A730082E365 /* ReportSupplementaryViewModel.swift */; }; + DB98EB5E27B10A7A0082E365 /* ReportSupplementaryViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5D27B10A7A0082E365 /* ReportSupplementaryViewModel+Diffable.swift */; }; + DB98EB6027B10E150082E365 /* ReportCommentTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */; }; + DB98EB6227B215EB0082E365 /* ReportResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */; }; + DB98EB6527B216500082E365 /* ReportResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6427B216500082E365 /* ReportResultViewModel.swift */; }; + DB98EB6727B216560082E365 /* ReportResultViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6627B216560082E365 /* ReportResultViewModel+Diffable.swift */; }; + DB98EB6927B21A7C0082E365 /* ReportResultActionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */; }; DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */; }; DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */ = {isa = PBXBuildFile; productRef = DB9A487D2603456B008B817C /* UITextView+Placeholder */; }; DB9A488A26034D40008B817C /* ComposeViewModel+PublishState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A488926034D40008B817C /* ComposeViewModel+PublishState.swift */; }; @@ -785,7 +794,6 @@ 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReportViewModel.swift; sourceTree = ""; }; 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ReportViewModel+Diffable.swift"; sourceTree = ""; }; 5B24BBE1262DB19100A9381B /* APIService+Report.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+Report.swift"; sourceTree = ""; }; - 5B8E055726319E47006E3C53 /* ReportFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportFooterView.swift; sourceTree = ""; }; 5B90C456262599800002E742 /* SettingsViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; }; 5B90C459262599800002E742 /* SettingsToggleTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsToggleTableViewCell.swift; sourceTree = ""; }; 5B90C45A262599800002E742 /* SettingsAppearanceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsAppearanceTableViewCell.swift; sourceTree = ""; }; @@ -794,9 +802,6 @@ 5B90C48426259BF10002E742 /* APIService+Subscriptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+Subscriptions.swift"; sourceTree = ""; }; 5B90C48A26259C120002E742 /* APIService+CoreData+Subscriptions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+CoreData+Subscriptions.swift"; sourceTree = ""; }; 5BB04FD4262E7AFF0043BFF6 /* ReportViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportViewController.swift; sourceTree = ""; }; - 5BB04FDA262EA3070043BFF6 /* ReportHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportHeaderView.swift; sourceTree = ""; }; - 5BB04FE8262EFC300043BFF6 /* ReportedStatusTableviewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportedStatusTableviewCell.swift; sourceTree = ""; }; - 5BB04FEE262F0DCB0043BFF6 /* ReportViewModel+Data.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportViewModel+Data.swift"; sourceTree = ""; }; 5BB04FF4262F0E6D0043BFF6 /* ReportSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportSection.swift; sourceTree = ""; }; 5CE45680252519F42FEA2D13 /* Pods-ShareActionExtension.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareActionExtension.asdk - release.xcconfig"; path = "Target Support Files/Pods-ShareActionExtension/Pods-ShareActionExtension.asdk - release.xcconfig"; sourceTree = ""; }; 5D03938F2612D259007FE196 /* WebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = ""; }; @@ -1169,6 +1174,19 @@ DB98337025C9443200AD9700 /* APIService+Authentication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Authentication.swift"; sourceTree = ""; }; DB98337E25C9452D00AD9700 /* APIService+APIError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+APIError.swift"; sourceTree = ""; }; DB98339B25C96DE600AD9700 /* APIService+Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Account.swift"; sourceTree = ""; }; + DB98EB4627B0DFAA0082E365 /* ReportViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportViewModel+State.swift"; sourceTree = ""; }; + DB98EB4827B0F0CD0082E365 /* ReportStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportStatusTableViewCell.swift; sourceTree = ""; }; + DB98EB4B27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportStatusTableViewCell+ViewModel.swift"; sourceTree = ""; }; + DB98EB5227B0F9890082E365 /* ReportHeadlineTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportHeadlineTableViewCell.swift; sourceTree = ""; }; + DB98EB5527B0FF1B0082E365 /* ReportViewControllerAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportViewControllerAppearance.swift; sourceTree = ""; }; + DB98EB5827B109890082E365 /* ReportSupplementaryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportSupplementaryViewController.swift; sourceTree = ""; }; + DB98EB5B27B10A730082E365 /* ReportSupplementaryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportSupplementaryViewModel.swift; sourceTree = ""; }; + DB98EB5D27B10A7A0082E365 /* ReportSupplementaryViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportSupplementaryViewModel+Diffable.swift"; sourceTree = ""; }; + DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportCommentTableViewCell.swift; sourceTree = ""; }; + DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultViewController.swift; sourceTree = ""; }; + DB98EB6427B216500082E365 /* ReportResultViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultViewModel.swift; sourceTree = ""; }; + DB98EB6627B216560082E365 /* ReportResultViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportResultViewModel+Diffable.swift"; sourceTree = ""; }; + DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultActionTableViewCell.swift; sourceTree = ""; }; DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AttachmentContainerView+EmptyStateView.swift"; sourceTree = ""; }; DB9A488926034D40008B817C /* ComposeViewModel+PublishState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ComposeViewModel+PublishState.swift"; sourceTree = ""; }; DB9A488F26035963008B817C /* APIService+Media.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Media.swift"; sourceTree = ""; }; @@ -1802,13 +1820,10 @@ 5B24BBD6262DB14800A9381B /* Report */ = { isa = PBXGroup; children = ( - 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */, - 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */, - 5BB04FEE262F0DCB0043BFF6 /* ReportViewModel+Data.swift */, - 5BB04FD4262E7AFF0043BFF6 /* ReportViewController.swift */, - 5BB04FDA262EA3070043BFF6 /* ReportHeaderView.swift */, - 5B8E055726319E47006E3C53 /* ReportFooterView.swift */, - 5BB04FE8262EFC300043BFF6 /* ReportedStatusTableviewCell.swift */, + DB98EB5727B0FF1F0082E365 /* Share */, + DB98EB4F27B0F9300082E365 /* ReportStatus */, + DB98EB5A27B109900082E365 /* ReportSupplementary */, + DB98EB6327B216490082E365 /* ReportResult */, ); path = Report; sourceTree = ""; @@ -2723,6 +2738,58 @@ name = "Recovered References"; sourceTree = ""; }; + DB98EB4A27B0F0F50082E365 /* Cell */ = { + isa = PBXGroup; + children = ( + DB98EB5227B0F9890082E365 /* ReportHeadlineTableViewCell.swift */, + DB98EB4827B0F0CD0082E365 /* ReportStatusTableViewCell.swift */, + DB98EB4B27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift */, + DB98EB5F27B10E150082E365 /* ReportCommentTableViewCell.swift */, + DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */, + ); + path = Cell; + sourceTree = ""; + }; + DB98EB4F27B0F9300082E365 /* ReportStatus */ = { + isa = PBXGroup; + children = ( + 5BB04FD4262E7AFF0043BFF6 /* ReportViewController.swift */, + 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */, + 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */, + DB98EB4627B0DFAA0082E365 /* ReportViewModel+State.swift */, + ); + path = ReportStatus; + sourceTree = ""; + }; + DB98EB5727B0FF1F0082E365 /* Share */ = { + isa = PBXGroup; + children = ( + DB98EB4A27B0F0F50082E365 /* Cell */, + DB98EB5527B0FF1B0082E365 /* ReportViewControllerAppearance.swift */, + ); + path = Share; + sourceTree = ""; + }; + DB98EB5A27B109900082E365 /* ReportSupplementary */ = { + isa = PBXGroup; + children = ( + DB98EB5827B109890082E365 /* ReportSupplementaryViewController.swift */, + DB98EB5B27B10A730082E365 /* ReportSupplementaryViewModel.swift */, + DB98EB5D27B10A7A0082E365 /* ReportSupplementaryViewModel+Diffable.swift */, + ); + path = ReportSupplementary; + sourceTree = ""; + }; + DB98EB6327B216490082E365 /* ReportResult */ = { + isa = PBXGroup; + children = ( + DB98EB6127B215EB0082E365 /* ReportResultViewController.swift */, + DB98EB6427B216500082E365 /* ReportResultViewModel.swift */, + DB98EB6627B216560082E365 /* ReportResultViewModel+Diffable.swift */, + ); + path = ReportResult; + sourceTree = ""; + }; DB9A489B26036E19008B817C /* MastodonAttachmentService */ = { isa = PBXGroup; children = ( @@ -3739,9 +3806,7 @@ DB482A3F261331E8008AE74C /* UserTimelineViewModel+State.swift in Sources */, 2D38F1F725CD47AC00561493 /* HomeTimelineViewModel+LoadOldestState.swift in Sources */, DB447681260B3ED600B66B82 /* CustomEmojiPickerSection.swift in Sources */, - 5BB04FEF262F0DCB0043BFF6 /* ReportViewModel+Data.swift in Sources */, DB0FCB7427956939006C02E2 /* DataSourceFacade+Status.swift in Sources */, - 5B8E055826319E47006E3C53 /* ReportFooterView.swift in Sources */, DBB525502611ED6D002F1F29 /* ProfileHeaderView.swift in Sources */, DB63F75A279953F200455B82 /* SearchHistoryUserCollectionViewCell+ViewModel.swift in Sources */, DB023D26279FFB0A005AC798 /* ShareActivityProvider.swift in Sources */, @@ -3801,6 +3866,7 @@ DB0618032785A7100030EE79 /* RegisterSection.swift in Sources */, DB63F76B279A5ED300455B82 /* NotificationTimelineViewModel+LoadOldestState.swift in Sources */, DBF1D251269DB01200C1C08A /* SearchHistoryViewController.swift in Sources */, + DB98EB5E27B10A7A0082E365 /* ReportSupplementaryViewModel+Diffable.swift in Sources */, DB0FCB7C2795821F006C02E2 /* StatusThreadRootTableViewCell.swift in Sources */, DB72601C25E36A2100235243 /* MastodonServerRulesViewController.swift in Sources */, DBB5250E2611EBAF002F1F29 /* ProfileSegmentedViewController.swift in Sources */, @@ -3883,6 +3949,7 @@ DB73BF47271199CA00781945 /* Instance.swift in Sources */, DB0F8150264D1E2500F2A12B /* PickServerLoaderTableViewCell.swift in Sources */, DB98337F25C9452D00AD9700 /* APIService+APIError.swift in Sources */, + DB98EB5327B0F9890082E365 /* ReportHeadlineTableViewCell.swift in Sources */, DB5B729C273113C200081888 /* FollowingListViewModel+Diffable.swift in Sources */, DB9E0D6F25EE008500CFDD76 /* UIInterpolatingMotionEffect.swift in Sources */, DBB9759C262462E1004620BD /* ThreadMetaView.swift in Sources */, @@ -3942,6 +4009,7 @@ DB6D9F76263587C7008423CD /* SettingFetchedResultController.swift in Sources */, DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */, 5D0393902612D259007FE196 /* WebViewController.swift in Sources */, + DB98EB6227B215EB0082E365 /* ReportResultViewController.swift in Sources */, DB6B74FA272FC2B500C70B6E /* APIService+Follower.swift in Sources */, DB6B74F4272FBAE700C70B6E /* FollowerListViewModel+Diffable.swift in Sources */, DB6B74F2272FB67600C70B6E /* FollowerListViewModel.swift in Sources */, @@ -3955,10 +4023,12 @@ DB84811727883C2600BBEABA /* MastodonRegisterPasswordHintTableViewCell.swift in Sources */, 2DA6054725F716A2006356F9 /* PlaybackState.swift in Sources */, DB35FC1F2612F1D9006193C9 /* ProfileRelationshipActionButton.swift in Sources */, + DB98EB6727B216560082E365 /* ReportResultViewModel+Diffable.swift in Sources */, DBC7A672260C897100E57475 /* StatusContentWarningEditorView.swift in Sources */, DB025B95278D6530002F581E /* Persistence+MastodonUser.swift in Sources */, DB3667A6268AE2620027D07F /* ComposeStatusPollSection.swift in Sources */, DB6B750427300B4000C70B6E /* TimelineFooterTableViewCell.swift in Sources */, + DB98EB4C27B0F2BC0082E365 /* ReportStatusTableViewCell+ViewModel.swift in Sources */, DB59F10E25EF724F001F1DAB /* APIService+Poll.swift in Sources */, DB852D1F26FB037800FC9D81 /* SidebarViewModel.swift in Sources */, DB63F769279A5EBB00455B82 /* NotificationTimelineViewModel+Diffable.swift in Sources */, @@ -3969,6 +4039,7 @@ DBB525562611EDCA002F1F29 /* UserTimelineViewModel.swift in Sources */, DB0618012785732C0030EE79 /* ServerRulesTableViewCell.swift in Sources */, DB221B16260C395900AEFE46 /* CustomEmojiPickerInputViewModel.swift in Sources */, + DB98EB5C27B10A730082E365 /* ReportSupplementaryViewModel.swift in Sources */, DB0617EF277F12720030EE79 /* NavigationActionView.swift in Sources */, DB1FD43625F26899004CFCFC /* MastodonPickServerViewModel+LoadIndexedServerState.swift in Sources */, 2D939AE825EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift in Sources */, @@ -3977,6 +4048,7 @@ DBA94434265CBB5300C537E1 /* ProfileFieldSection.swift in Sources */, DB336F28278D6EC70031E64B /* MastodonFieldContainer.swift in Sources */, DBF156E42702DB3F00EC00B7 /* HandleTapAction.swift in Sources */, + DB98EB4727B0DFAA0082E365 /* ReportViewModel+State.swift in Sources */, 2D5981A125E4A593000FB903 /* MastodonConfirmEmailViewModel.swift in Sources */, DB6B74F6272FBCDB00C70B6E /* FollowerListViewModel+State.swift in Sources */, DB87D4452609BE0500D12C0D /* ComposeStatusPollOptionCollectionViewCell.swift in Sources */, @@ -4004,7 +4076,6 @@ DB73BF4B27140C0800781945 /* UITableViewDiffableDataSource.swift in Sources */, DBB525642612C988002F1F29 /* MeProfileViewModel.swift in Sources */, DB6B74EF272FB55000C70B6E /* FollowerListViewController.swift in Sources */, - 5BB04FE9262EFC300043BFF6 /* ReportedStatusTableviewCell.swift in Sources */, DB0FCB942797E2B0006C02E2 /* SearchResultViewModel+Diffable.swift in Sources */, DB63F752279944AA00455B82 /* SearchHistorySectionHeaderCollectionReusableView.swift in Sources */, DBBC24C426A544B900398BB9 /* Theme.swift in Sources */, @@ -4018,7 +4089,6 @@ DB1FD44425F26CCC004CFCFC /* PickServerSection.swift in Sources */, 0FB3D30F25E525CD00AAD544 /* PickServerCategoryView.swift in Sources */, DB6180E626391B550018D199 /* MediaPreviewTransitionController.swift in Sources */, - 5BB04FDB262EA3070043BFF6 /* ReportHeaderView.swift in Sources */, DB0FCB922796DE19006C02E2 /* TrendSectionHeaderCollectionReusableView.swift in Sources */, DB2F073525E8ECF000957B2D /* AuthenticationViewModel.swift in Sources */, DB63F779279ABF9C00455B82 /* DataSourceFacade+Reblog.swift in Sources */, @@ -4049,6 +4119,7 @@ DB6180F826391D660018D199 /* MediaPreviewingViewController.swift in Sources */, DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */, DB71C7CB271D5A0300BE3819 /* LineChartView.swift in Sources */, + DB98EB5627B0FF1B0082E365 /* ReportViewControllerAppearance.swift in Sources */, DB938F1526241FDF00E5B6C1 /* APIService+Thread.swift in Sources */, 2D206B8625F5FB0900143C56 /* Double.swift in Sources */, DB9F58F126EF512300E7BBE9 /* AccountListTableViewCell.swift in Sources */, @@ -4061,6 +4132,7 @@ 2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */, DB084B5725CBC56C00F898ED /* Status.swift in Sources */, 2D4AD89C263165B500613EFC /* SuggestionAccountCollectionViewCell.swift in Sources */, + DB98EB6927B21A7C0082E365 /* ReportResultActionTableViewCell.swift in Sources */, DB447691260B406600B66B82 /* CustomEmojiPickerItemCollectionViewCell.swift in Sources */, DB9282B225F3222800823B15 /* PickServerEmptyStateView.swift in Sources */, DB697DDF278F524F004EF2F7 /* DataSourceFacade+Profile.swift in Sources */, @@ -4158,20 +4230,24 @@ DB63F756279949BD00455B82 /* Persistence+SearchHistory.swift in Sources */, 2D4AD8A226316CD200613EFC /* SelectedAccountSection.swift in Sources */, DB63F775279A997D00455B82 /* NotificationTableViewCell+ViewModel.swift in Sources */, + DB98EB5927B109890082E365 /* ReportSupplementaryViewController.swift in Sources */, DB0617EB277EF3820030EE79 /* GradientBorderView.swift in Sources */, DB789A1225F9F2CC0071ACA0 /* ComposeViewModel.swift in Sources */, DB63F74B279914A000455B82 /* FollowingListViewController+DataSourceProvider.swift in Sources */, DBB525362611ECEB002F1F29 /* UserTimelineViewController.swift in Sources */, DB6D1B3D2636857500ACB481 /* AppearancePreference.swift in Sources */, DB938F3326243D6200E5B6C1 /* TimelineTopLoaderTableViewCell.swift in Sources */, + DB98EB4927B0F0CD0082E365 /* ReportStatusTableViewCell.swift in Sources */, DB3667A4268AE2370027D07F /* ComposeStatusPollTableViewCell.swift in Sources */, DBBF1DC226524D2900E5B703 /* AutoCompleteTableViewCell.swift in Sources */, 5B24BBE2262DB19100A9381B /* APIService+Report.swift in Sources */, DBF3B7412733EB9400E21627 /* MastodonLocalCode.swift in Sources */, + DB98EB6527B216500082E365 /* ReportResultViewModel.swift in Sources */, DB4F096A269EDAD200D62E92 /* SearchResultViewModel+State.swift in Sources */, 5BB04FF5262F0E6D0043BFF6 /* ReportSection.swift in Sources */, DBA94436265CBB7400C537E1 /* ProfileFieldItem.swift in Sources */, DB023D2A27A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift in Sources */, + DB98EB6027B10E150082E365 /* ReportCommentTableViewCell.swift in Sources */, DB0FCB962797E6C2006C02E2 /* SearchResultViewController+DataSourceProvider.swift in Sources */, DB66729C25F9F91F00D60309 /* ComposeStatusItem.swift in Sources */, DB6180E326391A4C0018D199 /* ViewControllerAnimatedTransitioning.swift in Sources */, diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index e3a94feeb..bf3ad9bfc 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 22 + 19 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 20 + 18 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 19 + 20 SuppressBuildableAutocreation diff --git a/Mastodon/Coordinator/SceneCoordinator.swift b/Mastodon/Coordinator/SceneCoordinator.swift index d6833947f..a72f8628f 100644 --- a/Mastodon/Coordinator/SceneCoordinator.swift +++ b/Mastodon/Coordinator/SceneCoordinator.swift @@ -184,6 +184,8 @@ extension SceneCoordinator { // report case report(viewModel: ReportViewModel) + case reportSupplementary(viewModel: ReportSupplementaryViewModel) + case reportResult(viewModel: ReportResultViewModel) // suggestion account case suggestionAccount(viewModel: SuggestionAccountViewModel) @@ -441,6 +443,18 @@ private extension SceneCoordinator { let _viewController = FollowingListViewController() _viewController.viewModel = viewModel viewController = _viewController + case .report(let viewModel): + let _viewController = ReportViewController() + _viewController.viewModel = viewModel + viewController = _viewController + case .reportSupplementary(let viewModel): + let _viewController = ReportSupplementaryViewController() + _viewController.viewModel = viewModel + viewController = _viewController + case .reportResult(let viewModel): + let _viewController = ReportResultViewController() + _viewController.viewModel = viewModel + viewController = _viewController case .suggestionAccount(let viewModel): let _viewController = SuggestionAccountViewController() _viewController.viewModel = viewModel @@ -476,10 +490,6 @@ private extension SceneCoordinator { let _viewController = SettingsViewController() _viewController.viewModel = viewModel viewController = _viewController - case .report(let viewModel): - let _viewController = ReportViewController() - _viewController.viewModel = viewModel - viewController = _viewController } setupDependency(for: viewController as? NeedsDependency) diff --git a/Mastodon/Diffiable/Onboarding/PickServerSection.swift b/Mastodon/Diffiable/Onboarding/PickServerSection.swift index 9f74bad53..5faaefbcc 100644 --- a/Mastodon/Diffiable/Onboarding/PickServerSection.swift +++ b/Mastodon/Diffiable/Onboarding/PickServerSection.swift @@ -21,7 +21,11 @@ extension PickServerSection { dependency: NeedsDependency, pickServerCellDelegate: PickServerCellDelegate ) -> UITableViewDiffableDataSource { - UITableViewDiffableDataSource(tableView: tableView) { [ + tableView.register(OnboardingHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: OnboardingHeadlineTableViewCell.self)) + tableView.register(PickServerCell.self, forCellReuseIdentifier: String(describing: PickServerCell.self)) + tableView.register(PickServerLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: PickServerLoaderTableViewCell.self)) + + return UITableViewDiffableDataSource(tableView: tableView) { [ weak dependency, weak pickServerCellDelegate ] tableView, indexPath, item -> UITableViewCell? in diff --git a/Mastodon/Diffiable/Report/ReportItem.swift b/Mastodon/Diffiable/Report/ReportItem.swift index 3f6b5b75a..f5ea387b6 100644 --- a/Mastodon/Diffiable/Report/ReportItem.swift +++ b/Mastodon/Diffiable/Report/ReportItem.swift @@ -6,7 +6,35 @@ // import Foundation +import CoreDataStack enum ReportItem: Hashable { - + case header(context: HeaderContext) + case status(record: ManagedObjectRecord) + case comment(context: CommentContext) + case result(record: ManagedObjectRecord) + case bottomLoader +} + +extension ReportItem { + struct HeaderContext: Hashable { + let primaryLabelText: String + let secondaryLabelText: String + } + + class CommentContext: Hashable { + let id = UUID() + @Published var comment: String = "" + + static func == ( + lhs: ReportItem.CommentContext, + rhs: ReportItem.CommentContext + ) -> Bool { + lhs.comment == rhs.comment + } + + func hash(into hasher: inout Hasher) { + hasher.combine(id) + } + } } diff --git a/Mastodon/Diffiable/Report/ReportSection.swift b/Mastodon/Diffiable/Report/ReportSection.swift index 9f2a1a09a..69b9da234 100644 --- a/Mastodon/Diffiable/Report/ReportSection.swift +++ b/Mastodon/Diffiable/Report/ReportSection.swift @@ -11,7 +11,6 @@ import CoreDataStack import Foundation import MastodonSDK import UIKit -import AVKit import os.log import MastodonAsset import MastodonLocalization @@ -21,50 +20,98 @@ enum ReportSection: Equatable, Hashable { } extension ReportSection { - static func tableViewDiffableDataSource( - for tableView: UITableView, - dependency: ReportViewController, - managedObjectContext: NSManagedObjectContext, - timestampUpdatePublisher: AnyPublisher + + struct Configuration { + } + + static func diffableDataSource( + tableView: UITableView, + context: AppContext, + configuration: Configuration ) -> UITableViewDiffableDataSource { - UITableViewDiffableDataSource(tableView: tableView) {[ - weak dependency - ] tableView, indexPath, item -> UITableViewCell? in - return UITableViewCell() - guard let dependency = dependency else { return UITableViewCell() } + + tableView.register(ReportHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: ReportHeadlineTableViewCell.self)) + tableView.register(ReportStatusTableViewCell.self, forCellReuseIdentifier: String(describing: ReportStatusTableViewCell.self)) + tableView.register(ReportCommentTableViewCell.self, forCellReuseIdentifier: String(describing: ReportCommentTableViewCell.self)) + tableView.register(ReportResultActionTableViewCell.self, forCellReuseIdentifier: String(describing: ReportResultActionTableViewCell.self)) + tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) -// switch item { -// case .reportStatus(let objectID, let attribute): -// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ReportedStatusTableViewCell.self), for: indexPath) as! ReportedStatusTableViewCell -// cell.dependency = dependency -// let activeMastodonAuthenticationBox = dependency.context.authenticationService.activeMastodonAuthenticationBox.value -// let requestUserID = activeMastodonAuthenticationBox?.userID ?? "" -// managedObjectContext.performAndWait { [weak dependency] in -// guard let dependency = dependency else { return } -// let status = managedObjectContext.object(with: objectID) as! Status -// StatusSection.configure( -// cell: cell, -// tableView: tableView, -// timelineContext: .report, -// dependency: dependency, -// readableLayoutFrame: tableView.readableContentGuide.layoutFrame, -// status: status, -// requestUserID: requestUserID, -// statusItemAttribute: attribute -// ) -// } -// -// // defalut to select the report status -// if attribute.isSelected { -// tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none) -// } else { -// tableView.deselectRow(at: indexPath, animated: false) -// } -// -// return cell -// default: -// return nil -// } + return UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in + switch item { + case .header(let headerContext): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ReportHeadlineTableViewCell.self), for: indexPath) as! ReportHeadlineTableViewCell + cell.primaryLabel.text = headerContext.primaryLabelText + cell.secondaryLabel.text = headerContext.secondaryLabelText + return cell + case .status(let record): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ReportStatusTableViewCell.self), for: indexPath) as! ReportStatusTableViewCell + context.managedObjectContext.performAndWait { + guard let status = record.object(in: context.managedObjectContext) else { return } + configure( + context: context, + tableView: tableView, + cell: cell, + viewModel: .init(value: status), + configuration: configuration + ) + } + return cell + case .comment(let commentContext): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ReportCommentTableViewCell.self), for: indexPath) as! ReportCommentTableViewCell + cell.commentTextView.text = commentContext.comment + NotificationCenter.default.publisher(for: UITextView.textDidChangeNotification, object: cell.commentTextView) + .receive(on: DispatchQueue.main) + .sink { [weak cell] notification in + guard let cell = cell else { return } + commentContext.comment = cell.commentTextView.text + + // fix shadow get animation issue when cell height changes + UIView.performWithoutAnimation { + tableView.beginUpdates() + tableView.endUpdates() + } + } + .store(in: &cell.disposeBag) + return cell + case .result(let record): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: ReportResultActionTableViewCell.self), for: indexPath) as! ReportResultActionTableViewCell + context.managedObjectContext.performAndWait { + guard let user = record.object(in: context.managedObjectContext) else { return } + cell.avatarImageView.configure(configuration: .init(url: user.avatarImageURL())) + } + return cell + case .bottomLoader: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell + cell.activityIndicatorView.startAnimating() + return cell + } } } } + +extension ReportSection { + + static func configure( + context: AppContext, + tableView: UITableView, + cell: ReportStatusTableViewCell, + viewModel: ReportStatusTableViewCell.ViewModel, + configuration: Configuration + ) { + StatusSection.setupStatusPollDataSource( + context: context, + statusView: cell.statusView + ) + + context.authenticationService.activeMastodonAuthenticationBox + .map { $0 as UserIdentifier? } + .assign(to: \.userIdentifier, on: cell.statusView.viewModel) + .store(in: &cell.disposeBag) + + cell.configure( + tableView: tableView, + viewModel: viewModel + ) + } + +} diff --git a/Mastodon/Diffiable/Status/StatusItem.swift b/Mastodon/Diffiable/Status/StatusItem.swift index 5fff31d78..1d08ea41d 100644 --- a/Mastodon/Diffiable/Status/StatusItem.swift +++ b/Mastodon/Diffiable/Status/StatusItem.swift @@ -13,29 +13,10 @@ enum StatusItem: Hashable { case feed(record: ManagedObjectRecord) case feedLoader(record: ManagedObjectRecord) case status(record: ManagedObjectRecord) - // case statusLoader(record: ManagedObjectRecord, context: StatusLoaderContext) case thread(Thread) case topLoader case bottomLoader } - -//extension StatusItem { -// final class StatusLoaderContext: Hashable { -// let id = UUID() -// @Published var isFetching = false -// -// static func == ( -// lhs: StatusItem.StatusLoaderContext, -// rhs: StatusItem.StatusLoaderContext -// ) -> Bool { -// return lhs.id == rhs.id -// } -// -// func hash(into hasher: inout Hasher) { -// hasher.combine(id) -// } -// } -//} extension StatusItem { enum Thread: Hashable { diff --git a/Mastodon/Diffiable/Status/StatusSection.swift b/Mastodon/Diffiable/Status/StatusSection.swift index d3253ea7a..6eefdef7b 100644 --- a/Mastodon/Diffiable/Status/StatusSection.swift +++ b/Mastodon/Diffiable/Status/StatusSection.swift @@ -17,13 +17,6 @@ import MastodonSDK import NaturalLanguage import MastodonUI -// import LinkPresentation - -//protocol StatusCell: DisposeBagCollectable { -// var statusView: StatusView { get } -// var isFiltered: Bool { get set } -//} - enum StatusSection: Equatable, Hashable { case main } diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift index 2861730a2..54dce3bb8 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift @@ -209,7 +209,22 @@ extension DataSourceFacade { alertController.addAction(cancelAction) dependency.present(alertController, animated: true, completion: nil) case .reportUser: - assertionFailure() + Task { + guard let user = menuContext.author else { return } + + let reportViewModel = ReportViewModel( + context: dependency.context, + user: user, + status: menuContext.status + ) + + dependency.coordinator.present( + scene: .report(viewModel: reportViewModel), + from: dependency, + transition: .modal(animated: true, completion: nil) + ) + } // end Task + case .shareUser: guard let user = menuContext.author else { assertionFailure() diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index fcef0bffd..319149701 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -603,19 +603,6 @@ extension HomeTimelineViewController: ScrollViewContainer { } -// MARK: - AVPlayerViewControllerDelegate -//extension HomeTimelineViewController: AVPlayerViewControllerDelegate { -// -// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -// -// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -// -//} - // MARK: - StatusTableViewCellDelegate extension HomeTimelineViewController: StatusTableViewCellDelegate { } diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift index 5e8e7703f..3df276a16 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift @@ -27,7 +27,6 @@ final class HomeTimelineViewModel: NSObject { let context: AppContext let fetchedResultsController: FeedFetchedResultsController let timelinePredicate = CurrentValueSubject(nil) - //let isFetchingLatestTimeline = CurrentValueSubject(false) let viewDidAppear = PassthroughSubject() let homeTimelineNavigationBarTitleViewModel: HomeTimelineNavigationBarTitleViewModel let lastAutomaticFetchTimestamp = CurrentValueSubject(nil) @@ -83,28 +82,6 @@ final class HomeTimelineViewModel: NSObject { self.homeTimelineNavigationBarTitleViewModel = HomeTimelineNavigationBarTitleViewModel(context: context) super.init() -// fetchedResultsController.delegate = self - -// timelinePredicate -// .receive(on: DispatchQueue.main) -// .compactMap { $0 } -// .first() // set once -// .sink { [weak self] predicate in -// guard let self = self else { return } -// self.fetchedResultsController.fetchRequest.predicate = predicate -// do { -// self.diffableDataSource?.defaultRowAnimation = .fade -// try self.fetchedResultsController.performFetch() -// DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in -// guard let self = self else { return } -// self.diffableDataSource?.defaultRowAnimation = .automatic -// } -// } catch { -// assertionFailure(error.localizedDescription) -// } -// } -// .store(in: &disposeBag) - context.authenticationService.activeMastodonAuthenticationBox .sink { [weak self] authenticationBox in guard let self = self else { return } diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift index b97fc9e3f..78a433956 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift @@ -37,9 +37,6 @@ final class MastodonPickServerViewController: UIViewController, NeedsDependency let tableView: UITableView = { let tableView = ControlContainableTableView() - tableView.register(OnboardingHeadlineTableViewCell.self, forCellReuseIdentifier: String(describing: OnboardingHeadlineTableViewCell.self)) - tableView.register(PickServerCell.self, forCellReuseIdentifier: String(describing: PickServerCell.self)) - tableView.register(PickServerLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: PickServerLoaderTableViewCell.self)) tableView.rowHeight = UITableView.automaticDimension tableView.separatorStyle = .none tableView.backgroundColor = .clear @@ -115,7 +112,6 @@ extension MastodonPickServerViewController { self.tableView.contentInset.bottom = inset } .store(in: &observations) - // fix AutoLayout warning when observe before view appear viewModel.viewWillAppear diff --git a/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift index 06a92b430..c3236bdb4 100644 --- a/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift +++ b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift @@ -39,6 +39,14 @@ final class NavigationActionView: UIView { return button }() + var hidesBackButton: Bool = false { + didSet { backButtonShadowContainer.isHidden = hidesBackButton } + } + + var hidesNextButton: Bool = false { + didSet { nextButtonShadowContainer.isHidden = hidesNextButton } + } + override init(frame: CGRect) { super.init(frame: frame) _init() @@ -52,6 +60,7 @@ final class NavigationActionView: UIView { } extension NavigationActionView { + private func _init() { buttonContainer.translatesAutoresizingMaskIntoConstraints = false buttonContainer.preservesSuperviewLayoutMargins = true diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift index 58e92b8cc..0a1ae5882 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift @@ -67,7 +67,6 @@ extension UserTimelineViewController { ]) tableView.delegate = self -// tableView.prefetchDataSource = self viewModel.setupDiffableDataSource( tableView: tableView, statusTableViewCellDelegate: self diff --git a/Mastodon/Scene/Report/ReportFooterView.swift b/Mastodon/Scene/Report/ReportFooterView.swift deleted file mode 100644 index 19cd21ffc..000000000 --- a/Mastodon/Scene/Report/ReportFooterView.swift +++ /dev/null @@ -1,110 +0,0 @@ -// -// ReportFooterView.swift -// Mastodon -// -// Created by ihugo on 2021/4/22. -// - -import UIKit -import MastodonAsset -import MastodonLocalization - -final class ReportFooterView: UIView { - enum Step: Int { - case one - case two - } - - lazy var stackview: UIStackView = { - let view = UIStackView() - view.axis = .vertical - view.alignment = .fill - view.spacing = 8 - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - lazy var nextStepButton: PrimaryActionButton = { - let button = PrimaryActionButton() - button.setTitle(L10n.Common.Controls.Actions.continue, for: .normal) - button.translatesAutoresizingMaskIntoConstraints = false - return button - }() - - lazy var skipButton: UIButton = { - let button = UIButton(type: .system) - button.tintColor = Asset.Colors.brandBlue.color - button.setTitle(L10n.Common.Controls.Actions.skip, for: .normal) - button.translatesAutoresizingMaskIntoConstraints = false - return button - }() - - var step: Step = .one { - didSet { - switch step { - case .one: - nextStepButton.setTitle(L10n.Common.Controls.Actions.continue, for: .normal) - skipButton.setTitle(L10n.Common.Controls.Actions.skip, for: .normal) - case .two: - nextStepButton.setTitle(L10n.Scene.Report.send, for: .normal) - skipButton.setTitle(L10n.Scene.Report.skipToSend, for: .normal) - } - } - } - - override init(frame: CGRect) { - super.init(frame: frame) - - self.backgroundColor = ThemeService.shared.currentTheme.value.systemElevatedBackgroundColor - - stackview.addArrangedSubview(nextStepButton) - stackview.addArrangedSubview(skipButton) - addSubview(stackview) - - NSLayoutConstraint.activate([ - stackview.topAnchor.constraint( - equalTo: self.topAnchor, - constant: ReportView.continuTopMargin - ), - stackview.leadingAnchor.constraint( - equalTo: self.readableContentGuide.leadingAnchor, - constant: ReportView.horizontalMargin - ), - stackview.bottomAnchor.constraint( - equalTo: self.safeAreaLayoutGuide.bottomAnchor, - constant: -1 * ReportView.skipBottomMargin - ), - stackview.trailingAnchor.constraint( - equalTo: self.readableContentGuide.trailingAnchor, - constant: -1 * ReportView.horizontalMargin - ), - nextStepButton.heightAnchor.constraint( - equalToConstant: ReportView.buttonHeight - ), - skipButton.heightAnchor.constraint( - equalTo: nextStepButton.heightAnchor - ) - ]) - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct ReportFooterView_Previews: PreviewProvider { - static var previews: some View { - Group { - UIViewPreview(width: 375) { () -> UIView in - return ReportFooterView(frame: CGRect(origin: .zero, size: CGSize(width: 375, height: 164))) - } - .previewLayout(.fixed(width: 375, height: 164)) - } - } - -} - -#endif diff --git a/Mastodon/Scene/Report/ReportHeaderView.swift b/Mastodon/Scene/Report/ReportHeaderView.swift deleted file mode 100644 index cf74e96ff..000000000 --- a/Mastodon/Scene/Report/ReportHeaderView.swift +++ /dev/null @@ -1,129 +0,0 @@ -// -// ReportView.swift -// Mastodon -// -// Created by ihugo on 2021/4/20. -// - -import UIKit -import MastodonAsset -import MastodonLocalization - - -struct ReportView { - static var horizontalMargin: CGFloat { return 12 } - static var verticalMargin: CGFloat { return 22 } - static var buttonHeight: CGFloat { return 46 } - static var skipBottomMargin: CGFloat { return 8 } - static var continuTopMargin: CGFloat { return 22 } -} - -final class ReportHeaderView: UIView { - enum Step: Int { - case one - case two - } - - lazy var titleLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.secondary.color - label.font = UIFontMetrics(forTextStyle: .subheadline) - .scaledFont(for: .systemFont(ofSize: 15, weight: .regular)) - label.numberOfLines = 0 - return label - }() - - lazy var contentLabel: UILabel = { - let label = UILabel() - label.textColor = Asset.Colors.Label.primary.color - label.font = UIFontMetrics(forTextStyle: .title3) - .scaledFont(for: .systemFont(ofSize: 20, weight: .semibold)) - label.numberOfLines = 0 - return label - }() - - lazy var stackview: UIStackView = { - let view = UIStackView() - view.axis = .vertical - view.alignment = .leading - view.spacing = 2 - return view - }() - - let bottomSeparatorLine = UIView.separatorLine - - var step: Step = .one { - didSet { - switch step { - case .one: - titleLabel.text = L10n.Scene.Report.step1 - contentLabel.text = L10n.Scene.Report.content1 - case .two: - titleLabel.text = L10n.Scene.Report.step2 - contentLabel.text = L10n.Scene.Report.content2 - } - } - } - - override init(frame: CGRect) { - super.init(frame: frame) - - self.backgroundColor = ThemeService.shared.currentTheme.value.systemElevatedBackgroundColor - stackview.addArrangedSubview(titleLabel) - stackview.addArrangedSubview(contentLabel) - addSubview(stackview) - - stackview.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - stackview.topAnchor.constraint( - equalTo: self.topAnchor, - constant: ReportView.verticalMargin - ), - stackview.leadingAnchor.constraint( - equalTo: self.readableContentGuide.leadingAnchor, - constant: ReportView.horizontalMargin - ), - self.bottomAnchor.constraint( - equalTo: stackview.bottomAnchor, - constant: ReportView.verticalMargin - ), - self.readableContentGuide.trailingAnchor.constraint( - equalTo: stackview.trailingAnchor, - constant: ReportView.horizontalMargin - ) - ]) - - bottomSeparatorLine.translatesAutoresizingMaskIntoConstraints = false - addSubview(bottomSeparatorLine) - NSLayoutConstraint.activate([ - bottomSeparatorLine.leadingAnchor.constraint(equalTo: leadingAnchor), - bottomSeparatorLine.trailingAnchor.constraint(equalTo: trailingAnchor), - bottomSeparatorLine.bottomAnchor.constraint(equalTo: bottomAnchor), - bottomSeparatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: self)).priority(.defaultHigh), - ]) - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct ReportHeaderView_Previews: PreviewProvider { - static var previews: some View { - Group { - UIViewPreview { () -> UIView in - let view = ReportHeaderView() - view.step = .one - view.contentLabel.preferredMaxLayoutWidth = 335 - return view - } - .previewLayout(.fixed(width: 375, height: 110)) - } - } - -} - -#endif diff --git a/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift b/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift new file mode 100644 index 000000000..6970b8560 --- /dev/null +++ b/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift @@ -0,0 +1,113 @@ +// +// ReportResultViewController.swift +// Mastodon +// +// Created by MainasuK on 2022-2-8. +// + +import os.log +import UIKit +import Combine +import MastodonAsset +import MastodonLocalization + +final class ReportResultViewController: UIViewController, NeedsDependency, ReportViewControllerAppearance { + + var disposeBag = Set() + private var observations = Set() + + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } + weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } + + var viewModel: ReportResultViewModel! + + let tableView: UITableView = { + let tableView = ControlContainableTableView() + tableView.backgroundColor = Asset.Scene.Report.background.color + tableView.rowHeight = UITableView.automaticDimension + tableView.separatorStyle = .none + tableView.backgroundColor = .clear + tableView.keyboardDismissMode = .onDrag + tableView.allowsMultipleSelection = true + if #available(iOS 15.0, *) { + tableView.sectionHeaderTopPadding = .leastNonzeroMagnitude + } else { + // Fallback on earlier versions + } + return tableView + }() + + let navigationActionView: NavigationActionView = { + let navigationActionView = NavigationActionView() + navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.hidesBackButton = true + navigationActionView.nextButton.setTitle(L10n.Common.Controls.Actions.done, for: .normal) + return navigationActionView + }() + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + +} + +extension ReportResultViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + setupAppearance() + defer { setupNavigationBarBackgroundView() } + + navigationItem.hidesBackButton = true + + tableView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(tableView) + NSLayoutConstraint.activate([ + tableView.topAnchor.constraint(equalTo: view.topAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + tableView.delegate = self + viewModel.setupDiffableDataSource( + tableView: tableView + ) + + navigationActionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(navigationActionView) + defer { + view.bringSubviewToFront(navigationActionView) + } + NSLayoutConstraint.activate([ + navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor), + ]) + + navigationActionView + .observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in + guard let self = self else { return } + let inset = navigationActionView.frame.height + self.tableView.contentInset.bottom = inset + self.tableView.verticalScrollIndicatorInsets.bottom = inset + } + .store(in: &observations) + + + navigationActionView.nextButton.addTarget(self, action: #selector(ReportSupplementaryViewController.nextButtonDidPressed(_:)), for: .touchUpInside) + } + +} + +extension ReportResultViewController { + + @objc func nextButtonDidPressed(_ sender: UIButton) { + dismiss(animated: true, completion: nil) + } + +} + +// MARK: - UITableViewDelegate +extension ReportResultViewController: UITableViewDelegate { } diff --git a/Mastodon/Scene/Report/ReportResult/ReportResultViewModel+Diffable.swift b/Mastodon/Scene/Report/ReportResult/ReportResultViewModel+Diffable.swift new file mode 100644 index 000000000..a9c1272df --- /dev/null +++ b/Mastodon/Scene/Report/ReportResult/ReportResultViewModel+Diffable.swift @@ -0,0 +1,37 @@ +// +// ReportResultViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-2-8. +// + +import UIKit +import Combine +import CoreData +import CoreDataStack +import MastodonAsset +import MastodonLocalization + +extension ReportResultViewModel { + + static let reportItemHeaderContext = ReportItem.HeaderContext( + primaryLabelText: "Thanks for reporting, we’ll look into this.", + secondaryLabelText: "" + ) + + func setupDiffableDataSource( + tableView: UITableView + ) { + diffableDataSource = ReportSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: ReportSection.Configuration() + ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + snapshot.appendItems([.header(context: ReportResultViewModel.reportItemHeaderContext)], toSection: .main) + snapshot.appendItems([.result(record: user)], toSection: .main) + diffableDataSource?.apply(snapshot) + } +} diff --git a/Mastodon/Scene/Report/ReportResult/ReportResultViewModel.swift b/Mastodon/Scene/Report/ReportResult/ReportResultViewModel.swift new file mode 100644 index 000000000..79fec4936 --- /dev/null +++ b/Mastodon/Scene/Report/ReportResult/ReportResultViewModel.swift @@ -0,0 +1,36 @@ +// +// ReportResultViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-2-8. +// + +import Combine +import CoreData +import CoreDataStack +import Foundation +import MastodonSDK +import os.log +import UIKit + +class ReportResultViewModel { + + var disposeBag = Set() + + // input + let context: AppContext + let user: ManagedObjectRecord + + // output + var diffableDataSource: UITableViewDiffableDataSource? + + init( + context: AppContext, + user: ManagedObjectRecord + ) { + self.context = context + self.user = user + // end init + } + +} diff --git a/Mastodon/Scene/Report/ReportStatus/ReportViewController.swift b/Mastodon/Scene/Report/ReportStatus/ReportViewController.swift new file mode 100644 index 000000000..4cb1f56fd --- /dev/null +++ b/Mastodon/Scene/Report/ReportStatus/ReportViewController.swift @@ -0,0 +1,221 @@ +// +// ReportViewController.swift +// Mastodon +// +// Created by ihugo on 2021/4/20. +// + +import os.log +import UIKit +import Combine +import CoreDataStack +import MastodonAsset +import MastodonLocalization + +class ReportViewController: UIViewController, NeedsDependency, ReportViewControllerAppearance { + + var disposeBag = Set() + private var observations = Set() + + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } + weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } + + var viewModel: ReportViewModel! + + // MAKK: - UI + lazy var cancelBarButtonItem = UIBarButtonItem( + barButtonSystemItem: .cancel, + target: self, + action: #selector(ReportViewController.cancelBarButtonItemDidPressed(_:)) + ) + + let tableView: UITableView = { + let tableView = ControlContainableTableView() + tableView.backgroundColor = Asset.Scene.Report.background.color + tableView.rowHeight = UITableView.automaticDimension + tableView.separatorStyle = .none + tableView.backgroundColor = .clear + tableView.keyboardDismissMode = .onDrag + tableView.allowsMultipleSelection = true + if #available(iOS 15.0, *) { + tableView.sectionHeaderTopPadding = .leastNonzeroMagnitude + } else { + // Fallback on earlier versions + } + return tableView + }() + + let navigationActionView: NavigationActionView = { + let navigationActionView = NavigationActionView() + navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.backButton.setTitle(L10n.Common.Controls.Actions.skip, for: .normal) + return navigationActionView + }() + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + +} + +extension ReportViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + setupAppearance() + defer { setupNavigationBarBackgroundView() } + + navigationItem.rightBarButtonItem = cancelBarButtonItem + + tableView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(tableView) + NSLayoutConstraint.activate([ + tableView.topAnchor.constraint(equalTo: view.topAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + tableView.delegate = self + viewModel.setupDiffableDataSource( + tableView: tableView + ) + + navigationActionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(navigationActionView) + defer { + view.bringSubviewToFront(navigationActionView) + } + NSLayoutConstraint.activate([ + navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor), + ]) + + navigationActionView + .observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in + guard let self = self else { return } + let inset = navigationActionView.frame.height + self.tableView.contentInset.bottom = inset + self.tableView.verticalScrollIndicatorInsets.bottom = inset + } + .store(in: &observations) + + // setup batch fetch + viewModel.listBatchFetchViewModel.setup(scrollView: tableView) + viewModel.listBatchFetchViewModel.shouldFetch + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self = self else { return } + guard self.view.window != nil else { return } + self.viewModel.stateMachine.enter(ReportViewModel.State.Loading.self) + } + .store(in: &disposeBag) + + viewModel.$isNextButtonEnabled + .receive(on: DispatchQueue.main) + .assign(to: \.isEnabled, on: navigationActionView.nextButton) + .store(in: &disposeBag) + + navigationActionView.backButton.addTarget(self, action: #selector(ReportViewController.skipButtonDidPressed(_:)), for: .touchUpInside) + navigationActionView.nextButton.addTarget(self, action: #selector(ReportViewController.nextButtonDidPressed(_:)), for: .touchUpInside) + } + +} + +extension ReportViewController { + + @objc private func cancelBarButtonItemDidPressed(_ sender: UIBarButtonItem) { + dismiss(animated: true, completion: nil) + } + + @objc func skipButtonDidPressed(_ sender: UIButton) { + var selectStatuses: [ManagedObjectRecord] = [] + if let selectStatus = viewModel.status { + selectStatuses.append(selectStatus) + } + + let reportSupplementaryViewModel = ReportSupplementaryViewModel( + context: context, + user: viewModel.user, + selectStatuses: selectStatuses + ) + coordinator.present( + scene: .reportSupplementary(viewModel: reportSupplementaryViewModel), + from: self, + transition: .show + ) + } + + @objc func nextButtonDidPressed(_ sender: UIButton) { + let selectStatuses = Array(viewModel.selectStatuses) + guard !selectStatuses.isEmpty else { return } + + let reportSupplementaryViewModel = ReportSupplementaryViewModel( + context: context, + user: viewModel.user, + selectStatuses: selectStatuses + ) + coordinator.present( + scene: .reportSupplementary(viewModel: reportSupplementaryViewModel), + from: self, + transition: .show + ) + } + +} + +// MARK: - UITableViewDelegate +extension ReportViewController: UITableViewDelegate { + func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath), + case .status = item + else { + return nil + } + + return indexPath + } + + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath), + case let .status(record) = item + else { + tableView.deselectRow(at: indexPath, animated: true) + return + } + + viewModel.selectStatuses.append(record) + } + + func tableView(_ tableView: UITableView, willDeselectRowAt indexPath: IndexPath) -> IndexPath? { + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath), + case let .status(record) = item + else { + return nil + } + + // disallow deselect initial selection + guard record != viewModel.status else { return nil } + + return indexPath + } + + func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath), + case let .status(record) = item + else { + return + } + + viewModel.selectStatuses.remove(record) + } +} + +// MARK: - UIAdaptivePresentationControllerDelegate +extension ReportViewController: UIAdaptivePresentationControllerDelegate { + func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool { + return false + } +} diff --git a/Mastodon/Scene/Report/ReportStatus/ReportViewModel+Diffable.swift b/Mastodon/Scene/Report/ReportStatus/ReportViewModel+Diffable.swift new file mode 100644 index 000000000..30ec5d872 --- /dev/null +++ b/Mastodon/Scene/Report/ReportStatus/ReportViewModel+Diffable.swift @@ -0,0 +1,85 @@ +// +// ReportViewModel+Diffable.swift +// Mastodon +// +// Created by ihugo on 2021/4/19. +// + +import UIKit +import Combine +import CoreData +import CoreDataStack +import MastodonAsset +import MastodonLocalization + +extension ReportViewModel { + + static let reportItemHeaderContext = ReportItem.HeaderContext( + primaryLabelText: L10n.Scene.Report.content1, + secondaryLabelText: L10n.Scene.Report.step1 + ) + + func setupDiffableDataSource( + tableView: UITableView + ) { + diffableDataSource = ReportSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: ReportSection.Configuration() + ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + diffableDataSource?.apply(snapshot) + + statusFetchedResultsController.$records + .receive(on: DispatchQueue.main) + .sink { [weak self] records in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + + snapshot.appendItems([.header(context: ReportViewModel.reportItemHeaderContext)], toSection: .main) + + let items = records.map { ReportItem.status(record: $0) } + snapshot.appendItems(items, toSection: .main) + + let selectItems = items.filter { item in + guard case let .status(record) = item else { return false } + return self.selectStatuses.contains(record) + } + + guard let currentState = self.stateMachine.currentState else { return } + switch currentState { + case is State.Initial, + is State.Loading, + is State.Idle, + is State.Fail: + snapshot.appendItems([.bottomLoader], toSection: .main) + case is State.NoMore: + break + default: + assertionFailure() + break + } + + diffableDataSource.applySnapshot(snapshot, animated: false) { [weak self] in + guard let self = self else { return } + guard let diffableDataSource = self.diffableDataSource else { return } + + let selectIndexPaths = selectItems.compactMap { item in + diffableDataSource.indexPath(for: item) + } + + // Only the first selection make the initial selection + // The later selection could be ignored + for indexPath in selectIndexPaths { + tableView.selectRow(at: indexPath, animated: false, scrollPosition: .none) + } + } + } + .store(in: &disposeBag) + } +} diff --git a/Mastodon/Scene/Report/ReportStatus/ReportViewModel+State.swift b/Mastodon/Scene/Report/ReportStatus/ReportViewModel+State.swift new file mode 100644 index 000000000..1bc43830f --- /dev/null +++ b/Mastodon/Scene/Report/ReportStatus/ReportViewModel+State.swift @@ -0,0 +1,173 @@ +// +// ReportViewModel+State.swift +// Mastodon +// +// Created by MainasuK on 2022-2-7. +// + +import os.log +import func QuartzCore.CACurrentMediaTime +import Foundation +import CoreData +import CoreDataStack +import GameplayKit + +extension ReportViewModel { + class State: GKState { + + let logger = Logger(subsystem: "ReportViewModel.State", category: "StateMachine") + + let id = UUID() + + var name: String { + String(describing: Self.self) + } + + weak var viewModel: ReportViewModel? + + init(viewModel: ReportViewModel) { + self.viewModel = viewModel + } + + override func didEnter(from previousState: GKState?) { + super.didEnter(from: previousState) + let previousState = previousState as? ReportViewModel.State + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] enter \(self.name), previous: \(previousState?.name ?? "")") + } + + @MainActor + func enter(state: State.Type) { + stateMachine?.enter(state) + } + + deinit { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): [\(self.id.uuidString)] \(self.name)") + } + } +} + +extension ReportViewModel.State { + class Initial: ReportViewModel.State { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + guard let _ = viewModel else { return false } + switch stateClass { + case is Loading.Type: + return true + default: + return false + } + } + } + + class Loading: ReportViewModel.State { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + switch stateClass { + case is Fail.Type: + return true + case is Idle.Type: + return true + case is NoMore.Type: + return true + default: + return false + } + } + + override func didEnter(from previousState: GKState?) { + super.didEnter(from: previousState) + guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let authenticationBox = viewModel.context.authenticationService.activeMastodonAuthenticationBox.value else { + stateMachine.enter(Fail.self) + return + } + + let maxID = viewModel.statusFetchedResultsController.statusIDs.value.last + + Task { + let managedObjectContext = viewModel.context.managedObjectContext + let _userID: MastodonUser.ID? = try await managedObjectContext.perform { + guard let user = viewModel.user.object(in: managedObjectContext) else { return nil } + return user.id + } + guard let userID = _userID else { + await enter(state: Fail.self) + return + } + + do { + let response = try await viewModel.context.apiService.userTimeline( + accountID: userID, + maxID: maxID, + sinceID: nil, + excludeReplies: true, + excludeReblogs: true, + onlyMedia: false, + authenticationBox: authenticationBox + ) + + var hasNewStatusesAppend = false + var statusIDs = viewModel.statusFetchedResultsController.statusIDs.value + for status in response.value { + guard !statusIDs.contains(status.id) else { continue } + statusIDs.append(status.id) + hasNewStatusesAppend = true + } + + if hasNewStatusesAppend { + await enter(state: Idle.self) + } else { + await enter(state: NoMore.self) + } + viewModel.statusFetchedResultsController.statusIDs.value = statusIDs + + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch user timeline fail: \(error.localizedDescription)") + await enter(state: Fail.self) + } + } + } + } + + class Fail: ReportViewModel.State { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + switch stateClass { + case is Loading.Type: + return true + default: + return false + } + } + } + + class Idle: ReportViewModel.State { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + switch stateClass { + case is Loading.Type: + return true + default: + return false + } + } + } + + class NoMore: ReportViewModel.State { + override func isValidNextState(_ stateClass: AnyClass) -> Bool { + return false + } + + override func didEnter(from previousState: GKState?) { + super.didEnter(from: previousState) + guard let viewModel = viewModel, let _ = stateMachine else { return } + guard let diffableDataSource = viewModel.diffableDataSource else { + assertionFailure() + return + } + DispatchQueue.main.async { + var snapshot = diffableDataSource.snapshot() + snapshot.deleteItems([.bottomLoader]) + diffableDataSource.apply(snapshot) + } + } + } + +} diff --git a/Mastodon/Scene/Report/ReportStatus/ReportViewModel.swift b/Mastodon/Scene/Report/ReportStatus/ReportViewModel.swift new file mode 100644 index 000000000..46a475262 --- /dev/null +++ b/Mastodon/Scene/Report/ReportStatus/ReportViewModel.swift @@ -0,0 +1,78 @@ +// +// ReportViewModel.swift +// Mastodon +// +// Created by ihugo on 2021/4/19. +// + +import Combine +import CoreData +import CoreDataStack +import Foundation +import GameplayKit +import MastodonSDK +import OrderedCollections +import os.log +import UIKit + +class ReportViewModel { + + var disposeBag = Set() + + // input + let context: AppContext + let user: ManagedObjectRecord + let status: ManagedObjectRecord? + let statusFetchedResultsController: StatusFetchedResultsController + let listBatchFetchViewModel = ListBatchFetchViewModel() + + @Published var selectStatuses = OrderedSet>() + + // output + var diffableDataSource: UITableViewDiffableDataSource? + private(set) lazy var stateMachine: GKStateMachine = { + let stateMachine = GKStateMachine(states: [ + State.Initial(viewModel: self), + State.Fail(viewModel: self), + State.Idle(viewModel: self), + State.Loading(viewModel: self), + State.NoMore(viewModel: self), + ]) + stateMachine.enter(State.Initial.self) + return stateMachine + }() + + @Published var isNextButtonEnabled = false + + init( + context: AppContext, + user: ManagedObjectRecord, + status: ManagedObjectRecord? + ) { + self.context = context + self.user = user + self.status = status + self.statusFetchedResultsController = StatusFetchedResultsController( + managedObjectContext: context.managedObjectContext, + domain: nil, + additionalTweetPredicate: nil + ) + // end init + + if let status = status { + selectStatuses.append(status) + } + + context.authenticationService.activeMastodonAuthenticationBox + .map { $0?.domain } + .assign(to: \.value, on: statusFetchedResultsController.domain) + .store(in: &disposeBag) + + $selectStatuses + .map { statuses -> Bool in + return status == nil ? !statuses.isEmpty : statuses.count > 1 + } + .assign(to: &$isNextButtonEnabled) + } + +} diff --git a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift new file mode 100644 index 000000000..44545dd28 --- /dev/null +++ b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift @@ -0,0 +1,181 @@ +// +// ReportSupplementaryViewController.swift +// Mastodon +// +// Created by MainasuK on 2022-2-7. +// + +import os.log +import UIKit +import Combine +import MastodonAsset +import MastodonLocalization + +final class ReportSupplementaryViewController: UIViewController, NeedsDependency, ReportViewControllerAppearance { + + let logger = Logger(subsystem: "ReportSupplementaryViewController", category: "ViewController") + + var disposeBag = Set() + private var observations = Set() + + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } + weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } + + var viewModel: ReportSupplementaryViewModel! { willSet { precondition(!isViewLoaded) } } + + + // MAKK: - UI + lazy var cancelBarButtonItem = UIBarButtonItem( + barButtonSystemItem: .cancel, + target: self, + action: #selector(ReportSupplementaryViewController.cancelBarButtonItemDidPressed(_:)) + ) + + let activityIndicatorBarButtonItem: UIBarButtonItem = { + let activityIndicatorView = UIActivityIndicatorView(style: .medium) + activityIndicatorView.startAnimating() + let barButtonItem = UIBarButtonItem(customView: activityIndicatorView) + return barButtonItem + }() + + let tableView: UITableView = { + let tableView = ControlContainableTableView() + tableView.backgroundColor = Asset.Scene.Report.background.color + tableView.rowHeight = UITableView.automaticDimension + tableView.separatorStyle = .none + tableView.backgroundColor = .clear + tableView.keyboardDismissMode = .onDrag + if #available(iOS 15.0, *) { + tableView.sectionHeaderTopPadding = .leastNonzeroMagnitude + } else { + // Fallback on earlier versions + } + return tableView + }() + + let navigationActionView: NavigationActionView = { + let navigationActionView = NavigationActionView() + navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.backButton.setTitle(L10n.Common.Controls.Actions.skip, for: .normal) + return navigationActionView + }() + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + } + +} + +extension ReportSupplementaryViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + setupAppearance() + defer { setupNavigationBarBackgroundView() } + + navigationItem.rightBarButtonItem = cancelBarButtonItem + + viewModel.$isReporting + .receive(on: DispatchQueue.main) + .sink { [weak self] isReporting in + guard let self = self else { return } + self.navigationActionView.isUserInteractionEnabled = !isReporting + } + .store(in: &disposeBag) + + tableView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(tableView) + NSLayoutConstraint.activate([ + tableView.topAnchor.constraint(equalTo: view.topAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + tableView.delegate = self + viewModel.setupDiffableDataSource( + tableView: tableView + ) + + navigationActionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(navigationActionView) + defer { + view.bringSubviewToFront(navigationActionView) + } + NSLayoutConstraint.activate([ + navigationActionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + navigationActionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + view.bottomAnchor.constraint(equalTo: navigationActionView.bottomAnchor), + ]) + + navigationActionView + .observe(\.bounds, options: [.initial, .new]) { [weak self] navigationActionView, _ in + guard let self = self else { return } + let inset = navigationActionView.frame.height + self.tableView.contentInset.bottom = inset + self.tableView.verticalScrollIndicatorInsets.bottom = inset + } + .store(in: &observations) + + viewModel.$isNextButtonEnabled + .receive(on: DispatchQueue.main) + .assign(to: \.isEnabled, on: navigationActionView.nextButton) + .store(in: &disposeBag) + + navigationActionView.backButton.addTarget(self, action: #selector(ReportSupplementaryViewController.skipButtonDidPressed(_:)), for: .touchUpInside) + navigationActionView.nextButton.addTarget(self, action: #selector(ReportSupplementaryViewController.nextButtonDidPressed(_:)), for: .touchUpInside) + } + +} + +extension ReportSupplementaryViewController { + private func report(withComment: Bool) { + Task { + do { + let _ = try await viewModel.report(withComment: withComment) + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): report success") + + let reportResultViewModel = ReportResultViewModel( + context: context, + user: viewModel.user + ) + + coordinator.present( + scene: .reportResult(viewModel: reportResultViewModel), + from: self, + transition: .show + ) + + } catch { + let alertController = UIAlertController(for: error, title: nil, preferredStyle: .alert) + let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil) + alertController.addAction(okAction) + self.coordinator.present( + scene: .alertController(alertController: alertController), + from: nil, + transition: .alertController(animated: true, completion: nil) + ) + } + } // end Task + } +} + +extension ReportSupplementaryViewController { + + @objc private func cancelBarButtonItemDidPressed(_ sender: UIBarButtonItem) { + dismiss(animated: true, completion: nil) + } + + @objc func skipButtonDidPressed(_ sender: UIButton) { + report(withComment: false) + } + + @objc func nextButtonDidPressed(_ sender: UIButton) { + report(withComment: true) + } + +} + +// MARK: - UITableViewDelegate +extension ReportSupplementaryViewController: UITableViewDelegate { } diff --git a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel+Diffable.swift b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel+Diffable.swift new file mode 100644 index 000000000..5fb9e7421 --- /dev/null +++ b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel+Diffable.swift @@ -0,0 +1,38 @@ +// +// ReportSupplementaryViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-2-7. +// + +import UIKit +import Combine +import CoreData +import CoreDataStack +import MastodonAsset +import MastodonLocalization + +extension ReportSupplementaryViewModel { + + static let reportItemHeaderContext = ReportItem.HeaderContext( + primaryLabelText: L10n.Scene.Report.content2, + secondaryLabelText: L10n.Scene.Report.step2 + ) + + func setupDiffableDataSource( + tableView: UITableView + ) { + diffableDataSource = ReportSection.diffableDataSource( + tableView: tableView, + context: context, + configuration: ReportSection.Configuration() + ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + snapshot.appendItems([.header(context: ReportSupplementaryViewModel.reportItemHeaderContext)], toSection: .main) + snapshot.appendItems([.comment(context: commentContext)], toSection: .main) + + diffableDataSource?.apply(snapshot, animatingDifferences: false) + } +} diff --git a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel.swift b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel.swift new file mode 100644 index 000000000..e73e82dd6 --- /dev/null +++ b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewModel.swift @@ -0,0 +1,82 @@ +// +// ReportSupplementaryViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-2-7. +// + +import UIKit +import Combine +import CoreDataStack +import MastodonSDK + +class ReportSupplementaryViewModel { + + // Input + var context: AppContext + let user: ManagedObjectRecord + let selectStatuses: [ManagedObjectRecord] + let commentContext = ReportItem.CommentContext() + + // output + var diffableDataSource: UITableViewDiffableDataSource? + @Published var isNextButtonEnabled = false + @Published var isReporting = false + @Published var isReportSuccess = false + + init( + context: AppContext, + user: ManagedObjectRecord, + selectStatuses: [ManagedObjectRecord] + ) { + self.context = context + self.user = user + self.selectStatuses = selectStatuses + // end init + + commentContext.$comment + .map { comment -> Bool in + return !comment.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty + } + .assign(to: &$isNextButtonEnabled) + } + +} + +extension ReportSupplementaryViewModel { + func report(withComment: Bool) async throws { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + assertionFailure() + return + } + + let managedObjectContext = context.managedObjectContext + let _query: Mastodon.API.Reports.FileReportQuery? = try await managedObjectContext.perform { + guard let user = self.user.object(in: managedObjectContext) else { return nil } + let statusIDs = self.selectStatuses.compactMap { record -> Status.ID? in + guard let status = record.object(in: managedObjectContext) else { return nil } + return status.id + } + return Mastodon.API.Reports.FileReportQuery( + accountID: user.id, + statusIDs: statusIDs, + comment: withComment ? self.commentContext.comment : nil, + forward: nil + ) + } + + guard let query = _query else { return } + + do { + isReporting = true + let _ = try await context.apiService.report( + query: query, + authenticationBox: authenticationBox + ) + isReportSuccess = true + } catch { + isReporting = false + throw error + } + } +} diff --git a/Mastodon/Scene/Report/ReportViewController.swift b/Mastodon/Scene/Report/ReportViewController.swift deleted file mode 100644 index 28f38aa5d..000000000 --- a/Mastodon/Scene/Report/ReportViewController.swift +++ /dev/null @@ -1,370 +0,0 @@ -// -// ReportViewController.swift -// Mastodon -// -// Created by ihugo on 2021/4/20. -// - -import AVKit -import Combine -import CoreData -import CoreDataStack -import os.log -import UIKit -import MastodonSDK -import MastodonMeta -import MastodonAsset -import MastodonLocalization - -class ReportViewController: UIViewController, NeedsDependency { - static let kAnimationDuration: TimeInterval = 0.33 - - weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } - weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } - - var viewModel: ReportViewModel! { willSet { precondition(!isViewLoaded) } } - var disposeBag = Set() -// let didToggleSelected = PassthroughSubject() - let comment = CurrentValueSubject(nil) - let step1Continue = PassthroughSubject() - let step1Skip = PassthroughSubject() - let step2Continue = PassthroughSubject() - let step2Skip = PassthroughSubject() - let cancel = PassthroughSubject() - - // MAKK: - UI - lazy var header: ReportHeaderView = { - let view = ReportHeaderView() - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - lazy var footer: ReportFooterView = { - let view = ReportFooterView() - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - lazy var contentView: UIView = { - let view = UIView() - view.translatesAutoresizingMaskIntoConstraints = false - view.setContentHuggingPriority(.defaultLow, for: .vertical) - view.backgroundColor = ThemeService.shared.currentTheme.value.systemElevatedBackgroundColor - return view - }() - - lazy var stackView: UIStackView = { - let view = UIStackView() - view.axis = .vertical - view.alignment = .fill - view.distribution = .fill - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - lazy var tableView: UITableView = { - let tableView = ControlContainableTableView() - tableView.register(ReportedStatusTableViewCell.self, forCellReuseIdentifier: String(describing: ReportedStatusTableViewCell.self)) - tableView.rowHeight = UITableView.automaticDimension - tableView.separatorStyle = .none - tableView.backgroundColor = .clear - tableView.translatesAutoresizingMaskIntoConstraints = false - tableView.delegate = self - tableView.prefetchDataSource = self - tableView.allowsMultipleSelection = true - return tableView - }() - - lazy var textView: UITextView = { - let textView = UITextView() - textView.font = .preferredFont(forTextStyle: .body) - textView.isScrollEnabled = false - textView.placeholder = L10n.Scene.Report.textPlaceholder - textView.backgroundColor = .clear - textView.delegate = self - textView.isScrollEnabled = true - textView.keyboardDismissMode = .onDrag - return textView - }() - - lazy var bottomSpacing: UIView = { - let view = UIView() - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - var bottomConstraint: NSLayoutConstraint! - - let titleView = DoubleTitleLabelNavigationBarTitleView() - - override func viewDidLoad() { - super.viewDidLoad() - - setupView() - - viewModel.setupDiffableDataSource( - for: tableView, - dependency: self - ) - - bindViewModel() - bindActions() - } - - // MAKR: - Private methods - private func setupView() { - view.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor - ThemeService.shared.currentTheme - .receive(on: RunLoop.main) - .sink { [weak self] theme in - guard let self = self else { return } - self.view.backgroundColor = theme.secondarySystemBackgroundColor - } - .store(in: &disposeBag) - - setupNavigation() - - stackView.addArrangedSubview(header) - stackView.addArrangedSubview(contentView) - stackView.addArrangedSubview(footer) - stackView.addArrangedSubview(bottomSpacing) - - contentView.addSubview(tableView) - - view.addSubview(stackView) - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), - stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.topAnchor.constraint(equalTo: contentView.topAnchor), - tableView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - tableView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - tableView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - ]) - - self.bottomConstraint = bottomSpacing.heightAnchor.constraint(equalToConstant: 0) - bottomConstraint.isActive = true - - header.step = .one - } - - private func bindActions() { - footer.nextStepButton.addTarget(self, action: #selector(continueButtonDidClick), for: .touchUpInside) - footer.skipButton.addTarget(self, action: #selector(skipButtonDidClick), for: .touchUpInside) - } - - private func bindViewModel() { - let input = ReportViewModel.Input( -// didToggleSelected: didToggleSelected.eraseToAnyPublisher(), - comment: comment.eraseToAnyPublisher(), - step1Continue: step1Continue.eraseToAnyPublisher(), - step1Skip: step1Skip.eraseToAnyPublisher(), - step2Continue: step2Continue.eraseToAnyPublisher(), - step2Skip: step2Skip.eraseToAnyPublisher(), - cancel: cancel.eraseToAnyPublisher() - ) - let output = viewModel.transform(input: input) - output?.currentStep - .receive(on: DispatchQueue.main) - .sink(receiveValue: { [weak self] (step) in - guard step == .two else { return } - guard let self = self else { return } - - self.header.step = .two - self.footer.step = .two - self.switchToStep2Content() - }) - .store(in: &disposeBag) - - output?.continueEnableSubject - .receive(on: DispatchQueue.main) - .filter { [weak self] _ in - guard let step = self?.viewModel.currentStep.value, step == .one else { return false } - return true - } - .assign(to: \.nextStepButton.isEnabled, on: footer) - .store(in: &disposeBag) - - output?.sendEnableSubject - .receive(on: DispatchQueue.main) - .filter { [weak self] _ in - guard let step = self?.viewModel.currentStep.value, step == .two else { return false } - return true - } - .assign(to: \.nextStepButton.isEnabled, on: footer) - .store(in: &disposeBag) - - output?.reportResult - .print() - .receive(on: DispatchQueue.main) - .sink(receiveCompletion: { _ in - }, receiveValue: { [weak self] data in - let (success, error) = data - if success { - self?.dismiss(animated: true, completion: nil) - } else if let error = error { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fail to file a report : %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - - let alertController = UIAlertController(for: error, title: nil, preferredStyle: .alert) - let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) - alertController.addAction(okAction) - self?.coordinator.present( - scene: .alertController(alertController: alertController), - from: nil, - transition: .alertController(animated: true, completion: nil) - ) - } - }) - .store(in: &disposeBag) - - Publishers.CombineLatest( - KeyboardResponderService.shared.state.eraseToAnyPublisher(), - KeyboardResponderService.shared.endFrame.eraseToAnyPublisher() - ) - .sink(receiveValue: { [weak self] state, endFrame in - guard let self = self else { return } - - guard state == .dock else { - self.bottomConstraint.constant = 0.0 - return - } - - let contentFrame = self.view.convert(self.view.frame, to: nil) - let padding = contentFrame.maxY - endFrame.minY - guard padding > 0 else { - self.bottomConstraint.constant = 0.0 - UIView.animate(withDuration: 0.33) { - self.view.layoutIfNeeded() - } - return - } - - self.bottomConstraint.constant = padding - UIView.animate(withDuration: 0.33) { - self.view.layoutIfNeeded() - } - }) - .store(in: &disposeBag) - } - - private func setupNavigation() { - navigationItem.rightBarButtonItem - = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.cancel, - target: self, - action: #selector(doneButtonDidClick)) - navigationItem.rightBarButtonItem?.tintColor = ThemeService.tintColor - - // fetch old mastodon user - let beReportedUser: MastodonUser? = { - guard let domain = context.authenticationService.activeMastodonAuthenticationBox.value?.domain else { - return nil - } - let request = MastodonUser.sortedFetchRequest - request.predicate = MastodonUser.predicate(domain: domain, id: viewModel.user.id) - request.fetchLimit = 1 - request.returnsObjectsAsFaults = false - do { - return try viewModel.statusFetchedResultsController.fetchedResultsController.managedObjectContext.fetch(request).first - } catch { - assertionFailure(error.localizedDescription) - return nil - } - }() - - navigationItem.titleView = titleView - if let user = beReportedUser { - do { - let mastodonContent = MastodonContent(content: user.displayNameWithFallback, emojis: user.emojis.asDictionary) - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - titleView.update(titleMetaContent: metaContent, subtitle: nil) - } catch { - let metaContent = PlaintextMetaContent(string: user.displayNameWithFallback) - titleView.update(titleMetaContent: metaContent, subtitle: nil) - } - } - - } - - private func switchToStep2Content() { - self.contentView.addSubview(self.textView) - self.textView.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - self.textView.topAnchor.constraint(equalTo: self.contentView.topAnchor), - self.textView.leadingAnchor.constraint( - equalTo: self.contentView.readableContentGuide.leadingAnchor, - constant: ReportView.horizontalMargin - ), - self.textView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor), - self.contentView.trailingAnchor.constraint( - equalTo: self.textView.trailingAnchor, - constant: ReportView.horizontalMargin - ), - ]) - self.textView.layoutIfNeeded() - - UIView.transition( - with: contentView, - duration: ReportViewController.kAnimationDuration, - options: UIView.AnimationOptions.transitionCrossDissolve) { - [weak self] in - guard let self = self else { return } - - self.contentView.addSubview(self.textView) - self.tableView.isHidden = true - } completion: { (_) in - } - } - - // Mark: - Actions - @objc func doneButtonDidClick() { - dismiss(animated: true, completion: nil) - } - - @objc func continueButtonDidClick() { - if viewModel.currentStep.value == .one { - step1Continue.send() - } else { - step2Continue.send() - } - } - - @objc func skipButtonDidClick() { - if viewModel.currentStep.value == .one { - step1Skip.send() - } else { - step2Skip.send() - } - } -} - -// MARK: - UITableViewDelegate -extension ReportViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { - return - } -// didToggleSelected.send(item) - } - - func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { - guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { - return - } -// didToggleSelected.send(item) - } -} - -// MARK: - UITableViewDataSourcePrefetching -extension ReportViewController: UITableViewDataSourcePrefetching { - func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { - viewModel.prefetchData(prefetchRowsAt: indexPaths) - } -} - -// MARK: - UITextViewDelegate -extension ReportViewController: UITextViewDelegate { - func textViewDidChange(_ textView: UITextView) { - self.comment.send(textView.text) - } -} diff --git a/Mastodon/Scene/Report/ReportViewModel+Data.swift b/Mastodon/Scene/Report/ReportViewModel+Data.swift deleted file mode 100644 index 1ba49f311..000000000 --- a/Mastodon/Scene/Report/ReportViewModel+Data.swift +++ /dev/null @@ -1,141 +0,0 @@ -// -// ReportViewModel+Data.swift -// Mastodon -// -// Created by ihugo on 2021/4/20. -// - -import Combine -import CoreData -import CoreDataStack -import Foundation -import MastodonSDK -import UIKit -import os.log - -extension ReportViewModel { - func requestRecentStatus( - domain: String, - accountId: String, - authorizationBox: MastodonAuthenticationBox - ) { - fatalError() -// context.apiService.userTimeline( -// domain: domain, -// accountID: accountId, -// excludeReblogs: true, -// authorizationBox: authorizationBox -// ) -// .receive(on: DispatchQueue.main) -// .sink { [weak self] completion in -// switch completion { -// case .failure(let error): -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch user timeline fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) -// guard let self = self else { return } -// guard let reportStatusId = self.status?.id else { return } -// var statusIDs = self.statusFetchedResultsController.statusIDs.value -// guard statusIDs.contains(reportStatusId) else { return } -// -// statusIDs.append(reportStatusId) -// self.statusFetchedResultsController.statusIDs.value = statusIDs -// case .finished: -// break -// } -// } receiveValue: { [weak self] response in -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) -// guard let self = self else { return } -// -// var statusIDs = response.value.map { $0.id } -// if let reportStatusId = self.status?.id, !statusIDs.contains(reportStatusId) { -// statusIDs.append(reportStatusId) -// } -// -// self.statusFetchedResultsController.statusIDs.value = statusIDs -// } -// .store(in: &disposeBag) - } - - func fetchStatus() { - fatalError() - let managedObjectContext = self.statusFetchedResultsController.fetchedResultsController.managedObjectContext -// statusFetchedResultsController.objectIDs.eraseToAnyPublisher() -// .receive(on: DispatchQueue.main) -// .debounce(for: .milliseconds(300), scheduler: DispatchQueue.main) -// .sink { [weak self] objectIDs in -// guard let self = self else { return } -// guard let diffableDataSource = self.diffableDataSource else { return } -// -// var items: [Item] = [] -// var snapshot = NSDiffableDataSourceSnapshot() -// snapshot.appendSections([.main]) -// -// defer { -// // not animate when empty items fix loader first appear layout issue -// diffableDataSource.apply(snapshot, animatingDifferences: !items.isEmpty) -// } -// -// var oldSnapshotAttributeDict: [NSManagedObjectID : Item.ReportStatusAttribute] = [:] -// let oldSnapshot = diffableDataSource.snapshot() -// for item in oldSnapshot.itemIdentifiers { -// guard case let .reportStatus(objectID, attribute) = item else { continue } -// oldSnapshotAttributeDict[objectID] = attribute -// } -// -// for objectID in objectIDs { -// let attribute = oldSnapshotAttributeDict[objectID] ?? Item.ReportStatusAttribute() -// let item = Item.reportStatus(objectID: objectID, attribute: attribute) -// items.append(item) -// -// guard let status = managedObjectContext.object(with: objectID) as? Status else { -// continue -// } -// if status.id == self.status?.id { -// attribute.isSelected = true -// self.append(statusID: status.id) -// self.continueEnableSubject.send(true) -// } -// } -// snapshot.appendItems(items, toSection: .main) -// } -// .store(in: &disposeBag) - } - - func prefetchData(prefetchRowsAt indexPaths: [IndexPath]) { - fatalError() -// guard let diffableDataSource = diffableDataSource else { return } -// -// // prefetch reply status -// guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } -// let domain = activeMastodonAuthenticationBox.domain -// -// var statusObjectIDs: [NSManagedObjectID] = [] -// for indexPath in indexPaths { -// let item = diffableDataSource.itemIdentifier(for: indexPath) -// switch item { -// case .reportStatus(let objectID, _): -// statusObjectIDs.append(objectID) -// default: -// continue -// } -// } -// -// let backgroundManagedObjectContext = context.backgroundManagedObjectContext -// backgroundManagedObjectContext.perform { [weak self] in -// guard let self = self else { return } -// for objectID in statusObjectIDs { -// let status = backgroundManagedObjectContext.object(with: objectID) as! Status -// guard let replyToID = status.inReplyToID, status.replyTo == nil else { -// // skip -// continue -// } -// self.context.statusPrefetchingService.prefetchReplyTo( -// domain: domain, -// statusObjectID: status.objectID, -// statusID: status.id, -// replyToStatusID: replyToID, -// authorizationBox: activeMastodonAuthenticationBox -// ) -// } -// } - } -} diff --git a/Mastodon/Scene/Report/ReportViewModel+Diffable.swift b/Mastodon/Scene/Report/ReportViewModel+Diffable.swift deleted file mode 100644 index 4133f5fbe..000000000 --- a/Mastodon/Scene/Report/ReportViewModel+Diffable.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// ReportViewModel+Diffable.swift -// Mastodon -// -// Created by ihugo on 2021/4/19. -// - -import UIKit -import Combine -import CoreData -import CoreDataStack - -extension ReportViewModel { - func setupDiffableDataSource( - for tableView: UITableView, - dependency: ReportViewController - ) { - fatalError() -// let timestampUpdatePublisher = Timer.publish(every: 1.0, on: .main, in: .common) -// .autoconnect() -// .share() -// .eraseToAnyPublisher() -// -// diffableDataSource = ReportSection.tableViewDiffableDataSource( -// for: tableView, -// dependency: dependency, -// managedObjectContext: statusFetchedResultsController.fetchedResultsController.managedObjectContext, -// timestampUpdatePublisher: timestampUpdatePublisher -// ) -// -// // set empty section to make update animation top-to-bottom style -// var snapshot = NSDiffableDataSourceSnapshot() -// snapshot.appendSections([.main]) -// diffableDataSource?.apply(snapshot) - } -} diff --git a/Mastodon/Scene/Report/ReportViewModel.swift b/Mastodon/Scene/Report/ReportViewModel.swift deleted file mode 100644 index 90ff106ff..000000000 --- a/Mastodon/Scene/Report/ReportViewModel.swift +++ /dev/null @@ -1,215 +0,0 @@ -// -// ReportViewModel.swift -// Mastodon -// -// Created by ihugo on 2021/4/19. -// - -import Combine -import CoreData -import CoreDataStack -import Foundation -import MastodonSDK -import UIKit -import os.log - -class ReportViewModel: NSObject { - typealias FileReportQuery = Mastodon.API.Reports.FileReportQuery - - enum Step: Int { - case one - case two - } - - // confirm set only once - weak var context: AppContext! { willSet { precondition(context == nil) } } - var user: MastodonUser - var status: Status? - - var statusIDs = [Mastodon.Entity.Status.ID]() - var comment: String? - - var reportQuery: FileReportQuery - var disposeBag = Set() - let currentStep = CurrentValueSubject(.one) - let statusFetchedResultsController: StatusFetchedResultsController - var diffableDataSource: UITableViewDiffableDataSource? - let continueEnableSubject = CurrentValueSubject(false) - let sendEnableSubject = CurrentValueSubject(false) - - struct Input { -// let didToggleSelected: AnyPublisher - let comment: AnyPublisher - let step1Continue: AnyPublisher - let step1Skip: AnyPublisher - let step2Continue: AnyPublisher - let step2Skip: AnyPublisher - let cancel: AnyPublisher - } - - struct Output { - let currentStep: AnyPublisher - let continueEnableSubject: AnyPublisher - let sendEnableSubject: AnyPublisher - let reportResult: AnyPublisher<(Bool, Error?), Never> - } - - init(context: AppContext, - domain: String, - user: MastodonUser, - status: Status? - ) { - self.context = context - self.user = user - self.status = status - self.statusFetchedResultsController = StatusFetchedResultsController( - managedObjectContext: context.managedObjectContext, - domain: domain, - additionalTweetPredicate: Status.notDeleted() - ) - - self.reportQuery = FileReportQuery( - accountID: user.id, - statusIDs: [], - comment: nil, - forward: nil - ) - super.init() - } - - func transform(input: Input?) -> Output? { - guard let input = input else { return nil } - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { - return nil - } - let domain = activeMastodonAuthenticationBox.domain - - // data binding - bindData(input: input) - - // step1 and step2 binding - bindForStep1(input: input) - let reportResult = bindForStep2( - input: input, - domain: domain, - activeMastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - - requestRecentStatus( - domain: domain, - accountId: self.user.id, - authorizationBox: activeMastodonAuthenticationBox - ) - - fetchStatus() - - return Output( - currentStep: currentStep.eraseToAnyPublisher(), - continueEnableSubject: continueEnableSubject.eraseToAnyPublisher(), - sendEnableSubject: sendEnableSubject.eraseToAnyPublisher(), - reportResult: reportResult - ) - } - - // MARK: - Private methods - func bindData(input: Input) { -// input.didToggleSelected.sink { [weak self] (item) in -// guard let self = self else { return } -// guard case let .reportStatus(objectID, attribute) = item else { return } -// let managedObjectContext = self.statusFetchedResultsController.fetchedResultsController.managedObjectContext -// guard let status = managedObjectContext.object(with: objectID) as? Status else { -// return -// } -// -// attribute.isSelected = !attribute.isSelected -// if attribute.isSelected { -// self.append(statusID: status.id) -// } else { -// self.remove(statusID: status.id) -// } -// -// let continueEnable = self.statusIDs.count > 0 -// self.continueEnableSubject.send(continueEnable) -// } -// .store(in: &disposeBag) - - input.comment.sink { [weak self] (comment) in - guard let self = self else { return } - - self.comment = comment - - let sendEnable = (comment?.length ?? 0) > 0 - self.sendEnableSubject.send(sendEnable) - } - .store(in: &disposeBag) - } - - func bindForStep1(input: Input) { - let skip = input.step1Skip.map { [weak self] value -> Void in - guard let self = self else { return value } - self.reportQuery.statusIDs?.removeAll() - return value - } - - let step1Continue = input.step1Continue.map { [weak self] value -> Void in - guard let self = self else { return value } - self.reportQuery.statusIDs = self.statusIDs - return value - } - - Publishers.Merge(skip, step1Continue) - .sink { [weak self] _ in - self?.currentStep.value = .two - self?.sendEnableSubject.send(false) - } - .store(in: &disposeBag) - } - - func bindForStep2(input: Input, domain: String, activeMastodonAuthenticationBox: MastodonAuthenticationBox) -> AnyPublisher<(Bool, Error?), Never> { - let skip = input.step2Skip.map { [weak self] value -> Void in - guard let self = self else { return value } - self.reportQuery.comment = nil - return value - } - - let step2Continue = input.step2Continue.map { [weak self] value -> Void in - guard let self = self else { return value } - self.reportQuery.comment = self.comment - return value - } - - return Publishers.Merge(skip, step2Continue) - .flatMap { [weak self] (_) -> AnyPublisher<(Bool, Error?), Never> in - guard let self = self else { - return Empty(completeImmediately: true).eraseToAnyPublisher() - } - - return self.context.apiService.report( - domain: domain, - query: self.reportQuery, - mastodonAuthenticationBox: activeMastodonAuthenticationBox - ) - .map({ (content) -> (Bool, Error?) in - return (true, nil) - }) - .eraseToAnyPublisher() - .tryCatch({ (error) -> AnyPublisher<(Bool, Error?), Never> in - return Just((false, error)).eraseToAnyPublisher() - }) - // to covert to AnyPublisher<(Bool, Error?), Never> - .replaceError(with: (false, nil)) - .eraseToAnyPublisher() - } - .eraseToAnyPublisher() - } - - func append(statusID: Mastodon.Entity.Status.ID) { - guard self.statusIDs.contains(statusID) != true else { return } - self.statusIDs.append(statusID) - } - - func remove(statusID: String) { - guard let index = self.statusIDs.firstIndex(of: statusID) else { return } - self.statusIDs.remove(at: index) - } -} diff --git a/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift b/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift deleted file mode 100644 index aaba5c83f..000000000 --- a/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift +++ /dev/null @@ -1,221 +0,0 @@ -// -// ReportedStatusTableViewCell.swift -// Mastodon -// -// Created by ihugo on 2021/4/20. -// - -import os.log -import UIKit -import AVKit -import Combine -import CoreData -import CoreDataStack -import Meta -import MetaTextKit -import MastodonAsset -import MastodonLocalization - -final class ReportedStatusTableViewCell: UITableViewCell { - - static let bottomPaddingHeight: CGFloat = 10 - - weak var dependency: ReportViewController? - private var _disposeBag = Set() - var disposeBag = Set() - var observations = Set() - - let statusView = StatusView() - let separatorLine = UIView.separatorLine - - let checkbox: UIImageView = { - let imageView = UIImageView() - imageView.preferredSymbolConfiguration = UIImage.SymbolConfiguration(textStyle: .body) - imageView.tintColor = Asset.Colors.Label.secondary.color - imageView.contentMode = .scaleAspectFill - imageView.translatesAutoresizingMaskIntoConstraints = false - return imageView - }() - - var separatorLineToEdgeLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToEdgeTrailingLayoutConstraint: NSLayoutConstraint! - - var separatorLineToMarginLeadingLayoutConstraint: NSLayoutConstraint! - var separatorLineToMarginTrailingLayoutConstraint: NSLayoutConstraint! - - // not support filter - var isFiltered: Bool = false - - override func prepareForReuse() { - super.prepareForReuse() -// statusView.updateContentWarningDisplay(isHidden: true, animated: false) -// statusView.statusMosaicImageViewContainer.contentWarningOverlayView.isUserInteractionEnabled = true -// statusView.pollTableView.dataSource = nil -// statusView.playerContainerView.reset() -// statusView.playerContainerView.contentWarningOverlayView.isUserInteractionEnabled = true -// statusView.playerContainerView.isHidden = true - disposeBag.removeAll() - observations.removeAll() - } - - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - - override func setHighlighted(_ highlighted: Bool, animated: Bool) { - super.setHighlighted(highlighted, animated: animated) - if highlighted { - checkbox.image = UIImage(systemName: "checkmark.circle.fill") - checkbox.tintColor = Asset.Colors.brandBlue.color - } else if !isSelected { - checkbox.image = UIImage(systemName: "circle") - checkbox.tintColor = Asset.Colors.Label.secondary.color - } - } - - override func setSelected(_ selected: Bool, animated: Bool) { - super.setSelected(selected, animated: animated) - - if isSelected { - checkbox.image = UIImage(systemName: "checkmark.circle.fill") - } else { - checkbox.image = UIImage(systemName: "circle") - } - checkbox.tintColor = Asset.Colors.Label.secondary.color - } -} - -extension ReportedStatusTableViewCell { - - private func _init() { - backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemGroupedBackgroundColor - ThemeService.shared.currentTheme - .receive(on: RunLoop.main) - .sink { [weak self] theme in - guard let self = self else { return } - self.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemGroupedBackgroundColor - } - .store(in: &_disposeBag) - - checkbox.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(checkbox) - NSLayoutConstraint.activate([ - checkbox.widthAnchor.constraint(equalToConstant: 23), - checkbox.heightAnchor.constraint(equalToConstant: 22), - checkbox.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor, constant: 12), - checkbox.centerYAnchor.constraint(equalTo: contentView.centerYAnchor), - ]) - - statusView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(statusView) - NSLayoutConstraint.activate([ - statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 20), - statusView.leadingAnchor.constraint(equalTo: checkbox.trailingAnchor, constant: 20), - contentView.readableContentGuide.trailingAnchor.constraint(equalTo: statusView.trailingAnchor), - contentView.bottomAnchor.constraint(equalTo: statusView.bottomAnchor, constant: 20), - ]) - - separatorLine.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(separatorLine) - separatorLineToEdgeLeadingLayoutConstraint = separatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) - separatorLineToEdgeTrailingLayoutConstraint = separatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor) - separatorLineToMarginLeadingLayoutConstraint = separatorLine.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor) - separatorLineToMarginTrailingLayoutConstraint = separatorLine.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor) - NSLayoutConstraint.activate([ - separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)), - ]) - resetSeparatorLineLayout() - - selectionStyle = .none -// statusView.delegate = self -// statusView.statusMosaicImageViewContainer.delegate = self -// statusView.actionToolbarContainer.isHidden = true - } - - override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - resetSeparatorLineLayout() - } -} - -extension ReportedStatusTableViewCell { - private func resetSeparatorLineLayout() { - separatorLineToEdgeLeadingLayoutConstraint.isActive = false - separatorLineToEdgeTrailingLayoutConstraint.isActive = false - separatorLineToMarginLeadingLayoutConstraint.isActive = false - separatorLineToMarginTrailingLayoutConstraint.isActive = false - - if traitCollection.userInterfaceIdiom == .phone { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeLeadingLayoutConstraint, - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - if traitCollection.horizontalSizeClass == .compact { - // to edge - NSLayoutConstraint.activate([ - separatorLineToEdgeLeadingLayoutConstraint, - separatorLineToEdgeTrailingLayoutConstraint, - ]) - } else { - // to margin - NSLayoutConstraint.activate([ - separatorLineToMarginLeadingLayoutConstraint, - separatorLineToMarginTrailingLayoutConstraint, - ]) - } - } - } -} - -extension ReportedStatusTableViewCell: MosaicImageViewContainerDelegate { - func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, didTapImageView imageView: UIImageView, atIndex index: Int) { - - } - - func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { - fatalError() -// guard let dependency = self.dependency else { return } -// StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) - } -} - -//extension ReportedStatusTableViewCell: StatusViewDelegate { -// -// func statusView(_ statusView: StatusView, headerInfoLabelDidPressed label: UILabel) { -// } -// -// func statusView(_ statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) { -// } -// -// func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { -// guard let dependency = self.dependency else { return } -// StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) -// } -// -// func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { -// guard let dependency = self.dependency else { return } -// StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) -// } -// -// func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { -// guard let dependency = self.dependency else { return } -// StatusProviderFacade.responseToStatusContentWarningRevealAction(dependency: dependency, cell: self) -// } -// -// func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) { -// } -// -// func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { -// } -// -//} diff --git a/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift b/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift new file mode 100644 index 000000000..b982ee5ac --- /dev/null +++ b/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift @@ -0,0 +1,83 @@ +// +// ReportCommentTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-2-7. +// + +import UIKit +import Combine +import MastodonUI +import MastodonLocalization +import UITextView_Placeholder + +final class ReportCommentTableViewCell: UITableViewCell { + + var disposeBag = Set() + + let commentTextViewShadowBackgroundContainer: ShadowBackgroundContainer = { + let shadowBackgroundContainer = ShadowBackgroundContainer() + return shadowBackgroundContainer + }() + + let commentTextView: UITextView = { + let textView = UITextView() + let font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) + textView.font = font + textView.attributedPlaceholder = NSAttributedString( + string: L10n.Scene.Report.textPlaceholder, + attributes: [ + .font: font + ] + ) + textView.textContainerInset = UIEdgeInsets(top: 16, left: 16, bottom: 16, right: 16) + textView.isScrollEnabled = false + textView.layer.masksToBounds = true + textView.layer.cornerRadius = 10 + return textView + }() + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ReportCommentTableViewCell { + + private func _init() { + selectionStyle = .none + backgroundColor = .clear + + commentTextViewShadowBackgroundContainer.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(commentTextViewShadowBackgroundContainer) + NSLayoutConstraint.activate([ + commentTextViewShadowBackgroundContainer.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 24), + commentTextViewShadowBackgroundContainer.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), + commentTextViewShadowBackgroundContainer.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: commentTextViewShadowBackgroundContainer.bottomAnchor, constant: 24), + ]) + + commentTextView.translatesAutoresizingMaskIntoConstraints = false + commentTextViewShadowBackgroundContainer.addSubview(commentTextView) + NSLayoutConstraint.activate([ + commentTextView.topAnchor.constraint(equalTo: commentTextViewShadowBackgroundContainer.topAnchor), + commentTextView.leadingAnchor.constraint(equalTo: commentTextViewShadowBackgroundContainer.leadingAnchor), + commentTextView.trailingAnchor.constraint(equalTo: commentTextViewShadowBackgroundContainer.trailingAnchor), + commentTextView.bottomAnchor.constraint(equalTo: commentTextViewShadowBackgroundContainer.bottomAnchor), + commentTextView.heightAnchor.constraint(greaterThanOrEqualToConstant: 100).priority(.defaultHigh), + ]) + } +} diff --git a/Mastodon/Scene/Report/Share/Cell/ReportHeadlineTableViewCell.swift b/Mastodon/Scene/Report/Share/Cell/ReportHeadlineTableViewCell.swift new file mode 100644 index 000000000..b066fc101 --- /dev/null +++ b/Mastodon/Scene/Report/Share/Cell/ReportHeadlineTableViewCell.swift @@ -0,0 +1,69 @@ +// +// ReportHeadlineTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-2-7. +// + +import UIKit +import MastodonAsset +import MastodonLocalization + +final class ReportHeadlineTableViewCell: UITableViewCell { + + let primaryLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 28, weight: .bold)) + label.textColor = Asset.Colors.Label.primary.color + label.text = L10n.Scene.Report.content1 + label.adjustsFontForContentSizeCategory = true + label.numberOfLines = 0 + return label + }() + + let secondaryLabel: UILabel = { + let label = UILabel() + label.font = UIFontMetrics(forTextStyle: .largeTitle).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) + label.textColor = Asset.Colors.Label.secondary.color + label.text = L10n.Scene.Report.step1 + label.adjustsFontForContentSizeCategory = true + label.numberOfLines = 0 + return label + }() + + + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } +} + +extension ReportHeadlineTableViewCell { + + private func _init() { + selectionStyle = .none + backgroundColor = .clear + + let container = UIStackView() + container.axis = .vertical + container.spacing = 16 + container.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(container) + NSLayoutConstraint.activate([ + container.topAnchor.constraint(equalTo: contentView.topAnchor), + container.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + container.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: container.bottomAnchor, constant: 11), + ]) + + container.addArrangedSubview(secondaryLabel) // put secondary label before primary + container.addArrangedSubview(primaryLabel) + } + +} diff --git a/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift b/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift new file mode 100644 index 000000000..7c0d84f07 --- /dev/null +++ b/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift @@ -0,0 +1,145 @@ +// +// ReportResultActionTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-2-8. +// + +import UIKit +import Combine +import MastodonAsset +import MastodonUI +import MastodonLocalization + +final class ReportResultActionTableViewCell: UITableViewCell { + + var disposeBag = Set() + + let containerView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .vertical + return stackView + }() + + let avatarImageView: AvatarImageView = { + let imageView = AvatarImageView() + imageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 27))) + return imageView + }() + + let reportBannerShadowContainer = ShadowBackgroundContainer() + let reportBannerLabel: UILabel = { + let label = UILabel() + let padding = Array(repeating: " ", count: 2).joined() + label.text = padding + "Reported" + padding // TODO: i18n + label.textColor = Asset.Scene.Report.reportBanner.color + label.font = FontFamily.Staatliches.regular.font(size: 49) + label.backgroundColor = Asset.Scene.Report.background.color + label.layer.borderColor = Asset.Scene.Report.reportBanner.color.cgColor + label.layer.borderWidth = 6 + label.layer.masksToBounds = true + label.layer.cornerRadius = 12 + return label + }() + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ReportResultActionTableViewCell { + + private func _init() { + selectionStyle = .none + backgroundColor = .clear + + containerView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(containerView) + NSLayoutConstraint.activate([ + containerView.topAnchor.constraint(equalTo: contentView.topAnchor), + containerView.leadingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.leadingAnchor), + containerView.trailingAnchor.constraint(equalTo: contentView.layoutMarginsGuide.trailingAnchor), + containerView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + ]) + + let avatarContainer = UIStackView() + avatarContainer.axis = .horizontal + containerView.addArrangedSubview(avatarContainer) + + let avatarLeadingPaddingView = UIView() + let avatarTrailingPaddingView = UIView() + avatarLeadingPaddingView.translatesAutoresizingMaskIntoConstraints = false + avatarContainer.addArrangedSubview(avatarLeadingPaddingView) + avatarImageView.translatesAutoresizingMaskIntoConstraints = false + avatarContainer.addArrangedSubview(avatarImageView) + avatarTrailingPaddingView.translatesAutoresizingMaskIntoConstraints = false + avatarContainer.addArrangedSubview(avatarTrailingPaddingView) + NSLayoutConstraint.activate([ + avatarImageView.widthAnchor.constraint(equalToConstant: 106).priority(.required - 1), + avatarImageView.heightAnchor.constraint(equalToConstant: 106).priority(.required - 1), + avatarLeadingPaddingView.widthAnchor.constraint(equalTo: avatarTrailingPaddingView.widthAnchor).priority(.defaultHigh), + ]) + + reportBannerShadowContainer.translatesAutoresizingMaskIntoConstraints = false + avatarContainer.addSubview(reportBannerShadowContainer) + NSLayoutConstraint.activate([ + reportBannerShadowContainer.centerXAnchor.constraint(equalTo: avatarImageView.centerXAnchor), + reportBannerShadowContainer.centerYAnchor.constraint(equalTo: avatarImageView.centerYAnchor), + ]) + reportBannerShadowContainer.transform = CGAffineTransform(rotationAngle: -(.pi / 180 * 5)) + + reportBannerLabel.translatesAutoresizingMaskIntoConstraints = false + reportBannerShadowContainer.addSubview(reportBannerLabel) + NSLayoutConstraint.activate([ + reportBannerLabel.topAnchor.constraint(equalTo: reportBannerShadowContainer.topAnchor), + reportBannerLabel.leadingAnchor.constraint(equalTo: reportBannerShadowContainer.leadingAnchor), + reportBannerLabel.trailingAnchor.constraint(equalTo: reportBannerShadowContainer.trailingAnchor), + reportBannerLabel.bottomAnchor.constraint(equalTo: reportBannerShadowContainer.bottomAnchor), + ]) + + } + + override func layoutSubviews() { + super.layoutSubviews() + + reportBannerShadowContainer.layer.setupShadow( + color: .black, + alpha: 0.25, + x: 1, + y: 0.64, + blur: 0.64, + spread: 0, + roundedRect: reportBannerShadowContainer.bounds, + byRoundingCorners: .allCorners, + cornerRadii: CGSize(width: 12, height: 12) + ) + } + +} + +#if DEBUG +import SwiftUI +struct ReportResultActionTableViewCell_Preview: PreviewProvider { + static var previews: some View { + UIViewPreview(width: 375) { + let cell = ReportResultActionTableViewCell() + cell.avatarImageView.configure(configuration: .init(image: .placeholder(color: .blue))) + return cell + } + .previewLayout(.fixed(width: 375, height: 106)) + } +} +#endif diff --git a/Mastodon/Scene/Report/Share/Cell/ReportStatusTableViewCell+ViewModel.swift b/Mastodon/Scene/Report/Share/Cell/ReportStatusTableViewCell+ViewModel.swift new file mode 100644 index 000000000..9ce759a2a --- /dev/null +++ b/Mastodon/Scene/Report/Share/Cell/ReportStatusTableViewCell+ViewModel.swift @@ -0,0 +1,49 @@ +// +// ReportStatusTableViewCell+ViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-2-7. +// + +import UIKit +import CoreDataStack + +extension ReportStatusTableViewCell { + final class ViewModel { + let value: Status + + init(value: Status) { + self.value = value + } + } +} + +extension ReportStatusTableViewCell { + + func configure( + tableView: UITableView, + viewModel: ViewModel + ) { + if statusView.frame == .zero { + // set status view width + statusView.frame.size.width = tableView.frame.width - ReportStatusTableViewCell.checkboxLeadingMargin - ReportStatusTableViewCell.checkboxSize.width - ReportStatusTableViewCell.statusViewLeadingSpacing + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") + } + + statusView.configure(status: viewModel.value) + + statusView.viewModel.$isContentReveal + .removeDuplicates() + .dropFirst() + .receive(on: DispatchQueue.main) + .sink { [weak tableView, weak self] isContentReveal in + guard let tableView = tableView else { return } + guard let _ = self else { return } + + tableView.beginUpdates() + tableView.endUpdates() + } + .store(in: &disposeBag) + } + +} diff --git a/Mastodon/Scene/Report/Share/Cell/ReportStatusTableViewCell.swift b/Mastodon/Scene/Report/Share/Cell/ReportStatusTableViewCell.swift new file mode 100644 index 000000000..b134db302 --- /dev/null +++ b/Mastodon/Scene/Report/Share/Cell/ReportStatusTableViewCell.swift @@ -0,0 +1,102 @@ +// +// ReportStatusTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-2-7. +// + +import os.log +import UIKit +import Combine +import MastodonUI +import MastodonAsset + +final class ReportStatusTableViewCell: UITableViewCell { + + static let checkboxLeadingMargin: CGFloat = 16 + static let checkboxSize = CGSize(width: 32, height: 32) + static let statusViewLeadingSpacing: CGFloat = 22 + + var disposeBag = Set() + + let logger = Logger(subsystem: "ReportStatusTableViewCell", category: "View") + + let checkbox: UIImageView = { + let imageView = UIImageView() + imageView.preferredSymbolConfiguration = UIImage.SymbolConfiguration(textStyle: .body) + imageView.tintColor = Asset.Colors.Label.secondary.color + imageView.contentMode = .scaleAspectFill + imageView.translatesAutoresizingMaskIntoConstraints = false + return imageView + }() + + let statusView = StatusView() + + let separatorLine = UIView.separatorLine + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + statusView.prepareForReuse() + } + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension ReportStatusTableViewCell { + + private func _init() { + selectionStyle = .none + backgroundColor = .clear + + checkbox.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(checkbox) + NSLayoutConstraint.activate([ + checkbox.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: ReportStatusTableViewCell.checkboxLeadingMargin), + checkbox.centerYAnchor.constraint(equalTo: contentView.centerYAnchor), + checkbox.heightAnchor.constraint(equalToConstant: ReportStatusTableViewCell.checkboxSize.width).priority(.required - 1), + checkbox.widthAnchor.constraint(equalToConstant: ReportStatusTableViewCell.checkboxSize.height).priority(.required - 1), + ]) + + statusView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(statusView) + NSLayoutConstraint.activate([ + statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 24), + statusView.leadingAnchor.constraint(equalTo: checkbox.trailingAnchor, constant: ReportStatusTableViewCell.statusViewLeadingSpacing), + statusView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + contentView.bottomAnchor.constraint(equalTo: statusView.bottomAnchor, constant: 24), + ]) + statusView.setup(style: .report) + + separatorLine.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(separatorLine) + NSLayoutConstraint.activate([ + separatorLine.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), + separatorLine.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + separatorLine.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.required - 1), + ]) + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + if selected { + checkbox.image = UIImage(systemName: "checkmark.circle.fill") + checkbox.tintColor = Asset.Colors.Label.primary.color + } else { + checkbox.image = UIImage(systemName: "circle") + checkbox.tintColor = Asset.Colors.Label.secondary.color + } + } + +} diff --git a/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift b/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift new file mode 100644 index 000000000..7bdaba645 --- /dev/null +++ b/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift @@ -0,0 +1,69 @@ +// +// ReportViewControllerAppearance.swift +// Mastodon +// +// Created by MainasuK on 2022-2-7. +// + +import UIKit +import MastodonAsset +import MastodonLocalization + +protocol ReportViewControllerAppearance: UIViewController { + func setupAppearance() + func setupNavigationBarAppearance() +} + +extension ReportViewControllerAppearance { + + + func setupAppearance() { + + title = "Report" // TODO: i18n + view.backgroundColor = Asset.Scene.Report.background.color + + setupNavigationBarAppearance() + + let backItem = UIBarButtonItem( + title: L10n.Common.Controls.Actions.back, + style: .plain, + target: nil, + action: nil + ) + navigationItem.backBarButtonItem = backItem + } + + func setupNavigationBarAppearance() { + // use TransparentBackground so view push / dismiss will be more visual nature + // please add opaque background for status bar manually if needs + + let barAppearance = UINavigationBarAppearance() + barAppearance.configureWithTransparentBackground() + navigationItem.standardAppearance = barAppearance + navigationItem.compactAppearance = barAppearance + navigationItem.scrollEdgeAppearance = barAppearance + if #available(iOS 15.0, *) { + navigationItem.compactScrollEdgeAppearance = barAppearance + } else { + // Fallback on earlier versions + } + } + + func setupNavigationBarBackgroundView() { + let navigationBarBackgroundView: UIView = { + let view = UIView() + view.backgroundColor = Asset.Scene.Report.background.color + return view + }() + + navigationBarBackgroundView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(navigationBarBackgroundView) + NSLayoutConstraint.activate([ + navigationBarBackgroundView.topAnchor.constraint(equalTo: view.topAnchor), + navigationBarBackgroundView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + navigationBarBackgroundView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + navigationBarBackgroundView.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor), + ]) + } + +} diff --git a/Mastodon/Service/APIService/APIService+Report.swift b/Mastodon/Service/APIService/APIService+Report.swift index 531c72185..aa7393070 100644 --- a/Mastodon/Service/APIService/APIService+Report.swift +++ b/Mastodon/Service/APIService/APIService+Report.swift @@ -12,12 +12,17 @@ import Combine extension APIService { func report( - domain: String, query: Mastodon.API.Reports.FileReportQuery, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization - - return Mastodon.API.Reports.fileReport(session: session, domain: domain, query: query, authorization: authorization) + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content { + let response = try await Mastodon.API.Reports.fileReport( + session: session, + domain: authenticationBox.domain, + query: query, + authorization: authenticationBox.userAuthorization + ).singleOutput() + + return response } + } diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/Contents.json new file mode 100644 index 000000000..6e965652d --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/background.colorset/Contents.json new file mode 100644 index 000000000..4d55227b9 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.969", + "green" : "0.949", + "red" : "0.949" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.129", + "green" : "0.106", + "red" : "0.098" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/report.banner.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/report.banner.colorset/Contents.json new file mode 100644 index 000000000..2d639eeb5 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Report/report.banner.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x55", + "green" : "0x98", + "red" : "0x03" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Font/Staatliches-Regular.ttf b/MastodonSDK/Sources/MastodonAsset/Font/Staatliches-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5036a935664c3f63a9711cb0d3e9493f869e14d8 GIT binary patch literal 61400 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 Font { + guard let font = Font(font: self, size: size) else { + fatalError("Unable to initialize font '\(name)' (\(family))") + } + return font + } + + public func register() { + // swiftlint:disable:next conditional_returns_on_newline + guard let url = url else { return } + CTFontManagerRegisterFontsForURL(url as CFURL, .process, nil) + } + + fileprivate var url: URL? { + // swiftlint:disable:next implicit_return + return Bundle.module.url(forResource: path, withExtension: nil) + } +} + +public extension FontConvertible.Font { + convenience init?(font: FontConvertible, size: CGFloat) { + #if os(iOS) || os(tvOS) || os(watchOS) + if !UIFont.fontNames(forFamilyName: font.family).contains(font.name) { + font.register() + } + #elseif os(OSX) + if let url = font.url, CTFontManagerGetScopeForURL(url as CFURL) == .none { + font.register() + } + #endif + + self.init(name: font.name, size: size) + } +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index ea1d6deba..60079ce96 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -245,13 +245,6 @@ extension StatusView.ViewModel { statusView.dateLabel.configure(content: PlaintextMetaContent(string: text)) } .store(in: &disposeBag) - $isSensitive - .sink { isSensitive in - if !isSensitive { - statusView.setMenuButtonDisplay() - } - } - .store(in: &disposeBag) } private func bindContent(statusView: StatusView) { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index 26ca62490..fec2535da 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -222,7 +222,6 @@ public final class StatusView: UIView { } headerContainerView.isHidden = true - menuButton.isHidden = true contentWarningToggleButton.isHidden = true setSpoilerOverlayViewHidden(true) mediaContainerView.isHidden = true @@ -333,6 +332,7 @@ extension StatusView { public enum Style { case inline case plain + case report case notification case notificationQuote case composeStatusReplica @@ -346,6 +346,7 @@ extension StatusView.Style { switch self { case .inline: inline(statusView: statusView) case .plain: plain(statusView: statusView) + case .report: report(statusView: statusView) case .notification: notification(statusView: statusView) case .notificationQuote: notificationQuote(statusView: statusView) case .composeStatusReplica: composeStatusReplica(statusView: statusView) @@ -420,6 +421,7 @@ extension StatusView.Style { authorPrimaryMetaContainer.addArrangedSubview(UIView()) // menuButton authorPrimaryMetaContainer.addArrangedSubview(statusView.menuButton) + statusView.menuButton.setContentCompressionResistancePriority(.required - 1, for: .horizontal) // authorSecondaryMetaContainer: H - [ authorUsername | usernameTrialingDotLabel | dateLabel | (padding) ] let authorSecondaryMetaContainer = UIStackView() @@ -527,6 +529,14 @@ extension StatusView.Style { .store(in: &statusView._disposeBag) } + func report(statusView: StatusView) { + inline(statusView: statusView) // override the inline style + + statusView.menuButton.removeFromSuperview() + statusView.statusVisibilityView.removeFromSuperview() + statusView.actionToolbarContainer.removeFromSuperview() + } + func notification(statusView: StatusView) { inline(statusView: statusView) // override the inline style @@ -573,10 +583,6 @@ extension StatusView { headerContainerView.isHidden = false } - func setMenuButtonDisplay() { - menuButton.isHidden = false - } - func setContentWarningToggleButtonDisplay() { contentWarningToggleButton.isHidden = false } From 9051e5d1ec297573dcb60b3dec703e6205d93b5e Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 8 Feb 2022 18:17:17 +0800 Subject: [PATCH 147/374] feat: update setting scene UI --- Localization/app.json | 7 + Mastodon.xcodeproj/project.pbxproj | 8 +- .../Diffiable/Settings/SettingsItem.swift | 24 +-- .../Diffiable/Settings/SettingsSection.swift | 69 +++---- ...ngsAppearanceTableViewCell+ViewModel.swift | 74 ++++++++ .../SettingsAppearanceTableViewCell.swift | 148 +++++++++++++++ .../Cell/SettingsLinkTableViewCell.swift | 0 .../Cell/SettingsToggleTableViewCell.swift | 1 + .../Settings/SettingsViewController.swift | 81 ++++---- .../Scene/Settings/SettingsViewModel.swift | 20 +- .../Scene/Settings/View/AppearanceView.swift | 70 ++++--- .../SettingsAppearanceTableViewCell.swift | 173 ------------------ 12 files changed, 379 insertions(+), 296 deletions(-) create mode 100644 Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift create mode 100644 Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift rename Mastodon/Scene/Settings/{View => }/Cell/SettingsLinkTableViewCell.swift (100%) rename Mastodon/Scene/Settings/{View => }/Cell/SettingsToggleTableViewCell.swift (96%) delete mode 100644 Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift diff --git a/Localization/app.json b/Localization/app.json index e57192a47..78171749d 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -514,6 +514,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index e51739a2a..542636a41 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -446,6 +446,7 @@ DB98EB6527B216500082E365 /* ReportResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6427B216500082E365 /* ReportResultViewModel.swift */; }; DB98EB6727B216560082E365 /* ReportResultViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6627B216560082E365 /* ReportResultViewModel+Diffable.swift */; }; DB98EB6927B21A7C0082E365 /* ReportResultActionTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */; }; + DB98EB6B27B243470082E365 /* SettingsAppearanceTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98EB6A27B243470082E365 /* SettingsAppearanceTableViewCell+ViewModel.swift */; }; DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */; }; DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */ = {isa = PBXBuildFile; productRef = DB9A487D2603456B008B817C /* UITextView+Placeholder */; }; DB9A488A26034D40008B817C /* ComposeViewModel+PublishState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A488926034D40008B817C /* ComposeViewModel+PublishState.swift */; }; @@ -1187,6 +1188,7 @@ DB98EB6427B216500082E365 /* ReportResultViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultViewModel.swift; sourceTree = ""; }; DB98EB6627B216560082E365 /* ReportResultViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ReportResultViewModel+Diffable.swift"; sourceTree = ""; }; DB98EB6827B21A7C0082E365 /* ReportResultActionTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReportResultActionTableViewCell.swift; sourceTree = ""; }; + DB98EB6A27B243470082E365 /* SettingsAppearanceTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SettingsAppearanceTableViewCell+ViewModel.swift"; sourceTree = ""; }; DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AttachmentContainerView+EmptyStateView.swift"; sourceTree = ""; }; DB9A488926034D40008B817C /* ComposeViewModel+PublishState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ComposeViewModel+PublishState.swift"; sourceTree = ""; }; DB9A488F26035963008B817C /* APIService+Media.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Media.swift"; sourceTree = ""; }; @@ -1831,6 +1833,7 @@ 5B90C455262599800002E742 /* Settings */ = { isa = PBXGroup; children = ( + 5B90C458262599800002E742 /* Cell */, 5B90C457262599800002E742 /* View */, DB6D9F9626367249008423CD /* SettingsViewController.swift */, 5B90C456262599800002E742 /* SettingsViewModel.swift */, @@ -1841,7 +1844,6 @@ 5B90C457262599800002E742 /* View */ = { isa = PBXGroup; children = ( - 5B90C458262599800002E742 /* Cell */, 5B90C45C262599800002E742 /* SettingsSectionHeader.swift */, DB443CD32694627B00159B29 /* AppearanceView.swift */, ); @@ -1851,8 +1853,9 @@ 5B90C458262599800002E742 /* Cell */ = { isa = PBXGroup; children = ( - 5B90C459262599800002E742 /* SettingsToggleTableViewCell.swift */, 5B90C45A262599800002E742 /* SettingsAppearanceTableViewCell.swift */, + DB98EB6A27B243470082E365 /* SettingsAppearanceTableViewCell+ViewModel.swift */, + 5B90C459262599800002E742 /* SettingsToggleTableViewCell.swift */, 5B90C45B262599800002E742 /* SettingsLinkTableViewCell.swift */, ); path = Cell; @@ -4196,6 +4199,7 @@ DB6B7500272FF73800C70B6E /* UserTableViewCell.swift in Sources */, DB1D842E26552C4D000346B3 /* StatusTableViewControllerNavigateable.swift in Sources */, DB938F1F2624382F00E5B6C1 /* ThreadViewModel+Diffable.swift in Sources */, + DB98EB6B27B243470082E365 /* SettingsAppearanceTableViewCell+ViewModel.swift in Sources */, DB482A4B261340A7008AE74C /* APIService+UserTimeline.swift in Sources */, DB427DD825BAA00100D1B89D /* SceneDelegate.swift in Sources */, DB4932B926F31AD300EF46D4 /* BadgeButton.swift in Sources */, diff --git a/Mastodon/Diffiable/Settings/SettingsItem.swift b/Mastodon/Diffiable/Settings/SettingsItem.swift index 99c956e7a..50f0a7619 100644 --- a/Mastodon/Diffiable/Settings/SettingsItem.swift +++ b/Mastodon/Diffiable/Settings/SettingsItem.swift @@ -7,13 +7,14 @@ import UIKit import CoreData +import CoreDataStack import MastodonAsset import MastodonLocalization enum SettingsItem { - case appearance(settingObjectID: NSManagedObjectID) - case notification(settingObjectID: NSManagedObjectID, switchMode: NotificationSwitchMode) - case preference(settingObjectID: NSManagedObjectID, preferenceType: PreferenceType) + case appearance(record: ManagedObjectRecord) + case preference(settingRecord: ManagedObjectRecord, preferenceType: PreferenceType) + case notification(settingRecord: ManagedObjectRecord, switchMode: NotificationSwitchMode) case boringZone(item: Link) case spicyZone(item: Link) } @@ -21,9 +22,10 @@ enum SettingsItem { extension SettingsItem { enum AppearanceMode: String { - case automatic + case system + case reallyDark + case sortaDark case light - case dark } enum NotificationSwitchMode: CaseIterable, Hashable { @@ -43,14 +45,12 @@ extension SettingsItem { } enum PreferenceType: CaseIterable { - case darkMode case disableAvatarAnimation case disableEmojiAnimation case useDefaultBrowser var title: String { switch self { - case .darkMode: return L10n.Scene.Settings.Section.Preference.trueBlackDarkMode case .disableAvatarAnimation: return L10n.Scene.Settings.Section.Preference.disableAvatarAnimation case .disableEmojiAnimation: return L10n.Scene.Settings.Section.Preference.disableEmojiAnimation case .useDefaultBrowser: return L10n.Scene.Settings.Section.Preference.usingDefaultBrowser @@ -77,12 +77,12 @@ extension SettingsItem { } } - var textColor: UIColor { + var textColor: UIColor? { switch self { - case .accountSettings: return Asset.Colors.brandBlue.color - case .github: return Asset.Colors.brandBlue.color - case .termsOfService: return Asset.Colors.brandBlue.color - case .privacyPolicy: return Asset.Colors.brandBlue.color + case .accountSettings: return nil // tintColor + case .github: return nil + case .termsOfService: return nil + case .privacyPolicy: return nil case .clearMediaCache: return .systemRed case .signOut: return .systemRed } diff --git a/Mastodon/Diffiable/Settings/SettingsSection.swift b/Mastodon/Diffiable/Settings/SettingsSection.swift index ab0ec4e88..cc03ae055 100644 --- a/Mastodon/Diffiable/Settings/SettingsSection.swift +++ b/Mastodon/Diffiable/Settings/SettingsSection.swift @@ -13,16 +13,16 @@ import MastodonLocalization enum SettingsSection: Hashable { case appearance - case notifications case preference + case notifications case boringZone case spicyZone var title: String { switch self { - case .appearance: return L10n.Scene.Settings.Section.Appearance.title + case .appearance: return "Look and Feel" // TODO: i18n + case .preference: return "" case .notifications: return L10n.Scene.Settings.Section.Notifications.title - case .preference: return L10n.Scene.Settings.Section.Preference.title case .boringZone: return L10n.Scene.Settings.Section.BoringZone.title case .spicyZone: return L10n.Scene.Settings.Section.SpicyZone.title } @@ -41,25 +41,38 @@ extension SettingsSection { weak settingsToggleCellDelegate ] tableView, indexPath, item -> UITableViewCell? in switch item { - case .appearance(let objectID): + case .appearance(let record): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SettingsAppearanceTableViewCell.self), for: indexPath) as! SettingsAppearanceTableViewCell - UserDefaults.shared.observe(\.customUserInterfaceStyle, options: [.initial, .new]) { [weak cell] defaults, _ in - guard let cell = cell else { return } - switch defaults.customUserInterfaceStyle { - case .unspecified: cell.update(with: .automatic) - case .dark: cell.update(with: .dark) - case .light: cell.update(with: .light) - @unknown default: - assertionFailure() - } + managedObjectContext.performAndWait { + guard let setting = record.object(in: managedObjectContext) else { return } + cell.configure(setting: setting) } - .store(in: &cell.observations) cell.delegate = settingsAppearanceTableViewCellDelegate return cell - case .notification(let objectID, let switchMode): + case .preference(let record, _): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SettingsToggleTableViewCell.self), for: indexPath) as! SettingsToggleTableViewCell + cell.delegate = settingsToggleCellDelegate + managedObjectContext.performAndWait { + guard let setting = record.object(in: managedObjectContext) else { return } + SettingsSection.configureSettingToggle(cell: cell, item: item, setting: setting) + + ManagedObjectObserver.observe(object: setting) + .receive(on: DispatchQueue.main) + .sink(receiveCompletion: { _ in + // do nothing + }, receiveValue: { [weak cell] change in + guard let cell = cell else { return } + guard case .update(let object) = change.changeType, + let setting = object as? Setting else { return } + SettingsSection.configureSettingToggle(cell: cell, item: item, setting: setting) + }) + .store(in: &cell.disposeBag) + } + return cell + case .notification(let record, let switchMode): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SettingsToggleTableViewCell.self), for: indexPath) as! SettingsToggleTableViewCell managedObjectContext.performAndWait { - let setting = managedObjectContext.object(with: objectID) as! Setting + guard let setting = record.object(in: managedObjectContext) else { return } if let subscription = setting.activeSubscription { SettingsSection.configureSettingToggle(cell: cell, switchMode: switchMode, subscription: subscription) } @@ -77,32 +90,12 @@ extension SettingsSection { } cell.delegate = settingsToggleCellDelegate return cell - case .preference(let objectID, _): - let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SettingsToggleTableViewCell.self), for: indexPath) as! SettingsToggleTableViewCell - cell.delegate = settingsToggleCellDelegate - managedObjectContext.performAndWait { - let setting = managedObjectContext.object(with: objectID) as! Setting - SettingsSection.configureSettingToggle(cell: cell, item: item, setting: setting) - - ManagedObjectObserver.observe(object: setting) - .receive(on: DispatchQueue.main) - .sink(receiveCompletion: { _ in - // do nothing - }, receiveValue: { [weak cell] change in - guard let cell = cell else { return } - guard case .update(let object) = change.changeType, - let setting = object as? Setting else { return } - SettingsSection.configureSettingToggle(cell: cell, item: item, setting: setting) - }) - .store(in: &cell.disposeBag) - } - return cell case .boringZone(let item), .spicyZone(let item): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SettingsLinkTableViewCell.self), for: indexPath) as! SettingsLinkTableViewCell cell.update(with: item) return cell - } + } // end switch } } } @@ -119,8 +112,6 @@ extension SettingsSection { cell.textLabel?.text = preferenceType.title switch preferenceType { - case .darkMode: - cell.switchButton.isOn = setting.preferredTrueBlackDarkMode case .disableAvatarAnimation: cell.switchButton.isOn = setting.preferredStaticAvatar case .disableEmojiAnimation: diff --git a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift new file mode 100644 index 000000000..ea589da96 --- /dev/null +++ b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift @@ -0,0 +1,74 @@ +// +// SettingsAppearanceTableViewCell+ViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-2-8. +// + +import UIKit +import Combine +import CoreDataStack + +extension SettingsAppearanceTableViewCell { + final class ViewModel: ObservableObject { + var disposeBag = Set() + private var observations = Set() + + // input + @Published public var customUserInterfaceStyle: UIUserInterfaceStyle = .unspecified + @Published public var preferredTrueBlackDarkMode = false + // output + @Published public var appearanceMode: SettingsItem.AppearanceMode = .system + + init() { + UserDefaults.shared.observe(\.customUserInterfaceStyle, options: [.initial, .new]) { [weak self] defaults, _ in + guard let self = self else { return } + self.customUserInterfaceStyle = defaults.customUserInterfaceStyle + } + .store(in: &observations) + } + + public func prepareForReuse() { + // do nothing + } + } +} + +extension SettingsAppearanceTableViewCell.ViewModel { + func bind(cell: SettingsAppearanceTableViewCell) { + Publishers.CombineLatest( + $customUserInterfaceStyle, + $preferredTrueBlackDarkMode + ) + .sink { customUserInterfaceStyle, preferredTrueBlackDarkMode in + cell.appearanceViews.forEach { view in + view.selected = false + } + + switch customUserInterfaceStyle { + case .unspecified: + cell.systemAppearanceView.selected = true + case .dark: + if preferredTrueBlackDarkMode { + cell.reallyDarkAppearanceView.selected = true + } else { + cell.sortaDarkAppearanceView.selected = true + } + case .light: + cell.lightAppearanceView.selected = true + @unknown default: + assertionFailure() + } + } + .store(in: &disposeBag) + } +} + +extension SettingsAppearanceTableViewCell { + func configure(setting: Setting) { + setting.publisher(for: \.preferredTrueBlackDarkMode) + .assign(to: \.preferredTrueBlackDarkMode, on: viewModel) + .store(in: &disposeBag) + } + +} diff --git a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift new file mode 100644 index 000000000..b808d1c4b --- /dev/null +++ b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift @@ -0,0 +1,148 @@ +// +// SettingsAppearanceTableViewCell.swift +// Mastodon +// +// Created by ihugo on 2021/4/8. +// + +import UIKit +import Combine +import MastodonAsset +import MastodonLocalization + +protocol SettingsAppearanceTableViewCellDelegate: AnyObject { + func settingsAppearanceTableViewCell(_ cell: SettingsAppearanceTableViewCell, didSelectAppearanceMode appearanceMode: SettingsItem.AppearanceMode) +} + +class SettingsAppearanceTableViewCell: UITableViewCell { + + var disposeBag = Set() + var observations = Set() + + static let spacing: CGFloat = 28 + + weak var delegate: SettingsAppearanceTableViewCellDelegate? + + public private(set) lazy var viewModel: ViewModel = { + let viewModel = ViewModel() + viewModel.bind(cell: self) + return viewModel + }() + + lazy var stackView: UIStackView = { + let view = UIStackView() + view.axis = .horizontal + view.distribution = .fillEqually + view.spacing = SettingsAppearanceTableViewCell.spacing + return view + }() + + let systemAppearanceView = AppearanceView( + image: Asset.Settings.darkAuto.image, + title: "Use System" // TODO: i18n + ) + let reallyDarkAppearanceView = AppearanceView( + image: Asset.Settings.dark.image, + title: "Really Dark" + ) + let sortaDarkAppearanceView = AppearanceView( + image: Asset.Settings.dark.image, + title: "Sorta Dark" + ) + let lightAppearanceView = AppearanceView( + image: Asset.Settings.light.image, + title: "Light" + ) + + var appearanceViews: [AppearanceView] { + return [ + systemAppearanceView, + reallyDarkAppearanceView, + sortaDarkAppearanceView, + lightAppearanceView, + ] + } + + override func prepareForReuse() { + super.prepareForReuse() + + disposeBag.removeAll() + observations.removeAll() + viewModel.prepareForReuse() + } + + // MARK: - Methods + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + setupUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + + // remove separator line in section of group tableview + for subview in self.subviews { + if subview != self.contentView && subview.frame.width == self.frame.width { + subview.removeFromSuperview() + } + } + } + +} + +extension SettingsAppearanceTableViewCell { + + // MARK: Private methods + private func setupUI() { + backgroundColor = .clear + selectionStyle = .none + + stackView.translatesAutoresizingMaskIntoConstraints = false + contentView.addSubview(stackView) + NSLayoutConstraint.activate([ + stackView.topAnchor.constraint(equalTo: contentView.topAnchor), + stackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), + stackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + ]) + + stackView.addArrangedSubview(systemAppearanceView) + stackView.addArrangedSubview(reallyDarkAppearanceView) + stackView.addArrangedSubview(sortaDarkAppearanceView) + stackView.addArrangedSubview(lightAppearanceView) + + appearanceViews.forEach { view in + let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer + view.addGestureRecognizer(tapGestureRecognizer) + tapGestureRecognizer.addTarget(self, action: #selector(SettingsAppearanceTableViewCell.appearanceViewDidPressed(_:))) + } + } + +} + +// MARK: - Actions +extension SettingsAppearanceTableViewCell { + @objc func appearanceViewDidPressed(_ sender: UITapGestureRecognizer) { + let mode: SettingsItem.AppearanceMode + + switch sender.view { + case systemAppearanceView: + mode = .system + case reallyDarkAppearanceView: + mode = .reallyDark + case sortaDarkAppearanceView: + mode = .sortaDark + case lightAppearanceView: + mode = .light + default: + assertionFailure() + return + } + + delegate?.settingsAppearanceTableViewCell(self, didSelectAppearanceMode: mode) + } +} diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsLinkTableViewCell.swift b/Mastodon/Scene/Settings/Cell/SettingsLinkTableViewCell.swift similarity index 100% rename from Mastodon/Scene/Settings/View/Cell/SettingsLinkTableViewCell.swift rename to Mastodon/Scene/Settings/Cell/SettingsLinkTableViewCell.swift diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift b/Mastodon/Scene/Settings/Cell/SettingsToggleTableViewCell.swift similarity index 96% rename from Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift rename to Mastodon/Scene/Settings/Cell/SettingsToggleTableViewCell.swift index e75fa831f..419f24d61 100644 --- a/Mastodon/Scene/Settings/View/Cell/SettingsToggleTableViewCell.swift +++ b/Mastodon/Scene/Settings/Cell/SettingsToggleTableViewCell.swift @@ -20,6 +20,7 @@ class SettingsToggleTableViewCell: UITableViewCell { private(set) lazy var switchButton: UISwitch = { let view = UISwitch(frame:.zero) + view.onTintColor = contentView.window?.tintColor ?? .label return view }() diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 9352603e3..cf20e2df9 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -99,15 +99,13 @@ class SettingsViewController: UIViewController, NeedsDependency { }() private(set) lazy var tableView: UITableView = { - // init with a frame to fix a conflict ('UIView-Encapsulated-Layout-Width' UIStackView:0x7f8c2b6c0590.width == 0) let style: UITableView.Style = { switch UIDevice.current.userInterfaceIdiom { - case .phone: - return .grouped - default: - return .insetGrouped + case .phone: return .grouped + default: return .insetGrouped } }() + // init with a frame to fix a conflict ('UIView-Encapsulated-Layout-Width' UIStackView:0x7f8c2b6c0590.width == 0) let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 320, height: 320), style: style) tableView.translatesAutoresizingMaskIntoConstraints = false tableView.delegate = self @@ -135,6 +133,15 @@ class SettingsViewController: UIViewController, NeedsDependency { return view }() + + deinit { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s:", ((#file as NSString).lastPathComponent), #line, #function) + } + +} + +extension SettingsViewController { + override func viewDidLoad() { super.viewDidLoad() @@ -214,7 +221,7 @@ class SettingsViewController: UIViewController, NeedsDependency { private func setupView() { setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.setupBackgroundColor(theme: theme) @@ -314,10 +321,6 @@ class SettingsViewController: UIViewController, NeedsDependency { .store(in: &disposeBag) } - deinit { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s:", ((#file as NSString).lastPathComponent), #line, #function) - } - } // Mark: - Actions @@ -327,7 +330,9 @@ extension SettingsViewController { } } +// MARK: - UITableViewDelegate extension SettingsViewController: UITableViewDelegate { + func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let sections = viewModel.dataSource.snapshot().sectionIdentifiers guard section < sections.count else { return nil } @@ -449,24 +454,42 @@ extension SettingsViewController { // MARK: - SettingsAppearanceTableViewCellDelegate extension SettingsViewController: SettingsAppearanceTableViewCellDelegate { - func settingsAppearanceCell(_ cell: SettingsAppearanceTableViewCell, didSelectAppearanceMode appearanceMode: SettingsItem.AppearanceMode) { + func settingsAppearanceTableViewCell( + _ cell: SettingsAppearanceTableViewCell, + didSelectAppearanceMode appearanceMode: SettingsItem.AppearanceMode + ) { guard let dataSource = viewModel.dataSource else { return } guard let indexPath = tableView.indexPath(for: cell) else { return } let item = dataSource.itemIdentifier(for: indexPath) - guard case .appearance = item else { return } - - switch appearanceMode { - case .automatic: - UserDefaults.shared.customUserInterfaceStyle = .unspecified - case .light: - UserDefaults.shared.customUserInterfaceStyle = .light - case .dark: - UserDefaults.shared.customUserInterfaceStyle = .dark - } + guard case let .appearance(record) = item else { return } - let feedbackGenerator = UIImpactFeedbackGenerator(style: .light) - feedbackGenerator.impactOccurred() + Task { @MainActor in + var preferredTrueBlackDarkMode = false + + switch appearanceMode { + case .system: + UserDefaults.shared.customUserInterfaceStyle = .unspecified + case .reallyDark: + UserDefaults.shared.customUserInterfaceStyle = .dark + preferredTrueBlackDarkMode = true + case .sortaDark: + UserDefaults.shared.customUserInterfaceStyle = .dark + case .light: + UserDefaults.shared.customUserInterfaceStyle = .light + } + + let managedObjectContext = context.managedObjectContext + try await managedObjectContext.performChanges { + guard let setting = record.object(in: managedObjectContext) else { return } + setting.update(preferredTrueBlackDarkMode: preferredTrueBlackDarkMode) + } + ThemeService.shared.set(themeName: preferredTrueBlackDarkMode ? .system : .mastodon) + + let feedbackGenerator = UIImpactFeedbackGenerator(style: .light) + feedbackGenerator.impactOccurred() + } // end Task } + } extension SettingsViewController: SettingsToggleCellDelegate { @@ -478,10 +501,10 @@ extension SettingsViewController: SettingsToggleCellDelegate { let item = dataSource.itemIdentifier(for: indexPath) switch item { - case .notification(let settingObjectID, let switchMode): + case .notification(let record, let switchMode): let managedObjectContext = context.backgroundManagedObjectContext managedObjectContext.performChanges { - let setting = managedObjectContext.object(with: settingObjectID) as! Setting + guard let setting = record.object(in: managedObjectContext) else { return } guard let subscription = setting.activeSubscription else { return } let alert = subscription.alert switch switchMode { @@ -497,13 +520,11 @@ extension SettingsViewController: SettingsToggleCellDelegate { // do nothing } .store(in: &disposeBag) - case .preference(let settingObjectID, let preferenceType): + case .preference(let record, let preferenceType): let managedObjectContext = context.backgroundManagedObjectContext managedObjectContext.performChanges { - let setting = managedObjectContext.object(with: settingObjectID) as! Setting + guard let setting = record.object(in: managedObjectContext) else { return } switch preferenceType { - case .darkMode: - setting.update(preferredTrueBlackDarkMode: isOn) case .disableAvatarAnimation: setting.update(preferredStaticAvatar: isOn) case .disableEmojiAnimation: @@ -516,8 +537,6 @@ extension SettingsViewController: SettingsToggleCellDelegate { switch result { case .success: switch preferenceType { - case .darkMode: - ThemeService.shared.set(themeName: isOn ? .system : .mastodon) case .disableAvatarAnimation: UserDefaults.shared.preferredStaticAvatar = isOn case .disableEmojiAnimation: diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index 9158e8169..9f9640b70 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -108,24 +108,24 @@ extension SettingsViewModel { var snapshot = NSDiffableDataSourceSnapshot() // appearance - let appearanceItems = [SettingsItem.appearance(settingObjectID: setting.objectID)] + let appearanceItems = [SettingsItem.appearance(record: .init(objectID: setting.objectID))] snapshot.appendSections([.appearance]) snapshot.appendItems(appearanceItems, toSection: .appearance) - - // notification - let notificationItems = SettingsItem.NotificationSwitchMode.allCases.map { mode in - SettingsItem.notification(settingObjectID: setting.objectID, switchMode: mode) - } - snapshot.appendSections([.notifications]) - snapshot.appendItems(notificationItems, toSection: .notifications) - + // preference snapshot.appendSections([.preference]) let preferenceItems: [SettingsItem] = SettingsItem.PreferenceType.allCases.map { preferenceType in - SettingsItem.preference(settingObjectID: setting.objectID, preferenceType: preferenceType) + SettingsItem.preference(settingRecord: .init(objectID: setting.objectID), preferenceType: preferenceType) } snapshot.appendItems(preferenceItems,toSection: .preference) + // notification + let notificationItems = SettingsItem.NotificationSwitchMode.allCases.map { mode in + SettingsItem.notification(settingRecord: .init(objectID: setting.objectID), switchMode: mode) + } + snapshot.appendSections([.notifications]) + snapshot.appendItems(notificationItems, toSection: .notifications) + // boring zone let boringZoneSettingsItems: [SettingsItem] = { let links: [SettingsItem.Link] = [ diff --git a/Mastodon/Scene/Settings/View/AppearanceView.swift b/Mastodon/Scene/Settings/View/AppearanceView.swift index ef45504ae..c29ae96eb 100644 --- a/Mastodon/Scene/Settings/View/AppearanceView.swift +++ b/Mastodon/Scene/Settings/View/AppearanceView.swift @@ -10,15 +10,18 @@ import MastodonAsset import MastodonLocalization class AppearanceView: UIView { + lazy var imageView: UIImageView = { let view = UIImageView() + view.contentMode = .scaleAspectFill view.layer.masksToBounds = true - view.layer.cornerRadius = 14 + view.layer.cornerRadius = 8 view.layer.cornerCurve = .continuous // accessibility view.accessibilityIgnoresInvertColors = true return view }() + lazy var titleLabel: UILabel = { let label = UILabel() label.font = .systemFont(ofSize: 12, weight: .regular) @@ -26,35 +29,19 @@ class AppearanceView: UIView { label.textAlignment = .center return label }() - lazy var checkBox: UIButton = { - let button = UIButton() - button.isUserInteractionEnabled = false - button.setImage(UIImage(systemName: "circle"), for: .normal) - button.setImage(UIImage(systemName: "checkmark.circle.fill"), for: .selected) - button.imageView?.preferredSymbolConfiguration = UIImage.SymbolConfiguration(textStyle: .body) - button.imageView?.tintColor = Asset.Colors.Label.secondary.color - button.imageView?.contentMode = .scaleAspectFill - return button - }() + lazy var stackView: UIStackView = { let view = UIStackView() view.axis = .vertical - view.spacing = 10 + view.spacing = 8 view.distribution = .equalSpacing return view }() var selected: Bool = false { - didSet { - checkBox.isSelected = selected - if selected { - checkBox.imageView?.tintColor = Asset.Colors.brandBlue.color - } else { - checkBox.imageView?.tintColor = Asset.Colors.Label.secondary.color - } - } + didSet { setNeedsLayout() } } - + // MARK: - Methods init(image: UIImage?, title: String) { super.init(frame: .zero) @@ -70,23 +57,21 @@ class AppearanceView: UIView { } override var accessibilityLabel: String? { - get { - return [titleLabel.text, checkBox.accessibilityLabel] - .compactMap { $0 } - .joined(separator: ", ") - } + get { titleLabel.text } set { } } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + +} + +extension AppearanceView { - // MARK: - Private methods private func setupUI() { stackView.addArrangedSubview(imageView) stackView.addArrangedSubview(titleLabel) - stackView.addArrangedSubview(checkBox) addSubview(stackView) translatesAutoresizingMaskIntoConstraints = false @@ -96,10 +81,37 @@ class AppearanceView: UIView { stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor), stackView.bottomAnchor.constraint(equalTo: self.bottomAnchor), stackView.trailingAnchor.constraint(equalTo: self.trailingAnchor), - imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 218.0 / 100.0), + imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 120.0 / 90.0), ]) } + + private func configureForSelection() { + if selected { + imageView.layer.borderWidth = 3 + imageView.layer.borderColor = Asset.Colors.Label.primary.color.cgColor + accessibilityTraits.insert(.selected) + } else { + imageView.layer.borderWidth = 1 + imageView.layer.borderColor = Asset.Colors.Label.primaryReverse.color.cgColor + accessibilityTraits.remove(.selected) + } + } + + override func layoutSubviews() { + super.layoutSubviews() + + configureForSelection() + } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + setNeedsLayout() + } + +} +extension AppearanceView { override func touchesBegan(_ touches: Set, with event: UIEvent?) { super.touchesBegan(touches, with: event) self.alpha = 0.5 diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift deleted file mode 100644 index 1e0754d81..000000000 --- a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift +++ /dev/null @@ -1,173 +0,0 @@ -// -// SettingsAppearanceTableViewCell.swift -// Mastodon -// -// Created by ihugo on 2021/4/8. -// - -import UIKit -import Combine -import MastodonAsset -import MastodonLocalization - -protocol SettingsAppearanceTableViewCellDelegate: AnyObject { - func settingsAppearanceCell(_ cell: SettingsAppearanceTableViewCell, didSelectAppearanceMode appearanceMode: SettingsItem.AppearanceMode) -} - -class SettingsAppearanceTableViewCell: UITableViewCell { - - var disposeBag = Set() - var observations = Set() - - static let spacing: CGFloat = 18 - - weak var delegate: SettingsAppearanceTableViewCellDelegate? - var appearance: SettingsItem.AppearanceMode = .automatic - - lazy var stackView: UIStackView = { - let view = UIStackView() - view.axis = .horizontal - view.distribution = .fillEqually - view.spacing = SettingsAppearanceTableViewCell.spacing - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - let automatic = AppearanceView(image: Asset.Settings.darkAuto.image, - title: L10n.Scene.Settings.Section.Appearance.automatic) - let light = AppearanceView(image: Asset.Settings.light.image, - title: L10n.Scene.Settings.Section.Appearance.light) - let dark = AppearanceView(image: Asset.Settings.dark.image, - title: L10n.Scene.Settings.Section.Appearance.dark) - - lazy var automaticTap: UITapGestureRecognizer = { - let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - tapGestureRecognizer.addTarget(self, action: #selector(appearanceDidTap(sender:))) - return tapGestureRecognizer - }() - - lazy var lightTap: UITapGestureRecognizer = { - let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - tapGestureRecognizer.addTarget(self, action: #selector(appearanceDidTap(sender:))) - return tapGestureRecognizer - }() - - lazy var darkTap: UITapGestureRecognizer = { - let tapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - tapGestureRecognizer.addTarget(self, action: #selector(appearanceDidTap(sender:))) - return tapGestureRecognizer - }() - - override func prepareForReuse() { - super.prepareForReuse() - - disposeBag.removeAll() - observations.removeAll() - } - - // MARK: - Methods - override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { - super.init(style: style, reuseIdentifier: reuseIdentifier) - setupUI() - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func layoutSubviews() { - super.layoutSubviews() - - // remove separator line in section of group tableview - for subview in self.subviews { - if subview != self.contentView && subview.frame.width == self.frame.width { - subview.removeFromSuperview() - } - } - - setupAsset(theme: ThemeService.shared.currentTheme.value) - } - - func update(with data: SettingsItem.AppearanceMode) { - appearance = data - - automatic.selected = false - light.selected = false - dark.selected = false - - switch data { - case .automatic: - automatic.selected = true - case .light: - light.selected = true - case .dark: - dark.selected = true - } - } - - // MARK: Private methods - private func setupUI() { - backgroundColor = .clear - selectionStyle = .none - contentView.addSubview(stackView) - - stackView.addArrangedSubview(automatic) - stackView.addArrangedSubview(light) - stackView.addArrangedSubview(dark) - - automatic.addGestureRecognizer(automaticTap) - light.addGestureRecognizer(lightTap) - dark.addGestureRecognizer(darkTap) - - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: contentView.topAnchor), - stackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), - stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - stackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), - ]) - - setupAsset(theme: ThemeService.shared.currentTheme.value) - ThemeService.shared.currentTheme - .receive(on: DispatchQueue.main) - .sink { [weak self] theme in - guard let self = self else { return } - self.setupAsset(theme: theme) - } - .store(in: &disposeBag) - } - - private func setupAsset(theme: Theme) { - let aspectRatio = Asset.Settings.light.image.size - let width = floor(frame.width - 2 * SettingsAppearanceTableViewCell.spacing) / 3 - let height = width / aspectRatio.width * aspectRatio.height - let size = CGSize(width: width, height: height) - - light.imageView.image = Asset.Settings.light.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale) - switch theme.themeName { - case .mastodon: - automatic.imageView.image = Asset.Settings.darkAuto.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale) - dark.imageView.image = Asset.Settings.dark.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale) - case .system: - automatic.imageView.image = Asset.Settings.blackAuto.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale) - dark.imageView.image = Asset.Settings.black.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale) - } - } - - // MARK: - Actions - @objc func appearanceDidTap(sender: UIGestureRecognizer) { - if sender == automaticTap { - appearance = .automatic - } - - if sender == lightTap { - appearance = .light - } - - if sender == darkTap { - appearance = .dark - } - - guard let delegate = self.delegate else { return } - delegate.settingsAppearanceCell(self, didSelectAppearanceMode: appearance) - } -} From bdf7114fefe1055454ee819000a3f5aed645c91b Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 8 Feb 2022 19:50:18 +0800 Subject: [PATCH 148/374] feat: update status content warning UI --- Localization/app.json | 3 +- ...Provider+StatusTableViewCellDelegate.swift | 26 ++++- ...ngsAppearanceTableViewCell+ViewModel.swift | 6 +- .../StatusTableViewCellDelegate.swift | 11 ++- .../MastodonUI/Extension/MetaLabel.swift | 13 ++- .../View/Content/NotificationView.swift | 6 +- .../View/Content/StatusView+ViewModel.swift | 23 ++--- .../MastodonUI/View/Content/StatusView.swift | 84 +++++++++++------ .../View/Control/SpoilerBannerView.swift | 94 +++++++++++++++++++ .../View/Control/SpoilerOverlayView.swift | 34 +++---- 10 files changed, 224 insertions(+), 76 deletions(-) create mode 100644 MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift diff --git a/Localization/app.json b/Localization/app.json index 78171749d..639bca4f3 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift index ffd3de8b1..a348085b0 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift @@ -6,9 +6,9 @@ // import UIKit +import CoreDataStack import MetaTextKit import MastodonUI -import CoreDataStack // MARK: - header extension StatusTableViewCellDelegate where Self: DataSourceProvider { @@ -367,7 +367,29 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { func tableViewCell( _ cell: UITableViewCell, statusView: StatusView, - contentWarningToggleButtonDidPressed button: UIButton + spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: status + ) + } // end Task + } + + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + spoilerBannerViewDidPressed bannerView: SpoilerBannerView ) { Task { let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) diff --git a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift index ea589da96..f73be2357 100644 --- a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift @@ -37,9 +37,11 @@ extension SettingsAppearanceTableViewCell { extension SettingsAppearanceTableViewCell.ViewModel { func bind(cell: SettingsAppearanceTableViewCell) { Publishers.CombineLatest( - $customUserInterfaceStyle, - $preferredTrueBlackDarkMode + $customUserInterfaceStyle.removeDuplicates(), + $preferredTrueBlackDarkMode.removeDuplicates() ) + .debounce(for: 0.1, scheduler: DispatchQueue.main) + .receive(on: DispatchQueue.main) .sink { customUserInterfaceStyle, preferredTrueBlackDarkMode in cell.appearanceViews.forEach { view in view.selected = false diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift index 322441ba2..10f28455d 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift @@ -31,7 +31,8 @@ protocol StatusTableViewCellDelegate: AnyObject, AutoGenerateProtocolDelegate { func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, pollVoteButtonPressed button: UIButton) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) - func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, contentWarningToggleButtonDidPressed button: UIButton) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) // sourcery:end } @@ -72,8 +73,12 @@ extension StatusViewDelegate where Self: StatusViewContainerTableViewCell { delegate?.tableViewCell(self, statusView: statusView, menuButton: button, didSelectAction: action) } - func statusView(_ statusView: StatusView, contentWarningToggleButtonDidPressed button: UIButton) { - delegate?.tableViewCell(self, statusView: statusView, contentWarningToggleButtonDidPressed: button) + func statusView(_ statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) { + delegate?.tableViewCell(self, statusView: statusView, spoilerOverlayViewDidPressed: overlayView) + } + + func statusView(_ statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) { + delegate?.tableViewCell(self, statusView: statusView, spoilerBannerViewDidPressed: bannerView) } // sourcery:end } diff --git a/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift b/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift index ee9bc73ef..119e9e031 100644 --- a/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift +++ b/MastodonSDK/Sources/MastodonUI/Extension/MetaLabel.swift @@ -15,7 +15,8 @@ extension MetaLabel { case statusHeader case statusName case statusUsername - case statusSpoiler + case statusSpoilerOverlay + case statusSpoilerBanner case notificationTitle case profileFieldName case profileFieldValue @@ -57,11 +58,15 @@ extension MetaLabel { font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .regular)) textColor = Asset.Colors.Label.secondary.color - case .statusSpoiler: - font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) - textColor = Asset.Colors.Label.secondary.color + case .statusSpoilerOverlay: + font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold)) + textColor = Asset.Colors.Label.primary.color textAlignment = .center paragraphStyle.alignment = .center + + case .statusSpoilerBanner: + font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) + textColor = Asset.Colors.Label.primary.color case .notificationTitle: font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 14, weight: .regular)) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index 74fcb9434..fd8d3c325 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -380,7 +380,11 @@ extension NotificationView: StatusViewDelegate { assertionFailure() } - public func statusView(_ statusView: StatusView, contentWarningToggleButtonDidPressed button: UIButton) { + public func statusView(_ statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) { + assertionFailure() + } + + public func statusView(_ statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) { assertionFailure() } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index 60079ce96..ec61db168 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -256,8 +256,12 @@ extension StatusView.ViewModel { .sink { spoilerContent, content, isContentReveal in if let spoilerContent = spoilerContent { statusView.spoilerOverlayView.spoilerMetaLabel.configure(content: spoilerContent) + statusView.spoilerBannerView.label.configure(content: spoilerContent) + statusView.setSpoilerBannerViewHidden(isHidden: !isContentReveal) + } else { statusView.spoilerOverlayView.spoilerMetaLabel.reset() + statusView.spoilerBannerView.label.reset() } if let content = content { @@ -273,7 +277,7 @@ extension StatusView.ViewModel { statusView.contentMetaText.textView.accessibilityLabel = "" } - statusView.setSpoilerOverlayViewHidden(isContentReveal) + statusView.setSpoilerOverlayViewHidden(isHidden: isContentReveal) } .store(in: &disposeBag) // visibility @@ -299,16 +303,13 @@ extension StatusView.ViewModel { } } .store(in: &disposeBag) - $isSensitive - .sink { isSensitive in - if isSensitive { - let image = Asset.Human.eyeCircleFill.image - statusView.contentWarningToggleButton.setImage(image, for: .normal) - statusView.contentWarningToggleButton.tintColor = .systemGray - statusView.setContentWarningToggleButtonDisplay() - } - } - .store(in: &disposeBag) +// $isSensitive +// .sink { isSensitive in +// if isSensitive { +// statusView.setStatusSpoilerBannerViewDisplay() +// } +// } +// .store(in: &disposeBag) // $spoilerContent // .sink { metaContent in // guard let metaContent = metaContent else { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index fec2535da..fa0dde84e 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -22,7 +22,8 @@ public protocol StatusViewDelegate: AnyObject { func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) func statusView(_ statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func statusView(_ statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) - func statusView(_ statusView: StatusView, contentWarningToggleButtonDidPressed button: UIButton) + func statusView(_ statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) + func statusView(_ statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) // func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) // func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) } @@ -100,9 +101,6 @@ public final class StatusView: UIView { return button }() - // contentWarningToggleButton - public let contentWarningToggleButton = UIButton(type: .system) - // content let contentContainer = UIStackView() public let contentMetaText: MetaText = { @@ -134,6 +132,7 @@ public final class StatusView: UIView { return metaText }() + // content warning let spoilerOverlayView = SpoilerOverlayView() // media @@ -197,6 +196,9 @@ public final class StatusView: UIView { // visibility public let statusVisibilityView = StatusVisibilityView() + // spoiler banner + public let spoilerBannerView = SpoilerBannerView() + // toolbar public let actionToolbarContainer = ActionToolbarContainer() @@ -222,11 +224,11 @@ public final class StatusView: UIView { } headerContainerView.isHidden = true - contentWarningToggleButton.isHidden = true - setSpoilerOverlayViewHidden(true) + setSpoilerOverlayViewHidden(isHidden: true) mediaContainerView.isHidden = true pollContainerView.isHidden = true statusVisibilityView.isHidden = true + setSpoilerBannerViewHidden(isHidden: true) } public override init(frame: CGRect) { @@ -265,12 +267,15 @@ extension StatusView { authorNameLabel.isUserInteractionEnabled = false authorUsernameLabel.isUserInteractionEnabled = false - // contentWarningToggleButton - contentWarningToggleButton.addTarget(self, action: #selector(StatusView.contentWarningToggleButtonDidPressed(_:)), for: .touchUpInside) // dateLabel dateLabel.isUserInteractionEnabled = false + // content warning + let spoilerOverlayViewTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer + spoilerOverlayView.addGestureRecognizer(spoilerOverlayViewTapGestureRecognizer) + spoilerOverlayViewTapGestureRecognizer.addTarget(self, action: #selector(StatusView.spoilerOverlayViewTapGestureRecognizerHandler(_:))) + // content contentMetaText.textView.delegate = self contentMetaText.textView.linkDelegate = self @@ -287,6 +292,11 @@ extension StatusView { pollTableView.delegate = self pollVoteButton.addTarget(self, action: #selector(StatusView.pollVoteButtonDidPressed(_:)), for: .touchUpInside) + // statusSpoilerBannerView + let spoilerBannerViewTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer + spoilerBannerView.addGestureRecognizer(spoilerBannerViewTapGestureRecognizer) + spoilerBannerViewTapGestureRecognizer.addTarget(self, action: #selector(StatusView.spoilerBannerViewTapGestureRecognizerHandler(_:))) + // toolbar actionToolbarContainer.delegate = self } @@ -305,16 +315,22 @@ extension StatusView { delegate?.statusView(self, authorAvatarButtonDidPressed: avatarButton) } - @objc private func contentWarningToggleButtonDidPressed(_ sender: UIButton) { - logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") - delegate?.statusView(self, contentWarningToggleButtonDidPressed: contentWarningToggleButton) - } @objc private func pollVoteButtonDidPressed(_ sender: UIButton) { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") delegate?.statusView(self, pollVoteButtonPressed: pollVoteButton) } + @objc private func spoilerOverlayViewTapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.statusView(self, spoilerOverlayViewDidPressed: spoilerOverlayView) + } + + @objc private func spoilerBannerViewTapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.statusView(self, spoilerBannerViewDidPressed: spoilerBannerView) + } + } extension StatusView { @@ -354,7 +370,7 @@ extension StatusView.Style { } } - func inline(statusView: StatusView) { + private func base(statusView: StatusView) { // container: V - [ header container | author container | content container | media container | pollTableView | actionToolbarContainer ] statusView.containerStackView.layoutMargins = StatusView.containerLayoutMargin @@ -440,11 +456,6 @@ extension StatusView.Style { statusView.dateLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) authorSecondaryMetaContainer.addArrangedSubview(UIView()) - // contentWarningToggleButton - statusView.authorContainerView.addArrangedSubview(statusView.contentWarningToggleButton) - statusView.contentWarningToggleButton.setContentHuggingPriority(.required - 2, for: .horizontal) - statusView.contentWarningToggleButton.setContentCompressionResistancePriority(.required - 2, for: .horizontal) - // content container: V - [ contentMetaText ] statusView.contentContainer.axis = .vertical statusView.contentContainer.spacing = 12 @@ -508,15 +519,24 @@ extension StatusView.Style { statusView.statusVisibilityView.preservesSuperviewLayoutMargins = true statusView.containerStackView.addArrangedSubview(statusView.statusVisibilityView) + statusView.spoilerBannerView.preservesSuperviewLayoutMargins = true + statusView.containerStackView.addArrangedSubview(statusView.spoilerBannerView) + // action toolbar statusView.actionToolbarContainer.configure(for: .inline) statusView.actionToolbarContainer.preservesSuperviewLayoutMargins = true statusView.containerStackView.addArrangedSubview(statusView.actionToolbarContainer) } + func inline(statusView: StatusView) { + base(statusView: statusView) + + statusView.statusVisibilityView.removeFromSuperview() + } + func plain(statusView: StatusView) { // container: V - [ … | statusMetricView ] - inline(statusView: statusView) // override the inline style + base(statusView: statusView) // override the base style // statusMetricView statusView.statusMetricView.layoutMargins = StatusView.containerLayoutMargin @@ -530,7 +550,7 @@ extension StatusView.Style { } func report(statusView: StatusView) { - inline(statusView: statusView) // override the inline style + base(statusView: statusView) // override the base style statusView.menuButton.removeFromSuperview() statusView.statusVisibilityView.removeFromSuperview() @@ -538,31 +558,36 @@ extension StatusView.Style { } func notification(statusView: StatusView) { - inline(statusView: statusView) // override the inline style + base(statusView: statusView) // override the base style statusView.headerContainerView.removeFromSuperview() statusView.authorContainerView.removeFromSuperview() + statusView.statusVisibilityView.removeFromSuperview() + statusView.spoilerBannerView.removeFromSuperview() } func notificationQuote(statusView: StatusView) { - inline(statusView: statusView) // override the inline style + base(statusView: statusView) // override the base style statusView.contentContainer.layoutMargins.bottom = 16 // fix contentText align to edge issue statusView.menuButton.removeFromSuperview() statusView.statusVisibilityView.removeFromSuperview() + statusView.spoilerBannerView.removeFromSuperview() statusView.actionToolbarContainer.removeFromSuperview() } func composeStatusReplica(statusView: StatusView) { - inline(statusView: statusView) + base(statusView: statusView) statusView.avatarButton.isUserInteractionEnabled = false statusView.menuButton.removeFromSuperview() + statusView.statusVisibilityView.removeFromSuperview() + statusView.spoilerBannerView.removeFromSuperview() statusView.actionToolbarContainer.removeFromSuperview() } func composeStatusAuthor(statusView: StatusView) { - inline(statusView: statusView) + base(statusView: statusView) statusView.avatarButton.isUserInteractionEnabled = false statusView.menuButton.removeFromSuperview() @@ -573,6 +598,7 @@ extension StatusView.Style { statusView.mediaContainerView.removeFromSuperview() statusView.pollContainerView.removeFromSuperview() statusView.statusVisibilityView.removeFromSuperview() + statusView.spoilerBannerView.removeFromSuperview() statusView.actionToolbarContainer.removeFromSuperview() } @@ -583,11 +609,7 @@ extension StatusView { headerContainerView.isHidden = false } - func setContentWarningToggleButtonDisplay() { - contentWarningToggleButton.isHidden = false - } - - func setSpoilerOverlayViewHidden(_ isHidden: Bool) { + func setSpoilerOverlayViewHidden(isHidden: Bool) { spoilerOverlayView.isHidden = isHidden spoilerOverlayView.setComponentHidden(isHidden) } @@ -604,6 +626,10 @@ extension StatusView { statusVisibilityView.isHidden = false } + func setSpoilerBannerViewHidden(isHidden: Bool) { + spoilerBannerView.isHidden = isHidden + } + // content text Width public var contentMaxLayoutWidth: CGFloat { let inset = contentLayoutInset diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift new file mode 100644 index 000000000..5552be633 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift @@ -0,0 +1,94 @@ +// +// SpoilerBannerView.swift +// +// +// Created by MainasuK on 2022-2-8. +// + +import UIKit +import MastodonAsset +import MetaTextKit + +public final class SpoilerBannerView: UIView { + + static let cornerRadius: CGFloat = 8 + static let containerMargin: CGFloat = 14 + + public let containerView = UIView() + + public let label = MetaLabel(style: .statusSpoilerBanner) + + public let hideLabel: UILabel = { + let label = UILabel() + label.textColor = Asset.Colors.Label.primary.color + label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) + label.numberOfLines = 0 + label.text = "Hide" // TODO: i18n + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + _init() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + _init() + } + +} + +extension SpoilerBannerView { + + private func _init() { + containerView.translatesAutoresizingMaskIntoConstraints = false + addSubview(containerView) + NSLayoutConstraint.activate([ + containerView.topAnchor.constraint(equalTo: topAnchor), + containerView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor), + containerView.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor), + containerView.bottomAnchor.constraint(equalTo: bottomAnchor), + ]) + + containerView.backgroundColor = .secondarySystemBackground + + containerView.layoutMargins = UIEdgeInsets( + top: StatusVisibilityView.containerMargin, + left: StatusVisibilityView.containerMargin, + bottom: StatusVisibilityView.containerMargin, + right: StatusVisibilityView.containerMargin + ) + + let labelContainer = UIStackView() + labelContainer.axis = .horizontal + labelContainer.spacing = 16 + labelContainer.alignment = .center + + labelContainer.translatesAutoresizingMaskIntoConstraints = false + containerView.addSubview(labelContainer) + NSLayoutConstraint.activate([ + labelContainer.topAnchor.constraint(equalTo: containerView.layoutMarginsGuide.topAnchor), + labelContainer.leadingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.leadingAnchor), + labelContainer.trailingAnchor.constraint(equalTo: containerView.layoutMarginsGuide.trailingAnchor), + labelContainer.bottomAnchor.constraint(equalTo: containerView.layoutMarginsGuide.bottomAnchor), + ]) + + labelContainer.addArrangedSubview(label) + labelContainer.addArrangedSubview(hideLabel) + label.setContentHuggingPriority(.defaultLow, for: .horizontal) + hideLabel.setContentHuggingPriority(.required - 1, for: .horizontal) + hideLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) + + label.isUserInteractionEnabled = false + } + + public override func layoutSubviews() { + super.layoutSubviews() + + containerView.layer.masksToBounds = false + containerView.layer.cornerCurve = .continuous + containerView.layer.cornerRadius = StatusVisibilityView.cornerRadius + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift index d6f3900ae..cf84bfa86 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift @@ -10,33 +10,27 @@ import MastodonLocalization import MastodonAsset import MetaTextKit -final class SpoilerOverlayView: UIView { +public final class SpoilerOverlayView: UIView { let containerStackView: UIStackView = { let stackView = UIStackView() stackView.axis = .vertical - // stackView.spacing = 8 + stackView.spacing = 8 stackView.alignment = .center return stackView }() - let iconImageView: UIImageView = { - let imageView = UIImageView() - imageView.image = UIImage(systemName: "eye", withConfiguration: UIImage.SymbolConfiguration(font: .systemFont(ofSize: 34, weight: .light))) - imageView.tintColor = Asset.Colors.Label.secondary.color - return imageView - }() - - let titleLabel: UILabel = { + let spoilerMetaLabel = MetaLabel(style: .statusSpoilerOverlay) + + let hintLabel: UILabel = { let label = UILabel() - label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 20, weight: .semibold)) + label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) label.textAlignment = .center - label.textColor = Asset.Colors.Label.primary.color - label.text = L10n.Common.Controls.Status.contentWarning + label.textColor = Asset.Colors.Label.secondary.color + label.text = L10n.Common.Controls.Status.mediaContentWarning return label }() - let spoilerMetaLabel = MetaLabel(style: .statusSpoiler) override init(frame: CGRect) { super.init(frame: frame) @@ -61,19 +55,11 @@ extension SpoilerOverlayView { containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor), ]) - let topPaddingView = UIView() topPaddingView.translatesAutoresizingMaskIntoConstraints = false containerStackView.addArrangedSubview(topPaddingView) - iconImageView.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(iconImageView) - NSLayoutConstraint.activate([ - iconImageView.widthAnchor.constraint(equalToConstant: 52.0).priority(.required - 1), - iconImageView.heightAnchor.constraint(equalToConstant: 32.0).priority(.required - 1), - ]) - iconImageView.setContentCompressionResistancePriority(.required, for: .vertical) - containerStackView.addArrangedSubview(titleLabel) containerStackView.addArrangedSubview(spoilerMetaLabel) + containerStackView.addArrangedSubview(hintLabel) let bottomPaddingView = UIView() bottomPaddingView.translatesAutoresizingMaskIntoConstraints = false containerStackView.addArrangedSubview(bottomPaddingView) @@ -82,6 +68,8 @@ extension SpoilerOverlayView { ]) topPaddingView.setContentCompressionResistancePriority(.defaultLow - 100, for: .vertical) bottomPaddingView.setContentCompressionResistancePriority(.defaultLow - 100, for: .vertical) + + spoilerMetaLabel.isUserInteractionEnabled = false } public func setComponentHidden(_ isHidden: Bool) { From 8cd409de861b7f36d3479c7786c484a3bcb1dbff Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 8 Feb 2022 20:07:50 +0800 Subject: [PATCH 149/374] feat: add notification gap fetcher --- .../Notification/NotificationSection.swift | 6 ++-- .../NotificationTimelineViewController.swift | 12 +++++++ .../NotificationTimelineViewModel.swift | 31 +++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/Mastodon/Diffiable/Notification/NotificationSection.swift b/Mastodon/Diffiable/Notification/NotificationSection.swift index 210d7ea10..7cca0c0eb 100644 --- a/Mastodon/Diffiable/Notification/NotificationSection.swift +++ b/Mastodon/Diffiable/Notification/NotificationSection.swift @@ -49,8 +49,10 @@ extension NotificationSection { ) } return cell - case .feedLoader(let record): - return UITableViewCell() + case .feedLoader: + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell + cell.activityIndicatorView.startAnimating() + return cell case .bottomLoader: let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self), for: indexPath) as! TimelineBottomLoaderTableViewCell cell.activityIndicatorView.startAnimating() diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift index 25e17ef51..b587ff742 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift @@ -135,6 +135,18 @@ extension NotificationTimelineViewController: UITableViewDelegate, AutoGenerateT } // sourcery:end + + func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { + guard let item = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { + return + } + + // check item type inside `loadMore` + Task { + await viewModel.loadMore(item: item) + } + } + } // MARK: - NotificationTableViewCellDelegate diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift index e62ec4743..41e4cef07 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift @@ -156,4 +156,35 @@ extension NotificationTimelineViewModel { } } + // load timeline gap + func loadMore(item: NotificationItem) async { + guard case let .feedLoader(record) = item else { return } + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + + let managedObjectContext = context.managedObjectContext + let key = "LoadMore@\(record.objectID)" + + // return when already loading state + guard managedObjectContext.cache(froKey: key) == nil else { return } + + guard let feed = record.object(in: managedObjectContext) else { return } + guard let maxID = feed.notification?.id else { return } + // keep transient property live + managedObjectContext.cache(feed, key: key) + defer { + managedObjectContext.cache(nil, key: key) + } + + // fetch data + do { + _ = try await context.apiService.notifications( + maxID: maxID, + scope: scope, + authenticationBox: authenticationBox + ) + } catch { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch more failure: \(error.localizedDescription)") + } + } + } From 1789e6eb86a16e66e40614b6c24d15cfccb28df4 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 8 Feb 2022 20:08:46 +0800 Subject: [PATCH 150/374] chore: update version to 1.3.0 (93) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- .../xcshareddata/swiftpm/Package.resolved | 17 ++++--------- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 10 files changed, 26 insertions(+), 35 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 82d6779d1..f28ee72ee 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 92 + 93 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 542636a41..b6ef24ba1 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4640,7 +4640,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4669,7 +4669,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4777,11 +4777,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 92; + DYLIB_CURRENT_VERSION = 93; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4808,11 +4808,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 92; + DYLIB_CURRENT_VERSION = 93; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4837,7 +4837,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4862,7 +4862,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4887,7 +4887,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4912,7 +4912,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4937,7 +4937,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4961,7 +4961,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 92; + CURRENT_PROJECT_VERSION = 93; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index bf3ad9bfc..a5240e44a 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 19 + 25 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 18 + 27 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 20 + 26 SuppressBuildableAutocreation diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index dc50a9706..6b20b0e1d 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -186,8 +186,8 @@ "repositoryURL": "https://github.com/uias/Tabman", "state": { "branch": null, - "revision": "f43489cdd743ba7ad86a422ebb5fcbf34e333df4", - "version": "2.11.1" + "revision": "a9f10cb862a32e6a22549836af013abd6b0692d3", + "version": "2.12.0" } }, { @@ -204,17 +204,8 @@ "repositoryURL": "https://github.com/TimOliver/TOCropViewController.git", "state": { "branch": null, - "revision": "dad97167bf1be16aeecd109130900995dd01c515", - "version": "2.6.0" - } - }, - { - "package": "UITextView+Placeholder", - "repositoryURL": "https://github.com/MainasuK/UITextView-Placeholder", - "state": { - "branch": null, - "revision": "20f513ded04a040cdf5467f0891849b1763ede3b", - "version": "1.4.1" + "revision": "d0470491f56e734731bbf77991944c0dfdee3e0e", + "version": "2.6.1" } } ] diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 7c025e8c7..50f6db71f 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 92 + 93 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 8206349bd..f100851c0 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 92 + 93 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 82d6779d1..f28ee72ee 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 92 + 93 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 82d6779d1..f28ee72ee 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 92 + 93 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 7a38d4134..417718aa5 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 92 + 93 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index a57563bff..7f562ce3d 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 92 + 93 NSExtension NSExtensionAttributes From 582843f54a9e911e97180c14376eaf6bbdb2de2b Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 9 Feb 2022 20:35:19 +0800 Subject: [PATCH 151/374] feat: add video player for audio/video kind media --- Mastodon.xcodeproj/project.pbxproj | 70 +-- .../xcschemes/xcschememanagement.plist | 6 +- ...dency+AVPlayerViewControllerDelegate.swift | 21 - ...Provider+StatusTableViewCellDelegate.swift | 28 +- .../Image/MediaPreviewImageView.swift | 0 .../MediaPreviewImageViewController.swift | 18 + .../Image/MediaPreviewImageViewModel.swift | 0 .../MediaPreviewViewController.swift | 24 +- .../MediaPreview/MediaPreviewViewModel.swift | 106 ++-- .../MediaPreviewVideoViewController.swift | 156 ++++++ .../Video/MediaPreviewVideoViewModel.swift | 140 +++++ .../View/Container/AudioContainerView.swift | 131 ----- .../Container/MosaicImageViewContainer.swift | 497 ------------------ ...ContainerView+MediaTypeIndicotorView.swift | 125 ----- .../View/Container/PlayerContainerView.swift | 179 ------- .../Content/MediaView+Configuration.swift | 118 +++-- .../Content/StatusView+Configuration.swift | 7 +- .../StatusTableViewCellDelegate.swift | 5 + .../ViewModel/AudioContainerViewModel.swift | 118 ----- .../ViewModel/MosaicImageViewModel.swift | 55 -- .../ViewModel/VideoPlayerViewModel.swift | 193 ------- ...wViewControllerAnimatedTransitioning.swift | 353 ++++++------- .../MediaPreviewTransitionItem.swift | 13 +- ...MediaPreviewTransitionViewController.swift | 20 + Mastodon/Service/AudioPlaybackService.swift | 150 ------ Mastodon/Service/VideoPlaybackService.swift | 141 ----- Mastodon/State/AppContext.swift | 2 - Mastodon/Supporting Files/AppDelegate.swift | 3 + Mastodon/Supporting Files/SceneDelegate.swift | 1 - .../View/Container/AudioContainerView.swift | 136 +++++ .../MediaGridContainerView+ViewModel.swift | 29 - .../Container/MediaGridContainerView.swift | 56 +- .../Content/MediaView+Configuration.swift | 14 + .../MastodonUI/View/Content/MediaView.swift | 221 ++++---- .../View/Content/NotificationView.swift | 4 + .../View/Content/StatusView+ViewModel.swift | 31 +- .../MastodonUI/View/Content/StatusView.swift | 48 +- 37 files changed, 1017 insertions(+), 2202 deletions(-) delete mode 100644 Mastodon/Protocol/NeedsDependency+AVPlayerViewControllerDelegate.swift rename Mastodon/Scene/MediaPreview/{Paging => }/Image/MediaPreviewImageView.swift (100%) rename Mastodon/Scene/MediaPreview/{Paging => }/Image/MediaPreviewImageViewController.swift (92%) rename Mastodon/Scene/MediaPreview/{Paging => }/Image/MediaPreviewImageViewModel.swift (100%) create mode 100644 Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift create mode 100644 Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewModel.swift delete mode 100644 Mastodon/Scene/Share/View/Container/AudioContainerView.swift delete mode 100644 Mastodon/Scene/Share/View/Container/MosaicImageViewContainer.swift delete mode 100644 Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift delete mode 100644 Mastodon/Scene/Share/View/Container/PlayerContainerView.swift delete mode 100644 Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift delete mode 100644 Mastodon/Scene/Share/ViewModel/MosaicImageViewModel.swift delete mode 100644 Mastodon/Scene/Share/ViewModel/VideoPlayerViewModel.swift create mode 100644 Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionViewController.swift delete mode 100644 Mastodon/Service/AudioPlaybackService.swift delete mode 100644 Mastodon/Service/VideoPlaybackService.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Container/AudioContainerView.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index b6ef24ba1..01b8698e5 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -27,9 +27,7 @@ 18BC7629F65E6DB12CB8416D /* Pods_Mastodon_MastodonUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */; }; 2D198643261BF09500F0B013 /* SearchResultItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198642261BF09500F0B013 /* SearchResultItem.swift */; }; 2D198649261C0B8500F0B013 /* SearchResultSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D198648261C0B8500F0B013 /* SearchResultSection.swift */; }; - 2D206B7225F5D27F00143C56 /* AudioContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */; }; 2D206B8625F5FB0900143C56 /* Double.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B8525F5FB0900143C56 /* Double.swift */; }; - 2D206B8C25F6015000143C56 /* AudioPlaybackService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */; }; 2D206B9225F60EA700143C56 /* UIControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D206B9125F60EA700143C56 /* UIControl.swift */; }; 2D24E1232626ED9D00A59D4F /* UIView+Gesture.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */; }; 2D32EAAC25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */; }; @@ -80,7 +78,6 @@ 2D9DB96B263A91D1007C1D71 /* APIService+DomainBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D9DB96A263A91D1007C1D71 /* APIService+DomainBlock.swift */; }; 2DA504692601ADE7008F4E6C /* SawToothView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA504682601ADE7008F4E6C /* SawToothView.swift */; }; 2DA6054725F716A2006356F9 /* PlaybackState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA6054625F716A2006356F9 /* PlaybackState.swift */; }; - 2DA6055125F74407006356F9 /* AudioContainerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA6055025F74407006356F9 /* AudioContainerViewModel.swift */; }; 2DA7D04425CA52B200804E11 /* TimelineLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7D04325CA52B200804E11 /* TimelineLoaderTableViewCell.swift */; }; 2DA7D04A25CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DA7D04925CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift */; }; 2DAC9E38262FC2320062E1A6 /* SuggestionAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DAC9E37262FC2320062E1A6 /* SuggestionAccountViewController.swift */; }; @@ -111,11 +108,7 @@ 5DDDF1932617442700311060 /* Mastodon+Entity+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1922617442700311060 /* Mastodon+Entity+Account.swift */; }; 5DDDF1992617447F00311060 /* Mastodon+Entity+Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1982617447F00311060 /* Mastodon+Entity+Tag.swift */; }; 5DDDF1A92617489F00311060 /* Mastodon+Entity+History.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1A82617489F00311060 /* Mastodon+Entity+History.swift */; }; - 5DF1054125F886D400D6C0D4 /* VideoPlaybackService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1054025F886D400D6C0D4 /* VideoPlaybackService.swift */; }; - 5DF1054725F8870E00D6C0D4 /* VideoPlayerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1054625F8870E00D6C0D4 /* VideoPlayerViewModel.swift */; }; 5DF1056425F887CB00D6C0D4 /* AVPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1056325F887CB00D6C0D4 /* AVPlayer.swift */; }; - 5DF1057925F88A1D00D6C0D4 /* PlayerContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1057825F88A1D00D6C0D4 /* PlayerContainerView.swift */; }; - 5DF1058525F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DF1058425F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift */; }; 5E0DEC05797A7E6933788DDB /* Pods_MastodonTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 452147B2903DF38070FE56A2 /* Pods_MastodonTests.framework */; }; 5E44BF88AD33646E64727BCF /* Pods_MastodonTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD92E0F10BDE4FE7C4B999F2 /* Pods_MastodonTests.framework */; }; 87FFDA5D898A5C42ADCB35E7 /* Pods_Mastodon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4ABE34829701A4496C5BB64 /* Pods_Mastodon.framework */; }; @@ -262,7 +255,6 @@ DB49A61F25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A61E25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift */; }; DB49A62525FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A62425FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift */; }; DB49A62B25FF36C700B98345 /* APIService+CustomEmoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A62A25FF36C700B98345 /* APIService+CustomEmoji.swift */; }; - DB49A63D25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A63C25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift */; }; DB4F0963269ED06300D62E92 /* SearchResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F0962269ED06300D62E92 /* SearchResultViewController.swift */; }; DB4F0966269ED52200D62E92 /* SearchResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F0965269ED52200D62E92 /* SearchResultViewModel.swift */; }; DB4F0968269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F0967269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift */; }; @@ -455,8 +447,6 @@ DB9D6BE925E4F5340051B173 /* SearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BE825E4F5340051B173 /* SearchViewController.swift */; }; DB9D6BF825E4F5690051B173 /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */; }; DB9D6BFF25E4F5940051B173 /* ProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6BFE25E4F5940051B173 /* ProfileViewController.swift */; }; - DB9D6C0E25E4F9780051B173 /* MosaicImageViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6C0D25E4F9780051B173 /* MosaicImageViewContainer.swift */; }; - DB9D6C2425E502C60051B173 /* MosaicImageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D6C2225E502C60051B173 /* MosaicImageViewModel.swift */; }; DB9D7C21269824B80054B3DF /* APIService+Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9D7C20269824B80054B3DF /* APIService+Filter.swift */; }; DB9E0D6F25EE008500CFDD76 /* UIInterpolatingMotionEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9E0D6E25EE008500CFDD76 /* UIInterpolatingMotionEffect.swift */; }; DB9F58EC26EF435000E7BBE9 /* AccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9F58EB26EF435000E7BBE9 /* AccountViewController.swift */; }; @@ -489,6 +479,9 @@ DBAE3FAF26172FC0004B8251 /* RemoteProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3FAE26172FC0004B8251 /* RemoteProfileViewModel.swift */; }; DBB3BA2A26A81C020004F2D4 /* FLAnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */; }; DBB3BA2B26A81D060004F2D4 /* FLAnimatedImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */; }; + DBB45B5627B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5527B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift */; }; + DBB45B5927B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5827B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift */; }; + DBB45B5B27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5A27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift */; }; DBB525082611EAC0002F1F29 /* Tabman in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* Tabman */; }; DBB5250E2611EBAF002F1F29 /* ProfileSegmentedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */; }; DBB525212611EBD6002F1F29 /* ProfilePagingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */; }; @@ -723,9 +716,7 @@ 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk - debug.xcconfig"; sourceTree = ""; }; 2D198642261BF09500F0B013 /* SearchResultItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultItem.swift; sourceTree = ""; }; 2D198648261C0B8500F0B013 /* SearchResultSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultSection.swift; sourceTree = ""; }; - 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioContainerView.swift; sourceTree = ""; }; 2D206B8525F5FB0900143C56 /* Double.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Double.swift; sourceTree = ""; }; - 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioPlaybackService.swift; sourceTree = ""; }; 2D206B9125F60EA700143C56 /* UIControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIControl.swift; sourceTree = ""; }; 2D24E1222626ED9D00A59D4F /* UIView+Gesture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+Gesture.swift"; sourceTree = ""; }; 2D32EAAB25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineMiddleLoaderTableViewCell.swift; sourceTree = ""; }; @@ -773,7 +764,6 @@ 2D9DB96A263A91D1007C1D71 /* APIService+DomainBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+DomainBlock.swift"; sourceTree = ""; }; 2DA504682601ADE7008F4E6C /* SawToothView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SawToothView.swift; sourceTree = ""; }; 2DA6054625F716A2006356F9 /* PlaybackState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaybackState.swift; sourceTree = ""; }; - 2DA6055025F74407006356F9 /* AudioContainerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioContainerViewModel.swift; sourceTree = ""; }; 2DA7D04325CA52B200804E11 /* TimelineLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineLoaderTableViewCell.swift; sourceTree = ""; }; 2DA7D04925CA52CB00804E11 /* TimelineBottomLoaderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineBottomLoaderTableViewCell.swift; sourceTree = ""; }; 2DA7D05025CA545E00804E11 /* LoadMoreConfigurableTableViewContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadMoreConfigurableTableViewContainer.swift; sourceTree = ""; }; @@ -812,11 +802,7 @@ 5DDDF1922617442700311060 /* Mastodon+Entity+Account.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Account.swift"; sourceTree = ""; }; 5DDDF1982617447F00311060 /* Mastodon+Entity+Tag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+Tag.swift"; sourceTree = ""; }; 5DDDF1A82617489F00311060 /* Mastodon+Entity+History.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Mastodon+Entity+History.swift"; sourceTree = ""; }; - 5DF1054025F886D400D6C0D4 /* VideoPlaybackService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlaybackService.swift; sourceTree = ""; }; - 5DF1054625F8870E00D6C0D4 /* VideoPlayerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlayerViewModel.swift; sourceTree = ""; }; 5DF1056325F887CB00D6C0D4 /* AVPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AVPlayer.swift; sourceTree = ""; }; - 5DF1057825F88A1D00D6C0D4 /* PlayerContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerContainerView.swift; sourceTree = ""; }; - 5DF1058425F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NeedsDependency+AVPlayerViewControllerDelegate.swift"; sourceTree = ""; }; 6130CBE4B26E3C976ACC1688 /* Pods-ShareActionExtension.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareActionExtension.asdk - debug.xcconfig"; path = "Target Support Files/Pods-ShareActionExtension/Pods-ShareActionExtension.asdk - debug.xcconfig"; sourceTree = ""; }; 75E3471C898DDD9631729B6E /* Pods-Mastodon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.release.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.release.xcconfig"; sourceTree = ""; }; 77EE917BC055E6621C0452B6 /* Pods-ShareActionExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareActionExtension.debug.xcconfig"; path = "Target Support Files/Pods-ShareActionExtension/Pods-ShareActionExtension.debug.xcconfig"; sourceTree = ""; }; @@ -989,7 +975,6 @@ DB49A61E25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EmojiService+CustomEmojiViewModel.swift"; sourceTree = ""; }; DB49A62425FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EmojiService+CustomEmojiViewModel+LoadState.swift"; sourceTree = ""; }; DB49A62A25FF36C700B98345 /* APIService+CustomEmoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+CustomEmoji.swift"; sourceTree = ""; }; - DB49A63C25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PlayerContainerView+MediaTypeIndicotorView.swift"; sourceTree = ""; }; DB4B777F26CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Intents.strings; sourceTree = ""; }; DB4B778226CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; DB4B778326CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Intents.stringsdict; sourceTree = ""; }; @@ -1196,8 +1181,6 @@ DB9D6BE825E4F5340051B173 /* SearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewController.swift; sourceTree = ""; }; DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewController.swift; sourceTree = ""; }; DB9D6BFE25E4F5940051B173 /* ProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewController.swift; sourceTree = ""; }; - DB9D6C0D25E4F9780051B173 /* MosaicImageViewContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MosaicImageViewContainer.swift; sourceTree = ""; }; - DB9D6C2225E502C60051B173 /* MosaicImageViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MosaicImageViewModel.swift; sourceTree = ""; }; DB9D7C20269824B80054B3DF /* APIService+Filter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Filter.swift"; sourceTree = ""; }; DB9E0D6E25EE008500CFDD76 /* UIInterpolatingMotionEffect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIInterpolatingMotionEffect.swift; sourceTree = ""; }; DB9F58EB26EF435000E7BBE9 /* AccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewController.swift; sourceTree = ""; }; @@ -1239,6 +1222,9 @@ DBAE3F9D2616E308004B8251 /* APIService+Mute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Mute.swift"; sourceTree = ""; }; DBAE3FAE26172FC0004B8251 /* RemoteProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteProfileViewModel.swift; sourceTree = ""; }; DBB3BA2926A81C020004F2D4 /* FLAnimatedImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FLAnimatedImageView.swift; sourceTree = ""; }; + DBB45B5527B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewVideoViewController.swift; sourceTree = ""; }; + DBB45B5827B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewVideoViewModel.swift; sourceTree = ""; }; + DBB45B5A27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewTransitionViewController.swift; sourceTree = ""; }; DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileSegmentedViewController.swift; sourceTree = ""; }; DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePagingViewController.swift; sourceTree = ""; }; DBB5252F2611EBF3002F1F29 /* ProfilePagingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePagingViewModel.swift; sourceTree = ""; }; @@ -1658,9 +1644,7 @@ DB9A489B26036E19008B817C /* MastodonAttachmentService */, DBBC24BD26A5441A00398BB9 /* ThemeService */, DB45FB0E25CA87D0005A8AC7 /* AuthenticationService.swift */, - 2D206B8B25F6015000143C56 /* AudioPlaybackService.swift */, 2DA6054625F716A2006356F9 /* PlaybackState.swift */, - 5DF1054025F886D400D6C0D4 /* VideoPlaybackService.swift */, DBC7A67B260DFADE00E57475 /* StatusPublishService.swift */, 2D9DB966263A76FB007C1D71 /* BlockDomainService.swift */, DB4924E126312AB200E9DB22 /* NotificationService.swift */, @@ -1681,7 +1665,6 @@ 2D5A3D3725CF8D9F002347D6 /* ScrollViewContainer.swift */, 2D38F1C525CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift */, 2D38F20725CD491300561493 /* DisposeBagCollectable.swift */, - 5DF1058425F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift */, DBE3CE12261D7D4200430CC6 /* StatusTableViewControllerAspect.swift */, DB1D84372657B275000346B3 /* SegmentedControlNavigateable.swift */, DB1D843326579931000346B3 /* TableViewControllerNavigateable.swift */, @@ -1727,7 +1710,6 @@ children = ( 2DA504672601ADBA008F4E6C /* Decoration */, 2D42FF8325C82245004A627A /* Button */, - DB9D6C1325E4F97A0051B173 /* Container */, DBA9B90325F1D4420012E7B6 /* Control */, 2D152A8A25C295B8009AA50C /* Content */, DB1D187125EF5BBD003F1F23 /* TableView */, @@ -2350,6 +2332,8 @@ DB6180DE263919350018D199 /* MediaPreview */ = { isa = PBXGroup; children = ( + DBB45B5727B39FCC002DC5A7 /* Video */, + DB6180F026391CAB0018D199 /* Image */, DB6180E1263919780018D199 /* Paging */, DB6180DC263918E30018D199 /* MediaPreviewViewController.swift */, DB6180F926391F2E0018D199 /* MediaPreviewViewModel.swift */, @@ -2360,7 +2344,6 @@ DB6180E1263919780018D199 /* Paging */ = { isa = PBXGroup; children = ( - DB6180F026391CAB0018D199 /* Image */, DB6180DF2639194B0018D199 /* MediaPreviewPagingViewController.swift */, ); path = Paging; @@ -2384,6 +2367,7 @@ DB6180EA26391C140018D199 /* MediaPreviewTransitionItem.swift */, DB6180F526391D580018D199 /* MediaPreviewableViewController.swift */, DB6180F726391D660018D199 /* MediaPreviewingViewController.swift */, + DBB45B5A27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift */, ); path = MediaPreview; sourceTree = ""; @@ -2842,23 +2826,9 @@ path = Profile; sourceTree = ""; }; - DB9D6C1325E4F97A0051B173 /* Container */ = { - isa = PBXGroup; - children = ( - DB9D6C0D25E4F9780051B173 /* MosaicImageViewContainer.swift */, - 2D206B7125F5D27F00143C56 /* AudioContainerView.swift */, - 5DF1057825F88A1D00D6C0D4 /* PlayerContainerView.swift */, - DB49A63C25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift */, - ); - path = Container; - sourceTree = ""; - }; DB9D6C2025E502C60051B173 /* ViewModel */ = { isa = PBXGroup; children = ( - DB9D6C2225E502C60051B173 /* MosaicImageViewModel.swift */, - 2DA6055025F74407006356F9 /* AudioContainerViewModel.swift */, - 5DF1054625F8870E00D6C0D4 /* VideoPlayerViewModel.swift */, DB7274F3273BB9B200577D95 /* ListBatchFetchViewModel.swift */, ); path = ViewModel; @@ -2929,6 +2899,15 @@ path = View; sourceTree = ""; }; + DBB45B5727B39FCC002DC5A7 /* Video */ = { + isa = PBXGroup; + children = ( + DBB45B5527B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift */, + DBB45B5827B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift */, + ); + path = Video; + sourceTree = ""; + }; DBB525132611EBB1002F1F29 /* Segmented */ = { isa = PBXGroup; children = ( @@ -3787,7 +3766,6 @@ DBAE3F8E2616E0B1004B8251 /* APIService+Block.swift in Sources */, DB1D843426579931000346B3 /* TableViewControllerNavigateable.swift in Sources */, 0FAA0FDF25E0B57E0017CCDE /* WelcomeViewController.swift in Sources */, - 2D206B8C25F6015000143C56 /* AudioPlaybackService.swift in Sources */, DB65C63727A2AF6C008BAC2E /* ReportItem.swift in Sources */, 2D59819B25E4A581000FB903 /* MastodonConfirmEmailViewController.swift in Sources */, DB45FB1D25CA9D23005A8AC7 /* APIService+HomeTimeline.swift in Sources */, @@ -3799,7 +3777,6 @@ DB4FFC2B269EC39600D62E92 /* SearchToSearchDetailViewControllerAnimatedTransitioning.swift in Sources */, DBCC3B9526157E6E0045B23D /* APIService+Relationship.swift in Sources */, DB5B7298273112C800081888 /* FollowingListViewModel.swift in Sources */, - 5DF1054125F886D400D6C0D4 /* VideoPlaybackService.swift in Sources */, DB6B35182601FA3400DC1E11 /* MastodonAttachmentService.swift in Sources */, 0FB3D2F725E4C24D00AAD544 /* MastodonPickServerViewModel.swift in Sources */, 2D61335E25C1894B00CAE157 /* APIService.swift in Sources */, @@ -3934,9 +3911,7 @@ 2D4AD8A826316D3500613EFC /* SelectedAccountItem.swift in Sources */, DBE3CDFB261C6CA500430CC6 /* FavoriteViewModel.swift in Sources */, DB8AF52F25C13561002E6C99 /* DocumentStore.swift in Sources */, - 2D206B7225F5D27F00143C56 /* AudioContainerView.swift in Sources */, DBBC24C126A5443100398BB9 /* SystemTheme.swift in Sources */, - DB9D6C2425E502C60051B173 /* MosaicImageViewModel.swift in Sources */, DBE3CE01261D623D00430CC6 /* FavoriteViewModel+State.swift in Sources */, 2D82BA0525E7897700E36F0F /* MastodonResendEmailViewModelNavigationDelegateShim.swift in Sources */, 2D38F1EB25CD477000561493 /* HomeTimelineViewModel+LoadLatestState.swift in Sources */, @@ -3974,7 +3949,6 @@ DBE0822425CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift in Sources */, 5B90C45E262599800002E742 /* SettingsViewModel.swift in Sources */, 2D82B9FF25E7863200E36F0F /* OnboardingViewControllerAppearance.swift in Sources */, - 5DF1054725F8870E00D6C0D4 /* VideoPlayerViewModel.swift in Sources */, DB73BF43271192BB00781945 /* InstanceService.swift in Sources */, DB67D08427312970006A36CF /* APIService+Following.swift in Sources */, DB025B78278D606A002F581E /* StatusItem.swift in Sources */, @@ -3991,7 +3965,6 @@ 2D84350525FF858100EECE90 /* UIScrollView.swift in Sources */, DB49A61F25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift in Sources */, 5B24BBDB262DB14800A9381B /* ReportViewModel+Diffable.swift in Sources */, - 2DA6055125F74407006356F9 /* AudioContainerViewModel.swift in Sources */, DB4F0968269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift in Sources */, 0FB3D2FE25E4CB6400AAD544 /* OnboardingHeadlineTableViewCell.swift in Sources */, 5DA732CC2629CEF500A92342 /* UIView+Remove.swift in Sources */, @@ -4068,6 +4041,7 @@ 2D38F1C625CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift in Sources */, DBF1D257269DBAC600C1C08A /* SearchDetailViewModel.swift in Sources */, DB03F7F52689B782007B274C /* ComposeTableView.swift in Sources */, + DBB45B5927B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift in Sources */, DB6C8C0F25F0A6AE00AAA452 /* Mastodon+Entity+Error.swift in Sources */, DB0FCB76279571C5006C02E2 /* ThreadViewController+DataSourceProvider.swift in Sources */, DB0FCB7027951368006C02E2 /* TimelineMiddleLoaderTableViewCell+ViewModel.swift in Sources */, @@ -4118,7 +4092,6 @@ DB697DE1278F5296004EF2F7 /* DataSourceFacade+Model.swift in Sources */, DBCC3B8F26148F7B0045B23D /* CachedProfileViewModel.swift in Sources */, DB4F097526A037F500D62E92 /* SearchHistoryViewModel.swift in Sources */, - DB49A63D25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift in Sources */, DB6180F826391D660018D199 /* MediaPreviewingViewController.swift in Sources */, DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */, DB71C7CB271D5A0300BE3819 /* LineChartView.swift in Sources */, @@ -4148,7 +4121,6 @@ DB6D9F57263577D2008423CD /* APIService+CoreData+Setting.swift in Sources */, DB0FCB822796AC78006C02E2 /* UserTimelineViewController+DataSourceProvider.swift in Sources */, DB63F773279A87DC00455B82 /* Notification+Property.swift in Sources */, - DB9D6C0E25E4F9780051B173 /* MosaicImageViewContainer.swift in Sources */, DBCBCC0D2680B908000F5B51 /* HomeTimelinePreference.swift in Sources */, DB0EF72E26FDB24F00347686 /* SidebarListContentView.swift in Sources */, DBBE1B4525F3474B0081417A /* MastodonPickServerAppearance.swift in Sources */, @@ -4170,7 +4142,6 @@ 5B90C460262599800002E742 /* SettingsAppearanceTableViewCell.swift in Sources */, DB63F74D27993F5B00455B82 /* SearchHistoryUserCollectionViewCell.swift in Sources */, DB8AF54425C13647002E6C99 /* SceneCoordinator.swift in Sources */, - 5DF1058525F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift in Sources */, DB73BF45271195AC00781945 /* APIService+CoreData+Instance.swift in Sources */, DB336F21278D6D960031E64B /* MastodonEmoji.swift in Sources */, DB1D84382657B275000346B3 /* SegmentedControlNavigateable.swift in Sources */, @@ -4200,6 +4171,7 @@ DB1D842E26552C4D000346B3 /* StatusTableViewControllerNavigateable.swift in Sources */, DB938F1F2624382F00E5B6C1 /* ThreadViewModel+Diffable.swift in Sources */, DB98EB6B27B243470082E365 /* SettingsAppearanceTableViewCell+ViewModel.swift in Sources */, + DBB45B5B27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift in Sources */, DB482A4B261340A7008AE74C /* APIService+UserTimeline.swift in Sources */, DB427DD825BAA00100D1B89D /* SceneDelegate.swift in Sources */, DB4932B926F31AD300EF46D4 /* BadgeButton.swift in Sources */, @@ -4211,6 +4183,7 @@ DB51D173262832380062B7A1 /* BlurHashEncode.swift in Sources */, 2D32EAAC25CB96DC00C9ED86 /* TimelineMiddleLoaderTableViewCell.swift in Sources */, DB87D4512609CF1E00D12C0D /* ComposeStatusPollOptionAppendEntryCollectionViewCell.swift in Sources */, + DBB45B5627B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift in Sources */, DBBC24C026A5443100398BB9 /* MastodonTheme.swift in Sources */, DB0FCB8027968F70006C02E2 /* MastodonStatusThreadViewModel.swift in Sources */, DB0FCB6E27950E6B006C02E2 /* MastodonMention.swift in Sources */, @@ -4257,7 +4230,6 @@ DB6180E326391A4C0018D199 /* ViewControllerAnimatedTransitioning.swift in Sources */, 0FB3D31E25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift in Sources */, DB0FCB882796BDA9006C02E2 /* SearchItem.swift in Sources */, - 5DF1057925F88A1D00D6C0D4 /* PlayerContainerView.swift in Sources */, DB336F3D278D80040031E64B /* FeedFetchedResultsController.swift in Sources */, DB6D9F4926353FD7008423CD /* Subscription.swift in Sources */, DB45FB0F25CA87D0005A8AC7 /* AuthenticationService.swift in Sources */, diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index a5240e44a..7e9982d3c 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 25 + 20 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 27 + 19 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 26 + 18 SuppressBuildableAutocreation diff --git a/Mastodon/Protocol/NeedsDependency+AVPlayerViewControllerDelegate.swift b/Mastodon/Protocol/NeedsDependency+AVPlayerViewControllerDelegate.swift deleted file mode 100644 index e52fdc059..000000000 --- a/Mastodon/Protocol/NeedsDependency+AVPlayerViewControllerDelegate.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// NeedsDependency+AVPlayerViewControllerDelegate.swift -// Mastodon -// -// Created by xiaojian sun on 2021/3/10. -// - -import Foundation -import AVKit - -extension NeedsDependency where Self: AVPlayerViewControllerDelegate { - - func handlePlayerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - context.videoPlaybackService.playerViewModel(for: playerViewController)?.isFullScreenPresentationing = true - } - - func handlePlayerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { - context.videoPlaybackService.playerViewModel(for: playerViewController)?.isFullScreenPresentationing = false - } - -} diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift index a348085b0..9b3b9a375 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift @@ -122,9 +122,7 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider & MediaPrev let needsToggleMediaSensitive: Bool = try await managedObjectContext.perform { guard let _status = status.object(in: managedObjectContext) else { return false } let status = _status.reblog ?? _status - guard status.sensitive else { return false } - guard status.isMediaSensitiveToggled else { return true } - return false + return status.isMediaSensitiveToggled ? !status.sensitive : status.sensitive } guard !needsToggleMediaSensitive else { @@ -407,5 +405,29 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { ) } // end Task } + + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + mediaGridContainerView: MediaGridContainerView, + mediaSensitiveButtonDidPressed button: UIButton + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + try await DataSourceFacade.responseToToggleMediaSensitiveAction( + dependency: self, + status: status + ) + } // end Task + } + } diff --git a/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageView.swift b/Mastodon/Scene/MediaPreview/Image/MediaPreviewImageView.swift similarity index 100% rename from Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageView.swift rename to Mastodon/Scene/MediaPreview/Image/MediaPreviewImageView.swift diff --git a/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewController.swift b/Mastodon/Scene/MediaPreview/Image/MediaPreviewImageViewController.swift similarity index 92% rename from Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewController.swift rename to Mastodon/Scene/MediaPreview/Image/MediaPreviewImageViewController.swift index 27712b9a4..127c4c0c0 100644 --- a/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewController.swift +++ b/Mastodon/Scene/MediaPreview/Image/MediaPreviewImageViewController.swift @@ -163,3 +163,21 @@ extension MediaPreviewImageViewController { case share } } + +// MARK: - MediaPreviewTransitionViewController +extension MediaPreviewImageViewController: MediaPreviewTransitionViewController { + var mediaPreviewTransitionContext: MediaPreviewTransitionContext? { + let imageView = previewImageView.imageView + let _snapshot: UIView? = imageView.snapshotView(afterScreenUpdates: false) + + guard let snapshot = _snapshot else { + return nil + } + + return MediaPreviewTransitionContext( + transitionView: imageView, + snapshot: snapshot, + snapshotTransitioning: snapshot + ) + } +} diff --git a/Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewModel.swift b/Mastodon/Scene/MediaPreview/Image/MediaPreviewImageViewModel.swift similarity index 100% rename from Mastodon/Scene/MediaPreview/Paging/Image/MediaPreviewImageViewModel.swift rename to Mastodon/Scene/MediaPreview/Image/MediaPreviewImageViewModel.swift diff --git a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift index 543ba8d66..b8355c3a3 100644 --- a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift +++ b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift @@ -105,7 +105,7 @@ extension MediaPreviewViewController { .sink { [weak self] index in guard let self = self else { return } switch self.viewModel.transitionItem.source { - case .attachment(_): + case .attachment: break case .attachments(let mediaGridContainerView): UIView.animate(withDuration: 0.3) { @@ -117,6 +117,24 @@ extension MediaPreviewViewController { } } .store(in: &disposeBag) + + viewModel.$currentPage + .receive(on: DispatchQueue.main) + .sink { [weak self] index in + guard let self = self else { return } + switch self.viewModel.item { + case .attachment(let previewContext): + let needsHideCloseButton: Bool = { + guard index < previewContext.attachments.count else { return false } + let attachment = previewContext.attachments[index] + return attachment.kind == .video // not hide buttno for audio + }() + self.closeButtonBackground.isHidden = needsHideCloseButton + default: + break + } + } + .store(in: &disposeBag) } } @@ -147,6 +165,10 @@ extension MediaPreviewViewController: MediaPreviewingViewController { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: dismissible %s", ((#file as NSString).lastPathComponent), #line, #function, dismissible ? "true" : "false") return dismissible } + + if let _ = pagingViewController.currentViewController as? MediaPreviewVideoViewController { + return true + } os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: dismissible false", ((#file as NSString).lastPathComponent), #line, #function) return false diff --git a/Mastodon/Scene/MediaPreview/MediaPreviewViewModel.swift b/Mastodon/Scene/MediaPreview/MediaPreviewViewModel.swift index 2de19b267..5912e559a 100644 --- a/Mastodon/Scene/MediaPreview/MediaPreviewViewModel.swift +++ b/Mastodon/Scene/MediaPreview/MediaPreviewViewModel.swift @@ -38,17 +38,42 @@ final class MediaPreviewViewModel: NSObject { case .attachment(let previewContext): currentPage = previewContext.initialIndex for (i, attachment) in previewContext.attachments.enumerated() { - let viewController = MediaPreviewImageViewController() - let viewModel = MediaPreviewImageViewModel( - context: context, - item: .remote(.init( - assetURL: attachment.assetURL.flatMap { URL(string: $0) }, - thumbnail: previewContext.thumbnail(at: i), - altText: attachment.altDescription - )) - ) - viewController.viewModel = viewModel - viewControllers.append(viewController) + switch attachment.kind { + case .image: + let viewController = MediaPreviewImageViewController() + let viewModel = MediaPreviewImageViewModel( + context: context, + item: .remote(.init( + assetURL: attachment.assetURL.flatMap { URL(string: $0) }, + thumbnail: previewContext.thumbnail(at: i), + altText: attachment.altDescription + )) + ) + viewController.viewModel = viewModel + viewControllers.append(viewController) + case .gifv: + let viewController = MediaPreviewVideoViewController() + let viewModel = MediaPreviewVideoViewModel( + context: context, + item: .gif(.init( + assetURL: attachment.assetURL.flatMap { URL(string: $0) }, + previewURL: attachment.previewURL.flatMap { URL(string: $0) } + )) + ) + viewController.viewModel = viewModel + viewControllers.append(viewController) + case .video, .audio: + let viewController = MediaPreviewVideoViewController() + let viewModel = MediaPreviewVideoViewModel( + context: context, + item: .video(.init( + assetURL: attachment.assetURL.flatMap { URL(string: $0) }, + previewURL: attachment.previewURL.flatMap { URL(string: $0) } + )) + ) + viewController.viewModel = viewModel + viewControllers.append(viewController) + } // end switch attachment.kind { … } } // end for … in … case .profileAvatar(let previewContext): let viewController = MediaPreviewImageViewController() @@ -75,68 +100,13 @@ final class MediaPreviewViewModel: NSObject { viewController.viewModel = viewModel viewControllers.append(viewController) } // end switch -// let status = managedObjectContext.object(with: meta.statusObjectID) as! Status -// for (entity, image) in zip(status.attachments, meta.preloadThumbnailImages) { -// let thumbnail: UIImage? = image.flatMap { $0.size != CGSize(width: 1, height: 1) ? $0 : nil } -// switch entity.kind { -// case .image: -// guard let url = URL(string: entity.assetURL ?? "") else { continue } -// let meta = MediaPreviewImageViewModel.RemoteImagePreviewMeta(url: url, thumbnail: thumbnail, altText: entity.altDescription) -// let mediaPreviewImageModel = MediaPreviewImageViewModel(meta: meta) -// let mediaPreviewImageViewController = MediaPreviewImageViewController() -// mediaPreviewImageViewController.viewModel = mediaPreviewImageModel -// viewControllers.append(mediaPreviewImageViewController) -// default: -// continue -// } -// } -// } + self.viewControllers = viewControllers self.currentPage = currentPage self.transitionItem = transitionItem super.init() } - -// init(context: AppContext, meta: ProfileBannerImagePreviewMeta, pushTransitionItem: MediaPreviewTransitionItem) { -// self.context = context -// self.item = .profileBanner(meta) -// var viewControllers: [UIViewController] = [] -// let managedObjectContext = self.context.managedObjectContext -// managedObjectContext.performAndWait { -// let account = managedObjectContext.object(with: meta.accountObjectID) as! MastodonUser -// let avatarURL = account.headerImageURLWithFallback(domain: account.domain) -// let meta = MediaPreviewImageViewModel.RemoteImagePreviewMeta(url: avatarURL, thumbnail: meta.preloadThumbnailImage, altText: nil) -// let mediaPreviewImageModel = MediaPreviewImageViewModel(meta: meta) -// let mediaPreviewImageViewController = MediaPreviewImageViewController() -// mediaPreviewImageViewController.viewModel = mediaPreviewImageModel -// viewControllers.append(mediaPreviewImageViewController) -// } -// self.viewControllers = viewControllers -// self.currentPage = CurrentValueSubject(0) -// self.transitionItem = pushTransitionItem -// super.init() -// } -// -// init(context: AppContext, meta: ProfileAvatarImagePreviewMeta, pushTransitionItem: MediaPreviewTransitionItem) { -// self.context = context -// self.item = .profileAvatar(meta) -// var viewControllers: [UIViewController] = [] -// let managedObjectContext = self.context.managedObjectContext -// managedObjectContext.performAndWait { -// let account = managedObjectContext.object(with: meta.accountObjectID) as! MastodonUser -// let avatarURL = account.avatarImageURLWithFallback(domain: account.domain) -// let meta = MediaPreviewImageViewModel.RemoteImagePreviewMeta(url: avatarURL, thumbnail: meta.preloadThumbnailImage, altText: nil) -// let mediaPreviewImageModel = MediaPreviewImageViewModel(meta: meta) -// let mediaPreviewImageViewController = MediaPreviewImageViewController() -// mediaPreviewImageViewController.viewModel = mediaPreviewImageModel -// viewControllers.append(mediaPreviewImageViewController) -// } -// self.viewControllers = viewControllers -// self.currentPage = CurrentValueSubject(0) -// self.transitionItem = pushTransitionItem -// super.init() -// } - + } extension MediaPreviewViewModel { diff --git a/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift new file mode 100644 index 000000000..5d5dec84f --- /dev/null +++ b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift @@ -0,0 +1,156 @@ +// +// MediaPreviewVideoViewController.swift +// Mastodon +// +// Created by MainasuK on 2022-2-9. +// + +import os.log +import UIKit +import AVKit +import Combine +import func AVFoundation.AVMakeRect + +final class MediaPreviewVideoViewController: UIViewController { + + let logger = Logger(subsystem: "MediaPreviewVideoViewController", category: "ViewController") + + var disposeBag = Set() + var viewModel: MediaPreviewVideoViewModel! + + let playerViewController = AVPlayerViewController() +// var pictureInPictureController: AVPictureInPictureController? + + let previewImageView = UIImageView() + + deinit { + os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + playerViewController.player?.pause() + try? AVAudioSession.sharedInstance().setCategory(.ambient) + try? AVAudioSession.sharedInstance().setActive(false, options: .notifyOthersOnDeactivation) + } + +} + +extension MediaPreviewVideoViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + addChild(playerViewController) + playerViewController.view.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(playerViewController.view) + NSLayoutConstraint.activate([ + playerViewController.view.centerXAnchor.constraint(equalTo: view.centerXAnchor), + playerViewController.view.centerYAnchor.constraint(equalTo: view.centerYAnchor), + playerViewController.view.widthAnchor.constraint(equalTo: view.widthAnchor), + playerViewController.view.heightAnchor.constraint(equalTo: view.heightAnchor), + ]) + playerViewController.didMove(toParent: self) + + if let contentOverlayView = playerViewController.contentOverlayView { + previewImageView.translatesAutoresizingMaskIntoConstraints = false + contentOverlayView.addSubview(previewImageView) + NSLayoutConstraint.activate([ + previewImageView.topAnchor.constraint(equalTo: contentOverlayView.topAnchor), + previewImageView.leadingAnchor.constraint(equalTo: contentOverlayView.leadingAnchor), + previewImageView.trailingAnchor.constraint(equalTo: contentOverlayView.trailingAnchor), + previewImageView.bottomAnchor.constraint(equalTo: contentOverlayView.bottomAnchor), + ]) + } + + playerViewController.delegate = self + playerViewController.view.backgroundColor = .clear + playerViewController.player = viewModel.player + playerViewController.allowsPictureInPicturePlayback = true + + switch viewModel.item { + case .video: + break + case .gif: + playerViewController.showsPlaybackControls = false + } + + viewModel.player?.play() + viewModel.playbackState = .playing + + if let previewURL = viewModel.item.previewURL { + previewImageView.contentMode = .scaleAspectFit + previewImageView.af.setImage( + withURL: previewURL, + placeholderImage: .placeholder(color: .systemFill) + ) + + playerViewController.publisher(for: \.isReadyForDisplay) + .receive(on: DispatchQueue.main) + .sink { [weak self] isReadyForDisplay in + guard let self = self else { return } + self.previewImageView.isHidden = isReadyForDisplay + } + .store(in: &disposeBag) + } + } + +} + +// MARK: - ShareActivityProvider +//extension MediaPreviewVideoViewController: ShareActivityProvider { +// var activities: [Any] { +// return [] +// } +// +// var applicationActivities: [UIActivity] { +// switch viewModel.item { +// case .gif(let mediaContext): +// guard let url = mediaContext.assetURL else { return [] } +// return [ +// SavePhotoActivity(context: viewModel.context, url: url, resourceType: .video) +// ] +// default: +// return [] +// } +// } +//} + +// MARK: - AVPlayerViewControllerDelegate +extension MediaPreviewVideoViewController: AVPlayerViewControllerDelegate { + +} + + +// MARK: - MediaPreviewTransitionViewController +extension MediaPreviewVideoViewController: MediaPreviewTransitionViewController { + var mediaPreviewTransitionContext: MediaPreviewTransitionContext? { + guard let playerView = playerViewController.view else { return nil } + let _currentFrame: UIImage? = { + guard let player = playerViewController.player else { return nil } + guard let asset = player.currentItem?.asset else { return nil } + let assetImageGenerator = AVAssetImageGenerator(asset: asset) + assetImageGenerator.appliesPreferredTrackTransform = true // fix orientation + do { + let cgImage = try assetImageGenerator.copyCGImage(at: player.currentTime(), actualTime: nil) + let image = UIImage(cgImage: cgImage) + return image + } catch { + return previewImageView.image + } + }() + let _snapshot: UIView? = { + guard let currentFrame = _currentFrame else { return nil } + let size = AVMakeRect(aspectRatio: currentFrame.size, insideRect: view.frame).size + let imageView = UIImageView(frame: CGRect(origin: .zero, size: size)) + imageView.image = currentFrame + return imageView + }() + guard let snapshot = _snapshot else { + return nil + } + + return MediaPreviewTransitionContext( + transitionView: playerView, + snapshot: snapshot, + snapshotTransitioning: snapshot + ) + } +} + diff --git a/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewModel.swift b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewModel.swift new file mode 100644 index 000000000..7485bdb44 --- /dev/null +++ b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewModel.swift @@ -0,0 +1,140 @@ +// +// MediaPreviewVideoViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-2-9. +// + +import os.log +import UIKit +import AVKit +import Combine +import AlamofireImage + +final class MediaPreviewVideoViewModel { + + let logger = Logger(subsystem: "MediaPreviewVideoViewModel", category: "ViewModel") + + var disposeBag = Set() + + // input + let context: AppContext + let item: Item + + // output + public private(set) var player: AVPlayer? + private var playerLooper: AVPlayerLooper? + @Published var playbackState = PlaybackState.unknown + + init(context: AppContext, item: Item) { + self.context = context + self.item = item + // end init + + switch item { + case .video(let mediaContext): + guard let assertURL = mediaContext.assetURL else { return } + let playerItem = AVPlayerItem(url: assertURL) + let _player = AVPlayer(playerItem: playerItem) + self.player = _player + + case .gif(let mediaContext): + guard let assertURL = mediaContext.assetURL else { return } + let playerItem = AVPlayerItem(url: assertURL) + let _player = AVQueuePlayer(playerItem: playerItem) + _player.isMuted = true + self.player = _player + if let templateItem = _player.items().first { + let _playerLooper = AVPlayerLooper(player: _player, templateItem: templateItem) + self.playerLooper = _playerLooper + } + } + + guard let player = player else { + assertionFailure() + return + } + + // setup player state observer + $playbackState + .receive(on: DispatchQueue.main) + .sink { [weak self] status in + guard let self = self else { return } + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): player state: \(status.description)") + + switch status { + case .unknown, .buffering, .readyToPlay: + break + case .playing: + try? AVAudioSession.sharedInstance().setCategory(.playback) + try? AVAudioSession.sharedInstance().setActive(true) + case .paused, .stopped, .failed: + try? AVAudioSession.sharedInstance().setCategory(.ambient) // set to ambient to allow mixed (needed for GIFV) + try? AVAudioSession.sharedInstance().setActive(false, options: .notifyOthersOnDeactivation) + } + } + .store(in: &disposeBag) + + player.publisher(for: \.status, options: [.initial, .new]) + .sink(receiveValue: { [weak self] status in + guard let self = self else { return } + switch status { + case .failed: + self.playbackState = .failed + case .readyToPlay: + self.playbackState = .readyToPlay + case .unknown: + self.playbackState = .unknown + @unknown default: + assertionFailure() + } + }) + .store(in: &disposeBag) + NotificationCenter.default.publisher(for: .AVPlayerItemDidPlayToEndTime, object: nil) + .sink { [weak self] notification in + guard let self = self else { return } + guard let playerItem = notification.object as? AVPlayerItem, + let urlAsset = playerItem.asset as? AVURLAsset + else { return } + print(urlAsset.url) + guard urlAsset.url == item.assetURL else { return } + self.playbackState = .stopped + } + .store(in: &disposeBag) + } + +} + +extension MediaPreviewVideoViewModel { + + enum Item { + case video(RemoteVideoContext) + case gif(RemoteGIFContext) + + var previewURL: URL? { + switch self { + case .video(let mediaContext): return mediaContext.previewURL + case .gif(let mediaContext): return mediaContext.previewURL + } + } + + var assetURL: URL? { + switch self { + case .video(let mediaContext): return mediaContext.assetURL + case .gif(let mediaContext): return mediaContext.assetURL + } + } + } + + struct RemoteVideoContext { + let assetURL: URL? + let previewURL: URL? + // let thumbnail: UIImage? + } + + struct RemoteGIFContext { + let assetURL: URL? + let previewURL: URL? + } + +} diff --git a/Mastodon/Scene/Share/View/Container/AudioContainerView.swift b/Mastodon/Scene/Share/View/Container/AudioContainerView.swift deleted file mode 100644 index 0dd11d139..000000000 --- a/Mastodon/Scene/Share/View/Container/AudioContainerView.swift +++ /dev/null @@ -1,131 +0,0 @@ -// -// AudioViewContainer.swift -// Mastodon -// -// Created by sxiaojian on 2021/3/8. -// - -import CoreDataStack -import os.log -import UIKit -import MastodonAsset -import MastodonLocalization - -final class AudioContainerView: UIView { - static let cornerRadius: CGFloat = 22 - - let container: UIStackView = { - let stackView = UIStackView() - stackView.axis = .horizontal - stackView.distribution = .fill - stackView.alignment = .center - stackView.spacing = 11 - stackView.layoutMargins = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8) - stackView.isLayoutMarginsRelativeArrangement = true - stackView.layer.cornerRadius = AudioContainerView.cornerRadius - stackView.clipsToBounds = true - stackView.backgroundColor = Asset.Colors.brandBlue.color - stackView.translatesAutoresizingMaskIntoConstraints = false - return stackView - }() - - let playButtonBackgroundView: UIView = { - let view = UIView() - view.layer.cornerRadius = 16 - view.clipsToBounds = true - view.backgroundColor = Asset.Colors.brandBlue.color - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - let playButton: UIButton = { - let button = HighlightDimmableButton(type: .custom) - let image = UIImage(systemName: "play.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 32, weight: .bold))! - button.setImage(image.withRenderingMode(.alwaysTemplate), for: .normal) - - let pauseImage = UIImage(systemName: "pause.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 32, weight: .bold))! - button.setImage(pauseImage.withRenderingMode(.alwaysTemplate), for: .selected) - - button.tintColor = .white - button.translatesAutoresizingMaskIntoConstraints = false - button.isEnabled = true - return button - }() - - let slider: UISlider = { - let slider = UISlider() - slider.isContinuous = true - slider.translatesAutoresizingMaskIntoConstraints = false - slider.minimumTrackTintColor = Asset.Colors.Slider.track.color - slider.maximumTrackTintColor = Asset.Colors.Slider.track.color - if let image = UIImage.placeholder(size: CGSize(width: 22, height: 22), color: .white).withRoundedCorners(radius: 11) { - slider.setThumbImage(image, for: .normal) - } - return slider - }() - - let timeLabel: UILabel = { - let label = UILabel() - label.translatesAutoresizingMaskIntoConstraints = false - label.font = .systemFont(ofSize: 13, weight: .regular) - label.textColor = .white - label.textAlignment = UIApplication.shared.userInterfaceLayoutDirection == .leftToRight ? .right : .left - return label - }() - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } -} - -extension AudioContainerView { - private func _init() { - addSubview(container) - NSLayoutConstraint.activate([ - container.topAnchor.constraint(equalTo: topAnchor), - container.leadingAnchor.constraint(equalTo: leadingAnchor), - trailingAnchor.constraint(equalTo: container.trailingAnchor), - bottomAnchor.constraint(equalTo: container.bottomAnchor), - ]) - - // checkmark - playButtonBackgroundView.addSubview(playButton) - container.addArrangedSubview(playButtonBackgroundView) - NSLayoutConstraint.activate([ - playButton.centerXAnchor.constraint(equalTo: playButtonBackgroundView.centerXAnchor), - playButton.centerYAnchor.constraint(equalTo: playButtonBackgroundView.centerYAnchor), - playButtonBackgroundView.heightAnchor.constraint(equalToConstant: 32).priority(.required - 1), - playButtonBackgroundView.widthAnchor.constraint(equalToConstant: 32).priority(.required - 1), - ]) - - container.addArrangedSubview(slider) - - container.addArrangedSubview(timeLabel) - NSLayoutConstraint.activate([ - timeLabel.widthAnchor.constraint(equalToConstant: 40).priority(.required - 1), - ]) - } -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct AudioContainerView_Previews: PreviewProvider { - - static var previews: some View { - UIViewPreview(width: 375) { - AudioContainerView() - } - .previewLayout(.fixed(width: 375, height: 100)) - } - -} - -#endif - diff --git a/Mastodon/Scene/Share/View/Container/MosaicImageViewContainer.swift b/Mastodon/Scene/Share/View/Container/MosaicImageViewContainer.swift deleted file mode 100644 index a62230441..000000000 --- a/Mastodon/Scene/Share/View/Container/MosaicImageViewContainer.swift +++ /dev/null @@ -1,497 +0,0 @@ -// -// MosaicImageViewContainer.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-2-23. -// - -import os.log -import func AVFoundation.AVMakeRect -import UIKit - -protocol MosaicImageViewContainerPresentable: AnyObject { - var mosaicImageViewContainer: MosaicImageViewContainer { get } - var isRevealing: Bool { get } -} - -protocol MosaicImageViewContainerDelegate: AnyObject { - func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, didTapImageView imageView: UIImageView, atIndex index: Int) - func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) -} - -final class MosaicImageViewContainer: UIView { - - weak var delegate: MosaicImageViewContainerDelegate? - - let container = UIStackView() - private(set) lazy var imageViews: [UIImageView] = { - (0..<4).map { _ -> UIImageView in - let imageView = UIImageView() - imageView.isUserInteractionEnabled = true - let tapGesture = UITapGestureRecognizer.singleTapGestureRecognizer - tapGesture.addTarget(self, action: #selector(MosaicImageViewContainer.photoTapGestureRecognizerHandler(_:))) - imageView.addGestureRecognizer(tapGesture) - imageView.isAccessibilityElement = true - imageView.backgroundColor = .systemFill - return imageView - } - }() - let blurhashOverlayImageViews: [UIImageView] = { - (0..<4).map { _ in UIImageView() } - }() - - let contentWarningOverlayView: ContentWarningOverlayView = { - let contentWarningOverlayView = ContentWarningOverlayView() - contentWarningOverlayView.configure(style: .media) - return contentWarningOverlayView - }() - - private var containerHeightLayoutConstraint: NSLayoutConstraint! - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - -} - -extension MosaicImageViewContainer: ContentWarningOverlayViewDelegate { - func contentWarningOverlayViewDidPressed(_ contentWarningOverlayView: ContentWarningOverlayView) { - self.delegate?.mosaicImageViewContainer(self, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } -} - -extension MosaicImageViewContainer { - - private func _init() { - // accessibility - accessibilityIgnoresInvertColors = true - - container.translatesAutoresizingMaskIntoConstraints = false - container.axis = .horizontal - container.distribution = .fillEqually - addSubview(container) - containerHeightLayoutConstraint = container.heightAnchor.constraint(equalToConstant: 162).priority(.required - 1) - NSLayoutConstraint.activate([ - container.topAnchor.constraint(equalTo: topAnchor), - container.leadingAnchor.constraint(equalTo: leadingAnchor), - trailingAnchor.constraint(equalTo: container.trailingAnchor), - bottomAnchor.constraint(equalTo: container.bottomAnchor), - containerHeightLayoutConstraint - ]) - - contentWarningOverlayView.delegate = self - } - -} - -extension MosaicImageViewContainer { - - func resetImageTask() { - imageViews.forEach { imageView in - imageView.af.cancelImageRequest() - imageView.image = nil - } - } - - func reset() { - resetImageTask() - - container.arrangedSubviews.forEach { subview in - container.removeArrangedSubview(subview) - subview.removeFromSuperview() - } - container.subviews.forEach { subview in - subview.removeFromSuperview() - } - imageViews.forEach { imageView in - imageView.constraints.forEach { imageView.removeConstraint($0) } - imageView.removeFromSuperview() - imageView.layer.maskedCorners = [ - .layerMinXMinYCorner, .layerMaxXMinYCorner, - .layerMinXMaxYCorner, .layerMaxXMaxYCorner - ] - imageView.image = nil - } - blurhashOverlayImageViews.forEach { imageView in - imageView.constraints.forEach { imageView.removeConstraint($0) } - imageView.removeFromSuperview() - imageView.layer.maskedCorners = [ - .layerMinXMinYCorner, .layerMaxXMinYCorner, - .layerMinXMaxYCorner, .layerMaxXMaxYCorner - ] - imageView.image = nil - } - - contentWarningOverlayView.removeFromSuperview() - contentWarningOverlayView.blurVisualEffectView.effect = ContentWarningOverlayView.blurVisualEffect - contentWarningOverlayView.vibrancyVisualEffectView.alpha = 1.0 - contentWarningOverlayView.isUserInteractionEnabled = true - - container.spacing = UIView.separatorLineHeight(of: self) * 2 // 2px - } - - struct ConfigurableMosaic { - let imageView: UIImageView - let blurhashOverlayImageView: UIImageView - let imageViewSize: CGSize - } - - func setupImageView(aspectRatio: CGSize, maxSize: CGSize) -> ConfigurableMosaic { - reset() - - let contentView = UIView() - contentView.translatesAutoresizingMaskIntoConstraints = false - container.addArrangedSubview(contentView) - - let imageViewSize: CGSize = { - let rect = AVMakeRect( - aspectRatio: aspectRatio, - insideRect: CGRect(origin: .zero, size: maxSize) - ).integral - return rect.size - }() - let imageViewFrame = CGRect(origin: .zero, size: imageViewSize) - - let imageView = imageViews[0] - imageView.layer.masksToBounds = true - imageView.layer.cornerRadius = ContentWarningOverlayView.cornerRadius - imageView.layer.cornerCurve = .continuous - imageView.contentMode = .scaleAspectFill - - imageView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(imageView) - NSLayoutConstraint.activate([ - imageView.topAnchor.constraint(equalTo: contentView.topAnchor), - imageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - imageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - imageView.widthAnchor.constraint(equalToConstant: imageViewFrame.width).priority(.required - 1), - ]) - containerHeightLayoutConstraint.constant = imageViewFrame.height - containerHeightLayoutConstraint.isActive = true - - let blurhashOverlayImageView = blurhashOverlayImageViews[0] - blurhashOverlayImageView.layer.masksToBounds = true - blurhashOverlayImageView.layer.cornerRadius = ContentWarningOverlayView.cornerRadius - blurhashOverlayImageView.layer.cornerCurve = .continuous - blurhashOverlayImageView.contentMode = .scaleAspectFill - blurhashOverlayImageView.translatesAutoresizingMaskIntoConstraints = false - contentView.addSubview(blurhashOverlayImageView) - NSLayoutConstraint.activate([ - blurhashOverlayImageView.topAnchor.constraint(equalTo: imageView.topAnchor), - blurhashOverlayImageView.leadingAnchor.constraint(equalTo: imageView.leadingAnchor), - blurhashOverlayImageView.trailingAnchor.constraint(equalTo: imageView.trailingAnchor), - blurhashOverlayImageView.bottomAnchor.constraint(equalTo: imageView.bottomAnchor), - ]) - - contentWarningOverlayView.translatesAutoresizingMaskIntoConstraints = false - addSubview(contentWarningOverlayView) - NSLayoutConstraint.activate([ - contentWarningOverlayView.topAnchor.constraint(equalTo: imageView.topAnchor), - contentWarningOverlayView.leadingAnchor.constraint(equalTo: imageView.leadingAnchor), - contentWarningOverlayView.trailingAnchor.constraint(equalTo: imageView.trailingAnchor), - contentWarningOverlayView.bottomAnchor.constraint(equalTo: imageView.bottomAnchor), - ]) - - return ConfigurableMosaic( - imageView: imageView, - blurhashOverlayImageView: blurhashOverlayImageView, - imageViewSize: imageViewSize - ) - } - - func setupImageViews(count: Int, maxSize: CGSize) -> [ConfigurableMosaic] { - reset() - let count = min(4, max(0, count)) - guard count > 1 else { - return [] - } - - let maxHeight = maxSize.height - let spacing: CGFloat = 1 - - containerHeightLayoutConstraint.constant = maxHeight - containerHeightLayoutConstraint.isActive = true - - let contentLeftStackView = UIStackView() - let contentRightStackView = UIStackView() - [contentLeftStackView, contentRightStackView].forEach { stackView in - stackView.axis = .vertical - stackView.distribution = .fillEqually - stackView.spacing = spacing - } - container.addArrangedSubview(contentLeftStackView) - container.addArrangedSubview(contentRightStackView) - - let imageViews: [UIImageView] = (0.. UIImage? { - guard blurhashOverlayImageViews.count == imageViews.count else { return nil } - let tuples = Array(zip(blurhashOverlayImageViews, imageViews)) - guard index < tuples.count else { return nil } - let tuple = tuples[index] - return tuple.1.image ?? tuple.0.image - } - - func thumbnails() -> [UIImage?] { - guard blurhashOverlayImageViews.count == imageViews.count else { return [] } - let tuples = Array(zip(blurhashOverlayImageViews, imageViews)) - return tuples.map { blurhashOverlayImageView, imageView -> UIImage? in - return imageView.image ?? blurhashOverlayImageView.image - } - } - -} - -extension MosaicImageViewContainer { - - @objc private func visualEffectViewTapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.mosaicImageViewContainer(self, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } - - @objc private func photoTapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { - guard let imageView = sender.view as? UIImageView else { return } - guard let index = imageViews.firstIndex(of: imageView) else { return } - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: tap photo at index: %ld", ((#file as NSString).lastPathComponent), #line, #function, index) - delegate?.mosaicImageViewContainer(self, didTapImageView: imageView, atIndex: index) - } - -} - -#if DEBUG && canImport(SwiftUI) -import SwiftUI - -struct MosaicImageView_Previews: PreviewProvider { - - static var images: [UIImage] { - return ["bradley-dunn", "mrdongok", "lucas-ludwig", "markus-spiske"] - .map { UIImage(named: $0)! } - } - - static var previews: some View { - Group { - UIViewPreview(width: 375) { - let view = MosaicImageViewContainer() - let image = images[3] - let mosaic = view.setupImageView( - aspectRatio: image.size, - maxSize: CGSize(width: 375, height: 400) - ) - mosaic.imageView.image = image - return view - } - .previewLayout(.fixed(width: 375, height: 400)) - .previewDisplayName("Portrait - one image") - UIViewPreview(width: 375) { - let view = MosaicImageViewContainer() - let image = images[1] - let mosaic = view.setupImageView( - aspectRatio: image.size, - maxSize: CGSize(width: 375, height: 400) - ) - mosaic.imageView.layer.masksToBounds = true - mosaic.imageView.layer.cornerRadius = 8 - mosaic.imageView.contentMode = .scaleAspectFill - mosaic.imageView.image = image - return view - } - .previewLayout(.fixed(width: 375, height: 400)) - .previewDisplayName("Landscape - one image") - UIViewPreview(width: 375) { - let view = MosaicImageViewContainer() - let images = self.images.prefix(2) - let mosaics = view.setupImageViews(count: images.count, maxSize: CGSize(width: 375, height: 162)) - for (i, mosaic) in mosaics.enumerated() { - mosaic.imageView.image = images[i] - } - return view - } - .previewLayout(.fixed(width: 375, height: 200)) - .previewDisplayName("two image") - UIViewPreview(width: 375) { - let view = MosaicImageViewContainer() - let images = self.images.prefix(3) - let mosaics = view.setupImageViews(count: images.count, maxSize: CGSize(width: 375, height: 162)) - for (i, mosaic) in mosaics.enumerated() { - mosaic.imageView.image = images[i] - } - return view - } - .previewLayout(.fixed(width: 375, height: 200)) - .previewDisplayName("three image") - UIViewPreview(width: 375) { - let view = MosaicImageViewContainer() - let images = self.images.prefix(4) - let mosaics = view.setupImageViews(count: images.count, maxSize: CGSize(width: 375, height: 162)) - for (i, mosaic) in mosaics.enumerated() { - mosaic.imageView.image = images[i] - } - return view - } - .previewLayout(.fixed(width: 375, height: 200)) - .previewDisplayName("four image") - } - } - -} -#endif diff --git a/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift b/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift deleted file mode 100644 index faa7b8f6a..000000000 --- a/Mastodon/Scene/Share/View/Container/PlayerContainerView+MediaTypeIndicotorView.swift +++ /dev/null @@ -1,125 +0,0 @@ -// -// PlayerContainerView+MediaTypeIndicotorView.swift -// Mastodon -// -// Created by MainasuK Cirno on 2021-3-15. -// - -import UIKit -import MastodonAsset -import MastodonLocalization - -extension PlayerContainerView { - - final class MediaTypeIndicatorView: UIView { - - static let indicatorViewSize = CGSize(width: 47, height: 25) - - let maskLayer = CAShapeLayer() - - let label: UILabel = { - let label = UILabel() - label.textColor = .white - label.textAlignment = .right - label.adjustsFontSizeToFitWidth = true - label.translatesAutoresizingMaskIntoConstraints = false - return label - }() - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } - - override func layoutSubviews() { - super.layoutSubviews() - - let path = UIBezierPath() - path.move(to: CGPoint(x: bounds.width, y: bounds.height)) - path.addLine(to: CGPoint(x: bounds.width, y: 0)) - path.addLine(to: CGPoint(x: bounds.width * 0.5, y: 0)) - path.addCurve( - to: CGPoint(x: 0, y: bounds.height), - controlPoint1: CGPoint(x: bounds.width * 0.2, y: 0), - controlPoint2: CGPoint(x: 0, y: bounds.height * 0.3) - ) - path.close() - - maskLayer.frame = bounds - maskLayer.path = path.cgPath - layer.mask = maskLayer - - layer.cornerRadius = PlayerContainerView.cornerRadius - layer.maskedCorners = [.layerMaxXMaxYCorner] - layer.cornerCurve = .continuous - } - } - -} - -extension PlayerContainerView.MediaTypeIndicatorView { - - private func _init() { - backgroundColor = Asset.Colors.mediaTypeIndicotor.color - layoutMargins = UIEdgeInsets(top: 3, left: 13, bottom: 0, right: 6) - - addSubview(label) - NSLayoutConstraint.activate([ - label.topAnchor.constraint(equalTo: layoutMarginsGuide.topAnchor), - label.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor), - label.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor), - label.bottomAnchor.constraint(equalTo: layoutMarginsGuide.bottomAnchor), - ]) - } - - private static func roundedFont(weight: UIFont.Weight,fontSize: CGFloat) -> UIFont { - let systemFont = UIFont.systemFont(ofSize: fontSize, weight: weight) - guard let descriptor = systemFont.fontDescriptor.withDesign(.rounded) else { return systemFont } - let roundedFont = UIFont(descriptor: descriptor, size: fontSize) - return roundedFont - } - - func setMediaKind(kind: VideoPlayerViewModel.Kind) { - let fontSize: CGFloat = 18 - - switch kind { - case .gif: - label.font = PlayerContainerView.MediaTypeIndicatorView.roundedFont(weight: .heavy, fontSize: fontSize) - label.text = "GIF" - case .video: - label.text = " " - } - } - -} - -#if canImport(SwiftUI) && DEBUG -import SwiftUI - -struct PlayerContainerViewMediaTypeIndicatorView_Previews: PreviewProvider { - - static var previews: some View { - Group { - UIViewPreview(width: 47) { - let view = PlayerContainerView.MediaTypeIndicatorView() - view.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - view.heightAnchor.constraint(equalToConstant: 25), - view.widthAnchor.constraint(equalToConstant: 47), - ]) - view.setMediaKind(kind: .gif) - return view - } - .previewLayout(.fixed(width: 47, height: 25)) - } - } - -} - -#endif - diff --git a/Mastodon/Scene/Share/View/Container/PlayerContainerView.swift b/Mastodon/Scene/Share/View/Container/PlayerContainerView.swift deleted file mode 100644 index 2d398536f..000000000 --- a/Mastodon/Scene/Share/View/Container/PlayerContainerView.swift +++ /dev/null @@ -1,179 +0,0 @@ -// -// PlayerContainerView.swift -// Mastodon -// -// Created by xiaojian sun on 2021/3/10. -// - -import os.log -import AVKit -import UIKit -import Combine - -protocol PlayerContainerViewDelegate: AnyObject { - func playerContainerView(_ playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) -} - -final class PlayerContainerView: UIView { - static let cornerRadius: CGFloat = ContentWarningOverlayView.cornerRadius - - private let container = UIView() - private let touchBlockingView = TouchBlockingView() - private var containerHeightLayoutConstraint: NSLayoutConstraint! - - let contentWarningOverlayView: ContentWarningOverlayView = { - let contentWarningOverlayView = ContentWarningOverlayView() - contentWarningOverlayView.update(cornerRadius: PlayerContainerView.cornerRadius) - return contentWarningOverlayView - }() - - let playerViewController = AVPlayerViewController() - - let blurhashOverlayImageView = UIImageView() - let mediaTypeIndicatorView = MediaTypeIndicatorView() - - weak var delegate: PlayerContainerViewDelegate? - - private var isReadyForDisplayObservation: NSKeyValueObservation? - let isReadyForDisplay = CurrentValueSubject(false) - - override init(frame: CGRect) { - super.init(frame: frame) - _init() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - _init() - } -} - -extension PlayerContainerView { - private func _init() { - // accessibility - accessibilityIgnoresInvertColors = true - - container.translatesAutoresizingMaskIntoConstraints = false - addSubview(container) - containerHeightLayoutConstraint = container.heightAnchor.constraint(equalToConstant: 162).priority(.required - 1) - NSLayoutConstraint.activate([ - container.topAnchor.constraint(equalTo: topAnchor), - container.leadingAnchor.constraint(equalTo: leadingAnchor), - trailingAnchor.constraint(equalTo: container.trailingAnchor), - bottomAnchor.constraint(equalTo: container.bottomAnchor), - containerHeightLayoutConstraint, - ]) - - // will not influence full-screen playback - playerViewController.view.layer.masksToBounds = true - playerViewController.view.layer.cornerRadius = PlayerContainerView.cornerRadius - playerViewController.view.layer.cornerCurve = .continuous - - blurhashOverlayImageView.translatesAutoresizingMaskIntoConstraints = false - playerViewController.contentOverlayView!.addSubview(blurhashOverlayImageView) - NSLayoutConstraint.activate([ - blurhashOverlayImageView.topAnchor.constraint(equalTo: playerViewController.contentOverlayView!.topAnchor), - blurhashOverlayImageView.leadingAnchor.constraint(equalTo: playerViewController.contentOverlayView!.leadingAnchor), - blurhashOverlayImageView.trailingAnchor.constraint(equalTo: playerViewController.contentOverlayView!.trailingAnchor), - blurhashOverlayImageView.bottomAnchor.constraint(equalTo: playerViewController.contentOverlayView!.bottomAnchor), - ]) - - // mediaType - mediaTypeIndicatorView.translatesAutoresizingMaskIntoConstraints = false - playerViewController.contentOverlayView!.addSubview(mediaTypeIndicatorView) - NSLayoutConstraint.activate([ - mediaTypeIndicatorView.bottomAnchor.constraint(equalTo: playerViewController.contentOverlayView!.bottomAnchor), - mediaTypeIndicatorView.rightAnchor.constraint(equalTo: playerViewController.contentOverlayView!.rightAnchor), - mediaTypeIndicatorView.heightAnchor.constraint(equalToConstant: MediaTypeIndicatorView.indicatorViewSize.height).priority(.required - 1), - mediaTypeIndicatorView.widthAnchor.constraint(equalToConstant: MediaTypeIndicatorView.indicatorViewSize.width).priority(.required - 1), - ]) - - isReadyForDisplayObservation = playerViewController.observe(\.isReadyForDisplay, options: [.initial, .new]) { [weak self] playerViewController, _ in - guard let self = self else { return } - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: isReadyForDisplay: %s", (#file as NSString).lastPathComponent, #line, #function, playerViewController.isReadyForDisplay.description) - self.isReadyForDisplay.value = playerViewController.isReadyForDisplay - } - - contentWarningOverlayView.delegate = self - } -} - -// MARK: - ContentWarningOverlayViewDelegate -extension PlayerContainerView: ContentWarningOverlayViewDelegate { - func contentWarningOverlayViewDidPressed(_ contentWarningOverlayView: ContentWarningOverlayView) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - delegate?.playerContainerView(self, contentWarningOverlayViewDidPressed: contentWarningOverlayView) - } -} - -extension PlayerContainerView { - func reset() { - // note: set playerViewController.player pause() and nil in data source configuration process make reloadData not break playing - - playerViewController.willMove(toParent: nil) - playerViewController.view.removeFromSuperview() - playerViewController.removeFromParent() - - blurhashOverlayImageView.image = nil - - container.subviews.forEach { subview in - subview.removeFromSuperview() - } - } - - func setupPlayer(aspectRatio: CGSize, maxSize: CGSize, parent: UIViewController?) -> AVPlayerViewController { - reset() - - touchBlockingView.translatesAutoresizingMaskIntoConstraints = false - container.addSubview(touchBlockingView) - NSLayoutConstraint.activate([ - touchBlockingView.topAnchor.constraint(equalTo: container.topAnchor), - touchBlockingView.leadingAnchor.constraint(equalTo: container.leadingAnchor), - touchBlockingView.bottomAnchor.constraint(equalTo: container.bottomAnchor), - ]) - - let rect = AVMakeRect( - aspectRatio: aspectRatio, - insideRect: CGRect(origin: .zero, size: maxSize) - ).integral - - parent?.addChild(playerViewController) - playerViewController.view.translatesAutoresizingMaskIntoConstraints = false - touchBlockingView.addSubview(playerViewController.view) - parent.flatMap { playerViewController.didMove(toParent: $0) } - NSLayoutConstraint.activate([ - playerViewController.view.topAnchor.constraint(equalTo: touchBlockingView.topAnchor), - playerViewController.view.leadingAnchor.constraint(equalTo: touchBlockingView.leadingAnchor), - playerViewController.view.trailingAnchor.constraint(equalTo: touchBlockingView.trailingAnchor), - playerViewController.view.bottomAnchor.constraint(equalTo: touchBlockingView.bottomAnchor), - touchBlockingView.widthAnchor.constraint(equalToConstant: rect.width).priority(.required - 1), - ]) - containerHeightLayoutConstraint.constant = rect.height - containerHeightLayoutConstraint.isActive = true - - playerViewController.view.frame.size = rect.size - - contentWarningOverlayView.removeFromSuperview() - contentWarningOverlayView.translatesAutoresizingMaskIntoConstraints = false - addSubview(contentWarningOverlayView) - NSLayoutConstraint.activate([ - contentWarningOverlayView.topAnchor.constraint(equalTo: touchBlockingView.topAnchor), - contentWarningOverlayView.leadingAnchor.constraint(equalTo: touchBlockingView.leadingAnchor), - contentWarningOverlayView.trailingAnchor.constraint(equalTo: touchBlockingView.trailingAnchor), - contentWarningOverlayView.bottomAnchor.constraint(equalTo: touchBlockingView.bottomAnchor) - ]) - - bringSubviewToFront(mediaTypeIndicatorView) - - return playerViewController - } - - func setMediaKind(kind: VideoPlayerViewModel.Kind) { - mediaTypeIndicatorView.setMediaKind(kind: kind) - } - - func setMediaIndicator(isHidden: Bool) { - mediaTypeIndicatorView.alpha = isHidden ? 0 : 1 - } - -} diff --git a/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift b/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift index 52651d81b..ad2fa398d 100644 --- a/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/MediaView+Configuration.swift @@ -9,9 +9,10 @@ import UIKit import Combine import CoreDataStack import MastodonUI +import AlamofireImage extension MediaView { - public static func configuration(status: Status) -> AnyPublisher<[MediaView.Configuration], Never> { + public static func configuration(status: Status) -> [MediaView.Configuration] { func videoInfo(from attachment: MastodonAttachment) -> MediaView.Configuration.VideoInfo { MediaView.Configuration.VideoInfo( aspectRadio: attachment.size, @@ -22,59 +23,72 @@ extension MediaView { } let status = status.reblog ?? status - return status.publisher(for: \.attachments) - .map { attachments -> [MediaView.Configuration] in - return attachments.map { attachment -> MediaView.Configuration in - let configuration: MediaView.Configuration = { - switch attachment.kind { - case .image: - let info = MediaView.Configuration.ImageInfo( - aspectRadio: attachment.size, - assetURL: attachment.assetURL - ) - return .init( - info: .image(info: info), - blurhash: attachment.blurhash - ) - case .video: - let info = videoInfo(from: attachment) - return .init( - info: .video(info: info), - blurhash: attachment.blurhash - ) - case .gifv: - let info = videoInfo(from: attachment) - return .init( - info: .gif(info: info), - blurhash: attachment.blurhash - ) - case .audio: - // TODO: - let info = videoInfo(from: attachment) - return .init( - info: .video(info: info), - blurhash: attachment.blurhash - ) - } // end switch - }() - - if let assetURL = configuration.assetURL, - let blurhash = configuration.blurhash - { - AppContext.shared.blurhashImageCacheService.image( - blurhash: blurhash, - size: configuration.aspectRadio, - url: assetURL - ) - .assign(to: \.blurhashImage, on: configuration) - .store(in: &configuration.blurhashImageDisposeBag) + let attachments = status.attachments + let configurations = attachments.map { attachment -> MediaView.Configuration in + let configuration: MediaView.Configuration = { + switch attachment.kind { + case .image: + let info = MediaView.Configuration.ImageInfo( + aspectRadio: attachment.size, + assetURL: attachment.assetURL + ) + return .init( + info: .image(info: info), + blurhash: attachment.blurhash + ) + case .video: + let info = videoInfo(from: attachment) + return .init( + info: .video(info: info), + blurhash: attachment.blurhash + ) + case .gifv: + let info = videoInfo(from: attachment) + return .init( + info: .gif(info: info), + blurhash: attachment.blurhash + ) + case .audio: + let info = videoInfo(from: attachment) + return .init( + info: .video(info: info), + blurhash: attachment.blurhash + ) + } // end switch + }() + + if let previewURL = configuration.previewURL, + let url = URL(string: previewURL) + { + let placeholder = UIImage.placeholder(color: .systemGray6) + let request = URLRequest(url: url) + ImageDownloader.default.download(request) { response in + switch response.result { + case .success(let image): + configuration.previewImage = image + case .failure(let error): + configuration.previewImage = placeholder } - - configuration.isReveal = status.sensitive ? status.isMediaSensitiveToggled : true - - return configuration } } - .eraseToAnyPublisher() + + if let assetURL = configuration.assetURL, + let blurhash = configuration.blurhash + { + AppContext.shared.blurhashImageCacheService.image( + blurhash: blurhash, + size: configuration.aspectRadio, + url: assetURL + ) + .assign(to: \.blurhashImage, on: configuration) + .store(in: &configuration.blurhashImageDisposeBag) + } + + configuration.isReveal = status.sensitive ? status.isMediaSensitiveToggled : true + + return configuration + } + + return configurations } } diff --git a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift index 249c2cfcb..d3a39ccd6 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift @@ -272,9 +272,10 @@ extension StatusView { viewModel.isMediaSensitive = status.sensitive && !status.attachments.isEmpty // some servers set media sensitive even empty attachments - MediaView.configuration(status: status) - .assign(to: \.mediaViewConfigurations, on: viewModel) - .store(in: &disposeBag) + let configurations = MediaView.configuration(status: status) + if viewModel.mediaViewConfigurations != configurations { + viewModel.mediaViewConfigurations = configurations + } status.publisher(for: \.isMediaSensitiveToggled) .assign(to: \.isMediaSensitiveToggled, on: viewModel) diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift index 10f28455d..1c556b9ce 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift @@ -33,6 +33,7 @@ protocol StatusTableViewCellDelegate: AnyObject, AutoGenerateProtocolDelegate { func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) // sourcery:end } @@ -80,5 +81,9 @@ extension StatusViewDelegate where Self: StatusViewContainerTableViewCell { func statusView(_ statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) { delegate?.tableViewCell(self, statusView: statusView, spoilerBannerViewDidPressed: bannerView) } + + func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) { + delegate?.tableViewCell(self, statusView: statusView, mediaGridContainerView: mediaGridContainerView, mediaSensitiveButtonDidPressed: button) + } // sourcery:end } diff --git a/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift b/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift deleted file mode 100644 index bec9ab124..000000000 --- a/Mastodon/Scene/Share/ViewModel/AudioContainerViewModel.swift +++ /dev/null @@ -1,118 +0,0 @@ -// -// AudioContainerViewModel.swift -// Mastodon -// -// Created by sxiaojian on 2021/3/9. -// - -import CoreDataStack -import Foundation -import UIKit - -class AudioContainerViewModel { - -// static func configure( -// cell: StatusCell, -// audioAttachment: Attachment, -// audioService: AudioPlaybackService -// ) { -// guard let duration = audioAttachment.meta?.original?.duration else { return } -// let audioView = cell.statusView.audioView -// audioView.timeLabel.text = duration.asString(style: .positional) -// -// audioView.playButton.publisher(for: .touchUpInside) -// .sink { [weak audioService] _ in -// guard let audioService = audioService else { return } -// if audioAttachment === audioService.attachment { -// if audioService.isPlaying() { -// audioService.pause() -// } else { -// audioService.resume() -// } -// if audioService.currentTimeSubject.value == 0 { -// audioService.playAudio(audioAttachment: audioAttachment) -// } -// } else { -// audioService.playAudio(audioAttachment: audioAttachment) -// } -// } -// .store(in: &cell.disposeBag) -// audioView.slider.maximumValue = Float(duration) -// audioView.slider.publisher(for: .valueChanged) -// .sink { [weak audioService] slider in -// guard let audioService = audioService else { return } -// let slider = slider as! UISlider -// let time = TimeInterval(slider.value) -// audioService.seekToTime(time: time) -// } -// .store(in: &cell.disposeBag) -// observePlayer(cell: cell, audioAttachment: audioAttachment, audioService: audioService) -// if audioAttachment != audioService.attachment { -// configureAudioView(audioView: audioView, audioAttachment: audioAttachment, playbackState: .stopped) -// } -// } -// -// static func observePlayer( -// cell: StatusCell, -// audioAttachment: Attachment, -// audioService: AudioPlaybackService -// ) { -// let audioView = cell.statusView.audioView -// var lastCurrentTimeSubject: TimeInterval? -// audioService.currentTimeSubject -// .throttle(for: 0.008, scheduler: DispatchQueue.main, latest: true) -// .compactMap { [weak audioService] time -> TimeInterval? in -// defer { -// lastCurrentTimeSubject = time -// } -// guard audioAttachment === audioService?.attachment else { return nil } -// // guard let duration = audioAttachment.meta?.original?.duration else { return nil } -// -// if let lastCurrentTimeSubject = lastCurrentTimeSubject, time != 0.0 { -// guard abs(time - lastCurrentTimeSubject) < 0.5 else { return nil } // debounce -// } -// -// guard !audioView.slider.isTracking else { return nil } -// return TimeInterval(time) -// } -// .sink(receiveValue: { time in -// audioView.timeLabel.text = time.asString(style: .positional) -// audioView.slider.setValue(Float(time), animated: true) -// }) -// .store(in: &cell.disposeBag) -// audioService.playbackState -// .receive(on: DispatchQueue.main) -// .sink(receiveValue: { playbackState in -// if audioAttachment === audioService.attachment { -// configureAudioView(audioView: audioView, audioAttachment: audioAttachment, playbackState: playbackState) -// } else { -// configureAudioView(audioView: audioView, audioAttachment: audioAttachment, playbackState: .stopped) -// } -// }) -// .store(in: &cell.disposeBag) -// } - - static func configureAudioView( - audioView: AudioContainerView, - audioAttachment: MastodonAttachment, - playbackState: PlaybackState - ) { - fatalError() -// switch playbackState { -// case .stopped: -// audioView.playButton.isSelected = false -// audioView.slider.isUserInteractionEnabled = false -// audioView.slider.setValue(0, animated: false) -// case .paused: -// audioView.playButton.isSelected = false -// audioView.slider.isUserInteractionEnabled = true -// case .playing, .readyToPlay: -// audioView.playButton.isSelected = true -// audioView.slider.isUserInteractionEnabled = true -// default: -// assertionFailure() -// } -// guard let duration = audioAttachment.meta?.original?.duration else { return } -// audioView.timeLabel.text = duration.asString(style: .positional) - } -} diff --git a/Mastodon/Scene/Share/ViewModel/MosaicImageViewModel.swift b/Mastodon/Scene/Share/ViewModel/MosaicImageViewModel.swift deleted file mode 100644 index 8f53e4ddb..000000000 --- a/Mastodon/Scene/Share/ViewModel/MosaicImageViewModel.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// MosaicImageViewModel.swift -// Mastodon -// -// Created by Cirno MainasuK on 2021-2-23. -// - -import UIKit -import Combine -import CoreDataStack - -//struct MosaicImageViewModel { -// -// let metas: [MosaicMeta] -// -// init(mediaAttachments: [Attachment]) { -// var metas: [MosaicMeta] = [] -// for element in mediaAttachments where element.type == .image { -// guard let meta = element.meta, -// let width = meta.original?.width, -// let height = meta.original?.height, -// let url = URL(string: element.url) else { -// continue -// } -// let mosaicMeta = MosaicMeta( -// previewURL: element.previewURL.flatMap { URL(string: $0) }, -// url: url, -// size: CGSize(width: width, height: height), -// blurhash: element.blurhash, -// altText: element.descriptionString -// ) -// metas.append(mosaicMeta) -// } -// self.metas = metas -// } -// -//} -// -//struct MosaicMeta { -// static let edgeMaxLength: CGFloat = 20 -// -// let previewURL: URL? -// let url: URL -// let size: CGSize -// let blurhash: String? -// let altText: String? -// -// func blurhashImagePublisher() -> AnyPublisher { -// guard let blurhash = blurhash else { -// return Just(nil).eraseToAnyPublisher() -// } -// return AppContext.shared.blurhashImageCacheService.image(blurhash: blurhash, size: size, url: url) -// } -// -//} diff --git a/Mastodon/Scene/Share/ViewModel/VideoPlayerViewModel.swift b/Mastodon/Scene/Share/ViewModel/VideoPlayerViewModel.swift deleted file mode 100644 index 61a437e02..000000000 --- a/Mastodon/Scene/Share/ViewModel/VideoPlayerViewModel.swift +++ /dev/null @@ -1,193 +0,0 @@ -// -// VideoPlayerViewModel.swift -// Mastodon -// -// Created by xiaojian sun on 2021/3/10. -// - -import AVKit -import Combine -import CoreDataStack -import os.log -import UIKit - -final class VideoPlayerViewModel { - var disposeBag = Set() - - static let appWillPlayVideoNotification = NSNotification.Name(rawValue: "org.joinmastodon.app.video-playback-service.appWillPlayVideo") - // input - let previewImageURL: URL? - let videoURL: URL - let videoSize: CGSize - let videoKind: Kind - - var isTransitioning = false - var isFullScreenPresentationing = false - var isPlayingWhenEndDisplaying = false - - // prevent player state flick when tableView reload - private typealias Play = Bool - private let debouncePlayingState = PassthroughSubject() - - private var updateDate = Date() - - // output - let player: AVPlayer - private(set) var looper: AVPlayerLooper? // works with AVQueuePlayer (iOS 10+) - - private var timeControlStatusObservation: NSKeyValueObservation? - let timeControlStatus = CurrentValueSubject(.paused) - let playbackState = CurrentValueSubject(PlaybackState.unknown) - - init(previewImageURL: URL?, videoURL: URL, videoSize: CGSize, videoKind: VideoPlayerViewModel.Kind) { - self.previewImageURL = previewImageURL - self.videoURL = videoURL - self.videoSize = videoSize - self.videoKind = videoKind - - let playerItem = AVPlayerItem(url: videoURL) - let player = videoKind == .gif ? AVQueuePlayer(playerItem: playerItem) : AVPlayer(playerItem: playerItem) - player.isMuted = true - self.player = player - - if videoKind == .gif { - setupLooper() - } - - timeControlStatusObservation = player.observe(\.timeControlStatus, options: [.initial, .new]) { [weak self] player, _ in - guard let self = self else { return } - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: player state: %s", (#file as NSString).lastPathComponent, #line, #function, player.timeControlStatus.debugDescription) - self.timeControlStatus.value = player.timeControlStatus - } - - player.publisher(for: \.status, options: [.initial, .new]) - .sink(receiveValue: { [weak self] status in - guard let self = self else { return } - switch status { - case .failed: - self.playbackState.value = .failed - case .readyToPlay: - self.playbackState.value = .readyToPlay - case .unknown: - self.playbackState.value = .unknown - @unknown default: - assertionFailure() - } - }) - .store(in: &disposeBag) - - timeControlStatus - .sink { [weak self] timeControlStatus in - guard let self = self else { return } - - // emit playing event - if timeControlStatus == .playing { - NotificationCenter.default.post(name: VideoPlayerViewModel.appWillPlayVideoNotification, object: nil) - } - - switch timeControlStatus { - case .paused: - self.playbackState.value = .paused - case .waitingToPlayAtSpecifiedRate: - self.playbackState.value = .buffering - case .playing: - self.playbackState.value = .playing - @unknown default: - assertionFailure() - self.playbackState.value = .unknown - } - } - .store(in: &disposeBag) - - debouncePlayingState - .debounce(for: 0.3, scheduler: DispatchQueue.main) - .sink { [weak self] isPlay in - guard let self = self else { return } - isPlay ? self.play() : self.pause() - } - .store(in: &disposeBag) - - let sessionName = videoKind == .gif ? "GIF" : "Video" - playbackState - .receive(on: RunLoop.main) - .sink { [weak self] status in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: %s status: %s", ((#file as NSString).lastPathComponent), #line, #function, sessionName, status.description) - guard let self = self else { return } - - // only update audio session for video - guard self.videoKind == .video else { return } - switch status { - case .unknown, .buffering, .readyToPlay: - break - case .playing: - try? AVAudioSession.sharedInstance().setCategory(.playback) - try? AVAudioSession.sharedInstance().setActive(true) - case .paused, .stopped, .failed: - try? AVAudioSession.sharedInstance().setCategory(.ambient) // set to ambient to allow mixed (needed for GIFV) - try? AVAudioSession.sharedInstance().setActive(false, options: .notifyOthersOnDeactivation) - } - } - .store(in: &disposeBag) - } - - deinit { - timeControlStatusObservation = nil - } -} - -extension VideoPlayerViewModel { - enum Kind { - case gif - case video - } -} - -extension VideoPlayerViewModel { - func setupLooper() { - guard looper == nil, let queuePlayer = player as? AVQueuePlayer else { return } - guard let templateItem = queuePlayer.items().first else { return } - looper = AVPlayerLooper(player: queuePlayer, templateItem: templateItem) - } - - func play() { - player.play() - updateDate = Date() - } - - func pause() { - player.pause() - updateDate = Date() - } - - func willDisplay() { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: url: %s", (#file as NSString).lastPathComponent, #line, #function, videoURL.debugDescription) - - switch videoKind { - case .gif: - play() // always auto play GIF - case .video: - guard isPlayingWhenEndDisplaying else { return } - // mute before resume - if updateDate.timeIntervalSinceNow < -3 { - player.isMuted = true - } - debouncePlayingState.send(true) - } - - updateDate = Date() - } - - func didEndDisplaying() { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: url: %s", (#file as NSString).lastPathComponent, #line, #function, videoURL.debugDescription) - - isPlayingWhenEndDisplaying = timeControlStatus.value != .paused - switch videoKind { - case .gif: - pause() // always pause GIF immediately - case .video: - debouncePlayingState.send(false) - } - - updateDate = Date() - } -} diff --git a/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift b/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift index 8078ba1c1..f730e0b8b 100644 --- a/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift +++ b/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift @@ -78,7 +78,7 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { return imageView }() transitionItem.targetFrame = transitionTargetFrame - transitionItem.imageView = transitionImageView + transitionItem.transitionView = transitionImageView transitionContext.containerView.addSubview(transitionImageView) toVC.closeButtonBackground.alpha = 0 @@ -109,122 +109,166 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { return animator } - private func popTransition(using transitionContext: UIViewControllerContextTransitioning, curve: UIView.AnimationCurve = .easeInOut) -> UIViewPropertyAnimator { - guard let fromVC = transitionContext.viewController(forKey: .from) as? MediaPreviewViewController, - let fromView = transitionContext.view(forKey: .from), - let mediaPreviewImageViewController = fromVC.pagingViewController.currentViewController as? MediaPreviewImageViewController, - let index = fromVC.pagingViewController.currentIndex else { - fatalError() - } - - // assert view hierarchy not change - let toVC = transitionItem.previewableViewController - let targetFrame = toVC.sourceFrame(transitionItem: transitionItem, index: index) - - let imageView = mediaPreviewImageViewController.previewImageView.imageView - let _snapshot: UIView? = { - transitionItem.snapshotRaw = imageView - let snapshot = imageView.snapshotView(afterScreenUpdates: false) - snapshot?.clipsToBounds = true - snapshot?.contentMode = .scaleAspectFill - return snapshot - }() - guard let snapshot = _snapshot else { - transitionContext.completeTransition(false) - fatalError() - } - - let transitionMaskView = UIView(frame: transitionContext.containerView.bounds) - transitionMaskView.autoresizingMask = [.flexibleWidth, .flexibleHeight] - transitionContext.containerView.addSubview(transitionMaskView) - - let maskLayer = CAShapeLayer() - maskLayer.frame = transitionMaskView.bounds - let maskLayerFromPath = UIBezierPath(rect: maskLayer.bounds).cgPath - maskLayer.path = maskLayerFromPath - transitionMaskView.layer.mask = maskLayer - - transitionMaskView.addSubview(snapshot) - snapshot.center = transitionMaskView.center - fromVC.view.bringSubviewToFront(fromVC.closeButtonBackground) - - transitionItem.imageView = imageView - transitionItem.snapshotTransitioning = snapshot - transitionItem.initialFrame = snapshot.frame - transitionItem.targetFrame = targetFrame - - // disable interaction - fromVC.pagingViewController.isUserInteractionEnabled = false - + @discardableResult + private func popTransition( + using transitionContext: UIViewControllerContextTransitioning, + curve: UIView.AnimationCurve = .easeInOut + ) -> UIViewPropertyAnimator { let animator = popInteractiveTransitionAnimator - - self.transitionItem.snapshotRaw?.alpha = 0.0 - var needsMaskWithAnimation = true - let maskLayerToRect: CGRect? = { - guard case .attachments = transitionItem.source else { return nil } - guard let navigationBar = toVC.navigationController?.navigationBar, let navigationBarSuperView = navigationBar.superview else { return nil } - let navigationBarFrameInWindow = navigationBarSuperView.convert(navigationBar.frame, to: nil) - - // crop rect top edge - var rect = transitionMaskView.frame - let _toViewFrameInWindow = toVC.view.superview.flatMap { $0.convert(toVC.view.frame, to: nil) } - if let toViewFrameInWindow = _toViewFrameInWindow, toViewFrameInWindow.minY > navigationBarFrameInWindow.maxY { - rect.origin.y = toViewFrameInWindow.minY - } else { - rect.origin.y = navigationBarFrameInWindow.maxY + UIView.separatorLineHeight(of: toVC.view) // extra hairline - } - - if rect.minY < snapshot.frame.minY { - needsMaskWithAnimation = false - } - - return rect - }() - let maskLayerToPath = maskLayerToRect.flatMap { UIBezierPath(rect: $0) }?.cgPath - let maskLayerToFinalRect: CGRect? = { - guard case .attachments = transitionItem.source else { return nil } - var rect = maskLayerToRect ?? transitionMaskView.frame - // clip tabBar when bar visible - guard let tabBarController = toVC.tabBarController, - !tabBarController.tabBar.isHidden, - let tabBarSuperView = tabBarController.tabBar.superview - else { return rect } - let tabBarFrameInWindow = tabBarSuperView.convert(tabBarController.tabBar.frame, to: nil) - let offset = rect.maxY - tabBarFrameInWindow.minY - guard offset > 0 else { return rect } - rect.size.height -= offset - return rect - }() - let maskLayerToFinalPath = maskLayerToFinalRect.flatMap { UIBezierPath(rect: $0) }?.cgPath - - if !needsMaskWithAnimation, let maskLayerToPath = maskLayerToPath { - maskLayer.path = maskLayerToPath + animator.addCompletion { position in + transitionContext.completeTransition(position == .end) } - - animator.addAnimations { - if let targetFrame = targetFrame { - self.transitionItem.snapshotTransitioning?.frame = targetFrame - } else { - fromView.alpha = 0 + + guard let fromVC = transitionContext.viewController(forKey: .from) as? MediaPreviewViewController, + let index = fromVC.pagingViewController.currentIndex, + let fromView = transitionContext.view(forKey: .from), + let mediaPreviewTransitionViewController = fromVC.pagingViewController.currentViewController as? MediaPreviewTransitionViewController, + let mediaPreviewTransitionContext = mediaPreviewTransitionViewController.mediaPreviewTransitionContext + else { + animator.addAnimations { + self.transitionItem.source.updateAppearance(position: .end, index: nil) } - self.transitionItem.sourceImageViewCornerRadius.flatMap { self.transitionItem.snapshotTransitioning?.layer.cornerRadius = $0 } + return animator + } + + // update close button + UIView.animate(withDuration: 0.33, delay: 0, options: [.curveEaseInOut]) { fromVC.closeButtonBackground.alpha = 0 - fromVC.visualEffectView.effect = nil - if let maskLayerToFinalPath = maskLayerToFinalPath { - maskLayer.path = maskLayerToFinalPath + } + animator.addCompletion { position in + UIView.animate(withDuration: 0.33, delay: 0, options: [.curveEaseInOut]) { + fromVC.closeButtonBackground.alpha = position == .end ? 0 : 1 } + } + + // update view controller + fromVC.pagingViewController.isUserInteractionEnabled = false + animator.addCompletion { position in + fromVC.pagingViewController.isUserInteractionEnabled = true + } + + // update background + let blurEffect = fromVC.visualEffectView.effect + animator.addAnimations { + fromVC.visualEffectView.effect = nil if UIAccessibility.isReduceTransparencyEnabled { fromVC.visualEffectView.alpha = 0 } } - animator.addCompletion { position in - self.transitionItem.snapshotTransitioning?.removeFromSuperview() - self.transitionItem.source.updateAppearance(position: position, index: nil) - transitionContext.completeTransition(position == .end) + fromVC.visualEffectView.effect = position == .end ? nil : blurEffect + if UIAccessibility.isReduceTransparencyEnabled { + fromVC.visualEffectView.alpha = position == .end ? 0 : 1 + } } + + // update transition item source + animator.addCompletion { position in + if position == .end { + // reset appearance + self.transitionItem.source.updateAppearance(position: position, index: nil) + } + } + + // update transitioning snapshot + let transitionMaskView = UIView(frame: transitionContext.containerView.bounds) + transitionMaskView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + transitionContext.containerView.addSubview(transitionMaskView) + transitionItem.interactiveTransitionMaskView = transitionMaskView + + animator.addCompletion { position in + transitionMaskView.removeFromSuperview() + } + + let transitionMaskViewTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer + transitionMaskViewTapGestureRecognizer.addTarget(self, action: #selector(MediaHostToMediaPreviewViewControllerAnimatedTransitioning.transitionMaskViewTapGestureRecognizerHandler(_:))) + transitionMaskView.addGestureRecognizer(transitionMaskViewTapGestureRecognizer) + + let maskLayer = CAShapeLayer() + maskLayer.frame = transitionMaskView.bounds + maskLayer.path = UIBezierPath(rect: maskLayer.bounds).cgPath + transitionMaskView.layer.mask = maskLayer + transitionItem.interactiveTransitionMaskLayer = maskLayer + + // attach transitioning snapshot + mediaPreviewTransitionContext.snapshot.center = transitionMaskView.center + mediaPreviewTransitionContext.snapshot.contentMode = .scaleAspectFill + mediaPreviewTransitionContext.snapshot.clipsToBounds = true + transitionMaskView.addSubview(mediaPreviewTransitionContext.snapshot) + fromVC.view.bringSubviewToFront(fromVC.closeButtonBackground) + transitionItem.transitionView = mediaPreviewTransitionContext.transitionView + transitionItem.snapshotTransitioning = mediaPreviewTransitionContext.snapshot + transitionItem.initialFrame = mediaPreviewTransitionContext.snapshot.frame + + // assert view hierarchy not change + let toVC = transitionItem.previewableViewController + let targetFrame = toVC.sourceFrame(transitionItem: transitionItem, index: index) + transitionItem.targetFrame = targetFrame + + animator.addAnimations { + self.transitionItem.snapshotTransitioning?.layer.cornerRadius = self.transitionItem.sourceImageViewCornerRadius ?? 0 + } + animator.addCompletion { position in + self.transitionItem.snapshotTransitioning?.layer.cornerRadius = position == .end ? 0 : (self.transitionItem.sourceImageViewCornerRadius ?? 0) + } + + if !isInteractive { + animator.addAnimations { + if let targetFrame = targetFrame { + self.transitionItem.snapshotTransitioning?.frame = targetFrame + } else { + fromView.alpha = 0 + } + } + + // calculate transition mask + let maskLayerToRect: CGRect? = { + guard case .attachments = transitionItem.source else { return nil } + guard let navigationBar = toVC.navigationController?.navigationBar, let navigationBarSuperView = navigationBar.superview else { return nil } + let navigationBarFrameInWindow = navigationBarSuperView.convert(navigationBar.frame, to: nil) + + // crop rect top edge + var rect = transitionMaskView.frame + let _toViewFrameInWindow = toVC.view.superview.flatMap { $0.convert(toVC.view.frame, to: nil) } + if let toViewFrameInWindow = _toViewFrameInWindow, toViewFrameInWindow.minY > navigationBarFrameInWindow.maxY { + rect.origin.y = toViewFrameInWindow.minY + } else { + rect.origin.y = navigationBarFrameInWindow.maxY + UIView.separatorLineHeight(of: toVC.view) // extra hairline + } + + return rect + }() + let maskLayerToPath = maskLayerToRect.flatMap { UIBezierPath(rect: $0) }?.cgPath + let maskLayerToFinalRect: CGRect? = { + guard case .attachments = transitionItem.source else { return nil } + var rect = maskLayerToRect ?? transitionMaskView.frame + // clip tabBar when bar visible + guard let tabBarController = toVC.tabBarController, + !tabBarController.tabBar.isHidden, + let tabBarSuperView = tabBarController.tabBar.superview + else { return rect } + let tabBarFrameInWindow = tabBarSuperView.convert(tabBarController.tabBar.frame, to: nil) + let offset = rect.maxY - tabBarFrameInWindow.minY + guard offset > 0 else { return rect } + rect.size.height -= offset + return rect + }() + let maskLayerToFinalPath = maskLayerToFinalRect.flatMap { UIBezierPath(rect: $0) }?.cgPath + + if let maskLayerToPath = maskLayerToPath { + maskLayer.path = maskLayerToPath + } + } + + mediaPreviewTransitionContext.transitionView.isHidden = true + animator.addCompletion { position in + self.transitionItem.transitionView?.isHidden = position == .end + self.transitionItem.snapshotRaw?.alpha = position == .start ? 1.0 : 0.0 + self.transitionItem.snapshotTransitioning?.removeFromSuperview() + } + return animator } @@ -248,100 +292,7 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { } private func popInteractiveTransition(using transitionContext: UIViewControllerContextTransitioning) { - guard let fromVC = transitionContext.viewController(forKey: .from) as? MediaPreviewViewController, - let _ = transitionContext.view(forKey: .from), - let mediaPreviewImageViewController = fromVC.pagingViewController.currentViewController as? MediaPreviewImageViewController, - let index = fromVC.pagingViewController.currentIndex else { - fatalError() - } - - // assert view hierarchy not change - let toVC = transitionItem.previewableViewController - let targetFrame = toVC.sourceFrame(transitionItem: transitionItem, index: index) - - let imageView = mediaPreviewImageViewController.previewImageView.imageView - let _snapshot: UIView? = { - transitionItem.snapshotRaw = imageView - let snapshot = imageView.snapshotView(afterScreenUpdates: false) - snapshot?.clipsToBounds = true - snapshot?.contentMode = .scaleAspectFill - return snapshot - }() - guard let snapshot = _snapshot else { - transitionContext.completeTransition(false) - return - } - - let transitionMaskView = UIView(frame: transitionContext.containerView.bounds) - transitionMaskView.autoresizingMask = [.flexibleWidth, .flexibleHeight] - transitionContext.containerView.addSubview(transitionMaskView) - transitionItem.interactiveTransitionMaskView = transitionMaskView - - let transitionMaskViewTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - transitionMaskViewTapGestureRecognizer.addTarget(self, action: #selector(MediaHostToMediaPreviewViewControllerAnimatedTransitioning.transitionMaskViewTapGestureRecognizerHandler(_:))) - transitionMaskView.addGestureRecognizer(transitionMaskViewTapGestureRecognizer) - - let maskLayer = CAShapeLayer() - maskLayer.frame = transitionMaskView.bounds - maskLayer.path = UIBezierPath(rect: maskLayer.bounds).cgPath - transitionMaskView.layer.mask = maskLayer - transitionItem.interactiveTransitionMaskLayer = maskLayer - - transitionMaskView.addSubview(snapshot) - snapshot.center = transitionMaskView.center - fromVC.view.bringSubviewToFront(fromVC.closeButtonBackground) - - transitionItem.imageView = imageView - transitionItem.snapshotTransitioning = snapshot - transitionItem.initialFrame = snapshot.frame - transitionItem.targetFrame = targetFrame ?? snapshot.frame - - // disable interaction - fromVC.pagingViewController.isUserInteractionEnabled = false - - let animator = popInteractiveTransitionAnimator - - let blurEffect = fromVC.visualEffectView.effect - self.transitionItem.snapshotRaw?.alpha = 0.0 - - UIView.animate(withDuration: 0.33, delay: 0, options: [.curveEaseInOut]) { - fromVC.closeButtonBackground.alpha = 0 - } - - animator.addAnimations { - switch self.transitionItem.source { - case .profileBanner: - self.transitionItem.snapshotTransitioning?.alpha = 0.4 - default: - break - } - fromVC.visualEffectView.effect = nil - self.transitionItem.sourceImageViewCornerRadius.flatMap { self.transitionItem.snapshotTransitioning?.layer.cornerRadius = $0 } - if UIAccessibility.isReduceTransparencyEnabled { - fromVC.visualEffectView.alpha = 0 - } - } - - animator.addCompletion { position in - fromVC.pagingViewController.isUserInteractionEnabled = true - fromVC.closeButtonBackground.alpha = position == .end ? 0 : 1 - self.transitionItem.imageView?.isHidden = position == .end - self.transitionItem.snapshotRaw?.alpha = position == .start ? 1.0 : 0.0 - self.transitionItem.snapshotTransitioning?.removeFromSuperview() - if position == .end { - // reset appearance - self.transitionItem.source.updateAppearance(position: position, index: nil) - } - fromVC.visualEffectView.effect = position == .end ? nil : blurEffect - transitionMaskView.removeFromSuperview() - UIView.animate(withDuration: 0.33, delay: 0, options: [.curveEaseInOut]) { - fromVC.closeButtonBackground.alpha = position == .end ? 0 : 1 - } - if UIAccessibility.isReduceTransparencyEnabled { - fromVC.visualEffectView.alpha = position == .end ? 0 : 1 - } - transitionContext.completeTransition(position == .end) - } + popTransition(using: transitionContext) } } @@ -380,7 +331,7 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { popInteractiveTransitionAnimator.fractionComplete = percent transitionContext.updateInteractiveTransition(percent) updateTransitionItemPosition(of: translation) - + // Reset translation to zero sender.setTranslation(CGPoint.zero, in: transitionContext.containerView) case .ended, .cancelled: @@ -399,7 +350,9 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { } private func convert(_ velocity: CGPoint, for item: MediaPreviewTransitionItem?) -> CGVector { - guard let currentFrame = item?.imageView?.frame, let targetFrame = item?.targetFrame else { + guard let currentFrame = item?.transitionView?.frame, + let targetFrame = item?.targetFrame + else { return CGVector.zero } diff --git a/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionItem.swift b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionItem.swift index 42efde451..7d80de322 100644 --- a/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionItem.swift +++ b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionItem.swift @@ -16,25 +16,28 @@ class MediaPreviewTransitionItem: Identifiable { var previewableViewController: MediaPreviewableViewController // source - // value maybe invalid when preview paging var image: UIImage? var aspectRatio: CGSize? var initialFrame: CGRect? = nil var sourceImageView: UIImageView? var sourceImageViewCornerRadius: CGFloat? - + // target var targetFrame: CGRect? = nil // transitioning - var imageView: UIImageView? + var transitionView: UIView? var snapshotRaw: UIView? var snapshotTransitioning: UIView? var touchOffset: CGVector = CGVector.zero var interactiveTransitionMaskView: UIView? var interactiveTransitionMaskLayer: CAShapeLayer? - init(id: UUID = UUID(), source: Source, previewableViewController: MediaPreviewableViewController) { + init( + id: UUID = UUID(), + source: Source, + previewableViewController: MediaPreviewableViewController + ) { self.id = id self.source = source self.previewableViewController = previewableViewController @@ -56,7 +59,7 @@ extension MediaPreviewTransitionItem { mediaView.alpha = alpha case .attachments(let mediaGridContainerView): if let index = index { - mediaGridContainerView.setAlpha(0, index: index) + mediaGridContainerView.setAlpha(alpha, index: index) } else { mediaGridContainerView.setAlpha(alpha) } diff --git a/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionViewController.swift b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionViewController.swift new file mode 100644 index 000000000..d1809d0f0 --- /dev/null +++ b/Mastodon/Scene/Transition/MediaPreview/MediaPreviewTransitionViewController.swift @@ -0,0 +1,20 @@ +// +// MediaPreviewTransitionViewController.swift +// TwidereX +// +// Created by MainasuK on 2021-12-8. +// Copyright © 2021 Twidere. All rights reserved. +// + +import UIKit + +protocol MediaPreviewTransitionViewController: UIViewController { + var mediaPreviewTransitionContext: MediaPreviewTransitionContext? { get } +} + + +struct MediaPreviewTransitionContext { + let transitionView: UIView + let snapshot: UIView + let snapshotTransitioning: UIView +} diff --git a/Mastodon/Service/AudioPlaybackService.swift b/Mastodon/Service/AudioPlaybackService.swift deleted file mode 100644 index af7d574ce..000000000 --- a/Mastodon/Service/AudioPlaybackService.swift +++ /dev/null @@ -1,150 +0,0 @@ -// -// AudioPlayer.swift -// Mastodon -// -// Created by sxiaojian on 2021/3/8. -// - -import AVFoundation -import Combine -import CoreDataStack -import Foundation -import UIKit -import os.log - -final class AudioPlaybackService: NSObject { - - static let appWillPlayAudioNotification = NSNotification.Name(rawValue: "org.joinmastodon.app.audio-playback-service.appWillPlayAudio") - - var disposeBag = Set() - - var player = AVPlayer() - var timeObserver: Any? - var statusObserver: Any? - var attachment: MastodonAttachment? - - let playbackState = CurrentValueSubject(PlaybackState.unknown) - - let currentTimeSubject = CurrentValueSubject(0) - - override init() { - super.init() - addObserver() - - playbackState - .receive(on: RunLoop.main) - .sink { status in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: audio status: %s", ((#file as NSString).lastPathComponent), #line, #function, status.description) - switch status { - case .unknown, .buffering, .readyToPlay: - break - case .playing: - try? AVAudioSession.sharedInstance().setCategory(.playback) - try? AVAudioSession.sharedInstance().setActive(true) - case .paused, .stopped, .failed: - try? AVAudioSession.sharedInstance().setCategory(.ambient) // set to ambient to allow mixed (needed for GIFV) - try? AVAudioSession.sharedInstance().setActive(false, options: .notifyOthersOnDeactivation) - } - } - .store(in: &disposeBag) - } -} - -extension AudioPlaybackService { - func playAudio(audioAttachment: MastodonAttachment) { - guard let assetURL = audioAttachment.assetURL, - let url = URL(string: assetURL) else - { return } - - notifyWillPlayAudioNotification() - if audioAttachment == attachment { - if self.playbackState.value == .stopped { - self.seekToTime(time: .zero) - } - player.play() - self.playbackState.value = .playing - return - } - player.pause() - let playerItem = AVPlayerItem(url: url) - player.replaceCurrentItem(with: playerItem) - attachment = audioAttachment - player.play() - playbackState.value = .playing - } - - func addObserver() { - NotificationCenter.default.publisher(for: VideoPlayerViewModel.appWillPlayVideoNotification) - .sink { [weak self] _ in - guard let self = self else { return } - self.pauseIfNeed() - } - .store(in: &disposeBag) - - timeObserver = player.addPeriodicTimeObserver(forInterval: CMTimeMake(value: 1, timescale: CMTimeScale(NSEC_PER_SEC)), queue: DispatchQueue.main, using: { [weak self] time in - guard let self = self else { return } - self.currentTimeSubject.value = time.seconds - }) - player.publisher(for: \.status, options: [.initial, .new]) - .sink(receiveValue: { [weak self] status in - guard let self = self else { return } - switch status { - case .failed: - self.playbackState.value = .failed - case .readyToPlay: - self.playbackState.value = .readyToPlay - case .unknown: - self.playbackState.value = .unknown - @unknown default: - assertionFailure() - } - }) - .store(in: &disposeBag) - NotificationCenter.default.publisher(for: .AVPlayerItemDidPlayToEndTime, object: nil) - .sink { [weak self] _ in - guard let self = self else { return } - self.player.seek(to: .zero) - self.playbackState.value = .stopped - self.currentTimeSubject.value = 0 - } - .store(in: &disposeBag) - NotificationCenter.default.publisher(for: AVAudioSession.interruptionNotification, object: nil) - .sink { [weak self] _ in - guard let self = self else { return } - self.pause() - } - .store(in: &disposeBag) - } - - func notifyWillPlayAudioNotification() { - NotificationCenter.default.post(name: AudioPlaybackService.appWillPlayAudioNotification, object: nil) - } - func isPlaying() -> Bool { - return playbackState.value == .readyToPlay || playbackState.value == .playing - } - func resume() { - notifyWillPlayAudioNotification() - player.play() - playbackState.value = .playing - } - - func pause() { - player.pause() - playbackState.value = .paused - } - func pauseIfNeed() { - if isPlaying() { - pause() - } - } - func seekToTime(time: TimeInterval) { - player.seek(to: CMTimeMake(value:Int64(time), timescale: 1)) - } -} - -extension AudioPlaybackService { - func viewDidDisappear(from viewController: UIViewController?) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) - pause() - } -} diff --git a/Mastodon/Service/VideoPlaybackService.swift b/Mastodon/Service/VideoPlaybackService.swift deleted file mode 100644 index 3c5ad8a08..000000000 --- a/Mastodon/Service/VideoPlaybackService.swift +++ /dev/null @@ -1,141 +0,0 @@ -// -// ViedeoPlaybackService.swift -// Mastodon -// -// Created by xiaojian sun on 2021/3/10. -// - -import AVKit -import Combine -import CoreDataStack -import Foundation -import os.log - -final class VideoPlaybackService { - var disposeBag = Set() - - let workingQueue = DispatchQueue(label: "org.joinmastodon.app.VideoPlaybackService.working-queue") - private(set) var viewPlayerViewModelDict: [URL: VideoPlayerViewModel] = [:] - - // only for video kind - weak var latestPlayingVideoPlayerViewModel: VideoPlayerViewModel? -} - -extension VideoPlaybackService { - private func playerViewModel(_ playerViewModel: VideoPlayerViewModel, didUpdateTimeControlStatus: AVPlayer.TimeControlStatus) { - switch playerViewModel.videoKind { - case .gif: - // do nothing - return - case .video: - if playerViewModel.timeControlStatus.value != .paused { - latestPlayingVideoPlayerViewModel = playerViewModel - - // pause other player - for viewModel in viewPlayerViewModelDict.values { - guard viewModel.timeControlStatus.value != .paused else { continue } - guard viewModel !== playerViewModel else { continue } - viewModel.pause() - } - } else { - if latestPlayingVideoPlayerViewModel === playerViewModel { - latestPlayingVideoPlayerViewModel = nil - } - } - } - } -} - -extension VideoPlaybackService { - func dequeueVideoPlayerViewModel(for media: MastodonAttachment) -> VideoPlayerViewModel? { - // Core Data entity not thread-safe. Save attribute before enter working queue - guard let assetURL = media.assetURL, - let url = URL(string: assetURL), - media.kind == .gifv || media.kind == .video - else { return nil } - - let previewImageURL = media.previewURL.flatMap { URL(string: $0) } - let videoKind: VideoPlayerViewModel.Kind = media.kind == .gifv ? .gif : .video - - var _viewModel: VideoPlayerViewModel? - workingQueue.sync { - if let viewModel = viewPlayerViewModelDict[url] { - _viewModel = viewModel - } else { - let viewModel = VideoPlayerViewModel( - previewImageURL: previewImageURL, - videoURL: url, - videoSize: media.size, - videoKind: videoKind - ) - viewPlayerViewModelDict[url] = viewModel - setupListener(for: viewModel) - _viewModel = viewModel - } - } - return _viewModel - } - - func playerViewModel(for playerViewController: AVPlayerViewController) -> VideoPlayerViewModel? { - guard let url = (playerViewController.player?.currentItem?.asset as? AVURLAsset)?.url else { return nil } - return viewPlayerViewModelDict[url] - } - - private func setupListener(for viewModel: VideoPlayerViewModel) { - viewModel.timeControlStatus - .sink { [weak self] timeControlStatus in - guard let self = self else { return } - self.playerViewModel(viewModel, didUpdateTimeControlStatus: timeControlStatus) - } - .store(in: &disposeBag) - - NotificationCenter.default.publisher(for: AudioPlaybackService.appWillPlayAudioNotification) - .sink { [weak self] _ in - guard let self = self else { return } - self.pauseWhenPlayAudio() - } - .store(in: &disposeBag) - } -} - -extension VideoPlaybackService { - func markTransitioning(for status: Status) { - // TODO: -// guard let videoAttachment = status.mediaAttachments?.filter({ $0.type == .gifv || $0.type == .video }).first else { return } -// guard let videoPlayerViewModel = dequeueVideoPlayerViewModel(for: videoAttachment) else { return } -// videoPlayerViewModel.isTransitioning = true - } - - func viewDidDisappear(from viewController: UIViewController?) { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", (#file as NSString).lastPathComponent, #line, #function) - - // note: do not retain view controller - // pause all player when view disappear exclude full screen player and other transitioning scene - for viewModel in viewPlayerViewModelDict.values { - guard !viewModel.isTransitioning else { - viewModel.isTransitioning = false - continue - } - guard !viewModel.isFullScreenPresentationing else { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: isFullScreenPresentationing", (#file as NSString).lastPathComponent, #line, #function) - continue - } - guard viewModel.videoKind == .video else { continue } - viewModel.pause() - } - } - - func pauseWhenPlayAudio() { - for viewModel in viewPlayerViewModelDict.values { - guard !viewModel.isTransitioning else { - viewModel.isTransitioning = false - continue - } - guard !viewModel.isFullScreenPresentationing else { - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: isFullScreenPresentationing", (#file as NSString).lastPathComponent, #line, #function) - continue - } - viewModel.pause() - } - } -} diff --git a/Mastodon/State/AppContext.swift b/Mastodon/State/AppContext.swift index 0b7e37d4a..9de19c44f 100644 --- a/Mastodon/State/AppContext.swift +++ b/Mastodon/State/AppContext.swift @@ -25,8 +25,6 @@ class AppContext: ObservableObject { let apiService: APIService let authenticationService: AuthenticationService let emojiService: EmojiService - let audioPlaybackService = AudioPlaybackService() - let videoPlaybackService = VideoPlaybackService() let statusPublishService = StatusPublishService() let notificationService: NotificationService let settingService: SettingService diff --git a/Mastodon/Supporting Files/AppDelegate.swift b/Mastodon/Supporting Files/AppDelegate.swift index 6d7919c67..5989f80ad 100644 --- a/Mastodon/Supporting Files/AppDelegate.swift +++ b/Mastodon/Supporting Files/AppDelegate.swift @@ -24,6 +24,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // configure appearance ThemeService.shared.apply(theme: ThemeService.shared.currentTheme.value) + // configure AudioSession + try? AVAudioSession.sharedInstance().setCategory(.ambient) + // Update app version info. See: `Settings.bundle` UserDefaults.standard.setValue(UIApplication.appVersion(), forKey: "Mastodon.appVersion") UserDefaults.standard.setValue(UIApplication.appBuild(), forKey: "Mastodon.appBundle") diff --git a/Mastodon/Supporting Files/SceneDelegate.swift b/Mastodon/Supporting Files/SceneDelegate.swift index 1ed702768..79ce1543a 100644 --- a/Mastodon/Supporting Files/SceneDelegate.swift +++ b/Mastodon/Supporting Files/SceneDelegate.swift @@ -113,7 +113,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { // Called as the scene transitions from the foreground to the background. // Use this method to save data, release shared resources, and store enough scene-specific state information // to restore the scene back to its current state. - AppContext.shared.audioPlaybackService.pauseIfNeed() } } diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/AudioContainerView.swift b/MastodonSDK/Sources/MastodonUI/View/Container/AudioContainerView.swift new file mode 100644 index 000000000..d23759a31 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Container/AudioContainerView.swift @@ -0,0 +1,136 @@ +// +// AudioViewContainer.swift +// Mastodon +// +// Created by sxiaojian on 2021/3/8. +// + +import CoreDataStack +import os.log +import UIKit +import MastodonAsset +import MastodonLocalization + +//public final class AudioContainerView: UIView { +// static let cornerRadius: CGFloat = 22 +// +// let container: UIStackView = { +// let stackView = UIStackView() +// stackView.axis = .horizontal +// stackView.distribution = .fill +// stackView.alignment = .center +// stackView.spacing = 11 +// stackView.layoutMargins = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8) +// stackView.isLayoutMarginsRelativeArrangement = true +// stackView.layer.cornerRadius = AudioContainerView.cornerRadius +// stackView.clipsToBounds = true +// stackView.backgroundColor = Asset.Colors.brandBlue.color +// stackView.translatesAutoresizingMaskIntoConstraints = false +// return stackView +// }() +// +// let playButtonBackgroundView: UIView = { +// let view = UIView() +// view.layer.cornerRadius = 16 +// view.clipsToBounds = true +// view.backgroundColor = Asset.Colors.brandBlue.color +// view.translatesAutoresizingMaskIntoConstraints = false +// return view +// }() +// +// let playButton: UIButton = { +// let button = HighlightDimmableButton(type: .custom) +// let image = UIImage(systemName: "play.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 32, weight: .bold))! +// button.setImage(image.withRenderingMode(.alwaysTemplate), for: .normal) +// +// let pauseImage = UIImage(systemName: "pause.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 32, weight: .bold))! +// button.setImage(pauseImage.withRenderingMode(.alwaysTemplate), for: .selected) +// +// button.tintColor = .white +// button.translatesAutoresizingMaskIntoConstraints = false +// button.isEnabled = true +// return button +// }() +// +// let slider: UISlider = { +// let slider = UISlider() +// slider.isContinuous = true +// slider.translatesAutoresizingMaskIntoConstraints = false +// slider.minimumTrackTintColor = Asset.Colors.Slider.track.color +// slider.maximumTrackTintColor = Asset.Colors.Slider.track.color +// if let image = UIImage.placeholder(size: CGSize(width: 22, height: 22), color: .white).withRoundedCorners(radius: 11) { +// slider.setThumbImage(image, for: .normal) +// } +// return slider +// }() +// +// let timeLabel: UILabel = { +// let label = UILabel() +// label.translatesAutoresizingMaskIntoConstraints = false +// label.font = .systemFont(ofSize: 13, weight: .regular) +// label.textColor = .white +// label.textAlignment = UIApplication.shared.userInterfaceLayoutDirection == .leftToRight ? .right : .left +// return label +// }() +// +// override init(frame: CGRect) { +// super.init(frame: frame) +// _init() +// } +// +// required init?(coder: NSCoder) { +// super.init(coder: coder) +// _init() +// } +//} +// +//extension AudioContainerView { +// private func _init() { +// addSubview(container) +// NSLayoutConstraint.activate([ +// container.topAnchor.constraint(equalTo: topAnchor), +// container.leadingAnchor.constraint(equalTo: leadingAnchor), +// trailingAnchor.constraint(equalTo: container.trailingAnchor), +// bottomAnchor.constraint(equalTo: container.bottomAnchor), +// ]) +// +// // checkmark +// playButtonBackgroundView.addSubview(playButton) +// container.addArrangedSubview(playButtonBackgroundView) +// NSLayoutConstraint.activate([ +// playButton.centerXAnchor.constraint(equalTo: playButtonBackgroundView.centerXAnchor), +// playButton.centerYAnchor.constraint(equalTo: playButtonBackgroundView.centerYAnchor), +// playButtonBackgroundView.heightAnchor.constraint(equalToConstant: 32).priority(.required - 1), +// playButtonBackgroundView.widthAnchor.constraint(equalToConstant: 32).priority(.required - 1), +// ]) +// +// container.addArrangedSubview(slider) +// +// container.addArrangedSubview(timeLabel) +// NSLayoutConstraint.activate([ +// timeLabel.widthAnchor.constraint(equalToConstant: 40).priority(.required - 1), +// ]) +// } +//} +// +//extension AudioContainerView { +// public struct Configuration: Hashable { +// +// } +//} +// +//#if canImport(SwiftUI) && DEBUG +//import SwiftUI +// +//struct AudioContainerView_Previews: PreviewProvider { +// +// static var previews: some View { +// UIViewPreview(width: 375) { +// AudioContainerView() +// } +// .previewLayout(.fixed(width: 375, height: 100)) +// } +// +//} +//#endif +// diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift index c460d6693..92c5972b0 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift @@ -12,47 +12,18 @@ extension MediaGridContainerView { public class ViewModel { var disposeBag = Set() - @Published public var isSensitiveToggleButtonDisplay: Bool = false - @Published public var isContentWarningOverlayDisplay: Bool? = nil } } extension MediaGridContainerView.ViewModel { - func resetContentWarningOverlay() { - isContentWarningOverlayDisplay = nil - } - func bind(view: MediaGridContainerView) { $isSensitiveToggleButtonDisplay .sink { isDisplay in view.sensitiveToggleButtonBlurVisualEffectView.isHidden = !isDisplay } .store(in: &disposeBag) - $isContentWarningOverlayDisplay - .sink { isDisplay in - assert(Thread.isMainThread) - guard let isDisplay = isDisplay else { return } - let withAnimation = self.isContentWarningOverlayDisplay != nil - view.configureOverlayDisplay(isDisplay: isDisplay, animated: withAnimation) - } - .store(in: &disposeBag) } } - -extension MediaGridContainerView { - func configureOverlayDisplay(isDisplay: Bool, animated: Bool) { - if animated { - UIView.animate(withDuration: 0.33, delay: 0, options: .curveEaseInOut) { - self.contentWarningOverlayView.blurVisualEffectView.alpha = isDisplay ? 1 : 0 - } - } else { - contentWarningOverlayView.blurVisualEffectView.alpha = isDisplay ? 1 : 0 - } - - contentWarningOverlayView.isUserInteractionEnabled = isDisplay - contentWarningOverlayView.tapGestureRecognizer.isEnabled = isDisplay - } -} diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift index fd33b72d4..a461dd9c6 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift @@ -12,11 +12,12 @@ import func AVFoundation.AVMakeRect public protocol MediaGridContainerViewDelegate: AnyObject { func mediaGridContainerView(_ container: MediaGridContainerView, didTapMediaView mediaView: MediaView, at index: Int) - func mediaGridContainerView(_ container: MediaGridContainerView, toggleContentWarningOverlayViewDisplay contentWarningOverlayView: ContentWarningOverlayView) + func mediaGridContainerView(_ container: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) } public final class MediaGridContainerView: UIView { + static let sensitiveToggleButtonSize = CGSize(width: 34, height: 34) public static let maxCount = 9 let logger = Logger(subsystem: "MediaGridContainerView", category: "UI") @@ -51,25 +52,19 @@ public final class MediaGridContainerView: UIView { let sensitiveToggleButtonBlurVisualEffectView: UIVisualEffectView = { let visualEffectView = UIVisualEffectView(effect: ContentWarningOverlayView.blurVisualEffect) visualEffectView.layer.masksToBounds = true - visualEffectView.layer.cornerRadius = 6 + visualEffectView.layer.cornerRadius = MediaGridContainerView.sensitiveToggleButtonSize.width / 2 visualEffectView.layer.cornerCurve = .continuous return visualEffectView }() let sensitiveToggleButtonVibrancyVisualEffectView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: ContentWarningOverlayView.blurVisualEffect)) let sensitiveToggleButton: HitTestExpandedButton = { let button = HitTestExpandedButton(type: .system) + button.contentEdgeInsets = UIEdgeInsets(top: 4, left: 4, bottom: 4, right: 4) + button.imageView?.contentMode = .scaleAspectFit button.setImage(UIImage(systemName: "eye.slash.fill"), for: .normal) return button }() - public let contentWarningOverlayView: ContentWarningOverlayView = { - let overlay = ContentWarningOverlayView() - overlay.layer.masksToBounds = true - overlay.layer.cornerRadius = MediaView.cornerRadius - overlay.layer.cornerCurve = .continuous - return overlay - }() - public override init(frame: CGRect) { super.init(frame: frame) _init() @@ -85,7 +80,6 @@ public final class MediaGridContainerView: UIView { extension MediaGridContainerView { private func _init() { sensitiveToggleButton.addTarget(self, action: #selector(MediaGridContainerView.sensitiveToggleButtonDidPressed(_:)), for: .touchUpInside) - contentWarningOverlayView.delegate = self } } @@ -99,7 +93,7 @@ extension MediaGridContainerView { @objc private func sensitiveToggleButtonDidPressed(_ sender: UIButton) { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") - delegate?.mediaGridContainerView(self, toggleContentWarningOverlayViewDisplay: contentWarningOverlayView) + delegate?.mediaGridContainerView(self, mediaSensitiveButtonDidPressed: sender) } } @@ -113,9 +107,6 @@ extension MediaGridContainerView { layoutSensitiveToggleButton() bringSubviewToFront(sensitiveToggleButtonBlurVisualEffectView) - - layoutContentOverlayView(on: mediaView) - bringSubviewToFront(contentWarningOverlayView) return mediaView } @@ -128,9 +119,6 @@ extension MediaGridContainerView { layoutSensitiveToggleButton() bringSubviewToFront(sensitiveToggleButtonBlurVisualEffectView) - - layoutContentOverlayView(on: self) - bringSubviewToFront(contentWarningOverlayView) return mediaViews } @@ -156,8 +144,8 @@ extension MediaGridContainerView { sensitiveToggleButtonBlurVisualEffectView.translatesAutoresizingMaskIntoConstraints = false addSubview(sensitiveToggleButtonBlurVisualEffectView) NSLayoutConstraint.activate([ - sensitiveToggleButtonBlurVisualEffectView.topAnchor.constraint(equalTo: topAnchor, constant: 8), - sensitiveToggleButtonBlurVisualEffectView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 8), + sensitiveToggleButtonBlurVisualEffectView.topAnchor.constraint(equalTo: topAnchor, constant: 16), + trailingAnchor.constraint(equalTo: sensitiveToggleButtonBlurVisualEffectView.trailingAnchor, constant: 16), ]) sensitiveToggleButtonVibrancyVisualEffectView.translatesAutoresizingMaskIntoConstraints = false @@ -172,21 +160,12 @@ extension MediaGridContainerView { sensitiveToggleButton.translatesAutoresizingMaskIntoConstraints = false sensitiveToggleButtonVibrancyVisualEffectView.contentView.addSubview(sensitiveToggleButton) NSLayoutConstraint.activate([ - sensitiveToggleButton.topAnchor.constraint(equalTo: sensitiveToggleButtonVibrancyVisualEffectView.contentView.topAnchor, constant: 4), - sensitiveToggleButton.leadingAnchor.constraint(equalTo: sensitiveToggleButtonVibrancyVisualEffectView.contentView.leadingAnchor, constant: 4), - sensitiveToggleButtonVibrancyVisualEffectView.contentView.trailingAnchor.constraint(equalTo: sensitiveToggleButton.trailingAnchor, constant: 4), - sensitiveToggleButtonVibrancyVisualEffectView.contentView.bottomAnchor.constraint(equalTo: sensitiveToggleButton.bottomAnchor, constant: 4), - ]) - } - - private func layoutContentOverlayView(on view: UIView) { - contentWarningOverlayView.translatesAutoresizingMaskIntoConstraints = false - addSubview(contentWarningOverlayView) // should add to container - NSLayoutConstraint.activate([ - contentWarningOverlayView.topAnchor.constraint(equalTo: view.topAnchor), - contentWarningOverlayView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - contentWarningOverlayView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - contentWarningOverlayView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + sensitiveToggleButton.topAnchor.constraint(equalTo: sensitiveToggleButtonVibrancyVisualEffectView.contentView.topAnchor), + sensitiveToggleButton.leadingAnchor.constraint(equalTo: sensitiveToggleButtonVibrancyVisualEffectView.contentView.leadingAnchor), + sensitiveToggleButtonVibrancyVisualEffectView.contentView.trailingAnchor.constraint(equalTo: sensitiveToggleButton.trailingAnchor), + sensitiveToggleButtonVibrancyVisualEffectView.contentView.bottomAnchor.constraint(equalTo: sensitiveToggleButton.bottomAnchor), + sensitiveToggleButton.widthAnchor.constraint(equalToConstant: MediaGridContainerView.sensitiveToggleButtonSize.width).priority(.required - 1), + sensitiveToggleButton.heightAnchor.constraint(equalToConstant: MediaGridContainerView.sensitiveToggleButtonSize.height).priority(.required - 1), ]) } @@ -328,10 +307,3 @@ extension MediaGridContainerView { } } } - -// MARK: - ContentWarningOverlayViewDelegate -extension MediaGridContainerView: ContentWarningOverlayViewDelegate { - public func contentWarningOverlayViewDidPressed(_ contentWarningOverlayView: ContentWarningOverlayView) { - delegate?.mediaGridContainerView(self, toggleContentWarningOverlayViewDisplay: contentWarningOverlayView) - } -} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift index cb4d742bb..6026e668f 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView+Configuration.swift @@ -14,10 +14,13 @@ import Photos extension MediaView { public class Configuration: Hashable { + var disposeBag = Set() + public let info: Info public let blurhash: String? @Published public var isReveal = true + @Published public var previewImage: UIImage? @Published public var blurhashImage: UIImage? public var blurhashImageDisposeBag = Set() @@ -37,6 +40,17 @@ extension MediaView { } } + public var previewURL: String? { + switch info { + case .image(let info): + return info.assetURL + case .gif(let info): + return info.previewURL + case .video(let info): + return info.previewURL + } + } + public var assetURL: String? { switch info { case .image(let info): diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift index e51330d7d..68847e747 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift @@ -9,6 +9,7 @@ import AVKit import UIKit import Combine +import AlamofireImage public final class MediaView: UIView { @@ -46,9 +47,17 @@ public final class MediaView: UIView { let playerViewController = AVPlayerViewController() playerViewController.view.layer.masksToBounds = true playerViewController.view.isUserInteractionEnabled = false + playerViewController.videoGravity = .resizeAspectFill + playerViewController.updatesNowPlayingInfoCenter = false return playerViewController }() private var playerLooper: AVPlayerLooper? + private(set) lazy var playbackImageView: UIImageView = { + let imageView = UIImageView() + imageView.image = UIImage(systemName: "play.circle.fill") + imageView.tintColor = .white + return imageView + }() private(set) lazy var indicatorBlurEffectView: UIVisualEffectView = { let effectView = UIVisualEffectView(effect: UIBlurEffect(style: .systemUltraThinMaterial)) @@ -60,12 +69,12 @@ public final class MediaView: UIView { private(set) lazy var indicatorVibrancyEffectView = UIVisualEffectView( effect: UIVibrancyEffect(blurEffect: UIBlurEffect(style: .systemUltraThinMaterial)) ) -// private(set) lazy var playerIndicatorLabel: UILabel = { -// let label = UILabel() -// label.font = .preferredFont(forTextStyle: .caption1) -// label.textColor = .secondaryLabel -// return label -// }() + private(set) lazy var playerIndicatorLabel: UILabel = { + let label = UILabel() + label.font = .preferredFont(forTextStyle: .caption1) + label.textColor = .secondaryLabel + return label + }() public override init(frame: CGRect) { super.init(frame: frame) @@ -83,11 +92,11 @@ extension MediaView { @MainActor public func thumbnail() async -> UIImage? { - return imageView.image + return imageView.image ?? configuration?.previewImage } public func thumbnail() -> UIImage? { - return imageView.image + return imageView.image ?? configuration?.previewImage } } @@ -104,40 +113,21 @@ extension MediaView { switch configuration.info { case .image(let info): - configure(image: info) + layoutImage() + bindImage(configuration: configuration, info: info) case .gif(let info): - configure(gif: info) + layoutGIF() + bindGIF(configuration: configuration, info: info) case .video(let info): - configure(video: info) + layoutVideo() + bindVideo(configuration: configuration, info: info) } - - if let blurhash = configuration.blurhash { - configure(blurhash: blurhash) - - configuration.$blurhashImage - .receive(on: DispatchQueue.main) - .assign(to: \.image, on: blurhashImageView) - .store(in: &_disposeBag) - - blurhashImageView.alpha = configuration.isReveal ? 0 : 1 - } - - configuration.$isReveal - .dropFirst() - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak self] isReveal in - guard let self = self else { return } - let animator = UIViewPropertyAnimator(duration: 0.3, curve: .easeInOut) - animator.addAnimations { - self.blurhashImageView.alpha = isReveal ? 0 : 1 - } - animator.startAnimation() - } - .store(in: &_disposeBag) + + layoutBlurhash() + bindBlurhash(configuration: configuration) } - private func configure(image info: Configuration.ImageInfo) { + private func layoutImage() { imageView.translatesAutoresizingMaskIntoConstraints = false container.addSubview(imageView) NSLayoutConstraint.activate([ @@ -146,20 +136,24 @@ extension MediaView { imageView.trailingAnchor.constraint(equalTo: container.trailingAnchor), imageView.bottomAnchor.constraint(equalTo: container.bottomAnchor), ]) - - let placeholder = UIImage.placeholder(color: .systemGray6) - guard let urlString = info.assetURL, - let url = URL(string: urlString) else { - imageView.image = placeholder - return - } - imageView.af.setImage( - withURL: url, - placeholderImage: placeholder + } + + private func bindImage(configuration: Configuration, info: Configuration.ImageInfo) { + Publishers.CombineLatest3( + configuration.$isReveal, + configuration.$previewImage, + configuration.$blurhashImage ) + .receive(on: DispatchQueue.main) + .sink { [weak self] isReveal, previewImage, blurhashImage in + guard let self = self else { return } + let image = isReveal ? previewImage : blurhashImage + self.imageView.image = image + } + .store(in: &configuration.disposeBag) } - private func configure(gif info: Configuration.VideoInfo) { + private func layoutGIF() { // use view controller as View here playerViewController.view.translatesAutoresizingMaskIntoConstraints = false container.addSubview(playerViewController.view) @@ -170,18 +164,11 @@ extension MediaView { playerViewController.view.bottomAnchor.constraint(equalTo: container.bottomAnchor), ]) - assert(playerViewController.contentOverlayView != nil) - if let contentOverlayView = playerViewController.contentOverlayView { - indicatorBlurEffectView.translatesAutoresizingMaskIntoConstraints = false - contentOverlayView.addSubview(indicatorBlurEffectView) - NSLayoutConstraint.activate([ - contentOverlayView.trailingAnchor.constraint(equalTo: indicatorBlurEffectView.trailingAnchor, constant: 11), - contentOverlayView.bottomAnchor.constraint(equalTo: indicatorBlurEffectView.bottomAnchor, constant: 8), - ]) - setupIndicatorViewHierarchy() - } -// playerIndicatorLabel.attributedText = NSAttributedString(AttributedString("GIF")) - + setupIndicatorViewHierarchy() + playerIndicatorLabel.attributedText = NSAttributedString(string: "GIF") + } + + private func bindGIF(configuration: Configuration, info: Configuration.VideoInfo) { guard let player = setupGIFPlayer(info: info) else { return } setupPlayerLooper(player: player) playerViewController.player = player @@ -191,20 +178,33 @@ extension MediaView { player.play() } - private func configure(video info: Configuration.VideoInfo) { + private func layoutVideo() { + layoutImage() + + playbackImageView.translatesAutoresizingMaskIntoConstraints = false + container.addSubview(playbackImageView) + NSLayoutConstraint.activate([ + playbackImageView.centerXAnchor.constraint(equalTo: container.centerXAnchor), + playbackImageView.centerYAnchor.constraint(equalTo: container.centerYAnchor), + playbackImageView.widthAnchor.constraint(equalToConstant: 88).priority(.required - 1), + playbackImageView.heightAnchor.constraint(equalToConstant: 88).priority(.required - 1), + ]) + } + + private func bindVideo(configuration: Configuration, info: Configuration.VideoInfo) { let imageInfo = Configuration.ImageInfo( aspectRadio: info.aspectRadio, assetURL: info.previewURL ) - configure(image: imageInfo) + bindImage(configuration: configuration, info: imageInfo) - indicatorBlurEffectView.translatesAutoresizingMaskIntoConstraints = false - imageView.addSubview(indicatorBlurEffectView) - NSLayoutConstraint.activate([ - imageView.trailingAnchor.constraint(equalTo: indicatorBlurEffectView.trailingAnchor, constant: 11), - imageView.bottomAnchor.constraint(equalTo: indicatorBlurEffectView.bottomAnchor, constant: 8), - ]) - setupIndicatorViewHierarchy() +// indicatorBlurEffectView.translatesAutoresizingMaskIntoConstraints = false +// imageView.addSubview(indicatorBlurEffectView) +// NSLayoutConstraint.activate([ +// imageView.trailingAnchor.constraint(equalTo: indicatorBlurEffectView.trailingAnchor, constant: 11), +// imageView.bottomAnchor.constraint(equalTo: indicatorBlurEffectView.bottomAnchor, constant: 8), +// ]) +// setupIndicatorViewHierarchy() // playerIndicatorLabel.attributedText = { // let imageAttachment = NSTextAttachment(image: UIImage(systemName: "play.fill")!) @@ -221,10 +221,9 @@ extension MediaView { // attributedString.foregroundColor = .secondaryLabel // return NSAttributedString(attributedString) // }() - } - private func configure(blurhash: String) { + private func layoutBlurhash() { blurhashImageView.translatesAutoresizingMaskIntoConstraints = false container.addSubview(blurhashImageView) NSLayoutConstraint.activate([ @@ -233,8 +232,28 @@ extension MediaView { blurhashImageView.trailingAnchor.constraint(equalTo: container.trailingAnchor), blurhashImageView.bottomAnchor.constraint(equalTo: container.bottomAnchor), ]) + } + + private func bindBlurhash(configuration: Configuration) { + configuration.$blurhashImage + .receive(on: DispatchQueue.main) + .assign(to: \.image, on: blurhashImageView) + .store(in: &_disposeBag) + blurhashImageView.alpha = configuration.isReveal ? 0 : 1 - blurhashImageView.backgroundColor = .systemGray + configuration.$isReveal + .dropFirst() + .removeDuplicates() + .receive(on: DispatchQueue.main) + .sink { [weak self] isReveal in + guard let self = self else { return } + let animator = UIViewPropertyAnimator(duration: 0.3, curve: .easeInOut) + animator.addAnimations { + self.blurhashImageView.alpha = isReveal ? 0 : 1 + } + animator.startAnimation() + } + .store(in: &_disposeBag) } public func prepareForReuse() { @@ -305,29 +324,39 @@ extension MediaView { } private func setupIndicatorViewHierarchy() { -// let blurEffectView = indicatorBlurEffectView -// let vibrancyEffectView = indicatorVibrancyEffectView -// -// if vibrancyEffectView.superview == nil { -// vibrancyEffectView.translatesAutoresizingMaskIntoConstraints = false -// blurEffectView.contentView.addSubview(vibrancyEffectView) -// NSLayoutConstraint.activate([ -// vibrancyEffectView.topAnchor.constraint(equalTo: blurEffectView.contentView.topAnchor), -// vibrancyEffectView.leadingAnchor.constraint(equalTo: blurEffectView.contentView.leadingAnchor), -// vibrancyEffectView.trailingAnchor.constraint(equalTo: blurEffectView.contentView.trailingAnchor), -// vibrancyEffectView.bottomAnchor.constraint(equalTo: blurEffectView.contentView.bottomAnchor), -// ]) -// } -// -// if playerIndicatorLabel.superview == nil { -// playerIndicatorLabel.translatesAutoresizingMaskIntoConstraints = false -// vibrancyEffectView.contentView.addSubview(playerIndicatorLabel) -// NSLayoutConstraint.activate([ -// playerIndicatorLabel.topAnchor.constraint(equalTo: vibrancyEffectView.contentView.topAnchor), -// playerIndicatorLabel.leadingAnchor.constraint(equalTo: vibrancyEffectView.contentView.leadingAnchor, constant: 3), -// vibrancyEffectView.contentView.trailingAnchor.constraint(equalTo: playerIndicatorLabel.trailingAnchor, constant: 3), -// playerIndicatorLabel.bottomAnchor.constraint(equalTo: vibrancyEffectView.contentView.bottomAnchor), -// ]) -// } + let blurEffectView = indicatorBlurEffectView + let vibrancyEffectView = indicatorVibrancyEffectView + + assert(playerViewController.contentOverlayView != nil) + if let contentOverlayView = playerViewController.contentOverlayView { + blurEffectView.translatesAutoresizingMaskIntoConstraints = false + contentOverlayView.addSubview(indicatorBlurEffectView) + NSLayoutConstraint.activate([ + contentOverlayView.trailingAnchor.constraint(equalTo: blurEffectView.trailingAnchor, constant: 16), + contentOverlayView.bottomAnchor.constraint(equalTo: blurEffectView.bottomAnchor, constant: 8), + ]) + } + + if vibrancyEffectView.superview == nil { + vibrancyEffectView.translatesAutoresizingMaskIntoConstraints = false + blurEffectView.contentView.addSubview(vibrancyEffectView) + NSLayoutConstraint.activate([ + vibrancyEffectView.topAnchor.constraint(equalTo: blurEffectView.contentView.topAnchor), + vibrancyEffectView.leadingAnchor.constraint(equalTo: blurEffectView.contentView.leadingAnchor), + vibrancyEffectView.trailingAnchor.constraint(equalTo: blurEffectView.contentView.trailingAnchor), + vibrancyEffectView.bottomAnchor.constraint(equalTo: blurEffectView.contentView.bottomAnchor), + ]) + } + + if playerIndicatorLabel.superview == nil { + playerIndicatorLabel.translatesAutoresizingMaskIntoConstraints = false + vibrancyEffectView.contentView.addSubview(playerIndicatorLabel) + NSLayoutConstraint.activate([ + playerIndicatorLabel.topAnchor.constraint(equalTo: vibrancyEffectView.contentView.topAnchor), + playerIndicatorLabel.leadingAnchor.constraint(equalTo: vibrancyEffectView.contentView.leadingAnchor, constant: 3), + vibrancyEffectView.contentView.trailingAnchor.constraint(equalTo: playerIndicatorLabel.trailingAnchor, constant: 3), + playerIndicatorLabel.bottomAnchor.constraint(equalTo: vibrancyEffectView.contentView.bottomAnchor), + ]) + } } } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index fd8d3c325..50dd38be9 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -388,6 +388,10 @@ extension NotificationView: StatusViewDelegate { assertionFailure() } + public func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) { + assertionFailure() + } + } // MARK: - MastodonMenuDelegate diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index ec61db168..dc1621106 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -53,6 +53,9 @@ extension StatusView { // Media @Published public var mediaViewConfigurations: [MediaView.Configuration] = [] + // Audio + @Published public var audioConfigurations: [MediaView.Configuration] = [] + // Poll @Published public var pollItems: [PollItem] = [] @Published public var isVotable: Bool = false @@ -121,9 +124,9 @@ extension StatusView { isMediaSensitive = false isMediaSensitiveToggled = false - isSensitive = false - isContentReveal = false - isMediaReveal = false +// isSensitive = false +// isContentReveal = false +// isMediaReveal = false } init() { @@ -154,7 +157,8 @@ extension StatusView { $isMediaSensitive, $isMediaSensitiveToggled ) - .map { $0 ? $1 : true } + .map { $1 ? !$0 : $0 } + .map { !$0 } .assign(to: &$isMediaReveal) } } @@ -375,6 +379,8 @@ extension StatusView.ViewModel { guard let self = self else { return } self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): configure media") + statusView.mediaGridContainerView.prepareForReuse() + let maxSize = CGSize( width: statusView.contentMaxLayoutWidth, height: 9999 // fulfill the width @@ -419,18 +425,11 @@ extension StatusView.ViewModel { } .store(in: &disposeBag) - // FIXME: - statusView.mediaGridContainerView.viewModel.isContentWarningOverlayDisplay = false -// $isMediaReveal -// .sink { isMediaReveal in -// statusView.mediaGridContainerView.viewModel.isContentWarningOverlayDisplay = isMediaReveal -// } -// .store(in: &disposeBag) -// $isMediaSensitiveSwitchable -// .sink { isMediaSensitiveSwitchable in -// statusView.mediaGridContainerView.viewModel.isSensitiveToggleButtonDisplay = isMediaSensitiveSwitchable -// } -// .store(in: &disposeBag) + $isMediaReveal + .sink { isMediaReveal in + statusView.mediaGridContainerView.viewModel.isSensitiveToggleButtonDisplay = isMediaReveal + } + .store(in: &disposeBag) } private func bindPoll(statusView: StatusView) { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index fa0dde84e..6f1eac0f0 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -24,6 +24,7 @@ public protocol StatusViewDelegate: AnyObject { func statusView(_ statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) func statusView(_ statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) func statusView(_ statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) + func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) // func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) // func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) } @@ -212,7 +213,6 @@ public final class StatusView: UIView { viewModel.prepareForReuse() avatarButton.avatarImageView.cancelTask() - mediaGridContainerView.prepareForReuse() if var snapshot = pollTableViewDiffableDataSource?.snapshot() { snapshot.deleteAllItems() if #available(iOS 15.0, *) { @@ -407,7 +407,7 @@ extension StatusView.Style { statusView.authorContainerView.alignment = category > .accessibilityLarge ? .leading : .center } .store(in: &statusView._disposeBag) - + // avatarButton let authorAvatarButtonSize = CGSize(width: 46, height: 46) statusView.avatarButton.size = authorAvatarButtonSize @@ -420,25 +420,29 @@ extension StatusView.Style { ]) statusView.avatarButton.setContentHuggingPriority(.required - 1, for: .vertical) statusView.avatarButton.setContentCompressionResistancePriority(.required - 1, for: .vertical) - + // authrMetaContainer: V - [ authorPrimaryMetaContainer | authorSecondaryMetaContainer ] let authorMetaContainer = UIStackView() authorMetaContainer.axis = .vertical authorMetaContainer.spacing = 4 statusView.authorContainerView.addArrangedSubview(authorMetaContainer) - + // authorPrimaryMetaContainer: H - [ authorNameLabel | (padding) | menuButton ] let authorPrimaryMetaContainer = UIStackView() authorPrimaryMetaContainer.axis = .horizontal + authorPrimaryMetaContainer.spacing = 10 authorMetaContainer.addArrangedSubview(authorPrimaryMetaContainer) - + // authorNameLabel authorPrimaryMetaContainer.addArrangedSubview(statusView.authorNameLabel) + statusView.authorNameLabel.setContentHuggingPriority(.required - 10, for: .horizontal) + statusView.authorNameLabel.setContentCompressionResistancePriority(.required - 10, for: .horizontal) authorPrimaryMetaContainer.addArrangedSubview(UIView()) // menuButton authorPrimaryMetaContainer.addArrangedSubview(statusView.menuButton) - statusView.menuButton.setContentCompressionResistancePriority(.required - 1, for: .horizontal) - + statusView.menuButton.setContentHuggingPriority(.required - 2, for: .horizontal) + statusView.menuButton.setContentCompressionResistancePriority(.required - 2, for: .horizontal) + // authorSecondaryMetaContainer: H - [ authorUsername | usernameTrialingDotLabel | dateLabel | (padding) ] let authorSecondaryMetaContainer = UIStackView() authorSecondaryMetaContainer.axis = .horizontal @@ -455,22 +459,22 @@ extension StatusView.Style { statusView.dateLabel.setContentHuggingPriority(.required - 1, for: .horizontal) statusView.dateLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) authorSecondaryMetaContainer.addArrangedSubview(UIView()) - + // content container: V - [ contentMetaText ] statusView.contentContainer.axis = .vertical statusView.contentContainer.spacing = 12 statusView.contentContainer.distribution = .fill statusView.contentContainer.alignment = .top - + statusView.contentContainer.preservesSuperviewLayoutMargins = true statusView.contentContainer.isLayoutMarginsRelativeArrangement = true statusView.containerStackView.addArrangedSubview(statusView.contentContainer) statusView.contentContainer.setContentHuggingPriority(.required - 1, for: .vertical) statusView.contentContainer.setContentCompressionResistancePriority(.required - 1, for: .vertical) - + // status content statusView.contentContainer.addArrangedSubview(statusView.contentMetaText.textView) - + statusView.spoilerOverlayView.translatesAutoresizingMaskIntoConstraints = false statusView.containerStackView.addSubview(statusView.spoilerOverlayView) NSLayoutConstraint.activate([ @@ -479,10 +483,10 @@ extension StatusView.Style { statusView.contentContainer.trailingAnchor.constraint(equalTo: statusView.spoilerOverlayView.trailingAnchor), statusView.contentContainer.bottomAnchor.constraint(equalTo: statusView.spoilerOverlayView.bottomAnchor), ]) - + // media container: V - [ mediaGridContainerView ] statusView.containerStackView.addArrangedSubview(statusView.mediaContainerView) - + statusView.mediaGridContainerView.translatesAutoresizingMaskIntoConstraints = false statusView.mediaContainerView.addSubview(statusView.mediaGridContainerView) NSLayoutConstraint.activate([ @@ -491,20 +495,20 @@ extension StatusView.Style { statusView.mediaGridContainerView.trailingAnchor.constraint(equalTo: statusView.mediaContainerView.trailingAnchor), statusView.mediaGridContainerView.bottomAnchor.constraint(equalTo: statusView.mediaContainerView.bottomAnchor), ]) - + // pollContainerView: V - [ pollTableView | pollStatusStackView ] statusView.pollContainerView.axis = .vertical statusView.pollContainerView.preservesSuperviewLayoutMargins = true statusView.pollContainerView.isLayoutMarginsRelativeArrangement = true statusView.containerStackView.addArrangedSubview(statusView.pollContainerView) - + // pollTableView statusView.pollContainerView.addArrangedSubview(statusView.pollTableView) - + // pollStatusStackView statusView.pollStatusStackView.axis = .horizontal statusView.pollContainerView.addArrangedSubview(statusView.pollStatusStackView) - + statusView.pollStatusStackView.addArrangedSubview(statusView.pollVoteCountLabel) statusView.pollStatusStackView.addArrangedSubview(statusView.pollStatusDotLabel) statusView.pollStatusStackView.addArrangedSubview(statusView.pollCountdownLabel) @@ -514,14 +518,14 @@ extension StatusView.Style { statusView.pollStatusDotLabel.setContentHuggingPriority(.defaultHigh + 1, for: .horizontal) statusView.pollCountdownLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) statusView.pollVoteButton.setContentHuggingPriority(.defaultHigh + 3, for: .horizontal) - + // statusVisibilityView statusView.statusVisibilityView.preservesSuperviewLayoutMargins = true statusView.containerStackView.addArrangedSubview(statusView.statusVisibilityView) - + statusView.spoilerBannerView.preservesSuperviewLayoutMargins = true statusView.containerStackView.addArrangedSubview(statusView.spoilerBannerView) - + // action toolbar statusView.actionToolbarContainer.configure(for: .inline) statusView.actionToolbarContainer.preservesSuperviewLayoutMargins = true @@ -728,8 +732,8 @@ extension StatusView: MediaGridContainerViewDelegate { delegate?.statusView(self, mediaGridContainerView: container, mediaView: mediaView, didSelectMediaViewAt: index) } - public func mediaGridContainerView(_ container: MediaGridContainerView, toggleContentWarningOverlayViewDisplay contentWarningOverlayView: ContentWarningOverlayView) { - fatalError() + public func mediaGridContainerView(_ container: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) { + delegate?.statusView(self, mediaGridContainerView: container, mediaSensitiveButtonDidPressed: button) } } From a651b306742c42e938816b526b0f8ed8e283c193 Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 9 Feb 2022 20:35:54 +0800 Subject: [PATCH 152/374] chore: update version to 1.3.0 (94) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index f28ee72ee..311a5a1ff 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 93 + 94 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 01b8698e5..120de75af 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4612,7 +4612,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4641,7 +4641,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4749,11 +4749,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 93; + DYLIB_CURRENT_VERSION = 94; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4780,11 +4780,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 93; + DYLIB_CURRENT_VERSION = 94; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4809,7 +4809,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4834,7 +4834,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4859,7 +4859,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4884,7 +4884,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4909,7 +4909,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4933,7 +4933,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 93; + CURRENT_PROJECT_VERSION = 94; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 7e9982d3c..f3ed5eb92 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 20 + 26 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 19 + 27 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 18 + 25 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 50f6db71f..7b6404cb1 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 93 + 94 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index f100851c0..d1a49725b 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 93 + 94 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index f28ee72ee..311a5a1ff 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 93 + 94 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index f28ee72ee..311a5a1ff 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 93 + 94 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 417718aa5..c56460eba 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 93 + 94 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 7f562ce3d..6b59bd03e 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 93 + 94 NSExtension NSExtensionAttributes From d1441aee8c52645c508d1674db1bd78dd5c8e776 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 14:21:19 +0800 Subject: [PATCH 153/374] fix: text strip wrong color in the Dark Mode issue --- Mastodon.xcodeproj/project.pbxproj | 2 +- .../mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist | 6 +++--- Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved | 4 ++-- .../Video/MediaPreviewVideoViewController.swift | 1 - .../Scene/Share/View/Content/StatusView+Configuration.swift | 4 +--- MastodonSDK/Package.swift | 2 +- 6 files changed, 8 insertions(+), 11 deletions(-) diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 120de75af..b7ede3f24 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -5066,7 +5066,7 @@ repositoryURL = "https://github.com/TwidereProject/MetaTextKit.git"; requirement = { kind = exactVersion; - version = 2.2.0; + version = 2.2.1; }; }; DB0E2D2C26833FF600865C3C /* XCRemoteSwiftPackageReference "Nuke-FLAnimatedImage-Plugin" */ = { diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index f3ed5eb92..c27b4d95a 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 26 + 30 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 27 + 31 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 25 + 29 SuppressBuildableAutocreation diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved index 6b20b0e1d..a10344881 100644 --- a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -87,8 +87,8 @@ "repositoryURL": "https://github.com/TwidereProject/MetaTextKit.git", "state": { "branch": null, - "revision": "2e91906221ee154656a34513604c6d3349dced4c", - "version": "2.2.0" + "revision": "3ea336d3de7938dc112084c596a646e697b0feee", + "version": "2.2.1" } }, { diff --git a/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift index 5d5dec84f..7bdbbfed2 100644 --- a/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift +++ b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift @@ -19,7 +19,6 @@ final class MediaPreviewVideoViewController: UIViewController { var viewModel: MediaPreviewVideoViewModel! let playerViewController = AVPlayerViewController() -// var pictureInPictureController: AVPictureInPictureController? let previewImageView = UIImageView() diff --git a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift index d3a39ccd6..6854ffc77 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift @@ -273,9 +273,7 @@ extension StatusView { viewModel.isMediaSensitive = status.sensitive && !status.attachments.isEmpty // some servers set media sensitive even empty attachments let configurations = MediaView.configuration(status: status) - if viewModel.mediaViewConfigurations != configurations { - viewModel.mediaViewConfigurations = configurations - } + viewModel.mediaViewConfigurations = configurations status.publisher(for: \.isMediaSensitiveToggled) .assign(to: \.isMediaSensitiveToggled, on: viewModel) diff --git a/MastodonSDK/Package.swift b/MastodonSDK/Package.swift index 42c24c2b6..af27091fa 100644 --- a/MastodonSDK/Package.swift +++ b/MastodonSDK/Package.swift @@ -32,7 +32,7 @@ let package = Package( .package(url: "https://github.com/apple/swift-nio.git", from: "1.0.0"), .package(url: "https://github.com/kean/Nuke.git", from: "10.3.1"), .package(url: "https://github.com/Flipboard/FLAnimatedImage.git", from: "1.0.0"), - .package(url: "https://github.com/TwidereProject/MetaTextKit.git", .exact("2.2.0")), + .package(url: "https://github.com/TwidereProject/MetaTextKit.git", .exact("2.2.1")), .package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.4.0"), .package(url: "https://github.com/Alamofire/AlamofireImage.git", from: "4.1.0"), .package(name: "NukeFLAnimatedImagePlugin", url: "https://github.com/kean/Nuke-FLAnimatedImage-Plugin.git", from: "8.0.0"), From 471384d5f3c1ca7e0464d7299d90b2bf9113eaf4 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 14:21:52 +0800 Subject: [PATCH 154/374] chore: remove spoiler toggle animation for table cell --- .../StatusTableViewCell+ViewModel.swift | 15 +++++++-------- .../View/Content/StatusView+ViewModel.swift | 4 ++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift index 9a535e9bb..873caff04 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift @@ -53,17 +53,16 @@ extension StatusTableViewCell { self.delegate = delegate - - statusView.viewModel.$isContentReveal - .removeDuplicates() - .dropFirst() + statusView.viewModel.isNeedsTableViewUpdate .receive(on: DispatchQueue.main) - .sink { [weak tableView, weak self] isContentReveal in + .sink { [weak tableView, weak self] in guard let tableView = tableView else { return } - guard let self = self else { return } + guard let _ = self else { return } - tableView.beginUpdates() - tableView.endUpdates() + UIView.performWithoutAnimation { + tableView.beginUpdates() + tableView.endUpdates() + } } .store(in: &disposeBag) } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index dc1621106..3cc71867d 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -88,6 +88,8 @@ extension StatusView { @Published public var reblogCount: Int = 0 @Published public var favoriteCount: Int = 0 + public let isNeedsTableViewUpdate = PassthroughSubject() + let timestampUpdatePublisher = Timer.publish(every: 1.0, on: .main, in: .common) .autoconnect() .share() @@ -282,6 +284,8 @@ extension StatusView.ViewModel { } statusView.setSpoilerOverlayViewHidden(isHidden: isContentReveal) + + self.isNeedsTableViewUpdate.send() } .store(in: &disposeBag) // visibility From 1ac0bd65bea658f656b5a96c0526cd6caf30d5a3 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 14:22:14 +0800 Subject: [PATCH 155/374] fix: add missing shadow for compose publish button --- Mastodon/Scene/Compose/ComposeViewController.swift | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Mastodon/Scene/Compose/ComposeViewController.swift b/Mastodon/Scene/Compose/ComposeViewController.swift index 8bff75b9e..04687ca5d 100644 --- a/Mastodon/Scene/Compose/ComposeViewController.swift +++ b/Mastodon/Scene/Compose/ComposeViewController.swift @@ -53,7 +53,16 @@ final class ComposeViewController: UIViewController, NeedsDependency { }() private(set) lazy var publishBarButtonItem: UIBarButtonItem = { configurePublishButtonApperance() - let barButtonItem = UIBarButtonItem(customView: publishButton) + let shadowBackgroundContainer = ShadowBackgroundContainer() + publishButton.translatesAutoresizingMaskIntoConstraints = false + shadowBackgroundContainer.addSubview(publishButton) + NSLayoutConstraint.activate([ + publishButton.topAnchor.constraint(equalTo: shadowBackgroundContainer.topAnchor), + publishButton.leadingAnchor.constraint(equalTo: shadowBackgroundContainer.leadingAnchor), + publishButton.trailingAnchor.constraint(equalTo: shadowBackgroundContainer.trailingAnchor), + publishButton.bottomAnchor.constraint(equalTo: shadowBackgroundContainer.bottomAnchor), + ]) + let barButtonItem = UIBarButtonItem(customView: shadowBackgroundContainer) return barButtonItem }() From ba76fc51a15d36e1bc72951607cac18baf07d450 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 15:03:57 +0800 Subject: [PATCH 156/374] fix: add missing margin for timeline with horizontal regular size class --- Mastodon.xcodeproj/project.pbxproj | 4 + .../HomeTimelineViewController.swift | 1 - .../NotificationTableViewCell+ViewModel.swift | 6 +- .../Cell/NotificationTableViewCell.swift | 16 +- .../AdaptiveMarginStatusTableViewCell.swift | 45 ++++ .../StatusTableViewCell+ViewModel.swift | 2 +- .../TableviewCell/StatusTableViewCell.swift | 255 ++---------------- ...tusThreadRootTableViewCell+ViewModel.swift | 2 +- .../StatusThreadRootTableViewCell.swift | 26 +- 9 files changed, 112 insertions(+), 245 deletions(-) create mode 100644 Mastodon/Scene/Share/View/TableviewCell/AdaptiveMarginStatusTableViewCell.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index b7ede3f24..1bc305a61 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -482,6 +482,7 @@ DBB45B5627B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5527B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift */; }; DBB45B5927B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5827B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift */; }; DBB45B5B27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5A27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift */; }; + DBB45B5E27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5D27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift */; }; DBB525082611EAC0002F1F29 /* Tabman in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* Tabman */; }; DBB5250E2611EBAF002F1F29 /* ProfileSegmentedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */; }; DBB525212611EBD6002F1F29 /* ProfilePagingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */; }; @@ -1225,6 +1226,7 @@ DBB45B5527B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewVideoViewController.swift; sourceTree = ""; }; DBB45B5827B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewVideoViewModel.swift; sourceTree = ""; }; DBB45B5A27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewTransitionViewController.swift; sourceTree = ""; }; + DBB45B5D27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveMarginStatusTableViewCell.swift; sourceTree = ""; }; DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileSegmentedViewController.swift; sourceTree = ""; }; DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePagingViewController.swift; sourceTree = ""; }; DBB5252F2611EBF3002F1F29 /* ProfilePagingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePagingViewModel.swift; sourceTree = ""; }; @@ -1736,6 +1738,7 @@ DBE3CDBA261C427900430CC6 /* TimelineHeaderTableViewCell.swift */, DB6B750327300B4000C70B6E /* TimelineFooterTableViewCell.swift */, DB02CDAA26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift */, + DBB45B5D27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift */, ); path = TableviewCell; sourceTree = ""; @@ -3826,6 +3829,7 @@ DBA465952696E387002B41DB /* AppPreference.swift in Sources */, 2D8434F525FF465D00EECE90 /* HomeTimelineNavigationBarTitleViewModel.swift in Sources */, DB938F0F2624119800E5B6C1 /* ThreadViewModel+LoadThreadState.swift in Sources */, + DBB45B5E27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift in Sources */, DB6180F226391CF40018D199 /* MediaPreviewImageViewModel.swift in Sources */, DBA5E7A3263AD0A3004598BB /* PhotoLibraryService.swift in Sources */, 5DDDF1932617442700311060 /* Mastodon+Entity+Account.swift in Sources */, diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index 319149701..d37ac8ca3 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -185,7 +185,6 @@ extension HomeTimelineViewController { viewModel.tableView = tableView viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self tableView.delegate = self -// tableView.prefetchDataSource = self viewModel.setupDiffableDataSource( tableView: tableView, statusTableViewCellDelegate: self, diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift index 83bd7b829..dc16346c2 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift @@ -31,11 +31,11 @@ extension NotificationTableViewCell { ) { if notificationView.frame == .zero { // set status view width - notificationView.frame.size.width = tableView.frame.width + notificationView.frame.size.width = tableView.frame.width - containerViewHorizontalMargin logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") - notificationView.statusView.frame.size.width = tableView.frame.width - notificationView.quoteStatusView.frame.size.width = tableView.frame.width - StatusView.containerLayoutMargin.left - StatusView.containerLayoutMargin.right + notificationView.statusView.frame.size.width = tableView.frame.width - containerViewHorizontalMargin + notificationView.quoteStatusView.frame.size.width = tableView.frame.width - StatusView.containerLayoutMargin.left - StatusView.containerLayoutMargin.right - containerViewHorizontalMargin } switch viewModel.value { diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift index fa49824fe..17b1b9a1d 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift @@ -20,6 +20,9 @@ final class NotificationTableViewCell: UITableViewCell { let notificationView = NotificationView() let separatorLine = UIView.separatorLine + + var containerViewLeadingLayoutConstraint: NSLayoutConstraint! + var containerViewTrailingLayoutConstraint: NSLayoutConstraint! override func prepareForReuse() { super.prepareForReuse() @@ -45,10 +48,12 @@ extension NotificationTableViewCell { private func _init() { notificationView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(notificationView) + setupContainerViewMarginConstraints() + updateContainerViewMarginConstraints() NSLayoutConstraint.activate([ notificationView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), - notificationView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - notificationView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + containerViewLeadingLayoutConstraint, + containerViewTrailingLayoutConstraint, contentView.bottomAnchor.constraint(equalTo: notificationView.bottomAnchor), ]) @@ -66,6 +71,13 @@ extension NotificationTableViewCell { } +// MARK: - AdaptiveContainerMarginTableViewCell +extension NotificationTableViewCell: AdaptiveContainerMarginTableViewCell { + var containerView: NotificationView { + notificationView + } +} + // MARK: - NotificationViewContainerTableViewCell extension NotificationTableViewCell: NotificationViewContainerTableViewCell { } diff --git a/Mastodon/Scene/Share/View/TableviewCell/AdaptiveMarginStatusTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/AdaptiveMarginStatusTableViewCell.swift new file mode 100644 index 000000000..78363d091 --- /dev/null +++ b/Mastodon/Scene/Share/View/TableviewCell/AdaptiveMarginStatusTableViewCell.swift @@ -0,0 +1,45 @@ +// +// AdaptiveMarginStatusTableViewCell.swift +// Mastodon +// +// Created by MainasuK on 2022-2-10. +// + +import UIKit +import MastodonUI + +protocol AdaptiveContainerMarginTableViewCell: UITableViewCell { + associatedtype ContainerView: UIView + static var containerViewMarginForRegularHorizontalSizeClass: CGFloat { get } + var containerView: ContainerView { get } + var containerViewLeadingLayoutConstraint: NSLayoutConstraint! { get set } + var containerViewTrailingLayoutConstraint: NSLayoutConstraint! { get set } +} + +extension AdaptiveContainerMarginTableViewCell { + + static var containerViewMarginForRegularHorizontalSizeClass: CGFloat { 64 } + + func setupContainerViewMarginConstraints() { + containerViewLeadingLayoutConstraint = containerView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) + containerViewTrailingLayoutConstraint = contentView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor) + } + + func updateContainerViewMarginConstraints() { + guard traitCollection.userInterfaceIdiom != .phone, + traitCollection.horizontalSizeClass == .regular + else { + containerViewLeadingLayoutConstraint.constant = 0 + containerViewTrailingLayoutConstraint.constant = 0 + return + } + + containerViewLeadingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass + containerViewTrailingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass + } + + var containerViewHorizontalMargin: CGFloat { + containerViewLeadingLayoutConstraint.constant + containerViewTrailingLayoutConstraint.constant + } + +} diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift index 873caff04..84dd49436 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift @@ -32,7 +32,7 @@ extension StatusTableViewCell { ) { if statusView.frame == .zero { // set status view width - statusView.frame.size.width = tableView.frame.width + statusView.frame.size.width = tableView.frame.width - containerViewHorizontalMargin logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") } diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift index aa8da714b..5a88eeba1 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift @@ -14,6 +14,8 @@ import MastodonUI final class StatusTableViewCell: UITableViewCell { + static let marginForRegularHorizontalSizeClass: CGFloat = 64 + let logger = Logger(subsystem: "StatusTableViewCell", category: "View") weak var delegate: StatusTableViewCellDelegate? @@ -21,6 +23,9 @@ final class StatusTableViewCell: UITableViewCell { let statusView = StatusView() let separatorLine = UIView.separatorLine + + var containerViewLeadingLayoutConstraint: NSLayoutConstraint! + var containerViewTrailingLayoutConstraint: NSLayoutConstraint! // var isFiltered: Bool = false { // didSet { @@ -64,10 +69,12 @@ extension StatusTableViewCell { private func _init() { statusView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(statusView) + setupContainerViewMarginConstraints() + updateContainerViewMarginConstraints() NSLayoutConstraint.activate([ statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), - statusView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - statusView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + containerViewLeadingLayoutConstraint, + containerViewTrailingLayoutConstraint, statusView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), ]) statusView.setup(style: .inline) @@ -82,245 +89,25 @@ extension StatusTableViewCell { ]) statusView.delegate = self -// statusView.translatesAutoresizingMaskIntoConstraints = false -// contentView.addSubview(statusView) -// NSLayoutConstraint.activate([ -// statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 20), -// statusView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), -// contentView.readableContentGuide.trailingAnchor.constraint(equalTo: statusView.trailingAnchor), -// ]) -// -// threadMetaStackView.translatesAutoresizingMaskIntoConstraints = false -// contentView.addSubview(threadMetaStackView) -// NSLayoutConstraint.activate([ -// threadMetaStackView.topAnchor.constraint(equalTo: statusView.bottomAnchor), -// threadMetaStackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), -// threadMetaStackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), -// threadMetaStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), -// ]) -// threadMetaStackView.addArrangedSubview(threadMetaView) -// -// filteredLabel.translatesAutoresizingMaskIntoConstraints = false -// addSubview(filteredLabel) -// NSLayoutConstraint.activate([ -// filteredLabel.centerXAnchor.constraint(equalTo: centerXAnchor), -// filteredLabel.centerYAnchor.constraint(equalTo: centerYAnchor), -// ]) -// filteredLabel.isHidden = true -// -// statusView.delegate = self -// statusView.pollTableView.delegate = self -// statusView.statusMosaicImageViewContainer.delegate = self -// statusView.actionToolbarContainer.delegate = self -// -// // default hidden -// threadMetaView.isHidden = true } -// override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { -// super.traitCollectionDidChange(previousTraitCollection) -// -// resetSeparatorLineLayout() -// } -// -// private func configure(isFiltered: Bool) { -// statusView.alpha = isFiltered ? 0 : 1 -// threadMetaView.alpha = isFiltered ? 0 : 1 -// filteredLabel.isHidden = !isFiltered -// isUserInteractionEnabled = !isFiltered -// } - + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + updateContainerViewMarginConstraints() + } + } -//extension StatusTableViewCell { -// -// private func resetSeparatorLineLayout() { -// separatorLineToEdgeLeadingLayoutConstraint.isActive = false -// separatorLineToEdgeTrailingLayoutConstraint.isActive = false -// separatorLineToMarginLeadingLayoutConstraint.isActive = false -// separatorLineToMarginTrailingLayoutConstraint.isActive = false -// -// if traitCollection.userInterfaceIdiom == .phone { -// // to edge -// NSLayoutConstraint.activate([ -// separatorLineToEdgeLeadingLayoutConstraint, -// separatorLineToEdgeTrailingLayoutConstraint, -// ]) -// } else { -// if traitCollection.horizontalSizeClass == .compact { -// // to edge -// NSLayoutConstraint.activate([ -// separatorLineToEdgeLeadingLayoutConstraint, -// separatorLineToEdgeTrailingLayoutConstraint, -// ]) -// } else { -// // to margin -// NSLayoutConstraint.activate([ -// separatorLineToMarginLeadingLayoutConstraint, -// separatorLineToMarginTrailingLayoutConstraint, -// ]) -// } -// } -// } -// -//} -// -//// MARK: - MosaicImageViewContainerPresentable -//extension StatusTableViewCell: MosaicImageViewContainerPresentable { -// -// var mosaicImageViewContainer: MosaicImageViewContainer { -// return statusView.statusMosaicImageViewContainer -// } -// -// var isRevealing: Bool { -// return statusView.isRevealing -// } -// -//} -// -//// MARK: - UITableViewDelegate -//extension StatusTableViewCell: UITableViewDelegate { -// -// func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool { -// if tableView === statusView.pollTableView, let diffableDataSource = statusView.pollTableViewDataSource { -// var pollID: String? -// defer { -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s. PollID: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription, pollID ?? "") -// } -// guard let item = diffableDataSource.itemIdentifier(for: indexPath), -// case let .option(objectID, _) = item, -// let option = delegate?.managedObjectContext.object(with: objectID) as? PollOption else { -// return false -// } -// pollID = option.poll.id -// return !option.poll.expired -// } else { -// assertionFailure() -// return true -// } -// } -// -// func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { -// if tableView === statusView.pollTableView, let diffableDataSource = statusView.pollTableViewDataSource { -// var pollID: String? -// defer { -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s. PollID: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription, pollID ?? "") -// } -// -// guard let context = delegate?.context else { return nil } -// guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return nil } -// guard let item = diffableDataSource.itemIdentifier(for: indexPath), -// case let .option(objectID, _) = item, -// let option = delegate?.managedObjectContext.object(with: objectID) as? PollOption else { -// return nil -// } -// let poll = option.poll -// pollID = poll.id -// -// // disallow select when: poll expired OR user voted remote OR user voted local -// let userID = activeMastodonAuthenticationBox.userID -// let didVotedRemote = (option.poll.votedBy ?? Set()).contains(where: { $0.id == userID }) -// let votedOptions = poll.options.filter { option in -// (option.votedBy ?? Set()).map { $0.id }.contains(userID) -// } -// let didVotedLocal = !votedOptions.isEmpty -// -// if poll.multiple { -// guard !option.poll.expired, !didVotedRemote else { -// return nil -// } -// } else { -// guard !option.poll.expired, !didVotedRemote, !didVotedLocal else { -// return nil -// } -// } -// -// return indexPath -// } else { -// assertionFailure() -// return indexPath -// } -// } -// -// -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// if tableView === statusView.pollTableView { -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: indexPath: %s", ((#file as NSString).lastPathComponent), #line, #function, indexPath.debugDescription) -// delegate?.statusTableViewCell(self, pollTableView: statusView.pollTableView, didSelectRowAt: indexPath) -// } else { -// assertionFailure() -// } -// } -// -//} - +// MARK: - AdaptiveContainerMarginTableViewCell +extension StatusTableViewCell: AdaptiveContainerMarginTableViewCell { + var containerView: StatusView { + statusView + } +} // MARK: - StatusViewContainerTableViewCell extension StatusTableViewCell: StatusViewContainerTableViewCell { } // MARK: - StatusViewDelegate extension StatusTableViewCell: StatusViewDelegate { } - - -//// MARK: - StatusViewDelegate -//extension StatusTableViewCell: StatusViewDelegate { -// -// func statusView(_ statusView: StatusView, headerInfoLabelDidPressed label: UILabel) { -// delegate?.statusTableViewCell(self, statusView: statusView, headerInfoLabelDidPressed: label) -// } -// -// func statusView(_ statusView: StatusView, avatarImageViewDidPressed imageView: UIImageView) { -// delegate?.statusTableViewCell(self, statusView: statusView, avatarImageViewDidPressed: imageView) -// } -// -// func statusView(_ statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { -// delegate?.statusTableViewCell(self, statusView: statusView, revealContentWarningButtonDidPressed: button) -// } -// -// func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { -// delegate?.statusTableViewCell(self, statusView: statusView, contentWarningOverlayViewDidPressed: contentWarningOverlayView) -// } -// -// func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { -// delegate?.statusTableViewCell(self, playerContainerView: playerContainerView, contentWarningOverlayViewDidPressed: contentWarningOverlayView) -// } -// -// func statusView(_ statusView: StatusView, pollVoteButtonPressed button: UIButton) { -// delegate?.statusTableViewCell(self, statusView: statusView, pollVoteButtonPressed: button) -// } -// -// func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { -// delegate?.statusTableViewCell(self, statusView: statusView, metaText: metaText, didSelectMeta: meta) -// } -// -//} -// -//// MARK: - MosaicImageViewDelegate -//extension StatusTableViewCell: MosaicImageViewContainerDelegate { -// -// func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, didTapImageView imageView: UIImageView, atIndex index: Int) { -// delegate?.statusTableViewCell(self, mosaicImageViewContainer: mosaicImageViewContainer, didTapImageView: imageView, atIndex: index) -// } -// -// func mosaicImageViewContainer(_ mosaicImageViewContainer: MosaicImageViewContainer, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { -// delegate?.statusTableViewCell(self, mosaicImageViewContainer: mosaicImageViewContainer, contentWarningOverlayViewDidPressed: contentWarningOverlayView) -// } -// -//} -// -//// MARK: - ActionToolbarContainerDelegate -//extension StatusTableViewCell: ActionToolbarContainerDelegate { -// -// func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, replayButtonDidPressed sender: UIButton) { -// delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, replyButtonDidPressed: sender) -// } -// -// func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, reblogButtonDidPressed sender: UIButton) { -// delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, reblogButtonDidPressed: sender) -// } -// -// func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, starButtonDidPressed sender: UIButton) { -// delegate?.statusTableViewCell(self, actionToolbarContainer: actionToolbarContainer, likeButtonDidPressed: sender) -// } -// -//} diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift index 240736fd6..9568aa80e 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell+ViewModel.swift @@ -31,7 +31,7 @@ extension StatusThreadRootTableViewCell { ) { if statusView.frame == .zero { // set status view width - statusView.frame.size.width = tableView.frame.width + statusView.frame.size.width = tableView.frame.width - containerViewHorizontalMargin logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") } diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift index a330161f3..e16e4f289 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift @@ -14,7 +14,9 @@ import MastodonUI final class StatusThreadRootTableViewCell: UITableViewCell { - let logger = Logger(subsystem: "StatusTableViewCell", category: "View") + static let marginForRegularHorizontalSizeClass: CGFloat = 64 + + let logger = Logger(subsystem: "StatusThreadRootTableViewCell", category: "View") weak var delegate: StatusTableViewCellDelegate? var disposeBag = Set() @@ -22,6 +24,9 @@ final class StatusThreadRootTableViewCell: UITableViewCell { let statusView = StatusView() let separatorLine = UIView.separatorLine + var containerViewLeadingLayoutConstraint: NSLayoutConstraint! + var containerViewTrailingLayoutConstraint: NSLayoutConstraint! + override func prepareForReuse() { super.prepareForReuse() @@ -52,10 +57,12 @@ extension StatusThreadRootTableViewCell { statusView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(statusView) + setupContainerViewMarginConstraints() + updateContainerViewMarginConstraints() NSLayoutConstraint.activate([ statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), - statusView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - statusView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), + containerViewLeadingLayoutConstraint, + containerViewTrailingLayoutConstraint, statusView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), ]) statusView.setup(style: .plain) @@ -76,8 +83,21 @@ extension StatusThreadRootTableViewCell { statusView.contentMetaText.textView.isAccessibilityElement = false } + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + updateContainerViewMarginConstraints() + } + } +extension StatusThreadRootTableViewCell: AdaptiveContainerMarginTableViewCell { + var containerView: StatusView { + statusView + } +} + + // MARK: - StatusViewContainerTableViewCell extension StatusThreadRootTableViewCell: StatusViewContainerTableViewCell { } From 05646e6f59d075ac6cbe916b4680c4ad7b1b2fc8 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 15:53:38 +0800 Subject: [PATCH 157/374] fix: profile segmented controls missing margin issue --- Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift | 6 +++--- Mastodon/Scene/Profile/ProfileViewController.swift | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index eddfc6485..0c1b0423e 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -282,7 +282,7 @@ extension ProfileHeaderView { avatarImageViewBackgroundView.translatesAutoresizingMaskIntoConstraints = false addSubview(avatarImageViewBackgroundView) NSLayoutConstraint.activate([ - avatarImageViewBackgroundView.leadingAnchor.constraint(equalTo: bannerContainerView.readableContentGuide.leadingAnchor), + avatarImageViewBackgroundView.leadingAnchor.constraint(equalToSystemSpacingAfter: bannerContainerView.leadingAnchor, multiplier: 2.0), // align to dashboardContainer bottom ]) @@ -338,8 +338,8 @@ extension ProfileHeaderView { addSubview(container) NSLayoutConstraint.activate([ container.topAnchor.constraint(equalTo: bannerContainerView.bottomAnchor), - container.leadingAnchor.constraint(equalTo: leadingAnchor), - container.trailingAnchor.constraint(equalTo: trailingAnchor), + container.leadingAnchor.constraint(equalToSystemSpacingAfter: leadingAnchor, multiplier: 2.0), + trailingAnchor.constraint(equalToSystemSpacingAfter: container.trailingAnchor, multiplier: 2.0), container.bottomAnchor.constraint(equalTo: bottomAnchor), ]) diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index 30f2dc423..c1d07459a 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -279,7 +279,7 @@ extension ProfileViewController { self.profileHeaderViewController.view.addSubview(buttonBar) NSLayoutConstraint.activate([ buttonBar.topAnchor.constraint(equalTo: self.profileHeaderViewController.profileHeaderView.bottomAnchor), - buttonBar.leadingAnchor.constraint(equalTo: self.profileHeaderViewController.view.layoutMarginsGuide.leadingAnchor), + buttonBar.leadingAnchor.constraint(equalToSystemSpacingAfter: self.profileHeaderViewController.view.leadingAnchor, multiplier: 2.0), buttonBar.trailingAnchor.constraint(equalTo: self.profileHeaderViewController.view.layoutMarginsGuide.trailingAnchor), buttonBar.bottomAnchor.constraint(equalTo: self.profileHeaderViewController.view.bottomAnchor), buttonBar.heightAnchor.constraint(equalToConstant: ProfileHeaderViewController.segmentedControlHeight).priority(.required - 1), From ca4406e941be96ab736639e5b34c53df2f475fc2 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 15:54:19 +0800 Subject: [PATCH 158/374] fix: the profile segmented control use wrong selection tint color under force light UI style issue --- .../xcshareddata/xcschemes/Mastodon.xcscheme | 7 ---- .../Header/ProfileHeaderViewController.swift | 32 ++++++++++++++++--- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon.xcscheme b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon.xcscheme index b99adf881..de059787b 100644 --- a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon.xcscheme +++ b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon.xcscheme @@ -86,13 +86,6 @@ ReferencedContainer = "container:Mastodon.xcodeproj"> - - - - Date: Thu, 10 Feb 2022 16:43:07 +0800 Subject: [PATCH 159/374] fix: add notification count clear logic back --- ...meTimelineViewController+DebugAction.swift | 160 +----------------- .../NotificationViewController.swift | 44 +---- 2 files changed, 10 insertions(+), 194 deletions(-) diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index eb3e6fc04..bbeebb72f 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -113,19 +113,6 @@ extension HomeTimelineViewController { self.showEmptyView() } }, - UIAction( - title: "Notification badge +1", - image: UIImage(systemName: "1.circle.fill"), - identifier: nil, - attributes: [], - state: .off, - handler: { [weak self] _ in - guard let self = self else { return } - guard let accessToken = self.context.authenticationService.activeMastodonAuthentication.value?.userAccessToken else { return } - UserDefaults.shared.increaseNotificationCount(accessToken: accessToken) - self.context.notificationService.applicationIconBadgeNeedsUpdate.send() - } - ), UIAction( title: "Enable account switcher wizard", image: UIImage(systemName: "square.stack.3d.down.forward.fill"), @@ -147,6 +134,12 @@ extension HomeTimelineViewController { identifier: nil, options: [], children: [ + UIAction(title: "Badge +1", image: UIImage(systemName: "app.badge.fill"), attributes: []) { [weak self] action in + guard let self = self else { return } + guard let accessToken = self.context.authenticationService.activeMastodonAuthentication.value?.userAccessToken else { return } + UserDefaults.shared.increaseNotificationCount(accessToken: accessToken) + self.context.notificationService.applicationIconBadgeNeedsUpdate.send() + }, UIAction(title: "Profile", image: UIImage(systemName: "person.badge.plus"), attributes: []) { [weak self] action in guard let self = self else { return } self.showNotification(action, notificationType: .follow) @@ -264,147 +257,6 @@ extension HomeTimelineViewController { FLEXManager.shared.showExplorer() } -// @objc private func moveToTopGapAction(_ sender: UIAction) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// let snapshotTransitioning = diffableDataSource.snapshot() -// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in -// switch item { -// case .feedLoader: return true -// default: return false -// } -// }) -// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { -// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) -// } -// } -// -// @objc private func moveToFirstReblogStatus(_ sender: UIAction) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// let snapshotTransitioning = diffableDataSource.snapshot() -// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in -// switch item { -//// case .homeTimelineIndex(let objectID, _): -//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex -//// return homeTimelineIndex.status.reblog != nil -// default: -// return false -// } -// }) -// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { -// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) -// tableView.blinkRow(at: IndexPath(row: index, section: 0)) -// } else { -// print("Not found reblog status") -// } -// } -// -// @objc private func moveToFirstPollStatus(_ sender: UIAction) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// let snapshotTransitioning = diffableDataSource.snapshot() -// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in -// switch item { -// case .feed(let record): -// guard let feed = record.object(in: context.managedObjectContext) else { return false } -// guard let status = feed.status?.reblog ?? feed.status else { return false } -// return status.poll != nil -// default: -// return false -// } -// }) -// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { -// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) -// tableView.blinkRow(at: IndexPath(row: index, section: 0)) -// } else { -// print("Not found poll status") -// } -// } -// -// @objc private func moveToFirstRepliedStatus(_ sender: UIAction) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// let snapshotTransitioning = diffableDataSource.snapshot() -// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in -// switch item { -//// case .homeTimelineIndex(let objectID, _): -//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex -//// guard homeTimelineIndex.status.inReplyToID != nil else { -//// return false -//// } -//// return true -// default: -// return false -// } -// }) -// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { -// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) -// tableView.blinkRow(at: IndexPath(row: index, section: 0)) -// } else { -// print("Not found replied status") -// } -// } -// -// @objc private func moveToFirstAudioStatus(_ sender: UIAction) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// let snapshotTransitioning = diffableDataSource.snapshot() -// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in -// switch item { -//// case .homeTimelineIndex(let objectID, _): -//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex -//// let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status -//// return status.mediaAttachments?.contains(where: { $0.type == .audio }) ?? false -// default: -// return false -// } -// }) -// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { -// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) -// tableView.blinkRow(at: IndexPath(row: index, section: 0)) -// } else { -// print("Not found audio status") -// } -// } -// -// @objc private func moveToFirstVideoStatus(_ sender: UIAction) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// let snapshotTransitioning = diffableDataSource.snapshot() -// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in -// switch item { -//// case .homeTimelineIndex(let objectID, _): -//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex -//// let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status -//// return status.mediaAttachments?.contains(where: { $0.type == .video }) ?? false -// default: -// return false -// } -// }) -// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { -// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) -// tableView.blinkRow(at: IndexPath(row: index, section: 0)) -// } else { -// print("Not found video status") -// } -// } -// -// @objc private func moveToFirstGIFStatus(_ sender: UIAction) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// let snapshotTransitioning = diffableDataSource.snapshot() -// let item = snapshotTransitioning.itemIdentifiers.first(where: { item in -// switch item { -//// case .homeTimelineIndex(let objectID, _): -//// let homeTimelineIndex = viewModel.fetchedResultsController.managedObjectContext.object(with: objectID) as! HomeTimelineIndex -//// let status = homeTimelineIndex.status.reblog ?? homeTimelineIndex.status -//// return status.mediaAttachments?.contains(where: { $0.type == .gifv }) ?? false -// default: -// return false -// } -// }) -// if let targetItem = item, let index = snapshotTransitioning.indexOfItem(targetItem) { -// tableView.scrollToRow(at: IndexPath(row: index, section: 0), at: .middle, animated: true) -// tableView.blinkRow(at: IndexPath(row: index, section: 0)) -// } else { -// print("Not found GIF status") -// } -// } - @objc private func dropRecentStatusAction(_ sender: UIAction, count: Int) { guard let diffableDataSource = viewModel.diffableDataSource else { return } let snapshot = diffableDataSource.snapshot() diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 85e534cb6..aa49680a3 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -210,15 +210,15 @@ extension NotificationViewController { // } // } // -// // reset notification count -// context.notificationService.clearNotificationCountForActiveUser() + // reset notification count + context.notificationService.clearNotificationCountForActiveUser() } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) -// // reset notification count -// context.notificationService.clearNotificationCountForActiveUser() + // reset notification count + context.notificationService.clearNotificationCountForActiveUser() } override func viewDidDisappear(_ animated: Bool) { @@ -265,42 +265,6 @@ extension NotificationViewController { } } - -//// MARK: - TableViewCellHeightCacheableContainer -//extension NotificationViewController: TableViewCellHeightCacheableContainer { -// var cellFrameCache: NSCache { return viewModel.cellFrameCache } -// -// func cacheTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } -// switch item { -// case .notification(let objectID, _), -// .notificationStatus(let objectID, _): -// guard let object = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return } -// let key = object.objectID.hashValue -// let frame = cell.frame -// viewModel.cellFrameCache.setObject(NSValue(cgRect: frame), forKey: NSNumber(value: key)) -// case .bottomLoader: -// break -// } -// } -// -// func handleTableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { -// guard let diffableDataSource = viewModel.diffableDataSource else { return UITableView.automaticDimension } -// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return UITableView.automaticDimension } -// switch item { -// case .notification(let objectID, _), -// .notificationStatus(let objectID, _): -// guard let object = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return UITableView.automaticDimension } -// let key = object.objectID.hashValue -// guard let frame = viewModel.cellFrameCache.object(forKey: NSNumber(value: key))?.cgRectValue else { return UITableView.automaticDimension } -// return frame.height -// case .bottomLoader: -// return TimelineLoaderTableViewCell.cellHeight -// } -// } -//} - // MARK: - UITableViewDelegate extension NotificationViewController: UITableViewDelegate { From c1e1d527feb42f7f60d7e633cbcb884c1f9db47c Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 16:43:26 +0800 Subject: [PATCH 160/374] fix: add missing home timeline bottom fetcher --- .../HomeTimelineViewController.swift | 21 +++-- .../HomeTimeline/HomeTimelineViewModel.swift | 11 +-- .../Timeline/UserTimelineViewController.swift | 90 ------------------- .../Root/ContentSplitViewController.swift | 4 +- 4 files changed, 24 insertions(+), 102 deletions(-) diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index d37ac8ca3..74a42cde6 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -100,7 +100,7 @@ extension HomeTimelineViewController { self.view.backgroundColor = theme.secondarySystemBackgroundColor } .store(in: &disposeBag) - viewModel.displaySettingBarButtonItem + viewModel.$displaySettingBarButtonItem .receive(on: DispatchQueue.main) .sink { [weak self] displaySettingBarButtonItem in guard let self = self else { return } @@ -125,7 +125,7 @@ extension HomeTimelineViewController { settingBarButtonItem.action = #selector(HomeTimelineViewController.settingBarButtonItemPressed(_:)) #endif - viewModel.displayComposeBarButtonItem + viewModel.$displayComposeBarButtonItem .receive(on: DispatchQueue.main) .sink { [weak self] displayComposeBarButtonItem in guard let self = self else { return } @@ -190,7 +190,18 @@ extension HomeTimelineViewController { statusTableViewCellDelegate: self, timelineMiddleLoaderTableViewCellDelegate: self ) - + + // setup batch fetch + viewModel.listBatchFetchViewModel.setup(scrollView: tableView) + viewModel.listBatchFetchViewModel.shouldFetch + .receive(on: DispatchQueue.main) + .sink { [weak self] _ in + guard let self = self else { return } + guard self.view.window != nil else { return } + self.viewModel.loadOldestStateMachine.enter(HomeTimelineViewModel.LoadOldestState.Loading.self) + } + .store(in: &disposeBag) + // bind refresh control viewModel.didLoadLatest .receive(on: DispatchQueue.main) @@ -282,10 +293,10 @@ extension HomeTimelineViewController { viewModel.viewDidAppear.send() - if let timestamp = viewModel.lastAutomaticFetchTimestamp.value { + if let timestamp = viewModel.lastAutomaticFetchTimestamp { let now = Date() if now.timeIntervalSince(timestamp) > 60 { - self.viewModel.lastAutomaticFetchTimestamp.value = now + self.viewModel.lastAutomaticFetchTimestamp = now self.viewModel.homeTimelineNeedRefresh.send() } else { // do nothing diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift index 3df276a16..262c995eb 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift @@ -26,13 +26,14 @@ final class HomeTimelineViewModel: NSObject { // input let context: AppContext let fetchedResultsController: FeedFetchedResultsController - let timelinePredicate = CurrentValueSubject(nil) - let viewDidAppear = PassthroughSubject() let homeTimelineNavigationBarTitleViewModel: HomeTimelineNavigationBarTitleViewModel - let lastAutomaticFetchTimestamp = CurrentValueSubject(nil) + let listBatchFetchViewModel = ListBatchFetchViewModel() + let viewDidAppear = PassthroughSubject() + + @Published var lastAutomaticFetchTimestamp: Date? = nil @Published var scrollPositionRecord: ScrollPositionRecord? = nil - let displaySettingBarButtonItem = CurrentValueSubject(true) - let displayComposeBarButtonItem = CurrentValueSubject(true) + @Published var displaySettingBarButtonItem = true + @Published var displayComposeBarButtonItem = true weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? weak var tableView: UITableView? diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift index 0a1ae5882..0b1717f53 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift @@ -92,13 +92,6 @@ extension UserTimelineViewController { } -// MARK: - UIScrollViewDelegate -//extension UserTimelineViewController { -// func scrollViewDidScroll(_ scrollView: UIScrollView) { -// aspectScrollViewDidScroll(scrollView) -// } -//} - // MARK: - UITableViewDelegate extension UserTimelineViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { // sourcery:inline:UserTimelineViewController.AutoGenerateTableViewDelegate @@ -126,96 +119,13 @@ extension UserTimelineViewController: UITableViewDelegate, AutoGenerateTableView } // sourcery:end -// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { -// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didSelectRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { -// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) -// } -// -// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { -// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) -// } } -//// MARK: - UITableViewDataSourcePrefetching -//extension UserTimelineViewController: UITableViewDataSourcePrefetching { -// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { -// aspectTableView(tableView, prefetchRowsAt: indexPaths) -// } -//} - -// MARK: - AVPlayerViewControllerDelegate -//extension UserTimelineViewController: AVPlayerViewControllerDelegate { -// -// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -// -// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -// -//} - -// MARK: - TimelinePostTableViewCellDelegate -//extension UserTimelineViewController: StatusTableViewCellDelegate { -// weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } -// func parent() -> UIViewController { return self } -//} - // MARK: - CustomScrollViewContainerController extension UserTimelineViewController: ScrollViewContainer { var scrollView: UIScrollView { return tableView } } -// MARK: - LoadMoreConfigurableTableViewContainer -//extension UserTimelineViewController: LoadMoreConfigurableTableViewContainer { -// typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell -// typealias LoadingState = UserTimelineViewModel.State.Loading -// -// var loadMoreConfigurableTableView: UITable``````View { return tableView } -// var loadMoreConfigurableStateMachine: GKStateMachine { return viewModel.stateMachine } -//} - -//extension UserTimelineViewController { -// override var keyCommands: [UIKeyCommand]? { -// return navigationKeyCommands + statusNavigationKeyCommands -// } -//} -// -//// MARK: - StatusTableViewControllerNavigateable -//extension UserTimelineViewController: StatusTableViewControllerNavigateable { -// @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// navigateKeyCommandHandler(sender) -// } -// -// @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// statusKeyCommandHandler(sender) -// } -//} - // MARK: - StatusTableViewCellDelegate extension UserTimelineViewController: StatusTableViewCellDelegate { } diff --git a/Mastodon/Scene/Root/ContentSplitViewController.swift b/Mastodon/Scene/Root/ContentSplitViewController.swift index 8ca597872..5a34e1ed8 100644 --- a/Mastodon/Scene/Root/ContentSplitViewController.swift +++ b/Mastodon/Scene/Root/ContentSplitViewController.swift @@ -38,8 +38,8 @@ final class ContentSplitViewController: UIViewController, NeedsDependency { private(set) lazy var mainTabBarController: MainTabBarController = { let mainTabBarController = MainTabBarController(context: context, coordinator: coordinator) if let homeTimelineViewController = mainTabBarController.viewController(of: HomeTimelineViewController.self) { - homeTimelineViewController.viewModel.displayComposeBarButtonItem.value = false - homeTimelineViewController.viewModel.displaySettingBarButtonItem.value = false + homeTimelineViewController.viewModel.displayComposeBarButtonItem = false + homeTimelineViewController.viewModel.displaySettingBarButtonItem = false } return mainTabBarController }() From 54e84ed814210684c504e72ade7938dc9452532a Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 19:30:41 +0800 Subject: [PATCH 161/374] fix: [WIP] add suggestion account scene back --- Mastodon.xcodeproj/project.pbxproj | 8 + .../Account/SelectedAccountItem.swift | 29 +- .../Account/SelectedAccountSection.swift | 12 +- .../UserFetchedResultsController.swift | 16 +- .../RecommendAccountItem.swift | 13 + .../RecommendAccountSection.swift | 45 +-- ...meTimelineViewController+DebugAction.swift | 9 + .../HomeTimelineViewController.swift | 11 +- .../HomeTimeline/HomeTimelineViewModel.swift | 8 +- .../FollowerListViewModel+State.swift | 6 +- .../FollowingListViewModel+State.swift | 6 +- .../Scene/Profile/MeProfileViewModel.swift | 8 +- .../Scene/Profile/ProfileViewController.swift | 18 +- Mastodon/Scene/Profile/ProfileViewModel.swift | 45 +-- .../Profile/RemoteProfileViewModel.swift | 2 +- .../SearchDetailViewController.swift | 2 +- .../SearchResultViewModel+State.swift | 2 +- .../SearchResult/SearchResultViewModel.swift | 2 +- .../SuggestionAccountViewController.swift | 286 ++++++++-------- .../SuggestionAccountViewModel+Diffable.swift | 74 +++++ .../SuggestionAccountViewModel.swift | 306 +++++++++--------- .../SuggestionAccountTableViewCell.swift | 2 +- .../APIService/APIService+Recommend.swift | 108 +++---- 23 files changed, 541 insertions(+), 477 deletions(-) create mode 100644 Mastodon/Diffiable/RecommandAccount/RecommendAccountItem.swift create mode 100644 Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel+Diffable.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 1bc305a61..987f7b6cb 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -483,6 +483,8 @@ DBB45B5927B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5827B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift */; }; DBB45B5B27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5A27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift */; }; DBB45B5E27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5D27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift */; }; + DBB45B6027B50A4F002DC5A7 /* RecommendAccountItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5F27B50A4F002DC5A7 /* RecommendAccountItem.swift */; }; + DBB45B6227B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B6127B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift */; }; DBB525082611EAC0002F1F29 /* Tabman in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* Tabman */; }; DBB5250E2611EBAF002F1F29 /* ProfileSegmentedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */; }; DBB525212611EBD6002F1F29 /* ProfilePagingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */; }; @@ -1227,6 +1229,8 @@ DBB45B5827B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewVideoViewModel.swift; sourceTree = ""; }; DBB45B5A27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewTransitionViewController.swift; sourceTree = ""; }; DBB45B5D27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveMarginStatusTableViewCell.swift; sourceTree = ""; }; + DBB45B5F27B50A4F002DC5A7 /* RecommendAccountItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendAccountItem.swift; sourceTree = ""; }; + DBB45B6127B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SuggestionAccountViewModel+Diffable.swift"; sourceTree = ""; }; DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileSegmentedViewController.swift; sourceTree = ""; }; DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePagingViewController.swift; sourceTree = ""; }; DBB5252F2611EBF3002F1F29 /* ProfilePagingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfilePagingViewModel.swift; sourceTree = ""; }; @@ -1756,6 +1760,7 @@ children = ( 2DAC9E37262FC2320062E1A6 /* SuggestionAccountViewController.swift */, 2DAC9E3D262FC2400062E1A6 /* SuggestionAccountViewModel.swift */, + DBB45B6127B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift */, 2D4AD89A2631659400613EFC /* CollectionViewCell */, 2DAC9E43262FC9DE0062E1A6 /* TableViewCell */, ); @@ -2012,6 +2017,7 @@ isa = PBXGroup; children = ( 2DE0FACD2615F7AD00CDF649 /* RecommendAccountSection.swift */, + DBB45B5F27B50A4F002DC5A7 /* RecommendAccountItem.swift */, ); path = RecommandAccount; sourceTree = ""; @@ -3845,6 +3851,7 @@ DB03A795272A981400EE37C5 /* ContentSplitViewController.swift in Sources */, DBBC24DE26A54BCB00398BB9 /* MastodonMetricFormatter.swift in Sources */, DB06180A2785B2AB0030EE79 /* MastodonRegisterAvatarTableViewCell.swift in Sources */, + DBB45B6227B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift in Sources */, DBB3BA2A26A81C020004F2D4 /* FLAnimatedImageView.swift in Sources */, DB6746ED278F45F0008A6B94 /* AutoGenerateProtocolRelayDelegate.swift in Sources */, DB0618032785A7100030EE79 /* RegisterSection.swift in Sources */, @@ -4068,6 +4075,7 @@ DB697DD1278F4871004EF2F7 /* AutoGenerateTableViewDelegate.swift in Sources */, DB02CDBF2625AE5000D0A2AF /* AdaptiveUserInterfaceStyleBarButtonItem.swift in Sources */, DB1FD44425F26CCC004CFCFC /* PickServerSection.swift in Sources */, + DBB45B6027B50A4F002DC5A7 /* RecommendAccountItem.swift in Sources */, 0FB3D30F25E525CD00AAD544 /* PickServerCategoryView.swift in Sources */, DB6180E626391B550018D199 /* MediaPreviewTransitionController.swift in Sources */, DB0FCB922796DE19006C02E2 /* TrendSectionHeaderCollectionReusableView.swift in Sources */, diff --git a/Mastodon/Diffiable/Account/SelectedAccountItem.swift b/Mastodon/Diffiable/Account/SelectedAccountItem.swift index dbfe25cea..05ecdae8d 100644 --- a/Mastodon/Diffiable/Account/SelectedAccountItem.swift +++ b/Mastodon/Diffiable/Account/SelectedAccountItem.swift @@ -7,32 +7,9 @@ import CoreData import Foundation +import CoreDataStack -enum SelectedAccountItem { - case accountObjectID(accountObjectID: NSManagedObjectID) +enum SelectedAccountItem: Hashable { + case account(ManagedObjectRecord) case placeHolder(uuid: UUID) } - -extension SelectedAccountItem: Equatable { - static func == (lhs: SelectedAccountItem, rhs: SelectedAccountItem) -> Bool { - switch (lhs, rhs) { - case (.accountObjectID(let idLeft), .accountObjectID(let idRight)): - return idLeft == idRight - case (.placeHolder(let uuidLeft), .placeHolder(let uuidRight)): - return uuidLeft == uuidRight - default: - return false - } - } -} - -extension SelectedAccountItem: Hashable { - func hash(into hasher: inout Hasher) { - switch self { - case .accountObjectID(let id): - hasher.combine(id) - case .placeHolder(let id): - hasher.combine(id.uuidString) - } - } -} diff --git a/Mastodon/Diffiable/Account/SelectedAccountSection.swift b/Mastodon/Diffiable/Account/SelectedAccountSection.swift index 4f18ef873..6c02d7059 100644 --- a/Mastodon/Diffiable/Account/SelectedAccountSection.swift +++ b/Mastodon/Diffiable/Account/SelectedAccountSection.swift @@ -17,15 +17,17 @@ enum SelectedAccountSection: Equatable, Hashable { extension SelectedAccountSection { static func collectionViewDiffableDataSource( - for collectionView: UICollectionView, - managedObjectContext: NSManagedObjectContext + collectionView: UICollectionView, + context: AppContext ) -> UICollectionViewDiffableDataSource { UICollectionViewDiffableDataSource(collectionView: collectionView) { collectionView, indexPath, item -> UICollectionViewCell? in let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: SuggestionAccountCollectionViewCell.self), for: indexPath) as! SuggestionAccountCollectionViewCell switch item { - case .accountObjectID(let objectID): - let user = managedObjectContext.object(with: objectID) as! MastodonUser - cell.config(with: user) + case .account(let record): + context.managedObjectContext.performAndWait { + guard let user = record.object(in: context.managedObjectContext) else { return } + cell.config(with: user) + } case .placeHolder: cell.configAsPlaceHolder() } diff --git a/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift b/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift index b49e89a27..2230e04bc 100644 --- a/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift +++ b/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift @@ -20,15 +20,15 @@ final class UserFetchedResultsController: NSObject { let fetchedResultsController: NSFetchedResultsController // input - let domain = CurrentValueSubject(nil) - let userIDs = CurrentValueSubject<[Mastodon.Entity.Account.ID], Never>([]) + @Published var domain: String? = nil + @Published var userIDs: [Mastodon.Entity.Account.ID] = [] // output let _objectIDs = CurrentValueSubject<[NSManagedObjectID], Never>([]) @Published var records: [ManagedObjectRecord] = [] init(managedObjectContext: NSManagedObjectContext, domain: String?, additionalTweetPredicate: NSPredicate?) { - self.domain.value = domain ?? "" + self.domain = domain ?? "" self.fetchedResultsController = { let fetchRequest = MastodonUser.sortedFetchRequest fetchRequest.predicate = MastodonUser.predicate(domain: domain ?? "", ids: []) @@ -54,8 +54,8 @@ final class UserFetchedResultsController: NSObject { fetchedResultsController.delegate = self Publishers.CombineLatest( - self.domain.removeDuplicates(), - self.userIDs.removeDuplicates() + self.$domain.removeDuplicates(), + self.$userIDs.removeDuplicates() ) .receive(on: DispatchQueue.main) .sink { [weak self] domain, ids in @@ -79,11 +79,11 @@ final class UserFetchedResultsController: NSObject { extension UserFetchedResultsController { public func append(userIDs: [Mastodon.Entity.Account.ID]) { - var result = self.userIDs.value + var result = self.userIDs for userID in userIDs where !result.contains(userID) { result.append(userID) } - self.userIDs.value = result + self.userIDs = result } } @@ -93,7 +93,7 @@ extension UserFetchedResultsController: NSFetchedResultsControllerDelegate { func controller(_ controller: NSFetchedResultsController, didChangeContentWith snapshot: NSDiffableDataSourceSnapshotReference) { os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - let indexes = userIDs.value + let indexes = userIDs let objects = fetchedResultsController.fetchedObjects ?? [] let items: [NSManagedObjectID] = objects diff --git a/Mastodon/Diffiable/RecommandAccount/RecommendAccountItem.swift b/Mastodon/Diffiable/RecommandAccount/RecommendAccountItem.swift new file mode 100644 index 000000000..998f2f3e9 --- /dev/null +++ b/Mastodon/Diffiable/RecommandAccount/RecommendAccountItem.swift @@ -0,0 +1,13 @@ +// +// RecommendAccountItem.swift +// Mastodon +// +// Created by MainasuK on 2022-2-10. +// + +import Foundation +import CoreDataStack + +enum RecommendAccountItem: Hashable { + case account(ManagedObjectRecord) +} diff --git a/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift b/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift index d4943d324..c6d4897ab 100644 --- a/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift +++ b/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift @@ -129,22 +129,29 @@ enum RecommendAccountSection: Equatable, Hashable { // //} // -//extension RecommendAccountSection { -// -// static func tableViewDiffableDataSource( -// for tableView: UITableView, -// managedObjectContext: NSManagedObjectContext, -// viewModel: SuggestionAccountViewModel, -// delegate: SuggestionAccountTableViewCellDelegate -// ) -> UITableViewDiffableDataSource { -// UITableViewDiffableDataSource(tableView: tableView) { [weak viewModel, weak delegate] (tableView, indexPath, objectID) -> UITableViewCell? in -// guard let viewModel = viewModel else { return nil } -// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SuggestionAccountTableViewCell.self)) as! SuggestionAccountTableViewCell -// let user = managedObjectContext.object(with: objectID) as! MastodonUser -// let isSelected = viewModel.selectedAccounts.value.contains(objectID) -// cell.delegate = delegate -// cell.config(with: user, isSelected: isSelected) -// return cell -// } -// } -//} +extension RecommendAccountSection { + + struct Configuration { + weak var suggestionAccountTableViewCellDelegate: SuggestionAccountTableViewCellDelegate? + } + + static func tableViewDiffableDataSource( + tableView: UITableView, + context: AppContext, + configuration: Configuration + ) -> UITableViewDiffableDataSource { + UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item -> UITableViewCell? in + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SuggestionAccountTableViewCell.self)) as! SuggestionAccountTableViewCell + switch item { + case .account(let record): + context.managedObjectContext.performAndWait { + guard let user = record.object(in: context.managedObjectContext) else { return } + cell.config(with: user) + } + } + cell.delegate = configuration.suggestionAccountTableViewCellDelegate + return cell + } + } + +} diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index bbeebb72f..b57c4325e 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -74,6 +74,15 @@ extension HomeTimelineViewController { guard let self = self else { return } self.showThreadAction(action) }, + UIAction(title: "Account Recommend", image: UIImage(systemName: "human"), attributes: []) { [weak self] action in + guard let self = self else { return } + let suggestionAccountViewModel = SuggestionAccountViewModel(context: self.context) + self.coordinator.present( + scene: .suggestionAccount(viewModel: suggestionAccountViewModel), + from: self, + transition: .modal(animated: true, completion: nil) + ) + }, UIAction(title: "Store Rating", image: UIImage(systemName: "star.fill"), attributes: []) { [weak self] action in guard let self = self else { return } guard let windowScene = self.view.window?.windowScene else { return } diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index 74a42cde6..5985194e4 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -383,10 +383,13 @@ extension HomeTimelineViewController { extension HomeTimelineViewController { @objc private func findPeopleButtonPressed(_ sender: PrimaryActionButton) { - // TODO: -// let viewModel = SuggestionAccountViewModel(context: context) -// viewModel.delegate = self.viewModel -// coordinator.present(scene: .suggestionAccount(viewModel: viewModel), from: self, transition: .modal(animated: true, completion: nil)) + let suggestionAccountViewModel = SuggestionAccountViewModel(context: context) + suggestionAccountViewModel.delegate = viewModel + coordinator.present( + scene: .suggestionAccount(viewModel: suggestionAccountViewModel), + from: self, + transition: .modal(animated: true, completion: nil) + ) } @objc private func manuallySearchButtonPressed(_ sender: UIButton) { diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift index 262c995eb..488964edf 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift @@ -119,8 +119,6 @@ final class HomeTimelineViewModel: NSObject { } -//extension HomeTimelineViewModel: SuggestionAccountViewModelDelegate { } - extension HomeTimelineViewModel { struct ScrollPositionRecord { let item: StatusItem @@ -197,3 +195,9 @@ extension HomeTimelineViewModel { } } + +// MARK: - SuggestionAccountViewModelDelegate +extension HomeTimelineViewModel: SuggestionAccountViewModelDelegate { + +} + diff --git a/Mastodon/Scene/Profile/Follower/FollowerListViewModel+State.swift b/Mastodon/Scene/Profile/Follower/FollowerListViewModel+State.swift index c6af90d5a..a2958de3c 100644 --- a/Mastodon/Scene/Profile/Follower/FollowerListViewModel+State.swift +++ b/Mastodon/Scene/Profile/Follower/FollowerListViewModel+State.swift @@ -72,7 +72,7 @@ extension FollowerListViewModel.State { guard let viewModel = viewModel, let stateMachine = stateMachine else { return } // reset - viewModel.userFetchedResultsController.userIDs.value = [] + viewModel.userFetchedResultsController.userIDs = [] stateMachine.enter(Loading.self) } @@ -158,7 +158,7 @@ extension FollowerListViewModel.State { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch \(response.value.count) followers") var hasNewAppend = false - var userIDs = viewModel.userFetchedResultsController.userIDs.value + var userIDs = viewModel.userFetchedResultsController.userIDs for user in response.value { guard !userIDs.contains(user.id) else { continue } userIDs.append(user.id) @@ -174,7 +174,7 @@ extension FollowerListViewModel.State { } self.maxID = maxID - viewModel.userFetchedResultsController.userIDs.value = userIDs + viewModel.userFetchedResultsController.userIDs = userIDs } catch { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch follower fail: \(error.localizedDescription)") diff --git a/Mastodon/Scene/Profile/Following/FollowingListViewModel+State.swift b/Mastodon/Scene/Profile/Following/FollowingListViewModel+State.swift index 560c62d0e..c01a9c8c6 100644 --- a/Mastodon/Scene/Profile/Following/FollowingListViewModel+State.swift +++ b/Mastodon/Scene/Profile/Following/FollowingListViewModel+State.swift @@ -72,7 +72,7 @@ extension FollowingListViewModel.State { guard let viewModel = viewModel, let stateMachine = stateMachine else { return } // reset - viewModel.userFetchedResultsController.userIDs.value = [] + viewModel.userFetchedResultsController.userIDs = [] stateMachine.enter(Loading.self) } @@ -159,7 +159,7 @@ extension FollowingListViewModel.State { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch \(response.value.count)") var hasNewAppend = false - var userIDs = viewModel.userFetchedResultsController.userIDs.value + var userIDs = viewModel.userFetchedResultsController.userIDs for user in response.value { guard !userIDs.contains(user.id) else { continue } userIDs.append(user.id) @@ -174,7 +174,7 @@ extension FollowingListViewModel.State { await enter(state: NoMore.self) } self.maxID = maxID - viewModel.userFetchedResultsController.userIDs.value = userIDs + viewModel.userFetchedResultsController.userIDs = userIDs } catch { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): fetch following fail: \(error.localizedDescription)") diff --git a/Mastodon/Scene/Profile/MeProfileViewModel.swift b/Mastodon/Scene/Profile/MeProfileViewModel.swift index d1c0cb49d..cee6d5e47 100644 --- a/Mastodon/Scene/Profile/MeProfileViewModel.swift +++ b/Mastodon/Scene/Profile/MeProfileViewModel.swift @@ -20,12 +20,12 @@ final class MeProfileViewModel: ProfileViewModel { optionalMastodonUser: context.authenticationService.activeMastodonAuthentication.value?.user ) - self.currentMastodonUser - .sink { [weak self] currentMastodonUser in - os_log("%{public}s[%{public}ld], %{public}s: current active mastodon user: %s", ((#file as NSString).lastPathComponent), #line, #function, currentMastodonUser?.username ?? "") + $me + .sink { [weak self] me in + os_log("%{public}s[%{public}ld], %{public}s: current active mastodon user: %s", ((#file as NSString).lastPathComponent), #line, #function, me?.username ?? "") guard let self = self else { return } - self.mastodonUser.value = currentMastodonUser + self.user = me } .store(in: &disposeBag) } diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index c1d07459a..8fe8ad2b0 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -577,7 +577,7 @@ extension ProfileViewController { private func bindProfileRelationship() { Publishers.CombineLatest( - viewModel.mastodonUser, + viewModel.$user, viewModel.relationshipActionOptionSet ) .asyncMap { [weak self] user, relationshipSet -> UIMenu? in @@ -725,7 +725,7 @@ extension ProfileViewController { @objc private func shareBarButtonItemPressed(_ sender: UIBarButtonItem) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) - guard let user = viewModel.mastodonUser.value else { return } + guard let user = viewModel.user else { return } let record: ManagedObjectRecord = .init(objectID: user.objectID) Task { let _activityViewController = try await DataSourceFacade.createActivityViewController( @@ -754,7 +754,7 @@ extension ProfileViewController { @objc private func replyBarButtonItemPressed(_ sender: UIBarButtonItem) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - guard let mastodonUser = viewModel.mastodonUser.value else { return } + guard let mastodonUser = viewModel.user else { return } let composeViewModel = ComposeViewModel( context: context, composeKind: .mention(user: .init(objectID: mastodonUser.objectID)), @@ -849,7 +849,7 @@ extension ProfileViewController: ProfilePagingViewControllerDelegate { // MARK: - ProfileHeaderViewDelegate extension ProfileViewController: ProfileHeaderViewDelegate { func profileHeaderView(_ profileHeaderView: ProfileHeaderView, avatarButtonDidPressed button: AvatarButton) { - guard let user = viewModel.mastodonUser.value else { return } + guard let user = viewModel.user else { return } let record: ManagedObjectRecord = .init(objectID: user.objectID) Task { @@ -865,7 +865,7 @@ extension ProfileViewController: ProfileHeaderViewDelegate { } func profileHeaderView(_ profileHeaderView: ProfileHeaderView, bannerImageViewDidPressed imageView: UIImageView) { - guard let user = viewModel.mastodonUser.value else { return } + guard let user = viewModel.user else { return } let record: ManagedObjectRecord = .init(objectID: user.objectID) Task { @@ -956,7 +956,7 @@ extension ProfileViewController: ProfileHeaderViewDelegate { case .none: break case .follow, .request, .pending, .following: - guard let user = viewModel.mastodonUser.value else { return } + guard let user = viewModel.user else { return } let reocrd = ManagedObjectRecord(objectID: user.objectID) guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } Task { @@ -968,7 +968,7 @@ extension ProfileViewController: ProfileHeaderViewDelegate { } case .muting: guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else { return } - guard let user = viewModel.mastodonUser.value else { return } + guard let user = viewModel.user else { return } let name = user.displayNameWithFallback let alertController = UIAlertController( @@ -993,7 +993,7 @@ extension ProfileViewController: ProfileHeaderViewDelegate { present(alertController, animated: true, completion: nil) case .blocking: guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else { return } - guard let user = viewModel.mastodonUser.value else { return } + guard let user = viewModel.user else { return } let name = user.displayNameWithFallback let alertController = UIAlertController( @@ -1077,7 +1077,7 @@ extension ProfileViewController: ProfileAboutViewControllerDelegate { extension ProfileViewController: MastodonMenuDelegate { func menuAction(_ action: MastodonMenu.Action) { guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - guard let user = viewModel.mastodonUser.value else { return } + guard let user = viewModel.user else { return } let userRecord: ManagedObjectRecord = .init(objectID: user.objectID) diff --git a/Mastodon/Scene/Profile/ProfileViewModel.swift b/Mastodon/Scene/Profile/ProfileViewModel.swift index b39734728..588651c8d 100644 --- a/Mastodon/Scene/Profile/ProfileViewModel.swift +++ b/Mastodon/Scene/Profile/ProfileViewModel.swift @@ -28,8 +28,8 @@ class ProfileViewModel: NSObject { // input let context: AppContext - let mastodonUser: CurrentValueSubject - let currentMastodonUser = CurrentValueSubject(nil) + @Published var me: MastodonUser? + @Published var user: MastodonUser? let viewDidAppear = PassthroughSubject() // output @@ -73,7 +73,7 @@ class ProfileViewModel: NSObject { init(context: AppContext, optionalMastodonUser mastodonUser: MastodonUser?) { self.context = context - self.mastodonUser = CurrentValueSubject(mastodonUser) + self.user = mastodonUser self.domain = CurrentValueSubject(context.authenticationService.activeMastodonAuthenticationBox.value?.domain) self.userID = CurrentValueSubject(mastodonUser?.id) self.bannerImageURL = CurrentValueSubject(mastodonUser?.headerImageURL()) @@ -98,21 +98,21 @@ class ProfileViewModel: NSObject { .store(in: &disposeBag) // bind active authentication - context.authenticationService.activeMastodonAuthentication - .sink { [weak self] activeMastodonAuthentication in + context.authenticationService.activeMastodonAuthenticationBox + .sink { [weak self] authenticationBox in guard let self = self else { return } - guard let activeMastodonAuthentication = activeMastodonAuthentication else { + guard let authenticationBox = authenticationBox else { self.domain.value = nil - self.currentMastodonUser.value = nil + self.me = nil return } - self.domain.value = activeMastodonAuthentication.domain - self.currentMastodonUser.value = activeMastodonAuthentication.user + self.domain.value = authenticationBox.domain + self.me = authenticationBox.authenticationRecord.object(in: context.managedObjectContext)?.user } .store(in: &disposeBag) // query relationship - let userRecord = self.mastodonUser.map { user -> ManagedObjectRecord? in + let userRecord = $user.map { user -> ManagedObjectRecord? in user.flatMap { ManagedObjectRecord(objectID: $0.objectID) } } let pendingRetryPublisher = CurrentValueSubject(1) @@ -176,18 +176,18 @@ class ProfileViewModel: NSObject { extension ProfileViewModel { private func setup() { Publishers.CombineLatest( - mastodonUser.eraseToAnyPublisher(), - currentMastodonUser.eraseToAnyPublisher() + $user, + $me ) .receive(on: DispatchQueue.main) - .sink { [weak self] mastodonUser, currentMastodonUser in + .sink { [weak self] user, me in guard let self = self else { return } // Update view model attribute - self.update(mastodonUser: mastodonUser) - self.update(mastodonUser: mastodonUser, currentMastodonUser: currentMastodonUser) + self.update(mastodonUser: user) + self.update(mastodonUser: user, currentMastodonUser: me) // Setup observer for user - if let mastodonUser = mastodonUser { + if let mastodonUser = user { // setup observer self.mastodonUserObserver = ManagedObjectObserver.observe(object: mastodonUser) .sink { completion in @@ -203,7 +203,7 @@ extension ProfileViewModel { switch changeType { case .update: self.update(mastodonUser: mastodonUser) - self.update(mastodonUser: mastodonUser, currentMastodonUser: currentMastodonUser) + self.update(mastodonUser: mastodonUser, currentMastodonUser: me) case .delete: // TODO: break @@ -215,7 +215,7 @@ extension ProfileViewModel { } // Setup observer for user - if let currentMastodonUser = currentMastodonUser { + if let currentMastodonUser = me { // setup observer self.currentMastodonUserObserver = ManagedObjectObserver.observe(object: currentMastodonUser) .sink { completion in @@ -230,7 +230,7 @@ extension ProfileViewModel { guard let changeType = change.changeType else { return } switch changeType { case .update: - self.update(mastodonUser: mastodonUser, currentMastodonUser: currentMastodonUser) + self.update(mastodonUser: user, currentMastodonUser: currentMastodonUser) case .delete: // TODO: break @@ -347,13 +347,14 @@ extension ProfileViewModel { // fetch profile info before edit func fetchEditProfileInfo() -> AnyPublisher, Error> { - guard let currentMastodonUser = currentMastodonUser.value, - let mastodonAuthentication = currentMastodonUser.mastodonAuthentication else { + guard let me = me, + let mastodonAuthentication = me.mastodonAuthentication + else { return Fail(error: APIService.APIError.implicit(.authenticationMissing)).eraseToAnyPublisher() } let authorization = Mastodon.API.OAuth.Authorization(accessToken: mastodonAuthentication.userAccessToken) - return context.apiService.accountVerifyCredentials(domain: currentMastodonUser.domain, authorization: authorization) + return context.apiService.accountVerifyCredentials(domain: me.domain, authorization: authorization) } private func updateRelationship( diff --git a/Mastodon/Scene/Profile/RemoteProfileViewModel.swift b/Mastodon/Scene/Profile/RemoteProfileViewModel.swift index 8e31050d2..472af0896 100644 --- a/Mastodon/Scene/Profile/RemoteProfileViewModel.swift +++ b/Mastodon/Scene/Profile/RemoteProfileViewModel.swift @@ -48,7 +48,7 @@ final class RemoteProfileViewModel: ProfileViewModel { assertionFailure() return } - self.mastodonUser.value = mastodonUser + self.user = mastodonUser } .store(in: &disposeBag) } diff --git a/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift b/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift index 598f5df46..5e143a33c 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift @@ -153,7 +153,7 @@ extension SearchDetailViewController { assertionFailure() break case .people: - viewController.viewModel.userFetchedResultsController.userIDs.value = allSearchScopeViewController.viewModel.userFetchedResultsController.userIDs.value + viewController.viewModel.userFetchedResultsController.userIDs = allSearchScopeViewController.viewModel.userFetchedResultsController.userIDs case .hashtags: viewController.viewModel.hashtags = allSearchScopeViewController.viewModel.hashtags case .posts: diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+State.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+State.swift index 1c0e5aa04..b763547bf 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+State.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel+State.swift @@ -155,7 +155,7 @@ extension SearchResultViewModel.State { // reset data source when the search is refresh if offset == nil { - viewModel.userFetchedResultsController.userIDs.value = [] + viewModel.userFetchedResultsController.userIDs = [] viewModel.statusFetchedResultsController.statusIDs.value = [] viewModel.hashtags = [] } diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift index c5656ac09..7641bc0cb 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift @@ -63,7 +63,7 @@ final class SearchResultViewModel { context.authenticationService.activeMastodonAuthenticationBox .map { $0?.domain } - .assign(to: \.value, on: userFetchedResultsController.domain) + .assign(to: \.domain, on: userFetchedResultsController) .store(in: &disposeBag) context.authenticationService.activeMastodonAuthenticationBox diff --git a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift index 13c2efb3d..20449fdf7 100644 --- a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift +++ b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift @@ -15,12 +15,43 @@ import MastodonAsset import MastodonLocalization class SuggestionAccountViewController: UIViewController, NeedsDependency { + + static let collectionViewHeight: CGFloat = 24 + 64 + 24 + weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } var disposeBag = Set() - var viewModel: SuggestionAccountViewModel! + + private static func createCollectionViewLayout() -> UICollectionViewLayout { + let itemSize = NSCollectionLayoutSize(widthDimension: .absolute(64), heightDimension: .absolute(64)) + let item = NSCollectionLayoutItem(layoutSize: itemSize) + + let group = NSCollectionLayoutGroup.horizontal(layoutSize: itemSize, subitems: [item]) + + let section = NSCollectionLayoutSection(group: group) + section.contentInsets = NSDirectionalEdgeInsets(top: 24, leading: 0, bottom: 24, trailing: 0) + section.orthogonalScrollingBehavior = .continuous + section.contentInsetsReference = .readableContent + section.interGroupSpacing = 16 + + return UICollectionViewCompositionalLayout(section: section) + } + + let collectionView: UICollectionView = { + let collectionViewLayout = SuggestionAccountViewController.createCollectionViewLayout() + let view = ControlContainableCollectionView( + frame: .zero, + collectionViewLayout: collectionViewLayout + ) + view.register(SuggestionAccountCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: SuggestionAccountCollectionViewCell.self)) + view.backgroundColor = .clear + view.showsHorizontalScrollIndicator = false + view.showsVerticalScrollIndicator = false + view.layer.masksToBounds = false + return view + }() let tableView: UITableView = { let tableView = ControlContainableTableView() @@ -32,34 +63,6 @@ class SuggestionAccountViewController: UIViewController, NeedsDependency { return tableView }() - lazy var tableHeader: UIView = { - let view = UIView() - view.backgroundColor = ThemeService.shared.currentTheme.value.systemGroupedBackgroundColor - view.frame = CGRect(origin: .zero, size: CGSize(width: tableView.frame.width, height: 156)) - return view - }() - - let followExplainLabel: UILabel = { - let label = UILabel() - label.text = L10n.Scene.SuggestionAccount.followExplain - label.textColor = Asset.Colors.Label.primary.color - label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) - label.numberOfLines = 0 - return label - }() - - let selectedCollectionView: UICollectionView = { - let flowLayout = UICollectionViewFlowLayout() - flowLayout.scrollDirection = .horizontal - let view = ControlContainableCollectionView(frame: .zero, collectionViewLayout: flowLayout) - view.register(SuggestionAccountCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: SuggestionAccountCollectionViewCell.self)) - view.backgroundColor = .clear - view.showsHorizontalScrollIndicator = false - view.showsVerticalScrollIndicator = false - view.layer.masksToBounds = false - return view - }() - deinit { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s:", (#file as NSString).lastPathComponent, #line, #function) } @@ -68,164 +71,135 @@ class SuggestionAccountViewController: UIViewController, NeedsDependency { extension SuggestionAccountViewController { override func viewDidLoad() { super.viewDidLoad() - - fatalError() -// setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) -// ThemeService.shared.currentTheme -// .receive(on: RunLoop.main) -// .sink { [weak self] theme in -// guard let self = self else { return } -// self.setupBackgroundColor(theme: theme) -// } -// .store(in: &disposeBag) -// -// title = L10n.Scene.SuggestionAccount.title -// navigationItem.rightBarButtonItem -// = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.done, -// target: self, -// action: #selector(SuggestionAccountViewController.doneButtonDidClick(_:))) -// -// tableView.delegate = self -// tableView.translatesAutoresizingMaskIntoConstraints = false -// view.addSubview(tableView) -// NSLayoutConstraint.activate([ -// tableView.topAnchor.constraint(equalTo: view.topAnchor), -// tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), -// tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), -// tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), -// ]) -// viewModel.diffableDataSource = RecommendAccountSection.tableViewDiffableDataSource( -// for: tableView, -// managedObjectContext: context.managedObjectContext, -// viewModel: viewModel, -// delegate: self -// ) -// -// viewModel.collectionDiffableDataSource = SelectedAccountSection.collectionViewDiffableDataSource(for: selectedCollectionView, managedObjectContext: context.managedObjectContext) -// -// viewModel.accounts -// .receive(on: DispatchQueue.main) -// .sink { [weak self] accounts in -// guard let self = self else { return } -// self.setupHeader(accounts: accounts) -// } -// .store(in: &disposeBag) + setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) + ThemeService.shared.currentTheme + .receive(on: RunLoop.main) + .sink { [weak self] theme in + guard let self = self else { return } + self.setupBackgroundColor(theme: theme) + } + .store(in: &disposeBag) + + title = L10n.Scene.SuggestionAccount.title + navigationItem.rightBarButtonItem = UIBarButtonItem( + barButtonSystemItem: UIBarButtonItem.SystemItem.done, + target: self, + action: #selector(SuggestionAccountViewController.doneButtonDidClick(_:)) + ) + + collectionView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(collectionView) + NSLayoutConstraint.activate([ + collectionView.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor), + collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + collectionView.heightAnchor.constraint(equalToConstant: SuggestionAccountViewController.collectionViewHeight), + ]) + defer { view.bringSubviewToFront(collectionView) } + + tableView.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(tableView) + NSLayoutConstraint.activate([ + tableView.topAnchor.constraint(equalTo: collectionView.bottomAnchor), + tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), + tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), + tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), + ]) + + collectionView.delegate = self + viewModel.setupDiffableDataSource( + collectionView: collectionView + ) + + tableView.delegate = self + viewModel.setupDiffableDataSource( + tableView: tableView, + suggestionAccountTableViewCellDelegate: self + ) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) + tableView.deselectRow(with: transitionCoordinator, animated: animated) - viewModel.checkAccountsFollowState() - } - - override func viewWillLayoutSubviews() { - super.viewWillLayoutSubviews() - let avatarImageViewHeight: Double = 56 - let avatarImageViewCount = Int(floor((Double(view.frame.width) - 20) / (avatarImageViewHeight + 15))) - viewModel.headerPlaceholderCount.value = avatarImageViewCount - } - - func setupHeader(accounts: [NSManagedObjectID]) { - if accounts.isEmpty { - return - } - followExplainLabel.translatesAutoresizingMaskIntoConstraints = false - tableHeader.addSubview(followExplainLabel) - NSLayoutConstraint.activate([ - followExplainLabel.topAnchor.constraint(equalTo: tableHeader.topAnchor, constant: 20), - followExplainLabel.leadingAnchor.constraint(equalTo: tableHeader.leadingAnchor, constant: 20), - tableHeader.trailingAnchor.constraint(equalTo: followExplainLabel.trailingAnchor, constant: 20), - ]) - - selectedCollectionView.translatesAutoresizingMaskIntoConstraints = false - tableHeader.addSubview(selectedCollectionView) - NSLayoutConstraint.activate([ - selectedCollectionView.frameLayoutGuide.topAnchor.constraint(equalTo: followExplainLabel.topAnchor, constant: 20), - selectedCollectionView.frameLayoutGuide.leadingAnchor.constraint(equalTo: tableHeader.leadingAnchor, constant: 20), - selectedCollectionView.frameLayoutGuide.trailingAnchor.constraint(equalTo: tableHeader.trailingAnchor), - selectedCollectionView.frameLayoutGuide.bottomAnchor.constraint(equalTo: tableHeader.bottomAnchor), - ]) - selectedCollectionView.delegate = self - - tableView.tableHeaderView = tableHeader } private func setupBackgroundColor(theme: Theme) { view.backgroundColor = theme.systemBackgroundColor - tableHeader.backgroundColor = theme.systemGroupedBackgroundColor + collectionView.backgroundColor = theme.systemGroupedBackgroundColor } } -extension SuggestionAccountViewController: UICollectionViewDelegateFlowLayout { - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { - 15 - } - - func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { - CGSize(width: 56, height: 56) - } +// MARK: - UICollectionViewDelegateFlowLayout +extension SuggestionAccountViewController: UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - guard let diffableDataSource = viewModel.collectionDiffableDataSource else { return } - guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } - switch item { - case .accountObjectID(let accountObjectID): - let mastodonUser = context.managedObjectContext.object(with: accountObjectID) as! MastodonUser - let viewModel = ProfileViewModel(context: context, optionalMastodonUser: mastodonUser) - DispatchQueue.main.async { - self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) - } - default: - break - } +// guard let diffableDataSource = viewModel.collectionDiffableDataSource else { return } +// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } +// switch item { +// case .accountObjectID(let accountObjectID): +// let mastodonUser = context.managedObjectContext.object(with: accountObjectID) as! MastodonUser +// let viewModel = ProfileViewModel(context: context, optionalMastodonUser: mastodonUser) +// DispatchQueue.main.async { +// self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) +// } +// default: +// break +// } } } +// MARK: - UITableViewDelegate extension SuggestionAccountViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let objectID = diffableDataSource.itemIdentifier(for: indexPath) else { return } - let mastodonUser = context.managedObjectContext.object(with: objectID) as! MastodonUser - let viewModel = ProfileViewModel(context: context, optionalMastodonUser: mastodonUser) - DispatchQueue.main.async { - self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) + guard let tableViewDiffableDataSource = viewModel.tableViewDiffableDataSource else { return } + guard let item = tableViewDiffableDataSource.itemIdentifier(for: indexPath) else { return } + switch item { + case .account(let record): + guard let account = record.object(in: context.managedObjectContext) else { return } + let cachedProfileViewModel = CachedProfileViewModel(context: context, mastodonUser: account) + coordinator.present( + scene: .profile(viewModel: cachedProfileViewModel), + from: self, + transition: .show + ) } } } extension SuggestionAccountViewController: SuggestionAccountTableViewCellDelegate { func accountButtonPressed(objectID: NSManagedObjectID, cell: SuggestionAccountTableViewCell) { - let selected = !viewModel.selectedAccounts.value.contains(objectID) - cell.startAnimating() - viewModel.followAction(objectID: objectID)? - .sink(receiveCompletion: { [weak self] completion in - guard let self = self else { return } - cell.stopAnimating() - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: follow failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) - case .finished: - var selectedAccounts = self.viewModel.selectedAccounts.value - if selected { - selectedAccounts.append(objectID) - } else { - selectedAccounts.removeAll { $0 == objectID } - } - cell.button.isSelected = selected - self.viewModel.selectedAccounts.value = selectedAccounts - } - }, receiveValue: { _ in - }) - .store(in: &disposeBag) +// let selected = !viewModel.selectedAccounts.value.contains(objectID) +// cell.startAnimating() +// viewModel.followAction(objectID: objectID)? +// .sink(receiveCompletion: { [weak self] completion in +// guard let self = self else { return } +// cell.stopAnimating() +// switch completion { +// case .failure(let error): +// os_log("%{public}s[%{public}ld], %{public}s: follow failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) +// case .finished: +// var selectedAccounts = self.viewModel.selectedAccounts.value +// if selected { +// selectedAccounts.append(objectID) +// } else { +// selectedAccounts.removeAll { $0 == objectID } +// } +// cell.button.isSelected = selected +// self.viewModel.selectedAccounts.value = selectedAccounts +// } +// }, receiveValue: { _ in +// }) +// .store(in: &disposeBag) } } extension SuggestionAccountViewController { @objc func doneButtonDidClick(_ sender: UIButton) { dismiss(animated: true, completion: nil) - if viewModel.selectedAccounts.value.count > 0 { - viewModel.delegate?.homeTimelineNeedRefresh.send() - } +// if viewModel.selectedAccounts.value.count > 0 { +// viewModel.delegate?.homeTimelineNeedRefresh.send() +// } } } diff --git a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel+Diffable.swift b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel+Diffable.swift new file mode 100644 index 000000000..49f38c888 --- /dev/null +++ b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel+Diffable.swift @@ -0,0 +1,74 @@ +// +// SuggestionAccountViewModel+Diffable.swift +// Mastodon +// +// Created by MainasuK on 2022-2-10. +// + +import UIKit + +extension SuggestionAccountViewModel { + + func setupDiffableDataSource( + tableView: UITableView, + suggestionAccountTableViewCellDelegate: SuggestionAccountTableViewCellDelegate + ) { + tableViewDiffableDataSource = RecommendAccountSection.tableViewDiffableDataSource( + tableView: tableView, + context: context, + configuration: RecommendAccountSection.Configuration( + suggestionAccountTableViewCellDelegate: suggestionAccountTableViewCellDelegate + ) + ) + + userFetchedResultsController.$records + .receive(on: DispatchQueue.main) + .sink { [weak self] records in + guard let self = self else { return } + guard let tableViewDiffableDataSource = self.tableViewDiffableDataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + let items: [RecommendAccountItem] = records.map { RecommendAccountItem.account($0) } + snapshot.appendItems(items, toSection: .main) + + if #available(iOS 15.0, *) { + tableViewDiffableDataSource.applySnapshotUsingReloadData(snapshot, completion: nil) + } else { + // Fallback on earlier versions + tableViewDiffableDataSource.applySnapshot(snapshot, animated: false, completion: nil) + } + } + .store(in: &disposeBag) + } + + func setupDiffableDataSource( + collectionView: UICollectionView + ) { + collectionViewDiffableDataSource = SelectedAccountSection.collectionViewDiffableDataSource( + collectionView: collectionView, + context: context + ) + + userFetchedResultsController.$records + .receive(on: DispatchQueue.main) + .sink { [weak self] records in + guard let self = self else { return } + guard let collectionViewDiffableDataSource = self.collectionViewDiffableDataSource else { return } + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + let items: [SelectedAccountItem] = records.map { SelectedAccountItem.account($0) } + snapshot.appendItems(items, toSection: .main) + + if #available(iOS 15.0, *) { + collectionViewDiffableDataSource.applySnapshotUsingReloadData(snapshot, completion: nil) + } else { + // Fallback on earlier versions + collectionViewDiffableDataSource.applySnapshot(snapshot, animated: false, completion: nil) + } + } + .store(in: &disposeBag) + } + +} diff --git a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift index a6786adff..5a79f14d3 100644 --- a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift +++ b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel.swift @@ -20,177 +20,175 @@ protocol SuggestionAccountViewModelDelegate: AnyObject { final class SuggestionAccountViewModel: NSObject { var disposeBag = Set() + weak var delegate: SuggestionAccountViewModelDelegate? + // input let context: AppContext + let userFetchedResultsController: UserFetchedResultsController - let currentMastodonUser = CurrentValueSubject(nil) - weak var delegate: SuggestionAccountViewModelDelegate? - // output - let accounts = CurrentValueSubject<[NSManagedObjectID], Never>([]) - var selectedAccounts = CurrentValueSubject<[NSManagedObjectID], Never>([]) + var viewWillAppear = PassthroughSubject() + // output + var collectionViewDiffableDataSource: UICollectionViewDiffableDataSource? + var tableViewDiffableDataSource: UITableViewDiffableDataSource? + + @Published var selectedAccounts: [ManagedObjectRecord] = [] var headerPlaceholderCount = CurrentValueSubject(nil) var suggestionAccountsFallback = PassthroughSubject() - var viewWillAppear = PassthroughSubject() - var diffableDataSource: UITableViewDiffableDataSource? { - didSet(value) { - if !accounts.value.isEmpty { - applyTableViewDataSource(accounts: accounts.value) - } - } - } - - var collectionDiffableDataSource: UICollectionViewDiffableDataSource? - - init(context: AppContext, accounts: [NSManagedObjectID]? = nil) { + init( + context: AppContext + ) { self.context = context - + self.userFetchedResultsController = UserFetchedResultsController( + managedObjectContext: context.managedObjectContext, + domain: nil, + additionalTweetPredicate: nil + ) super.init() - Publishers.CombineLatest( - self.accounts, - self.selectedAccounts - ) - .receive(on: RunLoop.main) - .sink { [weak self] accounts,selectedAccounts in - self?.applyTableViewDataSource(accounts: accounts) - self?.applySelectedCollectionViewDataSource(accounts: selectedAccounts) - } - .store(in: &disposeBag) +// Publishers.CombineLatest( +// $accounts, +// $selectedAccounts +// ) +// .receive(on: RunLoop.main) +// .sink { [weak self] accounts,selectedAccounts in +// self?.applyTableViewDataSource(accounts: accounts) +// self?.applySelectedCollectionViewDataSource(accounts: selectedAccounts) +// } +// .store(in: &disposeBag) - Publishers.CombineLatest( - self.selectedAccounts, - self.headerPlaceholderCount - ) - .receive(on: RunLoop.main) - .sink { [weak self] selectedAccount,count in - self?.applySelectedCollectionViewDataSource(accounts: selectedAccount) - } - .store(in: &disposeBag) +// Publishers.CombineLatest( +// self.selectedAccounts, +// self.headerPlaceholderCount +// ) +// .receive(on: RunLoop.main) +// .sink { [weak self] selectedAccount,count in +// self?.applySelectedCollectionViewDataSource(accounts: selectedAccount) +// } +// .store(in: &disposeBag) +// +// viewWillAppear +// .sink { [weak self] _ in +// self?.checkAccountsFollowState() +// } +// .store(in: &disposeBag) +// +// context.authenticationService.activeMastodonAuthentication +// .sink { [weak self] activeMastodonAuthentication in +// guard let self = self else { return } +// guard let activeMastodonAuthentication = activeMastodonAuthentication else { +// self.currentMastodonUser.value = nil +// return +// } +// self.currentMastodonUser.value = activeMastodonAuthentication.user +// } +// .store(in: &disposeBag) - viewWillAppear - .sink { [weak self] _ in - self?.checkAccountsFollowState() - } - .store(in: &disposeBag) - - if let accounts = accounts { - self.accounts.value = accounts - } - - context.authenticationService.activeMastodonAuthentication - .sink { [weak self] activeMastodonAuthentication in - guard let self = self else { return } - guard let activeMastodonAuthentication = activeMastodonAuthentication else { - self.currentMastodonUser.value = nil - return - } - self.currentMastodonUser.value = activeMastodonAuthentication.user - } - .store(in: &disposeBag) - - if accounts == nil || (accounts ?? []).isEmpty { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - - context.apiService.suggestionAccountV2(domain: activeMastodonAuthenticationBox.domain, query: nil, mastodonAuthenticationBox: activeMastodonAuthenticationBox) - .sink { [weak self] completion in - switch completion { - case .failure(let error): - if let apiError = error as? Mastodon.API.Error { - if apiError.httpResponseStatus == .notFound { - self?.suggestionAccountsFallback.send() - } - } - os_log("%{public}s[%{public}ld], %{public}s: fetch recommendAccountV2 failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break - } - } receiveValue: { [weak self] response in - let ids = response.value.map(\.account.id) - self?.receiveAccounts(ids: ids) - } - .store(in: &disposeBag) - - suggestionAccountsFallback - .sink(receiveValue: { [weak self] _ in - self?.requestSuggestionAccount() - }) - .store(in: &disposeBag) - } - } - - func requestSuggestionAccount() { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - context.apiService.suggestionAccount(domain: activeMastodonAuthenticationBox.domain, query: nil, mastodonAuthenticationBox: activeMastodonAuthenticationBox) - .sink { completion in - switch completion { - case .failure(let error): - os_log("%{public}s[%{public}ld], %{public}s: fetch recommendAccount failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) - case .finished: - // handle isFetchingLatestTimeline in fetch controller delegate - break - } - } receiveValue: { [weak self] response in - let ids = response.value.map(\.id) - self?.receiveAccounts(ids: ids) - } - .store(in: &disposeBag) - } - - func applyTableViewDataSource(accounts: [NSManagedObjectID]) { - assert(Thread.isMainThread) - guard let dataSource = diffableDataSource else { return } - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - snapshot.appendItems(accounts, toSection: .main) - dataSource.apply(snapshot, animatingDifferences: false, completion: nil) - } - - func applySelectedCollectionViewDataSource(accounts: [NSManagedObjectID]) { - assert(Thread.isMainThread) - guard let count = headerPlaceholderCount.value else { return } - guard let dataSource = collectionDiffableDataSource else { return } - var snapshot = NSDiffableDataSourceSnapshot() - snapshot.appendSections([.main]) - let placeholderCount = count - accounts.count - let accountItems = accounts.map { SelectedAccountItem.accountObjectID(accountObjectID: $0) } - snapshot.appendItems(accountItems, toSection: .main) - - if placeholderCount > 0 { - for _ in 0 ..< placeholderCount { - snapshot.appendItems([SelectedAccountItem.placeHolder(uuid: UUID())], toSection: .main) - } - } - dataSource.apply(snapshot, animatingDifferences: false, completion: nil) - } - - func receiveAccounts(ids: [String]) { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - let userFetchRequest = MastodonUser.sortedFetchRequest - userFetchRequest.predicate = MastodonUser.predicate(domain: activeMastodonAuthenticationBox.domain, ids: ids) - let mastodonUsers: [MastodonUser]? = { - let userFetchRequest = MastodonUser.sortedFetchRequest - userFetchRequest.predicate = MastodonUser.predicate(domain: activeMastodonAuthenticationBox.domain, ids: ids) - userFetchRequest.returnsObjectsAsFaults = false + userFetchedResultsController.domain = authenticationBox.domain + + Task { + var userIDs: [MastodonUser.ID] = [] do { - return try self.context.managedObjectContext.fetch(userFetchRequest) + let response = try await context.apiService.suggestionAccountV2( + query: nil, + authenticationBox: authenticationBox + ) + userIDs = response.value.map { $0.account.id } + } catch let error as Mastodon.API.Error where error.httpResponseStatus == .notFound { + let response = try await context.apiService.suggestionAccount( + query: nil, + authenticationBox: authenticationBox + ) + userIDs = response.value.map { $0.id } } catch { - assertionFailure(error.localizedDescription) - return nil + os_log("%{public}s[%{public}ld], %{public}s: fetch recommendAccountV2 failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) } - }() - if let users = mastodonUsers { - let sortedUsers = users.sorted { (user1, user2) -> Bool in - (ids.firstIndex(of: user1.id) ?? 0) < (ids.firstIndex(of: user2.id) ?? 0) - } - accounts.value = sortedUsers.map(\.objectID) + + guard !userIDs.isEmpty else { return } + userFetchedResultsController.userIDs = userIDs } + +// .sink { [weak self] completion in +// switch completion { +// case .failure(let error): +// if let apiError = error as? Mastodon.API.Error { +// if apiError.httpResponseStatus == .notFound { +// self?.suggestionAccountsFallback.send() +// } +// } +// case .finished: +// // handle isFetchingLatestTimeline in fetch controller delegate +// break +// } +// } receiveValue: { [weak self] response in +// let ids = response.value.map(\.account.id) +// self?.receiveAccounts(ids: ids) +// } +// .store(in: &disposeBag) +// +// suggestionAccountsFallback +// .sink(receiveValue: { [weak self] _ in +// self?.requestSuggestionAccount() +// }) +// .store(in: &disposeBag) } + +// func applyTableViewDataSource(accounts: [NSManagedObjectID]) { +// assert(Thread.isMainThread) +// guard let dataSource = diffableDataSource else { return } +// var snapshot = NSDiffableDataSourceSnapshot() +// snapshot.appendSections([.main]) +// snapshot.appendItems(accounts, toSection: .main) +// dataSource.apply(snapshot, animatingDifferences: false, completion: nil) +// } +// +// func applySelectedCollectionViewDataSource(accounts: [NSManagedObjectID]) { +// assert(Thread.isMainThread) +// guard let count = headerPlaceholderCount.value else { return } +// guard let dataSource = collectionDiffableDataSource else { return } +// var snapshot = NSDiffableDataSourceSnapshot() +// snapshot.appendSections([.main]) +// let placeholderCount = count - accounts.count +// let accountItems = accounts.map { SelectedAccountItem.accountObjectID(accountObjectID: $0) } +// snapshot.appendItems(accountItems, toSection: .main) +// +// if placeholderCount > 0 { +// for _ in 0 ..< placeholderCount { +// snapshot.appendItems([SelectedAccountItem.placeHolder(uuid: UUID())], toSection: .main) +// } +// } +// dataSource.apply(snapshot, animatingDifferences: false, completion: nil) +// } + +// func receiveAccounts(userIDs: [MastodonUser.ID]) { +// guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { +// return +// } +// let request = MastodonUser.sortedFetchRequest +// request.predicate = MastodonUser.predicate(domain: activeMastodonAuthenticationBox.domain, ids: userIDs) +// let mastodonUsers: [MastodonUser]? = { +// let userFetchRequest = MastodonUser.sortedFetchRequest +// userFetchRequest.predicate = MastodonUser.predicate(domain: activeMastodonAuthenticationBox.domain, ids: ids) +// userFetchRequest.returnsObjectsAsFaults = false +// do { +// return try self.context.managedObjectContext.fetch(userFetchRequest) +// } catch { +// assertionFailure(error.localizedDescription) +// return nil +// } +// }() +// if let users = mastodonUsers { +// let sortedUsers = users.sorted { (user1, user2) -> Bool in +// (ids.firstIndex(of: user1.id) ?? 0) < (ids.firstIndex(of: user2.id) ?? 0) +// } +// accounts.value = sortedUsers.map(\.objectID) +// } +// } func followAction(objectID: NSManagedObjectID) -> AnyPublisher, Error>? { fatalError() @@ -203,8 +201,8 @@ final class SuggestionAccountViewModel: NSObject { // ) } - func checkAccountsFollowState() { - fatalError() +// func checkAccountsFollowState() { +// fatalError() // guard let currentMastodonUser = currentMastodonUser.value else { // return // } @@ -229,5 +227,5 @@ final class SuggestionAccountViewModel: NSObject { // }.map(\.objectID) // // selectedAccounts.value = followingUsers - } +// } } diff --git a/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift index 5f679a2ca..5e3a2e1f1 100644 --- a/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift +++ b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift @@ -141,7 +141,7 @@ extension SuggestionAccountTableViewCell { ]) } - func config(with account: MastodonUser, isSelected: Bool) { + func config(with account: MastodonUser) { if let url = account.avatarImageURL() { _imageView.af.setImage( withURL: url, diff --git a/Mastodon/Service/APIService/APIService+Recommend.swift b/Mastodon/Service/APIService/APIService+Recommend.swift index 7c24fdbf1..cb195b608 100644 --- a/Mastodon/Service/APIService/APIService+Recommend.swift +++ b/Mastodon/Service/APIService/APIService+Recommend.swift @@ -14,68 +14,62 @@ import OSLog extension APIService { func suggestionAccount( - domain: String, query: Mastodon.API.Suggestions.Query?, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - fatalError() -// let authorization = mastodonAuthenticationBox.userAuthorization -// -// return Mastodon.API.Suggestions.get(session: session, domain: domain, query: query, authorization: authorization) -// .flatMap { response -> AnyPublisher, Error> in -// let log = OSLog.api -// return self.backgroundManagedObjectContext.performChanges { -// response.value.forEach { user in -// let (mastodonUser,isCreated) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: user, userCache: nil, networkDate: Date(), log: log) -// let flag = isCreated ? "+" : "-" -// os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", (#file as NSString).lastPathComponent, #line, #function, flag, mastodonUser.id, mastodonUser.username) -// } -// } -// .setFailureType(to: Error.self) -// .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.Account]> in -// switch result { -// case .success: -// return response -// case .failure(let error): -// throw error -// } -// } -// .eraseToAnyPublisher() -// } -// .eraseToAnyPublisher() + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.Account]> { + + let response = try await Mastodon.API.Suggestions.get( + session: session, + domain: authenticationBox.domain, + query: query, + authorization: authenticationBox.userAuthorization + ).singleOutput() + + let managedObjectContext = backgroundManagedObjectContext + try await managedObjectContext.performChanges { + for entity in response.value { + _ = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: authenticationBox.domain, + entity: entity, + cache: nil, + networkDate: response.networkDate + ) + ) + } // end for … in + } + + return response } func suggestionAccountV2( - domain: String, query: Mastodon.API.Suggestions.Query?, - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - fatalError() -// let authorization = mastodonAuthenticationBox.userAuthorization -// -// return Mastodon.API.V2.Suggestions.get(session: session, domain: domain, query: query, authorization: authorization) -// .flatMap { response -> AnyPublisher, Error> in -// let log = OSLog.api -// return self.backgroundManagedObjectContext.performChanges { -// response.value.forEach { suggestionAccount in -// let user = suggestionAccount.account -// let (mastodonUser,isCreated) = APIService.CoreData.createOrMergeMastodonUser(into: self.backgroundManagedObjectContext, for: nil, in: domain, entity: user, userCache: nil, networkDate: Date(), log: log) -// let flag = isCreated ? "+" : "-" -// os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", (#file as NSString).lastPathComponent, #line, #function, flag, mastodonUser.id, mastodonUser.username) -// } -// } -// .setFailureType(to: Error.self) -// .tryMap { result -> Mastodon.Response.Content<[Mastodon.Entity.V2.SuggestionAccount]> in -// switch result { -// case .success: -// return response -// case .failure(let error): -// throw error -// } -// } -// .eraseToAnyPublisher() -// } -// .eraseToAnyPublisher() + authenticationBox: MastodonAuthenticationBox + ) async throws -> Mastodon.Response.Content<[Mastodon.Entity.V2.SuggestionAccount]> { + let response = try await Mastodon.API.V2.Suggestions.get( + session: session, + domain: authenticationBox.domain, + query: query, + authorization: authenticationBox.userAuthorization + ).singleOutput() + + let managedObjectContext = backgroundManagedObjectContext + try await managedObjectContext.performChanges { + for entity in response.value { + _ = Persistence.MastodonUser.createOrMerge( + in: managedObjectContext, + context: Persistence.MastodonUser.PersistContext( + domain: authenticationBox.domain, + entity: entity.account, + cache: nil, + networkDate: response.networkDate + ) + ) + } // end for … in + } + + return response } } From f532d5ebd62d7f14c42cc7b1cd0c514265f64254 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 12:40:07 +0100 Subject: [PATCH 162/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 567 ++++++++++++++++++ 1 file changed, 567 insertions(+) create mode 100644 Localization/StringsConvertor/input/kab_KAB/app.json diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json new file mode 100644 index 000000000..b2148def0 --- /dev/null +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -0,0 +1,567 @@ +{ + "common": { + "alerts": { + "common": { + "please_try_again": "Ttxil εreḍ tikelt-nniḍen.", + "please_try_again_later": "Ttxil εreḍ tikelt-nniḍen ticki." + }, + "sign_up_failure": { + "title": "Sign Up Failure" + }, + "server_error": { + "title": "Tuccḍa n uqeddac" + }, + "vote_failure": { + "title": "Vote Failure", + "poll_ended": "Tafrant tfuk" + }, + "discard_post_content": { + "title": "Kkes arewway", + "message": "Confirm to discard composed post content." + }, + "publish_post_failure": { + "title": "Publish Failure", + "message": "Failed to publish the post.\nPlease check your internet connection.", + "attachments_message": { + "video_attach_with_photo": "Cannot attach a video to a post that already contains images.", + "more_than_one_video": "Cannot attach more than one video." + } + }, + "edit_profile_failure": { + "title": "Edit Profile Error", + "message": "Cannot edit profile. Please try again." + }, + "sign_out": { + "title": "Ffeɣ", + "message": "Tebɣiḍ ad teffɣeḍ?", + "confirm": "Ffeɣ" + }, + "block_domain": { + "title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.", + "block_entire_domain": "Sewḥel taɣult" + }, + "save_photo_failure": { + "title": "Save Photo Failure", + "message": "Please enable the photo library access permission to save the photo." + }, + "delete_post": { + "title": "Tebɣiḍ s tidet ad tekkseḍ tasuffeɣt-agi?", + "delete": "Kkes" + }, + "clean_cache": { + "title": "Clean Cache", + "message": "Successfully cleaned %s cache." + } + }, + "controls": { + "actions": { + "back": "Tuɣalin", + "next": "Uḍfir", + "previous": "Uzwir", + "open": "Ldi", + "add": "Rnu", + "remove": "Kkes", + "edit": "Ẓreg", + "save": "Sekles", + "ok": "IH", + "done": "Immed", + "confirm": "Sentem", + "continue": "Kemmel", + "compose": "Sudes", + "cancel": "Sefsex", + "discard": "Sefsex", + "try_again": "Ɛreḍ tikkelt-nniḍen", + "take_photo": "Ṭṭef tawlaft", + "save_photo": "Sekles tawlaft", + "copy_photo": "Nɣel tawlaft", + "sign_in": "Qqen", + "sign_up": "Jerred amiḍan", + "see_more": "Wali ugar", + "preview": "Taskant", + "share": "Bḍu", + "share_user": "Bḍu %s", + "share_post": "Bḍu tasuffeɣt", + "open_in_safari": "Ldi deg Safari", + "open_in_browser": "Ldi deg yiminig", + "find_people": "Af imdanen ara tḍefreḍ", + "manually_search": "Manually search instead", + "skip": "Zgel", + "reply": "Err", + "report_user": "Cetki ɣef %s", + "block_domain": "Sewḥel %s", + "unblock_domain": "Serreḥ i %s", + "settings": "Iɣewwaṛen", + "delete": "Kkes" + }, + "tabs": { + "home": "Home", + "search": "Nadi", + "notification": "Notification", + "profile": "Amaɣnu" + }, + "keyboard": { + "common": { + "switch_to_tab": "Switch to %s", + "compose_new_post": "Compose New Post", + "show_favorites": "Show Favorites", + "open_settings": "Ldi iɣewwaren" + }, + "timeline": { + "previous_status": "Previous Post", + "next_status": "Next Post", + "open_status": "Open Post", + "open_author_profile": "Open Author's Profile", + "open_reblogger_profile": "Open Reblogger's Profile", + "reply_status": "Reply to Post", + "toggle_reblog": "Toggle Reblog on Post", + "toggle_favorite": "Toggle Favorite on Post", + "toggle_content_warning": "Toggle Content Warning", + "preview_image": "Preview Image" + }, + "segmented_control": { + "previous_section": "Previous Section", + "next_section": "Next Section" + } + }, + "status": { + "user_reblogged": "%s reblogged", + "user_replied_to": "Replied to %s", + "show_post": "Show Post", + "show_user_profile": "Show user profile", + "content_warning": "Content Warning", + "media_content_warning": "Tap anywhere to reveal", + "poll": { + "vote": "Vote", + "closed": "Closed" + }, + "actions": { + "reply": "Err", + "reblog": "Reblog", + "unreblog": "Undo reblog", + "favorite": "Favorite", + "unfavorite": "Unfavorite", + "menu": "Umuɣ" + }, + "tag": { + "url": "URL", + "mention": "Mention", + "link": "Link", + "hashtag": "Hashtag", + "email": "Imayl", + "emoji": "Emuji" + } + }, + "friendship": { + "follow": "Ḍfeṛ", + "following": "Following", + "request": "Request", + "pending": "Pending", + "block": "Block", + "block_user": "Block %s", + "block_domain": "Block %s", + "unblock": "Unblock", + "unblock_user": "Unblock %s", + "blocked": "Blocked", + "mute": "Sgugem", + "mute_user": "Sgugem %s", + "unmute": "Unmute", + "unmute_user": "Unmute %s", + "muted": "Muted", + "edit_info": "Edit Info" + }, + "timeline": { + "filtered": "Filtered", + "timestamp": { + "now": "Tura" + }, + "loader": { + "load_missing_posts": "Load missing posts", + "loading_missing_posts": "Loading missing posts...", + "show_more_replies": "Show more replies" + }, + "header": { + "no_status_found": "No Post Found", + "blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", + "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.", + "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.", + "user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.", + "suspended_warning": "This user has been suspended.", + "user_suspended_warning": "%s’s account has been suspended." + } + } + } + }, + "scene": { + "welcome": { + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Qqen" + }, + "server_picker": { + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "button": { + "category": { + "all": "Akk", + "all_accessiblity_description": "Category: All", + "academia": "academia", + "activism": "activism", + "food": "food", + "furry": "furry", + "games": "games", + "general": "general", + "journalism": "journalism", + "lgbt": "lgbt", + "regional": "regional", + "art": "art", + "music": "music", + "tech": "tech" + }, + "see_less": "See Less", + "see_more": "See More" + }, + "label": { + "language": "TUTLAYT", + "users": "USERS", + "category": "CATEGORY" + }, + "input": { + "placeholder": "Search communities" + }, + "empty_state": { + "finding_servers": "Finding available servers...", + "bad_network": "Something went wrong while loading the data. Check your internet connection.", + "no_results": "No results" + } + }, + "register": { + "title": "Let’s get you set up on %s", + "input": { + "avatar": { + "delete": "Kkes" + }, + "username": { + "placeholder": "isem n useqdac", + "duplicate_prompt": "Isem-ayi n umseqdac yettwaṭṭef yakan." + }, + "display_name": { + "placeholder": "display name" + }, + "email": { + "placeholder": "imayl" + }, + "password": { + "placeholder": "awal uffir", + "require": "Your password needs at least:", + "character_limit": "8 n yisekkilen", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, + "hint": "Your password needs at least eight characters" + }, + "invite": { + "registration_user_invite_request": "Why do you want to join?" + } + }, + "error": { + "item": { + "username": "Isem n useqdac", + "email": "Imayl", + "password": "Awal uffir", + "agreement": "Agreement", + "locale": "Locale", + "reason": "Reason" + }, + "reason": { + "blocked": "%s contains a disallowed email provider", + "unreachable": "%s does not seem to exist", + "taken": "%s is already in use", + "reserved": "%s is a reserved keyword", + "accepted": "%s must be accepted", + "blank": "%s is required", + "invalid": "%s is invalid", + "too_long": "%s is too long", + "too_short": "%s is too short", + "inclusion": "%s is not a supported value" + }, + "special": { + "username_invalid": "Username must only contain alphanumeric characters and underscores", + "username_too_long": "Username is too long (can’t be longer than 30 characters)", + "email_invalid": "This is not a valid email address", + "password_too_short": "Password is too short (must be at least 8 characters)" + } + } + }, + "server_rules": { + "title": "Some ground rules.", + "subtitle": "These are set and enforced by the %s moderators.", + "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", + "terms_of_service": "terms of service", + "privacy_policy": "tasertit tabaḍnit", + "button": { + "confirm": "Qebleɣ" + } + }, + "confirm_email": { + "title": "One last thing.", + "subtitle": "Tap the link we emailed to you to verify your account.", + "button": { + "open_email_app": "Open Email App", + "resend": "Resend" + }, + "dont_receive_email": { + "title": "Check your email", + "description": "Check if your email address is correct as well as your junk folder if you haven’t.", + "resend_email": "Resend Email" + }, + "open_email_app": { + "title": "Check your inbox.", + "description": "We just sent you an email. Check your junk folder if you haven’t.", + "mail": "Mail", + "open_email_client": "Open Email Client" + } + }, + "home_timeline": { + "title": "Home", + "navigation_bar_state": { + "offline": "Offline", + "new_posts": "See new posts", + "published": "Published!", + "Publishing": "Publishing post..." + } + }, + "suggestion_account": { + "title": "Find People to Follow", + "follow_explain": "When you follow someone, you’ll see their posts in your home feed." + }, + "compose": { + "title": { + "new_post": "New Post", + "new_reply": "New Reply" + }, + "media_selection": { + "camera": "Take Photo", + "photo_library": "Photo Library", + "browse": "Browse" + }, + "content_input_placeholder": "Type or paste what’s on your mind", + "compose_action": "Publish", + "replying_to_user": "replying to %s", + "attachment": { + "photo": "photo", + "video": "video", + "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", + "description_photo": "Describe the photo for the visually-impaired...", + "description_video": "Describe the video for the visually-impaired..." + }, + "poll": { + "duration_time": "Duration: %s", + "thirty_minutes": "30 minutes", + "one_hour": "1 Hour", + "six_hours": "6 Hours", + "one_day": "1 Day", + "three_days": "3 Days", + "seven_days": "7 Days", + "option_number": "Option %ld" + }, + "content_warning": { + "placeholder": "Write an accurate warning here..." + }, + "visibility": { + "public": "Public", + "unlisted": "Unlisted", + "private": "Followers only", + "direct": "Only people I mention" + }, + "auto_complete": { + "space_to_add": "Space to add" + }, + "accessibility": { + "append_attachment": "Add Attachment", + "append_poll": "Add Poll", + "remove_poll": "Remove Poll", + "custom_emoji_picker": "Custom Emoji Picker", + "enable_content_warning": "Enable Content Warning", + "disable_content_warning": "Disable Content Warning", + "post_visibility_menu": "Post Visibility Menu" + }, + "keyboard": { + "discard_post": "Discard Post", + "publish_post": "Publish Post", + "toggle_poll": "Toggle Poll", + "toggle_content_warning": "Toggle Content Warning", + "append_attachment_entry": "Add Attachment - %s", + "select_visibility_entry": "Select Visibility - %s" + } + }, + "profile": { + "dashboard": { + "posts": "posts", + "following": "following", + "followers": "followers" + }, + "fields": { + "add_row": "Add Row", + "placeholder": { + "label": "Label", + "content": "Content" + } + }, + "segmented_control": { + "posts": "Posts", + "replies": "Replies", + "media": "Media" + }, + "relationship_action_alert": { + "confirm_unmute_user": { + "title": "Unmute Account", + "message": "Confirm to unmute %s" + }, + "confirm_unblock_usre": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" + } + } + }, + "follower": { + "footer": "Followers from other servers are not displayed." + }, + "following": { + "footer": "Follows from other servers are not displayed." + }, + "search": { + "title": "Search", + "search_bar": { + "placeholder": "Search hashtags and users", + "cancel": "Cancel" + }, + "recommend": { + "button_text": "See All", + "hash_tag": { + "title": "Trending on Mastodon", + "description": "Hashtags that are getting quite a bit of attention", + "people_talking": "%s people are talking" + }, + "accounts": { + "title": "Accounts you might like", + "description": "You may like to follow these accounts", + "follow": "Follow" + } + }, + "searching": { + "segment": { + "all": "All", + "people": "People", + "hashtags": "Hashtags", + "posts": "Posts" + }, + "empty_state": { + "no_results": "No results" + }, + "recent_search": "Recent searches", + "clear": "Clear" + } + }, + "favorite": { + "title": "Your Favorites" + }, + "notification": { + "title": { + "Everything": "Everything", + "Mentions": "Mentions" + }, + "user_followed_you": "%s followed you", + "user_favorited your post": "%s favorited your post", + "user_reblogged_your_post": "%s reblogged your post", + "user_mentioned_you": "%s mentioned you", + "user_requested_to_follow_you": "%s requested to follow you", + "user_your_poll_has_ended": "%s Your poll has ended", + "keyobard": { + "show_everything": "Show Everything", + "show_mentions": "Show Mentions" + } + }, + "thread": { + "back_title": "Post", + "title": "Post from %s" + }, + "settings": { + "title": "Settings", + "section": { + "appearance": { + "title": "Appearance", + "automatic": "Automatic", + "light": "Always Light", + "dark": "Always Dark" + }, + "notifications": { + "title": "Notifications", + "favorites": "Favorites my post", + "follows": "Follows me", + "boosts": "Reblogs my post", + "mentions": "Mentions me", + "trigger": { + "anyone": "anyone", + "follower": "a follower", + "follow": "anyone I follow", + "noone": "no one", + "title": "Notify me when" + } + }, + "preference": { + "title": "Preferences", + "true_black_dark_mode": "True black dark mode", + "disable_avatar_animation": "Disable animated avatars", + "disable_emoji_animation": "Disable animated emojis", + "using_default_browser": "Use default browser to open links" + }, + "boring_zone": { + "title": "The Boring Zone", + "account_settings": "Account Settings", + "terms": "Terms of Service", + "privacy": "Privacy Policy" + }, + "spicy_zone": { + "title": "The Spicy Zone", + "clear": "Clear Media Cache", + "signout": "Sign Out" + } + }, + "footer": { + "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + }, + "keyboard": { + "close_settings_window": "Close Settings Window" + } + }, + "report": { + "title": "Report %s", + "step1": "Step 1 of 2", + "step2": "Step 2 of 2", + "content1": "Are there any other posts you’d like to add to the report?", + "content2": "Is there anything the moderators should know about this report?", + "send": "Send Report", + "skip_to_send": "Send without comment", + "text_placeholder": "Type or paste additional comments" + }, + "preview": { + "keyboard": { + "close_preview": "Close Preview", + "show_next": "Show Next", + "show_previous": "Show Previous" + } + }, + "account_list": { + "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", + "dismiss_account_switcher": "Dismiss Account Switcher", + "add_account": "Add Account" + }, + "wizard": { + "new_in_mastodon": "New in Mastodon", + "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.", + "accessibility_hint": "Double tap to dismiss this wizard" + } + } +} From 4ef0ee303a324f58176e087f9ab23fdcd854a1d7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 12:40:09 +0100 Subject: [PATCH 163/374] New translations ios-infoPlist.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/ios-infoPlist.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json diff --git a/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json b/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json new file mode 100644 index 000000000..c6db73de0 --- /dev/null +++ b/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json @@ -0,0 +1,6 @@ +{ + "NSCameraUsageDescription": "Used to take photo for post status", + "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", + "NewPostShortcutItemTitle": "New Post", + "SearchShortcutItemTitle": "Search" +} From 33eaca29fe38e011302725a8991a4d0e6f4ef3fd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 12:40:11 +0100 Subject: [PATCH 164/374] New translations Localizable.stringsdict (Kabyle) --- .../input/kab_KAB/Localizable.stringsdict | 390 ++++++++++++++++++ 1 file changed, 390 insertions(+) create mode 100644 Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict diff --git a/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict new file mode 100644 index 000000000..532c54dae --- /dev/null +++ b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict @@ -0,0 +1,390 @@ + + + + + a11y.plural.count.unread.notification + + NSStringLocalizedFormatKey + %#@notification_count_unread_notification@ + notification_count_unread_notification + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 n ulɣu ur nettwaɣra + other + %ld ilɣa ur nettwaɣra + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld iskillen + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld iskillen + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + tasuffeγt + other + tisuffaɣ + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld tsuffaɣ + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 favorite + other + %ld favorites + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 reblog + other + %ld reblogs + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 vote + other + %ld votes + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 voter + other + %ld voters + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 people talking + other + %ld people talking + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 follower + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 year left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 day left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hour left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minute left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 second left + other + %ld seconds left + + + date.year.ago.abbr + + NSStringLocalizedFormatKey + %#@count_year_ago_abbr@ + count_year_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1y ago + other + %ldy ago + + + date.month.ago.abbr + + NSStringLocalizedFormatKey + %#@count_month_ago_abbr@ + count_month_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1M ago + other + %ldM ago + + + date.day.ago.abbr + + NSStringLocalizedFormatKey + %#@count_day_ago_abbr@ + count_day_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1d ago + other + %ldd ago + + + date.hour.ago.abbr + + NSStringLocalizedFormatKey + %#@count_hour_ago_abbr@ + count_hour_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1h ago + other + %ldh ago + + + date.minute.ago.abbr + + NSStringLocalizedFormatKey + %#@count_minute_ago_abbr@ + count_minute_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1m ago + other + %ldm ago + + + date.second.ago.abbr + + NSStringLocalizedFormatKey + %#@count_second_ago_abbr@ + count_second_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1s ago + other + %lds ago + + + + From bc60081593e4b63924d719b165f0fa05033b3055 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 12:40:12 +0100 Subject: [PATCH 165/374] New translations Intents.strings (Kabyle) --- .../Intents/input/kab_KAB/Intents.strings | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings diff --git a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings new file mode 100644 index 000000000..6877490ba --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings @@ -0,0 +1,51 @@ +"16wxgf" = "Post on Mastodon"; + +"751xkl" = "Text Content"; + +"CsR7G2" = "Post on Mastodon"; + +"HZSGTr" = "What content to post?"; + +"HdGikU" = "Posting failed"; + +"KDNTJ4" = "Failure Reason"; + +"RHxKOw" = "Send Post with text content"; + +"RxSqsb" = "Post"; + +"WCIR3D" = "Post ${content} on Mastodon"; + +"ZKJSNu" = "Post"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Visibility"; + +"Zo4jgJ" = "Post Visibility"; + +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; + +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; + +"ayoYEb-dYQ5NN" = "${content}, Public"; + +"ayoYEb-ehFLjY" = "${content}, Followers Only"; + +"dUyuGg" = "Post on Mastodon"; + +"dYQ5NN" = "Public"; + +"ehFLjY" = "Followers Only"; + +"gfePDu" = "Posting failed. ${failureReason}"; + +"k7dbKQ" = "Post was sent successfully."; + +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; + +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Post was sent successfully. "; From 5e20e410bf0d3c10d5d028fe110d183261969589 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 12:40:13 +0100 Subject: [PATCH 166/374] New translations Intents.stringsdict (Kabyle) --- .../Intents/input/kab_KAB/Intents.stringsdict | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict diff --git a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict new file mode 100644 index 000000000..18422c772 --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict @@ -0,0 +1,38 @@ + + + + + There are ${count} options matching ‘${content}’. - 2 + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${content}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 option + other + %ld options + + + There are ${count} options matching ‘${visibility}’. + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${visibility}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 option + other + %ld options + + + + From ab4d525cec04471923c28bb8ca597df0dd91c6ea Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 20:01:52 +0800 Subject: [PATCH 167/374] feat: make the home timeline readable for VoiceOver --- ...er+NotificationTableViewCellDelegate.swift | 29 ++++++ ...Provider+StatusTableViewCellDelegate.swift | 28 ++++++ .../NotificationTableViewCellDelegate.swift | 5 + .../TableviewCell/StatusTableViewCell.swift | 16 ++++ .../StatusTableViewCellDelegate.swift | 5 + .../View/Content/NotificationView.swift | 7 ++ .../View/Content/StatusView+ViewModel.swift | 95 ++++++++++++++++++- .../MastodonUI/View/Content/StatusView.swift | 4 + 8 files changed, 184 insertions(+), 5 deletions(-) diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift index dff1e5f02..33efe385e 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift @@ -223,3 +223,32 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider { } } + +// MARK: a11y +extension NotificationTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, accessibilityActivate: Void) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + return + } + switch item { + case .status(let status): + await DataSourceFacade.coordinateToStatusThreadScene( + provider: self, + target: .status, // remove reblog wrapper + status: status + ) + case .user(let user): + await DataSourceFacade.coordinateToProfileScene( + provider: self, + user: user + ) + case .notification(let notification): + assertionFailure("TODO") + default: + assertionFailure("TODO") + } + } // end Task + } +} diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift index 9b3b9a375..da15b66dd 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift @@ -431,3 +431,31 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { } +// MARK: a11y +extension StatusTableViewCellDelegate where Self: DataSourceProvider { + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, accessibilityActivate: Void) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + return + } + switch item { + case .status(let status): + await DataSourceFacade.coordinateToStatusThreadScene( + provider: self, + target: .status, // remove reblog wrapper + status: status + ) + case .user(let user): + await DataSourceFacade.coordinateToProfileScene( + provider: self, + user: user + ) + case .notification(let notification): + assertionFailure("TODO") + default: + assertionFailure("TODO") + } + } + } +} diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift index 1f98d4fbb..77fbca71c 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift @@ -29,6 +29,7 @@ protocol NotificationTableViewCellDelegate: AnyObject, AutoGenerateProtocolDeleg func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, accessibilityActivate: Void) // sourcery:end } @@ -59,5 +60,9 @@ extension NotificationViewDelegate where Self: NotificationViewContainerTableVie func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, metaText: metaText, didSelectMeta: meta) } + + func notificationView(_ notificationView: NotificationView, accessibilityActivate: Void) { + delegate?.tableViewCell(self, notificationView: notificationView, accessibilityActivate: accessibilityActivate) + } // sourcery:end } diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift index 5a88eeba1..3ec9aa906 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift @@ -20,6 +20,7 @@ final class StatusTableViewCell: UITableViewCell { weak var delegate: StatusTableViewCellDelegate? var disposeBag = Set() + var _disposeBag = Set() let statusView = StatusView() let separatorLine = UIView.separatorLine @@ -89,6 +90,16 @@ extension StatusTableViewCell { ]) statusView.delegate = self + + isAccessibilityElement = true + accessibilityElements = [statusView] + statusView.viewModel.$groupedAccessibilityLabel + .receive(on: DispatchQueue.main) + .sink { [weak self] accessibilityLabel in + guard let self = self else { return } + self.accessibilityLabel = accessibilityLabel + } + .store(in: &_disposeBag) } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { @@ -96,6 +107,11 @@ extension StatusTableViewCell { updateContainerViewMarginConstraints() } + + override func accessibilityActivate() -> Bool { + delegate?.tableViewCell(self, statusView: statusView, accessibilityActivate: Void()) + return true + } } diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift index 1c556b9ce..0f879de0f 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift @@ -34,6 +34,7 @@ protocol StatusTableViewCellDelegate: AnyObject, AutoGenerateProtocolDelegate { func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, accessibilityActivate: Void) // sourcery:end } @@ -85,5 +86,9 @@ extension StatusViewDelegate where Self: StatusViewContainerTableViewCell { func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) { delegate?.tableViewCell(self, statusView: statusView, mediaGridContainerView: mediaGridContainerView, mediaSensitiveButtonDidPressed: button) } + + func statusView(_ statusView: StatusView, accessibilityActivate: Void) { + delegate?.tableViewCell(self, statusView: statusView, accessibilityActivate: accessibilityActivate) + } // sourcery:end } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index 50dd38be9..a16684c9e 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -22,6 +22,9 @@ public protocol NotificationViewDelegate: AnyObject { func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + + // a11y + func notificationView(_ notificationView: NotificationView, accessibilityActivate: Void) } public final class NotificationView: UIView { @@ -392,6 +395,10 @@ extension NotificationView: StatusViewDelegate { assertionFailure() } + public func statusView(_ statusView: StatusView, accessibilityActivate: Void) { + assertionFailure() + } + } // MARK: - MastodonMenuDelegate diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index 3cc71867d..5b762c2f1 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -43,6 +43,7 @@ extension StatusView { @Published public var timestamp: Date? public var timestampFormatter: ((_ date: Date) -> String)? + @Published public var timestampText = "" // Spoiler @Published public var spoilerContent: MetaContent? @@ -90,6 +91,8 @@ extension StatusView { public let isNeedsTableViewUpdate = PassthroughSubject() + @Published public var groupedAccessibilityLabel = "" + let timestampUpdatePublisher = Timer.publish(every: 1.0, on: .main, in: .common) .autoconnect() .share() @@ -176,6 +179,7 @@ extension StatusView.ViewModel { bindToolbar(statusView: statusView) bindMetric(statusView: statusView) bindMenu(statusView: statusView) + bindAccessibility(statusView: statusView) } private func bindHeader(statusView: StatusView) { @@ -246,11 +250,14 @@ extension StatusView.ViewModel { return text } .removeDuplicates() - .sink { [weak self] text in - guard let _ = self else { return } - statusView.dateLabel.configure(content: PlaintextMetaContent(string: text)) - } - .store(in: &disposeBag) + .assign(to: &$timestampText) + + $timestampText + .sink { [weak self] text in + guard let _ = self else { return } + statusView.dateLabel.configure(content: PlaintextMetaContent(string: text)) + } + .store(in: &disposeBag) } private func bindContent(statusView: StatusView) { @@ -635,6 +642,84 @@ extension StatusView.ViewModel { .store(in: &disposeBag) } + private func bindAccessibility(statusView: StatusView) { + let authorAccessibilityLabel = Publishers.CombineLatest3( + $header, + $authorName, + $timestampText + ) + .map { header, authorName, timestamp -> String? in + var strings: [String?] = [] + + switch header { + case .none: + break + case .reply(let info): + strings.append(info.header.string) + case .repost(let info): + strings.append(info.header.string) + } + + strings.append(authorName?.string) + strings.append(timestamp) + + return strings.compactMap { $0 }.joined(separator: ", ") + } + + let contentAccessibilityLabel = Publishers.CombineLatest3( + $isContentReveal, + $spoilerContent, + $content + ) + .map { isContentReveal, spoilerContent, content -> String? in + var strings: [String?] = [] + + if let spoilerContent = spoilerContent, !spoilerContent.string.isEmpty { + strings.append(L10n.Common.Controls.Status.contentWarning) + strings.append(spoilerContent.string) + } + + if isContentReveal { + strings.append(content?.string) + } + + return strings.compactMap { $0 }.joined(separator: ", ") + } + + let meidaAccessibilityLabel = $mediaViewConfigurations + .map { configurations -> String? in + let count = configurations.count + // TODO: i18n + return count > 0 ? "\(count) media" : nil + } + + // TODO: Toolbar + + Publishers.CombineLatest3( + authorAccessibilityLabel, + contentAccessibilityLabel, + meidaAccessibilityLabel + ) + .map { author, content, media in + let group = [ + author, + content, + media + ] + + return group + .compactMap { $0 } + .joined(separator: ", ") + } + .assign(to: &$groupedAccessibilityLabel) + + $groupedAccessibilityLabel + .sink { accessibilityLabel in + statusView.accessibilityLabel = accessibilityLabel + } + .store(in: &disposeBag) + } + } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index 6f1eac0f0..00415277a 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -25,6 +25,10 @@ public protocol StatusViewDelegate: AnyObject { func statusView(_ statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) func statusView(_ statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) + + // a11y + func statusView(_ statusView: StatusView, accessibilityActivate: Void) + // func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) // func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) } From dd7a0a48caa275b5e4b872a19f0d8d8b0918e656 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Feb 2022 20:02:23 +0800 Subject: [PATCH 168/374] chore: update version to 1.3.0 (95) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 311a5a1ff..4c3c40ead 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 94 + 95 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 987f7b6cb..2c330a14d 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4624,7 +4624,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4653,7 +4653,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4761,11 +4761,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 94; + DYLIB_CURRENT_VERSION = 95; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4792,11 +4792,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 94; + DYLIB_CURRENT_VERSION = 95; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4821,7 +4821,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4846,7 +4846,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4871,7 +4871,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4896,7 +4896,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4921,7 +4921,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4945,7 +4945,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 94; + CURRENT_PROJECT_VERSION = 95; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index c27b4d95a..e854e8770 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 30 + 29 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 31 + 28 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 29 + 30 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 7b6404cb1..88a946a87 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 94 + 95 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index d1a49725b..4ba8a91a6 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 94 + 95 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 311a5a1ff..4c3c40ead 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 94 + 95 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 311a5a1ff..4c3c40ead 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 94 + 95 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index c56460eba..937246cb9 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 94 + 95 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 6b59bd03e..744f64451 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 94 + 95 NSExtension NSExtensionAttributes From 9506fb7cf8f7fd8f217a87380365fac9a868d6db Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 13:44:55 +0100 Subject: [PATCH 169/374] New translations app.json (French) --- .../StringsConvertor/input/fr_FR/app.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index 097a7b09c..674cbebd7 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -67,7 +67,7 @@ "done": "Terminé", "confirm": "Confirmer", "continue": "Continuer", - "compose": "Compose", + "compose": "Composer", "cancel": "Annuler", "discard": "Abandonner", "try_again": "Réessayer", @@ -199,8 +199,8 @@ }, "server_picker": { "title": "Choisissez un serveur,\nn'importe quel serveur.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Choisissez une communauté en fonction de vos intérêts, de votre région ou de votre objectif général.", + "subtitle_extend": "Choisissez une communauté basée sur vos intérêts, votre région ou un but général. Chaque communauté est gérée par une organisation ou un individu entièrement indépendant.", "button": { "category": { "all": "Tout", @@ -256,8 +256,8 @@ "require": "Votre mot de passe doit être composé d’au moins :", "character_limit": "8 caractères", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "vérifié", + "unchecked": "non vérifié" }, "hint": "Votre mot de passe doit contenir au moins 8 caractères" }, @@ -429,7 +429,7 @@ "footer": "Les abonné·e·s issus des autres serveurs ne sont pas affiché·e·s." }, "following": { - "footer": "Follows from other servers are not displayed." + "footer": "Les abonnés issus des autres serveurs ne sont pas affichés." }, "search": { "title": "Rechercher", @@ -554,8 +554,8 @@ } }, "account_list": { - "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", - "dismiss_account_switcher": "Dismiss Account Switcher", + "tab_bar_hint": "Profil sélectionné actuel: %s. Double appui puis maintenez enfoncé pour afficher le changement de compte", + "dismiss_account_switcher": "Rejeter le commutateur de compte", "add_account": "Ajouter un compte" }, "wizard": { From 57f2d225c69cb8331f374a80f537dace11fd442a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 13:44:56 +0100 Subject: [PATCH 170/374] New translations Intents.strings (French) --- .../StringsConvertor/Intents/input/fr_FR/Intents.strings | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings b/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings index 774ec7a66..2703edd42 100644 --- a/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/fr_FR/Intents.strings @@ -24,9 +24,9 @@ "Zo4jgJ" = "Visibilité de la publication"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "Il y a ${count} options correspondant à « Public »."; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "Il y a ${count} options correspondant à « Abonnés uniquement »."; "ayoYEb-dYQ5NN" = "${content}, Public"; From 7e0f64846d9f94667f5831af1ae6940583f58388 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 13:44:58 +0100 Subject: [PATCH 171/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 130 +++++++++--------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index b2148def0..998491d51 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -94,16 +94,16 @@ "delete": "Kkes" }, "tabs": { - "home": "Home", + "home": "Agejdan", "search": "Nadi", "notification": "Notification", "profile": "Amaɣnu" }, "keyboard": { "common": { - "switch_to_tab": "Switch to %s", - "compose_new_post": "Compose New Post", - "show_favorites": "Show Favorites", + "switch_to_tab": "Ddu ɣer %s", + "compose_new_post": "Aru tasuffeɣt tamaynut", + "show_favorites": "Sken-d ismenyifen", "open_settings": "Ldi iɣewwaren" }, "timeline": { @@ -126,17 +126,17 @@ "status": { "user_reblogged": "%s reblogged", "user_replied_to": "Replied to %s", - "show_post": "Show Post", + "show_post": "Sken-d tasuffeɣt", "show_user_profile": "Show user profile", "content_warning": "Content Warning", "media_content_warning": "Tap anywhere to reveal", "poll": { - "vote": "Vote", - "closed": "Closed" + "vote": "Dɣeṛ", + "closed": "Ifukk" }, "actions": { "reply": "Err", - "reblog": "Reblog", + "reblog": "Aɛiwed n usuffeɣ", "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", @@ -144,29 +144,29 @@ }, "tag": { "url": "URL", - "mention": "Mention", - "link": "Link", - "hashtag": "Hashtag", + "mention": "Tabdart", + "link": "Aseɣwen", + "hashtag": "Ahacṭag", "email": "Imayl", "emoji": "Emuji" } }, "friendship": { "follow": "Ḍfeṛ", - "following": "Following", + "following": "Yettwaḍfar", "request": "Request", "pending": "Pending", - "block": "Block", - "block_user": "Block %s", - "block_domain": "Block %s", - "unblock": "Unblock", - "unblock_user": "Unblock %s", - "blocked": "Blocked", + "block": "Sewḥel", + "block_user": "Sewḥel %s", + "block_domain": "Sewḥel %s", + "unblock": "Serreḥ", + "unblock_user": "Serreḥ i %s", + "blocked": "Yettusewḥel", "mute": "Sgugem", "mute_user": "Sgugem %s", - "unmute": "Unmute", - "unmute_user": "Unmute %s", - "muted": "Muted", + "unmute": "Kkes asgugem", + "unmute_user": "Kkes asgugem ɣef %s", + "muted": "Yettwasgugem", "edit_info": "Edit Info" }, "timeline": { @@ -194,7 +194,7 @@ "scene": { "welcome": { "slogan": "Social networking\nback in your hands.", - "get_started": "Get Started", + "get_started": "Aha bdu tura", "log_in": "Qqen" }, "server_picker": { @@ -209,7 +209,7 @@ "activism": "activism", "food": "food", "furry": "furry", - "games": "games", + "games": "uraren", "general": "general", "journalism": "journalism", "lgbt": "lgbt", @@ -232,7 +232,7 @@ "empty_state": { "finding_servers": "Finding available servers...", "bad_network": "Something went wrong while loading the data. Check your internet connection.", - "no_results": "No results" + "no_results": "Ulac igemmaḍ" } }, "register": { @@ -246,7 +246,7 @@ "duplicate_prompt": "Isem-ayi n umseqdac yettwaṭṭef yakan." }, "display_name": { - "placeholder": "display name" + "placeholder": "isem ara d-yettwaskanen" }, "email": { "placeholder": "imayl" @@ -312,7 +312,7 @@ "resend": "Resend" }, "dont_receive_email": { - "title": "Check your email", + "title": "Senqed imayl-ik·im", "description": "Check if your email address is correct as well as your junk folder if you haven’t.", "resend_email": "Resend Email" }, @@ -324,7 +324,7 @@ } }, "home_timeline": { - "title": "Home", + "title": "Agejdan", "navigation_bar_state": { "offline": "Offline", "new_posts": "See new posts", @@ -342,36 +342,36 @@ "new_reply": "New Reply" }, "media_selection": { - "camera": "Take Photo", + "camera": "Ṭṭef tawlaft", "photo_library": "Photo Library", - "browse": "Browse" + "browse": "Snirem" }, "content_input_placeholder": "Type or paste what’s on your mind", - "compose_action": "Publish", + "compose_action": "Sufeɣ", "replying_to_user": "replying to %s", "attachment": { - "photo": "photo", - "video": "video", + "photo": "tawlaft", + "video": "tavidyutt", "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", "description_photo": "Describe the photo for the visually-impaired...", "description_video": "Describe the video for the visually-impaired..." }, "poll": { "duration_time": "Duration: %s", - "thirty_minutes": "30 minutes", - "one_hour": "1 Hour", - "six_hours": "6 Hours", - "one_day": "1 Day", - "three_days": "3 Days", - "seven_days": "7 Days", + "thirty_minutes": "30 n tesdatin", + "one_hour": "1 n wesrag", + "six_hours": "6 n yisragen", + "one_day": "1 n wass", + "three_days": "3 n wussan", + "seven_days": "7 n wussan", "option_number": "Option %ld" }, "content_warning": { "placeholder": "Write an accurate warning here..." }, "visibility": { - "public": "Public", - "unlisted": "Unlisted", + "public": "Azayez", + "unlisted": "War tabdert", "private": "Followers only", "direct": "Only people I mention" }, @@ -398,7 +398,7 @@ }, "profile": { "dashboard": { - "posts": "posts", + "posts": "tisuffaɣ", "following": "following", "followers": "followers" }, @@ -411,7 +411,7 @@ }, "segmented_control": { "posts": "Posts", - "replies": "Replies", + "replies": "Tiririyin", "media": "Media" }, "relationship_action_alert": { @@ -432,10 +432,10 @@ "footer": "Follows from other servers are not displayed." }, "search": { - "title": "Search", + "title": "Nadi", "search_bar": { "placeholder": "Search hashtags and users", - "cancel": "Cancel" + "cancel": "Sefsex" }, "recommend": { "button_text": "See All", @@ -447,29 +447,29 @@ "accounts": { "title": "Accounts you might like", "description": "You may like to follow these accounts", - "follow": "Follow" + "follow": "Ḍfeṛ" } }, "searching": { "segment": { - "all": "All", - "people": "People", - "hashtags": "Hashtags", - "posts": "Posts" + "all": "Akk", + "people": "Imdanen", + "hashtags": "Ihacṭagen", + "posts": "Tisuffaɣ" }, "empty_state": { - "no_results": "No results" + "no_results": "Ulac igemmaḍ" }, "recent_search": "Recent searches", - "clear": "Clear" + "clear": "Sfeḍ" } }, "favorite": { - "title": "Your Favorites" + "title": "Ismenyifen-ik·im" }, "notification": { "title": { - "Everything": "Everything", + "Everything": "Akk", "Mentions": "Mentions" }, "user_followed_you": "%s followed you", @@ -488,16 +488,16 @@ "title": "Post from %s" }, "settings": { - "title": "Settings", + "title": "Iɣewwaṛen", "section": { "appearance": { "title": "Appearance", - "automatic": "Automatic", + "automatic": "Awurman", "light": "Always Light", "dark": "Always Dark" }, "notifications": { - "title": "Notifications", + "title": "Tilɣa", "favorites": "Favorites my post", "follows": "Follows me", "boosts": "Reblogs my post", @@ -519,21 +519,21 @@ }, "boring_zone": { "title": "The Boring Zone", - "account_settings": "Account Settings", + "account_settings": "Iɣewwaṛen n umiḍan", "terms": "Terms of Service", - "privacy": "Privacy Policy" + "privacy": "Tasertit tabaḍnit" }, "spicy_zone": { "title": "The Spicy Zone", "clear": "Clear Media Cache", - "signout": "Sign Out" + "signout": "Senser" } }, "footer": { - "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + "mastodon_description": "Maṣṭudun d aseɣzan s uɣbalu yeldin. Tzemreḍ ad temmleḍ uguren deg GitHub %s (%s)" }, "keyboard": { - "close_settings_window": "Close Settings Window" + "close_settings_window": "Mdel asfaylu n iɣewwaṛen" } }, "report": { @@ -542,13 +542,13 @@ "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", - "send": "Send Report", + "send": "Azen aneqis", "skip_to_send": "Send without comment", "text_placeholder": "Type or paste additional comments" }, "preview": { "keyboard": { - "close_preview": "Close Preview", + "close_preview": "Mdel timeẓri", "show_next": "Show Next", "show_previous": "Show Previous" } @@ -556,10 +556,10 @@ "account_list": { "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", "dismiss_account_switcher": "Dismiss Account Switcher", - "add_account": "Add Account" + "add_account": "Rnu amiḍan" }, "wizard": { - "new_in_mastodon": "New in Mastodon", + "new_in_mastodon": "Amaynut deg Maṣṭudun", "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.", "accessibility_hint": "Double tap to dismiss this wizard" } From 1e5f22f04f5541271cf6d5b6f4eff9f6bbe7e2dd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 13:44:59 +0100 Subject: [PATCH 172/374] New translations ios-infoPlist.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json b/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json index c6db73de0..c5575d5fb 100644 --- a/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json +++ b/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json @@ -2,5 +2,5 @@ "NSCameraUsageDescription": "Used to take photo for post status", "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", "NewPostShortcutItemTitle": "New Post", - "SearchShortcutItemTitle": "Search" + "SearchShortcutItemTitle": "Nadi" } From 5e3d439166a2b31675873870c03e7cba4d254927 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 13:45:00 +0100 Subject: [PATCH 173/374] New translations Localizable.stringsdict (Kabyle) --- .../StringsConvertor/input/kab_KAB/Localizable.stringsdict | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict index 532c54dae..f71168ada 100644 --- a/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict @@ -79,7 +79,7 @@ one 1 post other - %ld tsuffaɣ + %ld n tsuffaɣ plural.count.favorite From 55dd5f64c8c3089524bae04f8d31494ee6dcd289 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 13:45:02 +0100 Subject: [PATCH 174/374] New translations Intents.strings (Kabyle) --- .../Intents/input/kab_KAB/Intents.strings | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings index 6877490ba..4e6d3adb6 100644 --- a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings @@ -1,8 +1,8 @@ -"16wxgf" = "Post on Mastodon"; +"16wxgf" = "Asuffeɣ deg Matodon"; "751xkl" = "Text Content"; -"CsR7G2" = "Post on Mastodon"; +"CsR7G2" = "Asuffeɣ deg Matodon"; "HZSGTr" = "What content to post?"; @@ -12,11 +12,11 @@ "RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Post"; +"RxSqsb" = "Tasuffeɣt"; "WCIR3D" = "Post ${content} on Mastodon"; -"ZKJSNu" = "Post"; +"ZKJSNu" = "Tasuffeɣt"; "ZS1XaK" = "${content}"; @@ -32,9 +32,9 @@ "ayoYEb-ehFLjY" = "${content}, Followers Only"; -"dUyuGg" = "Post on Mastodon"; +"dUyuGg" = "Asuffeɣ deg Maṣṭudun"; -"dYQ5NN" = "Public"; +"dYQ5NN" = "Azayez"; "ehFLjY" = "Followers Only"; From 256d41c113975c4e0cfb7a69f6a34e71000d3b6f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 13:45:03 +0100 Subject: [PATCH 175/374] New translations Intents.stringsdict (Kabyle) --- .../Intents/input/kab_KAB/Intents.stringsdict | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict index 18422c772..f43430651 100644 --- a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict +++ b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict @@ -5,7 +5,7 @@ There are ${count} options matching ‘${content}’. - 2 NSStringLocalizedFormatKey - There are %#@count_option@ matching ‘${content}’. + Llan %#@count_option@ i yemṣaḍan d '${content}'. count_option NSStringFormatSpecTypeKey @@ -15,13 +15,13 @@ one 1 option other - %ld options + %ld iɣewwaṛen There are ${count} options matching ‘${visibility}’. NSStringLocalizedFormatKey - There are %#@count_option@ matching ‘${visibility}’. + Llan %#@count_option@ i yemṣaḍa, d '${visibility}'. count_option NSStringFormatSpecTypeKey @@ -29,9 +29,9 @@ NSStringFormatValueTypeKey %ld one - 1 option + 1 uɣewwaṛ other - %ld options + %ld iɣewwaṛen From b68133498fa1f307f9cc0c09e8aa191e5e683690 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 13:45:04 +0100 Subject: [PATCH 176/374] New translations Localizable.stringsdict (French) --- .../StringsConvertor/input/fr_FR/Localizable.stringsdict | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/fr_FR/Localizable.stringsdict b/Localization/StringsConvertor/input/fr_FR/Localizable.stringsdict index 4a912e4b3..37f07e67a 100644 --- a/Localization/StringsConvertor/input/fr_FR/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/fr_FR/Localizable.stringsdict @@ -37,7 +37,7 @@ a11y.plural.count.input_limit_remains NSStringLocalizedFormatKey - Input limit remains %#@character_count@ + La limite d'entrée reste %#@character_count@ character_count NSStringFormatSpecTypeKey From 0d77c0f9d82885094acd6fa7b243a3cffefd4110 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 14:48:04 +0100 Subject: [PATCH 177/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 998491d51..f798e7794 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -96,7 +96,7 @@ "tabs": { "home": "Agejdan", "search": "Nadi", - "notification": "Notification", + "notification": "Tilɣa", "profile": "Amaɣnu" }, "keyboard": { @@ -138,7 +138,7 @@ "reply": "Err", "reblog": "Aɛiwed n usuffeɣ", "unreblog": "Undo reblog", - "favorite": "Favorite", + "favorite": "Anurif", "unfavorite": "Unfavorite", "menu": "Umuɣ" }, @@ -170,7 +170,7 @@ "edit_info": "Edit Info" }, "timeline": { - "filtered": "Filtered", + "filtered": "Yettwasizdeg", "timestamp": { "now": "Tura" }, From 19cb4bc56f2e764c1e1529313d80fa0eaddea30a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 10 Feb 2022 19:52:46 +0100 Subject: [PATCH 178/374] New translations app.json (French) --- Localization/StringsConvertor/input/fr_FR/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index 674cbebd7..675dd82e2 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -67,7 +67,7 @@ "done": "Terminé", "confirm": "Confirmer", "continue": "Continuer", - "compose": "Composer", + "compose": "Rédiger", "cancel": "Annuler", "discard": "Abandonner", "try_again": "Réessayer", From 56ce39cb46b8e0214ffb5e575a28df5b9a845b5a Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 11 Feb 2022 15:27:29 +0800 Subject: [PATCH 179/374] chore: update action toolbar icons --- .../Assets.xcassets/Arrow/Contents.json | 9 ++ .../Arrow/repeat.imageset/Contents.json | 15 +++ .../Arrow/repeat.imageset/repeat.pdf | 122 +++++++++++++++++ .../Communication/Contents.json | 9 ++ .../Contents.json | 15 +++ .../bubble.left.and.bubble.right.pdf | 110 +++++++++++++++ .../share.imageset/Contents.json | 15 +++ .../Communication/share.imageset/share.pdf | 127 ++++++++++++++++++ .../ObjectsAndTools/Contents.json | 9 ++ .../star.fill.imageset/Contents.json | 15 +++ .../star.fill.imageset/star.fill.pdf | 82 +++++++++++ .../star.imageset/Contents.json | 15 +++ .../ObjectsAndTools/star.imageset/star.pdf | 99 ++++++++++++++ .../MastodonAsset/Generated/Assets.swift | 11 ++ .../View/Control/ActionToolbarContainer.swift | 10 +- 15 files changed, 658 insertions(+), 5 deletions(-) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.imageset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.imageset/repeat.pdf create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/bubble.left.and.bubble.right.imageset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/bubble.left.and.bubble.right.imageset/bubble.left.and.bubble.right.pdf create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/share.imageset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/share.imageset/share.pdf create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.fill.imageset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.fill.imageset/star.fill.pdf create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.imageset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.imageset/star.pdf diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/Contents.json new file mode 100644 index 000000000..6e965652d --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.imageset/Contents.json new file mode 100644 index 000000000..01af77029 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "repeat.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.imageset/repeat.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.imageset/repeat.pdf new file mode 100644 index 000000000..55832f674 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.imageset/repeat.pdf @@ -0,0 +1,122 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 2.000000 2.107513 cm +0.000000 0.000000 0.000000 scn +12.610181 19.422018 m +12.533377 19.489384 l +12.239406 19.713934 11.818006 19.691479 11.549520 19.422018 c +11.482400 19.344936 l +11.258662 19.049896 11.281035 18.626966 11.549520 18.357506 c +13.521000 16.380682 l +6.500000 16.380682 l +6.266866 16.376564 l +2.784996 16.253372 0.000000 13.381639 0.000000 9.857073 c +0.000000 8.166546 0.640704 6.626207 1.691700 5.467305 c +1.764071 5.397793 l +1.894961 5.285951 2.064627 5.218454 2.250000 5.218454 c +2.664214 5.218454 3.000000 5.555460 3.000000 5.971178 c +3.000000 6.144394 2.941704 6.303945 2.843728 6.431146 c +2.644393 6.661853 l +1.929533 7.529752 1.500000 8.643068 1.500000 9.857073 c +1.500000 12.628527 3.738576 14.875234 6.500000 14.875234 c +13.381000 14.875234 l +11.549520 13.034943 l +11.482400 12.957859 l +11.258662 12.662821 11.281035 12.239891 11.549520 11.970430 c +11.842414 11.676473 12.317287 11.676473 12.610181 11.970430 c +15.792162 15.163968 l +15.859283 15.241051 l +16.083021 15.536089 16.060648 15.959020 15.792162 16.228481 c +12.610181 19.422018 l +h +18.229979 14.321409 m +18.099916 14.430242 17.932577 14.495717 17.750000 14.495717 c +17.335787 14.495717 17.000000 14.158710 17.000000 13.742992 c +17.000000 13.556305 17.067719 13.385490 17.179129 13.255264 c +17.999193 12.361402 18.500000 11.167934 18.500000 9.857073 c +18.500000 7.085619 16.261425 4.838912 13.500000 4.838912 c +6.558000 4.838912 l +8.463367 6.750031 l +8.536530 6.835192 l +8.733867 7.102798 8.731853 7.471925 8.530489 7.737460 c +8.463367 7.814543 l +8.378515 7.887972 l +8.111876 8.086025 7.744085 8.084003 7.479511 7.881908 c +7.402708 7.814543 l +4.220727 4.621005 l +4.147565 4.535844 l +3.950228 4.268237 3.952242 3.899111 4.153605 3.633575 c +4.220727 3.556492 l +7.402708 0.362953 l +7.486826 0.290073 l +7.780437 0.071426 8.197102 0.095720 8.463367 0.362953 c +8.731853 0.632414 8.754227 1.055346 8.530489 1.350384 c +8.463367 1.427467 l +6.564000 3.333464 l +13.500000 3.333464 l +13.733133 3.337582 l +17.215004 3.460773 20.000000 6.332506 20.000000 9.857073 c +20.000000 11.550518 19.357080 13.093257 18.302853 14.252840 c +18.229979 14.321409 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 2191 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002281 00000 n +0000002304 00000 n +0000002477 00000 n +0000002551 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +2610 +%%EOF \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/Contents.json new file mode 100644 index 000000000..6e965652d --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/bubble.left.and.bubble.right.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/bubble.left.and.bubble.right.imageset/Contents.json new file mode 100644 index 000000000..7668a03c1 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/bubble.left.and.bubble.right.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "bubble.left.and.bubble.right.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/bubble.left.and.bubble.right.imageset/bubble.left.and.bubble.right.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/bubble.left.and.bubble.right.imageset/bubble.left.and.bubble.right.pdf new file mode 100644 index 000000000..35b6bce14 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/bubble.left.and.bubble.right.imageset/bubble.left.and.bubble.right.pdf @@ -0,0 +1,110 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 2.000000 2.836700 cm +0.000000 0.000000 0.000000 scn +7.561576 18.163300 m +3.419440 18.163300 0.061576 14.805435 0.061576 10.663300 c +0.061576 9.530416 0.313246 8.454476 0.764230 7.489944 c +0.510198 6.491944 0.226379 5.379101 0.039990 4.648594 c +-0.193033 3.735312 0.629398 2.904506 1.543737 3.124281 c +2.293964 3.304609 3.446986 3.581353 4.474467 3.826294 c +5.416776 3.400215 6.462413 3.163300 7.561576 3.163300 c +11.703712 3.163300 15.061575 6.521164 15.061575 10.663300 c +15.061575 14.805435 11.703712 18.163300 7.561576 18.163300 c +h +1.561576 10.663300 m +1.561576 13.977008 4.247868 16.663300 7.561576 16.663300 c +10.875283 16.663300 13.561575 13.977008 13.561575 10.663300 c +13.561575 7.349591 10.875283 4.663300 7.561576 4.663300 c +6.600843 4.663300 5.694872 4.888549 4.891613 5.288434 c +4.648198 5.409614 l +4.383680 5.346642 l +3.460951 5.126980 2.394888 4.871399 1.595922 4.679508 c +1.794670 5.458641 2.057843 6.490885 2.286006 7.387637 c +2.356194 7.663498 l +2.225676 7.916461 l +1.801452 8.738670 1.561576 9.671877 1.561576 10.663300 c +h +12.561601 0.163244 m +10.592215 0.163244 8.800118 0.922304 7.461914 2.163819 c +7.495111 2.163436 7.528352 2.163244 7.561634 2.163244 c +8.279597 2.163244 8.976770 2.252259 9.642719 2.419854 c +10.506666 1.937881 11.502057 1.663244 12.561601 1.663244 c +13.522333 1.663244 14.428305 1.888493 15.231564 2.288379 c +15.474978 2.409558 l +15.739497 2.346587 l +16.661055 2.127203 17.704596 1.900763 18.478659 1.737051 c +18.303703 2.487577 18.064995 3.492156 17.837170 4.387582 c +17.766983 4.663443 l +17.897501 4.916406 l +18.321724 5.738615 18.561600 6.671822 18.561600 7.663244 c +18.561600 9.777950 17.467583 11.637134 15.814650 12.705694 c +15.636257 13.428946 15.365275 14.115738 15.014999 14.752777 c +17.952297 13.736459 20.061600 10.946178 20.061600 7.663244 c +20.061600 6.530099 19.809814 5.453921 19.358633 4.489217 c +19.611656 3.481242 19.867884 2.389293 20.030380 1.685955 c +20.234837 0.801001 19.455448 -0.000011 18.562967 0.186527 c +17.835819 0.338509 16.693346 0.582319 15.649543 0.826614 c +14.707017 0.400299 13.661087 0.163244 12.561601 0.163244 c +h +f +n +Q + +endstream +endobj + +3 0 obj + 2167 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002257 00000 n +0000002280 00000 n +0000002453 00000 n +0000002527 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +2586 +%%EOF \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/share.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/share.imageset/Contents.json new file mode 100644 index 000000000..5d0e2aab2 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/share.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "share.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/share.imageset/share.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/share.imageset/share.pdf new file mode 100644 index 000000000..01ef13903 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Communication/share.imageset/share.pdf @@ -0,0 +1,127 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 2.996704 2.791443 cm +0.066667 0.000000 0.000000 scn +3.750000 17.208559 m +7.214205 17.208559 l +7.628418 17.208559 7.964205 16.872772 7.964205 16.458559 c +7.964205 16.078863 7.682051 15.765067 7.315975 15.715405 c +7.214205 15.708558 l +3.750000 15.708558 l +2.559136 15.708558 1.584355 14.783398 1.505191 13.612608 c +1.500000 13.458559 l +1.500000 3.958558 l +1.500000 2.767694 2.425161 1.792913 3.595951 1.713749 c +3.750000 1.708559 l +13.250732 1.708559 l +14.441596 1.708559 15.416378 2.633719 15.495543 3.804509 c +15.500732 3.958558 l +15.500732 4.456340 l +15.500732 4.870553 15.836519 5.206340 16.250732 5.206340 c +16.630428 5.206340 16.944225 4.924186 16.993887 4.558110 c +17.000732 4.456340 l +17.000732 3.958558 l +17.000732 1.954300 15.428372 0.317286 13.449892 0.213757 c +13.250732 0.208559 l +3.750000 0.208559 l +1.745741 0.208559 0.108726 1.780920 0.005198 3.759400 c +0.000000 3.958558 l +0.000000 13.458559 l +0.000000 15.462818 1.572361 17.099833 3.550841 17.203360 c +3.750000 17.208559 l +7.214205 17.208559 l +3.750000 17.208559 l +h +11.503993 14.688704 m +11.503993 17.458559 l +11.503993 18.082529 12.210776 18.418612 12.690969 18.068756 c +12.773166 17.999817 l +18.767767 12.249817 l +19.047527 11.981472 19.072992 11.550446 18.844139 11.252485 c +18.767855 11.167385 l +12.773253 5.415532 l +12.322979 4.983491 11.591075 5.260884 11.511142 5.849654 c +11.503993 5.956706 l +11.503993 8.682026 l +11.160501 8.651914 l +8.760812 8.401592 6.460772 7.320704 4.245949 5.391203 c +3.726840 4.938968 2.923710 5.366555 3.009085 6.049711 c +3.673874 11.369261 6.455748 14.301262 11.204629 14.669057 c +11.503993 14.688704 l +11.503993 17.458559 l +11.503993 14.688704 l +h +13.003994 15.699915 m +13.003994 13.958559 l +13.003994 13.544345 12.668206 13.208559 12.253993 13.208559 c +8.380589 13.208559 5.979970 11.532429 4.942725 8.051376 c +4.863667 7.772803 l +5.215857 8.009624 l +7.452339 9.471366 9.801754 10.208558 12.253993 10.208558 c +12.633689 10.208558 12.947484 9.926404 12.997147 9.560328 c +13.003994 9.458558 l +13.003994 7.715741 l +17.165230 11.708471 l +13.003994 15.699915 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 2134 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002224 00000 n +0000002247 00000 n +0000002420 00000 n +0000002494 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +2553 +%%EOF \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/Contents.json new file mode 100644 index 000000000..6e965652d --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.fill.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.fill.imageset/Contents.json new file mode 100644 index 000000000..3df4557f3 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.fill.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "star.fill.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.fill.imageset/star.fill.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.fill.imageset/star.fill.pdf new file mode 100644 index 000000000..5b188c0b6 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.fill.imageset/star.fill.pdf @@ -0,0 +1,82 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 2.000000 1.886078 cm +0.000000 0.000000 0.000000 scn +8.787823 19.011379 m +9.283020 20.014759 10.713811 20.014765 11.209011 19.011381 c +13.566957 14.233658 l +18.839485 13.467514 l +19.946779 13.306616 20.388926 11.945854 19.587675 11.164829 c +15.772436 7.445889 l +16.673092 2.194668 l +16.862242 1.091846 15.704712 0.250845 14.714312 0.771528 c +9.998417 3.250818 l +5.282524 0.771528 l +4.292129 0.250847 3.134592 1.091841 3.323741 2.194666 c +4.224397 7.445890 l +0.409159 11.164828 l +-0.392086 11.945848 0.050045 13.306614 1.157346 13.467514 c +6.429876 14.233658 l +8.787823 19.011379 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 655 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000000745 00000 n +0000000767 00000 n +0000000940 00000 n +0000001014 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +1073 +%%EOF \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.imageset/Contents.json new file mode 100644 index 000000000..a15637406 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "star.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.imageset/star.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.imageset/star.pdf new file mode 100644 index 000000000..1eb8ec956 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/ObjectsAndTools/star.imageset/star.pdf @@ -0,0 +1,99 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 2.000000 1.886078 cm +0.000000 0.000000 0.000000 scn +8.787823 19.011379 m +9.283020 20.014759 10.713811 20.014765 11.209011 19.011381 c +13.566957 14.233658 l +18.839485 13.467514 l +19.946779 13.306616 20.388926 11.945854 19.587675 11.164829 c +15.772436 7.445889 l +16.673092 2.194668 l +16.862242 1.091846 15.704712 0.250845 14.714312 0.771528 c +9.998417 3.250818 l +5.282524 0.771528 l +4.292129 0.250847 3.134592 1.091841 3.323741 2.194666 c +4.224397 7.445890 l +0.409159 11.164828 l +-0.392086 11.945848 0.050045 13.306614 1.157346 13.467514 c +6.429876 14.233658 l +8.787823 19.011379 l +h +9.998417 18.074984 m +7.740080 13.499093 l +7.543436 13.100649 7.163321 12.824480 6.723613 12.760588 c +1.673818 12.026810 l +5.327885 8.464975 l +5.646061 8.154830 5.791251 7.707979 5.716140 7.270047 c +4.853532 2.240658 l +9.370207 4.615213 l +9.763494 4.821977 10.233340 4.821977 10.626628 4.615213 c +15.143302 2.240660 l +14.280694 7.270047 l +14.205583 7.707980 14.350773 8.154830 14.668949 8.464975 c +18.323015 12.026810 l +13.273220 12.760588 l +12.833511 12.824480 12.453398 13.100650 12.256754 13.499093 c +9.998417 18.074984 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 1181 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000001271 00000 n +0000001294 00000 n +0000001467 00000 n +0000001541 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +1600 +%%EOF \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift index 014186cfb..5e7ae79c3 100644 --- a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift +++ b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift @@ -21,6 +21,9 @@ public typealias AssetImageTypeAlias = ImageAsset.Image // swiftlint:disable identifier_name line_length nesting type_body_length type_name public enum Asset { + public enum Arrow { + public static let `repeat` = ImageAsset(name: "Arrow/repeat") + } public enum Asset { public static let email = ImageAsset(name: "Asset/email") public static let friends = ImageAsset(name: "Asset/friends") @@ -82,6 +85,10 @@ public enum Asset { public static let successGreen = ColorAsset(name: "Colors/success.green") public static let systemOrange = ColorAsset(name: "Colors/system.orange") } + public enum Communication { + public static let bubbleLeftAndBubbleRight = ImageAsset(name: "Communication/bubble.left.and.bubble.right") + public static let share = ImageAsset(name: "Communication/share") + } public enum Connectivity { public static let photoFillSplit = ImageAsset(name: "Connectivity/photo.fill.split") } @@ -90,6 +97,10 @@ public enum Asset { public static let eyeSlashCircleFill = ImageAsset(name: "Human/eye.slash.circle.fill") public static let faceSmilingAdaptive = ImageAsset(name: "Human/face.smiling.adaptive") } + public enum ObjectsAndTools { + public static let starFill = ImageAsset(name: "ObjectsAndTools/star.fill") + public static let star = ImageAsset(name: "ObjectsAndTools/star") + } public enum Scene { public enum Onboarding { public static let avatarPlaceholder = ImageAsset(name: "Scene/Onboarding/avatar.placeholder") diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift index b126e8c7d..3b4a97375 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift @@ -18,11 +18,11 @@ public final class ActionToolbarContainer: UIView { let logger = Logger(subsystem: "ActionToolbarContainer", category: "Control") - static let replyImage = UIImage(systemName: "bubble.left", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) - static let reblogImage = UIImage(systemName: "arrow.2.squarepath", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) - static let starImage = UIImage(systemName: "star", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) - static let starFillImage = UIImage(systemName: "star.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) - static let shareImage = UIImage(systemName: "square.and.arrow.up", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .regular))!.withRenderingMode(.alwaysTemplate) + static let replyImage = Asset.Communication.bubbleLeftAndBubbleRight.image.withRenderingMode(.alwaysTemplate) + static let reblogImage = Asset.Arrow.repeat.image.withRenderingMode(.alwaysTemplate) + static let starImage = Asset.ObjectsAndTools.star.image.withRenderingMode(.alwaysTemplate) + static let starFillImage = Asset.ObjectsAndTools.starFill.image.withRenderingMode(.alwaysTemplate) + static let shareImage = Asset.Communication.share.image.withRenderingMode(.alwaysTemplate) public let replyButton = HighlightDimmableButton() public let reblogButton = HighlightDimmableButton() From 9e954c517e10df3c6d35ab44e2eec1bcf38b4efb Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 11 Feb 2022 15:28:03 +0800 Subject: [PATCH 180/374] fix: instal state missing issue --- .../Profile/Timeline/UserTimelineViewModel+Diffable.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift index cdd92bbac..56d0973e9 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift @@ -68,7 +68,8 @@ extension UserTimelineViewModel { if let currentState = self.stateMachine.currentState { switch currentState { - case is State.Reloading, + case is State.Initial, + is State.Reloading, is State.Loading, is State.Idle, is State.Fail: From d85af16e03e4ea9e8c670bae9ed1e0e9a9b10c38 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 11 Feb 2022 15:28:39 +0800 Subject: [PATCH 181/374] fix: follow push notification deep-link not works issue --- .../Profile/RemoteProfileViewModel.swift | 73 +++++++++---------- .../APIService/APIService+Account.swift | 29 -------- 2 files changed, 34 insertions(+), 68 deletions(-) diff --git a/Mastodon/Scene/Profile/RemoteProfileViewModel.swift b/Mastodon/Scene/Profile/RemoteProfileViewModel.swift index 472af0896..bb565c3e0 100644 --- a/Mastodon/Scene/Profile/RemoteProfileViewModel.swift +++ b/Mastodon/Scene/Profile/RemoteProfileViewModel.swift @@ -56,48 +56,43 @@ final class RemoteProfileViewModel: ProfileViewModel { init(context: AppContext, notificationID: Mastodon.Entity.Notification.ID) { super.init(context: context, optionalMastodonUser: nil) - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - let domain = activeMastodonAuthenticationBox.domain - let authorization = activeMastodonAuthenticationBox.userAuthorization -// context.apiService.notification( -// notificationID: notificationID, -// mastodonAuthenticationBox: activeMastodonAuthenticationBox -// ) -// .compactMap { [weak self] response -> AnyPublisher, Error>? in -// let userID = response.value.account.id -// // TODO: use .account directly -// return context.apiService.accountInfo( -// domain: domain, -// userID: userID, -// authorization: authorization -// ) -// } -// .switchToLatest() -// .retry(3) -// .sink { completion in -// switch completion { -// case .failure(let error): -// // TODO: handle error -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote notification %s user fetch failed: %s", ((#file as NSString).lastPathComponent), #line, #function, notificationID, error.localizedDescription) -// case .finished: -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: remote notification %s user fetched", ((#file as NSString).lastPathComponent), #line, #function, notificationID) -// } -// } receiveValue: { [weak self] response in -// guard let self = self else { return } -// let managedObjectContext = context.managedObjectContext -// let request = MastodonUser.sortedFetchRequest -// request.fetchLimit = 1 -// request.predicate = MastodonUser.predicate(domain: domain, id: response.value.id) -// guard let mastodonUser = managedObjectContext.safeFetch(request).first else { -// assertionFailure() -// return -// } -// self.mastodonUser.value = mastodonUser -// } -// .store(in: &disposeBag) + Task { @MainActor in + let response = try await context.apiService.notification( + notificationID: notificationID, + authenticationBox: authenticationBox + ) + let userID = response.value.account.id + + let _user: MastodonUser? = try await context.managedObjectContext.perform { + let request = MastodonUser.sortedFetchRequest + request.predicate = MastodonUser.predicate(domain: authenticationBox.domain, id: userID) + request.fetchLimit = 1 + return context.managedObjectContext.safeFetch(request).first + } + + if let user = _user { + self.user = user + } else { + _ = try await context.apiService.accountInfo( + domain: authenticationBox.domain, + userID: userID, + authorization: authenticationBox.userAuthorization + ) + + let _user: MastodonUser? = try await context.managedObjectContext.perform { + let request = MastodonUser.sortedFetchRequest + request.predicate = MastodonUser.predicate(domain: authenticationBox.domain, id: userID) + request.fetchLimit = 1 + return context.managedObjectContext.safeFetch(request).first + } + + self.user = _user + } + } // end Task } } diff --git a/Mastodon/Service/APIService/APIService+Account.swift b/Mastodon/Service/APIService/APIService+Account.swift index 7bd262893..11da2f4ee 100644 --- a/Mastodon/Service/APIService/APIService+Account.swift +++ b/Mastodon/Service/APIService/APIService+Account.swift @@ -43,35 +43,6 @@ extension APIService { } return response -// .flatMap { response -> AnyPublisher, Error> in -// let log = OSLog.api -// let account = response.value -// -// return self.backgroundManagedObjectContext.performChanges { -// let (mastodonUser, isCreated) = APIService.CoreData.createOrMergeMastodonUser( -// into: self.backgroundManagedObjectContext, -// for: nil, -// in: domain, -// entity: account, -// userCache: nil, -// networkDate: response.networkDate, -// log: log -// ) -// let flag = isCreated ? "+" : "-" -// os_log(.info, log: log, "%{public}s[%{public}ld], %{public}s: fetch mastodon user [%s](%s)%s", ((#file as NSString).lastPathComponent), #line, #function, flag, mastodonUser.id, mastodonUser.username) -// } -// .setFailureType(to: Error.self) -// .tryMap { result -> Mastodon.Response.Content in -// switch result { -// case .success: -// return response -// case .failure(let error): -// throw error -// } -// } -// .eraseToAnyPublisher() -// } -// .eraseToAnyPublisher() } } From 59812807c6aec663abdc67402268de2d1b7848d3 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 11 Feb 2022 15:33:18 +0800 Subject: [PATCH 182/374] fix: foreground notification not trigger tab bell icon update issue --- .../xcschemes/xcschememanagement.plist | 6 +++--- Mastodon/Coordinator/SceneCoordinator.swift | 2 +- .../HomeTimelineViewController+DebugAction.swift | 4 ++-- NotificationService/MastodonNotification.swift | 14 +++++++------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index e854e8770..22741ed56 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 29 + 28 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 28 + 30 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 30 + 29 SuppressBuildableAutocreation diff --git a/Mastodon/Coordinator/SceneCoordinator.swift b/Mastodon/Coordinator/SceneCoordinator.swift index a72f8628f..c8ce4acbd 100644 --- a/Mastodon/Coordinator/SceneCoordinator.swift +++ b/Mastodon/Coordinator/SceneCoordinator.swift @@ -45,7 +45,7 @@ final public class SceneCoordinator { return Just(nil).eraseToAnyPublisher() } - let accessToken = pushNotification._accessToken // use raw accessToken value without normalize + let accessToken = pushNotification.accessToken // use raw accessToken value without normalize if currentActiveAuthenticationBox.userAuthorization.accessToken == accessToken { // do nothing if notification for current account return Just(pushNotification).eraseToAnyPublisher() diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index b57c4325e..d4783045c 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -348,7 +348,7 @@ extension HomeTimelineViewController { else { return } let pushNotification = MastodonPushNotification( - _accessToken: authenticationBox.userAuthorization.accessToken, + accessToken: authenticationBox.userAuthorization.accessToken, notificationID: notificationID, notificationType: notificationType.rawValue, preferredLocale: nil, @@ -372,7 +372,7 @@ extension HomeTimelineViewController { else { return } let pushNotification = MastodonPushNotification( - _accessToken: accessToken, + accessToken: accessToken, notificationID: notificationID, notificationType: notificationType.rawValue, preferredLocale: nil, diff --git a/NotificationService/MastodonNotification.swift b/NotificationService/MastodonNotification.swift index 7d6fb034d..7d961f31d 100644 --- a/NotificationService/MastodonNotification.swift +++ b/NotificationService/MastodonNotification.swift @@ -9,10 +9,10 @@ import Foundation struct MastodonPushNotification: Codable { - let _accessToken: String - var accessToken: String { - return String.normalize(base64String: _accessToken) - } + let accessToken: String +// var accessToken: String { +// return String.normalize(base64String: _accessToken) +// } let notificationID: Int let notificationType: String @@ -23,7 +23,7 @@ struct MastodonPushNotification: Codable { let body: String enum CodingKeys: String, CodingKey { - case _accessToken = "access_token" + case accessToken = "access_token" case notificationID = "notification_id" case notificationType = "notification_type" case preferredLocale = "preferred_locale" @@ -33,7 +33,7 @@ struct MastodonPushNotification: Codable { } public init( - _accessToken: String, + accessToken: String, notificationID: Int, notificationType: String, preferredLocale: String?, @@ -41,7 +41,7 @@ struct MastodonPushNotification: Codable { title: String, body: String ) { - self._accessToken = _accessToken + self.accessToken = accessToken self.notificationID = notificationID self.notificationType = notificationType self.preferredLocale = preferredLocale From d3e8f85cb3b1990b1fc599876d7a4b8e1ace20fe Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 11 Feb 2022 19:27:14 +0800 Subject: [PATCH 183/374] feat: add notification timeline fetcher --- .../Provider/DataSourceFacade+Status.swift | 10 +- ...er+NotificationTableViewCellDelegate.swift | 101 ++++++++++++- .../HomeTimelineViewController.swift | 23 +-- .../NotificationTableViewCell+ViewModel.swift | 23 ++- .../NotificationTableViewCellDelegate.swift | 20 +++ .../NotificationTimelineViewController.swift | 69 ++++++++- .../NotificationTimelineViewModel.swift | 8 +- .../Timeline/UserTimelineViewController.swift | 1 + .../Settings/SettingsViewController.swift | 23 +-- .../Content/StatusView+Configuration.swift | 1 + .../StatusTableViewCell+ViewModel.swift | 8 +- .../APIService/APIService+Relationship.swift | 2 +- .../APIService/APIService+Subscriptions.swift | 20 ++- Mastodon/Service/AuthenticationService.swift | 75 ++++------ Mastodon/Service/NotificationService.swift | 141 ++++++++++++------ Mastodon/Supporting Files/AppDelegate.swift | 16 +- .../CoreData 3.xcdatamodel/contents | 10 -- .../CoreDataStack/Entity/App/Feed.swift | 2 +- .../Entity/App/HomeTimelineIndex.swift | 102 ------------- .../View/Content/NotificationView.swift | 23 ++- .../View/Content/StatusView+ViewModel.swift | 26 +++- .../MastodonUI/View/Content/StatusView.swift | 2 - .../View/Control/SpoilerBannerView.swift | 3 +- 23 files changed, 421 insertions(+), 288 deletions(-) delete mode 100644 MastodonSDK/Sources/CoreDataStack/Entity/App/HomeTimelineIndex.swift diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift index 54dce3bb8..41c967b83 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift @@ -279,9 +279,8 @@ extension DataSourceFacade { dependency: NeedsDependency, status: ManagedObjectRecord ) async throws { - let managedObjectContext = dependency.context.managedObjectContext - try await managedObjectContext.performChanges { - guard let _status = status.object(in: managedObjectContext) else { return } + try await dependency.context.managedObjectContext.perform { + guard let _status = status.object(in: dependency.context.managedObjectContext) else { return } let status = _status.reblog ?? _status let isToggled = status.isContentSensitiveToggled || status.isMediaSensitiveToggled @@ -295,9 +294,8 @@ extension DataSourceFacade { dependency: NeedsDependency, status: ManagedObjectRecord ) async throws { - let managedObjectContext = dependency.context.managedObjectContext - try await managedObjectContext.performChanges { - guard let _status = status.object(in: managedObjectContext) else { return } + try await dependency.context.managedObjectContext.perform { + guard let _status = status.object(in: dependency.context.managedObjectContext) else { return } let status = _status.reblog ?? _status status.update(isMediaSensitiveToggled: !status.isMediaSensitiveToggled) diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift index 33efe385e..56b5cf2bd 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift @@ -202,7 +202,7 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider { return } guard case let .notification(notification) = item else { - assertionFailure("only works for status data provider") + assertionFailure("only works for notification item") return } let _status: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { @@ -222,6 +222,105 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider { ) } + + + func tableViewCell( + _ cell: UITableViewCell, notificationView: NotificationView, + statusView: StatusView, + spoilerBannerViewDidPressed bannerView: SpoilerBannerView + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(notification) = item else { + assertionFailure("only works for notification item") + return + } + let _status: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } + guard let status = notification.status else { return nil } + return .init(objectID: status.objectID) + } + guard let status = _status else { + assertionFailure() + return + } + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: status + ) + } // end Task + } + + + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + quoteStatusView: StatusView, + spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(notification) = item else { + assertionFailure("only works for notification item") + return + } + let _status: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } + guard let status = notification.status else { return nil } + return .init(objectID: status.objectID) + } + guard let status = _status else { + assertionFailure() + return + } + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: status + ) + } // end Task + } + + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + quoteStatusView: StatusView, + spoilerBannerViewDidPressed bannerView: SpoilerBannerView + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(notification) = item else { + assertionFailure("only works for notification item") + return + } + let _status: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } + guard let status = notification.status else { return nil } + return .init(objectID: status.objectID) + } + guard let status = _status else { + assertionFailure() + return + } + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: status + ) + } // end Task + } + + } // MARK: a11y diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index 5985194e4..2af357079 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -424,28 +424,15 @@ extension HomeTimelineViewController { } @objc func signOutAction(_ sender: UIAction) { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } - context.authenticationService.signOutMastodonUser( - domain: activeMastodonAuthenticationBox.domain, - userID: activeMastodonAuthenticationBox.userID - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] result in - guard let self = self else { return } - switch result { - case .failure(let error): - assertionFailure(error.localizedDescription) - case .success(let isSignOut): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: sign out %s", ((#file as NSString).lastPathComponent), #line, #function, isSignOut ? "success" : "fail") - guard isSignOut else { return } - self.coordinator.setup() - self.coordinator.setupOnboardingIfNeeds(animated: true) - } + Task { @MainActor in + try await context.authenticationService.signOutMastodonUser(authenticationBox: authenticationBox) + self.coordinator.setup() + self.coordinator.setupOnboardingIfNeeds(animated: true) } - .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift index dc16346c2..be230391a 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift @@ -6,6 +6,7 @@ // import UIKit +import Combine import CoreDataStack extension NotificationTableViewCell { @@ -42,8 +43,26 @@ extension NotificationTableViewCell { case .feed(let feed): notificationView.configure(feed: feed) } -// - self.delegate = delegate + + self.delegate = delegate + + Publishers.CombineLatest( + notificationView.statusView.viewModel.$isContentReveal.removeDuplicates(), + notificationView.quoteStatusView.viewModel.$isContentReveal.removeDuplicates() + ) + .dropFirst() + .receive(on: DispatchQueue.main) + .sink { [weak tableView, weak self] _, _ in + guard let tableView = tableView else { return } + guard let self = self else { return } + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): tableView updates") + + UIView.performWithoutAnimation { + tableView.beginUpdates() + tableView.endUpdates() + } + } + .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift index 77fbca71c..31370f745 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift @@ -26,9 +26,13 @@ protocol NotificationTableViewCellDelegate: AnyObject, AutoGenerateProtocolDeleg func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, authorAvatarButtonDidPressed button: AvatarButton) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, accessibilityActivate: Void) // sourcery:end } @@ -49,6 +53,14 @@ extension NotificationViewDelegate where Self: NotificationViewContainerTableVie delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, metaText: metaText, didSelectMeta: meta) } + func notificationView(_ notificationView: NotificationView, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) { + delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, spoilerOverlayViewDidPressed: overlayView) + } + + func notificationView(_ notificationView: NotificationView, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) { + delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, spoilerBannerViewDidPressed: bannerView) + } + func notificationView(_ notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) { delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action) } @@ -61,6 +73,14 @@ extension NotificationViewDelegate where Self: NotificationViewContainerTableVie delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, metaText: metaText, didSelectMeta: meta) } + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) { + delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, spoilerOverlayViewDidPressed: overlayView) + } + + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) { + delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, spoilerBannerViewDidPressed: bannerView) + } + func notificationView(_ notificationView: NotificationView, accessibilityActivate: Void) { delegate?.tableViewCell(self, notificationView: notificationView, accessibilityActivate: accessibilityActivate) } diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift index b587ff742..44d165bad 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift @@ -8,6 +8,7 @@ import os.log import UIKit import Combine +import CoreDataStack final class NotificationTimelineViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { @@ -94,6 +95,30 @@ extension NotificationTimelineViewController { tableView.deselectRow(with: transitionCoordinator, animated: animated) } + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + if !viewModel.isLoadingLatest { + let now = Date() + if let timestamp = viewModel.lastAutomaticFetchTimestamp { + if now.timeIntervalSince(timestamp) > 60 { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): auto fetch latest timeline…") + Task { + await viewModel.loadLatest() + } + viewModel.lastAutomaticFetchTimestamp = now + } else { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): auto fetch latest timeline skip. Reason: updated in recent 60s") + } + } else { + Task { + await viewModel.loadLatest() + } + viewModel.lastAutomaticFetchTimestamp = now + } + } + } + } extension NotificationTimelineViewController { @@ -150,4 +175,46 @@ extension NotificationTimelineViewController: UITableViewDelegate, AutoGenerateT } // MARK: - NotificationTableViewCellDelegate -extension NotificationTimelineViewController: NotificationTableViewCellDelegate { } +extension NotificationTimelineViewController: NotificationTableViewCellDelegate { + + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + statusView: StatusView, + spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView + ) { + guard let diffableDataSource = viewModel.diffableDataSource else { return } + guard let indexPath = tableView.indexPath(for: cell) else { return } + guard let reloadItem = diffableDataSource.itemIdentifier(for: indexPath) else { return } + + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(notification) = item else { + assertionFailure("only works for notification item") + return + } + let _status: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { + guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } + guard let status = notification.status else { return nil } + return .init(objectID: status.objectID) + } + guard let status = _status else { + assertionFailure() + return + } + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: status + ) + +// var snapshot = diffableDataSource.snapshot() +// snapshot.reloadItems([reloadItem]) +// diffableDataSource.apply(snapshot, animatingDifferences: false) + } // end Task + } + +} diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift index 41e4cef07..eb24f3a3c 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel.swift @@ -23,7 +23,9 @@ final class NotificationTimelineViewModel { let scope: Scope let feedFetchedResultsController: FeedFetchedResultsController let listBatchFetchViewModel = ListBatchFetchViewModel() - + @Published var isLoadingLatest = false + @Published var lastAutomaticFetchTimestamp: Date? + // output var diffableDataSource: UITableViewDiffableDataSource? var didLoadLatest = PassthroughSubject() @@ -144,6 +146,10 @@ extension NotificationTimelineViewModel { // load lastest func loadLatest() async { guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + + isLoadingLatest = true + defer{ isLoadingLatest = false } + do { _ = try await context.apiService.notifications( maxID: nil, diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift index 0b1717f53..0b836da72 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift @@ -30,6 +30,7 @@ final class UserTimelineViewController: UIViewController, NeedsDependency, Media tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) tableView.register(TimelineHeaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineHeaderTableViewCell.self)) tableView.rowHeight = UITableView.automaticDimension + tableView.estimatedRowHeight = 100 tableView.separatorStyle = .none tableView.backgroundColor = .clear return tableView diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index cf20e2df9..172602c3b 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -294,31 +294,18 @@ extension SettingsViewController { } func signOut() { - guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } // clear badge before sign-out context.notificationService.clearNotificationCountForActiveUser() - context.authenticationService.signOutMastodonUser( - domain: activeMastodonAuthenticationBox.domain, - userID: activeMastodonAuthenticationBox.userID - ) - .receive(on: DispatchQueue.main) - .sink { [weak self] result in - guard let self = self else { return } - switch result { - case .failure(let error): - assertionFailure(error.localizedDescription) - case .success(let isSignOut): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: sign out %s", ((#file as NSString).lastPathComponent), #line, #function, isSignOut ? "success" : "fail") - guard isSignOut else { return } - self.coordinator.setup() - self.coordinator.setupOnboardingIfNeeds(animated: true) - } + Task { @MainActor in + try await context.authenticationService.signOutMastodonUser(authenticationBox: authenticationBox) + self.coordinator.setup() + self.coordinator.setupOnboardingIfNeeds(animated: true) } - .store(in: &disposeBag) } } diff --git a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift index 6854ffc77..85105c2c1 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift @@ -264,6 +264,7 @@ extension StatusView { .assign(to: \.isContentSensitiveToggled, on: viewModel) .store(in: &disposeBag) + // viewModel.source = status.source } diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift index 84dd49436..85184d406 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell+ViewModel.swift @@ -53,12 +53,14 @@ extension StatusTableViewCell { self.delegate = delegate - statusView.viewModel.isNeedsTableViewUpdate + statusView.viewModel.$isContentReveal + .removeDuplicates() + .dropFirst() .receive(on: DispatchQueue.main) - .sink { [weak tableView, weak self] in + .sink { [weak tableView, weak self] _ in guard let tableView = tableView else { return } guard let _ = self else { return } - + UIView.performWithoutAnimation { tableView.beginUpdates() tableView.endUpdates() diff --git a/Mastodon/Service/APIService/APIService+Relationship.swift b/Mastodon/Service/APIService/APIService+Relationship.swift index 8c10f137f..a852eaf67 100644 --- a/Mastodon/Service/APIService/APIService+Relationship.swift +++ b/Mastodon/Service/APIService/APIService+Relationship.swift @@ -43,7 +43,7 @@ extension APIService { try await managedObjectContext.performChanges { guard let me = authenticationBox.authenticationRecord.object(in: managedObjectContext)?.user else { - assertionFailure() + // assertionFailure() return } diff --git a/Mastodon/Service/APIService/APIService+Subscriptions.swift b/Mastodon/Service/APIService/APIService+Subscriptions.swift index e9df2bc57..825bdcd4c 100644 --- a/Mastodon/Service/APIService/APIService+Subscriptions.swift +++ b/Mastodon/Service/APIService/APIService+Subscriptions.swift @@ -50,20 +50,18 @@ extension APIService { } func cancelSubscription( - mastodonAuthenticationBox: MastodonAuthenticationBox - ) -> AnyPublisher, Error> { - let authorization = mastodonAuthenticationBox.userAuthorization - let domain = mastodonAuthenticationBox.domain - - return Mastodon.API.Subscriptions.removeSubscription( + domain: String, + authorization: Mastodon.API.OAuth.Authorization + ) async throws -> Mastodon.Response.Content { + let response = try await Mastodon.API.Subscriptions.removeSubscription( session: session, domain: domain, authorization: authorization - ) - .handleEvents(receiveOutput: { _ in - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: cancel subscription successful", ((#file as NSString).lastPathComponent), #line, #function) - }) - .eraseToAnyPublisher() + ).singleOutput() + + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: cancel subscription successful", ((#file as NSString).lastPathComponent), #line, #function) + + return response } } diff --git a/Mastodon/Service/AuthenticationService.swift b/Mastodon/Service/AuthenticationService.swift index b587a5733..97afde932 100644 --- a/Mastodon/Service/AuthenticationService.swift +++ b/Mastodon/Service/AuthenticationService.swift @@ -137,58 +137,41 @@ extension AuthenticationService { .eraseToAnyPublisher() } - func signOutMastodonUser(domain: String, userID: MastodonUser.ID) -> AnyPublisher, Never> { - var isSignOut = false - - var _mastodonAuthenticationBox: MastodonAuthenticationBox? + func signOutMastodonUser( + authenticationBox: MastodonAuthenticationBox + ) async throws { let managedObjectContext = backgroundManagedObjectContext - return managedObjectContext.performChanges { - let request = MastodonAuthentication.sortedFetchRequest - request.predicate = MastodonAuthentication.predicate(domain: domain, userID: userID) - request.fetchLimit = 1 - guard let mastodonAuthentication = try? managedObjectContext.fetch(request).first else { - return - } - _mastodonAuthenticationBox = MastodonAuthenticationBox( - authenticationRecord: .init(objectID: mastodonAuthentication.objectID), - domain: mastodonAuthentication.domain, - userID: mastodonAuthentication.userID, - appAuthorization: Mastodon.API.OAuth.Authorization(accessToken: mastodonAuthentication.appAccessToken), - userAuthorization: Mastodon.API.OAuth.Authorization(accessToken: mastodonAuthentication.userAccessToken) + try await managedObjectContext.performChanges { + // remove Feed + let request = Feed.sortedFetchRequest + request.predicate = Feed.predicate( + acct: .mastodon( + domain: authenticationBox.domain, + userID: authenticationBox.userID + ) ) - - // remove home timeline indexes - let homeTimelineIndexRequest = HomeTimelineIndex.sortedFetchRequest - homeTimelineIndexRequest.predicate = HomeTimelineIndex.predicate( - domain: mastodonAuthentication.domain, - userID: mastodonAuthentication.userID - ) - let homeTimelineIndexes = managedObjectContext.safeFetch(homeTimelineIndexRequest) - for homeTimelineIndex in homeTimelineIndexes { - managedObjectContext.delete(homeTimelineIndex) - } - - // remove user authentication - managedObjectContext.delete(mastodonAuthentication) - isSignOut = true - } - .flatMap { result -> AnyPublisher, Never> in - guard let apiService = self.apiService, - let mastodonAuthenticationBox = _mastodonAuthenticationBox else { - return Just(result).eraseToAnyPublisher() + let feeds = managedObjectContext.safeFetch(request) + for feed in feeds { + managedObjectContext.delete(feed) } - return apiService.cancelSubscription( - mastodonAuthenticationBox: mastodonAuthenticationBox + guard let authentication = authenticationBox.authenticationRecord.object(in: managedObjectContext) else { + assertionFailure() + throw APIService.APIError.implicit(.authenticationMissing) + } + + managedObjectContext.delete(authentication) + } + + // cancel push notification subscription + do { + _ = try await apiService?.cancelSubscription( + domain: authenticationBox.domain, + authorization: authenticationBox.userAuthorization ) - .map { _ in result } - .catch { _ in Just(result).eraseToAnyPublisher() } - .eraseToAnyPublisher() + } catch { + // do nothing } - .map { result in - return result.map { isSignOut } - } - .eraseToAnyPublisher() } } diff --git a/Mastodon/Service/NotificationService.swift b/Mastodon/Service/NotificationService.swift index d707c1ee5..e4e7508a3 100644 --- a/Mastodon/Service/NotificationService.swift +++ b/Mastodon/Service/NotificationService.swift @@ -121,57 +121,20 @@ extension NotificationService { return _notificationSubscription } - func handle(mastodonPushNotification: MastodonPushNotification) { + func handle( + pushNotification: MastodonPushNotification + ) { defer { unreadNotificationCountDidUpdate.send() } - - // Subscription maybe failed to cancel when sign-out - // Try cancel again if receive that kind push notification - guard let managedObjectContext = authenticationService?.managedObjectContext else { return } - guard let apiService = apiService else { return } - managedObjectContext.perform { - let subscriptionRequest = NotificationSubscription.sortedFetchRequest - subscriptionRequest.predicate = NotificationSubscription.predicate(userToken: mastodonPushNotification.accessToken) - let subscriptions = managedObjectContext.safeFetch(subscriptionRequest) + Task { + // trigger notification timeline update + try? await fetchLatestNotifications(pushNotification: pushNotification) - // note: assert setting remove after cancel subscription - guard let subscription = subscriptions.first else { return } - guard let setting = subscription.setting else { return } - let domain = setting.domain - let userID = setting.userID - - let authenticationRequest = MastodonAuthentication.sortedFetchRequest - authenticationRequest.predicate = MastodonAuthentication.predicate(domain: domain, userID: userID) - guard let authentication = managedObjectContext.safeFetch(authenticationRequest).first else { - // do nothing if still sign-in - return - } - - // cancel subscription if sign-out - let accessToken = mastodonPushNotification.accessToken - let mastodonAuthenticationBox = MastodonAuthenticationBox( - authenticationRecord: .init(objectID: authentication.objectID), - domain: domain, - userID: userID, - appAuthorization: .init(accessToken: accessToken), - userAuthorization: .init(accessToken: accessToken) - ) - apiService - .cancelSubscription(mastodonAuthenticationBox: mastodonAuthenticationBox) - .sink { completion in - switch completion { - case .failure(let error): - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Push Notification] failed to cancel sign-out user subscription: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) - case .finished: - os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Push Notification] cancel sign-out user subscription", ((#file as NSString).lastPathComponent), #line, #function) - } - } receiveValue: { _ in - // do nothing - } - .store(in: &self.disposeBag) - } + // cancel sign-out account push notification subscription + try? await cancelSubscriptionForDetachedAccount(pushNotification: pushNotification) + } // end Task } } @@ -187,6 +150,92 @@ extension NotificationService { } } +extension NotificationService { + private func fetchLatestNotifications( + pushNotification: MastodonPushNotification + ) async throws { + guard let apiService = apiService else { return } + guard let authenticationBox = try await authenticationBox(for: pushNotification) else { return } + + _ = try await apiService.notifications( + maxID: nil, + scope: .everything, + authenticationBox: authenticationBox + ) + } + + private func cancelSubscriptionForDetachedAccount( + pushNotification: MastodonPushNotification + ) async throws { + // Subscription maybe failed to cancel when sign-out + // Try cancel again if receive that kind push notification + guard let managedObjectContext = authenticationService?.managedObjectContext else { return } + guard let apiService = apiService else { return } + + let userAccessToken = pushNotification.accessToken + + let needsCancelSubscription: Bool = try await managedObjectContext.perform { + // check authentication exists + let authenticationRequest = MastodonAuthentication.sortedFetchRequest + authenticationRequest.predicate = MastodonAuthentication.predicate(userAccessToken: userAccessToken) + return managedObjectContext.safeFetch(authenticationRequest).first == nil + } + + guard needsCancelSubscription else { + return + } + + guard let domain = try await domain(for: pushNotification) else { return } + + do { + _ = try await apiService.cancelSubscription( + domain: domain, + authorization: .init(accessToken: userAccessToken) + ) + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Push Notification] cancel sign-out user subscription", ((#file as NSString).lastPathComponent), #line, #function) + } catch { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Push Notification] failed to cancel sign-out user subscription: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) + } + } + + private func domain(for pushNotification: MastodonPushNotification) async throws -> String? { + guard let authenticationService = self.authenticationService else { return nil } + let managedObjectContext = authenticationService.managedObjectContext + return try await managedObjectContext.perform { + let subscriptionRequest = NotificationSubscription.sortedFetchRequest + subscriptionRequest.predicate = NotificationSubscription.predicate(userToken: pushNotification.accessToken) + let subscriptions = managedObjectContext.safeFetch(subscriptionRequest) + + // note: assert setting not remove after sign-out + guard let subscription = subscriptions.first else { return nil } + guard let setting = subscription.setting else { return nil } + let domain = setting.domain + + return domain + } + } + + private func authenticationBox(for pushNotification: MastodonPushNotification) async throws -> MastodonAuthenticationBox? { + guard let authenticationService = self.authenticationService else { return nil } + let managedObjectContext = authenticationService.managedObjectContext + return try await managedObjectContext.perform { + let request = MastodonAuthentication.sortedFetchRequest + request.predicate = MastodonAuthentication.predicate(userAccessToken: pushNotification.accessToken) + request.fetchLimit = 1 + guard let authentication = managedObjectContext.safeFetch(request).first else { return nil } + + return MastodonAuthenticationBox( + authenticationRecord: .init(objectID: authentication.objectID), + domain: authentication.domain, + userID: authentication.userID, + appAuthorization: .init(accessToken: authentication.appAccessToken), + userAuthorization: .init(accessToken: authentication.userAccessToken) + ) + } + } + +} + // MARK: - NotificationViewModel extension NotificationService { diff --git a/Mastodon/Supporting Files/AppDelegate.swift b/Mastodon/Supporting Files/AppDelegate.swift index 5989f80ad..7b1185f84 100644 --- a/Mastodon/Supporting Files/AppDelegate.swift +++ b/Mastodon/Supporting Files/AppDelegate.swift @@ -90,19 +90,19 @@ extension AppDelegate: UNUserNotificationCenterDelegate { withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void ) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Push Notification]", ((#file as NSString).lastPathComponent), #line, #function) - guard let mastodonPushNotification = AppDelegate.mastodonPushNotification(from: notification) else { + guard let pushNotification = AppDelegate.mastodonPushNotification(from: notification) else { completionHandler([]) return } - let notificationID = String(mastodonPushNotification.notificationID) + let notificationID = String(pushNotification.notificationID) os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Push Notification] notification %s", ((#file as NSString).lastPathComponent), #line, #function, notificationID) - let accessToken = mastodonPushNotification.accessToken + let accessToken = pushNotification.accessToken UserDefaults.shared.increaseNotificationCount(accessToken: accessToken) appContext.notificationService.applicationIconBadgeNeedsUpdate.send() - appContext.notificationService.handle(mastodonPushNotification: mastodonPushNotification) + appContext.notificationService.handle(pushNotification: pushNotification) completionHandler([.sound]) } @@ -114,15 +114,15 @@ extension AppDelegate: UNUserNotificationCenterDelegate { ) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Push Notification]", ((#file as NSString).lastPathComponent), #line, #function) - guard let mastodonPushNotification = AppDelegate.mastodonPushNotification(from: response.notification) else { + guard let pushNotification = AppDelegate.mastodonPushNotification(from: response.notification) else { completionHandler() return } - let notificationID = String(mastodonPushNotification.notificationID) + let notificationID = String(pushNotification.notificationID) os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: [Push Notification] notification %s", ((#file as NSString).lastPathComponent), #line, #function, notificationID) - appContext.notificationService.handle(mastodonPushNotification: mastodonPushNotification) - appContext.notificationService.requestRevealNotificationPublisher.send(mastodonPushNotification) + appContext.notificationService.handle(pushNotification: pushNotification) + appContext.notificationService.requestRevealNotificationPublisher.send(pushNotification) completionHandler() } diff --git a/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents index fbdf742ef..3e2fcc138 100644 --- a/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents +++ b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents @@ -39,15 +39,6 @@ - - - - - - - - - @@ -262,7 +253,6 @@ - diff --git a/MastodonSDK/Sources/CoreDataStack/Entity/App/Feed.swift b/MastodonSDK/Sources/CoreDataStack/Entity/App/Feed.swift index 0a44a4093..5fca61153 100644 --- a/MastodonSDK/Sources/CoreDataStack/Entity/App/Feed.swift +++ b/MastodonSDK/Sources/CoreDataStack/Entity/App/Feed.swift @@ -74,7 +74,7 @@ extension Feed { return NSPredicate(format: "%K == %@", #keyPath(Feed.kindRaw), kind.rawValue) } - static func predicate(acct: Acct) -> NSPredicate { + public static func predicate(acct: Acct) -> NSPredicate { return NSPredicate(format: "%K == %@", #keyPath(Feed.acctRaw), acct.rawValue) } diff --git a/MastodonSDK/Sources/CoreDataStack/Entity/App/HomeTimelineIndex.swift b/MastodonSDK/Sources/CoreDataStack/Entity/App/HomeTimelineIndex.swift deleted file mode 100644 index d52d0c3cd..000000000 --- a/MastodonSDK/Sources/CoreDataStack/Entity/App/HomeTimelineIndex.swift +++ /dev/null @@ -1,102 +0,0 @@ -// -// HomeTimelineIndex.swift -// CoreDataStack -// -// Created by MainasuK Cirno on 2021/1/27. -// - -import Foundation -import CoreData - -final public class HomeTimelineIndex: NSManagedObject { - - public typealias ID = String - @NSManaged public private(set) var identifier: ID - @NSManaged public private(set) var domain: String - @NSManaged public private(set) var userID: String - - @NSManaged public private(set) var hasMore: Bool // default NO - - @NSManaged public private(set) var createdAt: Date - @NSManaged public private(set) var deletedAt: Date? - - - // many-to-one relationship - @NSManaged public private(set) var status: Status - -} - -extension HomeTimelineIndex { - - @discardableResult - public static func insert( - into context: NSManagedObjectContext, - property: Property, - status: Status - ) -> HomeTimelineIndex { - let index: HomeTimelineIndex = context.insertObject() - - index.identifier = property.identifier - index.domain = property.domain - index.userID = property.userID - index.createdAt = status.createdAt - - index.status = status - - return index - } - - public func update(hasMore: Bool) { - if self.hasMore != hasMore { - self.hasMore = hasMore - } - } - - // internal method for status call - func softDelete() { - deletedAt = Date() - } - -} - -extension HomeTimelineIndex { - public struct Property { - public let identifier: String - public let domain: String - public let userID: String - - public init(domain: String, userID: String) { - self.identifier = UUID().uuidString + "@" + domain - self.domain = domain - self.userID = userID - } - } -} - -extension HomeTimelineIndex: Managed { - public static var defaultSortDescriptors: [NSSortDescriptor] { - return [NSSortDescriptor(keyPath: \HomeTimelineIndex.createdAt, ascending: false)] - } -} -extension HomeTimelineIndex { - - static func predicate(domain: String) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(HomeTimelineIndex.domain), domain) - } - - static func predicate(userID: MastodonUser.ID) -> NSPredicate { - return NSPredicate(format: "%K == %@", #keyPath(HomeTimelineIndex.userID), userID) - } - - public static func predicate(domain: String, userID: MastodonUser.ID) -> NSPredicate { - return NSCompoundPredicate(andPredicateWithSubpredicates: [ - predicate(domain: domain), - predicate(userID: userID) - ]) - } - - public static func notDeleted() -> NSPredicate { - return NSPredicate(format: "%K == nil", #keyPath(HomeTimelineIndex.deletedAt)) - } - -} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index a16684c9e..745c112f1 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -18,10 +18,15 @@ public protocol NotificationViewDelegate: AnyObject { func notificationView(_ notificationView: NotificationView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) func notificationView(_ notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + func notificationView(_ notificationView: NotificationView, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) + func notificationView(_ notificationView: NotificationView, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) + func notificationView(_ notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) // a11y func notificationView(_ notificationView: NotificationView, accessibilityActivate: Void) @@ -384,11 +389,25 @@ extension NotificationView: StatusViewDelegate { } public func statusView(_ statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) { - assertionFailure() + switch statusView { + case self.statusView: + delegate?.notificationView(self, statusView: statusView, spoilerOverlayViewDidPressed: overlayView) + case quoteStatusView: + delegate?.notificationView(self, quoteStatusView: statusView, spoilerOverlayViewDidPressed: overlayView) + default: + assertionFailure() + } } public func statusView(_ statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) { - assertionFailure() + switch statusView { + case self.statusView: + delegate?.notificationView(self, statusView: statusView, spoilerBannerViewDidPressed: bannerView) + case quoteStatusView: + delegate?.notificationView(self, quoteStatusView: statusView, spoilerBannerViewDidPressed: bannerView) + default: + assertionFailure() + } } public func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index 5b762c2f1..baaf5bbff 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -88,9 +88,7 @@ extension StatusView { @Published public var replyCount: Int = 0 @Published public var reblogCount: Int = 0 @Published public var favoriteCount: Int = 0 - - public let isNeedsTableViewUpdate = PassthroughSubject() - + @Published public var groupedAccessibilityLabel = "" let timestampUpdatePublisher = Timer.publish(every: 1.0, on: .main, in: .common) @@ -136,9 +134,23 @@ extension StatusView { init() { // isReblogEnabled - $locked - .map { !$0 } - .assign(to: &$isReblogEnabled) + Publishers.CombineLatest( + $visibility, + $isMyself + ) + .map { visibility, isMyself in + if isMyself { + return true + } + + switch visibility { + case .public, .unlisted: + return true + case .private, .direct, ._other: + return false + } + } + .assign(to: &$isReblogEnabled) // isContentSensitive $spoilerContent .map { $0 != nil } @@ -292,7 +304,7 @@ extension StatusView.ViewModel { statusView.setSpoilerOverlayViewHidden(isHidden: isContentReveal) - self.isNeedsTableViewUpdate.send() + self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): isContentReveal: \(isContentReveal)") } .store(in: &disposeBag) // visibility diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index 00415277a..ff0e13c6a 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -571,7 +571,6 @@ extension StatusView.Style { statusView.headerContainerView.removeFromSuperview() statusView.authorContainerView.removeFromSuperview() statusView.statusVisibilityView.removeFromSuperview() - statusView.spoilerBannerView.removeFromSuperview() } func notificationQuote(statusView: StatusView) { @@ -580,7 +579,6 @@ extension StatusView.Style { statusView.contentContainer.layoutMargins.bottom = 16 // fix contentText align to edge issue statusView.menuButton.removeFromSuperview() statusView.statusVisibilityView.removeFromSuperview() - statusView.spoilerBannerView.removeFromSuperview() statusView.actionToolbarContainer.removeFromSuperview() } diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift index 5552be633..9b5aa5a00 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift @@ -22,7 +22,6 @@ public final class SpoilerBannerView: UIView { let label = UILabel() label.textColor = Asset.Colors.Label.primary.color label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) - label.numberOfLines = 0 label.text = "Hide" // TODO: i18n return label }() @@ -75,8 +74,8 @@ extension SpoilerBannerView { ]) labelContainer.addArrangedSubview(label) + labelContainer.addArrangedSubview(UIView()) labelContainer.addArrangedSubview(hideLabel) - label.setContentHuggingPriority(.defaultLow, for: .horizontal) hideLabel.setContentHuggingPriority(.required - 1, for: .horizontal) hideLabel.setContentCompressionResistancePriority(.required - 1, for: .horizontal) From 0bc128ba795675370dc113515bc7391ba00f702b Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 11 Feb 2022 20:21:28 +0800 Subject: [PATCH 184/374] feat: add content warning toggle button --- .../Provider/DataSourceFacade+Status.swift | 30 ++--- ...er+NotificationTableViewCellDelegate.swift | 39 +++++- ...Provider+StatusTableViewCellDelegate.swift | 69 ++++++---- .../NotificationTableViewCellDelegate.swift | 10 -- .../NotificationTimelineViewController.swift | 44 +------ .../StatusTableViewCellDelegate.swift | 10 +- .../Arrow/repeat.small.imageset/Contents.json | 15 +++ .../repeat.small.imageset/repeat.small.pdf | 121 ++++++++++++++++++ .../MastodonAsset/Generated/Assets.swift | 1 + .../MediaGridContainerView+ViewModel.swift | 2 +- .../Container/MediaGridContainerView.swift | 97 +++++++------- .../View/Content/NotificationView.swift | 28 ++-- .../View/Content/StatusView+ViewModel.swift | 17 ++- .../MastodonUI/View/Content/StatusView.swift | 75 ++++++++--- 14 files changed, 374 insertions(+), 184 deletions(-) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.small.imageset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.small.imageset/repeat.small.pdf diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift index 41c967b83..a98d34f34 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift @@ -283,23 +283,23 @@ extension DataSourceFacade { guard let _status = status.object(in: dependency.context.managedObjectContext) else { return } let status = _status.reblog ?? _status - let isToggled = status.isContentSensitiveToggled || status.isMediaSensitiveToggled - - status.update(isContentSensitiveToggled: !isToggled) - status.update(isMediaSensitiveToggled: !isToggled) + let allToggled = status.isContentSensitiveToggled && status.isMediaSensitiveToggled + + status.update(isContentSensitiveToggled: !allToggled) + status.update(isMediaSensitiveToggled: !allToggled) } } - static func responseToToggleMediaSensitiveAction( - dependency: NeedsDependency, - status: ManagedObjectRecord - ) async throws { - try await dependency.context.managedObjectContext.perform { - guard let _status = status.object(in: dependency.context.managedObjectContext) else { return } - let status = _status.reblog ?? _status - - status.update(isMediaSensitiveToggled: !status.isMediaSensitiveToggled) - } - } +// static func responseToToggleMediaSensitiveAction( +// dependency: NeedsDependency, +// status: ManagedObjectRecord +// ) async throws { +// try await dependency.context.managedObjectContext.perform { +// guard let _status = status.object(in: dependency.context.managedObjectContext) else { return } +// let status = _status.reblog ?? _status +// +// status.update(isMediaSensitiveToggled: !status.isMediaSensitiveToggled) +// } +// } } diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift index 56b5cf2bd..f062f01d8 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift @@ -222,12 +222,11 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider { ) } - - func tableViewCell( - _ cell: UITableViewCell, notificationView: NotificationView, + _ cell: UITableViewCell, + notificationView: NotificationView, statusView: StatusView, - spoilerBannerViewDidPressed bannerView: SpoilerBannerView + spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView ) { Task { let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) @@ -256,6 +255,38 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider { } +// func tableViewCell( +// _ cell: UITableViewCell, notificationView: NotificationView, +// statusView: StatusView, +// spoilerBannerViewDidPressed bannerView: SpoilerBannerView +// ) { +// Task { +// let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) +// guard let item = await item(from: source) else { +// assertionFailure() +// return +// } +// guard case let .notification(notification) = item else { +// assertionFailure("only works for notification item") +// return +// } +// let _status: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { +// guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } +// guard let status = notification.status else { return nil } +// return .init(objectID: status.objectID) +// } +// guard let status = _status else { +// assertionFailure() +// return +// } +// try await DataSourceFacade.responseToToggleSensitiveAction( +// dependency: self, +// status: status +// ) +// } // end Task +// } + + func tableViewCell( _ cell: UITableViewCell, notificationView: NotificationView, diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift index da15b66dd..a7afca8ce 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift @@ -126,7 +126,7 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider & MediaPrev } guard !needsToggleMediaSensitive else { - try await DataSourceFacade.responseToToggleMediaSensitiveAction( + try await DataSourceFacade.responseToToggleSensitiveAction( dependency: self, status: status ) @@ -362,6 +362,29 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { // MARK: - content warning extension StatusTableViewCellDelegate where Self: DataSourceProvider { + + func tableViewCell( + _ cell: UITableViewCell, + statusView: StatusView, + contentSensitiveeToggleButtonDidPressed button: UIButton + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .status(status) = item else { + assertionFailure("only works for status data provider") + return + } + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: status + ) + } // end Task + } + func tableViewCell( _ cell: UITableViewCell, statusView: StatusView, @@ -384,27 +407,27 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { } // end Task } - func tableViewCell( - _ cell: UITableViewCell, - statusView: StatusView, - spoilerBannerViewDidPressed bannerView: SpoilerBannerView - ) { - Task { - let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) - guard let item = await item(from: source) else { - assertionFailure() - return - } - guard case let .status(status) = item else { - assertionFailure("only works for status data provider") - return - } - try await DataSourceFacade.responseToToggleSensitiveAction( - dependency: self, - status: status - ) - } // end Task - } +// func tableViewCell( +// _ cell: UITableViewCell, +// statusView: StatusView, +// spoilerBannerViewDidPressed bannerView: SpoilerBannerView +// ) { +// Task { +// let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) +// guard let item = await item(from: source) else { +// assertionFailure() +// return +// } +// guard case let .status(status) = item else { +// assertionFailure("only works for status data provider") +// return +// } +// try await DataSourceFacade.responseToToggleSensitiveAction( +// dependency: self, +// status: status +// ) +// } // end Task +// } func tableViewCell( _ cell: UITableViewCell, @@ -422,7 +445,7 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { assertionFailure("only works for status data provider") return } - try await DataSourceFacade.responseToToggleMediaSensitiveAction( + try await DataSourceFacade.responseToToggleSensitiveAction( dependency: self, status: status ) diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift index 31370f745..07bc5ff97 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift @@ -27,12 +27,10 @@ protocol NotificationTableViewCellDelegate: AnyObject, AutoGenerateProtocolDeleg func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) - func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) - func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, accessibilityActivate: Void) // sourcery:end } @@ -57,10 +55,6 @@ extension NotificationViewDelegate where Self: NotificationViewContainerTableVie delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, spoilerOverlayViewDidPressed: overlayView) } - func notificationView(_ notificationView: NotificationView, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) { - delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, spoilerBannerViewDidPressed: bannerView) - } - func notificationView(_ notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) { delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action) } @@ -77,10 +71,6 @@ extension NotificationViewDelegate where Self: NotificationViewContainerTableVie delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, spoilerOverlayViewDidPressed: overlayView) } - func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) { - delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, spoilerBannerViewDidPressed: bannerView) - } - func notificationView(_ notificationView: NotificationView, accessibilityActivate: Void) { delegate?.tableViewCell(self, notificationView: notificationView, accessibilityActivate: accessibilityActivate) } diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift index 44d165bad..301b2f377 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift @@ -175,46 +175,4 @@ extension NotificationTimelineViewController: UITableViewDelegate, AutoGenerateT } // MARK: - NotificationTableViewCellDelegate -extension NotificationTimelineViewController: NotificationTableViewCellDelegate { - - func tableViewCell( - _ cell: UITableViewCell, - notificationView: NotificationView, - statusView: StatusView, - spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView - ) { - guard let diffableDataSource = viewModel.diffableDataSource else { return } - guard let indexPath = tableView.indexPath(for: cell) else { return } - guard let reloadItem = diffableDataSource.itemIdentifier(for: indexPath) else { return } - - Task { - let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) - guard let item = await item(from: source) else { - assertionFailure() - return - } - guard case let .notification(notification) = item else { - assertionFailure("only works for notification item") - return - } - let _status: ManagedObjectRecord? = try await self.context.managedObjectContext.perform { - guard let notification = notification.object(in: self.context.managedObjectContext) else { return nil } - guard let status = notification.status else { return nil } - return .init(objectID: status.objectID) - } - guard let status = _status else { - assertionFailure() - return - } - try await DataSourceFacade.responseToToggleSensitiveAction( - dependency: self, - status: status - ) - -// var snapshot = diffableDataSource.snapshot() -// snapshot.reloadItems([reloadItem]) -// diffableDataSource.apply(snapshot, animatingDifferences: false) - } // end Task - } - -} +extension NotificationTimelineViewController: NotificationTableViewCellDelegate { } diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift index 0f879de0f..b4dbef431 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCellDelegate.swift @@ -25,6 +25,7 @@ protocol StatusTableViewCellDelegate: AnyObject, AutoGenerateProtocolDelegate { // sourcery:inline:StatusTableViewCellDelegate.AutoGenerateProtocolDelegate func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, headerDidPressed header: UIView) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) + func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, contentSensitiveeToggleButtonDidPressed button: UIButton) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, pollTableView tableView: UITableView, didSelectRowAt indexPath: IndexPath) @@ -32,7 +33,6 @@ protocol StatusTableViewCellDelegate: AnyObject, AutoGenerateProtocolDelegate { func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) - func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) func tableViewCell(_ cell: UITableViewCell, statusView: StatusView, accessibilityActivate: Void) // sourcery:end @@ -51,6 +51,10 @@ extension StatusViewDelegate where Self: StatusViewContainerTableViewCell { delegate?.tableViewCell(self, statusView: statusView, authorAvatarButtonDidPressed: button) } + func statusView(_ statusView: StatusView, contentSensitiveeToggleButtonDidPressed button: UIButton) { + delegate?.tableViewCell(self, statusView: statusView, contentSensitiveeToggleButtonDidPressed: button) + } + func statusView(_ statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { delegate?.tableViewCell(self, statusView: statusView, metaText: metaText, didSelectMeta: meta) } @@ -79,10 +83,6 @@ extension StatusViewDelegate where Self: StatusViewContainerTableViewCell { delegate?.tableViewCell(self, statusView: statusView, spoilerOverlayViewDidPressed: overlayView) } - func statusView(_ statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) { - delegate?.tableViewCell(self, statusView: statusView, spoilerBannerViewDidPressed: bannerView) - } - func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) { delegate?.tableViewCell(self, statusView: statusView, mediaGridContainerView: mediaGridContainerView, mediaSensitiveButtonDidPressed: button) } diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.small.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.small.imageset/Contents.json new file mode 100644 index 000000000..61b0d4b44 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.small.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "repeat.small.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.small.imageset/repeat.small.pdf b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.small.imageset/repeat.small.pdf new file mode 100644 index 000000000..be8467d2c --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Arrow/repeat.small.imageset/repeat.small.pdf @@ -0,0 +1,121 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 1.997589 2.358398 cm +0.000000 0.000000 0.000000 scn +13.752419 11.631601 m +13.931720 11.631601 14.096325 11.568684 14.225361 11.463720 c +15.313271 10.549767 16.004837 9.176446 16.004837 7.641602 c +16.004837 4.952847 13.882531 2.759784 11.221727 2.646221 c +11.004837 2.641602 l +6.563000 2.641602 l +7.782749 1.421932 l +8.049015 1.155665 8.073221 0.739002 7.855367 0.445391 c +7.782749 0.361271 l +7.516482 0.095004 7.099819 0.070798 6.806207 0.288652 c +6.722089 0.361271 l +4.222089 2.861272 l +3.955822 3.127539 3.931616 3.544202 4.149471 3.837813 c +4.222089 3.921931 l +6.722089 6.421931 l +7.014983 6.714825 7.489855 6.714825 7.782749 6.421931 c +8.049015 6.155664 8.073221 5.739001 7.855367 5.445390 c +7.782749 5.361272 l +6.563000 4.141602 l +11.004837 4.141602 l +12.873401 4.141602 14.399964 5.605879 14.499659 7.449566 c +14.504837 7.641602 l +14.504837 8.722754 14.014629 9.689410 13.244354 10.331430 c +13.095952 10.466222 13.002419 10.662989 13.002419 10.881601 c +13.002419 11.295815 13.338205 11.631601 13.752419 11.631601 c +h +8.222090 14.921932 m +8.488357 15.188198 8.905020 15.212404 9.198631 14.994550 c +9.282749 14.921932 l +11.782749 12.421932 l +11.855368 12.337813 l +12.049016 12.076825 12.051406 11.718611 11.862539 11.455222 c +11.782749 11.361271 l +9.282749 8.861272 l +9.198631 8.788653 l +8.937643 8.595005 8.579429 8.592613 8.316040 8.781481 c +8.222090 8.861272 l +8.149471 8.945390 l +7.955823 9.206378 7.953431 9.564592 8.142298 9.827981 c +8.222090 9.921932 l +9.441000 11.141602 l +5.000000 11.141602 l +3.131437 11.141602 1.604874 9.677324 1.505179 7.833637 c +1.500000 7.641602 l +1.500000 6.558465 1.992010 5.590244 2.764729 4.948239 c +2.910926 4.812664 3.002419 4.617817 3.002419 4.401602 c +3.002419 3.987389 2.666633 3.651602 2.252419 3.651602 c +2.061133 3.651602 1.886572 3.723213 1.754084 3.841089 c +0.681080 4.754352 0.000000 6.118439 0.000000 7.641602 c +0.000000 10.330357 2.122307 12.523419 4.783111 12.636982 c +5.000000 12.641602 l +9.441000 12.641602 l +8.222090 13.861271 l +8.149471 13.945390 l +7.931617 14.239001 7.955823 14.655665 8.222090 14.921932 c +h +f +n +Q + +endstream +endobj + +3 0 obj + 2140 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 20.000000 20.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000002230 00000 n +0000002253 00000 n +0000002426 00000 n +0000002500 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +2559 +%%EOF \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift index 5e7ae79c3..23aa940da 100644 --- a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift +++ b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift @@ -23,6 +23,7 @@ public typealias AssetImageTypeAlias = ImageAsset.Image public enum Asset { public enum Arrow { public static let `repeat` = ImageAsset(name: "Arrow/repeat") + public static let repeatSmall = ImageAsset(name: "Arrow/repeat.small") } public enum Asset { public static let email = ImageAsset(name: "Asset/email") diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift index 92c5972b0..c48ed3ca8 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView+ViewModel.swift @@ -21,7 +21,7 @@ extension MediaGridContainerView.ViewModel { func bind(view: MediaGridContainerView) { $isSensitiveToggleButtonDisplay .sink { isDisplay in - view.sensitiveToggleButtonBlurVisualEffectView.isHidden = !isDisplay + // view.sensitiveToggleButtonBlurVisualEffectView.isHidden = !isDisplay } .store(in: &disposeBag) } diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift index a461dd9c6..41d97c0f2 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift @@ -49,21 +49,21 @@ public final class MediaGridContainerView: UIView { }() - let sensitiveToggleButtonBlurVisualEffectView: UIVisualEffectView = { - let visualEffectView = UIVisualEffectView(effect: ContentWarningOverlayView.blurVisualEffect) - visualEffectView.layer.masksToBounds = true - visualEffectView.layer.cornerRadius = MediaGridContainerView.sensitiveToggleButtonSize.width / 2 - visualEffectView.layer.cornerCurve = .continuous - return visualEffectView - }() - let sensitiveToggleButtonVibrancyVisualEffectView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: ContentWarningOverlayView.blurVisualEffect)) - let sensitiveToggleButton: HitTestExpandedButton = { - let button = HitTestExpandedButton(type: .system) - button.contentEdgeInsets = UIEdgeInsets(top: 4, left: 4, bottom: 4, right: 4) - button.imageView?.contentMode = .scaleAspectFit - button.setImage(UIImage(systemName: "eye.slash.fill"), for: .normal) - return button - }() +// let sensitiveToggleButtonBlurVisualEffectView: UIVisualEffectView = { +// let visualEffectView = UIVisualEffectView(effect: ContentWarningOverlayView.blurVisualEffect) +// visualEffectView.layer.masksToBounds = true +// visualEffectView.layer.cornerRadius = MediaGridContainerView.sensitiveToggleButtonSize.width / 2 +// visualEffectView.layer.cornerCurve = .continuous +// return visualEffectView +// }() +// let sensitiveToggleButtonVibrancyVisualEffectView = UIVisualEffectView(effect: UIVibrancyEffect(blurEffect: ContentWarningOverlayView.blurVisualEffect)) +// let sensitiveToggleButton: HitTestExpandedButton = { +// let button = HitTestExpandedButton(type: .system) +// button.contentEdgeInsets = UIEdgeInsets(top: 4, left: 4, bottom: 4, right: 4) +// button.imageView?.contentMode = .scaleAspectFit +// button.setImage(UIImage(systemName: "eye.slash.fill"), for: .normal) +// return button +// }() public override init(frame: CGRect) { super.init(frame: frame) @@ -79,7 +79,7 @@ public final class MediaGridContainerView: UIView { extension MediaGridContainerView { private func _init() { - sensitiveToggleButton.addTarget(self, action: #selector(MediaGridContainerView.sensitiveToggleButtonDidPressed(_:)), for: .touchUpInside) +// sensitiveToggleButton.addTarget(self, action: #selector(MediaGridContainerView.sensitiveToggleButtonDidPressed(_:)), for: .touchUpInside) } } @@ -105,8 +105,8 @@ extension MediaGridContainerView { let mediaView = _mediaViews[0] layout.layout(in: self, mediaView: mediaView) - layoutSensitiveToggleButton() - bringSubviewToFront(sensitiveToggleButtonBlurVisualEffectView) +// layoutSensitiveToggleButton() +// bringSubviewToFront(sensitiveToggleButtonBlurVisualEffectView) return mediaView } @@ -117,8 +117,8 @@ extension MediaGridContainerView { let mediaViews = Array(_mediaViews[0.. Date: Fri, 11 Feb 2022 20:26:12 +0800 Subject: [PATCH 185/374] chore: update version to 1.3.0 (96) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 4c3c40ead..1c2f9cec7 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 95 + 96 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 2c330a14d..fa1a02595 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4624,7 +4624,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4653,7 +4653,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4761,11 +4761,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 95; + DYLIB_CURRENT_VERSION = 96; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4792,11 +4792,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 95; + DYLIB_CURRENT_VERSION = 96; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4821,7 +4821,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4846,7 +4846,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4871,7 +4871,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4896,7 +4896,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4921,7 +4921,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4945,7 +4945,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 95; + CURRENT_PROJECT_VERSION = 96; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 22741ed56..7e7b5befb 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 28 + 33 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 30 + 32 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 29 + 31 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 88a946a87..e86a4833e 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 95 + 96 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 4ba8a91a6..5dbe69517 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 95 + 96 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 4c3c40ead..1c2f9cec7 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 95 + 96 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 4c3c40ead..1c2f9cec7 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 95 + 96 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 937246cb9..806534388 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 95 + 96 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 744f64451..41f25630c 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 95 + 96 NSExtension NSExtensionAttributes From 39596d8d840b6a223b303ae7ff8c526cba822e10 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:03:51 +0100 Subject: [PATCH 186/374] New translations app.json (Thai) --- .../StringsConvertor/input/th_TH/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 07f15ee20..29209f2c3 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?", - "delete": "ลบ" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "ล้างแคช", @@ -140,7 +140,8 @@ "unreblog": "เลิกทำการดัน", "favorite": "ชื่นชอบ", "unfavorite": "เลิกชื่นชอบ", - "menu": "เมนู" + "menu": "เมนู", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "แฮชแท็ก", "email": "อีเมล", "emoji": "อีโมจิ" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "โพสต์", "replies": "การตอบกลับ", - "media": "สื่อ" + "posts_and_replies": "Posts and Replies", + "media": "สื่อ", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "เลิกซ่อนบัญชี", "message": "ยืนยันเพื่อเลิกซ่อน %s" }, - "confirm_unblock_usre": { - "title": "เลิกปิดกั้นบัญชี", - "message": "ยืนยันเพื่อเลิกปิดกั้น %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "ทุกอย่าง", "Mentions": "การกล่าวถึง" }, - "user_followed_you": "%s ได้ติดตามคุณ", - "user_favorited your post": "%s ได้ชื่นชอบโพสต์ของคุณ", - "user_reblogged_your_post": "%s ได้ดันโพสต์ของคุณ", - "user_mentioned_you": "%s ได้กล่าวถึงคุณ", - "user_requested_to_follow_you": "%s ได้ขอติดตามคุณ", - "user_your_poll_has_ended": "%s โพลของคุณได้สิ้นสุดแล้ว", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "แสดงทุกอย่าง", "show_mentions": "แสดงการกล่าวถึง" @@ -496,6 +515,13 @@ "light": "สว่างเสมอ", "dark": "มืดเสมอ" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "การแจ้งเตือน", "favorites": "ชื่นชอบโพสต์ของฉัน", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "รายงาน %s", "step1": "ขั้นตอนที่ 1 จาก 2", "step2": "ขั้นตอนที่ 2 จาก 2", "content1": "มีโพสต์อื่นใดที่คุณต้องการเพิ่มไปยังรายงานหรือไม่?", "content2": "มีสิ่งใดที่ผู้ควบคุมควรทราบเกี่ยวกับรายงานนี้หรือไม่?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "ส่งรายงาน", "skip_to_send": "ส่งโดยไม่มีความคิดเห็น", - "text_placeholder": "พิมพ์หรือวางความคิดเห็นเพิ่มเติม" + "text_placeholder": "พิมพ์หรือวางความคิดเห็นเพิ่มเติม", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "แตะสองครั้งเพื่อปิดตัวช่วยสร้างนี้" } } -} +} \ No newline at end of file From 0c8c793b69903785bdb90478457a67310c7a0634 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:03:52 +0100 Subject: [PATCH 187/374] New translations app.json (Russian) --- .../StringsConvertor/input/ru_RU/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json index 253d6f012..fcebb9276 100644 --- a/Localization/StringsConvertor/input/ru_RU/app.json +++ b/Localization/StringsConvertor/input/ru_RU/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Вы уверены, что хотите удалить этот пост?", - "delete": "Удалить" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Очистка кэша", @@ -140,7 +140,8 @@ "unreblog": "Убрать продвижение", "favorite": "Добавить в избранное", "unfavorite": "Убрать из избранного", - "menu": "Меню" + "menu": "Меню", + "hide": "Hide" }, "tag": { "url": "Ссылка", @@ -149,6 +150,12 @@ "hashtag": "Хэштег", "email": "E-mail", "emoji": "Эмодзи" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Посты", "replies": "Ответы", - "media": "Медиа" + "posts_and_replies": "Posts and Replies", + "media": "Медиа", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Убрать из игнорируемых", "message": "Убрать %s из игнорируемых?" }, - "confirm_unblock_usre": { - "title": "Разблокировать", - "message": "Убрать %s из списка блокировки?" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Все", "Mentions": "Упоминания" }, - "user_followed_you": "%s подписался (-ась)", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s упомянул вас", - "user_requested_to_follow_you": "%s запрашивает подписку", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Показать все", "show_mentions": "Показать упоминания" @@ -496,6 +515,13 @@ "light": "Светлая тема", "dark": "Тёмная тема" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Уведомления", "favorites": "Добавляет мой пост в избранное", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Пожаловаться на %s", "step1": "Шаг 1 из 2", "step2": "Шаг 2 из 2", "content1": "Есть ли другие сообщения, которые вы хотите добавить в отчёт?", "content2": "Есть ли что-то, что модераторы должны знать об этом сообщении?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Пожаловаться", "skip_to_send": "Отправить без комментария", - "text_placeholder": "Дополнительные комментарии" + "text_placeholder": "Дополнительные комментарии", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From a174d63d3c7fa88d2197a2431d86903e1577f122 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:03:53 +0100 Subject: [PATCH 188/374] New translations app.json (Kurmanji (Kurdish)) --- .../StringsConvertor/input/kmr_TR/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index ab614b8c5..fd2bab037 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Ma tu dixwazî vê şandiyê jê bibî?", - "delete": "Jê bibe" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Pêşbîrê pak bike", @@ -140,7 +140,8 @@ "unreblog": "Ji nû ve nivîsandinê vegere", "favorite": "Bijarte", "unfavorite": "Nebijarte", - "menu": "Kulîn" + "menu": "Kulîn", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "E-name", "emoji": "Emojî" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Şandî", "replies": "Bersiv", - "media": "Medya" + "posts_and_replies": "Posts and Replies", + "media": "Medya", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Ajimêrê bêdeng neke", "message": "Ji bo vekirina bêdengkirinê bipejirîne %s" }, - "confirm_unblock_usre": { - "title": "Astengiyê li ser ajimêr rake", - "message": "Ji bo rakirina astengkirinê bipejirîne %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Her tişt", "Mentions": "Qalkirin" }, - "user_followed_you": "%s te şopand", - "user_favorited your post": "%s şandiya te hez kir", - "user_reblogged_your_post": "%s posta we ji nû ve tomar kir", - "user_mentioned_you": "%s qale te kir", - "user_requested_to_follow_you": "%s dixwazê te bişopîne", - "user_your_poll_has_ended": "Rapirsîya te qediya", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Her tiştî nîşan bide", "show_mentions": "Qalkirinan nîşan bike" @@ -496,6 +515,13 @@ "light": "Her dem ronî", "dark": "Her dem tarî" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Agahdarî", "favorites": "Şandiyên min hez kir", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "%s ragihîne", "step1": "Gav 1 ji 2", "step2": "Gav 2 ji 2", "content1": "Şandiyên din hene ku tu dixwazî tevlî ragihandinê bikî?", "content2": "Derbarê vê ragihandinê de tiştek heye ku divê çavdêr bizanin?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Ragihandinê bişîne", "skip_to_send": "Bêyî şirove bişîne", - "text_placeholder": "Şiroveyên daxwazkirê binivîsine an jî pê ve bike" + "text_placeholder": "Şiroveyên daxwazkirê binivîsine an jî pê ve bike", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Du caran bitikîne da ku çarçoveyahilpekok ji holê rakî" } } -} +} \ No newline at end of file From b4164d01a8c4ae320801ce7948922a8434f2ef12 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:03:54 +0100 Subject: [PATCH 189/374] New translations app.json (Scottish Gaelic) --- .../StringsConvertor/input/gd_GB/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json index d7fcaa28f..bacf1bf20 100644 --- a/Localization/StringsConvertor/input/gd_GB/app.json +++ b/Localization/StringsConvertor/input/gd_GB/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", - "delete": "Sguab às" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Falamhaich an tasgadan", @@ -140,7 +140,8 @@ "unreblog": "Na brosnaich tuilleadh", "favorite": "Cuir ris na h-annsachdan", "unfavorite": "Thoir air falbh o na h-annsachdan", - "menu": "Clàr-taice" + "menu": "Clàr-taice", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Taga hais", "email": "Post-d", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Postaichean", "replies": "Freagairtean", - "media": "Meadhanan" + "posts_and_replies": "Posts and Replies", + "media": "Meadhanan", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Dì-mhùch an cunntas", "message": "Dearbh dì-mhùchadh %s" }, - "confirm_unblock_usre": { - "title": "Dì-bhac an cunntas", - "message": "Dearbh dì-bhacadh %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "A h-uile rud", "Mentions": "Iomraidhean" }, - "user_followed_you": "Tha %s a’ leantainn ort a-nis", - "user_favorited your post": "Is annsa le %s am post agad", - "user_reblogged_your_post": "Bhrosnaich %s am post agad", - "user_mentioned_you": "Thug %s iomradh ort", - "user_requested_to_follow_you": "Dh’iarr %s leantainn ort", - "user_your_poll_has_ended": "Crìoch cunntais-bheachd aig %s", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Seall a h-uile càil", "show_mentions": "Seall na h-iomraidhean" @@ -496,6 +515,13 @@ "light": "Soilleir an-còmhnaidh", "dark": "Dorcha an-còmhnaidh" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Brathan", "favorites": "Nuair as annsa leotha am post agam", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Dèan gearan mu %s", "step1": "Ceum 1 à 2", "step2": "Ceum 2 à 2", "content1": "A bheil post sam bith eile ann a bu mhiann leat cur ris a’ ghearan?", "content2": "A bheil rud sam bith ann a bu mhiann leat innse dha na maoir mun ghearan seo?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Cuir an gearan", "skip_to_send": "Cuir gun bheachd ris", - "text_placeholder": "Sgrìobh no cuir ann beachdan a bharrachd" + "text_placeholder": "Sgrìobh no cuir ann beachdan a bharrachd", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Thoir gnogag dhùbailte a’ leigeil seachad an draoidh seo" } } -} +} \ No newline at end of file From 7f48ae3a92db3f0a0d9c9813a51b69e9bdb65b1f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:03:56 +0100 Subject: [PATCH 190/374] New translations app.json (Welsh) --- .../StringsConvertor/input/cy_GB/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/cy_GB/app.json b/Localization/StringsConvertor/input/cy_GB/app.json index 0071f6f95..639bca4f3 100644 --- a/Localization/StringsConvertor/input/cy_GB/app.json +++ b/Localization/StringsConvertor/input/cy_GB/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From 54101e0303738587525d360c6584ed1d3918880f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:03:57 +0100 Subject: [PATCH 191/374] New translations app.json (Hindi) --- .../StringsConvertor/input/hi_IN/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/hi_IN/app.json b/Localization/StringsConvertor/input/hi_IN/app.json index 0071f6f95..639bca4f3 100644 --- a/Localization/StringsConvertor/input/hi_IN/app.json +++ b/Localization/StringsConvertor/input/hi_IN/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From 6b1a7429c9478574389ce72b1bc7e1657a6d7117 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:03:58 +0100 Subject: [PATCH 192/374] New translations app.json (Spanish, Argentina) --- .../StringsConvertor/input/es_AR/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json index 3eae1e0d5..3c2567d51 100644 --- a/Localization/StringsConvertor/input/es_AR/app.json +++ b/Localization/StringsConvertor/input/es_AR/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "¿Estás seguro que querés eliminar este mensaje?", - "delete": "Eliminar" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Limpiar caché", @@ -140,7 +140,8 @@ "unreblog": "Deshacer adhesión", "favorite": "Marcar como favorito", "unfavorite": "Dejar de marcar como favorito", - "menu": "Menú" + "menu": "Menú", + "hide": "Hide" }, "tag": { "url": "Dirección web", @@ -149,6 +150,12 @@ "hashtag": "Etiqueta", "email": "Correo electrónico", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Mensajes", "replies": "Respuestas", - "media": "Medios" + "posts_and_replies": "Posts and Replies", + "media": "Medios", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Dejar de silenciar cuenta", "message": "Confirmá para dejar de silenciar a %s" }, - "confirm_unblock_usre": { - "title": "Desbloquear cuenta", - "message": "Confirmá para desbloquear a %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Todo", "Mentions": "Menciones" }, - "user_followed_you": "%s te sigue", - "user_favorited your post": "%s marcó tu msj. como favorito", - "user_reblogged_your_post": "%s adhirió a tu mensaje", - "user_mentioned_you": "%s te mencionó", - "user_requested_to_follow_you": "%s solicitó seguirte", - "user_your_poll_has_ended": "%s, tu encuesta finalizó", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Mostrar todo", "show_mentions": "Mostrar menciones" @@ -496,6 +515,13 @@ "light": "Siempre clara", "dark": "Siempre oscura" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notificaciones", "favorites": "Marcó como favorito mi mensaje", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Denunciar a %s", "step1": "Paso 1 de 2", "step2": "Paso 2 de 2", "content1": "¿Hay otros mensajes que te gustaría agregar a la denuncia?", "content2": "¿Hay algo que los moderadores deban saber sobre esta denuncia?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Enviar denuncia", "skip_to_send": "Enviar sin comentarios", - "text_placeholder": "Escribí o pegá comentarios adicionales" + "text_placeholder": "Escribí o pegá comentarios adicionales", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Tocá dos veces para descartar este asistente" } } -} +} \ No newline at end of file From 705c80df89451b6137416c80a8079822ed39e85b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:03:59 +0100 Subject: [PATCH 193/374] New translations app.json (Indonesian) --- .../StringsConvertor/input/id_ID/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/id_ID/app.json b/Localization/StringsConvertor/input/id_ID/app.json index 1b26f43f3..db7f7750b 100644 --- a/Localization/StringsConvertor/input/id_ID/app.json +++ b/Localization/StringsConvertor/input/id_ID/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Apakah Anda yakin ingin menghapus postingan ini?", - "delete": "Hapus" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Bersihkan Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorit", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Tagar", "email": "Surel", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,15 +419,25 @@ "segmented_control": { "posts": "Postingan", "replies": "Balasan", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Berhenti Membisukan Akun", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { - "title": "Berhenti Memblokir Akun", + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", "message": "Confirm to unblock %s" } } @@ -472,12 +489,14 @@ "Everything": "Segalanya", "Mentions": "Sebutan" }, - "user_followed_you": "%s mengikuti Anda", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s menyebut Anda", - "user_requested_to_follow_you": "%s ingin mengikuti Anda", - "user_your_poll_has_ended": "%s Japat Anda telah berakhir", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Tampilkan Segalanya", "show_mentions": "Tampilkan Sebutan" @@ -496,6 +515,13 @@ "light": "Selalu Cerah", "dark": "Selalu Gelap" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifikasi", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Laporkan %s", "step1": "Langkah 1 dari 2", "step2": "Langkah 2 dari 2", "content1": "Apakah ada postingan lain yang ingin Anda tambahkan ke laporannya?", "content2": "Ada yang moderator harus tahu tentang laporan ini?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Kirim Laporan", "skip_to_send": "Kirim tanpa komentar", - "text_placeholder": "Ketik atau tempel komentar tambahan" + "text_placeholder": "Ketik atau tempel komentar tambahan", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From 9b54b6650825d8514e285a5cbdfbb42af28bd5cb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:01 +0100 Subject: [PATCH 194/374] New translations app.json (Portuguese, Brazilian) --- .../StringsConvertor/input/pt_BR/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/pt_BR/app.json b/Localization/StringsConvertor/input/pt_BR/app.json index 0071f6f95..639bca4f3 100644 --- a/Localization/StringsConvertor/input/pt_BR/app.json +++ b/Localization/StringsConvertor/input/pt_BR/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From f08c79ccd2afaa15136b86726b87cbabb14926d9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:02 +0100 Subject: [PATCH 195/374] New translations app.json (English) --- .../StringsConvertor/input/en_US/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/en_US/app.json b/Localization/StringsConvertor/input/en_US/app.json index 0071f6f95..639bca4f3 100644 --- a/Localization/StringsConvertor/input/en_US/app.json +++ b/Localization/StringsConvertor/input/en_US/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From aa317336e2783907028468fca61f23d31cc4befe Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:04 +0100 Subject: [PATCH 196/374] New translations app.json (Chinese Traditional) --- .../StringsConvertor/input/zh_TW/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/zh_TW/app.json b/Localization/StringsConvertor/input/zh_TW/app.json index 0071f6f95..639bca4f3 100644 --- a/Localization/StringsConvertor/input/zh_TW/app.json +++ b/Localization/StringsConvertor/input/zh_TW/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From ded116b30c19ae77cf369a05f46bbdef0316d82b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:05 +0100 Subject: [PATCH 197/374] New translations app.json (Chinese Simplified) --- .../StringsConvertor/input/zh_CN/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json index ee1bb819c..03e99c696 100644 --- a/Localization/StringsConvertor/input/zh_CN/app.json +++ b/Localization/StringsConvertor/input/zh_CN/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "确定要删除这条消息吗?", - "delete": "删除" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "清除缓存", @@ -140,7 +140,8 @@ "unreblog": "取消转发", "favorite": "喜欢", "unfavorite": "取消喜欢", - "menu": "菜单" + "menu": "菜单", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "标签", "email": "电子邮箱", "emoji": "表情" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "帖子", "replies": "回复", - "media": "媒体" + "posts_and_replies": "Posts and Replies", + "media": "媒体", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "取消静音账户", "message": "确认取消静音 %s" }, - "confirm_unblock_usre": { - "title": "解除屏蔽帐户", - "message": "确认取消屏蔽 %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "全部", "Mentions": "提及" }, - "user_followed_you": "%s 关注了你", - "user_favorited your post": "%s 喜欢了你的帖子", - "user_reblogged_your_post": "%s 转发了你的帖子", - "user_mentioned_you": "%s 提及了你", - "user_requested_to_follow_you": "%s 向你发送了关注请求", - "user_your_poll_has_ended": "%s 你的投票已经结束", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "显示全部", "show_mentions": "显示提及" @@ -496,6 +515,13 @@ "light": "浅色", "dark": "深色" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "通知", "favorites": "喜欢我的帖子", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "举报 %s", "step1": "步骤 1 / 2", "step2": "步骤 2 / 2", "content1": "是否有帖子需要举报?", "content2": "是否有关于此举报的详细描述信息?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "发送举报", "skip_to_send": "直接发送", - "text_placeholder": "输入或粘贴额外的注释" + "text_placeholder": "输入或粘贴额外的注释", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "双击关闭此向导" } } -} +} \ No newline at end of file From c5210c3bcaffa508b4c4a2f797479e5bdcdf5daa Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:06 +0100 Subject: [PATCH 198/374] New translations app.json (Swedish) --- .../StringsConvertor/input/sv_SE/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_SE/app.json b/Localization/StringsConvertor/input/sv_SE/app.json index 7c68c589a..6f9d1ced5 100644 --- a/Localization/StringsConvertor/input/sv_SE/app.json +++ b/Localization/StringsConvertor/input/sv_SE/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Radera" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Meny" + "menu": "Meny", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s följde dig", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s nämnde dig", - "user_requested_to_follow_you": "%s har begärt att följa dig", - "user_your_poll_has_ended": "%s Omröstningen har avslutats", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Rapportera %s", "step1": "Steg 1 av 2", "step2": "Steg 2 av 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From 2e93d92428f9d17e6de8fa5b43698b606208ebf6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:07 +0100 Subject: [PATCH 199/374] New translations app.json (Portuguese) --- .../StringsConvertor/input/pt_PT/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/pt_PT/app.json b/Localization/StringsConvertor/input/pt_PT/app.json index 0071f6f95..639bca4f3 100644 --- a/Localization/StringsConvertor/input/pt_PT/app.json +++ b/Localization/StringsConvertor/input/pt_PT/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From 10c0e6ee2f634bfc452aa4700ca7698bfa35bc17 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:09 +0100 Subject: [PATCH 200/374] New translations app.json (Dutch) --- .../StringsConvertor/input/nl_NL/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/nl_NL/app.json b/Localization/StringsConvertor/input/nl_NL/app.json index 5acc8f131..f57300316 100644 --- a/Localization/StringsConvertor/input/nl_NL/app.json +++ b/Localization/StringsConvertor/input/nl_NL/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Weet u zeker dat u dit bericht wilt verwijderen?", - "delete": "Verwijderen" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Cache-geheugen Wissen", @@ -140,7 +140,8 @@ "unreblog": "Delen ongedaan maken", "favorite": "Toevoegen aan Favorieten", "unfavorite": "Verwijderen uit Favorieten", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Berichten", "replies": "Reacties", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Account Negeren", "message": "Bevestig om %s te negeren" }, - "confirm_unblock_usre": { - "title": "Account niet langer negeren", - "message": "Bevestig om %s te deblokkeren" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Alles", "Mentions": "Vermeldingen" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Alles weergeven", "show_mentions": "Vermeldingen weergeven" @@ -496,6 +515,13 @@ "light": "Altijd Licht", "dark": "Altijd Donker" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Meldingen", "favorites": "Mijn bericht als favoriet toevoegt", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Rapporteer %s", "step1": "Stap 1 van 2", "step2": "Stap 2 van 2", "content1": "Zijn er nog meer berichten die u aan het rapport wilt toevoegen?", "content2": "Is er iets anders over dit rapport dat de moderators zouden moeten weten?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Stuur rapport", "skip_to_send": "Verstuur zonder opmerkingen", - "text_placeholder": "Schrijf of plak aanvullende opmerkingen" + "text_placeholder": "Schrijf of plak aanvullende opmerkingen", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From 447e6cecbdab425b4ebfb2d879d4565b30579679 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:10 +0100 Subject: [PATCH 201/374] New translations app.json (Korean) --- .../StringsConvertor/input/ko_KR/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/ko_KR/app.json b/Localization/StringsConvertor/input/ko_KR/app.json index 289a214d1..f8c908d1e 100644 --- a/Localization/StringsConvertor/input/ko_KR/app.json +++ b/Localization/StringsConvertor/input/ko_KR/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "정말로 이 게시물을 삭제하시겠습니까?", - "delete": "삭제" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "캐시 삭제", @@ -140,7 +140,8 @@ "unreblog": "리블로그 취소", "favorite": "즐겨찾기", "unfavorite": "즐겨찾기 해제", - "menu": "메뉴" + "menu": "메뉴", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "해시태그", "email": "이메일", "emoji": "에모지" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "게시물", "replies": "답글", - "media": "미디어" + "posts_and_replies": "Posts and Replies", + "media": "미디어", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "계정 뮤트 해제", "message": "%s 뮤트 해제 확인" }, - "confirm_unblock_usre": { - "title": "계정 차단 해제", - "message": "%s 차단 해제 확인" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "%s 신고하기", "step1": "1단계 (총 2단계)", "step2": "2단계 (총 2단계)", "content1": "신고에 추가하고 싶은 다른 게시물이 존재하나요?", "content2": "이 신고에 대해 중재자들이 알아야 할 것이 있나요?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "신고 전송", "skip_to_send": "추가설명 없이 보내기", - "text_placeholder": "추가 설명을 적거나 붙여넣으세요" + "text_placeholder": "추가 설명을 적거나 붙여넣으세요", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From a8d450d94ee7ea73ca793ad342db5d968c275707 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:11 +0100 Subject: [PATCH 202/374] New translations app.json (Japanese) --- .../StringsConvertor/input/ja_JP/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index c9d3262f7..86732559e 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "この投稿を消去しますか?", - "delete": "消去" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "キャッシュを消去", @@ -140,7 +140,8 @@ "unreblog": "ブーストを戻す", "favorite": "お気に入り", "unfavorite": "お気に入り登録を取り消す", - "menu": "メニュー" + "menu": "メニュー", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "ハッシュタグ", "email": "メール", "emoji": "絵文字" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "投稿", "replies": "リプライ", - "media": "メディア" + "posts_and_replies": "Posts and Replies", + "media": "メディア", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "ミュートを解除", "message": "%sをミュートしますか?" }, - "confirm_unblock_usre": { - "title": "ブロックを解除", - "message": "%sのブロックを解除しますか?" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "すべて", "Mentions": "メンション" }, - "user_followed_you": "%s にフォローされました", - "user_favorited your post": "%s がお気に入り登録しました", - "user_reblogged_your_post": "%s がブーストしました", - "user_mentioned_you": "%s に返信されました", - "user_requested_to_follow_you": "%s がフォローリクエストを送信しました", - "user_your_poll_has_ended": "%s 投票が終了しました", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "すべて見る", "show_mentions": "メンションを見る" @@ -496,6 +515,13 @@ "light": "ライト", "dark": "ダーク" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "通知", "favorites": "お気に入り登録", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "%sを報告", "step1": "ステップ 1/2", "step2": "ステップ 2/2", "content1": "他に報告したい投稿はありますか?", "content2": "この報告についてモデレーターに言いたいことはありますか?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "報告を送信", "skip_to_send": "コメントなしで送信", - "text_placeholder": "追加コメントを入力" + "text_placeholder": "追加コメントを入力", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "チュートリアルを閉じるには、ダブルタップしてください" } } -} +} \ No newline at end of file From b9f0db0a03f1241c6475a497221b0b5ae56aa5a7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:12 +0100 Subject: [PATCH 203/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 6758ca960..39403a119 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Ziur zaude bidalketa hau ezabatu nahi duzula?", - "delete": "Ezabatu" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Garbitu cache-a", @@ -140,7 +140,8 @@ "unreblog": "Desegin bultzada", "favorite": "Gogokoa", "unfavorite": "Kendu gogokoa", - "menu": "Menua" + "menu": "Menua", + "hide": "Hide" }, "tag": { "url": "URLa", @@ -149,6 +150,12 @@ "hashtag": "Traola", "email": "Eposta", "emoji": "Emojia" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Bidalketak", "replies": "Erantzunak", - "media": "Multimedia" + "posts_and_replies": "Posts and Replies", + "media": "Multimedia", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Desmututu kontua", "message": "Berretsi %s desmututzea" }, - "confirm_unblock_usre": { - "title": "Desblokeatu kontua", - "message": "Berretsi %s desblokeatzea" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Dena", "Mentions": "Aipamenak" }, - "user_followed_you": "%s(e)k jarraitu zaitu", - "user_favorited your post": "%s(e)k zure bidalk. gogoko du", - "user_reblogged_your_post": "%s(e)k zure bidalk. bultza du", - "user_mentioned_you": "%s(e)k aipatu zaitu", - "user_requested_to_follow_you": "%s(e)k jarraitu nahi zaitu", - "user_your_poll_has_ended": "%s Zure inkesta amaitu da", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Erakutsi guztia", "show_mentions": "Erakutsi aipamenak" @@ -496,6 +515,13 @@ "light": "Beti argia", "dark": "Beti iluna" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Jakinarazpenak", "favorites": "Nire bidalketa gogoko egitean", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Salatu %s", "step1": "1. urratsa 2tik", "step2": "2. urratsa 2tik", "content1": "Salaketan beste bidalketarik gehitu nahi duzu?", "content2": "Moderatzaileek besterik jakin behar dute salaketa honi buruz?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Bidali salaketa", "skip_to_send": "Bidali iruzkinik gabe", - "text_placeholder": "Idatzi edo itsatsi iruzkin gehigarriak" + "text_placeholder": "Idatzi edo itsatsi iruzkin gehigarriak", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Ukitu birritan morroi hau baztertzeko" } } -} +} \ No newline at end of file From 4b6964c79fd359b64815d3a3d18e0cb04a7637cb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:14 +0100 Subject: [PATCH 204/374] New translations app.json (German) --- .../StringsConvertor/input/de_DE/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json index c7cb3bf69..be1e47c62 100644 --- a/Localization/StringsConvertor/input/de_DE/app.json +++ b/Localization/StringsConvertor/input/de_DE/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", - "delete": "Löschen" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Zwischenspeicher leeren", @@ -140,7 +140,8 @@ "unreblog": "Nicht mehr teilen", "favorite": "Favorit", "unfavorite": "Aus Favoriten entfernen", - "menu": "Menü" + "menu": "Menü", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "E-Mail", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Beiträge", "replies": "Antworten", - "media": "Medien" + "posts_and_replies": "Posts and Replies", + "media": "Medien", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Ton einschalten", "message": "Bestätige um %s nicht mehr stummzuschalten" }, - "confirm_unblock_usre": { - "title": "Konto entsperren", - "message": "Bestätigen zum Entsperren von %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Alles", "Mentions": "Erwähnungen" }, - "user_followed_you": "%s folgte dir", - "user_favorited your post": "%s favorisierte deinen Beitrag", - "user_reblogged_your_post": "%s teilte deinen Beitrag", - "user_mentioned_you": "%s erwähnte dich", - "user_requested_to_follow_you": "%s beantragte dir zu folgen", - "user_your_poll_has_ended": "%s deine Umfrage ist beendet", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Alles anzeigen", "show_mentions": "Erwähnungen anzeigen" @@ -496,6 +515,13 @@ "light": "Immer hell", "dark": "Immer dunkel" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Benachrichtigungen", "favorites": "Meinen Beitrag favorisiert", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "%s melden", "step1": "Schritt 1 von 2", "step2": "Schritt 2 von 2", "content1": "Gibt es noch weitere Beiträge, die du der Meldung hinzufügen möchtest?", "content2": "Gibt es etwas, was die Moderatoren über diese Meldung wissen sollten?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Meldung abschicken", "skip_to_send": "Ohne Kommentar abschicken", - "text_placeholder": "Zusätzliche Kommentare eingeben oder einfügen" + "text_placeholder": "Zusätzliche Kommentare eingeben oder einfügen", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Doppeltippen, um diesen Assistenten zu schließen" } } -} +} \ No newline at end of file From a6d173b7b4f8ae5b1d6cb3a8743d38e67a6ac8c8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:15 +0100 Subject: [PATCH 205/374] New translations app.json (Danish) --- .../StringsConvertor/input/da_DK/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/da_DK/app.json b/Localization/StringsConvertor/input/da_DK/app.json index 0071f6f95..639bca4f3 100644 --- a/Localization/StringsConvertor/input/da_DK/app.json +++ b/Localization/StringsConvertor/input/da_DK/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From 0ff8d3393622c19b4f1608cfe9ff0311e21121b8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:16 +0100 Subject: [PATCH 206/374] New translations app.json (Catalan) --- .../StringsConvertor/input/ca_ES/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json index 3455205be..3a47b5519 100644 --- a/Localization/StringsConvertor/input/ca_ES/app.json +++ b/Localization/StringsConvertor/input/ca_ES/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Estàs segur que vols suprimir aquesta publicació?", - "delete": "Esborra" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Neteja la memòria cau", @@ -140,7 +140,8 @@ "unreblog": "Desfer l'impuls", "favorite": "Favorit", "unfavorite": "Desfer Favorit", - "menu": "Menú" + "menu": "Menú", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Etiqueta", "email": "Correu electrònic", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Publicacions", "replies": "Respostes", - "media": "Mèdia" + "posts_and_replies": "Posts and Replies", + "media": "Mèdia", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Desfer silenciar compte", "message": "Confirma deixar de silenciar a %s" }, - "confirm_unblock_usre": { - "title": "Desbloquejar Compte", - "message": "Confirma desbloquejar a %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Tot", "Mentions": "Mencions" }, - "user_followed_you": "%s et segueix", - "user_favorited your post": "%s ha afavorit el teu estat", - "user_reblogged_your_post": "%s ha impulsat el teu estat", - "user_mentioned_you": "%s t'ha esmentat", - "user_requested_to_follow_you": "%s ha sol·licitat seguir-te", - "user_your_poll_has_ended": "%s L'enquesta ha finalitzat", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Mostrar-ho tot", "show_mentions": "Mostrar Mencions" @@ -496,6 +515,13 @@ "light": "Sempre Clara", "dark": "Sempre Fosca" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notificacions", "favorites": "Ha afavorit el meu estat", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Informa sobre %s", "step1": "Pas 1 de 2", "step2": "Pas 2 de 2", "content1": "Hi ha alguna altre publicació que vulguis afegir a l'informe?", "content2": "Hi ha alguna cosa que els moderadors hagin de saber sobre aquest informe?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Envia Informe", "skip_to_send": "Envia sense comentaris", - "text_placeholder": "Escriu o enganxa comentaris addicionals" + "text_placeholder": "Escriu o enganxa comentaris addicionals", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Toca dues vegades per descartar l'assistent" } } -} +} \ No newline at end of file From 655d240078fe8a1b66c1b07cf213a0d52605c265 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:17 +0100 Subject: [PATCH 207/374] New translations app.json (Arabic) --- .../StringsConvertor/input/ar_SA/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index 5b722eba4..7e438eeda 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "هل أنت متأكد من رغبتك في حذف هذا المنشور؟", - "delete": "حذف" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "مَحو ذاكرة التخزين المؤقت", @@ -140,7 +140,8 @@ "unreblog": "التراجُع عن إعادة النشر", "favorite": "التفضيل", "unfavorite": "إزالة التفضيل", - "menu": "القائمة" + "menu": "القائمة", + "hide": "Hide" }, "tag": { "url": "عنوان URL", @@ -149,6 +150,12 @@ "hashtag": "وسم", "email": "بريد إلكتروني", "emoji": "رمز تعبيري" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "مَنشورات", "replies": "رُدُود", - "media": "وَسائِط" + "posts_and_replies": "Posts and Replies", + "media": "وَسائِط", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "رفع الكتم عن الحساب", "message": "أكِّد لرفع الكتمْ عن %s" }, - "confirm_unblock_usre": { - "title": "رفع الحظر عن الحساب", - "message": "أكِّد لرفع الحظر عن %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "كُلُّ شيء", "Mentions": "الإشارات" }, - "user_followed_you": "%s بَدَأ بِمُتابَعَتِك", - "user_favorited your post": "%s فَضَّلَ مَنشُورك", - "user_reblogged_your_post": "أعاد %s تدوين مَنشُورك", - "user_mentioned_you": "%s أشارَ إليك", - "user_requested_to_follow_you": "طَلَبَ %s مُتابَعتك", - "user_your_poll_has_ended": "%s اِنتهى اِستطلاعُكَ للرأي", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "إظهار كل شيء", "show_mentions": "إظهار الإشارات" @@ -496,6 +515,13 @@ "light": "مضيءٌ دائمًا", "dark": "مظلمٌ دائِمًا" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "الإشعارات", "favorites": "بِالإعْجاب بِمَنشوري", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "الإبلاغ عن %s", "step1": "الخطوة الأولى مِن أصل اثنتين", "step2": "الخطوة الثانية والأخيرة", "content1": "هل ترغب في إضافة أي منشورات أُخرى إلى البلاغ؟", "content2": "هل هناك أي شيء يجب أن يعرفه المُراقبين حول هذا البلاغ؟", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "إرسال البلاغ", "skip_to_send": "إرسال بدون تعليق", - "text_placeholder": "اكتب أو الصق تعليقات إضافيَّة" + "text_placeholder": "اكتب أو الصق تعليقات إضافيَّة", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "انقر نقرًا مزدوجًا لتجاهُل النافذة المنبثقة" } } -} +} \ No newline at end of file From 495d5ecd56955e13f0abcb1c227d281bba118c28 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:18 +0100 Subject: [PATCH 208/374] New translations app.json (Spanish) --- .../StringsConvertor/input/es_ES/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index b12c891fc..cb0d70b7b 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "¿Estás seguro de que deseas eliminar esta publicación?", - "delete": "Eliminar" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Limpiar Caché", @@ -140,7 +140,8 @@ "unreblog": "Deshacer reblogueo", "favorite": "Favorito", "unfavorite": "No favorito", - "menu": "Menú" + "menu": "Menú", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Etiqueta", "email": "E-mail", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Publicaciones", "replies": "Respuestas", - "media": "Multimedia" + "posts_and_replies": "Posts and Replies", + "media": "Multimedia", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Dejar de Silenciar Cuenta", "message": "Confirmar para dejar de silenciar a %s" }, - "confirm_unblock_usre": { - "title": "Desbloquear Cuenta", - "message": "Confirmar para desbloquear a %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Todo", "Mentions": "Menciones" }, - "user_followed_you": "%s te ha empezado a seguir", - "user_favorited your post": "%s marcó tu post como favorito", - "user_reblogged_your_post": "%s reblogueó tu publicación", - "user_mentioned_you": "%s te ha mencionado", - "user_requested_to_follow_you": "%s ha solicitado seguirte", - "user_your_poll_has_ended": "%s Tu encuesta ha terminado", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Mostrar Todo", "show_mentions": "Mostrar Menciones" @@ -496,6 +515,13 @@ "light": "Siempre Clara", "dark": "Siempre Oscura" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notificaciones", "favorites": "Marque como favorita mi publicación", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Reportar %s", "step1": "Paso 1 de 2", "step2": "Paso 2 de 2", "content1": "¿Hay alguna otra publicación que te gustaría añadir al reporte?", "content2": "¿Hay algo que los moderadores deberían saber acerca de este reporte?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Enviar Reporte", "skip_to_send": "Enviar sin comentarios", - "text_placeholder": "Escribe o pega comentarios adicionales" + "text_placeholder": "Escribe o pega comentarios adicionales", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Haz doble toque para descartar este asistente" } } -} +} \ No newline at end of file From a6cbd94cbcb5e225f5fd98881131d90c9e27da3c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:19 +0100 Subject: [PATCH 209/374] New translations app.json (Romanian) --- .../StringsConvertor/input/ro_RO/app.json | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/ro_RO/app.json b/Localization/StringsConvertor/input/ro_RO/app.json index 35df15656..7a5dc95d5 100644 --- a/Localization/StringsConvertor/input/ro_RO/app.json +++ b/Localization/StringsConvertor/input/ro_RO/app.json @@ -45,8 +45,8 @@ "message": "Please enable the photo library access permission to save the photo." }, "delete_post": { - "title": "Are you sure you want to delete this post?", - "delete": "Delete" + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Email", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Replies", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Everything", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Send Report", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From 7a5c41c8bbb551447387383a63cbeb4aa10158d0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:21 +0100 Subject: [PATCH 210/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 53 ++++++++++++++----- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index f798e7794..08f3eebbe 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Tebɣiḍ s tidet ad tekkseḍ tasuffeɣt-agi?", - "delete": "Kkes" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Clean Cache", @@ -140,7 +140,8 @@ "unreblog": "Undo reblog", "favorite": "Anurif", "unfavorite": "Unfavorite", - "menu": "Umuɣ" + "menu": "Umuɣ", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Ahacṭag", "email": "Imayl", "emoji": "Emuji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,14 +419,24 @@ "segmented_control": { "posts": "Posts", "replies": "Tiririyin", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Unmute Account", "message": "Confirm to unmute %s" }, - "confirm_unblock_usre": { + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { "title": "Unblock Account", "message": "Confirm to unblock %s" } @@ -472,12 +489,14 @@ "Everything": "Akk", "Mentions": "Mentions" }, - "user_followed_you": "%s followed you", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s reblogged your post", - "user_mentioned_you": "%s mentioned you", - "user_requested_to_follow_you": "%s requested to follow you", - "user_your_poll_has_ended": "%s Your poll has ended", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Show Everything", "show_mentions": "Show Mentions" @@ -496,6 +515,13 @@ "light": "Always Light", "dark": "Always Dark" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Tilɣa", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Azen aneqis", "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments" + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Double tap to dismiss this wizard" } } -} +} \ No newline at end of file From 73be5bc64d4cd14c4d1a85869e873cdde6c93e70 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:22 +0100 Subject: [PATCH 211/374] New translations app.json (French) --- .../StringsConvertor/input/fr_FR/app.json | 57 ++++++++++++++----- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index 675dd82e2..1594296d9 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Voulez-vous vraiment supprimer ce message ?", - "delete": "Supprimer" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Vider le cache", @@ -140,7 +140,8 @@ "unreblog": "Annuler le reblog", "favorite": "Favori", "unfavorite": "Retirer des favoris", - "menu": "Menu" + "menu": "Menu", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtag", "email": "Courriel", "emoji": "Émoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Publications", "replies": "Réponses", - "media": "Média" + "posts_and_replies": "Posts and Replies", + "media": "Média", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Ne plus mettre en sourdine ce compte", "message": "Êtes-vous sûr de vouloir désactiver la sourdine de %s" }, - "confirm_unblock_usre": { - "title": "Débloquer le compte", - "message": "Confirmer le déblocage de %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Tout", "Mentions": "Mentions" }, - "user_followed_you": "%s s’est abonné à vous", - "user_favorited your post": "%s a mis votre pouet en favori", - "user_reblogged_your_post": "%s a partagé votre publication", - "user_mentioned_you": "%s vous a mentionné", - "user_requested_to_follow_you": "%s a demandé à vous suivre", - "user_your_poll_has_ended": "%s votre sondage est terminé", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Tout Afficher", "show_mentions": "Afficher les mentions" @@ -496,6 +515,13 @@ "light": "Toujours claire", "dark": "Toujours sombre" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Notifications", "favorites": "Ajoute l’une de mes publications à ses favoris", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Signaler %s", "step1": "Étape 1 de 2", "step2": "Étape 2 de 2", "content1": "Y a-t-il d’autres messages que vous aimeriez ajouter au signalement?", "content2": "Y a-t-il quelque chose que les modérateurs devraient savoir sur ce rapport ?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Envoyer le rapport", "skip_to_send": "Envoyer sans commentaire", - "text_placeholder": "Tapez ou collez des informations supplémentaires" + "text_placeholder": "Tapez ou collez des informations supplémentaires", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Tapotez deux fois pour fermer cet assistant" } } -} +} \ No newline at end of file From bfa1030a6f8acce9417623cde17ab5b406e33c6d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 16:04:23 +0100 Subject: [PATCH 212/374] New translations app.json (Swedish, Finland) --- .../StringsConvertor/input/sv_FI/app.json | 61 ++++++++++++++----- 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index cfc44c123..161f2c860 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Haluatko varmasti poistaa tämän julkaisun?", - "delete": "Poista" + "message": "Are you sure you want to delete this post?" }, "clean_cache": { "title": "Puhdista välimuisti", @@ -140,7 +140,8 @@ "unreblog": "Peru edelleen jako", "favorite": "Favorite", "unfavorite": "Unfavorite", - "menu": "Valikko" + "menu": "Valikko", + "hide": "Hide" }, "tag": { "url": "URL", @@ -149,6 +150,12 @@ "hashtag": "Hashtagi", "email": "Sähköposti", "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." } }, "friendship": { @@ -194,8 +201,8 @@ "scene": { "welcome": { "slogan": "Sosiaalinen verkostoituminen\ntakaisin käsissäsi.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Kom igång", + "log_in": "Logga in" }, "server_picker": { "title": "Valitse palvelin,\nmikä tahansa palvelin.", @@ -412,16 +419,26 @@ "segmented_control": { "posts": "Julkaisut", "replies": "Vastaukset", - "media": "Media" + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" }, "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, "confirm_unmute_user": { "title": "Poista tilin mykistys", "message": "Vahvista, että haluat poistaa mykistyksen tililtä %s" }, - "confirm_unblock_usre": { - "title": "Poista tilin esto", - "message": "Vahvista, että haluat poistaa eston tililtä %s" + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" } } }, @@ -472,12 +489,14 @@ "Everything": "Kaikki", "Mentions": "Maininnat" }, - "user_followed_you": "%s seurasi sinua", - "user_favorited your post": "%s favorited your post", - "user_reblogged_your_post": "%s jakoi edelleen julkaisusi", - "user_mentioned_you": "%s mainitsi sinut", - "user_requested_to_follow_you": "%s pyysi saada seurata sinua", - "user_your_poll_has_ended": "%s Kyselysi on päättynyt", + "notification_description": { + "followed_you": "followd you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, "keyobard": { "show_everything": "Näytä kaikki", "show_mentions": "Näytä maininnat" @@ -496,6 +515,13 @@ "light": "Vaalea", "dark": "Tumma" }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, "notifications": { "title": "Ilmoitukset", "favorites": "Favorites my post", @@ -537,14 +563,17 @@ } }, "report": { + "title_report": "Report", "title": "Ilmianna %s", "step1": "Vaihe 1/2", "step2": "Vaihe 2/2", "content1": "Onko julkaisuja, joita haluaisit lisätä ilmiantoon?", "content2": "Onko valvojien syytä tietää tästä ilmiannosta?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", "send": "Lähetä ilmianto", "skip_to_send": "Lähetä ilman kommentteja", - "text_placeholder": "Kirjoita tai liitä lisäkommentteja" + "text_placeholder": "Kirjoita tai liitä lisäkommentteja", + "reported": "REPORTED" }, "preview": { "keyboard": { @@ -564,4 +593,4 @@ "accessibility_hint": "Hylkää tämä ohjattu toiminto kaksoisnapauttamalla" } } -} +} \ No newline at end of file From 46f2b6468ab9eeb027885d45ff37fd7e2174c24f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 17:17:37 +0100 Subject: [PATCH 213/374] New translations app.json (Spanish, Argentina) --- .../StringsConvertor/input/es_AR/app.json | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Localization/StringsConvertor/input/es_AR/app.json b/Localization/StringsConvertor/input/es_AR/app.json index 3c2567d51..106ffb646 100644 --- a/Localization/StringsConvertor/input/es_AR/app.json +++ b/Localization/StringsConvertor/input/es_AR/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "¿Estás seguro que querés eliminar este mensaje?", - "message": "Are you sure you want to delete this post?" + "message": "¿Estás seguro que querés eliminar este mensaje?" }, "clean_cache": { "title": "Limpiar caché", @@ -141,7 +141,7 @@ "favorite": "Marcar como favorito", "unfavorite": "Dejar de marcar como favorito", "menu": "Menú", - "hide": "Hide" + "hide": "Ocultar" }, "tag": { "url": "Dirección web", @@ -152,10 +152,10 @@ "emoji": "Emoji" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Todo el mundo puede ver este mensaje pero no mostrarse en la línea temporal pública.", + "private": "Sólo sus seguidores pueden ver este mensaje.", + "private_from_me": "Sólo mis seguidores pueden ver este mensaje.", + "direct": "Sólo el usuario mencionado puede ver este mensaje." } }, "friendship": { @@ -419,26 +419,26 @@ "segmented_control": { "posts": "Mensajes", "replies": "Respuestas", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Mensajes y respuestas", "media": "Medios", - "about": "About" + "about": "Información" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Silenciar cuenta", + "message": "Confirmá para silenciar a %s" }, "confirm_unmute_user": { "title": "Dejar de silenciar cuenta", "message": "Confirmá para dejar de silenciar a %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Bloquear cuenta", + "message": "Confirmá para desbloquear a %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Desbloquear cuenta", + "message": "Confirmá para desbloquear a %s" } } }, @@ -490,12 +490,12 @@ "Mentions": "Menciones" }, "notification_description": { - "followed_you": "followd you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "followed_you": "te sigue", + "favorited_your_post": "marcó como favorito tu mensaje", + "reblogged_your_post": "adhirió a tu mensaje", + "mentioned_you": "te mencionó", + "request_to_follow_you": "solicitó seguirte", + "poll_has_ended": "la encuesta terminó" }, "keyobard": { "show_everything": "Mostrar todo", @@ -516,11 +516,11 @@ "dark": "Siempre oscura" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "Apariencia", + "use_system": "Usar sistema", + "really_dark": "Oscuro de verdad", + "sorta_dark": "Algo oscuro", + "light": "Claro" }, "notifications": { "title": "Notificaciones", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "Denunciar", "title": "Denunciar a %s", "step1": "Paso 1 de 2", "step2": "Paso 2 de 2", "content1": "¿Hay otros mensajes que te gustaría agregar a la denuncia?", "content2": "¿Hay algo que los moderadores deban saber sobre esta denuncia?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Gracias por tu denuncia, vamos a revisarla.", "send": "Enviar denuncia", "skip_to_send": "Enviar sin comentarios", "text_placeholder": "Escribí o pegá comentarios adicionales", - "reported": "REPORTED" + "reported": "DENUNCIADA" }, "preview": { "keyboard": { From b884176c9739b204b958261dc07b95e26198818c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 17:17:38 +0100 Subject: [PATCH 214/374] New translations app.json (Kurmanji (Kurdish)) --- .../StringsConvertor/input/kmr_TR/app.json | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index fd2bab037..4d653b40e 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Ma tu dixwazî vê şandiyê jê bibî?", - "message": "Are you sure you want to delete this post?" + "message": "Ma tu dixwazî vê şandiyê jê bibî?" }, "clean_cache": { "title": "Pêşbîrê pak bike", @@ -141,7 +141,7 @@ "favorite": "Bijarte", "unfavorite": "Nebijarte", "menu": "Kulîn", - "hide": "Hide" + "hide": "Veşêre" }, "tag": { "url": "URL", @@ -152,10 +152,10 @@ "emoji": "Emojî" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Her kes dikare vê şandiyê bibîne lê nayê nîşandan di demnameya gelemperî de.", + "private": "Tenê şopînerên wan dikarin vê şandiyê bibînin.", + "private_from_me": "Tenê şopînerên min dikarin vê şandiyê bibînin.", + "direct": "Tenê bikarhênerê qalkirî dikare vê şandiyê bibîne." } }, "friendship": { @@ -419,22 +419,22 @@ "segmented_control": { "posts": "Şandî", "replies": "Bersiv", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Şandî û bersiv", "media": "Medya", - "about": "About" + "about": "Derbar" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Ajimêrê bêdeng bike", + "message": "Ji bo bêdengkirina %s bipejirîne" }, "confirm_unmute_user": { "title": "Ajimêrê bêdeng neke", - "message": "Ji bo vekirina bêdengkirinê bipejirîne %s" + "message": "Ji bo vekirina bêdengkirinê %s bipejirîne" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Ajimêr asteng bike", + "message": "Ji bo astengkirina %s bipejirîne" }, "confirm_unblock_user": { "title": "Unblock Account", From 0ec2b9f66c2dbb24b018d48ec5f87922fe40fd97 Mon Sep 17 00:00:00 2001 From: CMK Date: Sat, 12 Feb 2022 00:18:19 +0800 Subject: [PATCH 215/374] fix: notification i18n word typo --- Localization/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/app.json b/Localization/app.json index 639bca4f3..ad99e178d 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From 44614eb3d9c9e5d0762752304d342d5966e1c2a3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:07 +0100 Subject: [PATCH 216/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 29209f2c3..9ea44ba06 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -490,7 +490,7 @@ "Mentions": "การกล่าวถึง" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From df59b5c2c3274ea65b34a53ed7bef35b36c54274 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:08 +0100 Subject: [PATCH 217/374] New translations app.json (Swedish) --- .../StringsConvertor/input/sv_SE/app.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_SE/app.json b/Localization/StringsConvertor/input/sv_SE/app.json index 6f9d1ced5..8fa925680 100644 --- a/Localization/StringsConvertor/input/sv_SE/app.json +++ b/Localization/StringsConvertor/input/sv_SE/app.json @@ -72,8 +72,8 @@ "discard": "Discard", "try_again": "Försök igen", "take_photo": "Take Photo", - "save_photo": "Save Photo", - "copy_photo": "Copy Photo", + "save_photo": "Spara foto", + "copy_photo": "Kopiera foto", "sign_in": "Sign In", "sign_up": "Sign Up", "see_more": "See More", @@ -141,7 +141,7 @@ "favorite": "Favorite", "unfavorite": "Unfavorite", "menu": "Meny", - "hide": "Hide" + "hide": "Dölj" }, "tag": { "url": "URL", @@ -179,7 +179,7 @@ "timeline": { "filtered": "Filtered", "timestamp": { - "now": "Now" + "now": "Nu" }, "loader": { "load_missing_posts": "Load missing posts", @@ -276,7 +276,7 @@ "item": { "username": "Användarnamn", "email": "Email", - "password": "Password", + "password": "Lösenord", "agreement": "Agreement", "locale": "Locale", "reason": "Reason" @@ -421,7 +421,7 @@ "replies": "Replies", "posts_and_replies": "Posts and Replies", "media": "Media", - "about": "About" + "about": "Om" }, "relationship_action_alert": { "confirm_mute_user": { @@ -490,10 +490,10 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", + "mentioned_you": "nämnde dig", "request_to_follow_you": "request to follow you", "poll_has_ended": "poll has ended" }, @@ -520,7 +520,7 @@ "use_system": "Use System", "really_dark": "Really Dark", "sorta_dark": "Sorta Dark", - "light": "Light" + "light": "Ljust" }, "notifications": { "title": "Notifications", From bd4946ee271e807f0181049ef9b34a53ebdd79e0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:10 +0100 Subject: [PATCH 218/374] New translations Localizable.stringsdict (Swedish) --- .../StringsConvertor/input/sv_SE/Localizable.stringsdict | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict b/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict index 65316e3d0..3de8b8d85 100644 --- a/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict @@ -381,7 +381,7 @@ NSStringFormatValueTypeKey ld one - 1s ago + 1s sedan other %lds ago From 9eb6977efd911a851fca853a1e4f24db5cf4005d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:12 +0100 Subject: [PATCH 219/374] New translations app.json (Swedish, Finland) --- Localization/StringsConvertor/input/sv_FI/app.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_FI/app.json b/Localization/StringsConvertor/input/sv_FI/app.json index 161f2c860..669ee4371 100644 --- a/Localization/StringsConvertor/input/sv_FI/app.json +++ b/Localization/StringsConvertor/input/sv_FI/app.json @@ -141,7 +141,7 @@ "favorite": "Favorite", "unfavorite": "Unfavorite", "menu": "Valikko", - "hide": "Hide" + "hide": "Dölj" }, "tag": { "url": "URL", @@ -421,7 +421,7 @@ "replies": "Vastaukset", "posts_and_replies": "Posts and Replies", "media": "Media", - "about": "About" + "about": "Om" }, "relationship_action_alert": { "confirm_mute_user": { @@ -490,10 +490,10 @@ "Mentions": "Maininnat" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", + "mentioned_you": "nämnde dig", "request_to_follow_you": "request to follow you", "poll_has_ended": "poll has ended" }, @@ -520,7 +520,7 @@ "use_system": "Use System", "really_dark": "Really Dark", "sorta_dark": "Sorta Dark", - "light": "Light" + "light": "Ljust" }, "notifications": { "title": "Ilmoitukset", From 01c62659758b1cd7ff75cc1021b5fa13f726bb69 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:12 +0100 Subject: [PATCH 220/374] New translations app.json (Kurmanji (Kurdish)) --- .../StringsConvertor/input/kmr_TR/app.json | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Localization/StringsConvertor/input/kmr_TR/app.json b/Localization/StringsConvertor/input/kmr_TR/app.json index 4d653b40e..2990f23c6 100644 --- a/Localization/StringsConvertor/input/kmr_TR/app.json +++ b/Localization/StringsConvertor/input/kmr_TR/app.json @@ -45,7 +45,7 @@ "message": "Ji kerema xwe mafê bide gihîştina wênegehê çalak bike da ku wêne werin tomarkirin." }, "delete_post": { - "title": "Ma tu dixwazî vê şandiyê jê bibî?", + "title": "Şandiyê jê bibe", "message": "Ma tu dixwazî vê şandiyê jê bibî?" }, "clean_cache": { @@ -113,7 +113,7 @@ "open_author_profile": "Profîla nivîskaran veke", "open_reblogger_profile": "Profîla nivîskaran veke", "reply_status": "Bersivê bide şandiyê", - "toggle_reblog": "Ji vû nivîsandin di şandiyê de biguherîne", + "toggle_reblog": "Ji nû ve nivîsandin di şandiyê de biguherîne", "toggle_favorite": "Li ser şandiyê bijarte biguherîne", "toggle_content_warning": "Hişyariya naverokê biguherîne", "preview_image": "Pêşdîtina wêneyê" @@ -124,7 +124,7 @@ } }, "status": { - "user_reblogged": "%s ji nû ve hate nivîsandin", + "user_reblogged": "%s ji nû ve nivîsand", "user_replied_to": "Bersiv da %s", "show_post": "Şandiyê nîşan bide", "show_user_profile": "Profîla bikarhêner nîşan bide", @@ -434,11 +434,11 @@ }, "confirm_block_user": { "title": "Ajimêr asteng bike", - "message": "Ji bo astengkirina %s bipejirîne" + "message": "Ji bo rakirina astengkirinê %s bipejirîne" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Astengiyê li ser ajimêr rake", + "message": "Ji bo rakirina astengkirinê %s bipejirîne" } } }, @@ -490,12 +490,12 @@ "Mentions": "Qalkirin" }, "notification_description": { - "followed_you": "followd you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "followed_you": "te şopand", + "favorited_your_post": "şandiya te hez kir", + "reblogged_your_post": "şandiya te ji nû ve nivisand", + "mentioned_you": "qale te kir", + "request_to_follow_you": "dixwazê te bişopîne", + "poll_has_ended": "rapirsî qediya" }, "keyobard": { "show_everything": "Her tiştî nîşan bide", @@ -516,11 +516,11 @@ "dark": "Her dem tarî" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "Xuyang", + "use_system": "Pergalê bi kar bîne", + "really_dark": "Tarî", + "sorta_dark": "Hinekî tarî", + "light": "Ron" }, "notifications": { "title": "Agahdarî", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "Ragihandin", "title": "%s ragihîne", "step1": "Gav 1 ji 2", "step2": "Gav 2 ji 2", "content1": "Şandiyên din hene ku tu dixwazî tevlî ragihandinê bikî?", "content2": "Derbarê vê ragihandinê de tiştek heye ku divê çavdêr bizanin?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Spas ji bo ragihandina te, em ê binirxînin.", "send": "Ragihandinê bişîne", "skip_to_send": "Bêyî şirove bişîne", "text_placeholder": "Şiroveyên daxwazkirê binivîsine an jî pê ve bike", - "reported": "REPORTED" + "reported": "HATE RAGIHANDIN" }, "preview": { "keyboard": { From 6575d542d3e4ce93d73cd2f90710700faef51aba Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:14 +0100 Subject: [PATCH 221/374] New translations app.json (Scottish Gaelic) --- Localization/StringsConvertor/input/gd_GB/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json index bacf1bf20..4c78154e2 100644 --- a/Localization/StringsConvertor/input/gd_GB/app.json +++ b/Localization/StringsConvertor/input/gd_GB/app.json @@ -490,7 +490,7 @@ "Mentions": "Iomraidhean" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From 249acd3c057186dbd01d5043185e16b3a8f8cf97 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:16 +0100 Subject: [PATCH 222/374] New translations app.json (Welsh) --- Localization/StringsConvertor/input/cy_GB/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/cy_GB/app.json b/Localization/StringsConvertor/input/cy_GB/app.json index 639bca4f3..ad99e178d 100644 --- a/Localization/StringsConvertor/input/cy_GB/app.json +++ b/Localization/StringsConvertor/input/cy_GB/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From fe05122979ac240112a621000f9d8b44bbc7d61b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:18 +0100 Subject: [PATCH 223/374] New translations app.json (Hindi) --- Localization/StringsConvertor/input/hi_IN/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/hi_IN/app.json b/Localization/StringsConvertor/input/hi_IN/app.json index 639bca4f3..ad99e178d 100644 --- a/Localization/StringsConvertor/input/hi_IN/app.json +++ b/Localization/StringsConvertor/input/hi_IN/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From b9326290272e2de91991b97269717eba53c3da07 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:20 +0100 Subject: [PATCH 224/374] New translations app.json (Indonesian) --- Localization/StringsConvertor/input/id_ID/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/id_ID/app.json b/Localization/StringsConvertor/input/id_ID/app.json index db7f7750b..c6af04e08 100644 --- a/Localization/StringsConvertor/input/id_ID/app.json +++ b/Localization/StringsConvertor/input/id_ID/app.json @@ -490,7 +490,7 @@ "Mentions": "Sebutan" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From 4506fb80a77a18d5b0ec292d719dd753ffb17f79 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:22 +0100 Subject: [PATCH 225/374] New translations app.json (Portuguese, Brazilian) --- Localization/StringsConvertor/input/pt_BR/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/pt_BR/app.json b/Localization/StringsConvertor/input/pt_BR/app.json index 639bca4f3..ad99e178d 100644 --- a/Localization/StringsConvertor/input/pt_BR/app.json +++ b/Localization/StringsConvertor/input/pt_BR/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From e3ae55c46c90bfe0d8fa2db1041f275b61740325 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:23 +0100 Subject: [PATCH 226/374] New translations app.json (English) --- Localization/StringsConvertor/input/en_US/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/en_US/app.json b/Localization/StringsConvertor/input/en_US/app.json index 639bca4f3..ad99e178d 100644 --- a/Localization/StringsConvertor/input/en_US/app.json +++ b/Localization/StringsConvertor/input/en_US/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From e0abd0036c274304df4a1517853b229934488ee4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:24 +0100 Subject: [PATCH 227/374] New translations app.json (Chinese Traditional) --- Localization/StringsConvertor/input/zh_TW/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/zh_TW/app.json b/Localization/StringsConvertor/input/zh_TW/app.json index 639bca4f3..ad99e178d 100644 --- a/Localization/StringsConvertor/input/zh_TW/app.json +++ b/Localization/StringsConvertor/input/zh_TW/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From 433fdbd199a3fbcbcf90847be9e97217d21c784b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:26 +0100 Subject: [PATCH 228/374] New translations app.json (Chinese Simplified) --- Localization/StringsConvertor/input/zh_CN/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json index 03e99c696..5fdb8988a 100644 --- a/Localization/StringsConvertor/input/zh_CN/app.json +++ b/Localization/StringsConvertor/input/zh_CN/app.json @@ -490,7 +490,7 @@ "Mentions": "提及" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From 3bf15a1ceb12eee71f3453a22a763631598c0606 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:28 +0100 Subject: [PATCH 229/374] New translations app.json (Russian) --- Localization/StringsConvertor/input/ru_RU/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ru_RU/app.json b/Localization/StringsConvertor/input/ru_RU/app.json index fcebb9276..58cedfc7f 100644 --- a/Localization/StringsConvertor/input/ru_RU/app.json +++ b/Localization/StringsConvertor/input/ru_RU/app.json @@ -490,7 +490,7 @@ "Mentions": "Упоминания" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From e8c4b4e051989ae67442098f78e885fdbee547b3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:30 +0100 Subject: [PATCH 230/374] New translations app.json (Portuguese) --- Localization/StringsConvertor/input/pt_PT/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/pt_PT/app.json b/Localization/StringsConvertor/input/pt_PT/app.json index 639bca4f3..ad99e178d 100644 --- a/Localization/StringsConvertor/input/pt_PT/app.json +++ b/Localization/StringsConvertor/input/pt_PT/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From ad899b937b2f84c6f17a40bc3deca7b4bee0c69a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:31 +0100 Subject: [PATCH 231/374] New translations app.json (Dutch) --- Localization/StringsConvertor/input/nl_NL/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/nl_NL/app.json b/Localization/StringsConvertor/input/nl_NL/app.json index f57300316..ae8f2d2dd 100644 --- a/Localization/StringsConvertor/input/nl_NL/app.json +++ b/Localization/StringsConvertor/input/nl_NL/app.json @@ -490,7 +490,7 @@ "Mentions": "Vermeldingen" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From f39e2739fe9d395d835efbcae65bb29f0eef3699 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:32 +0100 Subject: [PATCH 232/374] New translations app.json (Korean) --- Localization/StringsConvertor/input/ko_KR/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ko_KR/app.json b/Localization/StringsConvertor/input/ko_KR/app.json index f8c908d1e..3f9f4c199 100644 --- a/Localization/StringsConvertor/input/ko_KR/app.json +++ b/Localization/StringsConvertor/input/ko_KR/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From 09774eddd94a2aabf58382c8f9e209af7730a6be Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:34 +0100 Subject: [PATCH 233/374] New translations app.json (Japanese) --- Localization/StringsConvertor/input/ja_JP/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index 86732559e..1e06960c9 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -490,7 +490,7 @@ "Mentions": "メンション" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From 6b886d851d3c127cb4dc502893920af141e1837f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:35 +0100 Subject: [PATCH 234/374] New translations app.json (Basque) --- Localization/StringsConvertor/input/eu_ES/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index 39403a119..e787c15b8 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -490,7 +490,7 @@ "Mentions": "Aipamenak" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From 5091825458a0e7f41cf78b3a5914276e5b90b04f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:36 +0100 Subject: [PATCH 235/374] New translations app.json (German) --- Localization/StringsConvertor/input/de_DE/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json index be1e47c62..13ced12a3 100644 --- a/Localization/StringsConvertor/input/de_DE/app.json +++ b/Localization/StringsConvertor/input/de_DE/app.json @@ -490,7 +490,7 @@ "Mentions": "Erwähnungen" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From ed1f7e591a6cec2c2635f8ede4f133deeb21f53a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:37 +0100 Subject: [PATCH 236/374] New translations app.json (Danish) --- Localization/StringsConvertor/input/da_DK/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/da_DK/app.json b/Localization/StringsConvertor/input/da_DK/app.json index 639bca4f3..ad99e178d 100644 --- a/Localization/StringsConvertor/input/da_DK/app.json +++ b/Localization/StringsConvertor/input/da_DK/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From c6901a9725c689714ff40427ca6b6f2e190932f9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:38 +0100 Subject: [PATCH 237/374] New translations app.json (Catalan) --- .../StringsConvertor/input/ca_ES/app.json | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Localization/StringsConvertor/input/ca_ES/app.json b/Localization/StringsConvertor/input/ca_ES/app.json index 3a47b5519..c3aac1e5e 100644 --- a/Localization/StringsConvertor/input/ca_ES/app.json +++ b/Localization/StringsConvertor/input/ca_ES/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Estàs segur que vols suprimir aquesta publicació?", - "message": "Are you sure you want to delete this post?" + "message": "Estàs segur que vols suprimir aquesta publicació?" }, "clean_cache": { "title": "Neteja la memòria cau", @@ -141,7 +141,7 @@ "favorite": "Favorit", "unfavorite": "Desfer Favorit", "menu": "Menú", - "hide": "Hide" + "hide": "Amaga" }, "tag": { "url": "URL", @@ -152,10 +152,10 @@ "emoji": "Emoji" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Tothom pot veure aquesta publicació però no es mostra en la línia de temps pública.", + "private": "Només els seus seguidors poden veure aquesta publicació.", + "private_from_me": "Només els meus seguidors poden veure aquesta publicació.", + "direct": "Només l'usuari mencionat pot veure aquesta publicació." } }, "friendship": { @@ -419,26 +419,26 @@ "segmented_control": { "posts": "Publicacions", "replies": "Respostes", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Publicacions i Respostes", "media": "Mèdia", - "about": "About" + "about": "Quant a" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Silencia el Compte", + "message": "Confirma per a silenciar %s" }, "confirm_unmute_user": { "title": "Desfer silenciar compte", "message": "Confirma deixar de silenciar a %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Bloqueja el Compte", + "message": "Confirma per a bloquejar %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Desbloqueja el Compte", + "message": "Confirma per a desbloquejar %s" } } }, @@ -490,12 +490,12 @@ "Mentions": "Mencions" }, "notification_description": { - "followed_you": "followd you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "followed_you": "et segueix", + "favorited_your_post": "ha afavorit la teva publicació", + "reblogged_your_post": "ha impulsat la teva publicació", + "mentioned_you": "t'ha mencionat", + "request_to_follow_you": "ha sol·licitat seguir-te", + "poll_has_ended": "la enquesta ha finalitzat" }, "keyobard": { "show_everything": "Mostrar-ho tot", @@ -516,11 +516,11 @@ "dark": "Sempre Fosca" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "Aspecte i Comportament", + "use_system": "Usa el del Sistema", + "really_dark": "Realment Negre", + "sorta_dark": "Una Mena de Fosc", + "light": "Clar" }, "notifications": { "title": "Notificacions", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "Informe", "title": "Informa sobre %s", "step1": "Pas 1 de 2", "step2": "Pas 2 de 2", "content1": "Hi ha alguna altre publicació que vulguis afegir a l'informe?", "content2": "Hi ha alguna cosa que els moderadors hagin de saber sobre aquest informe?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Gràcies per informar, ho investigarem.", "send": "Envia Informe", "skip_to_send": "Envia sense comentaris", "text_placeholder": "Escriu o enganxa comentaris addicionals", - "reported": "REPORTED" + "reported": "REPORTAT" }, "preview": { "keyboard": { From 60c4856786c29ba2a82456ade2613598c2a2c89e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:39 +0100 Subject: [PATCH 238/374] New translations app.json (Arabic) --- .../StringsConvertor/input/ar_SA/app.json | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Localization/StringsConvertor/input/ar_SA/app.json b/Localization/StringsConvertor/input/ar_SA/app.json index 7e438eeda..51b334720 100644 --- a/Localization/StringsConvertor/input/ar_SA/app.json +++ b/Localization/StringsConvertor/input/ar_SA/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "هل أنت متأكد من رغبتك في حذف هذا المنشور؟", - "message": "Are you sure you want to delete this post?" + "message": "هَل أنتَ مُتأكِدٌ مِن رَغبتِكَ فِي حَذفِ هَذَا المَنشُور؟" }, "clean_cache": { "title": "مَحو ذاكرة التخزين المؤقت", @@ -141,7 +141,7 @@ "favorite": "التفضيل", "unfavorite": "إزالة التفضيل", "menu": "القائمة", - "hide": "Hide" + "hide": "إخفاء" }, "tag": { "url": "عنوان URL", @@ -152,10 +152,10 @@ "emoji": "رمز تعبيري" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "يُمكِنُ لِلجَميعِ رُؤيَةُ هَذَا المَنشورِ وَلكِنَّهُ لَا يُعرَضُ فِي الخَطِّ الزَمنيّ العام.", + "private": "فَقَطْ مُتابِعينَهُم مَن يُمكِنُهُم رُؤيَةُ هَذَا المَنشُور.", + "private_from_me": "فَقَطْ مُتابِعيني أنَا مَن يُمكِنُهُم رُؤيَةُ هَذَا المَنشُور.", + "direct": "المُستخدمِونَ المُشارِ إليهم فَقَطْ مَن يُمكِنُهُم رُؤيَةُ هَذَا المَنشُور." } }, "friendship": { @@ -419,26 +419,26 @@ "segmented_control": { "posts": "مَنشورات", "replies": "رُدُود", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "المَنشوراتُ وَالرُدود", "media": "وَسائِط", - "about": "About" + "about": "حَول" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "كَتمُ الحِساب", + "message": "تأكيدُ كَتم %s" }, "confirm_unmute_user": { "title": "رفع الكتم عن الحساب", "message": "أكِّد لرفع الكتمْ عن %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "حَظرُ الحِساب", + "message": "تأكيدُ حَظر %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "رَفعُ الحَظرِ عَنِ الحِساب", + "message": "تأكيدُ رَفع الحَظرِ عَن %s" } } }, @@ -490,12 +490,12 @@ "Mentions": "الإشارات" }, "notification_description": { - "followed_you": "followd you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "followed_you": "بَدَأ بِمُتابَعَتِك", + "favorited_your_post": "فَضَّلَ مَنشُورَك", + "reblogged_your_post": "أعادَ تَدوينَ مَنشُورَك", + "mentioned_you": "أشارَ إليك", + "request_to_follow_you": "طَلَبَ مُتابَعتَك", + "poll_has_ended": "انتهى استطلاعُ الرأي" }, "keyobard": { "show_everything": "إظهار كل شيء", @@ -516,11 +516,11 @@ "dark": "مظلمٌ دائِمًا" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "المَظهَرُ وَالشُّعُور", + "use_system": "استخدم النِظام", + "really_dark": "مُظلمٌ حَقًّا", + "sorta_dark": "مُظلمٌ نوعًا ما", + "light": "مُضيء" }, "notifications": { "title": "الإشعارات", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "إبلاغ", "title": "الإبلاغ عن %s", "step1": "الخطوة الأولى مِن أصل اثنتين", "step2": "الخطوة الثانية والأخيرة", "content1": "هل ترغب في إضافة أي منشورات أُخرى إلى البلاغ؟", "content2": "هل هناك أي شيء يجب أن يعرفه المُراقبين حول هذا البلاغ؟", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "شُكرًا لَكَ على الإبلاغ، سَوفَ نَنظُرُ فِي هَذَا الأمر.", "send": "إرسال البلاغ", "skip_to_send": "إرسال بدون تعليق", "text_placeholder": "اكتب أو الصق تعليقات إضافيَّة", - "reported": "REPORTED" + "reported": "مُبْلَغٌ عَنه" }, "preview": { "keyboard": { From 634671798db8aa7ba4c61172bfb52c2b68e1f022 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:41 +0100 Subject: [PATCH 239/374] New translations app.json (Spanish) --- Localization/StringsConvertor/input/es_ES/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index cb0d70b7b..1ba94fb43 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -490,7 +490,7 @@ "Mentions": "Menciones" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From da2ac38e9bc817a5b35b6eb2f5f7596467a8d82c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:43 +0100 Subject: [PATCH 240/374] New translations app.json (Romanian) --- Localization/StringsConvertor/input/ro_RO/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ro_RO/app.json b/Localization/StringsConvertor/input/ro_RO/app.json index 7a5dc95d5..b9ef116dc 100644 --- a/Localization/StringsConvertor/input/ro_RO/app.json +++ b/Localization/StringsConvertor/input/ro_RO/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From d0fbef8866f7338bd4ffc669071f1b4fd15a2227 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:44 +0100 Subject: [PATCH 241/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 08f3eebbe..fb07af6d6 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From c40f89af57a9cf8ee9b59c0c934edbe14eb164af Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:46 +0100 Subject: [PATCH 242/374] New translations app.json (French) --- Localization/StringsConvertor/input/fr_FR/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index 1594296d9..c2467b0ad 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -490,7 +490,7 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followd you", + "followed_you": "followed you", "favorited_your_post": "favorited your post", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", From b2ab9027997b141e011ece7720287ee96188522e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 18:17:48 +0100 Subject: [PATCH 243/374] New translations Intents.strings (Swedish) --- .../StringsConvertor/Intents/input/sv_SE/Intents.strings | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings b/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings index d4531ed64..e81116eee 100644 --- a/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/sv_SE/Intents.strings @@ -34,9 +34,9 @@ "dUyuGg" = "Post on Mastodon"; -"dYQ5NN" = "Public"; +"dYQ5NN" = "Publikt"; -"ehFLjY" = "Followers Only"; +"ehFLjY" = "Endast följare"; "gfePDu" = "Posting failed. ${failureReason}"; From 9f00dc8ff72eb273aec5f5bec712589017e04b01 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 11 Feb 2022 19:57:27 +0100 Subject: [PATCH 244/374] New translations app.json (Swedish) --- .../StringsConvertor/input/sv_SE/app.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_SE/app.json b/Localization/StringsConvertor/input/sv_SE/app.json index 8fa925680..b994e5f79 100644 --- a/Localization/StringsConvertor/input/sv_SE/app.json +++ b/Localization/StringsConvertor/input/sv_SE/app.json @@ -64,7 +64,7 @@ "edit": "Redigera", "save": "Spara", "ok": "OK", - "done": "Done", + "done": "Klar", "confirm": "Confirm", "continue": "Fortsätt", "compose": "Compose", @@ -350,7 +350,7 @@ }, "media_selection": { "camera": "Take Photo", - "photo_library": "Photo Library", + "photo_library": "Fotobibliotek", "browse": "Bläddra" }, "content_input_placeholder": "Type or paste what’s on your mind", @@ -478,7 +478,7 @@ "no_results": "Inga resultat" }, "recent_search": "Recent searches", - "clear": "Clear" + "clear": "Rensa" } }, "favorite": { @@ -539,14 +539,14 @@ "preference": { "title": "Preferences", "true_black_dark_mode": "True black dark mode", - "disable_avatar_animation": "Disable animated avatars", - "disable_emoji_animation": "Disable animated emojis", + "disable_avatar_animation": "Inaktivera animerade avatarer", + "disable_emoji_animation": "Inaktivera animerade emojis", "using_default_browser": "Use default browser to open links" }, "boring_zone": { "title": "The Boring Zone", - "account_settings": "Account Settings", - "terms": "Terms of Service", + "account_settings": "Kontoinställningar", + "terms": "Användarvillkor", "privacy": "Integritetspolicy" }, "spicy_zone": { @@ -570,7 +570,7 @@ "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", "report_sent_title": "Thanks for reporting, we’ll look into this.", - "send": "Send Report", + "send": "Skicka rapport", "skip_to_send": "Send without comment", "text_placeholder": "Type or paste additional comments", "reported": "REPORTED" From b75b76979418438a0c1b903f85a7c134b38de1e6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 12 Feb 2022 07:13:34 +0100 Subject: [PATCH 245/374] New translations Localizable.stringsdict (Japanese) --- .../StringsConvertor/input/ja_JP/Localizable.stringsdict | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict b/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict index c51a9a29d..f1c5e6e25 100644 --- a/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/ja_JP/Localizable.stringsdict @@ -279,7 +279,7 @@ NSStringFormatValueTypeKey ld other - %ld分前 + %ldか月前 date.day.ago.abbr From 1d05286027d3aab4fb9394b694cdf22f1f71a9d8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 12 Feb 2022 08:09:08 +0100 Subject: [PATCH 246/374] New translations app.json (Thai) --- .../StringsConvertor/input/th_TH/app.json | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 9ea44ba06..c6abf7e87 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?", - "message": "Are you sure you want to delete this post?" + "message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?" }, "clean_cache": { "title": "ล้างแคช", @@ -141,7 +141,7 @@ "favorite": "ชื่นชอบ", "unfavorite": "เลิกชื่นชอบ", "menu": "เมนู", - "hide": "Hide" + "hide": "ซ่อน" }, "tag": { "url": "URL", @@ -419,26 +419,26 @@ "segmented_control": { "posts": "โพสต์", "replies": "การตอบกลับ", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "โพสต์และการตอบกลับ", "media": "สื่อ", - "about": "About" + "about": "เกี่ยวกับ" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "ซ่อนบัญชี", + "message": "ยืนยันเพื่อซ่อน %s" }, "confirm_unmute_user": { "title": "เลิกซ่อนบัญชี", "message": "ยืนยันเพื่อเลิกซ่อน %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "ปิดกั้นบัญชี", + "message": "ยืนยันเพื่อปิดกั้น %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "เลิกปิดกั้นบัญชี", + "message": "ยืนยันเพื่อเลิกปิดกั้น %s" } } }, @@ -490,12 +490,12 @@ "Mentions": "การกล่าวถึง" }, "notification_description": { - "followed_you": "followed you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "followed_you": "ได้ติดตามคุณ", + "favorited_your_post": "ได้ชื่นชอบโพสต์ของคุณ", + "reblogged_your_post": "ได้ดันโพสต์ของคุณ", + "mentioned_you": "ได้กล่าวถึงคุณ", + "request_to_follow_you": "ขอติดตามคุณ", + "poll_has_ended": "การสำรวจความคิดเห็นได้สิ้นสุดแล้ว" }, "keyobard": { "show_everything": "แสดงทุกอย่าง", @@ -516,11 +516,11 @@ "dark": "มืดเสมอ" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "ลักษณะที่แสดง", + "use_system": "ใช้ของระบบ", + "really_dark": "มืดมาก", + "sorta_dark": "ค่อนข้างมืด", + "light": "สว่าง" }, "notifications": { "title": "การแจ้งเตือน", @@ -563,7 +563,7 @@ } }, "report": { - "title_report": "Report", + "title_report": "รายงาน", "title": "รายงาน %s", "step1": "ขั้นตอนที่ 1 จาก 2", "step2": "ขั้นตอนที่ 2 จาก 2", @@ -573,7 +573,7 @@ "send": "ส่งรายงาน", "skip_to_send": "ส่งโดยไม่มีความคิดเห็น", "text_placeholder": "พิมพ์หรือวางความคิดเห็นเพิ่มเติม", - "reported": "REPORTED" + "reported": "รายงานแล้ว" }, "preview": { "keyboard": { From a940709954ba073fb44598d3dd05aea5cc8baafd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 12 Feb 2022 09:22:03 +0100 Subject: [PATCH 247/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index c6abf7e87..313907215 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -152,10 +152,10 @@ "emoji": "อีโมจิ" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "ทุกคนสามารถเห็นโพสต์นี้แต่ไม่แสดงในเส้นเวลาสาธารณะ", + "private": "เฉพาะผู้ติดตามของเขาเท่านั้นที่สามารถเห็นโพสต์นี้", + "private_from_me": "เฉพาะผู้ติดตามของฉันเท่านั้นที่สามารถเห็นโพสต์นี้", + "direct": "เฉพาะผู้ใช้ที่กล่าวถึงเท่านั้นที่สามารถเห็นโพสต์นี้" } }, "friendship": { @@ -569,7 +569,7 @@ "step2": "ขั้นตอนที่ 2 จาก 2", "content1": "มีโพสต์อื่นใดที่คุณต้องการเพิ่มไปยังรายงานหรือไม่?", "content2": "มีสิ่งใดที่ผู้ควบคุมควรทราบเกี่ยวกับรายงานนี้หรือไม่?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "ขอบคุณสำหรับการรายงาน เราจะตรวจสอบสิ่งนี้", "send": "ส่งรายงาน", "skip_to_send": "ส่งโดยไม่มีความคิดเห็น", "text_placeholder": "พิมพ์หรือวางความคิดเห็นเพิ่มเติม", From 68554f52df7df236d8f61b34f94c6e7dd86d3394 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 12 Feb 2022 15:33:22 +0100 Subject: [PATCH 248/374] New translations Localizable.stringsdict (Swedish) --- .../input/sv_SE/Localizable.stringsdict | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict b/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict index 3de8b8d85..f8da5e395 100644 --- a/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/sv_SE/Localizable.stringsdict @@ -29,9 +29,9 @@ NSStringFormatValueTypeKey ld one - 1 character + 1 tecken other - %ld characters + %ld tecken a11y.plural.count.input_limit_remains @@ -45,9 +45,9 @@ NSStringFormatValueTypeKey ld one - 1 character + 1 tecken other - %ld characters + %ld tecken plural.count.metric_formatted.post @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 vote + 1 röst other - %ld votes + %ld röster plural.count.voter From c64b6fc4af6c24a895d7aadebea62ed414cf110c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 12 Feb 2022 16:38:26 +0100 Subject: [PATCH 249/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index fb07af6d6..435ae0abc 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -109,7 +109,7 @@ "timeline": { "previous_status": "Previous Post", "next_status": "Next Post", - "open_status": "Open Post", + "open_status": "Ldi tasuffeɣt", "open_author_profile": "Open Author's Profile", "open_reblogger_profile": "Open Reblogger's Profile", "reply_status": "Reply to Post", @@ -141,7 +141,7 @@ "favorite": "Anurif", "unfavorite": "Unfavorite", "menu": "Umuɣ", - "hide": "Hide" + "hide": "Ffer" }, "tag": { "url": "URL", @@ -230,7 +230,7 @@ }, "label": { "language": "TUTLAYT", - "users": "USERS", + "users": "ISEQDACEN", "category": "CATEGORY" }, "input": { @@ -326,7 +326,7 @@ "open_email_app": { "title": "Check your inbox.", "description": "We just sent you an email. Check your junk folder if you haven’t.", - "mail": "Mail", + "mail": "Imayl", "open_email_client": "Open Email Client" } }, @@ -345,7 +345,7 @@ }, "compose": { "title": { - "new_post": "New Post", + "new_post": "Tasuffeɣt tamaynut", "new_reply": "New Reply" }, "media_selection": { @@ -529,7 +529,7 @@ "boosts": "Reblogs my post", "mentions": "Mentions me", "trigger": { - "anyone": "anyone", + "anyone": "yal yiwen", "follower": "a follower", "follow": "anyone I follow", "noone": "no one", @@ -537,7 +537,7 @@ } }, "preference": { - "title": "Preferences", + "title": "Imenyafen", "true_black_dark_mode": "True black dark mode", "disable_avatar_animation": "Disable animated avatars", "disable_emoji_animation": "Disable animated emojis", From bda3e524f299986eda25a277d680c7732c71142b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 12 Feb 2022 16:38:27 +0100 Subject: [PATCH 250/374] New translations ios-infoPlist.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json b/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json index c5575d5fb..65e4e2d2b 100644 --- a/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json +++ b/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json @@ -1,6 +1,6 @@ { "NSCameraUsageDescription": "Used to take photo for post status", "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", - "NewPostShortcutItemTitle": "New Post", + "NewPostShortcutItemTitle": "Tasuffeɣt tamaynut", "SearchShortcutItemTitle": "Nadi" } From 2d33700c0ffa0ea0655578f3b09d6df932d6c0d3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 13 Feb 2022 11:09:36 +0100 Subject: [PATCH 251/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 435ae0abc..25db6f786 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -49,7 +49,7 @@ "message": "Are you sure you want to delete this post?" }, "clean_cache": { - "title": "Clean Cache", + "title": "Sfeḍ tuffirt", "message": "Successfully cleaned %s cache." } }, @@ -107,8 +107,8 @@ "open_settings": "Ldi iɣewwaren" }, "timeline": { - "previous_status": "Previous Post", - "next_status": "Next Post", + "previous_status": "Amagrad uzwir", + "next_status": "Amagrad uḍfir", "open_status": "Ldi tasuffeɣt", "open_author_profile": "Open Author's Profile", "open_reblogger_profile": "Open Reblogger's Profile", @@ -120,7 +120,7 @@ }, "segmented_control": { "previous_section": "Previous Section", - "next_section": "Next Section" + "next_section": "Tigezmi tuḍfirt" } }, "status": { @@ -161,8 +161,8 @@ "friendship": { "follow": "Ḍfeṛ", "following": "Yettwaḍfar", - "request": "Request", - "pending": "Pending", + "request": "Tuttra", + "pending": "Yegguni", "block": "Sewḥel", "block_user": "Sewḥel %s", "block_domain": "Sewḥel %s", @@ -174,7 +174,7 @@ "unmute": "Kkes asgugem", "unmute_user": "Kkes asgugem ɣef %s", "muted": "Yettwasgugem", - "edit_info": "Edit Info" + "edit_info": "Ẓreg talɣut" }, "timeline": { "filtered": "Yettwasizdeg", @@ -214,19 +214,19 @@ "all_accessiblity_description": "Category: All", "academia": "academia", "activism": "activism", - "food": "food", + "food": "učči", "furry": "furry", "games": "uraren", - "general": "general", + "general": "amatu", "journalism": "journalism", "lgbt": "lgbt", "regional": "regional", - "art": "art", - "music": "music", + "art": "taẓuri", + "music": "aẓawan", "tech": "tech" }, "see_less": "See Less", - "see_more": "See More" + "see_more": "Wali ugar" }, "label": { "language": "TUTLAYT", @@ -278,8 +278,8 @@ "email": "Imayl", "password": "Awal uffir", "agreement": "Agreement", - "locale": "Locale", - "reason": "Reason" + "locale": "Tadigant", + "reason": "Taɣẓint" }, "reason": { "blocked": "%s contains a disallowed email provider", @@ -287,7 +287,7 @@ "taken": "%s is already in use", "reserved": "%s is a reserved keyword", "accepted": "%s must be accepted", - "blank": "%s is required", + "blank": "isra %s", "invalid": "%s is invalid", "too_long": "%s is too long", "too_short": "%s is too short", @@ -316,12 +316,12 @@ "subtitle": "Tap the link we emailed to you to verify your account.", "button": { "open_email_app": "Open Email App", - "resend": "Resend" + "resend": "Ales tuzna" }, "dont_receive_email": { "title": "Senqed imayl-ik·im", "description": "Check if your email address is correct as well as your junk folder if you haven’t.", - "resend_email": "Resend Email" + "resend_email": "Ales tuzna n yimayl" }, "open_email_app": { "title": "Check your inbox.", @@ -333,8 +333,8 @@ "home_timeline": { "title": "Agejdan", "navigation_bar_state": { - "offline": "Offline", - "new_posts": "See new posts", + "offline": "Beṛṛa n tuqqna", + "new_posts": "Tissufaɣ timaynutin", "published": "Published!", "Publishing": "Publishing post..." } @@ -364,7 +364,7 @@ "description_video": "Describe the video for the visually-impaired..." }, "poll": { - "duration_time": "Duration: %s", + "duration_time": "Tangazt: %s", "thirty_minutes": "30 n tesdatin", "one_hour": "1 n wesrag", "six_hours": "6 n yisragen", @@ -379,14 +379,14 @@ "visibility": { "public": "Azayez", "unlisted": "War tabdert", - "private": "Followers only", - "direct": "Only people I mention" + "private": "Imeḍfaṛen kan", + "direct": "Imdanen i d-bedreɣ kan" }, "auto_complete": { "space_to_add": "Space to add" }, "accessibility": { - "append_attachment": "Add Attachment", + "append_attachment": "Rnu taceqquft yeddan", "append_poll": "Add Poll", "remove_poll": "Remove Poll", "custom_emoji_picker": "Custom Emoji Picker", @@ -406,22 +406,22 @@ "profile": { "dashboard": { "posts": "tisuffaɣ", - "following": "following", - "followers": "followers" + "following": "iṭafaṛ", + "followers": "imeḍfaren" }, "fields": { - "add_row": "Add Row", + "add_row": "Rnu izirig", "placeholder": { - "label": "Label", - "content": "Content" + "label": "Tabzimt", + "content": "Agbur" } }, "segmented_control": { - "posts": "Posts", + "posts": "Imagraden", "replies": "Tiririyin", "posts_and_replies": "Posts and Replies", - "media": "Media", - "about": "About" + "media": "Amidya", + "about": "Ɣef" }, "relationship_action_alert": { "confirm_mute_user": { @@ -487,7 +487,7 @@ "notification": { "title": { "Everything": "Akk", - "Mentions": "Mentions" + "Mentions": "Abdar" }, "notification_description": { "followed_you": "followed you", @@ -498,19 +498,19 @@ "poll_has_ended": "poll has ended" }, "keyobard": { - "show_everything": "Show Everything", + "show_everything": "Sken yal taɣawsa", "show_mentions": "Show Mentions" } }, "thread": { - "back_title": "Post", + "back_title": "Amagrad", "title": "Post from %s" }, "settings": { "title": "Iɣewwaṛen", "section": { "appearance": { - "title": "Appearance", + "title": "Apparence", "automatic": "Awurman", "light": "Always Light", "dark": "Always Dark" @@ -520,7 +520,7 @@ "use_system": "Use System", "really_dark": "Really Dark", "sorta_dark": "Sorta Dark", - "light": "Light" + "light": "Aceɛlal" }, "notifications": { "title": "Tilɣa", @@ -532,7 +532,7 @@ "anyone": "yal yiwen", "follower": "a follower", "follow": "anyone I follow", - "noone": "no one", + "noone": "ula yiwen", "title": "Notify me when" } }, @@ -546,7 +546,7 @@ "boring_zone": { "title": "The Boring Zone", "account_settings": "Iɣewwaṛen n umiḍan", - "terms": "Terms of Service", + "terms": "Tiwtilin n useqdec", "privacy": "Tasertit tabaḍnit" }, "spicy_zone": { @@ -563,7 +563,7 @@ } }, "report": { - "title_report": "Report", + "title_report": "Aneqqis", "title": "Report %s", "step1": "Step 1 of 2", "step2": "Step 2 of 2", From fa0a5727d8c6ac57e3456f8fa952769a21d64fb3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 13 Feb 2022 13:34:02 +0100 Subject: [PATCH 252/374] New translations app.json (French) --- .../StringsConvertor/input/fr_FR/app.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index c2467b0ad..d5782edee 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Voulez-vous vraiment supprimer ce message ?", - "message": "Are you sure you want to delete this post?" + "message": "Voulez-vous vraiment supprimer ce message ?" }, "clean_cache": { "title": "Vider le cache", @@ -141,7 +141,7 @@ "favorite": "Favori", "unfavorite": "Retirer des favoris", "menu": "Menu", - "hide": "Hide" + "hide": "Cacher" }, "tag": { "url": "URL", @@ -421,7 +421,7 @@ "replies": "Réponses", "posts_and_replies": "Posts and Replies", "media": "Média", - "about": "About" + "about": "À propos" }, "relationship_action_alert": { "confirm_mute_user": { @@ -433,12 +433,12 @@ "message": "Êtes-vous sûr de vouloir désactiver la sourdine de %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Bloquer le compte", + "message": "Confirmer le blocage de %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Débloquer le compte", + "message": "Confirmer le déblocage de %s" } } }, @@ -490,8 +490,8 @@ "Mentions": "Mentions" }, "notification_description": { - "followed_you": "followed you", - "favorited_your_post": "favorited your post", + "followed_you": "s’est abonné à vous", + "favorited_your_post": "a ajouté votre message à ses favoris", "reblogged_your_post": "reblogged your post", "mentioned_you": "mentioned you", "request_to_follow_you": "request to follow you", From f6a325620a1c97f77d5446fab3b69e7321e66116 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 13 Feb 2022 14:54:45 +0100 Subject: [PATCH 253/374] New translations app.json (French) --- .../StringsConvertor/input/fr_FR/app.json | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/Localization/StringsConvertor/input/fr_FR/app.json b/Localization/StringsConvertor/input/fr_FR/app.json index d5782edee..9941ff99e 100644 --- a/Localization/StringsConvertor/input/fr_FR/app.json +++ b/Localization/StringsConvertor/input/fr_FR/app.json @@ -152,10 +152,10 @@ "emoji": "Émoji" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Tout le monde peut voir ce message mais ne sera pas affiché sur le fil public.", + "private": "Seul·e·s leurs abonné·e·s peuvent voir ce message.", + "private_from_me": "Seul·e·s mes abonné·e·s peuvent voir ce message.", + "direct": "Seul·e l’utilisateur·rice mentionnée peut voir ce message." } }, "friendship": { @@ -419,14 +419,14 @@ "segmented_control": { "posts": "Publications", "replies": "Réponses", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Messages et réponses", "media": "Média", "about": "À propos" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Masquer le compte", + "message": "Êtes-vous sûr de vouloir mettre en sourdine %s" }, "confirm_unmute_user": { "title": "Ne plus mettre en sourdine ce compte", @@ -492,10 +492,10 @@ "notification_description": { "followed_you": "s’est abonné à vous", "favorited_your_post": "a ajouté votre message à ses favoris", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "reblogged_your_post": "a partagé votre message", + "mentioned_you": "vous a mentionné", + "request_to_follow_you": "vous a envoyé une demande d’abonnement", + "poll_has_ended": "le sondage est terminé" }, "keyobard": { "show_everything": "Tout Afficher", @@ -516,11 +516,11 @@ "dark": "Toujours sombre" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "Apparence", + "use_system": "Utiliser le thème du système", + "really_dark": "Très sombre", + "sorta_dark": "Légèrement sombre", + "light": "Clair" }, "notifications": { "title": "Notifications", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "Signalement", "title": "Signaler %s", "step1": "Étape 1 de 2", "step2": "Étape 2 de 2", "content1": "Y a-t-il d’autres messages que vous aimeriez ajouter au signalement?", "content2": "Y a-t-il quelque chose que les modérateurs devraient savoir sur ce rapport ?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Merci de nous l’avoir signalé, nous allons examiner cela.", "send": "Envoyer le rapport", "skip_to_send": "Envoyer sans commentaire", "text_placeholder": "Tapez ou collez des informations supplémentaires", - "reported": "REPORTED" + "reported": "SIGNALÉ" }, "preview": { "keyboard": { From 3d7ade174781294b20fa0640cbf54e11cb9e1490 Mon Sep 17 00:00:00 2001 From: CMK Date: Mon, 14 Feb 2022 14:55:00 +0800 Subject: [PATCH 254/374] feat: restore scroll-to-top tap gesture for TabBar --- Mastodon/Protocol/ScrollViewContainer.swift | 4 +- .../HomeTimelineViewController.swift | 6 ++- .../NotificationTimelineViewController.swift | 7 +++ .../NotificationViewController.swift | 10 +++++ .../About/ProfileAboutViewController.swift | 2 +- .../Scene/Profile/ProfileViewController.swift | 44 +++++++++---------- .../Timeline/UserTimelineViewController.swift | 2 +- 7 files changed, 46 insertions(+), 29 deletions(-) diff --git a/Mastodon/Protocol/ScrollViewContainer.swift b/Mastodon/Protocol/ScrollViewContainer.swift index ae79d0e0f..c9f10ba3a 100644 --- a/Mastodon/Protocol/ScrollViewContainer.swift +++ b/Mastodon/Protocol/ScrollViewContainer.swift @@ -8,12 +8,12 @@ import UIKit protocol ScrollViewContainer: UIViewController { - var scrollView: UIScrollView { get } + var scrollView: UIScrollView? { get } func scrollToTop(animated: Bool) } extension ScrollViewContainer { func scrollToTop(animated: Bool) { - scrollView.scrollRectToVisible(CGRect(origin: .zero, size: CGSize(width: 1, height: 1)), animated: animated) + scrollView?.scrollRectToVisible(CGRect(origin: .zero, size: CGSize(width: 1, height: 1)), animated: animated) } } diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index 2af357079..0fda3a48e 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -579,9 +579,13 @@ extension HomeTimelineViewController: TimelineMiddleLoaderTableViewCellDelegate // MARK: - ScrollViewContainer extension HomeTimelineViewController: ScrollViewContainer { - var scrollView: UIScrollView { return tableView } + var scrollView: UIScrollView? { return tableView } func scrollToTop(animated: Bool) { + guard let scrollView = scrollView else { + return + } + if scrollView.contentOffset.y < scrollView.frame.height, viewModel.loadLatestStateMachine.canEnterState(HomeTimelineViewModel.LoadLatestState.Loading.self), (scrollView.contentOffset.y + scrollView.adjustedContentInset.top) == 0.0, diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift index 301b2f377..246630829 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift @@ -176,3 +176,10 @@ extension NotificationTimelineViewController: UITableViewDelegate, AutoGenerateT // MARK: - NotificationTableViewCellDelegate extension NotificationTimelineViewController: NotificationTableViewCellDelegate { } + +// MARK: - ScrollViewContainer +extension NotificationTimelineViewController: ScrollViewContainer { + + var scrollView: UIScrollView? { tableView } + +} diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index aa49680a3..e1f418e2d 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -593,3 +593,13 @@ extension NotificationViewController: UITableViewDelegate { // } // //} + +// MARK: - ScrollViewContainer +extension NotificationViewController: ScrollViewContainer { + var scrollView: UIScrollView? { + guard let viewController = currentViewController as? NotificationTimelineViewController else { + return nil + } + return viewController.scrollView + } +} diff --git a/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift b/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift index 9b386847a..4879be744 100644 --- a/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift +++ b/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift @@ -162,7 +162,7 @@ extension ProfileAboutViewController: ProfileFieldEditCollectionViewCellDelegate // MARK: - ScrollViewContainer extension ProfileAboutViewController: ScrollViewContainer { - var scrollView: UIScrollView { + var scrollView: UIScrollView? { collectionView } } diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index 8fe8ad2b0..75b4eeb3b 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -375,9 +375,12 @@ extension ProfileViewController { viewModel.viewDidAppear.send() // set overlay scroll view initial content size - guard let currentViewController = profileSegmentedViewController.pagingViewController.currentViewController as? ScrollViewContainer else { return } - currentPostTimelineTableViewContentSizeObservation = observeTableViewContentSize(scrollView: currentViewController.scrollView) - currentViewController.scrollView.panGestureRecognizer.require(toFail: overlayScrollView.panGestureRecognizer) + guard let currentViewController = profileSegmentedViewController.pagingViewController.currentViewController as? ScrollViewContainer, + let scrollView = currentViewController.scrollView + else { return } + + currentPostTimelineTableViewContentSizeObservation = observeTableViewContentSize(scrollView: scrollView) + scrollView.panGestureRecognizer.require(toFail: overlayScrollView.panGestureRecognizer) } override func viewDidDisappear(_ animated: Bool) { @@ -787,7 +790,7 @@ extension ProfileViewController: UIScrollViewDelegate { if scrollView.contentOffset.y < topMaxContentOffsetY { self.containerScrollView.contentOffset.y = scrollView.contentOffset.y for postTimelineView in profileSegmentedViewController.pagingViewController.viewModel.viewControllers { - postTimelineView.scrollView.contentOffset.y = 0 + postTimelineView.scrollView?.contentOffset.y = 0 } contentOffsets.removeAll() } else { @@ -797,7 +800,7 @@ extension ProfileViewController: UIScrollViewDelegate { } else { if let customScrollViewContainerController = profileSegmentedViewController.pagingViewController.currentViewController as? ScrollViewContainer { let contentOffsetY = scrollView.contentOffset.y - containerScrollView.contentOffset.y - customScrollViewContainerController.scrollView.contentOffset.y = contentOffsetY + customScrollViewContainerController.scrollView?.contentOffset.y = contentOffsetY } } @@ -840,8 +843,10 @@ extension ProfileViewController: ProfilePagingViewControllerDelegate { overlayScrollView.contentOffset.y = contentOffsets[index] ?? containerScrollView.contentOffset.y // setup observer and gesture fallback - currentPostTimelineTableViewContentSizeObservation = observeTableViewContentSize(scrollView: postTimelineViewController.scrollView) - postTimelineViewController.scrollView.panGestureRecognizer.require(toFail: overlayScrollView.panGestureRecognizer) + if let scrollView = postTimelineViewController.scrollView { + currentPostTimelineTableViewContentSizeObservation = observeTableViewContentSize(scrollView: scrollView) + scrollView.panGestureRecognizer.require(toFail: overlayScrollView.panGestureRecognizer) + } } } @@ -1098,29 +1103,20 @@ extension ProfileViewController: MastodonMenuDelegate { } // MARK: - ScrollViewContainer -//extension ProfileViewController: ScrollViewContainer { -// var scrollView: UIScrollView { return overlayScrollView } -//} -// +extension ProfileViewController: ScrollViewContainer { + var scrollView: UIScrollView? { + return overlayScrollView + } +} + //extension ProfileViewController { -// +// // override var keyCommands: [UIKeyCommand]? { // if !viewModel.isEditing.value { // return segmentedControlNavigateKeyCommands // } -// +// // return nil // } -// -//} - -// MARK: - SegmentedControlNavigateable -//extension ProfileViewController: SegmentedControlNavigateable { -// var navigateableSegmentedControl: UISegmentedControl { -// profileHeaderViewController.pageSegmentedControl -// } // -// @objc func segmentedControlNavigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// segmentedControlNavigateKeyCommandHandler(sender) -// } //} diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift index 0b836da72..1fb37f30f 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift @@ -125,7 +125,7 @@ extension UserTimelineViewController: UITableViewDelegate, AutoGenerateTableView // MARK: - CustomScrollViewContainerController extension UserTimelineViewController: ScrollViewContainer { - var scrollView: UIScrollView { return tableView } + var scrollView: UIScrollView? { return tableView } } // MARK: - StatusTableViewCellDelegate From 66c1b716104e77976d9a6a986c0a58439c119e4b Mon Sep 17 00:00:00 2001 From: CMK Date: Mon, 14 Feb 2022 16:09:39 +0800 Subject: [PATCH 255/374] feat: add cell height cache for user timeline --- Mastodon.xcodeproj/project.pbxproj | 14 +- ...oGenerateTableViewDelegate.generated.swift | 29 ++- .../Protocol/CellFrameCacheContainer.swift | 29 +++ ...stableTimelineViewControllerDelegate.swift | 13 -- .../StatusTableViewControllerAspect.swift | 182 ------------------ .../HomeTimelineViewController.swift | 8 - .../HomeTimeline/HomeTimelineViewModel.swift | 1 - .../Timeline/UserTimelineViewController.swift | 25 ++- 8 files changed, 79 insertions(+), 222 deletions(-) create mode 100644 Mastodon/Protocol/CellFrameCacheContainer.swift delete mode 100644 Mastodon/Protocol/ContentOffsetAdjustableTimelineViewControllerDelegate.swift delete mode 100644 Mastodon/Protocol/StatusTableViewControllerAspect.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index fa1a02595..cad8b9608 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -37,7 +37,6 @@ 2D35237A26256D920031AF25 /* NotificationSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D35237926256D920031AF25 /* NotificationSection.swift */; }; 2D364F7225E66D7500204FDC /* MastodonResendEmailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D364F7125E66D7500204FDC /* MastodonResendEmailViewController.swift */; }; 2D364F7825E66D8300204FDC /* MastodonResendEmailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D364F7725E66D8300204FDC /* MastodonResendEmailViewModel.swift */; }; - 2D38F1C625CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1C525CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift */; }; 2D38F1D525CD465300561493 /* HomeTimelineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1D425CD465300561493 /* HomeTimelineViewController.swift */; }; 2D38F1E525CD46C100561493 /* HomeTimelineViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1E425CD46C100561493 /* HomeTimelineViewModel.swift */; }; 2D38F1EB25CD477000561493 /* HomeTimelineViewModel+LoadLatestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1EA25CD477000561493 /* HomeTimelineViewModel+LoadLatestState.swift */; }; @@ -255,6 +254,7 @@ DB49A61F25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A61E25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift */; }; DB49A62525FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A62425FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift */; }; DB49A62B25FF36C700B98345 /* APIService+CustomEmoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A62A25FF36C700B98345 /* APIService+CustomEmoji.swift */; }; + DB4AA6B327BA34B6009EC082 /* CellFrameCacheContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4AA6B227BA34B6009EC082 /* CellFrameCacheContainer.swift */; }; DB4F0963269ED06300D62E92 /* SearchResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F0962269ED06300D62E92 /* SearchResultViewController.swift */; }; DB4F0966269ED52200D62E92 /* SearchResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F0965269ED52200D62E92 /* SearchResultViewModel.swift */; }; DB4F0968269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4F0967269ED8AD00D62E92 /* SearchHistoryTableHeaderView.swift */; }; @@ -558,7 +558,6 @@ DBE3CDFB261C6CA500430CC6 /* FavoriteViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CDFA261C6CA500430CC6 /* FavoriteViewModel.swift */; }; DBE3CE01261D623D00430CC6 /* FavoriteViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CE00261D623D00430CC6 /* FavoriteViewModel+State.swift */; }; DBE3CE07261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CE06261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift */; }; - DBE3CE13261D7D4200430CC6 /* StatusTableViewControllerAspect.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE3CE12261D7D4200430CC6 /* StatusTableViewControllerAspect.swift */; }; DBE54AC62636C89F004E7C0B /* NotificationPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */; }; DBE54ACC2636C8FD004E7C0B /* NotificationPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */; }; DBF156DF2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBF156DE2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift */; }; @@ -729,7 +728,6 @@ 2D35237926256D920031AF25 /* NotificationSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationSection.swift; sourceTree = ""; }; 2D364F7125E66D7500204FDC /* MastodonResendEmailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonResendEmailViewController.swift; sourceTree = ""; }; 2D364F7725E66D8300204FDC /* MastodonResendEmailViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonResendEmailViewModel.swift; sourceTree = ""; }; - 2D38F1C525CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentOffsetAdjustableTimelineViewControllerDelegate.swift; sourceTree = ""; }; 2D38F1D425CD465300561493 /* HomeTimelineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineViewController.swift; sourceTree = ""; }; 2D38F1E425CD46C100561493 /* HomeTimelineViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineViewModel.swift; sourceTree = ""; }; 2D38F1EA25CD477000561493 /* HomeTimelineViewModel+LoadLatestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HomeTimelineViewModel+LoadLatestState.swift"; sourceTree = ""; }; @@ -978,6 +976,7 @@ DB49A61E25FF32AA00B98345 /* EmojiService+CustomEmojiViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EmojiService+CustomEmojiViewModel.swift"; sourceTree = ""; }; DB49A62425FF334C00B98345 /* EmojiService+CustomEmojiViewModel+LoadState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EmojiService+CustomEmojiViewModel+LoadState.swift"; sourceTree = ""; }; DB49A62A25FF36C700B98345 /* APIService+CustomEmoji.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+CustomEmoji.swift"; sourceTree = ""; }; + DB4AA6B227BA34B6009EC082 /* CellFrameCacheContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellFrameCacheContainer.swift; sourceTree = ""; }; DB4B777F26CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Intents.strings; sourceTree = ""; }; DB4B778226CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/InfoPlist.strings; sourceTree = ""; }; DB4B778326CA4EFA00B087B3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Intents.stringsdict; sourceTree = ""; }; @@ -1292,7 +1291,6 @@ DBE3CDFA261C6CA500430CC6 /* FavoriteViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteViewModel.swift; sourceTree = ""; }; DBE3CE00261D623D00430CC6 /* FavoriteViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewModel+State.swift"; sourceTree = ""; }; DBE3CE06261D6A0E00430CC6 /* FavoriteViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FavoriteViewModel+Diffable.swift"; sourceTree = ""; }; - DBE3CE12261D7D4200430CC6 /* StatusTableViewControllerAspect.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusTableViewControllerAspect.swift; sourceTree = ""; }; DBE54AC52636C89F004E7C0B /* NotificationPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationPreference.swift; sourceTree = ""; }; DBF156DE2701B17600EC00B7 /* SidebarAddAccountCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarAddAccountCollectionViewCell.swift; sourceTree = ""; }; DBF156E02702DA6800EC00B7 /* Mastodon-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Mastodon-Bridging-Header.h"; sourceTree = ""; }; @@ -1668,14 +1666,13 @@ isa = PBXGroup; children = ( DB697DD7278F4C34004EF2F7 /* Provider */, + DB0FCB7127952986006C02E2 /* NamingState.swift */, 2D5A3D3725CF8D9F002347D6 /* ScrollViewContainer.swift */, - 2D38F1C525CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift */, + DB4AA6B227BA34B6009EC082 /* CellFrameCacheContainer.swift */, 2D38F20725CD491300561493 /* DisposeBagCollectable.swift */, - DBE3CE12261D7D4200430CC6 /* StatusTableViewControllerAspect.swift */, DB1D84372657B275000346B3 /* SegmentedControlNavigateable.swift */, DB1D843326579931000346B3 /* TableViewControllerNavigateable.swift */, DB1D842D26552C4D000346B3 /* StatusTableViewControllerNavigateable.swift */, - DB0FCB7127952986006C02E2 /* NamingState.swift */, ); path = Protocol; sourceTree = ""; @@ -4049,7 +4046,6 @@ DB8AF55025C13703002E6C99 /* MainTabBarController.swift in Sources */, DB023D2C27A10464005AC798 /* NotificationTimelineViewController+DataSourceProvider.swift in Sources */, DB9D6BE925E4F5340051B173 /* SearchViewController.swift in Sources */, - 2D38F1C625CD37F400561493 /* ContentOffsetAdjustableTimelineViewControllerDelegate.swift in Sources */, DBF1D257269DBAC600C1C08A /* SearchDetailViewModel.swift in Sources */, DB03F7F52689B782007B274C /* ComposeTableView.swift in Sources */, DBB45B5927B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift in Sources */, @@ -4064,6 +4060,7 @@ DB73BF4B27140C0800781945 /* UITableViewDiffableDataSource.swift in Sources */, DBB525642612C988002F1F29 /* MeProfileViewModel.swift in Sources */, DB6B74EF272FB55000C70B6E /* FollowerListViewController.swift in Sources */, + DB4AA6B327BA34B6009EC082 /* CellFrameCacheContainer.swift in Sources */, DB0FCB942797E2B0006C02E2 /* SearchResultViewModel+Diffable.swift in Sources */, DB63F752279944AA00455B82 /* SearchHistorySectionHeaderCollectionReusableView.swift in Sources */, DBBC24C426A544B900398BB9 /* Theme.swift in Sources */, @@ -4250,7 +4247,6 @@ 2D6DE40026141DF600A63F6A /* SearchViewModel.swift in Sources */, DB51D172262832380062B7A1 /* BlurHashDecode.swift in Sources */, DBCCC71E25F73297007E1AB6 /* APIService+Reblog.swift in Sources */, - DBE3CE13261D7D4200430CC6 /* StatusTableViewControllerAspect.swift in Sources */, DB0617FD27855BFE0030EE79 /* ServerRuleItem.swift in Sources */, 5BB04FD5262E7AFF0043BFF6 /* ReportViewController.swift in Sources */, DBAE3F942616E28B004B8251 /* APIService+Follow.swift in Sources */, diff --git a/Mastodon/Generated/AutoGenerateTableViewDelegate.generated.swift b/Mastodon/Generated/AutoGenerateTableViewDelegate.generated.swift index b8c092f6a..ebf867007 100644 --- a/Mastodon/Generated/AutoGenerateTableViewDelegate.generated.swift +++ b/Mastodon/Generated/AutoGenerateTableViewDelegate.generated.swift @@ -2,7 +2,13 @@ // DO NOT EDIT -// sourcery:inline:FollowingListViewController.AutoGenerateTableViewDelegate + + + + + + +// sourcery:inline:UserTimelineViewController.AutoGenerateTableViewDelegate // Generated using Sourcery // DO NOT EDIT @@ -10,11 +16,20 @@ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { aspectTableView(tableView, didSelectRowAt: indexPath) } +func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { + return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) +} + +func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) +} + +func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { + return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) +} + +func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { + aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) +} // sourcery:end - - - - - - diff --git a/Mastodon/Protocol/CellFrameCacheContainer.swift b/Mastodon/Protocol/CellFrameCacheContainer.swift new file mode 100644 index 000000000..b7cefe757 --- /dev/null +++ b/Mastodon/Protocol/CellFrameCacheContainer.swift @@ -0,0 +1,29 @@ +// +// CellFrameCacheContainer.swift +// TwidereX +// +// Created by Cirno MainasuK on 2021-10-13. +// Copyright © 2021 Twidere. All rights reserved. +// + +import UIKit + +protocol CellFrameCacheContainer { + var cellFrameCache: NSCache { get } + + func keyForCache(tableView: UITableView, indexPath: IndexPath) -> NSNumber? +} + +extension CellFrameCacheContainer { + func cacheCellFrame(tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { + guard let key = keyForCache(tableView: tableView, indexPath: indexPath) else { return } + let value = NSValue(cgRect: cell.frame) + cellFrameCache.setObject(value, forKey: key) + } + + func retrieveCellFrame(tableView: UITableView, indexPath: IndexPath) -> CGRect? { + guard let key = keyForCache(tableView: tableView, indexPath: indexPath) else { return nil } + guard let frame = cellFrameCache.object(forKey: key)?.cgRectValue else { return nil } + return frame + } +} diff --git a/Mastodon/Protocol/ContentOffsetAdjustableTimelineViewControllerDelegate.swift b/Mastodon/Protocol/ContentOffsetAdjustableTimelineViewControllerDelegate.swift deleted file mode 100644 index 98160eb42..000000000 --- a/Mastodon/Protocol/ContentOffsetAdjustableTimelineViewControllerDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -// -// ContentOffsetAdjustableTimelineViewControllerDelegate.swift -// Mastodon -// -// Created by sxiaojian on 2021/2/5. -// - -import UIKit - -protocol ContentOffsetAdjustableTimelineViewControllerDelegate: AnyObject { - func navigationBar() -> UINavigationBar? -} - diff --git a/Mastodon/Protocol/StatusTableViewControllerAspect.swift b/Mastodon/Protocol/StatusTableViewControllerAspect.swift deleted file mode 100644 index e0e9a8fd0..000000000 --- a/Mastodon/Protocol/StatusTableViewControllerAspect.swift +++ /dev/null @@ -1,182 +0,0 @@ -//// -//// StatusTableViewControllerAspect.swift -//// Mastodon -//// -//// Created by MainasuK Cirno on 2021-4-7. -//// -// -//import UIKit -//import AVKit -//import GameController -// -//// Check List Last Updated -//// - HomeViewController: 2021/7/15 -//// - FavoriteViewController: 2021/4/30 -//// - HashtagTimelineViewController: 2021/4/30 -//// - UserTimelineViewController: 2021/4/30 -//// - ThreadViewController: 2021/4/30 -//// - SearchResultViewController: 2021/7/15 -//// * StatusTableViewControllerAspect: 2021/7/15 -// -//// (Fake) Aspect protocol to group common protocol extension implementations -//// Needs update related view controller when aspect interface changes -// -///// Status related operations aspect -///// Please check the aspect methods (Option+Click) and add hook to implement features -///// - UI -///// - Media -///// - Data Source -//protocol StatusTableViewControllerAspect: UIViewController { -// var tableView: UITableView { get } -//} -// -//// MARK: - UIViewController [A] -// -//// [A1] aspectViewWillAppear(_:) -//extension StatusTableViewControllerAspect { -// /// [UI] hook to deselect row in the transitioning for the table view -// func aspectViewWillAppear(_ animated: Bool) { -// if GCKeyboard.coalesced != nil, let backKeyCommandPressDate = UserDefaults.shared.backKeyCommandPressDate { -// guard backKeyCommandPressDate.timeIntervalSinceNow <= -0.5 else { -// // break if interval greater than 0.5s -// return -// } -// } -// tableView.deselectRow(with: transitionCoordinator, animated: animated) -// } -//} -// -//// [A2] aspectViewDidDisappear(_:) -//extension StatusTableViewControllerAspect where Self: NeedsDependency { -// /// [Media] hook to notify video service -// func aspectViewDidDisappear(_ animated: Bool) { -// context.videoPlaybackService.viewDidDisappear(from: self) -// context.audioPlaybackService.viewDidDisappear(from: self) -// } -//} -// -//// MARK: - UITableViewDelegate [B] -// -//// [B1] aspectTableView(_:estimatedHeightForRowAt:) -//extension StatusTableViewControllerAspect where Self: LoadMoreConfigurableTableViewContainer { -// /// [Data Source] hook to notify table view bottom loader -// func aspectScrollViewDidScroll(_ scrollView: UIScrollView) { -// handleScrollViewDidScroll(scrollView) -// } -//} -// -//// [B2] aspectTableView(_:estimatedHeightForRowAt:) -//extension StatusTableViewControllerAspect where Self: TableViewCellHeightCacheableContainer { -// /// [UI] hook to estimate table view cell height from cache -// func aspectTableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { -// handleTableView(tableView, estimatedHeightForRowAt: indexPath) -// } -//} -// -//// [B3] aspectTableView(_:willDisplay:forRowAt:) -//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { -// func aspectTableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// handleTableView(tableView, willDisplay: cell, forRowAt: indexPath) -// } -//} -// -//// [B4] aspectTableView(_:didEndDisplaying:forRowAt:) -//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { -// /// [Media] hook to notify video service -// func aspectTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// handleTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// } -//} -// -//extension StatusTableViewControllerAspect where Self: TableViewCellHeightCacheableContainer { -// /// [UI] hook to cache table view cell height -// func aspectTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// cacheTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// } -//} -// -//extension StatusTableViewControllerAspect where Self: StatusProvider & StatusTableViewCellDelegate & TableViewCellHeightCacheableContainer { -// /// [Media] hook to notify video service -// /// [UI] hook to cache table view cell height -// func aspectTableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// handleTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// cacheTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// } -//} -// -//// [B5] aspectTableView(_:didSelectRowAt:) -//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { -// /// [UI] hook to coordinator to thread -// func aspectTableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// handleTableView(tableView, didSelectRowAt: indexPath) -// } -//} -// -//// [B6] aspectTableView(_:contextMenuConfigurationForRowAt:point:) -//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { -// // [UI] hook to display context menu for images -// func aspectTableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { -// return handleTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) -// } -//} -// -//// [B7] aspectTableView(_:contextMenuConfigurationForRowAt:point:) -//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { -// // [UI] hook to configure context menu for images -// func aspectTableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return handleTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) -// } -//} -// -//// [B8] aspectTableView(_:previewForDismissingContextMenuWithConfiguration:) -//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { -// // [UI] hook to configure context menu for images -// func aspectTableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return handleTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) -// } -//} -// -//// [B9] aspectTableView(_:willPerformPreviewActionForMenuWith:animator:) -//extension StatusTableViewControllerAspect where Self: StatusTableViewCellDelegate & StatusProvider { -// // [UI] hook to configure context menu preview action -// func aspectTableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { -// handleTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) -// } -//} -// -//// MARK: - UITableViewDataSourcePrefetching [C] -// -//// [C1] aspectTableView(:prefetchRowsAt) -//extension StatusTableViewControllerAspect where Self: UITableViewDataSourcePrefetching & StatusTableViewCellDelegate & StatusProvider { -// /// [Data Source] hook to prefetch status -// func aspectTableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { -// handleTableView(tableView, prefetchRowsAt: indexPaths) -// } -//} -// -//// [C2] aspectTableView(:prefetchRowsAt) -//extension StatusTableViewControllerAspect where Self: UITableViewDataSourcePrefetching & StatusTableViewCellDelegate & StatusProvider { -// /// [Data Source] hook to cancel prefetch status -// func aspectTableView(_ tableView: UITableView, cancelPrefetchingForRowsAt indexPaths: [IndexPath]) { -// handleTableView(tableView, cancelPrefetchingForRowsAt: indexPaths) -// } -//} -// -//// MARK: - AVPlayerViewControllerDelegate & NeedsDependency [D] -// -//// [D1] aspectPlayerViewController(_:willBeginFullScreenPresentationWithAnimationCoordinator:) -//extension StatusTableViewControllerAspect where Self: AVPlayerViewControllerDelegate & NeedsDependency { -// /// [Media] hook to mark transitioning to video service -// func aspectPlayerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -//} -// -//// [D2] aspectPlayerViewController(_:willEndFullScreenPresentationWithAnimationCoordinator:) -//extension StatusTableViewControllerAspect where Self: AVPlayerViewControllerDelegate & NeedsDependency { -// /// [Media] hook to mark transitioning to video service -// func aspectPlayerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -//} -// diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index 0fda3a48e..b8ad6d05e 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -183,7 +183,6 @@ extension HomeTimelineViewController { ]) viewModel.tableView = tableView - viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self tableView.delegate = self viewModel.setupDiffableDataSource( tableView: tableView, @@ -556,13 +555,6 @@ extension HomeTimelineViewController: UITableViewDelegate, AutoGenerateTableView } -// MARK: - ContentOffsetAdjustableTimelineViewControllerDelegate -extension HomeTimelineViewController: ContentOffsetAdjustableTimelineViewControllerDelegate { - func navigationBar() -> UINavigationBar? { - return navigationController?.navigationBar - } -} - // MARK: - TimelineMiddleLoaderTableViewCellDelegate extension HomeTimelineViewController: TimelineMiddleLoaderTableViewCellDelegate { func timelineMiddleLoaderTableViewCell(_ cell: TimelineMiddleLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) { diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift index 488964edf..b2c280fb5 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel.swift @@ -35,7 +35,6 @@ final class HomeTimelineViewModel: NSObject { @Published var displaySettingBarButtonItem = true @Published var displayComposeBarButtonItem = true - weak var contentOffsetAdjustableTimelineViewControllerDelegate: ContentOffsetAdjustableTimelineViewControllerDelegate? weak var tableView: UITableView? weak var timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate? diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift index 1fb37f30f..3aa20541f 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift @@ -35,8 +35,8 @@ final class UserTimelineViewController: UIViewController, NeedsDependency, Media tableView.backgroundColor = .clear return tableView }() - - var overrideNavigationScrollPosition: UITableView.ScrollPosition? = nil + + let cellFrameCache = NSCache() deinit { os_log("%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) @@ -93,6 +93,16 @@ extension UserTimelineViewController { } +// MARK: - CellFrameCacheContainer +extension UserTimelineViewController: CellFrameCacheContainer { + func keyForCache(tableView: UITableView, indexPath: IndexPath) -> NSNumber? { + guard let diffableDataSource = viewModel.diffableDataSource else { return nil } + guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return nil } + let key = NSNumber(value: item.hashValue) + return key + } +} + // MARK: - UITableViewDelegate extension UserTimelineViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { // sourcery:inline:UserTimelineViewController.AutoGenerateTableViewDelegate @@ -121,6 +131,17 @@ extension UserTimelineViewController: UITableViewDelegate, AutoGenerateTableView // sourcery:end + func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { + guard let frame = retrieveCellFrame(tableView: tableView, indexPath: indexPath) else { + return 200 + } + return ceil(frame.height) + } + + func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { + cacheCellFrame(tableView: tableView, didEndDisplaying: cell, forRowAt: indexPath) + } + } // MARK: - CustomScrollViewContainerController From 0f3764e3af76f9c68e591ff18755fd02651ccb6a Mon Sep 17 00:00:00 2001 From: CMK Date: Mon, 14 Feb 2022 16:22:03 +0800 Subject: [PATCH 256/374] feat: display no results when profile field empty --- .../Diffiable/Profile/ProfileFieldItem.swift | 1 + .../Profile/ProfileFieldSection.swift | 22 +++++++++++++++++++ .../ProfileAboutViewModel+Diffable.swift | 4 ++++ 3 files changed, 27 insertions(+) diff --git a/Mastodon/Diffiable/Profile/ProfileFieldItem.swift b/Mastodon/Diffiable/Profile/ProfileFieldItem.swift index 60651d72e..47848cc01 100644 --- a/Mastodon/Diffiable/Profile/ProfileFieldItem.swift +++ b/Mastodon/Diffiable/Profile/ProfileFieldItem.swift @@ -14,6 +14,7 @@ enum ProfileFieldItem: Hashable { case field(field: FieldValue) case editField(field: FieldValue) case addEntry + case noResult } extension ProfileFieldItem { diff --git a/Mastodon/Diffiable/Profile/ProfileFieldSection.swift b/Mastodon/Diffiable/Profile/ProfileFieldSection.swift index fc2dee158..e1b0d649f 100644 --- a/Mastodon/Diffiable/Profile/ProfileFieldSection.swift +++ b/Mastodon/Diffiable/Profile/ProfileFieldSection.swift @@ -107,6 +107,22 @@ extension ProfileFieldSection { cell.backgroundConfiguration = backgroundConfiguration } + let noResultCellRegistration = UICollectionView.CellRegistration { cell, indexPath, item in + guard case .noResult = item else { return } + + var contentConfiguration = cell.defaultContentConfiguration() + contentConfiguration.text = L10n.Scene.Search.Searching.EmptyState.noResults // FIXME: + contentConfiguration.textProperties.alignment = .center + cell.contentConfiguration = contentConfiguration + + + var backgroundConfiguration = UIBackgroundConfiguration.listPlainCell() + backgroundConfiguration.backgroundColorTransformer = .init { _ in + return .secondarySystemBackground + } + cell.backgroundConfiguration = backgroundConfiguration + } + let dataSource = UICollectionViewDiffableDataSource(collectionView: collectionView) { collectionView, indexPath, item in switch item { case .field: @@ -127,6 +143,12 @@ extension ProfileFieldSection { for: indexPath, item: item ) + case .noResult: + return collectionView.dequeueConfiguredReusableCell( + using: noResultCellRegistration, + for: indexPath, + item: item + ) } } diff --git a/Mastodon/Scene/Profile/About/ProfileAboutViewModel+Diffable.swift b/Mastodon/Scene/Profile/About/ProfileAboutViewModel+Diffable.swift index 66b7d25c1..259cad12d 100644 --- a/Mastodon/Scene/Profile/About/ProfileAboutViewModel+Diffable.swift +++ b/Mastodon/Scene/Profile/About/ProfileAboutViewModel+Diffable.swift @@ -74,6 +74,10 @@ extension ProfileAboutViewModel { items.append(.addEntry) } + if !isEditing, items.isEmpty { + items.append(.noResult) + } + snapshot.appendItems(items, toSection: .main) diffableDataSource.apply(snapshot, animatingDifferences: false, completion: nil) From dd610d672f82e83ad129b18594718b21520cf08c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Feb 2022 11:29:30 +0100 Subject: [PATCH 257/374] New translations app.json (Chinese Traditional) --- Localization/StringsConvertor/input/zh_TW/app.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/zh_TW/app.json b/Localization/StringsConvertor/input/zh_TW/app.json index ad99e178d..9482e205c 100644 --- a/Localization/StringsConvertor/input/zh_TW/app.json +++ b/Localization/StringsConvertor/input/zh_TW/app.json @@ -2,7 +2,7 @@ "common": { "alerts": { "common": { - "please_try_again": "Please try again.", + "please_try_again": "請再試一次。", "please_try_again_later": "Please try again later." }, "sign_up_failure": { @@ -68,11 +68,11 @@ "confirm": "Confirm", "continue": "Continue", "compose": "Compose", - "cancel": "Cancel", + "cancel": "取消", "discard": "Discard", "try_again": "Try Again", "take_photo": "Take Photo", - "save_photo": "Save Photo", + "save_photo": "儲存照片", "copy_photo": "Copy Photo", "sign_in": "Sign In", "sign_up": "Sign Up", From 9c60e33ced074f47d950512f6684c43008fd7e48 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Feb 2022 12:24:48 +0100 Subject: [PATCH 258/374] New translations app.json (Chinese Traditional) --- .../StringsConvertor/input/zh_TW/app.json | 98 +++++++++---------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/Localization/StringsConvertor/input/zh_TW/app.json b/Localization/StringsConvertor/input/zh_TW/app.json index 9482e205c..be2442e4b 100644 --- a/Localization/StringsConvertor/input/zh_TW/app.json +++ b/Localization/StringsConvertor/input/zh_TW/app.json @@ -3,20 +3,20 @@ "alerts": { "common": { "please_try_again": "請再試一次。", - "please_try_again_later": "Please try again later." + "please_try_again_later": "請稍候再試。" }, "sign_up_failure": { - "title": "Sign Up Failure" + "title": "註冊失敗" }, "server_error": { - "title": "Server Error" + "title": "伺服器錯誤" }, "vote_failure": { "title": "Vote Failure", "poll_ended": "The poll has ended" }, "discard_post_content": { - "title": "Discard Draft", + "title": "捨棄草稿", "message": "Confirm to discard composed post content." }, "publish_post_failure": { @@ -32,9 +32,9 @@ "message": "Cannot edit profile. Please try again." }, "sign_out": { - "title": "Sign Out", + "title": "登出", "message": "Are you sure you want to sign out?", - "confirm": "Sign Out" + "confirm": "登出" }, "block_domain": { "title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.", @@ -61,12 +61,12 @@ "open": "Open", "add": "Add", "remove": "Remove", - "edit": "Edit", + "edit": "編輯", "save": "Save", "ok": "OK", - "done": "Done", + "done": "完成", "confirm": "Confirm", - "continue": "Continue", + "continue": "繼續", "compose": "Compose", "cancel": "取消", "discard": "Discard", @@ -74,35 +74,35 @@ "take_photo": "Take Photo", "save_photo": "儲存照片", "copy_photo": "Copy Photo", - "sign_in": "Sign In", - "sign_up": "Sign Up", + "sign_in": "登入", + "sign_up": "註冊", "see_more": "See More", "preview": "Preview", - "share": "Share", + "share": "分享", "share_user": "Share %s", "share_post": "Share Post", "open_in_safari": "Open in Safari", "open_in_browser": "Open in Browser", "find_people": "Find people to follow", "manually_search": "Manually search instead", - "skip": "Skip", - "reply": "Reply", + "skip": "跳過", + "reply": "回覆", "report_user": "Report %s", - "block_domain": "Block %s", - "unblock_domain": "Unblock %s", - "settings": "Settings", - "delete": "Delete" + "block_domain": "封鎖 %s", + "unblock_domain": "解除封鎖 %s", + "settings": "設定", + "delete": "刪除" }, "tabs": { - "home": "Home", - "search": "Search", - "notification": "Notification", - "profile": "Profile" + "home": "首頁", + "search": "搜尋", + "notification": "通知", + "profile": "個人檔案" }, "keyboard": { "common": { - "switch_to_tab": "Switch to %s", - "compose_new_post": "Compose New Post", + "switch_to_tab": "切換至 %s", + "compose_new_post": "發佈貼文", "show_favorites": "Show Favorites", "open_settings": "Open Settings" }, @@ -131,11 +131,11 @@ "content_warning": "Content Warning", "media_content_warning": "Tap anywhere to reveal", "poll": { - "vote": "Vote", + "vote": "投票", "closed": "Closed" }, "actions": { - "reply": "Reply", + "reply": "回覆", "reblog": "Reblog", "unreblog": "Undo reblog", "favorite": "Favorite", @@ -148,7 +148,7 @@ "mention": "Mention", "link": "Link", "hashtag": "Hashtag", - "email": "Email", + "email": "電子郵件", "emoji": "Emoji" }, "visibility": { @@ -159,16 +159,16 @@ } }, "friendship": { - "follow": "Follow", + "follow": "追蹤", "following": "Following", "request": "Request", "pending": "Pending", "block": "Block", - "block_user": "Block %s", - "block_domain": "Block %s", - "unblock": "Unblock", - "unblock_user": "Unblock %s", - "blocked": "Blocked", + "block_user": "封鎖 %s", + "block_domain": "封鎖 %s", + "unblock": "解除封鎖", + "unblock_user": "解除封鎖 %s", + "blocked": "已封鎖", "mute": "Mute", "mute_user": "Mute %s", "unmute": "Unmute", @@ -202,7 +202,7 @@ "welcome": { "slogan": "Social networking\nback in your hands.", "get_started": "Get Started", - "log_in": "Log In" + "log_in": "登入" }, "server_picker": { "title": "Mastodon is made of users in different communities.", @@ -246,7 +246,7 @@ "title": "Let’s get you set up on %s", "input": { "avatar": { - "delete": "Delete" + "delete": "刪除" }, "username": { "placeholder": "username", @@ -259,9 +259,9 @@ "placeholder": "email" }, "password": { - "placeholder": "password", + "placeholder": "密碼", "require": "Your password needs at least:", - "character_limit": "8 characters", + "character_limit": "8 個字元", "accessibility": { "checked": "checked", "unchecked": "unchecked" @@ -275,8 +275,8 @@ "error": { "item": { "username": "Username", - "email": "Email", - "password": "Password", + "email": "電子郵件", + "password": "密碼", "agreement": "Agreement", "locale": "Locale", "reason": "Reason" @@ -358,14 +358,14 @@ "replying_to_user": "replying to %s", "attachment": { "photo": "photo", - "video": "video", + "video": "影片", "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", "description_photo": "Describe the photo for the visually-impaired...", "description_video": "Describe the video for the visually-impaired..." }, "poll": { "duration_time": "Duration: %s", - "thirty_minutes": "30 minutes", + "thirty_minutes": "30 分鐘", "one_hour": "1 Hour", "six_hours": "6 Hours", "one_day": "1 Day", @@ -417,7 +417,7 @@ } }, "segmented_control": { - "posts": "Posts", + "posts": "貼文", "replies": "Replies", "posts_and_replies": "Posts and Replies", "media": "Media", @@ -449,10 +449,10 @@ "footer": "Follows from other servers are not displayed." }, "search": { - "title": "Search", + "title": "搜尋", "search_bar": { "placeholder": "Search hashtags and users", - "cancel": "Cancel" + "cancel": "取消" }, "recommend": { "button_text": "See All", @@ -464,7 +464,7 @@ "accounts": { "title": "Accounts you might like", "description": "You may like to follow these accounts", - "follow": "Follow" + "follow": "追蹤" } }, "searching": { @@ -472,7 +472,7 @@ "all": "All", "people": "People", "hashtags": "Hashtags", - "posts": "Posts" + "posts": "貼文" }, "empty_state": { "no_results": "No results" @@ -507,11 +507,11 @@ "title": "Post from %s" }, "settings": { - "title": "Settings", + "title": "設定", "section": { "appearance": { "title": "Appearance", - "automatic": "Automatic", + "automatic": "自動", "light": "Always Light", "dark": "Always Dark" }, @@ -552,7 +552,7 @@ "spicy_zone": { "title": "The Spicy Zone", "clear": "Clear Media Cache", - "signout": "Sign Out" + "signout": "登出" } }, "footer": { From 61d84cc5a0f517050149adcc9859992b1176317f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Feb 2022 12:24:49 +0100 Subject: [PATCH 259/374] New translations Intents.strings (Japanese) --- .../StringsConvertor/Intents/input/ja_JP/Intents.strings | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings b/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings index a2c7eba5b..565f5137c 100644 --- a/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings @@ -8,7 +8,7 @@ "HdGikU" = "投稿に失敗しました"; -"KDNTJ4" = "Failure Reason"; +"KDNTJ4" = "失敗の理由"; "RHxKOw" = "Send Post with text content"; @@ -16,7 +16,7 @@ "WCIR3D" = "Mastodonに ${content} を投稿"; -"ZKJSNu" = "Post"; +"ZKJSNu" = "投稿"; "ZS1XaK" = "${content}"; From ce80409eadabec57c4568f48eb515b8b678930d9 Mon Sep 17 00:00:00 2001 From: CMK Date: Mon, 14 Feb 2022 19:34:22 +0800 Subject: [PATCH 260/374] feat: make status detail accessible --- Localization/Localizable.stringsdict | 22 ++++++++ Localization/app.json | 12 ++++- Mastodon/Diffiable/Search/SearchSection.swift | 13 ++++- .../Header/View/ProfileHeaderView.swift | 1 + .../Search/Cell/TrendCollectionViewCell.swift | 1 + ...dSectionHeaderCollectionReusableView.swift | 1 + .../StatusThreadRootTableViewCell.swift | 50 ++++++++++++++++++- .../MastodonUI/View/Button/AvatarButton.swift | 4 ++ .../Container/MediaGridContainerView.swift | 7 +++ .../MastodonUI/View/Content/MediaView.swift | 7 +++ .../Content/PollOptionView+ViewModel.swift | 19 +++++++ .../View/Content/PollOptionView.swift | 20 ++++++++ .../View/Content/StatusView+ViewModel.swift | 18 +++++++ .../MastodonUI/View/Content/StatusView.swift | 10 ++-- .../View/Control/ActionToolbarContainer.swift | 17 ++++++- .../View/Control/SpoilerOverlayView.swift | 2 + 16 files changed, 195 insertions(+), 9 deletions(-) diff --git a/Localization/Localizable.stringsdict b/Localization/Localizable.stringsdict index ce358b439..4b9a12762 100644 --- a/Localization/Localizable.stringsdict +++ b/Localization/Localizable.stringsdict @@ -156,6 +156,28 @@ %ld reblogs + plural.count.reply + + NSStringLocalizedFormatKey + %#@reply_count@ + reply_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + zero + 0 replies + one + 1 reply + few + %ld replies + many + %ld replies + other + %ld replies + + plural.count.vote NSStringLocalizedFormatKey diff --git a/Localization/app.json b/Localization/app.json index ad99e178d..fad7cc206 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -130,6 +130,7 @@ "show_user_profile": "Show user profile", "content_warning": "Content Warning", "media_content_warning": "Tap anywhere to reveal", + "tap_to_reveal": "Tap to reveal", "poll": { "vote": "Vote", "closed": "Closed" @@ -141,7 +142,11 @@ "favorite": "Favorite", "unfavorite": "Unfavorite", "menu": "Menu", - "hide": "Hide" + "hide": "Hide", + "show_image": "Show image", + "show_gif": "Show GIF", + "show_video_player": "Show video player", + "tap_then_hold_to_show_menu": "Tap then hold to show menu" }, "tag": { "url": "URL", @@ -440,6 +445,11 @@ "title": "Unblock Account", "message": "Confirm to unblock %s" } + }, + "accessibility": { + "show_avatar_image": "Show avatar image", + "edit_avatar_image": "Edit avatar image", + "show_banner_image": "Show banner image" } }, "follower": { diff --git a/Mastodon/Diffiable/Search/SearchSection.swift b/Mastodon/Diffiable/Search/SearchSection.swift index 38c87a76e..21f1d479c 100644 --- a/Mastodon/Diffiable/Search/SearchSection.swift +++ b/Mastodon/Diffiable/Search/SearchSection.swift @@ -21,8 +21,11 @@ extension SearchSection { ) -> UICollectionViewDiffableDataSource { let trendCellRegister = UICollectionView.CellRegistration { cell, indexPath, item in - cell.primaryLabel.text = "#" + item.name - cell.secondaryLabel.text = L10n.Scene.Search.Recommend.HashTag.peopleTalking(item.talkingPeopleCount ?? 0) + let primaryLabelText = "#" + item.name + let secondaryLabelText = L10n.Scene.Search.Recommend.HashTag.peopleTalking(item.talkingPeopleCount ?? 0) + + cell.primaryLabel.text = primaryLabelText + cell.secondaryLabel.text = secondaryLabelText cell.lineChartView.data = (item.history ?? []) .sorted(by: { $0.day < $1.day }) // latest last @@ -32,6 +35,12 @@ extension SearchSection { } return CGFloat(point) } + + cell.isAccessibilityElement = true + cell.accessibilityLabel = [ + primaryLabelText, + secondaryLabelText + ].joined(separator: ", ") } let dataSource = UICollectionViewDiffableDataSource( diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index 0c1b0423e..aadb0d70f 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -75,6 +75,7 @@ final class ProfileHeaderView: UIView { let avatarButton: AvatarButton = { let button = AvatarButton() button.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 0))) + button.accessibilityLabel = "Avatar image" // FIXME: i18n return button }() diff --git a/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift b/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift index 48a7606b5..a43d65df4 100644 --- a/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift +++ b/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift @@ -132,3 +132,4 @@ extension TrendCollectionViewCell { } } + diff --git a/Mastodon/Scene/Search/Search/Cell/TrendSectionHeaderCollectionReusableView.swift b/Mastodon/Scene/Search/Search/Cell/TrendSectionHeaderCollectionReusableView.swift index 4632f384c..9d21ee287 100644 --- a/Mastodon/Scene/Search/Search/Cell/TrendSectionHeaderCollectionReusableView.swift +++ b/Mastodon/Scene/Search/Search/Cell/TrendSectionHeaderCollectionReusableView.swift @@ -23,6 +23,7 @@ final class TrendSectionHeaderCollectionReusableView: UICollectionReusableView { label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 22, weight: .bold)) label.textColor = Asset.Colors.Label.primary.color label.text = L10n.Scene.Search.Recommend.HashTag.title + label.numberOfLines = 0 return label }() diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift index e16e4f289..d971cada5 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift @@ -79,8 +79,8 @@ extension StatusThreadRootTableViewCell { statusView.delegate = self // a11y - statusView.contentMetaText.textView.isSelectable = true statusView.contentMetaText.textView.isAccessibilityElement = false + statusView.contentMetaText.textView.isSelectable = true } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { @@ -91,6 +91,54 @@ extension StatusThreadRootTableViewCell { } +extension StatusThreadRootTableViewCell { + + override var accessibilityElements: [Any]? { + get { + var elements = [ + statusView.headerContainerView, + statusView.avatarButton, + statusView.authorNameLabel, + statusView.menuButton, + statusView.authorUsernameLabel, + statusView.dateLabel, + statusView.contentSensitiveeToggleButton, + statusView.spoilerOverlayView, + statusView.contentMetaText.textView, + statusView.mediaGridContainerView, + statusView.pollTableView, + statusView.pollStatusStackView, + statusView.statusVisibilityView, + statusView.actionToolbarContainer, + statusView.statusMetricView + ] + + if !statusView.viewModel.isSensitive { + elements.removeAll(where: { $0 === statusView.contentSensitiveeToggleButton }) + } + + if statusView.viewModel.isContentReveal { + elements.removeAll(where: { $0 === statusView.spoilerOverlayView }) + } else { + elements.removeAll(where: { $0 === statusView.contentMetaText.textView }) + } + + if statusView.statusVisibilityView.isHidden { + elements.removeAll(where: { $0 === statusView.statusVisibilityView }) + } + + if statusView.viewModel.pollItems.isEmpty { + elements.removeAll(where: { $0 === statusView.pollTableView }) + elements.removeAll(where: { $0 === statusView.pollStatusStackView }) + } + + return elements + } + set { } + } + +} + extension StatusThreadRootTableViewCell: AdaptiveContainerMarginTableViewCell { var containerView: StatusView { statusView diff --git a/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift b/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift index 3854c4700..57257fd89 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift @@ -7,6 +7,7 @@ import os.log import UIKit +import MastodonLocalization open class AvatarButton: UIControl { @@ -37,6 +38,9 @@ open class AvatarButton: UIControl { avatarImageView.trailingAnchor.constraint(equalTo: trailingAnchor), avatarImageView.bottomAnchor.constraint(equalTo: bottomAnchor), ]) + + isAccessibilityElement = true + accessibilityLabel = L10n.Common.Controls.Status.showUserProfile } public override func layoutSubviews() { diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift index 41d97c0f2..cb9c53f35 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift @@ -74,6 +74,13 @@ public final class MediaGridContainerView: UIView { super.init(coder: coder) _init() } + + public override var accessibilityElements: [Any]? { + get { + mediaViews + } + set { } + } } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift index 68847e747..f4231f02c 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift @@ -104,6 +104,8 @@ extension MediaView { extension MediaView { private func _init() { // lazy load content later + + isAccessibilityElement = true } public func setup(configuration: Configuration) { @@ -115,13 +117,18 @@ extension MediaView { case .image(let info): layoutImage() bindImage(configuration: configuration, info: info) + accessibilityLabel = "Show image" // TODO: i18n case .gif(let info): layoutGIF() bindGIF(configuration: configuration, info: info) + accessibilityLabel = "Show GIF" // TODO: i18n case .video(let info): layoutVideo() bindVideo(configuration: configuration, info: info) + accessibilityLabel = "Show video player" // TODO: i18n } + + accessibilityHint = "Tap then hold to show menu" // TODO: i18n layoutBlurhash() bindBlurhash(configuration: configuration) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView+ViewModel.swift index ff458e7ad..e25e5d0a8 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView+ViewModel.swift @@ -50,6 +50,8 @@ extension PollOptionView { @Published public var primaryStripProgressViewTintColor: UIColor = Asset.Colors.brandBlue.color @Published public var secondaryStripProgressViewTintColor: UIColor = Asset.Colors.brandBlue.color.withAlphaComponent(0.5) + @Published public var groupedAccessibilityLabel = "" + init() { // selectState Publishers.CombineLatest3( @@ -136,9 +138,11 @@ extension PollOptionView.ViewModel { .sink { metaContent in guard let metaContent = metaContent else { view.optionTextField.text = "" + view.optionTextField.accessibilityLabel = "" return } view.optionTextField.text = metaContent.string + view.optionTextField.accessibilityLabel = metaContent.string } .store(in: &disposeBag) // selectState @@ -175,6 +179,21 @@ extension PollOptionView.ViewModel { } } .store(in: &disposeBag) + + bindAccessibility(view: view) + } + + private func bindAccessibility(view: PollOptionView) { + $selectState + .sink { selectState in + switch selectState { + case .on: + view.accessibilityTraits.insert(.selected) + default: + view.accessibilityTraits.remove(.selected) + } + } + .store(in: &disposeBag) } } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift index d56ac06e9..df000233c 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift @@ -177,6 +177,26 @@ extension PollOptionView { plusCircleImageView.isHidden = true updateCornerRadius() + + isAccessibilityElement = true + } + + public override var accessibilityLabel: String? { + get { + switch viewModel.voteState { + case .reveal: + return [ + optionTextField, + optionPercentageLabel + ] + .compactMap { $0.accessibilityLabel } + .joined(separator: ", ") + + case .hidden: + return optionTextField.accessibilityLabel + } + } + set { } } public override func layoutSubviews() { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index da529ea12..39a802dbc 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -698,6 +698,9 @@ extension StatusView.ViewModel { if let spoilerContent = spoilerContent, !spoilerContent.string.isEmpty { strings.append(L10n.Common.Controls.Status.contentWarning) strings.append(spoilerContent.string) + + // TODO: replace with "Tap to reveal" + strings.append(L10n.Common.Controls.Status.mediaContentWarning) } if isContentReveal { @@ -707,6 +710,21 @@ extension StatusView.ViewModel { return strings.compactMap { $0 }.joined(separator: ", ") } + $isContentReveal + .map { isContentReveal in + isContentReveal ? L10n.Scene.Compose.Accessibility.enableContentWarning : L10n.Scene.Compose.Accessibility.disableContentWarning + } + .sink { label in + statusView.contentSensitiveeToggleButton.accessibilityLabel = label + } + .store(in: &disposeBag) + + contentAccessibilityLabel + .sink { contentAccessibilityLabel in + statusView.spoilerOverlayView.accessibilityLabel = contentAccessibilityLabel + } + .store(in: &disposeBag) + let meidaAccessibilityLabel = $mediaViewConfigurations .map { configurations -> String? in let count = configurations.count diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index d6b37656b..8a1c02df3 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -61,7 +61,7 @@ public final class StatusView: UIView { }() // header - let headerContainerView = UIView() + public let headerContainerView = UIView() // header icon let headerIconImageView: UIImageView = { @@ -106,6 +106,7 @@ public final class StatusView: UIView { button.tintColor = Asset.Colors.Label.secondary.color let image = UIImage(systemName: "ellipsis", withConfiguration: UIImage.SymbolConfiguration(font: .systemFont(ofSize: 15))) button.setImage(image, for: .normal) + button.accessibilityLabel = L10n.Common.Controls.Status.Actions.menu return button }() @@ -152,7 +153,7 @@ public final class StatusView: UIView { }() // content warning - let spoilerOverlayView = SpoilerOverlayView() + public let spoilerOverlayView = SpoilerOverlayView() // media public let mediaContainerView = UIView() @@ -173,7 +174,7 @@ public final class StatusView: UIView { public var pollTableViewHeightLayoutConstraint: NSLayoutConstraint! public var pollTableViewDiffableDataSource: UITableViewDiffableDataSource? - let pollStatusStackView = UIStackView() + public let pollStatusStackView = UIStackView() let pollVoteCountLabel: UILabel = { let label = UILabel() label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) @@ -186,6 +187,7 @@ public final class StatusView: UIView { label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12, weight: .regular)) label.textColor = Asset.Colors.Label.secondary.color label.text = " · " + label.isAccessibilityElement = false return label }() let pollCountdownLabel: UILabel = { @@ -542,7 +544,7 @@ extension StatusView.Style { // pollTableView statusView.pollContainerView.addArrangedSubview(statusView.pollTableView) - // pollStatusStackView + // pollStatusStackView: H - [ pollVoteCountLabel | pollCountdownLabel | pollVoteButton ] statusView.pollStatusStackView.axis = .horizontal statusView.pollContainerView.addArrangedSubview(statusView.pollStatusStackView) diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift index 3b4a97375..c3a7ba378 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift @@ -93,7 +93,7 @@ extension ActionToolbarContainer { replyButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.reply reblogButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.reblog // needs update to follow state favoriteButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.favorite // needs update to follow state - shareButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.menu + shareButton.accessibilityLabel = L10n.Common.Controls.Actions.share switch style { case .inline: @@ -219,6 +219,7 @@ extension ActionToolbarContainer { public func configureReply(count: Int, isEnabled: Bool) { let title = ActionToolbarContainer.title(from: count) replyButton.setTitle(title, for: .normal) + replyButton.accessibilityLabel = "\(count) reply" // TODO: i18n } public func configureReblog(count: Int, isEnabled: Bool, isHighlighted: Bool) { @@ -230,6 +231,13 @@ extension ActionToolbarContainer { reblogButton.tintColor = tintColor reblogButton.setTitleColor(tintColor, for: .normal) reblogButton.setTitleColor(tintColor, for: .highlighted) + + if isHighlighted { + reblogButton.accessibilityTraits.insert(.selected) + } else { + reblogButton.accessibilityTraits.remove(.selected) + } + reblogButton.accessibilityLabel = L10n.Plural.Count.reblog(count) } public func configureFavorite(count: Int, isEnabled: Bool, isHighlighted: Bool) { @@ -242,6 +250,13 @@ extension ActionToolbarContainer { favoriteButton.tintColor = tintColor favoriteButton.setTitleColor(tintColor, for: .normal) favoriteButton.setTitleColor(tintColor, for: .highlighted) + + if isHighlighted { + favoriteButton.accessibilityTraits.insert(.selected) + } else { + favoriteButton.accessibilityTraits.remove(.selected) + } + favoriteButton.accessibilityLabel = L10n.Plural.Count.favorite(count) } } diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift index cf84bfa86..17360d545 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift @@ -70,6 +70,8 @@ extension SpoilerOverlayView { bottomPaddingView.setContentCompressionResistancePriority(.defaultLow - 100, for: .vertical) spoilerMetaLabel.isUserInteractionEnabled = false + + isAccessibilityElement = true } public func setComponentHidden(_ isHidden: Bool) { From d561683c35ad86378d9ca0d2042d603629fc4622 Mon Sep 17 00:00:00 2001 From: CMK Date: Mon, 14 Feb 2022 19:57:15 +0800 Subject: [PATCH 261/374] chore: restore the appearance settings --- .../Diffiable/Settings/SettingsItem.swift | 20 +++++-- .../Diffiable/Settings/SettingsSection.swift | 60 +++++++++++++++---- ...ngsAppearanceTableViewCell+ViewModel.swift | 6 +- .../SettingsAppearanceTableViewCell.swift | 24 +++----- .../Settings/SettingsViewController.swift | 33 +++++----- .../Scene/Settings/SettingsViewModel.swift | 8 ++- 6 files changed, 98 insertions(+), 53 deletions(-) diff --git a/Mastodon/Diffiable/Settings/SettingsItem.swift b/Mastodon/Diffiable/Settings/SettingsItem.swift index 50f0a7619..00c88d167 100644 --- a/Mastodon/Diffiable/Settings/SettingsItem.swift +++ b/Mastodon/Diffiable/Settings/SettingsItem.swift @@ -13,6 +13,7 @@ import MastodonLocalization enum SettingsItem { case appearance(record: ManagedObjectRecord) + case appearancePreference(record: ManagedObjectRecord, appearanceType: AppearanceType) case preference(settingRecord: ManagedObjectRecord, preferenceType: PreferenceType) case notification(settingRecord: ManagedObjectRecord, switchMode: NotificationSwitchMode) case boringZone(item: Link) @@ -23,11 +24,18 @@ extension SettingsItem { enum AppearanceMode: String { case system - case reallyDark - case sortaDark + case dark case light } + enum AppearanceType: Hashable { + case preferredTrueDarkMode + + var title: String { + return L10n.Scene.Settings.Section.Preference.trueBlackDarkMode + } + } + enum NotificationSwitchMode: CaseIterable, Hashable { case favorite case follow @@ -94,9 +102,13 @@ extension SettingsItem { extension SettingsItem: Hashable { func hash(into hasher: inout Hasher) { switch self { - case .appearance(let settingObjectID): + case .appearance(let record): hasher.combine(String(describing: SettingsItem.AppearanceMode.self)) - hasher.combine(settingObjectID) + hasher.combine(record) + case .appearancePreference(let record, let appearanceType): + hasher.combine(String(describing: SettingsItem.AppearanceType.self)) + hasher.combine(record) + hasher.combine(appearanceType) case .notification(let settingObjectID, let switchMode): hasher.combine(String(describing: SettingsItem.notification.self)) hasher.combine(settingObjectID) diff --git a/Mastodon/Diffiable/Settings/SettingsSection.swift b/Mastodon/Diffiable/Settings/SettingsSection.swift index cc03ae055..d221c21c6 100644 --- a/Mastodon/Diffiable/Settings/SettingsSection.swift +++ b/Mastodon/Diffiable/Settings/SettingsSection.swift @@ -13,6 +13,7 @@ import MastodonLocalization enum SettingsSection: Hashable { case appearance + case appearancePreference case preference case notifications case boringZone @@ -20,8 +21,9 @@ enum SettingsSection: Hashable { var title: String { switch self { - case .appearance: return "Look and Feel" // TODO: i18n - case .preference: return "" + case .appearance: return L10n.Scene.Settings.Section.Appearance.title + case .appearancePreference: return "" + case .preference: return L10n.Scene.Settings.Section.Preference.title case .notifications: return L10n.Scene.Settings.Section.Notifications.title case .boringZone: return L10n.Scene.Settings.Section.BoringZone.title case .spicyZone: return L10n.Scene.Settings.Section.SpicyZone.title @@ -49,6 +51,26 @@ extension SettingsSection { } cell.delegate = settingsAppearanceTableViewCellDelegate return cell + case .appearancePreference(let record, let appearanceType): + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SettingsToggleTableViewCell.self), for: indexPath) as! SettingsToggleTableViewCell + cell.delegate = settingsToggleCellDelegate + managedObjectContext.performAndWait { + guard let setting = record.object(in: managedObjectContext) else { return } + SettingsSection.configureSettingToggle(cell: cell, item: item, setting: setting) + + ManagedObjectObserver.observe(object: setting) + .receive(on: DispatchQueue.main) + .sink(receiveCompletion: { _ in + // do nothing + }, receiveValue: { [weak cell] change in + guard let cell = cell else { return } + guard case .update(let object) = change.changeType, + let setting = object as? Setting else { return } + SettingsSection.configureSettingToggle(cell: cell, item: item, setting: setting) + }) + .store(in: &cell.disposeBag) + } + return cell case .preference(let record, _): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SettingsToggleTableViewCell.self), for: indexPath) as! SettingsToggleTableViewCell cell.delegate = settingsToggleCellDelegate @@ -107,17 +129,29 @@ extension SettingsSection { item: SettingsItem, setting: Setting ) { - guard case let .preference(_, preferenceType) = item else { return } - - cell.textLabel?.text = preferenceType.title - - switch preferenceType { - case .disableAvatarAnimation: - cell.switchButton.isOn = setting.preferredStaticAvatar - case .disableEmojiAnimation: - cell.switchButton.isOn = setting.preferredStaticEmoji - case .useDefaultBrowser: - cell.switchButton.isOn = setting.preferredUsingDefaultBrowser + switch item { + case .appearancePreference(_, let appearanceType): + cell.textLabel?.text = appearanceType.title + + switch appearanceType { + case .preferredTrueDarkMode: + cell.switchButton.isOn = setting.preferredTrueBlackDarkMode + } + + case .preference(_, let preferenceType): + cell.textLabel?.text = preferenceType.title + + switch preferenceType { + case .disableAvatarAnimation: + cell.switchButton.isOn = setting.preferredStaticAvatar + case .disableEmojiAnimation: + cell.switchButton.isOn = setting.preferredStaticEmoji + case .useDefaultBrowser: + cell.switchButton.isOn = setting.preferredUsingDefaultBrowser + } + + default: + assertionFailure() } } diff --git a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift index f73be2357..153ed8907 100644 --- a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell+ViewModel.swift @@ -51,11 +51,7 @@ extension SettingsAppearanceTableViewCell.ViewModel { case .unspecified: cell.systemAppearanceView.selected = true case .dark: - if preferredTrueBlackDarkMode { - cell.reallyDarkAppearanceView.selected = true - } else { - cell.sortaDarkAppearanceView.selected = true - } + cell.darkAppearanceView.selected = true case .light: cell.lightAppearanceView.selected = true @unknown default: diff --git a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift index b808d1c4b..608456928 100644 --- a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift +++ b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift @@ -39,26 +39,21 @@ class SettingsAppearanceTableViewCell: UITableViewCell { let systemAppearanceView = AppearanceView( image: Asset.Settings.darkAuto.image, - title: "Use System" // TODO: i18n + title: L10n.Scene.Settings.Section.Appearance.automatic ) - let reallyDarkAppearanceView = AppearanceView( + let darkAppearanceView = AppearanceView( image: Asset.Settings.dark.image, - title: "Really Dark" - ) - let sortaDarkAppearanceView = AppearanceView( - image: Asset.Settings.dark.image, - title: "Sorta Dark" + title: L10n.Scene.Settings.Section.Appearance.dark ) let lightAppearanceView = AppearanceView( image: Asset.Settings.light.image, - title: "Light" + title: L10n.Scene.Settings.Section.Appearance.light ) var appearanceViews: [AppearanceView] { return [ systemAppearanceView, - reallyDarkAppearanceView, - sortaDarkAppearanceView, + darkAppearanceView, lightAppearanceView, ] } @@ -111,8 +106,7 @@ extension SettingsAppearanceTableViewCell { ]) stackView.addArrangedSubview(systemAppearanceView) - stackView.addArrangedSubview(reallyDarkAppearanceView) - stackView.addArrangedSubview(sortaDarkAppearanceView) + stackView.addArrangedSubview(darkAppearanceView) stackView.addArrangedSubview(lightAppearanceView) appearanceViews.forEach { view in @@ -132,10 +126,8 @@ extension SettingsAppearanceTableViewCell { switch sender.view { case systemAppearanceView: mode = .system - case reallyDarkAppearanceView: - mode = .reallyDark - case sortaDarkAppearanceView: - mode = .sortaDark + case darkAppearanceView: + mode = .dark case lightAppearanceView: mode = .light default: diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 172602c3b..d6a53a327 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -328,6 +328,8 @@ extension SettingsViewController: UITableViewDelegate { let header: SettingsSectionHeader switch sectionIdentifier { + case .appearancePreference: + return UIView() case .notifications: header = SettingsSectionHeader( frame: CGRect(x: 0, y: 0, width: 375, height: 66), @@ -360,6 +362,9 @@ extension SettingsViewController: UITableViewDelegate { case .appearance: // do nothing break + case .appearancePreference: + // do nothing + break case .notification: // do nothing break @@ -450,28 +455,16 @@ extension SettingsViewController: SettingsAppearanceTableViewCellDelegate { let item = dataSource.itemIdentifier(for: indexPath) guard case let .appearance(record) = item else { return } - Task { @MainActor in - var preferredTrueBlackDarkMode = false - + Task { @MainActor in switch appearanceMode { case .system: UserDefaults.shared.customUserInterfaceStyle = .unspecified - case .reallyDark: - UserDefaults.shared.customUserInterfaceStyle = .dark - preferredTrueBlackDarkMode = true - case .sortaDark: + case .dark: UserDefaults.shared.customUserInterfaceStyle = .dark case .light: UserDefaults.shared.customUserInterfaceStyle = .light } - let managedObjectContext = context.managedObjectContext - try await managedObjectContext.performChanges { - guard let setting = record.object(in: managedObjectContext) else { return } - setting.update(preferredTrueBlackDarkMode: preferredTrueBlackDarkMode) - } - ThemeService.shared.set(themeName: preferredTrueBlackDarkMode ? .system : .mastodon) - let feedbackGenerator = UIImpactFeedbackGenerator(style: .light) feedbackGenerator.impactOccurred() } // end Task @@ -507,6 +500,18 @@ extension SettingsViewController: SettingsToggleCellDelegate { // do nothing } .store(in: &disposeBag) + case .appearancePreference(let record, let appearanceType): + switch appearanceType { + case .preferredTrueDarkMode: + Task { + let managedObjectContext = context.managedObjectContext + try await managedObjectContext.performChanges { + guard let setting = record.object(in: managedObjectContext) else { return } + setting.update(preferredTrueBlackDarkMode: isOn) + } + ThemeService.shared.set(themeName: isOn ? .system : .mastodon) + } // end Task + } case .preference(let record, let preferenceType): let managedObjectContext = context.backgroundManagedObjectContext managedObjectContext.performChanges { diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index 9f9640b70..1eb9a4094 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -108,10 +108,16 @@ extension SettingsViewModel { var snapshot = NSDiffableDataSourceSnapshot() // appearance - let appearanceItems = [SettingsItem.appearance(record: .init(objectID: setting.objectID))] + let appearanceItems = [ + SettingsItem.appearance(record: .init(objectID: setting.objectID)) + ] snapshot.appendSections([.appearance]) snapshot.appendItems(appearanceItems, toSection: .appearance) + // appearancePreference + snapshot.appendSections([.appearancePreference]) + snapshot.appendItems([SettingsItem.appearancePreference(record: .init(objectID: setting.objectID), appearanceType: .preferredTrueDarkMode)], toSection: .appearancePreference) + // preference snapshot.appendSections([.preference]) let preferenceItems: [SettingsItem] = SettingsItem.PreferenceType.allCases.map { preferenceType in From 9158700c69f030bfedb59ca6e7aeac4e90939bc2 Mon Sep 17 00:00:00 2001 From: CMK Date: Mon, 14 Feb 2022 19:57:32 +0800 Subject: [PATCH 262/374] chore: update version to 1.3.0 (97) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 1c2f9cec7..dd589d8f2 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 96 + 97 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index cad8b9608..eb36049de 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4620,7 +4620,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4649,7 +4649,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4757,11 +4757,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 96; + DYLIB_CURRENT_VERSION = 97; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4788,11 +4788,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 96; + DYLIB_CURRENT_VERSION = 97; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4817,7 +4817,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4842,7 +4842,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4867,7 +4867,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4892,7 +4892,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4917,7 +4917,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4941,7 +4941,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 96; + CURRENT_PROJECT_VERSION = 97; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 7e7b5befb..a5240e44a 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 33 + 25 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 32 + 27 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 31 + 26 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index e86a4833e..03bdd3931 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 96 + 97 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 5dbe69517..0e6eef466 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 96 + 97 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 1c2f9cec7..dd589d8f2 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 96 + 97 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 1c2f9cec7..dd589d8f2 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 96 + 97 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 806534388..f3907d9de 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 96 + 97 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 41f25630c..c717eb63f 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 96 + 97 NSExtension NSExtensionAttributes From f4986eacba12972ca67bc2d87a3b5be6a37812eb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Feb 2022 13:25:33 +0100 Subject: [PATCH 263/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 25db6f786..5e73534f4 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -305,7 +305,7 @@ "title": "Some ground rules.", "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", - "terms_of_service": "terms of service", + "terms_of_service": "tiwetlin n useqdec", "privacy_policy": "tasertit tabaḍnit", "button": { "confirm": "Qebleɣ" @@ -350,7 +350,7 @@ }, "media_selection": { "camera": "Ṭṭef tawlaft", - "photo_library": "Photo Library", + "photo_library": "Tanedlist n tewlaft", "browse": "Snirem" }, "content_input_placeholder": "Type or paste what’s on your mind", @@ -564,9 +564,9 @@ }, "report": { "title_report": "Aneqqis", - "title": "Report %s", - "step1": "Step 1 of 2", - "step2": "Step 2 of 2", + "title": "Aneqqis %s", + "step1": "Aḥric 1 seg 2", + "step2": "Aḥric 2 seg 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", "report_sent_title": "Thanks for reporting, we’ll look into this.", From 2c5c7fb6d9576d2d298caa09e54e0d4701a1bf8f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Feb 2022 13:25:34 +0100 Subject: [PATCH 264/374] New translations Intents.strings (Japanese) --- .../StringsConvertor/Intents/input/ja_JP/Intents.strings | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings b/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings index 565f5137c..411b35c2e 100644 --- a/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/ja_JP/Intents.strings @@ -24,9 +24,9 @@ "Zo4jgJ" = "投稿の公開範囲"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "「パブリック」にマッチするオプションが${count}個あります。"; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "「フォロワーのみ」にマッチするオプションが${count}個あります。"; "ayoYEb-dYQ5NN" = "${content}, パブリック"; From 547ca7453276f8d0bb6f1093ca89461e3a201b2c Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Feb 2022 17:03:50 +0100 Subject: [PATCH 265/374] New translations app.json (Swedish) --- Localization/StringsConvertor/input/sv_SE/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/sv_SE/app.json b/Localization/StringsConvertor/input/sv_SE/app.json index b994e5f79..59ad0d6ed 100644 --- a/Localization/StringsConvertor/input/sv_SE/app.json +++ b/Localization/StringsConvertor/input/sv_SE/app.json @@ -49,7 +49,7 @@ "message": "Are you sure you want to delete this post?" }, "clean_cache": { - "title": "Clean Cache", + "title": "Rensa cache", "message": "Successfully cleaned %s cache." } }, From 6e739977939d6fd3ce094ea0e6aff1181958e843 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Feb 2022 21:45:19 +0100 Subject: [PATCH 266/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index e787c15b8..e6b850f4b 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Ziur zaude bidalketa hau ezabatu nahi duzula?", - "message": "Are you sure you want to delete this post?" + "message": "Ziur bidalketa hau ezabatu nahi duzula?" }, "clean_cache": { "title": "Garbitu cache-a", @@ -141,7 +141,7 @@ "favorite": "Gogokoa", "unfavorite": "Kendu gogokoa", "menu": "Menua", - "hide": "Hide" + "hide": "Ezkutatu" }, "tag": { "url": "URLa", @@ -152,10 +152,10 @@ "emoji": "Emojia" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Edozeinek ikusi dezake bidalketa hau baina ez da denbora-lerro publikoan bistaratuko.", + "private": "Beren jarraitzaileek soilik ikus dezakete bidalketa hau.", + "private_from_me": "Nire jarraitzaileek soilik ikus dezakete bidalketa hau.", + "direct": "Aipatutako erabiltzaileek soilik ikus dezakete bidalketa hau." } }, "friendship": { @@ -201,13 +201,13 @@ "scene": { "welcome": { "slogan": "Sare sozialak\nberriz zure eskuetan.", - "get_started": "Get Started", - "log_in": "Log In" + "get_started": "Nola hasi", + "log_in": "Hasi saioa" }, "server_picker": { "title": "Aukeratu zerbitzari bat,\nedozein zerbitzari.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Aukeratu komunitate bat zure interes edo lurraldearen arabera, edo erabilera orokorreko bat.", + "subtitle_extend": "Aukeratu komunitate bat zure interes edo lurraldearen arabera, edo erabilera orokorreko bat. Komunitate bakoitza erakunde edo norbanako independente batek kudeatzen du.", "button": { "category": { "all": "Guztiak", @@ -260,10 +260,10 @@ }, "password": { "placeholder": "pasahitza", - "require": "Your password needs at least:", - "character_limit": "8 characters", + "require": "Zure pasahitzak izan behar ditu gutxienez:", + "character_limit": "8 karaktere", "accessibility": { - "checked": "checked", + "checked": "hautatuta", "unchecked": "unchecked" }, "hint": "Pasahitzak zortzi karaktere izan behar ditu gutxienez" From 7d8e7983263b89fbf020e254a05ab11595bba048 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 14 Feb 2022 22:41:59 +0100 Subject: [PATCH 267/374] New translations app.json (Basque) --- .../StringsConvertor/input/eu_ES/app.json | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Localization/StringsConvertor/input/eu_ES/app.json b/Localization/StringsConvertor/input/eu_ES/app.json index e6b850f4b..39d06227b 100644 --- a/Localization/StringsConvertor/input/eu_ES/app.json +++ b/Localization/StringsConvertor/input/eu_ES/app.json @@ -264,7 +264,7 @@ "character_limit": "8 karaktere", "accessibility": { "checked": "hautatuta", - "unchecked": "unchecked" + "unchecked": "hautatu gabe" }, "hint": "Pasahitzak zortzi karaktere izan behar ditu gutxienez" }, @@ -316,7 +316,7 @@ "subtitle": "Eposta bat bidali dizugu %s helbidera,\nsakatu kontua berresteko esteka.", "button": { "open_email_app": "Ireki eposta aplikazioa", - "resend": "Resend" + "resend": "Berbidali" }, "dont_receive_email": { "title": "Begiratu zure eposta", @@ -419,26 +419,26 @@ "segmented_control": { "posts": "Bidalketak", "replies": "Erantzunak", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Bidalketak eta erantzunak", "media": "Multimedia", - "about": "About" + "about": "Honi buruz" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Mututu kontua", + "message": "Berretsi %s mututzea" }, "confirm_unmute_user": { "title": "Desmututu kontua", "message": "Berretsi %s desmututzea" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Blokeatu kontua", + "message": "Berretsi %s blokeatzea" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Desblokeatu kontua", + "message": "Berretsi %s desblokeatzea" } } }, @@ -490,12 +490,12 @@ "Mentions": "Aipamenak" }, "notification_description": { - "followed_you": "followed you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "followed_you": "zu jarraitzen hasi da", + "favorited_your_post": "erabiltzaileak zure bidalketa gogoko du", + "reblogged_your_post": "erabiltzaileak bultzada eman dio zure bidalketari", + "mentioned_you": "erabiltzaileak aipatu zaitu", + "request_to_follow_you": "erabiltzaileak zu jarraitzea eskatu du", + "poll_has_ended": "inkesta amaitu da" }, "keyobard": { "show_everything": "Erakutsi guztia", @@ -516,11 +516,11 @@ "dark": "Beti iluna" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "Itxura", + "use_system": "Erabili sistemakoa", + "really_dark": "Oso iluna", + "sorta_dark": "Ilun antzekoa", + "light": "Argia" }, "notifications": { "title": "Jakinarazpenak", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "Salatu", "title": "Salatu %s", "step1": "1. urratsa 2tik", "step2": "2. urratsa 2tik", "content1": "Salaketan beste bidalketarik gehitu nahi duzu?", "content2": "Moderatzaileek besterik jakin behar dute salaketa honi buruz?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Mila esker salaketagatik, berrikusiko dugu.", "send": "Bidali salaketa", "skip_to_send": "Bidali iruzkinik gabe", "text_placeholder": "Idatzi edo itsatsi iruzkin gehigarriak", - "reported": "REPORTED" + "reported": "SALATUA" }, "preview": { "keyboard": { From c2e5bcafb2effa0ca39d91d35338e8bcc0cfe727 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 12:48:07 +0800 Subject: [PATCH 268/374] chore: add a11y hint for profile dashboard --- .../Scene/Profile/Header/View/ProfileStatusDashboardView.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardView.swift b/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardView.swift index 5bb23b0bb..9448f1964 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileStatusDashboardView.swift @@ -75,6 +75,9 @@ extension ProfileStatusDashboardView { tapGestureRecognizer.addTarget(self, action: #selector(ProfileStatusDashboardView.tapGestureRecognizerHandler(_:))) meterView.addGestureRecognizer(tapGestureRecognizer) } + + followingDashboardMeterView.accessibilityHint = "Double tap to open the list" // TODO: i18n + followersDashboardMeterView.accessibilityHint = "Double tap to open the list" } } From caa9ab7a40d37f049bff52bd9637caec2eb317ea Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 14:01:28 +0800 Subject: [PATCH 269/374] feat: add media interaction for notification timeline --- .../xcschemes/xcschememanagement.plist | 6 +- ...er+NotificationTableViewCellDelegate.swift | 114 +++++++++++++++++- .../NotificationTableViewCellDelegate.swift | 10 ++ .../View/Content/NotificationView.swift | 13 +- 4 files changed, 136 insertions(+), 7 deletions(-) diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index a5240e44a..7e9982d3c 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 25 + 20 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 27 + 19 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 26 + 18 SuppressBuildableAutocreation diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift index f062f01d8..0924028ff 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+NotificationTableViewCellDelegate.swift @@ -102,6 +102,119 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider { } } +private struct NotificationMediaTransitionContext { + let status: ManagedObjectRecord + let needsToggleMediaSensitive: Bool +} + +extension NotificationTableViewCellDelegate where Self: DataSourceProvider & MediaPreviewableViewController { + + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + statusView: StatusView, + mediaGridContainerView: MediaGridContainerView, + mediaView: MediaView, + didSelectMediaViewAt index: Int + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(record) = item else { + assertionFailure("only works for status data provider") + return + } + + let managedObjectContext = self.context.managedObjectContext + let _mediaTransitionContext: NotificationMediaTransitionContext? = try await managedObjectContext.perform { + guard let notification = record.object(in: managedObjectContext) else { return nil } + guard let _status = notification.status else { return nil } + let status = _status.reblog ?? _status + return NotificationMediaTransitionContext( + status: .init(objectID: status.objectID), + needsToggleMediaSensitive: status.isMediaSensitiveToggled ? !status.sensitive : status.sensitive + ) + } + + guard let mediaTransitionContext = _mediaTransitionContext else { return } + + guard !mediaTransitionContext.needsToggleMediaSensitive else { + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: mediaTransitionContext.status + ) + return + } + + try await DataSourceFacade.coordinateToMediaPreviewScene( + dependency: self, + status: mediaTransitionContext.status, + previewContext: DataSourceFacade.AttachmentPreviewContext( + containerView: .mediaGridContainerView(mediaGridContainerView), + mediaView: mediaView, + index: index + ) + ) + } // end Task + } + + func tableViewCell( + _ cell: UITableViewCell, + notificationView: NotificationView, + quoteStatusView: StatusView, + mediaGridContainerView: MediaGridContainerView, + mediaView: MediaView, + didSelectMediaViewAt index: Int + ) { + Task { + let source = DataSourceItem.Source(tableViewCell: cell, indexPath: nil) + guard let item = await item(from: source) else { + assertionFailure() + return + } + guard case let .notification(record) = item else { + assertionFailure("only works for status data provider") + return + } + + let managedObjectContext = self.context.managedObjectContext + let _mediaTransitionContext: NotificationMediaTransitionContext? = try await managedObjectContext.perform { + guard let notification = record.object(in: managedObjectContext) else { return nil } + guard let _status = notification.status else { return nil } + let status = _status.reblog ?? _status + return NotificationMediaTransitionContext( + status: .init(objectID: status.objectID), + needsToggleMediaSensitive: status.isMediaSensitiveToggled ? !status.sensitive : status.sensitive + ) + } + + guard let mediaTransitionContext = _mediaTransitionContext else { return } + + guard !mediaTransitionContext.needsToggleMediaSensitive else { + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: mediaTransitionContext.status + ) + return + } + + try await DataSourceFacade.coordinateToMediaPreviewScene( + dependency: self, + status: mediaTransitionContext.status, + previewContext: DataSourceFacade.AttachmentPreviewContext( + containerView: .mediaGridContainerView(mediaGridContainerView), + mediaView: mediaView, + index: index + ) + ) + } // end Task + } + +} + // MARK: - Status Toolbar extension NotificationTableViewCellDelegate where Self: DataSourceProvider { func tableViewCell( @@ -142,7 +255,6 @@ extension NotificationTableViewCellDelegate where Self: DataSourceProvider { } } - // MARK: - Status Author Avatar extension NotificationTableViewCellDelegate where Self: DataSourceProvider { func tableViewCell( diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift index 07bc5ff97..d13ce7195 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCellDelegate.swift @@ -27,10 +27,12 @@ protocol NotificationTableViewCellDelegate: AnyObject, AutoGenerateProtocolDeleg func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) + func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, quoteStatusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) func tableViewCell(_ cell: UITableViewCell, notificationView: NotificationView, accessibilityActivate: Void) // sourcery:end } @@ -55,6 +57,10 @@ extension NotificationViewDelegate where Self: NotificationViewContainerTableVie delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, spoilerOverlayViewDidPressed: overlayView) } + func notificationView(_ notificationView: NotificationView, statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) { + delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, mediaGridContainerView: mediaGridContainerView, mediaView: mediaView, didSelectMediaViewAt: index) + } + func notificationView(_ notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) { delegate?.tableViewCell(self, notificationView: notificationView, statusView: statusView, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action) } @@ -71,6 +77,10 @@ extension NotificationViewDelegate where Self: NotificationViewContainerTableVie delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, spoilerOverlayViewDidPressed: overlayView) } + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) { + delegate?.tableViewCell(self, notificationView: notificationView, quoteStatusView: quoteStatusView, mediaGridContainerView: mediaGridContainerView, mediaView: mediaView, didSelectMediaViewAt: index) + } + func notificationView(_ notificationView: NotificationView, accessibilityActivate: Void) { delegate?.tableViewCell(self, notificationView: notificationView, accessibilityActivate: accessibilityActivate) } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index 78ebdbcda..99b2d69aa 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -19,14 +19,14 @@ public protocol NotificationViewDelegate: AnyObject { func notificationView(_ notificationView: NotificationView, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) func notificationView(_ notificationView: NotificationView, statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) -// func notificationView(_ notificationView: NotificationView, statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) + func notificationView(_ notificationView: NotificationView, statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) func notificationView(_ notificationView: NotificationView, statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, authorAvatarButtonDidPressed button: AvatarButton) func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) - // func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) + func notificationView(_ notificationView: NotificationView, quoteStatusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) // a11y func notificationView(_ notificationView: NotificationView, accessibilityActivate: Void) @@ -366,7 +366,14 @@ extension NotificationView: StatusViewDelegate { } public func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaView: MediaView, didSelectMediaViewAt index: Int) { - assertionFailure() + switch statusView { + case self.statusView: + delegate?.notificationView(self, statusView: statusView, mediaGridContainerView: mediaGridContainerView, mediaView: mediaView, didSelectMediaViewAt: index) + case quoteStatusView: + delegate?.notificationView(self, quoteStatusView: statusView, mediaGridContainerView: mediaGridContainerView, mediaView: mediaView, didSelectMediaViewAt: index) + default: + assertionFailure() + } } public func statusView(_ statusView: StatusView, pollTableView tableView: UITableView, didSelectRowAt indexPath: IndexPath) { From 3bb2cd5e4ab1a340a13995d471ae706d759df760 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 15 Feb 2022 07:15:45 +0100 Subject: [PATCH 270/374] New translations app.json (Chinese Simplified) --- .../StringsConvertor/input/zh_CN/app.json | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json index 5fdb8988a..7b00904dd 100644 --- a/Localization/StringsConvertor/input/zh_CN/app.json +++ b/Localization/StringsConvertor/input/zh_CN/app.json @@ -154,8 +154,8 @@ "visibility": { "unlisted": "Everyone can see this post but not display in the public timeline.", "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "private_from_me": "只有我的关注者才能看到此帖子。", + "direct": "只有提到的用户才能看到此帖子。" } }, "friendship": { @@ -419,26 +419,26 @@ "segmented_control": { "posts": "帖子", "replies": "回复", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "帖子与回复", "media": "媒体", - "about": "About" + "about": "关于" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "静音账户", + "message": "确认静音 %s" }, "confirm_unmute_user": { "title": "取消静音账户", "message": "确认取消静音 %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "屏蔽帐户", + "message": "确认屏蔽 %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "解除屏蔽帐户", + "message": "确认取消屏蔽 %s" } } }, @@ -490,12 +490,12 @@ "Mentions": "提及" }, "notification_description": { - "followed_you": "followed you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "followed_you": "关注了你", + "favorited_your_post": "喜欢了你的帖子", + "reblogged_your_post": "转发了你的帖子", + "mentioned_you": "提及了你", + "request_to_follow_you": "关注请求", + "poll_has_ended": "投票已结束" }, "keyobard": { "show_everything": "显示全部", @@ -516,11 +516,11 @@ "dark": "深色" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "外观和风格", + "use_system": "跟随系统", + "really_dark": "暗色", + "sorta_dark": "深色", + "light": "浅色" }, "notifications": { "title": "通知", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "举报", "title": "举报 %s", "step1": "步骤 1 / 2", "step2": "步骤 2 / 2", "content1": "是否有帖子需要举报?", "content2": "是否有关于此举报的详细描述信息?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "感谢提交举报,我们将会进行处理。", "send": "发送举报", "skip_to_send": "直接发送", "text_placeholder": "输入或粘贴额外的注释", - "reported": "REPORTED" + "reported": "已报告" }, "preview": { "keyboard": { From b88fadc896fa1e7b1a17b1f7d45e31d219214333 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 15 Feb 2022 07:25:42 +0100 Subject: [PATCH 271/374] New translations app.json (Chinese Simplified) --- Localization/StringsConvertor/input/zh_CN/app.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Localization/StringsConvertor/input/zh_CN/app.json b/Localization/StringsConvertor/input/zh_CN/app.json index 7b00904dd..74ea0529a 100644 --- a/Localization/StringsConvertor/input/zh_CN/app.json +++ b/Localization/StringsConvertor/input/zh_CN/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "确定要删除这条消息吗?", - "message": "Are you sure you want to delete this post?" + "message": "确定要删除这个帖子吗?" }, "clean_cache": { "title": "清除缓存", @@ -141,7 +141,7 @@ "favorite": "喜欢", "unfavorite": "取消喜欢", "menu": "菜单", - "hide": "Hide" + "hide": "隐藏" }, "tag": { "url": "URL", @@ -152,8 +152,8 @@ "emoji": "表情" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", + "unlisted": "任何人都可以看到这个帖子,但不会在公开的时间线中显示。", + "private": "只有作者的关注者才能看到此帖子。", "private_from_me": "只有我的关注者才能看到此帖子。", "direct": "只有提到的用户才能看到此帖子。" } From 74334126f00dfccf8b5194831114edda0ca77c7f Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 14:45:34 +0800 Subject: [PATCH 272/374] chore: update i18n strings --- .../xcschemes/xcschememanagement.plist | 6 +- .../Diffiable/Onboarding/RegisterItem.swift | 2 +- .../MastodonConfirmEmailViewController.swift | 4 +- .../MastodonRegisterViewModel+Diffable.swift | 6 +- .../Welcome/WelcomeViewController.swift | 2 +- .../Scene/Profile/ProfileViewController.swift | 4 +- .../Paging/ProfilePagingViewModel.swift | 4 +- .../ReportResultActionTableViewCell.swift | 2 +- .../ReportViewControllerAppearance.swift | 2 +- .../NotificationView+Configuration.swift | 14 +- MastodonIntent/eu-ES.lproj/Intents.strings | 51 +- MastodonIntent/fr.lproj/Intents.strings | 6 +- MastodonIntent/ja.lproj/Intents.strings | 44 +- MastodonIntent/sv_FI.lproj/Intents.strings | 48 +- .../Generated/Strings.swift | 140 ++-- .../Resources/ar.lproj/Localizable.strings | 405 ++++++----- .../Resources/ca.lproj/Localizable.strings | 48 +- .../Resources/de.lproj/Localizable.strings | 56 +- .../Resources/en.lproj/Localizable.strings | 62 +- .../es-419.lproj/Localizable.strings | 48 +- .../Resources/es.lproj/Localizable.strings | 60 +- .../es.lproj/Localizable.stringsdict | 4 +- .../Resources/eu-ES.lproj/Localizable.strings | 377 ++++++++++ .../eu-ES.lproj/Localizable.stringsdict | 390 ++++++++++ .../Resources/fr.lproj/Localizable.strings | 56 +- .../fr.lproj/Localizable.stringsdict | 2 +- .../Resources/gd-GB.lproj/Localizable.strings | 48 +- .../Resources/ja.lproj/Localizable.strings | 62 +- .../ja.lproj/Localizable.stringsdict | 2 +- .../Resources/ku-TR.lproj/Localizable.strings | 60 +- .../Resources/nl.lproj/Localizable.strings | 48 +- .../Resources/ru.lproj/Localizable.strings | 50 +- .../Resources/sv_FI.lproj/Localizable.strings | 673 +++++++++--------- .../sv_FI.lproj/Localizable.stringsdict | 100 +-- .../Resources/th.lproj/Localizable.strings | 48 +- .../zh-Hans.lproj/Localizable.strings | 48 +- .../View/Control/SpoilerBannerView.swift | 5 +- 37 files changed, 2116 insertions(+), 871 deletions(-) create mode 100644 MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings create mode 100644 MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.stringsdict diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 7e9982d3c..efcd36112 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 20 + 18 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 19 + 20 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 18 + 19 SuppressBuildableAutocreation diff --git a/Mastodon/Diffiable/Onboarding/RegisterItem.swift b/Mastodon/Diffiable/Onboarding/RegisterItem.swift index 0fb0aead0..d54981b67 100644 --- a/Mastodon/Diffiable/Onboarding/RegisterItem.swift +++ b/Mastodon/Diffiable/Onboarding/RegisterItem.swift @@ -8,7 +8,7 @@ import Foundation enum RegisterItem: Hashable { - case header + case header(domain: String) case avatar case name case username diff --git a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift index 44a90fd98..2c1a67f34 100644 --- a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift +++ b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift @@ -36,7 +36,7 @@ final class MastodonConfirmEmailViewController: UIViewController, NeedsDependenc let label = UILabel() label.font = UIFontMetrics(forTextStyle: .title1).scaledFont(for: UIFont.systemFont(ofSize: 20)) label.textColor = .secondaryLabel - label.text = L10n.Scene.ConfirmEmail.subtitle(viewModel.email) + label.text = L10n.Scene.ConfirmEmail.subtitle label.numberOfLines = 0 return label }() @@ -135,7 +135,7 @@ extension MastodonConfirmEmailViewController { .store(in: &self.disposeBag) - navigationActionView.backButton.setTitle("Resend", for: .normal) // TODO: i18n + navigationActionView.backButton.setTitle(L10n.Scene.ConfirmEmail.Button.resend, for: .normal) navigationActionView.backButton.addTarget(self, action: #selector(MastodonConfirmEmailViewController.resendButtonPressed(_:)), for: .touchUpInside) navigationActionView.nextButton.setTitle(L10n.Scene.ConfirmEmail.Button.openEmailApp, for: .normal) diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift index dbf7c5f11..b172dd40a 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewModel+Diffable.swift @@ -21,9 +21,9 @@ extension MastodonRegisterViewModel { diffableDataSource = UITableViewDiffableDataSource(tableView: tableView) { tableView, indexPath, item in switch item { - case .header: + case .header(let domain): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: OnboardingHeadlineTableViewCell.self), for: indexPath) as! OnboardingHeadlineTableViewCell - cell.titleLabel.text = L10n.Scene.Register.title + cell.titleLabel.text = L10n.Scene.Register.title(domain) cell.subTitleLabel.isHidden = true return cell case .avatar: @@ -136,7 +136,7 @@ extension MastodonRegisterViewModel { var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) - snapshot.appendItems([.header], toSection: .main) + snapshot.appendItems([.header(domain: domain)], toSection: .main) snapshot.appendItems([.avatar, .name, .username, .email, .password, .hint], toSection: .main) if approvalRequired { snapshot.appendItems([.reason], toSection: .main) diff --git a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift index f10bfc427..91d95c136 100644 --- a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift +++ b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift @@ -50,7 +50,7 @@ final class WelcomeViewController: UIViewController, NeedsDependency { private(set) lazy var signUpButton: PrimaryActionButton = { let button = PrimaryActionButton() button.adjustsBackgroundImageWhenUserInterfaceStyleChanges = false - button.setTitle("Get Started", for: .normal) // TODO: i18n + button.setTitle(L10n.Scene.Welcome.getStarted, for: .normal) let backgroundImageColor: UIColor = .white let backgroundImageHighlightedColor: UIColor = UIColor(white: 0.8, alpha: 1.0) button.setBackgroundImage(.placeholder(color: backgroundImageColor), for: .normal) diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index 75b4eeb3b..ee2dacb52 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -1002,8 +1002,8 @@ extension ProfileViewController: ProfileHeaderViewDelegate { let name = user.displayNameWithFallback let alertController = UIAlertController( - title: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.title, - message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.message(name), + title: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.title, + message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.message(name), preferredStyle: .alert ) let record = ManagedObjectRecord(objectID: user.objectID) diff --git a/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift b/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift index 0df9688d7..e5220ef79 100644 --- a/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift +++ b/Mastodon/Scene/Profile/Segmented/Paging/ProfilePagingViewModel.swift @@ -44,9 +44,9 @@ final class ProfilePagingViewModel: NSObject { let barItems: [TMBarItemable] = { let items = [ TMBarItem(title: L10n.Scene.Profile.SegmentedControl.posts), - TMBarItem(title: "Posts and Replies"), // TODO: i18n + TMBarItem(title: L10n.Scene.Profile.SegmentedControl.postsAndReplies), // TODO: i18n TMBarItem(title: L10n.Scene.Profile.SegmentedControl.media), - TMBarItem(title: "About"), + TMBarItem(title: L10n.Scene.Profile.SegmentedControl.about), ] return items }() diff --git a/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift b/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift index 7c0d84f07..9b605a0c7 100644 --- a/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift +++ b/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift @@ -31,7 +31,7 @@ final class ReportResultActionTableViewCell: UITableViewCell { let reportBannerLabel: UILabel = { let label = UILabel() let padding = Array(repeating: " ", count: 2).joined() - label.text = padding + "Reported" + padding // TODO: i18n + label.text = padding + L10n.Scene.Report.reported + padding label.textColor = Asset.Scene.Report.reportBanner.color label.font = FontFamily.Staatliches.regular.font(size: 49) label.backgroundColor = Asset.Scene.Report.background.color diff --git a/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift b/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift index 7bdaba645..6b35f3d89 100644 --- a/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift +++ b/Mastodon/Scene/Report/Share/ReportViewControllerAppearance.swift @@ -19,7 +19,7 @@ extension ReportViewControllerAppearance { func setupAppearance() { - title = "Report" // TODO: i18n + title = L10n.Scene.Report.titleReport view.backgroundColor = Asset.Scene.Report.background.color setupNavigationBarAppearance() diff --git a/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift b/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift index 705e90a76..052dc44c2 100644 --- a/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/NotificationView+Configuration.swift @@ -118,37 +118,37 @@ extension NotificationView { switch type { case .follow: self.viewModel.notificationIndicatorText = createMetaContent( - text: L10n.Scene.Notification.userFollowedYou(""), + text: L10n.Scene.Notification.NotificationDescription.followedYou, emojis: emojis.asDictionary ) case .followRequest: self.viewModel.notificationIndicatorText = createMetaContent( - text: L10n.Scene.Notification.userRequestedToFollowYou(author.displayNameWithFallback), + text: L10n.Scene.Notification.NotificationDescription.requestToFollowYou, emojis: emojis.asDictionary ) case .mention: self.viewModel.notificationIndicatorText = createMetaContent( - text: L10n.Scene.Notification.userMentionedYou(""), + text: L10n.Scene.Notification.NotificationDescription.mentionedYou, emojis: emojis.asDictionary ) case .reblog: self.viewModel.notificationIndicatorText = createMetaContent( - text: L10n.Scene.Notification.userRebloggedYourPost(""), + text: L10n.Scene.Notification.NotificationDescription.rebloggedYourPost, emojis: emojis.asDictionary ) case .favourite: self.viewModel.notificationIndicatorText = createMetaContent( - text: L10n.Scene.Notification.userFavoritedYourPost(""), + text: L10n.Scene.Notification.NotificationDescription.favoritedYourPost, emojis: emojis.asDictionary ) case .poll: self.viewModel.notificationIndicatorText = createMetaContent( - text: L10n.Scene.Notification.userYourPollHasEnded(""), + text: L10n.Scene.Notification.NotificationDescription.pollHasEnded, emojis: emojis.asDictionary ) case .status: self.viewModel.notificationIndicatorText = createMetaContent( - text: L10n.Scene.Notification.userMentionedYou(""), + text: L10n.Scene.Notification.NotificationDescription.mentionedYou, emojis: emojis.asDictionary ) case ._other: diff --git a/MastodonIntent/eu-ES.lproj/Intents.strings b/MastodonIntent/eu-ES.lproj/Intents.strings index b85bec4c5..dbc27c1cf 100644 --- a/MastodonIntent/eu-ES.lproj/Intents.strings +++ b/MastodonIntent/eu-ES.lproj/Intents.strings @@ -1,52 +1,51 @@ -"16wxgf" = "Post on Mastodon"; +"16wxgf" = "Argitaratu Mastodonen"; -"751xkl" = "Text Content"; +"751xkl" = "Testu-edukia"; -"CsR7G2" = "Post on Mastodon"; +"CsR7G2" = "Argitaratu Mastodonen"; -"HZSGTr" = "What content to post?"; +"HZSGTr" = "Ze eduki argitaratu?"; -"HdGikU" = "Posting failed"; +"HdGikU" = "Argitaratzeak huts egin du"; -"KDNTJ4" = "Failure Reason"; +"KDNTJ4" = "Hutsegitearen arrazoia"; -"RHxKOw" = "Send Post with text content"; +"RHxKOw" = "Argitaratu bidalketa testu-edukiarekin"; -"RxSqsb" = "Post"; +"RxSqsb" = "Bidali"; -"WCIR3D" = "Post ${content} on Mastodon"; +"WCIR3D" = "Argitaratu ${content} Mastodonen"; -"ZKJSNu" = "Post"; +"ZKJSNu" = "Bidali"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibility"; +"ZbSjzC" = "Ikusgaitasuna"; -"Zo4jgJ" = "Post Visibility"; +"Zo4jgJ" = "Bidalketaren ikusgaitasuna"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "'Publikoa'-rekin bat datozen ${count} aukera daude."; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "'Jarraitzaileak soilik'-ekin bat datozen ${count} aukera daude."; -"ayoYEb-dYQ5NN" = "${content}, Public"; +"ayoYEb-dYQ5NN" = "${content}, publikoa"; -"ayoYEb-ehFLjY" = "${content}, Followers Only"; +"ayoYEb-ehFLjY" = "${content}, jarraitzaileak besterik ez"; -"dUyuGg" = "Post on Mastodon"; +"dUyuGg" = "Argitaratu Mastodonen"; -"dYQ5NN" = "Public"; +"dYQ5NN" = "Publikoa"; -"ehFLjY" = "Followers Only"; +"ehFLjY" = "Jarraitzaileak soilik"; -"gfePDu" = "Posting failed. ${failureReason}"; +"gfePDu" = "Argitaratzeak huts egin du. ${failureReason}"; -"k7dbKQ" = "Post was sent successfully."; +"k7dbKQ" = "Bidalketa behar bezala bidali da."; -"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; +"oGiqmY-dYQ5NN" = "Berresteagatik, 'Publikoa' izatea nahi duzu?"; -"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; +"oGiqmY-ehFLjY" = "Berresteagatik, 'Jarraitzaileak soilik' izatea nahi duzu?"; -"rM6dvp" = "URL"; - -"ryJLwG" = "Post was sent successfully."; +"rM6dvp" = "URLa"; +"ryJLwG" = "Bidalketa behar bezala bidali da. "; diff --git a/MastodonIntent/fr.lproj/Intents.strings b/MastodonIntent/fr.lproj/Intents.strings index f4fec3000..2703edd42 100644 --- a/MastodonIntent/fr.lproj/Intents.strings +++ b/MastodonIntent/fr.lproj/Intents.strings @@ -12,7 +12,7 @@ "RHxKOw" = "Envoyer une publication avec du contenu texte"; -"RxSqsb" = "Post"; +"RxSqsb" = "Publication"; "WCIR3D" = "Publier du ${content} sur Mastodon"; @@ -24,9 +24,9 @@ "Zo4jgJ" = "Visibilité de la publication"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "Il y a ${count} options correspondant à « Public »."; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "Il y a ${count} options correspondant à « Abonnés uniquement »."; "ayoYEb-dYQ5NN" = "${content}, Public"; diff --git a/MastodonIntent/ja.lproj/Intents.strings b/MastodonIntent/ja.lproj/Intents.strings index 6877490ba..411b35c2e 100644 --- a/MastodonIntent/ja.lproj/Intents.strings +++ b/MastodonIntent/ja.lproj/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Post on Mastodon"; +"16wxgf" = "Mastodonに投稿"; -"751xkl" = "Text Content"; +"751xkl" = "テキストコンテンツ"; -"CsR7G2" = "Post on Mastodon"; +"CsR7G2" = "Mastodonに投稿"; "HZSGTr" = "What content to post?"; -"HdGikU" = "Posting failed"; +"HdGikU" = "投稿に失敗しました"; -"KDNTJ4" = "Failure Reason"; +"KDNTJ4" = "失敗の理由"; "RHxKOw" = "Send Post with text content"; -"RxSqsb" = "Post"; +"RxSqsb" = "投稿"; -"WCIR3D" = "Post ${content} on Mastodon"; +"WCIR3D" = "Mastodonに ${content} を投稿"; -"ZKJSNu" = "Post"; +"ZKJSNu" = "投稿"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibility"; +"ZbSjzC" = "公開範囲"; -"Zo4jgJ" = "Post Visibility"; +"Zo4jgJ" = "投稿の公開範囲"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "「パブリック」にマッチするオプションが${count}個あります。"; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "「フォロワーのみ」にマッチするオプションが${count}個あります。"; -"ayoYEb-dYQ5NN" = "${content}, Public"; +"ayoYEb-dYQ5NN" = "${content}, パブリック"; -"ayoYEb-ehFLjY" = "${content}, Followers Only"; +"ayoYEb-ehFLjY" = "${content}, フォロワーのみ"; -"dUyuGg" = "Post on Mastodon"; +"dUyuGg" = "Mastodonに投稿"; -"dYQ5NN" = "Public"; +"dYQ5NN" = "パブリック"; -"ehFLjY" = "Followers Only"; +"ehFLjY" = "フォロワーのみ"; -"gfePDu" = "Posting failed. ${failureReason}"; +"gfePDu" = "投稿に失敗しました。 ${failureReason}"; -"k7dbKQ" = "Post was sent successfully."; +"k7dbKQ" = "投稿に成功しました。"; -"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; +"oGiqmY-dYQ5NN" = "「パブリック」で間違いないですか?"; -"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; +"oGiqmY-ehFLjY" = "「フォロワーのみ」で間違いないですか?"; "rM6dvp" = "URL"; -"ryJLwG" = "Post was sent successfully. "; +"ryJLwG" = "投稿に成功しました。 "; diff --git a/MastodonIntent/sv_FI.lproj/Intents.strings b/MastodonIntent/sv_FI.lproj/Intents.strings index d4531ed64..1be213d45 100644 --- a/MastodonIntent/sv_FI.lproj/Intents.strings +++ b/MastodonIntent/sv_FI.lproj/Intents.strings @@ -1,51 +1,51 @@ -"16wxgf" = "Post on Mastodon"; +"16wxgf" = "Julkaise Mastodonissa"; -"751xkl" = "Text Content"; +"751xkl" = "Tekstisisältö"; -"CsR7G2" = "Post on Mastodon"; +"CsR7G2" = "Julkaise Mastodonissa"; -"HZSGTr" = "What content to post?"; +"HZSGTr" = "Mitä sisältöä julkaista?"; -"HdGikU" = "Posting failed"; +"HdGikU" = "Julkaiseminen epäonnistui"; -"KDNTJ4" = "Failure Reason"; +"KDNTJ4" = "Epäonnistumisen syy"; -"RHxKOw" = "Send Post with text content"; +"RHxKOw" = "Lähetä julkaisu teksisisällöllä"; -"RxSqsb" = "Post"; +"RxSqsb" = "Julkaisu"; -"WCIR3D" = "Posta ${content} på Mastodon"; +"WCIR3D" = "Julkaise ${content} Mastodonissa"; -"ZKJSNu" = "Post"; +"ZKJSNu" = "Julkaisu"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibility"; +"ZbSjzC" = "Näkyvyys"; -"Zo4jgJ" = "Post Visibility"; +"Zo4jgJ" = "Julkaisun näkyvyys"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "On ${count} vaihtoehtoa, jotka vastaavat ‘Julkinen’."; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "On ${count} vaihtoehtoa, jotka vastaavat ‘Vain seuraajat’."; -"ayoYEb-dYQ5NN" = "${content}, Public"; +"ayoYEb-dYQ5NN" = "${content}, julkinen"; -"ayoYEb-ehFLjY" = "${content}, Followers Only"; +"ayoYEb-ehFLjY" = "${content}, vain seuraajat"; -"dUyuGg" = "Post on Mastodon"; +"dUyuGg" = "Julkaise Mastodonissa"; -"dYQ5NN" = "Public"; +"dYQ5NN" = "Julkinen"; -"ehFLjY" = "Followers Only"; +"ehFLjY" = "Vain seuraajat"; -"gfePDu" = "Posting failed. ${failureReason}"; +"gfePDu" = "Julkaiseminen epäonnistui. ${failureReason}"; -"k7dbKQ" = "Post was sent successfully."; +"k7dbKQ" = "Julkaisu lähetettiin onnistuneesti."; -"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; +"oGiqmY-dYQ5NN" = "Vahvitukseksi, halusit ‘Julkinen’?"; -"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; +"oGiqmY-ehFLjY" = "Vahvitstukseksi, halusit ‘Vain seuraajat’?"; "rM6dvp" = "URL"; -"ryJLwG" = "Post was sent successfully. "; +"ryJLwG" = "Julkaisu lähetettiin onnistuneesti. "; diff --git a/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift b/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift index 805a7e52b..69e15f2d3 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift +++ b/MastodonSDK/Sources/MastodonLocalization/Generated/Strings.swift @@ -36,9 +36,9 @@ public enum L10n { public static let pleaseTryAgainLater = L10n.tr("Localizable", "Common.Alerts.Common.PleaseTryAgainLater") } public enum DeletePost { - /// Delete - public static let delete = L10n.tr("Localizable", "Common.Alerts.DeletePost.Delete") /// Are you sure you want to delete this post? + public static let message = L10n.tr("Localizable", "Common.Alerts.DeletePost.Message") + /// Delete Post public static let title = L10n.tr("Localizable", "Common.Alerts.DeletePost.Title") } public enum DiscardPostContent { @@ -132,6 +132,8 @@ public enum L10n { public static let ok = L10n.tr("Localizable", "Common.Controls.Actions.Ok") /// Open public static let `open` = L10n.tr("Localizable", "Common.Controls.Actions.Open") + /// Open in Browser + public static let openInBrowser = L10n.tr("Localizable", "Common.Controls.Actions.OpenInBrowser") /// Open in Safari public static let openInSafari = L10n.tr("Localizable", "Common.Controls.Actions.OpenInSafari") /// Preview @@ -283,6 +285,8 @@ public enum L10n { public enum Actions { /// Favorite public static let favorite = L10n.tr("Localizable", "Common.Controls.Status.Actions.Favorite") + /// Hide + public static let hide = L10n.tr("Localizable", "Common.Controls.Status.Actions.Hide") /// Menu public static let menu = L10n.tr("Localizable", "Common.Controls.Status.Actions.Menu") /// Reblog @@ -314,6 +318,16 @@ public enum L10n { /// URL public static let url = L10n.tr("Localizable", "Common.Controls.Status.Tag.Url") } + public enum Visibility { + /// Only mentioned user can see this post. + public static let direct = L10n.tr("Localizable", "Common.Controls.Status.Visibility.Direct") + /// Only their followers can see this post. + public static let `private` = L10n.tr("Localizable", "Common.Controls.Status.Visibility.Private") + /// Only my followers can see this post. + public static let privateFromMe = L10n.tr("Localizable", "Common.Controls.Status.Visibility.PrivateFromMe") + /// Everyone can see this post but not display in the public timeline. + public static let unlisted = L10n.tr("Localizable", "Common.Controls.Status.Visibility.Unlisted") + } } public enum Tabs { /// Home @@ -490,17 +504,15 @@ public enum L10n { } } public enum ConfirmEmail { - /// We just sent an email to %@,\ntap the link to confirm your account. - public static func subtitle(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.ConfirmEmail.Subtitle", String(describing: p1)) - } + /// Tap the link we emailed to you to verify your account. + public static let subtitle = L10n.tr("Localizable", "Scene.ConfirmEmail.Subtitle") /// One last thing. public static let title = L10n.tr("Localizable", "Scene.ConfirmEmail.Title") public enum Button { - /// I never got an email - public static let dontReceiveEmail = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.DontReceiveEmail") /// Open Email App public static let openEmailApp = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.OpenEmailApp") + /// Resend + public static let resend = L10n.tr("Localizable", "Scene.ConfirmEmail.Button.Resend") } public enum DontReceiveEmail { /// Check if your email address is correct as well as your junk folder if you haven’t. @@ -548,36 +560,26 @@ public enum L10n { } } public enum Notification { - /// %@ favorited your post - public static func userFavoritedYourPost(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserFavorited Your Post", String(describing: p1)) - } - /// %@ followed you - public static func userFollowedYou(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserFollowedYou", String(describing: p1)) - } - /// %@ mentioned you - public static func userMentionedYou(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserMentionedYou", String(describing: p1)) - } - /// %@ reblogged your post - public static func userRebloggedYourPost(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserRebloggedYourPost", String(describing: p1)) - } - /// %@ requested to follow you - public static func userRequestedToFollowYou(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserRequestedToFollowYou", String(describing: p1)) - } - /// %@ Your poll has ended - public static func userYourPollHasEnded(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Notification.UserYourPollHasEnded", String(describing: p1)) - } public enum Keyobard { /// Show Everything public static let showEverything = L10n.tr("Localizable", "Scene.Notification.Keyobard.ShowEverything") /// Show Mentions public static let showMentions = L10n.tr("Localizable", "Scene.Notification.Keyobard.ShowMentions") } + public enum NotificationDescription { + /// favorited your post + public static let favoritedYourPost = L10n.tr("Localizable", "Scene.Notification.NotificationDescription.FavoritedYourPost") + /// followed you + public static let followedYou = L10n.tr("Localizable", "Scene.Notification.NotificationDescription.FollowedYou") + /// mentioned you + public static let mentionedYou = L10n.tr("Localizable", "Scene.Notification.NotificationDescription.MentionedYou") + /// poll has ended + public static let pollHasEnded = L10n.tr("Localizable", "Scene.Notification.NotificationDescription.PollHasEnded") + /// reblogged your post + public static let rebloggedYourPost = L10n.tr("Localizable", "Scene.Notification.NotificationDescription.RebloggedYourPost") + /// request to follow you + public static let requestToFollowYou = L10n.tr("Localizable", "Scene.Notification.NotificationDescription.RequestToFollowYou") + } public enum Title { /// Everything public static let everything = L10n.tr("Localizable", "Scene.Notification.Title.Everything") @@ -615,13 +617,29 @@ public enum L10n { } } public enum RelationshipActionAlert { - public enum ConfirmUnblockUsre { + public enum ConfirmBlockUser { + /// Confirm to block %@ + public static func message(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message", String(describing: p1)) + } + /// Block Account + public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title") + } + public enum ConfirmMuteUser { + /// Confirm to mute %@ + public static func message(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message", String(describing: p1)) + } + /// Mute Account + public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title") + } + public enum ConfirmUnblockUser { /// Confirm to unblock %@ public static func message(_ p1: Any) -> String { - return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message", String(describing: p1)) + return L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message", String(describing: p1)) } /// Unblock Account - public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title") + public static let title = L10n.tr("Localizable", "Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title") } public enum ConfirmUnmuteUser { /// Confirm to unmute %@ @@ -633,17 +651,23 @@ public enum L10n { } } public enum SegmentedControl { + /// About + public static let about = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.About") /// Media public static let media = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Media") /// Posts public static let posts = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Posts") + /// Posts and Replies + public static let postsAndReplies = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.PostsAndReplies") /// Replies public static let replies = L10n.tr("Localizable", "Scene.Profile.SegmentedControl.Replies") } } public enum Register { - /// Tell us about you. - public static let title = L10n.tr("Localizable", "Scene.Register.Title") + /// Let’s get you set up on %@ + public static func title(_ p1: Any) -> String { + return L10n.tr("Localizable", "Scene.Register.Title", String(describing: p1)) + } public enum Error { public enum Item { /// Agreement @@ -730,10 +754,20 @@ public enum L10n { public static let registrationUserInviteRequest = L10n.tr("Localizable", "Scene.Register.Input.Invite.RegistrationUserInviteRequest") } public enum Password { + /// 8 characters + public static let characterLimit = L10n.tr("Localizable", "Scene.Register.Input.Password.CharacterLimit") /// Your password needs at least eight characters public static let hint = L10n.tr("Localizable", "Scene.Register.Input.Password.Hint") /// password public static let placeholder = L10n.tr("Localizable", "Scene.Register.Input.Password.Placeholder") + /// Your password needs at least: + public static let require = L10n.tr("Localizable", "Scene.Register.Input.Password.Require") + public enum Accessibility { + /// checked + public static let checked = L10n.tr("Localizable", "Scene.Register.Input.Password.Accessibility.Checked") + /// unchecked + public static let unchecked = L10n.tr("Localizable", "Scene.Register.Input.Password.Accessibility.Unchecked") + } } public enum Username { /// This username is taken. @@ -748,6 +782,10 @@ public enum L10n { public static let content1 = L10n.tr("Localizable", "Scene.Report.Content1") /// Is there anything the moderators should know about this report? public static let content2 = L10n.tr("Localizable", "Scene.Report.Content2") + /// REPORTED + public static let reported = L10n.tr("Localizable", "Scene.Report.Reported") + /// Thanks for reporting, we’ll look into this. + public static let reportSentTitle = L10n.tr("Localizable", "Scene.Report.ReportSentTitle") /// Send Report public static let send = L10n.tr("Localizable", "Scene.Report.Send") /// Send without comment @@ -762,6 +800,8 @@ public enum L10n { public static func title(_ p1: Any) -> String { return L10n.tr("Localizable", "Scene.Report.Title", String(describing: p1)) } + /// Report + public static let titleReport = L10n.tr("Localizable", "Scene.Report.TitleReport") } public enum Search { /// Search @@ -816,7 +856,11 @@ public enum L10n { } } public enum ServerPicker { - /// Pick a server,\nany server. + /// Pick a community based on your interests, region, or a general purpose one. + public static let subtitle = L10n.tr("Localizable", "Scene.ServerPicker.Subtitle") + /// Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual. + public static let subtitleExtend = L10n.tr("Localizable", "Scene.ServerPicker.SubtitleExtend") + /// Mastodon is made of users in different communities. public static let title = L10n.tr("Localizable", "Scene.ServerPicker.Title") public enum Button { /// See Less @@ -863,7 +907,7 @@ public enum L10n { public static let noResults = L10n.tr("Localizable", "Scene.ServerPicker.EmptyState.NoResults") } public enum Input { - /// Find a server or join your own... + /// Search communities public static let placeholder = L10n.tr("Localizable", "Scene.ServerPicker.Input.Placeholder") } public enum Label { @@ -882,7 +926,7 @@ public enum L10n { public static func prompt(_ p1: Any) -> String { return L10n.tr("Localizable", "Scene.ServerRules.Prompt", String(describing: p1)) } - /// These rules are set by the admins of %@. + /// These are set and enforced by the %@ moderators. public static func subtitle(_ p1: Any) -> String { return L10n.tr("Localizable", "Scene.ServerRules.Subtitle", String(describing: p1)) } @@ -929,6 +973,18 @@ public enum L10n { /// The Boring Zone public static let title = L10n.tr("Localizable", "Scene.Settings.Section.BoringZone.Title") } + public enum LookAndFeel { + /// Light + public static let light = L10n.tr("Localizable", "Scene.Settings.Section.LookAndFeel.Light") + /// Really Dark + public static let reallyDark = L10n.tr("Localizable", "Scene.Settings.Section.LookAndFeel.ReallyDark") + /// Sorta Dark + public static let sortaDark = L10n.tr("Localizable", "Scene.Settings.Section.LookAndFeel.SortaDark") + /// Look and Feel + public static let title = L10n.tr("Localizable", "Scene.Settings.Section.LookAndFeel.Title") + /// Use System + public static let useSystem = L10n.tr("Localizable", "Scene.Settings.Section.LookAndFeel.UseSystem") + } public enum Notifications { /// Reblogs my post public static let boosts = L10n.tr("Localizable", "Scene.Settings.Section.Notifications.Boosts") @@ -990,6 +1046,10 @@ public enum L10n { } } public enum Welcome { + /// Get Started + public static let getStarted = L10n.tr("Localizable", "Scene.Welcome.GetStarted") + /// Log In + public static let logIn = L10n.tr("Localizable", "Scene.Welcome.LogIn") /// Social networking\nback in your hands. public static let slogan = L10n.tr("Localizable", "Scene.Welcome.Slogan") } diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings index b878e0342..668c7788a 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ar.lproj/Localizable.strings @@ -1,15 +1,15 @@ -"Common.Alerts.BlockDomain.BlockEntireDomain" = "حظر النِطاق"; -"Common.Alerts.BlockDomain.Title" = "هل أنتَ مُتأكِّدٌ حقًا مِن رغبتك في حظر %@ بالكامل؟ في معظم الحالات، يكون مِنَ الكافي والمُفَضَّل استهداف عدد محدود للحظر أو الكتم. لن ترى محتوى من هذا النطاق وسوف يتم إزالة جميع متابعيك المتواجدين فيه."; -"Common.Alerts.CleanCache.Message" = "تمَّ مَحو ذاكرة التخزين المؤقت %@ بنجاح."; +"Common.Alerts.BlockDomain.BlockEntireDomain" = "حظر النِّطاق"; +"Common.Alerts.BlockDomain.Title" = "هل أنتَ مُتأكِّدٌ حقًا مِن رغبتك في حظر %@ بالكامل؟ في معظم الحالات، يكون مِنَ الكافي والمُفَضَّل استهداف عدد محدود للحظر أو الكتم. لن ترى محتوى من هذا النطاق وسوف يُزال جميع متابعيك المتواجدين فيه."; +"Common.Alerts.CleanCache.Message" = "تمَّ مَحو %@ مِن ذاكرة التخزين المؤقت بنجاح."; "Common.Alerts.CleanCache.Title" = "مَحو ذاكرة التخزين المؤقت"; -"Common.Alerts.Common.PleaseTryAgain" = "يُرجى المحاولة مرة أُخرى."; -"Common.Alerts.Common.PleaseTryAgainLater" = "يُرجى المحاولة مرة أُخرى لاحقاً."; -"Common.Alerts.DeletePost.Delete" = "احذف"; +"Common.Alerts.Common.PleaseTryAgain" = "يُرجى المُحاولة مرة أُخرى."; +"Common.Alerts.Common.PleaseTryAgainLater" = "يُرجى المُحاولة مرة أُخرى لاحقًا."; +"Common.Alerts.DeletePost.Message" = "هَل أنتَ مُتأكِدٌ مِن رَغبتِكَ فِي حَذفِ هَذَا المَنشُور؟"; "Common.Alerts.DeletePost.Title" = "هل أنت متأكد من رغبتك في حذف هذا المنشور؟"; "Common.Alerts.DiscardPostContent.Message" = "أكِّد للتخلص مِن مُحتوى مَنشور مؤلَّف."; "Common.Alerts.DiscardPostContent.Title" = "التخلص من المسودة"; -"Common.Alerts.EditProfileFailure.Message" = "لا يمكن تعديل الملف الشخصي. يُرجى المحاولة مرة أُخرى."; -"Common.Alerts.EditProfileFailure.Title" = "خطأ في تَحرير الملف الشخصي"; +"Common.Alerts.EditProfileFailure.Message" = "يتعذَّر تعديل الملف التعريفي. يُرجى المُحاولة مرة أُخرى."; +"Common.Alerts.EditProfileFailure.Title" = "خطأ في تَحرير الملف التعريفي"; "Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "لا يُمكِنُ إرفاق أكثر مِن مَقطع مرئي واحِد."; "Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "لا يُمكن إرفاق مقطع مرئي إلى مَنشور يحتوي بالفعل على صُوَر."; "Common.Alerts.PublishPostFailure.Message" = "فَشَلَ نَشر المَنشور. @@ -19,7 +19,7 @@ "Common.Alerts.SavePhotoFailure.Title" = "إخفاق في حفظ الصورة"; "Common.Alerts.ServerError.Title" = "خطأ في الخادم"; "Common.Alerts.SignOut.Confirm" = "تسجيل الخروج"; -"Common.Alerts.SignOut.Message" = "هل أنت متأكد من رغبتك في تسجيل الخروج؟"; +"Common.Alerts.SignOut.Message" = "هل أنت متأكد من رغبتك في تسجيل الخُروج؟"; "Common.Alerts.SignOut.Title" = "تسجيل الخروج"; "Common.Alerts.SignUpFailure.Title" = "إخفاق في التسجيل"; "Common.Alerts.VoteFailure.PollEnded" = "انتهى استطلاع الرأي"; @@ -32,21 +32,22 @@ "Common.Controls.Actions.Confirm" = "تأكيد"; "Common.Controls.Actions.Continue" = "واصل"; "Common.Controls.Actions.CopyPhoto" = "نسخ الصورة"; -"Common.Controls.Actions.Delete" = "احذف"; -"Common.Controls.Actions.Discard" = "تجاهل"; +"Common.Controls.Actions.Delete" = "حذف"; +"Common.Controls.Actions.Discard" = "تجاهُل"; "Common.Controls.Actions.Done" = "تمّ"; "Common.Controls.Actions.Edit" = "تحرير"; -"Common.Controls.Actions.FindPeople" = "ابحث عن أشخاص لمتابعتهم"; -"Common.Controls.Actions.ManuallySearch" = "البحث يدوياً بدلاً من ذلك"; +"Common.Controls.Actions.FindPeople" = "ابحث عن أشخاص لِمُتابعتهم"; +"Common.Controls.Actions.ManuallySearch" = "البحث يدويًا بدلًا من ذلك"; "Common.Controls.Actions.Next" = "التالي"; "Common.Controls.Actions.Ok" = "حسنًا"; -"Common.Controls.Actions.Open" = "افتح"; -"Common.Controls.Actions.OpenInSafari" = "الفتح في Safari"; +"Common.Controls.Actions.Open" = "فتح"; +"Common.Controls.Actions.OpenInBrowser" = "الفَتحُ في المُتَصَفِّح"; +"Common.Controls.Actions.OpenInSafari" = "الفَتحُ في Safari"; "Common.Controls.Actions.Preview" = "مُعاينة"; "Common.Controls.Actions.Previous" = "السابق"; -"Common.Controls.Actions.Remove" = "احذف"; -"Common.Controls.Actions.Reply" = "الرَد"; -"Common.Controls.Actions.ReportUser" = "ابلغ عن %@"; +"Common.Controls.Actions.Remove" = "حذف"; +"Common.Controls.Actions.Reply" = "الرَّد"; +"Common.Controls.Actions.ReportUser" = "الإبلاغ عن %@"; "Common.Controls.Actions.Save" = "حفظ"; "Common.Controls.Actions.SavePhoto" = "حفظ الصورة"; "Common.Controls.Actions.SeeMore" = "عرض المزيد"; @@ -59,290 +60,318 @@ "Common.Controls.Actions.Skip" = "تخطي"; "Common.Controls.Actions.TakePhoto" = "التقاط صورة"; "Common.Controls.Actions.TryAgain" = "المُحاولة مرة أُخرى"; -"Common.Controls.Actions.UnblockDomain" = "إلغاء حظر %@"; +"Common.Controls.Actions.UnblockDomain" = "رفع الحظر عن %@"; "Common.Controls.Friendship.Block" = "حظر"; "Common.Controls.Friendship.BlockDomain" = "حظر %@"; "Common.Controls.Friendship.BlockUser" = "حظر %@"; "Common.Controls.Friendship.Blocked" = "محظور"; "Common.Controls.Friendship.EditInfo" = "تعديل المعلومات"; -"Common.Controls.Friendship.Follow" = "اتبع"; +"Common.Controls.Friendship.Follow" = "مُتابَعَة"; "Common.Controls.Friendship.Following" = "مُتابَع"; -"Common.Controls.Friendship.Mute" = "أكتم"; -"Common.Controls.Friendship.MuteUser" = "أكتم %@"; +"Common.Controls.Friendship.Mute" = "كَتم"; +"Common.Controls.Friendship.MuteUser" = "كَتم %@"; "Common.Controls.Friendship.Muted" = "مكتوم"; "Common.Controls.Friendship.Pending" = "قيد المُراجعة"; "Common.Controls.Friendship.Request" = "إرسال طَلَب"; -"Common.Controls.Friendship.Unblock" = "إلغاء الحَظر"; -"Common.Controls.Friendship.UnblockUser" = "إلغاء حظر %@"; -"Common.Controls.Friendship.Unmute" = "إلغاء الكتم"; -"Common.Controls.Friendship.UnmuteUser" = "إلغاء كتم %@"; +"Common.Controls.Friendship.Unblock" = "رفع الحَظر"; +"Common.Controls.Friendship.UnblockUser" = "رفع الحَظر عن %@"; +"Common.Controls.Friendship.Unmute" = "رفع الكتم"; +"Common.Controls.Friendship.UnmuteUser" = "رفع الكتم عن %@"; "Common.Controls.Keyboard.Common.ComposeNewPost" = "تأليف منشور جديد"; -"Common.Controls.Keyboard.Common.OpenSettings" = "أفتح الإعدادات"; -"Common.Controls.Keyboard.Common.ShowFavorites" = "إظهار المفضلة"; +"Common.Controls.Keyboard.Common.OpenSettings" = "فَتحُ الإعدادات"; +"Common.Controls.Keyboard.Common.ShowFavorites" = "إظهار المُفضَّلة"; "Common.Controls.Keyboard.Common.SwitchToTab" = "التبديل إلى %@"; "Common.Controls.Keyboard.SegmentedControl.NextSection" = "القسم التالي"; "Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "القسم السابق"; "Common.Controls.Keyboard.Timeline.NextStatus" = "المنشور التالي"; -"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "افتح الملف التعريفي للمؤلف"; -"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "افتح الملف التعريفي لمشارِك المنشور"; -"Common.Controls.Keyboard.Timeline.OpenStatus" = "افتح المنشور"; +"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "فتح الملف التعريفي للمؤلف"; +"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "فتح الملف التعريفي لمُعيد تدوين المنشور"; +"Common.Controls.Keyboard.Timeline.OpenStatus" = "فتح المنشور"; "Common.Controls.Keyboard.Timeline.PreviewImage" = "معاينة الصورة"; "Common.Controls.Keyboard.Timeline.PreviousStatus" = "المنشور السابق"; -"Common.Controls.Keyboard.Timeline.ReplyStatus" = "رد على المنشور"; +"Common.Controls.Keyboard.Timeline.ReplyStatus" = "الرَّد على مَنشور"; "Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "تبديل تحذير المُحتَوى"; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "تبديل المفضلة لِمنشور"; -"Common.Controls.Keyboard.Timeline.ToggleReblog" = "تبديل إعادة تدوين منشور"; -"Common.Controls.Status.Actions.Favorite" = "إضافة إلى المفضلة"; +"Common.Controls.Keyboard.Timeline.ToggleReblog" = "تبديل إعادة تدوين مَنشور"; +"Common.Controls.Status.Actions.Favorite" = "التفضيل"; +"Common.Controls.Status.Actions.Hide" = "إخفاء"; "Common.Controls.Status.Actions.Menu" = "القائمة"; "Common.Controls.Status.Actions.Reblog" = "إعادة النشر"; -"Common.Controls.Status.Actions.Reply" = "رد"; -"Common.Controls.Status.Actions.Unfavorite" = "إزالة من المفضلة"; -"Common.Controls.Status.Actions.Unreblog" = "تراجع عن إعادة النشر"; -"Common.Controls.Status.ContentWarning" = "تحذير عن المحتوى"; -"Common.Controls.Status.MediaContentWarning" = "انقر على أي مكان للكشف"; +"Common.Controls.Status.Actions.Reply" = "الرَّد"; +"Common.Controls.Status.Actions.Unfavorite" = "إزالة التفضيل"; +"Common.Controls.Status.Actions.Unreblog" = "التراجُع عن إعادة النشر"; +"Common.Controls.Status.ContentWarning" = "تحذير المُحتوى"; +"Common.Controls.Status.MediaContentWarning" = "انقر للكشف"; "Common.Controls.Status.Poll.Closed" = "انتهى"; "Common.Controls.Status.Poll.Vote" = "صَوِّت"; -"Common.Controls.Status.ShowPost" = "اظهر المنشور"; -"Common.Controls.Status.ShowUserProfile" = "اظهر الملف التعريفي للمستخدم"; -"Common.Controls.Status.Tag.Email" = "البريد الإلكتروني"; -"Common.Controls.Status.Tag.Emoji" = "إيموجي"; -"Common.Controls.Status.Tag.Hashtag" = "الوسم"; -"Common.Controls.Status.Tag.Link" = "الرابط"; -"Common.Controls.Status.Tag.Mention" = "أشر إلى"; +"Common.Controls.Status.ShowPost" = "إظهار منشور"; +"Common.Controls.Status.ShowUserProfile" = "إظهار الملف التعريفي للمُستخدِم"; +"Common.Controls.Status.Tag.Email" = "بريد إلكتروني"; +"Common.Controls.Status.Tag.Emoji" = "رمز تعبيري"; +"Common.Controls.Status.Tag.Hashtag" = "وسم"; +"Common.Controls.Status.Tag.Link" = "رابط"; +"Common.Controls.Status.Tag.Mention" = "إشارة"; "Common.Controls.Status.Tag.Url" = "عنوان URL"; "Common.Controls.Status.UserReblogged" = "أعادَ %@ تدوينها"; -"Common.Controls.Status.UserRepliedTo" = "رد على %@"; -"Common.Controls.Tabs.Home" = "الخيط الرئيسي"; +"Common.Controls.Status.UserRepliedTo" = "رَدًا على %@"; +"Common.Controls.Status.Visibility.Direct" = "المُستخدمِونَ المُشارِ إليهم فَقَطْ مَن يُمكِنُهُم رُؤيَةُ هَذَا المَنشُور."; +"Common.Controls.Status.Visibility.Private" = "فَقَطْ مُتابِعينَهُم مَن يُمكِنُهُم رُؤيَةُ هَذَا المَنشُور."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "فَقَطْ مُتابِعيني أنَا مَن يُمكِنُهُم رُؤيَةُ هَذَا المَنشُور."; +"Common.Controls.Status.Visibility.Unlisted" = "يُمكِنُ لِلجَميعِ رُؤيَةُ هَذَا المَنشورِ وَلكِنَّهُ لَا يُعرَضُ فِي الخَطِّ الزَمنيّ العام."; +"Common.Controls.Tabs.Home" = "الرَّئِيسَة"; "Common.Controls.Tabs.Notification" = "الإشعارات"; "Common.Controls.Tabs.Profile" = "الملف التعريفي"; -"Common.Controls.Tabs.Search" = "بحث"; +"Common.Controls.Tabs.Search" = "البَحث"; "Common.Controls.Timeline.Filtered" = "مُصفَّى"; -"Common.Controls.Timeline.Header.BlockedWarning" = "لا يُمكِنُكَ عَرض الملف الشخصي لهذا المُستخدِم -حتَّى يَرفَعَ الحَظر عَنك."; -"Common.Controls.Timeline.Header.BlockingWarning" = "لا يُمكنك الاطلاع على الملف الشخصي لهذا المُستخدِم +"Common.Controls.Timeline.Header.BlockedWarning" = "لا يُمكِنُكَ عَرض الملف التَعريفي لهذا المُستخدِم +حتَّى يَرفَعَ الحَظرَ عَنك."; +"Common.Controls.Timeline.Header.BlockingWarning" = "لا يُمكِنُكَ الاِطلاع على الملف التَعريفي لهذا المُستخدِم حتَّى تَرفعَ الحَظر عنه. -ملفًّكَ الشخصي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا."; -"Common.Controls.Timeline.Header.NoStatusFound" = "لا توجد هناك منشورات"; +ملفُّكَ التَعريفي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا."; +"Common.Controls.Timeline.Header.NoStatusFound" = "لَم يُعْثَر على مَنشورات"; "Common.Controls.Timeline.Header.SuspendedWarning" = "تمَّ إيقاف هذا المُستخدِم."; -"Common.Controls.Timeline.Header.UserBlockedWarning" = "لا يُمكِنُكَ عَرض ملف %@ الشخصي +"Common.Controls.Timeline.Header.UserBlockedWarning" = "لا يُمكِنُكَ عَرض ملف %@ التَعريفي حتَّى يَرفَعَ الحَظر عَنك."; -"Common.Controls.Timeline.Header.UserBlockingWarning" = "لا يُمكنك الاطلاع على ملف %@ الشخصي +"Common.Controls.Timeline.Header.UserBlockingWarning" = "لا يُمكنك الاطلاع على ملف %@ التَعريفي حتَّى تَرفعَ الحَظر عنه. -ملفًّكَ الشخصي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا."; -"Common.Controls.Timeline.Header.UserSuspendedWarning" = "لقد أوقِفَ حِساب %@."; -"Common.Controls.Timeline.Loader.LoadMissingPosts" = "تحميل المنشورات المَفقودة"; -"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "تحميل المزيد من المنشورات..."; -"Common.Controls.Timeline.Loader.ShowMoreReplies" = "إظهار المزيد من الردود"; -"Common.Controls.Timeline.Timestamp.Now" = "الأن"; -"Scene.AccountList.AddAccount" = "إضافة حساب"; -"Scene.AccountList.DismissAccountSwitcher" = "تجاهُل مبدِّل الحساب"; -"Scene.AccountList.TabBarHint" = "المِلف المُحدَّد حاليًا: %@. انقر نقرًا مزدوجًا ثم اضغط مع الاستمرار لإظهار مُبدِّل الحِساب"; +ملفُّكَ التَعريفي يَظهَرُ بِمثل هذِهِ الحالة بالنسبةِ لَهُ أيضًا."; +"Common.Controls.Timeline.Header.UserSuspendedWarning" = "لقد أُوقِفَ حِساب %@."; +"Common.Controls.Timeline.Loader.LoadMissingPosts" = "تحميل المَنشورات المَفقودَة"; +"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "يَجري تحميل المَنشورات المَفقودَة..."; +"Common.Controls.Timeline.Loader.ShowMoreReplies" = "إظهار مَزيد مِنَ الرُّدود"; +"Common.Controls.Timeline.Timestamp.Now" = "الآن"; +"Scene.AccountList.AddAccount" = "إضافَةُ حِساب"; +"Scene.AccountList.DismissAccountSwitcher" = "تجاهُل مبدِّل الحِساب"; +"Scene.AccountList.TabBarHint" = "المِلف المُحدَّد حاليًا: %@. انقر نقرًا مزدوجًا مع الاستمرار لإظهار مُبدِّل الحِساب"; "Scene.Compose.Accessibility.AppendAttachment" = "إضافة مُرفَق"; "Scene.Compose.Accessibility.AppendPoll" = "اضافة استطلاع رأي"; -"Scene.Compose.Accessibility.CustomEmojiPicker" = "منتقي مخصص للإيموجي"; -"Scene.Compose.Accessibility.DisableContentWarning" = "تعطيل تحذير الحتوى"; -"Scene.Compose.Accessibility.EnableContentWarning" = "تنشيط تحذير المحتوى"; +"Scene.Compose.Accessibility.CustomEmojiPicker" = "منتقي الرموز التعبيرية المُخصَّص"; +"Scene.Compose.Accessibility.DisableContentWarning" = "تعطيل تحذير المُحتَوى"; +"Scene.Compose.Accessibility.EnableContentWarning" = "تفعيل تحذير المُحتَوى"; "Scene.Compose.Accessibility.PostVisibilityMenu" = "قائمة ظهور المنشور"; "Scene.Compose.Accessibility.RemovePoll" = "إزالة الاستطلاع"; -"Scene.Compose.Attachment.AttachmentBroken" = "هذا ال%@ مُعطَّل ويتعذَّر رفعه إلى ماستودون."; -"Scene.Compose.Attachment.DescriptionPhoto" = "صِف الصورة للمكفوفين..."; -"Scene.Compose.Attachment.DescriptionVideo" = "صِف المقطع المرئي للمكفوفين..."; +"Scene.Compose.Attachment.AttachmentBroken" = "هذا ال%@ مُعطَّل +ويتعذَّرُ رفعُه إلى ماستودون."; +"Scene.Compose.Attachment.DescriptionPhoto" = "صِف الصورة للمَكفوفين..."; +"Scene.Compose.Attachment.DescriptionVideo" = "صِف المقطع المرئي للمَكفوفين..."; "Scene.Compose.Attachment.Photo" = "صورة"; -"Scene.Compose.Attachment.Video" = "فيديو"; -"Scene.Compose.AutoComplete.SpaceToAdd" = "انقر مساحة لإضافتِها"; -"Scene.Compose.ComposeAction" = "انشر"; +"Scene.Compose.Attachment.Video" = "مقطع مرئي"; +"Scene.Compose.AutoComplete.SpaceToAdd" = "انقر على مساحة لإضافتِها"; +"Scene.Compose.ComposeAction" = "نَشر"; "Scene.Compose.ContentInputPlaceholder" = "أخبِرنا بِما يَجُولُ فِي ذِهنَك"; "Scene.Compose.ContentWarning.Placeholder" = "اكتب تَحذيرًا دَقيقًا هُنا..."; "Scene.Compose.Keyboard.AppendAttachmentEntry" = "إضافة مُرفَق - %@"; "Scene.Compose.Keyboard.DiscardPost" = "تجاهُل المنشور"; "Scene.Compose.Keyboard.PublishPost" = "نَشر المَنشُور"; "Scene.Compose.Keyboard.SelectVisibilityEntry" = "اختر مدى الظهور - %@"; -"Scene.Compose.Keyboard.ToggleContentWarning" = "تبديل تحذير المُحتوى"; +"Scene.Compose.Keyboard.ToggleContentWarning" = "تبديل تحذير المُحتَوى"; "Scene.Compose.Keyboard.TogglePoll" = "تبديل الاستطلاع"; "Scene.Compose.MediaSelection.Browse" = "تصفح"; -"Scene.Compose.MediaSelection.Camera" = "التقط صورة"; +"Scene.Compose.MediaSelection.Camera" = "إلتقاط صورة"; "Scene.Compose.MediaSelection.PhotoLibrary" = "مكتبة الصور"; -"Scene.Compose.Poll.DurationTime" = "المدة: %@"; -"Scene.Compose.Poll.OneDay" = "يوم واحد"; -"Scene.Compose.Poll.OneHour" = "ساعة واحدة"; +"Scene.Compose.Poll.DurationTime" = "المُدَّة: %@"; +"Scene.Compose.Poll.OneDay" = "يومٌ واحِد"; +"Scene.Compose.Poll.OneHour" = "ساعةٌ واحدة"; "Scene.Compose.Poll.OptionNumber" = "الخيار %ld"; -"Scene.Compose.Poll.SevenDays" = "7 أيام"; -"Scene.Compose.Poll.SixHours" = "6 ساعات"; -"Scene.Compose.Poll.ThirtyMinutes" = "30 دقيقة"; -"Scene.Compose.Poll.ThreeDays" = "3 أيام"; -"Scene.Compose.ReplyingToUser" = "رد على %@"; +"Scene.Compose.Poll.SevenDays" = "سبعةُ أيام"; +"Scene.Compose.Poll.SixHours" = "سِتُّ ساعات"; +"Scene.Compose.Poll.ThirtyMinutes" = "ثلاثون دقيقة"; +"Scene.Compose.Poll.ThreeDays" = "ثلاثةُ أيام"; +"Scene.Compose.ReplyingToUser" = "رَدًا على %@"; "Scene.Compose.Title.NewPost" = "منشور جديد"; -"Scene.Compose.Title.NewReply" = "رد جديد"; -"Scene.Compose.Visibility.Direct" = "ففط للأشخاص المشار إليهم"; -"Scene.Compose.Visibility.Private" = "لمتابعيك فقط"; +"Scene.Compose.Title.NewReply" = "رَدٌّ جديد"; +"Scene.Compose.Visibility.Direct" = "للأشخاص المُشار إليهم فقط"; +"Scene.Compose.Visibility.Private" = "للمُتابِعينَ فقط"; "Scene.Compose.Visibility.Public" = "للعامة"; "Scene.Compose.Visibility.Unlisted" = "غير مُدرَج"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "لم أستلم أبدًا بريدا إلكترونيا"; -"Scene.ConfirmEmail.Button.OpenEmailApp" = "افتح تطبيق البريد الإلكتروني"; -"Scene.ConfirmEmail.DontReceiveEmail.Description" = "تحقق ممَّ إذا كان عنوان بريدك الإلكتروني صحيحًا وكذلك تأكد مِن مجلد البريد غير الهام إذا لم تكن قد فعلت ذلك."; +"Scene.ConfirmEmail.Button.OpenEmailApp" = "فتح تطبيق البريد الإلكتروني"; +"Scene.ConfirmEmail.Button.Resend" = "إعادَةُ الإرسال"; +"Scene.ConfirmEmail.DontReceiveEmail.Description" = "تحقق ممَّ إذا كان عنوان بريدك الإلكتروني صحيحًا، وكذلك تأكد مِن مجلد البريد غير الهام إذا لم تكن قد فعلت ذلك."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "إعادة إرسال البريد الإلكتروني"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "تحقق من بريدك الإلكتروني"; "Scene.ConfirmEmail.OpenEmailApp.Description" = "لقد أرسلنا لك بريدًا إلكترونيًا للتو. تحقق من مجلد البريد غير الهام الخاص بك إذا لم تكن قد فعلت ذلك."; "Scene.ConfirmEmail.OpenEmailApp.Mail" = "البريد"; "Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "فتح عميل البريد الإلكتروني"; "Scene.ConfirmEmail.OpenEmailApp.Title" = "تحقَّق من بريدك الوارِد."; -"Scene.ConfirmEmail.Subtitle" = "لقد أرسلنا للتو رسالة بريد إلكتروني إلى %@، -اضغط على الرابط لتأكيد حسابك."; -"Scene.ConfirmEmail.Title" = "شيء واحد أخير."; -"Scene.Favorite.Title" = "مفضلتك"; +"Scene.ConfirmEmail.Subtitle" = "لقد أرسلنا للتو بريد إلكتروني إلى %@، +انقر على الرابط لتأكيد حسابك."; +"Scene.ConfirmEmail.Title" = "شيءٌ أخير."; +"Scene.Favorite.Title" = "مُفضَّلَتُك"; "Scene.Follower.Footer" = "لا يُمكِن عَرض المُتابِعين مِنَ الخوادم الأُخرى."; "Scene.Following.Footer" = "لا يُمكِن عَرض المُتابَعات مِنَ الخوادم الأُخرى."; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "إظهار منشورات جديدة"; -"Scene.HomeTimeline.NavigationBarState.Offline" = "غير متصل"; -"Scene.HomeTimeline.NavigationBarState.Published" = "تم نشره!"; -"Scene.HomeTimeline.NavigationBarState.Publishing" = "جارٍ نشر المشاركة…"; -"Scene.HomeTimeline.Title" = "الخيط الرئيسي"; +"Scene.HomeTimeline.NavigationBarState.Offline" = "غَير مُتَّصِل"; +"Scene.HomeTimeline.NavigationBarState.Published" = "تمَّ النَّشر!"; +"Scene.HomeTimeline.NavigationBarState.Publishing" = "يَجري نَشر المُشارَكَة..."; +"Scene.HomeTimeline.Title" = "الرَّئِيسَة"; "Scene.Notification.Keyobard.ShowEverything" = "إظهار كل شيء"; "Scene.Notification.Keyobard.ShowMentions" = "إظهار الإشارات"; -"Scene.Notification.Title.Everything" = "الكل"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "فَضَّلَ مَنشُورَك"; +"Scene.Notification.NotificationDescription.FollowedYou" = "بَدَأ بِمُتابَعَتِك"; +"Scene.Notification.NotificationDescription.MentionedYou" = "أشارَ إليك"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "انتهى استطلاعُ الرأي"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "أعادَ تَدوينَ مَنشُورَك"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "طَلَبَ مُتابَعتَك"; +"Scene.Notification.Title.Everything" = "كُلُّ شيء"; "Scene.Notification.Title.Mentions" = "الإشارات"; -"Scene.Notification.UserFavorited Your Post" = "أضاف %@ منشورك إلى مفضلته"; -"Scene.Notification.UserFollowedYou" = "يتابعك %@"; -"Scene.Notification.UserMentionedYou" = "أشار إليك %@"; -"Scene.Notification.UserRebloggedYourPost" = "أعاد %@ تدوين مشاركتك"; -"Scene.Notification.UserRequestedToFollowYou" = "طلب %@ متابعتك"; -"Scene.Notification.UserYourPollHasEnded" = "%@ اِنتهى استطلاعُكَ للرأي"; "Scene.Preview.Keyboard.ClosePreview" = "إغلاق المُعايَنَة"; "Scene.Preview.Keyboard.ShowNext" = "إظهار التالي"; "Scene.Preview.Keyboard.ShowPrevious" = "إظهار السابق"; "Scene.Profile.Dashboard.Followers" = "متابِع"; "Scene.Profile.Dashboard.Following" = "مُتابَع"; -"Scene.Profile.Dashboard.Posts" = "منشورات"; +"Scene.Profile.Dashboard.Posts" = "مَنشورات"; "Scene.Profile.Fields.AddRow" = "إضافة صف"; -"Scene.Profile.Fields.Placeholder.Content" = "المحتوى"; +"Scene.Profile.Fields.Placeholder.Content" = "المُحتَوى"; "Scene.Profile.Fields.Placeholder.Label" = "التسمية"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "أكِّد لرفع حظر %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "إلغاء حظر الحساب"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "أكِّد لرفع كتمْ %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "إلغاء كتم الحساب"; -"Scene.Profile.SegmentedControl.Media" = "وسائط"; -"Scene.Profile.SegmentedControl.Posts" = "منشورات"; -"Scene.Profile.SegmentedControl.Replies" = "ردود"; -"Scene.Register.Error.Item.Agreement" = "الاتفاقية"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "تأكيدُ حَظر %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "حَظرُ الحِساب"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "تأكيدُ كَتم %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "كَتمُ الحِساب"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "تأكيدُ رَفع الحَظرِ عَن %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "رَفعُ الحَظرِ عَنِ الحِساب"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "أكِّد لرفع الكتمْ عن %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "رفع الكتم عن الحساب"; +"Scene.Profile.SegmentedControl.About" = "حَول"; +"Scene.Profile.SegmentedControl.Media" = "وَسائِط"; +"Scene.Profile.SegmentedControl.Posts" = "مَنشورات"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "المَنشوراتُ وَالرُدود"; +"Scene.Profile.SegmentedControl.Replies" = "رُدُود"; +"Scene.Register.Error.Item.Agreement" = "الاِتِّفاقيَّة"; "Scene.Register.Error.Item.Email" = "البريد الإلكتروني"; "Scene.Register.Error.Item.Locale" = "اللغة المحلية"; -"Scene.Register.Error.Item.Password" = "الكلمة السرية"; +"Scene.Register.Error.Item.Password" = "الرمز السري"; "Scene.Register.Error.Item.Reason" = "السبب"; -"Scene.Register.Error.Item.Username" = "اسم المستخدم"; +"Scene.Register.Error.Item.Username" = "اِسم المُستَخدِم"; "Scene.Register.Error.Reason.Accepted" = "يجب أن يُقبل %@"; -"Scene.Register.Error.Reason.Blank" = "%@ مطلوب"; +"Scene.Register.Error.Reason.Blank" = "%@ مَطلوب"; "Scene.Register.Error.Reason.Blocked" = "يحتوي %@ على موفِّر خدمة بريد إلكتروني غير مسموح به"; "Scene.Register.Error.Reason.Inclusion" = "إنَّ %@ قيمة غير مدعومة"; "Scene.Register.Error.Reason.Invalid" = "%@ غير صالح"; "Scene.Register.Error.Reason.Reserved" = "إنَّ %@ عبارة عن كلمة مفتاحيَّة محجوزة"; "Scene.Register.Error.Reason.Taken" = "إنَّ %@ مُستخدَمٌ بالفعل"; "Scene.Register.Error.Reason.TooLong" = "%@ طويل جداً"; -"Scene.Register.Error.Reason.TooShort" = "%@ قصير جدا"; +"Scene.Register.Error.Reason.TooShort" = "%@ قصير جدًا"; "Scene.Register.Error.Reason.Unreachable" = "يبدوا أنَّ %@ غير موجود"; "Scene.Register.Error.Special.EmailInvalid" = "هذا عنوان بريد إلكتروني غير صالح"; -"Scene.Register.Error.Special.PasswordTooShort" = "كلمة المرور قصيرة جداً (يجب أن تكون 8 أحرف على الأقل)"; +"Scene.Register.Error.Special.PasswordTooShort" = "رمز السر قصير جدًا (يجب أن يتكون من ثمان خانات على الأقل)"; "Scene.Register.Error.Special.UsernameInvalid" = "يُمكِن أن يحتوي اسم المستخدم على أحرف أبجدية، أرقام وشرطات سفلية فقط"; -"Scene.Register.Error.Special.UsernameTooLong" = "اسم المستخدم طويل جداً (يجب ألّا يكون أطول من 30 رمز)"; -"Scene.Register.Input.Avatar.Delete" = "احذف"; -"Scene.Register.Input.DisplayName.Placeholder" = "الاسم المعروض"; -"Scene.Register.Input.Email.Placeholder" = "البريد الإلكتروني"; +"Scene.Register.Error.Special.UsernameTooLong" = "اِسم المُستَخدِم طويل جداً (يَجِبُ ألّا يكون أطول من ثلاثين خانة)"; +"Scene.Register.Input.Avatar.Delete" = "حذف"; +"Scene.Register.Input.DisplayName.Placeholder" = "اِسم العَرض"; +"Scene.Register.Input.Email.Placeholder" = "بريد إلكتروني"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "لماذا ترغب في الانضمام؟"; -"Scene.Register.Input.Password.Hint" = "يجب أن تكون كلمتك السرية متكونة من ثمانية أحرف على الأقل"; -"Scene.Register.Input.Password.Placeholder" = "الكلمة السرية"; -"Scene.Register.Input.Username.DuplicatePrompt" = "اسم المستخدم هذا غير متوفر."; -"Scene.Register.Input.Username.Placeholder" = "اسم المستخدم"; -"Scene.Register.Title" = "أخبرنا عنك."; -"Scene.Report.Content1" = "هل ترغب في إضافة أي مشاركات أُخرى إلى الشكوى؟"; -"Scene.Report.Content2" = "هل هناك أي شيء يجب أن يعرفه المُراقبين حول هذه الشكوى؟"; -"Scene.Report.Send" = "إرسال الشكوى"; +"Scene.Register.Input.Password.Accessibility.Checked" = "مُتَحَققٌ مِنه"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "غيرُ مُتَحَققٍ مِنه"; +"Scene.Register.Input.Password.CharacterLimit" = "ثمانيةُ خانات"; +"Scene.Register.Input.Password.Hint" = "يجب أن يكون رمزك السري مكوَّن من ثمان خانات على الأقل"; +"Scene.Register.Input.Password.Placeholder" = "رمز سري"; +"Scene.Register.Input.Password.Require" = "رمز المرور الخاص بك يجب أن يحتوي على الأقل:"; +"Scene.Register.Input.Username.DuplicatePrompt" = "اِسم المُستَخدِم هذا مأخوذٌ بالفعل."; +"Scene.Register.Input.Username.Placeholder" = "اِسم مُستَخدِم"; +"Scene.Register.Title" = "أخبرنا عن نفسك."; +"Scene.Report.Content1" = "هل ترغب في إضافة أي منشورات أُخرى إلى البلاغ؟"; +"Scene.Report.Content2" = "هل هناك أي شيء يجب أن يعرفه المُراقبين حول هذا البلاغ؟"; +"Scene.Report.ReportSentTitle" = "شُكرًا لَكَ على الإبلاغ، سَوفَ نَنظُرُ فِي هَذَا الأمر."; +"Scene.Report.Reported" = "مُبْلَغٌ عَنه"; +"Scene.Report.Send" = "إرسال البلاغ"; "Scene.Report.SkipToSend" = "إرسال بدون تعليق"; -"Scene.Report.Step1" = "الخطوة 1 من 2"; -"Scene.Report.Step2" = "الخطوة 2 من 2"; +"Scene.Report.Step1" = "الخطوة الأولى مِن أصل اثنتين"; +"Scene.Report.Step2" = "الخطوة الثانية والأخيرة"; "Scene.Report.TextPlaceholder" = "اكتب أو الصق تعليقات إضافيَّة"; -"Scene.Report.Title" = "ابلغ عن %@"; -"Scene.Search.Recommend.Accounts.Description" = "قد ترغب في متابعة هذه الحسابات"; -"Scene.Search.Recommend.Accounts.Follow" = "تابع"; -"Scene.Search.Recommend.Accounts.Title" = "حسابات قد تعجبك"; -"Scene.Search.Recommend.ButtonText" = "طالع الكل"; -"Scene.Search.Recommend.HashTag.Description" = "الوسوم التي تحظى بقدر كبير من الاهتمام"; +"Scene.Report.Title" = "الإبلاغ عن %@"; +"Scene.Report.TitleReport" = "إبلاغ"; +"Scene.Search.Recommend.Accounts.Description" = "قَد تَرغَب في مُتابَعَةِ هَذِهِ الحِسابات"; +"Scene.Search.Recommend.Accounts.Follow" = "مُتابَعَة"; +"Scene.Search.Recommend.Accounts.Title" = "حِساباتٍ قَد تُعجِبُك"; +"Scene.Search.Recommend.ButtonText" = "إظهار الكُل"; +"Scene.Search.Recommend.HashTag.Description" = "الوُسُومُ الَّتي تَحظى بقدرٍ كبيرٍ مِنَ الاِهتمام"; "Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ أشخاص يتحدَّثوا"; -"Scene.Search.Recommend.HashTag.Title" = "ذات شعبية على ماستدون"; +"Scene.Search.Recommend.HashTag.Title" = "ذُو شعبيَّة على ماستودون"; "Scene.Search.SearchBar.Cancel" = "إلغاء"; -"Scene.Search.SearchBar.Placeholder" = "البحث عن وسوم أو مستخدمين·ات"; +"Scene.Search.SearchBar.Placeholder" = "البحث عن وسوم أو مستخدمين"; "Scene.Search.Searching.Clear" = "مَحو"; -"Scene.Search.Searching.EmptyState.NoResults" = "ليس هناك أية نتيجة"; -"Scene.Search.Searching.RecentSearch" = "عمليات البحث الأخيرة"; -"Scene.Search.Searching.Segment.All" = "الكل"; -"Scene.Search.Searching.Segment.Hashtags" = "الوسوم"; +"Scene.Search.Searching.EmptyState.NoResults" = "لا تُوجَدُ نتائِج"; +"Scene.Search.Searching.RecentSearch" = "عَمَليَّاُت البَحثِ الأخيرَة"; +"Scene.Search.Searching.Segment.All" = "الكُل"; +"Scene.Search.Searching.Segment.Hashtags" = "الوُسُوم"; "Scene.Search.Searching.Segment.People" = "الأشخاص"; -"Scene.Search.Searching.Segment.Posts" = "المنشورات"; -"Scene.Search.Title" = "بحث"; +"Scene.Search.Searching.Segment.Posts" = "المَنشورات"; +"Scene.Search.Title" = "البحث"; "Scene.ServerPicker.Button.Category.Academia" = "أكاديمي"; -"Scene.ServerPicker.Button.Category.Activism" = "للنشطاء"; +"Scene.ServerPicker.Button.Category.Activism" = "النشطاء"; "Scene.ServerPicker.Button.Category.All" = "الكل"; "Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "الفئة: الكل"; -"Scene.ServerPicker.Button.Category.Art" = "فن"; +"Scene.ServerPicker.Button.Category.Art" = "فنون"; "Scene.ServerPicker.Button.Category.Food" = "الطعام"; -"Scene.ServerPicker.Button.Category.Furry" = "فروي"; +"Scene.ServerPicker.Button.Category.Furry" = "مكسو بالفرو"; "Scene.ServerPicker.Button.Category.Games" = "ألعاب"; "Scene.ServerPicker.Button.Category.General" = "عام"; "Scene.ServerPicker.Button.Category.Journalism" = "صحافة"; "Scene.ServerPicker.Button.Category.Lgbt" = "مجتمع الشواذ"; "Scene.ServerPicker.Button.Category.Music" = "موسيقى"; -"Scene.ServerPicker.Button.Category.Regional" = "اقليمي"; -"Scene.ServerPicker.Button.Category.Tech" = "تكنولوجيا"; -"Scene.ServerPicker.Button.SeeLess" = "اعرض أقل"; -"Scene.ServerPicker.Button.SeeMore" = "اعرض المزيد"; +"Scene.ServerPicker.Button.Category.Regional" = "إقليمي"; +"Scene.ServerPicker.Button.Category.Tech" = "تقنية"; +"Scene.ServerPicker.Button.SeeLess" = "عرض عناصر أقل"; +"Scene.ServerPicker.Button.SeeMore" = "عرض عناصر أكثر"; "Scene.ServerPicker.EmptyState.BadNetwork" = "حدث خطأٌ ما أثناء تحميل البيانات. تحقَّق من اتصالك بالإنترنت."; -"Scene.ServerPicker.EmptyState.FindingServers" = "البحث عن خوادم متوفرة..."; +"Scene.ServerPicker.EmptyState.FindingServers" = "يجري إيجاد خوادم متوفِّرَة..."; "Scene.ServerPicker.EmptyState.NoResults" = "لا توجد نتائج"; -"Scene.ServerPicker.Input.Placeholder" = "ابحث عن خادم أو انضم إلى سيرفر خاص بك..."; +"Scene.ServerPicker.Input.Placeholder" = "اِبحَث عن خادِم أو انضم إلى آخر خاص بك..."; "Scene.ServerPicker.Label.Category" = "الفئة"; -"Scene.ServerPicker.Label.Language" = "اللغة"; -"Scene.ServerPicker.Label.Users" = "مستخدمون·ات"; +"Scene.ServerPicker.Label.Language" = "اللُّغة"; +"Scene.ServerPicker.Label.Users" = "مُستَخدِم"; +"Scene.ServerPicker.Subtitle" = "اختر مجتمعًا بناءً على اهتماماتك، منطقتك أو يمكنك حتى اختيارُ مجتمعٍ ذي غرضٍ عام."; +"Scene.ServerPicker.SubtitleExtend" = "اختر مجتمعًا بناءً على اهتماماتك، منطقتك أو يمكنك حتى اختيارُ مجتمعٍ ذي غرضٍ عام. تُشغَّل جميعُ المجتمعِ مِن قِبَلِ مُنظمَةٍ أو فردٍ مُستقلٍ تمامًا."; "Scene.ServerPicker.Title" = "اِختر خادِم، -أي خادِم."; -"Scene.ServerRules.Button.Confirm" = "انا أوافق"; -"Scene.ServerRules.PrivacyPolicy" = "سياسة الخصوصية"; -"Scene.ServerRules.Prompt" = "إن اخترت المواصلة، فإنك تخضع لشروط الخدمة وسياسة الخصوصية لـ %@."; -"Scene.ServerRules.Subtitle" = "تم سنّ هذه القواعد من قبل مشرفي %@."; -"Scene.ServerRules.TermsOfService" = "شروط الخدمة"; +أيًّا مِنهُم."; +"Scene.ServerRules.Button.Confirm" = "أنا مُوافِق"; +"Scene.ServerRules.PrivacyPolicy" = "سِياسَة الخُصُوصيَّة"; +"Scene.ServerRules.Prompt" = "في حال إختيارك للمواصلة، أنت تخضع لشروط الخدمة وسياسة الخصوصية لِـ%@."; +"Scene.ServerRules.Subtitle" = "سُنَّت هذه القواعد من قِبل مشرفي %@."; +"Scene.ServerRules.TermsOfService" = "شُرُوط الخِدمَة"; "Scene.ServerRules.Title" = "بعض القواعد الأساسية."; -"Scene.Settings.Footer.MastodonDescription" = "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء على GitHub في %@ (%@)"; +"Scene.Settings.Footer.MastodonDescription" = "ماستودون بَرنامجٌ مَفتُوحُ المَصدَر. يُمكِنُكَ المُساهَمَةُ، أوِ الإبلاغُ عَنِ المُشكِلات عَن طريق مِنصَّة جيت هاب (GitHub) في %@ (%@)"; "Scene.Settings.Keyboard.CloseSettingsWindow" = "إغلاق نافذة الإعدادات"; "Scene.Settings.Section.Appearance.Automatic" = "تلقائي"; "Scene.Settings.Section.Appearance.Dark" = "مظلمٌ دائِمًا"; "Scene.Settings.Section.Appearance.Light" = "مضيءٌ دائمًا"; -"Scene.Settings.Section.Appearance.Title" = "المظهر"; -"Scene.Settings.Section.BoringZone.AccountSettings" = "إعدادات الحساب"; -"Scene.Settings.Section.BoringZone.Privacy" = "سياسة الخصوصية"; -"Scene.Settings.Section.BoringZone.Terms" = "شروط الخدمة"; -"Scene.Settings.Section.BoringZone.Title" = "المنطقة المملة"; -"Scene.Settings.Section.Notifications.Boosts" = "إعادة تدوين منشوراتي"; -"Scene.Settings.Section.Notifications.Favorites" = "الإعجاب بِمنشوراتي"; -"Scene.Settings.Section.Notifications.Follows" = "يتابعني"; -"Scene.Settings.Section.Notifications.Mentions" = "الإشارة لي"; +"Scene.Settings.Section.Appearance.Title" = "المَظهر"; +"Scene.Settings.Section.BoringZone.AccountSettings" = "إعداداتُ الحِساب"; +"Scene.Settings.Section.BoringZone.Privacy" = "سِياسَةُ الخُصوصيَّة"; +"Scene.Settings.Section.BoringZone.Terms" = "شُرُوطُ الخِدمَة"; +"Scene.Settings.Section.BoringZone.Title" = "المنطِقَةُ المُملَّة"; +"Scene.Settings.Section.LookAndFeel.Light" = "مُضيء"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "مُظلمٌ حَقًّا"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "مُظلمٌ نوعًا ما"; +"Scene.Settings.Section.LookAndFeel.Title" = "المَظهَرُ وَالشُّعُور"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "استخدم النِظام"; +"Scene.Settings.Section.Notifications.Boosts" = "بِإعادَةِ تدوينِ مَنشوري"; +"Scene.Settings.Section.Notifications.Favorites" = "بِالإعْجاب بِمَنشوري"; +"Scene.Settings.Section.Notifications.Follows" = "بِمُتابَعَتي"; +"Scene.Settings.Section.Notifications.Mentions" = "بِالإشارَةِ إليّ"; "Scene.Settings.Section.Notifications.Title" = "الإشعارات"; -"Scene.Settings.Section.Notifications.Trigger.Anyone" = "أي شخص"; +"Scene.Settings.Section.Notifications.Trigger.Anyone" = "أيُّ شخصٍ"; "Scene.Settings.Section.Notifications.Trigger.Follow" = "أي شخص أُتابِعُه"; -"Scene.Settings.Section.Notifications.Trigger.Follower" = "مشترِك"; -"Scene.Settings.Section.Notifications.Trigger.Noone" = "لا أحد"; -"Scene.Settings.Section.Notifications.Trigger.Title" = "إشعاري عِندَ"; -"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "تعطيل الصور الرمزية المتحرِّكة"; -"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "تعطيل الرموز التعبيرية المتحرِّكَة"; -"Scene.Settings.Section.Preference.Title" = "التفضيلات"; -"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "النمط الأسود الداكِن الحقيقي"; -"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "اِستخدام المتصفح الافتراضي لفتح الروابط"; -"Scene.Settings.Section.SpicyZone.Clear" = "مسح ذاكرة التخزين المؤقت للوسائط"; -"Scene.Settings.Section.SpicyZone.Signout" = "تسجيل الخروج"; -"Scene.Settings.Section.SpicyZone.Title" = "المنطقة الحارة"; +"Scene.Settings.Section.Notifications.Trigger.Follower" = "مُتابِعٌ"; +"Scene.Settings.Section.Notifications.Trigger.Noone" = "لَا أحد"; +"Scene.Settings.Section.Notifications.Trigger.Title" = "أشعِرني عِندما يَقومُ"; +"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "تَعطيلُ الصوَرِ الرمزيَّةِ المُتحرِّكَة"; +"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "تَعطيلُ الرُموزِ التَّعبيريَّةِ المُتحرِّكَة"; +"Scene.Settings.Section.Preference.Title" = "التَّفضيلات"; +"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "النَّمَطُ الأسوَدُ الداكِنُ الحَقيقي"; +"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "اِستِخدامُ المُتصفِّحِ الاِفتراضي لِفتحِ الرَّوابِط"; +"Scene.Settings.Section.SpicyZone.Clear" = "مَحوُ ذاكِرَةُ التَّخزينِ المُؤقت لِلوسائِط"; +"Scene.Settings.Section.SpicyZone.Signout" = "تَسجيلُ الخُروج"; +"Scene.Settings.Section.SpicyZone.Title" = "المنطِقَةُ اللَّاذِعَة"; "Scene.Settings.Title" = "الإعدادات"; "Scene.SuggestionAccount.FollowExplain" = "عِندَ مُتابَعَتِكَ لأحدِهِم، سَوف تَرى مَنشوراته في تغذيَتِكَ الرئيسة."; "Scene.SuggestionAccount.Title" = "ابحث عن أشخاص لمتابعتهم"; "Scene.Thread.BackTitle" = "منشور"; "Scene.Thread.Title" = "مَنشور مِن %@"; +"Scene.Welcome.GetStarted" = "ابدأ الآن"; +"Scene.Welcome.LogIn" = "تسجيلُ الدخول"; "Scene.Welcome.Slogan" = "شبكات التواصل الاجتماعي مرة أُخرى بين يديك."; -"Scene.Wizard.AccessibilityHint" = "انقر نقرًا مزدوجًا لتجاهل النافذة المنبثقة"; +"Scene.Wizard.AccessibilityHint" = "انقر نقرًا مزدوجًا لتجاهُل النافذة المنبثقة"; "Scene.Wizard.MultipleAccountSwitchIntroDescription" = "بدِّل بين حسابات متعددة عبر الاستمرار بالضغط على زر الملف الشخصي."; "Scene.Wizard.NewInMastodon" = "جديد في ماستودون"; \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings index 1642fc8a5..8213aa3d7 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ca.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Neteja la memòria cau"; "Common.Alerts.Common.PleaseTryAgain" = "Si us plau intenta-ho de nou."; "Common.Alerts.Common.PleaseTryAgainLater" = "Si us plau, prova-ho més tard."; -"Common.Alerts.DeletePost.Delete" = "Esborra"; +"Common.Alerts.DeletePost.Message" = "Estàs segur que vols suprimir aquesta publicació?"; "Common.Alerts.DeletePost.Title" = "Estàs segur que vols suprimir aquesta publicació?"; "Common.Alerts.DiscardPostContent.Message" = "Confirma per a descartar el contingut de la publicació composta."; "Common.Alerts.DiscardPostContent.Title" = "Descarta l'esborrany"; @@ -41,6 +41,7 @@ Comprova la teva connexió a Internet."; "Common.Controls.Actions.Next" = "Següent"; "Common.Controls.Actions.Ok" = "D'acord"; "Common.Controls.Actions.Open" = "Obre"; +"Common.Controls.Actions.OpenInBrowser" = "Obre al navegador"; "Common.Controls.Actions.OpenInSafari" = "Obrir a Safari"; "Common.Controls.Actions.Preview" = "Vista prèvia"; "Common.Controls.Actions.Previous" = "Anterior"; @@ -93,6 +94,7 @@ Comprova la teva connexió a Internet."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Commuta el Favorit de la publicació"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Commuta l'impuls de la publicació"; "Common.Controls.Status.Actions.Favorite" = "Favorit"; +"Common.Controls.Status.Actions.Hide" = "Amaga"; "Common.Controls.Status.Actions.Menu" = "Menú"; "Common.Controls.Status.Actions.Reblog" = "Impuls"; "Common.Controls.Status.Actions.Reply" = "Respon"; @@ -112,6 +114,10 @@ Comprova la teva connexió a Internet."; "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ ha impulsat"; "Common.Controls.Status.UserRepliedTo" = "Ha respòs a %@"; +"Common.Controls.Status.Visibility.Direct" = "Només l'usuari mencionat pot veure aquesta publicació."; +"Common.Controls.Status.Visibility.Private" = "Només els seus seguidors poden veure aquesta publicació."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Només els meus seguidors poden veure aquesta publicació."; +"Common.Controls.Status.Visibility.Unlisted" = "Tothom pot veure aquesta publicació però no es mostra en la línia de temps pública."; "Common.Controls.Tabs.Home" = "Inici"; "Common.Controls.Tabs.Notification" = "Notificació"; "Common.Controls.Tabs.Profile" = "Perfil"; @@ -178,8 +184,8 @@ carregat a Mastodon."; "Scene.Compose.Visibility.Private" = "Només seguidors"; "Scene.Compose.Visibility.Public" = "Públic"; "Scene.Compose.Visibility.Unlisted" = "No llistat"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "No he rebut cap correu electrònic"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Obre l'aplicació de correu"; +"Scene.ConfirmEmail.Button.Resend" = "Reenvia"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Comprova que la teva adreça de correu electrònic és correcte i revisa la carpeta de correu brossa si encara no ho has fet."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Torna a enviar el correu"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Comprova el teu correu"; @@ -200,14 +206,14 @@ toca l'enllaç per a confirmar el teu compte."; "Scene.HomeTimeline.Title" = "Inici"; "Scene.Notification.Keyobard.ShowEverything" = "Mostrar-ho tot"; "Scene.Notification.Keyobard.ShowMentions" = "Mostrar Mencions"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "ha afavorit la teva publicació"; +"Scene.Notification.NotificationDescription.FollowedYou" = "et segueix"; +"Scene.Notification.NotificationDescription.MentionedYou" = "t'ha mencionat"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "la enquesta ha finalitzat"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "ha impulsat la teva publicació"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "ha sol·licitat seguir-te"; "Scene.Notification.Title.Everything" = "Tot"; "Scene.Notification.Title.Mentions" = "Mencions"; -"Scene.Notification.UserFavorited Your Post" = "%@ ha afavorit el teu estat"; -"Scene.Notification.UserFollowedYou" = "%@ et segueix"; -"Scene.Notification.UserMentionedYou" = "%@ t'ha esmentat"; -"Scene.Notification.UserRebloggedYourPost" = "%@ ha impulsat el teu estat"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ ha sol·licitat seguir-te"; -"Scene.Notification.UserYourPollHasEnded" = "%@ L'enquesta ha finalitzat"; "Scene.Preview.Keyboard.ClosePreview" = "Tanca la Vista Prèvia"; "Scene.Preview.Keyboard.ShowNext" = "Mostrar Següent"; "Scene.Preview.Keyboard.ShowPrevious" = "Mostrar Anterior"; @@ -217,12 +223,18 @@ toca l'enllaç per a confirmar el teu compte."; "Scene.Profile.Fields.AddRow" = "Afegeix fila"; "Scene.Profile.Fields.Placeholder.Content" = "Contingut"; "Scene.Profile.Fields.Placeholder.Label" = "Etiqueta"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Confirma desbloquejar a %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Desbloquejar Compte"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirma per a bloquejar %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Bloqueja el Compte"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirma per a silenciar %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Silencia el Compte"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirma per a desbloquejar %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Desbloqueja el Compte"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirma deixar de silenciar a %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Desfer silenciar compte"; +"Scene.Profile.SegmentedControl.About" = "Quant a"; "Scene.Profile.SegmentedControl.Media" = "Mèdia"; "Scene.Profile.SegmentedControl.Posts" = "Publicacions"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Publicacions i Respostes"; "Scene.Profile.SegmentedControl.Replies" = "Respostes"; "Scene.Register.Error.Item.Agreement" = "Acord"; "Scene.Register.Error.Item.Email" = "Correu electrònic"; @@ -248,19 +260,26 @@ toca l'enllaç per a confirmar el teu compte."; "Scene.Register.Input.DisplayName.Placeholder" = "nom visible"; "Scene.Register.Input.Email.Placeholder" = "correu electrònic"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Perquè vols unir-te?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "verificat"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "no verificat"; +"Scene.Register.Input.Password.CharacterLimit" = "8 caràcters"; "Scene.Register.Input.Password.Hint" = "La teva contrasenya ha de tenir com a mínim buit caràcters"; "Scene.Register.Input.Password.Placeholder" = "contrasenya"; +"Scene.Register.Input.Password.Require" = "La teva contrasenya com a mínim necessita:"; "Scene.Register.Input.Username.DuplicatePrompt" = "Aquest nom d'usuari ja està en ús."; "Scene.Register.Input.Username.Placeholder" = "nom d'usuari"; "Scene.Register.Title" = "Parla'ns de tu."; "Scene.Report.Content1" = "Hi ha alguna altre publicació que vulguis afegir a l'informe?"; "Scene.Report.Content2" = "Hi ha alguna cosa que els moderadors hagin de saber sobre aquest informe?"; +"Scene.Report.ReportSentTitle" = "Gràcies per informar, ho investigarem."; +"Scene.Report.Reported" = "REPORTAT"; "Scene.Report.Send" = "Envia Informe"; "Scene.Report.SkipToSend" = "Envia sense comentaris"; "Scene.Report.Step1" = "Pas 1 de 2"; "Scene.Report.Step2" = "Pas 2 de 2"; "Scene.Report.TextPlaceholder" = "Escriu o enganxa comentaris addicionals"; "Scene.Report.Title" = "Informa sobre %@"; +"Scene.Report.TitleReport" = "Informe"; "Scene.Search.Recommend.Accounts.Description" = "Potser t'agradaria seguir aquests comptes"; "Scene.Search.Recommend.Accounts.Follow" = "Segueix"; "Scene.Search.Recommend.Accounts.Title" = "Comptes que et podrien agradar"; @@ -301,6 +320,8 @@ toca l'enllaç per a confirmar el teu compte."; "Scene.ServerPicker.Label.Category" = "CATEGORIA"; "Scene.ServerPicker.Label.Language" = "LLENGUATGE"; "Scene.ServerPicker.Label.Users" = "USUARIS"; +"Scene.ServerPicker.Subtitle" = "Tria una comunitat segons els teus interessos, regió o una de propòsit general."; +"Scene.ServerPicker.SubtitleExtend" = "Tria una comunitat segons els teus interessos, regió o una de propòsit general. Cada comunitat és operada per una organització totalment independent o individualment."; "Scene.ServerPicker.Title" = "Tria un servidor, qualsevol servidor."; "Scene.ServerRules.Button.Confirm" = "Hi estic d'acord"; @@ -319,6 +340,11 @@ qualsevol servidor."; "Scene.Settings.Section.BoringZone.Privacy" = "Política de Privacitat"; "Scene.Settings.Section.BoringZone.Terms" = "Termes de Servei"; "Scene.Settings.Section.BoringZone.Title" = "La Zona Avorrida"; +"Scene.Settings.Section.LookAndFeel.Light" = "Clar"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Realment Negre"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Una Mena de Fosc"; +"Scene.Settings.Section.LookAndFeel.Title" = "Aspecte i Comportament"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Usa el del Sistema"; "Scene.Settings.Section.Notifications.Boosts" = "Ha impulsat el meu estat"; "Scene.Settings.Section.Notifications.Favorites" = "Ha afavorit el meu estat"; "Scene.Settings.Section.Notifications.Follows" = "Em segueix"; @@ -342,6 +368,8 @@ qualsevol servidor."; "Scene.SuggestionAccount.Title" = "Cerca Persones per Seguir"; "Scene.Thread.BackTitle" = "Publicació"; "Scene.Thread.Title" = "Publicació de %@"; +"Scene.Welcome.GetStarted" = "Comença"; +"Scene.Welcome.LogIn" = "Inicia sessió"; "Scene.Welcome.Slogan" = "Xarxa social de nou a les teves mans."; "Scene.Wizard.AccessibilityHint" = "Toca dues vegades per descartar l'assistent"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings index 12fba5387..ea39f8650 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/de.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Zwischenspeicher leeren"; "Common.Alerts.Common.PleaseTryAgain" = "Bitte versuche es erneut."; "Common.Alerts.Common.PleaseTryAgainLater" = "Bitte versuche es später nochmal."; -"Common.Alerts.DeletePost.Delete" = "Löschen"; +"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; "Common.Alerts.DeletePost.Title" = "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?"; "Common.Alerts.DiscardPostContent.Message" = "Bestätige, um den Beitrag zu verwerfen."; "Common.Alerts.DiscardPostContent.Title" = "Entwurf verwerfen"; @@ -28,7 +28,7 @@ Bitte überprüfe deine Internetverbindung."; "Common.Controls.Actions.Back" = "Zurück"; "Common.Controls.Actions.BlockDomain" = "%@ blockieren"; "Common.Controls.Actions.Cancel" = "Abbrechen"; -"Common.Controls.Actions.Compose" = "Compose"; +"Common.Controls.Actions.Compose" = "Neue Nachricht"; "Common.Controls.Actions.Confirm" = "Bestätigen"; "Common.Controls.Actions.Continue" = "Fortfahren"; "Common.Controls.Actions.CopyPhoto" = "Foto kopieren"; @@ -41,6 +41,7 @@ Bitte überprüfe deine Internetverbindung."; "Common.Controls.Actions.Next" = "Weiter"; "Common.Controls.Actions.Ok" = "OK"; "Common.Controls.Actions.Open" = "Öffnen"; +"Common.Controls.Actions.OpenInBrowser" = "Im Browser anzeigen"; "Common.Controls.Actions.OpenInSafari" = "In Safari öffnen"; "Common.Controls.Actions.Preview" = "Vorschau"; "Common.Controls.Actions.Previous" = "Vorheriges"; @@ -93,6 +94,7 @@ Bitte überprüfe deine Internetverbindung."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Favorit vom Beitrag umschalten"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Teilen vom Beitrag umschalten"; "Common.Controls.Status.Actions.Favorite" = "Favorit"; +"Common.Controls.Status.Actions.Hide" = "Hide"; "Common.Controls.Status.Actions.Menu" = "Menü"; "Common.Controls.Status.Actions.Reblog" = "Teilen"; "Common.Controls.Status.Actions.Reply" = "Antworten"; @@ -112,6 +114,10 @@ Bitte überprüfe deine Internetverbindung."; "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ teilte"; "Common.Controls.Status.UserRepliedTo" = "Antwortet auf %@"; +"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; +"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; +"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; "Common.Controls.Tabs.Home" = "Startseite"; "Common.Controls.Tabs.Notification" = "Benachrichtigungen"; "Common.Controls.Tabs.Profile" = "Profil"; @@ -135,7 +141,7 @@ Dein Profil sieht für diesen Benutzer auch so aus."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Weitere Antworten anzeigen"; "Common.Controls.Timeline.Timestamp.Now" = "Gerade"; "Scene.AccountList.AddAccount" = "Konto hinzufügen"; -"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher"; +"Scene.AccountList.DismissAccountSwitcher" = "Dialog zum Wechseln des Kontos schließen"; "Scene.AccountList.TabBarHint" = "Aktuell ausgewähltes Profil: %@. Doppeltippen dann gedrückt halten, um den Kontoschalter anzuzeigen"; "Scene.Compose.Accessibility.AppendAttachment" = "Anhang hinzufügen"; "Scene.Compose.Accessibility.AppendPoll" = "Umfrage hinzufügen"; @@ -178,8 +184,8 @@ kann nicht auf Mastodon hochgeladen werden."; "Scene.Compose.Visibility.Private" = "Nur für Folgende"; "Scene.Compose.Visibility.Public" = "Öffentlich"; "Scene.Compose.Visibility.Unlisted" = "Nicht gelistet"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "Ich habe keine E-Mail erhalten."; "Scene.ConfirmEmail.Button.OpenEmailApp" = "E-Mail-App öffnen"; +"Scene.ConfirmEmail.Button.Resend" = "Erneut senden"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Überprüfe, ob deine E-Mail-Adresse korrekt ist und sieh im Spam-Ordner nach, falls du es noch nicht getan hast."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "E-Mail erneut versenden"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Bitte überprüfe deine E-Mails"; @@ -191,8 +197,8 @@ kann nicht auf Mastodon hochgeladen werden."; tippe darin auf den Link, um Dein Konto zu bestätigen."; "Scene.ConfirmEmail.Title" = "Noch eine letzte Sache."; "Scene.Favorite.Title" = "Deine Favoriten"; -"Scene.Follower.Footer" = "Followers from other servers are not displayed."; -"Scene.Following.Footer" = "Follows from other servers are not displayed."; +"Scene.Follower.Footer" = "Follower von anderen Servern werden nicht angezeigt."; +"Scene.Following.Footer" = "Wem das Konto folgt wird von anderen Servern werden nicht angezeigt."; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "Neue Beiträge anzeigen"; "Scene.HomeTimeline.NavigationBarState.Offline" = "Offline"; "Scene.HomeTimeline.NavigationBarState.Published" = "Veröffentlicht!"; @@ -200,14 +206,14 @@ tippe darin auf den Link, um Dein Konto zu bestätigen."; "Scene.HomeTimeline.Title" = "Startseite"; "Scene.Notification.Keyobard.ShowEverything" = "Alles anzeigen"; "Scene.Notification.Keyobard.ShowMentions" = "Erwähnungen anzeigen"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; +"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; +"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; "Scene.Notification.Title.Everything" = "Alles"; "Scene.Notification.Title.Mentions" = "Erwähnungen"; -"Scene.Notification.UserFavorited Your Post" = "%@ favorisierte deinen Beitrag"; -"Scene.Notification.UserFollowedYou" = "%@ folgte dir"; -"Scene.Notification.UserMentionedYou" = "%@ erwähnte dich"; -"Scene.Notification.UserRebloggedYourPost" = "%@ teilte deinen Beitrag"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ beantragte dir zu folgen"; -"Scene.Notification.UserYourPollHasEnded" = "%@ deine Umfrage ist beendet"; "Scene.Preview.Keyboard.ClosePreview" = "Vorschau schließen"; "Scene.Preview.Keyboard.ShowNext" = "Nächstes anzeigen"; "Scene.Preview.Keyboard.ShowPrevious" = "Vorheriges anzeigen"; @@ -217,12 +223,18 @@ tippe darin auf den Link, um Dein Konto zu bestätigen."; "Scene.Profile.Fields.AddRow" = "Zeile hinzufügen"; "Scene.Profile.Fields.Placeholder.Content" = "Inhalt"; "Scene.Profile.Fields.Placeholder.Label" = "Bezeichnung"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Bestätigen zum Entsperren von %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Konto entsperren"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Bestätige um %@ nicht mehr stummzuschalten"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Ton einschalten"; +"Scene.Profile.SegmentedControl.About" = "About"; "Scene.Profile.SegmentedControl.Media" = "Medien"; "Scene.Profile.SegmentedControl.Posts" = "Beiträge"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; "Scene.Profile.SegmentedControl.Replies" = "Antworten"; "Scene.Register.Error.Item.Agreement" = "Vereinbarung"; "Scene.Register.Error.Item.Email" = "E-Mail"; @@ -248,19 +260,26 @@ tippe darin auf den Link, um Dein Konto zu bestätigen."; "Scene.Register.Input.DisplayName.Placeholder" = "Anzeigename"; "Scene.Register.Input.Email.Placeholder" = "E-Mail"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Warum möchtest du beitreten?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "Häkchen gesetzt"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "Häkchen entfernt"; +"Scene.Register.Input.Password.CharacterLimit" = "8 Zeichen"; "Scene.Register.Input.Password.Hint" = "Ihr Passwort muss mindestens 8 Zeichen lang sein"; "Scene.Register.Input.Password.Placeholder" = "Passwort"; +"Scene.Register.Input.Password.Require" = "Anforderungen an dein Passwort:"; "Scene.Register.Input.Username.DuplicatePrompt" = "Dieser Benutzername ist vergeben."; "Scene.Register.Input.Username.Placeholder" = "Benutzername"; "Scene.Register.Title" = "Erzähle uns von dir."; "Scene.Report.Content1" = "Gibt es noch weitere Beiträge, die du der Meldung hinzufügen möchtest?"; "Scene.Report.Content2" = "Gibt es etwas, was die Moderatoren über diese Meldung wissen sollten?"; +"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; +"Scene.Report.Reported" = "REPORTED"; "Scene.Report.Send" = "Meldung abschicken"; "Scene.Report.SkipToSend" = "Ohne Kommentar abschicken"; "Scene.Report.Step1" = "Schritt 1 von 2"; "Scene.Report.Step2" = "Schritt 2 von 2"; "Scene.Report.TextPlaceholder" = "Zusätzliche Kommentare eingeben oder einfügen"; "Scene.Report.Title" = "%@ melden"; +"Scene.Report.TitleReport" = "Report"; "Scene.Search.Recommend.Accounts.Description" = "Vielleicht gefallen dir diese Benutzer"; "Scene.Search.Recommend.Accounts.Follow" = "Folgen"; "Scene.Search.Recommend.Accounts.Title" = "Konten, die dir gefallen könnten"; @@ -301,6 +320,8 @@ tippe darin auf den Link, um Dein Konto zu bestätigen."; "Scene.ServerPicker.Label.Category" = "KATEGORIE"; "Scene.ServerPicker.Label.Language" = "SPRACHE"; "Scene.ServerPicker.Label.Users" = "BENUTZER"; +"Scene.ServerPicker.Subtitle" = "Wähle eine Gemeinschaft, die auf deinen Interessen, Region oder einem allgemeinen Zweck basiert."; +"Scene.ServerPicker.SubtitleExtend" = "Wähle eine Gemeinschaft basierend auf deinen Interessen, deiner Region oder einem allgemeinen Zweck. Jede Gemeinschaft wird von einer völlig unabhängigen Organisation oder Einzelperson betrieben."; "Scene.ServerPicker.Title" = "Wähle einen Server, beliebigen Server."; "Scene.ServerRules.Button.Confirm" = "Ich stimme zu"; @@ -319,6 +340,11 @@ beliebigen Server."; "Scene.Settings.Section.BoringZone.Privacy" = "Datenschutzerklärung"; "Scene.Settings.Section.BoringZone.Terms" = "Allgemeine Geschäftsbedingungen"; "Scene.Settings.Section.BoringZone.Title" = "Der Langweiliger Bereich"; +"Scene.Settings.Section.LookAndFeel.Light" = "Light"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; +"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; "Scene.Settings.Section.Notifications.Boosts" = "Meinen Beitrag teilt"; "Scene.Settings.Section.Notifications.Favorites" = "Meinen Beitrag favorisiert"; "Scene.Settings.Section.Notifications.Follows" = "Mir folgt"; @@ -342,6 +368,8 @@ beliebigen Server."; "Scene.SuggestionAccount.Title" = "Finde Personen zum Folgen"; "Scene.Thread.BackTitle" = "Beitrag"; "Scene.Thread.Title" = "Beitrag von %@"; +"Scene.Welcome.GetStarted" = "Erste Schritte"; +"Scene.Welcome.LogIn" = "Anmelden"; "Scene.Welcome.Slogan" = "Soziale Netzwerke wieder in deinen Händen."; "Scene.Wizard.AccessibilityHint" = "Doppeltippen, um diesen Assistenten zu schließen"; "Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Wechsel zwischen mehreren Konten durch drücken der Profil-Schaltfläche."; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings index 0f3ed66ae..1a03cd56a 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/en.lproj/Localizable.strings @@ -4,8 +4,8 @@ "Common.Alerts.CleanCache.Title" = "Clean Cache"; "Common.Alerts.Common.PleaseTryAgain" = "Please try again."; "Common.Alerts.Common.PleaseTryAgainLater" = "Please try again later."; -"Common.Alerts.DeletePost.Delete" = "Delete"; -"Common.Alerts.DeletePost.Title" = "Are you sure you want to delete this post?"; +"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; +"Common.Alerts.DeletePost.Title" = "Delete Post"; "Common.Alerts.DiscardPostContent.Message" = "Confirm to discard composed post content."; "Common.Alerts.DiscardPostContent.Title" = "Discard Draft"; "Common.Alerts.EditProfileFailure.Message" = "Cannot edit profile. Please try again."; @@ -41,6 +41,7 @@ Please check your internet connection."; "Common.Controls.Actions.Next" = "Next"; "Common.Controls.Actions.Ok" = "OK"; "Common.Controls.Actions.Open" = "Open"; +"Common.Controls.Actions.OpenInBrowser" = "Open in Browser"; "Common.Controls.Actions.OpenInSafari" = "Open in Safari"; "Common.Controls.Actions.Preview" = "Preview"; "Common.Controls.Actions.Previous" = "Previous"; @@ -93,6 +94,7 @@ Please check your internet connection."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Toggle Favorite on Post"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Toggle Reblog on Post"; "Common.Controls.Status.Actions.Favorite" = "Favorite"; +"Common.Controls.Status.Actions.Hide" = "Hide"; "Common.Controls.Status.Actions.Menu" = "Menu"; "Common.Controls.Status.Actions.Reblog" = "Reblog"; "Common.Controls.Status.Actions.Reply" = "Reply"; @@ -112,6 +114,10 @@ Please check your internet connection."; "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ reblogged"; "Common.Controls.Status.UserRepliedTo" = "Replied to %@"; +"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; +"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; +"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; "Common.Controls.Tabs.Home" = "Home"; "Common.Controls.Tabs.Notification" = "Notification"; "Common.Controls.Tabs.Profile" = "Profile"; @@ -178,8 +184,8 @@ uploaded to Mastodon."; "Scene.Compose.Visibility.Private" = "Followers only"; "Scene.Compose.Visibility.Public" = "Public"; "Scene.Compose.Visibility.Unlisted" = "Unlisted"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "I never got an email"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Open Email App"; +"Scene.ConfirmEmail.Button.Resend" = "Resend"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Check if your email address is correct as well as your junk folder if you haven’t."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Resend Email"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Check your email"; @@ -187,8 +193,7 @@ uploaded to Mastodon."; "Scene.ConfirmEmail.OpenEmailApp.Mail" = "Mail"; "Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Open Email Client"; "Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox."; -"Scene.ConfirmEmail.Subtitle" = "We just sent an email to %@, -tap the link to confirm your account."; +"Scene.ConfirmEmail.Subtitle" = "Tap the link we emailed to you to verify your account."; "Scene.ConfirmEmail.Title" = "One last thing."; "Scene.Favorite.Title" = "Your Favorites"; "Scene.Follower.Footer" = "Followers from other servers are not displayed."; @@ -200,14 +205,14 @@ tap the link to confirm your account."; "Scene.HomeTimeline.Title" = "Home"; "Scene.Notification.Keyobard.ShowEverything" = "Show Everything"; "Scene.Notification.Keyobard.ShowMentions" = "Show Mentions"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; +"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; +"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; "Scene.Notification.Title.Everything" = "Everything"; "Scene.Notification.Title.Mentions" = "Mentions"; -"Scene.Notification.UserFavorited Your Post" = "%@ favorited your post"; -"Scene.Notification.UserFollowedYou" = "%@ followed you"; -"Scene.Notification.UserMentionedYou" = "%@ mentioned you"; -"Scene.Notification.UserRebloggedYourPost" = "%@ reblogged your post"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ requested to follow you"; -"Scene.Notification.UserYourPollHasEnded" = "%@ Your poll has ended"; "Scene.Preview.Keyboard.ClosePreview" = "Close Preview"; "Scene.Preview.Keyboard.ShowNext" = "Show Next"; "Scene.Preview.Keyboard.ShowPrevious" = "Show Previous"; @@ -217,12 +222,18 @@ tap the link to confirm your account."; "Scene.Profile.Fields.AddRow" = "Add Row"; "Scene.Profile.Fields.Placeholder.Content" = "Content"; "Scene.Profile.Fields.Placeholder.Label" = "Label"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Confirm to unblock %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Unblock Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirm to unmute %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Unmute Account"; +"Scene.Profile.SegmentedControl.About" = "About"; "Scene.Profile.SegmentedControl.Media" = "Media"; "Scene.Profile.SegmentedControl.Posts" = "Posts"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; "Scene.Profile.SegmentedControl.Replies" = "Replies"; "Scene.Register.Error.Item.Agreement" = "Agreement"; "Scene.Register.Error.Item.Email" = "Email"; @@ -248,19 +259,26 @@ tap the link to confirm your account."; "Scene.Register.Input.DisplayName.Placeholder" = "display name"; "Scene.Register.Input.Email.Placeholder" = "email"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Why do you want to join?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "checked"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "unchecked"; +"Scene.Register.Input.Password.CharacterLimit" = "8 characters"; "Scene.Register.Input.Password.Hint" = "Your password needs at least eight characters"; "Scene.Register.Input.Password.Placeholder" = "password"; +"Scene.Register.Input.Password.Require" = "Your password needs at least:"; "Scene.Register.Input.Username.DuplicatePrompt" = "This username is taken."; "Scene.Register.Input.Username.Placeholder" = "username"; -"Scene.Register.Title" = "Tell us about you."; +"Scene.Register.Title" = "Let’s get you set up on %@"; "Scene.Report.Content1" = "Are there any other posts you’d like to add to the report?"; "Scene.Report.Content2" = "Is there anything the moderators should know about this report?"; +"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; +"Scene.Report.Reported" = "REPORTED"; "Scene.Report.Send" = "Send Report"; "Scene.Report.SkipToSend" = "Send without comment"; "Scene.Report.Step1" = "Step 1 of 2"; "Scene.Report.Step2" = "Step 2 of 2"; "Scene.Report.TextPlaceholder" = "Type or paste additional comments"; "Scene.Report.Title" = "Report %@"; +"Scene.Report.TitleReport" = "Report"; "Scene.Search.Recommend.Accounts.Description" = "You may like to follow these accounts"; "Scene.Search.Recommend.Accounts.Follow" = "Follow"; "Scene.Search.Recommend.Accounts.Title" = "Accounts you might like"; @@ -297,16 +315,17 @@ tap the link to confirm your account."; "Scene.ServerPicker.EmptyState.BadNetwork" = "Something went wrong while loading the data. Check your internet connection."; "Scene.ServerPicker.EmptyState.FindingServers" = "Finding available servers..."; "Scene.ServerPicker.EmptyState.NoResults" = "No results"; -"Scene.ServerPicker.Input.Placeholder" = "Find a server or join your own..."; +"Scene.ServerPicker.Input.Placeholder" = "Search communities"; "Scene.ServerPicker.Label.Category" = "CATEGORY"; "Scene.ServerPicker.Label.Language" = "LANGUAGE"; "Scene.ServerPicker.Label.Users" = "USERS"; -"Scene.ServerPicker.Title" = "Pick a server, -any server."; +"Scene.ServerPicker.Subtitle" = "Pick a community based on your interests, region, or a general purpose one."; +"Scene.ServerPicker.SubtitleExtend" = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual."; +"Scene.ServerPicker.Title" = "Mastodon is made of users in different communities."; "Scene.ServerRules.Button.Confirm" = "I Agree"; "Scene.ServerRules.PrivacyPolicy" = "privacy policy"; "Scene.ServerRules.Prompt" = "By continuing, you’re subject to the terms of service and privacy policy for %@."; -"Scene.ServerRules.Subtitle" = "These rules are set by the admins of %@."; +"Scene.ServerRules.Subtitle" = "These are set and enforced by the %@ moderators."; "Scene.ServerRules.TermsOfService" = "terms of service"; "Scene.ServerRules.Title" = "Some ground rules."; "Scene.Settings.Footer.MastodonDescription" = "Mastodon is open source software. You can report issues on GitHub at %@ (%@)"; @@ -319,6 +338,11 @@ any server."; "Scene.Settings.Section.BoringZone.Privacy" = "Privacy Policy"; "Scene.Settings.Section.BoringZone.Terms" = "Terms of Service"; "Scene.Settings.Section.BoringZone.Title" = "The Boring Zone"; +"Scene.Settings.Section.LookAndFeel.Light" = "Light"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; +"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; "Scene.Settings.Section.Notifications.Boosts" = "Reblogs my post"; "Scene.Settings.Section.Notifications.Favorites" = "Favorites my post"; "Scene.Settings.Section.Notifications.Follows" = "Follows me"; @@ -342,6 +366,8 @@ any server."; "Scene.SuggestionAccount.Title" = "Find People to Follow"; "Scene.Thread.BackTitle" = "Post"; "Scene.Thread.Title" = "Post from %@"; +"Scene.Welcome.GetStarted" = "Get Started"; +"Scene.Welcome.LogIn" = "Log In"; "Scene.Welcome.Slogan" = "Social networking back in your hands."; "Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings index cf97fe803..d149865a6 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/es-419.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Limpiar caché"; "Common.Alerts.Common.PleaseTryAgain" = "Por favor, intentá de nuevo."; "Common.Alerts.Common.PleaseTryAgainLater" = "Por favor, intentá de nuevo más tarde."; -"Common.Alerts.DeletePost.Delete" = "Eliminar"; +"Common.Alerts.DeletePost.Message" = "¿Estás seguro que querés eliminar este mensaje?"; "Common.Alerts.DeletePost.Title" = "¿Estás seguro que querés eliminar este mensaje?"; "Common.Alerts.DiscardPostContent.Message" = "Confirmá para descartar el contenido del mensaje redactado."; "Common.Alerts.DiscardPostContent.Title" = "Descartar borrador"; @@ -41,6 +41,7 @@ Por favor, revisá tu conexión a Internet."; "Common.Controls.Actions.Next" = "Siguiente"; "Common.Controls.Actions.Ok" = "Aceptar"; "Common.Controls.Actions.Open" = "Abrir"; +"Common.Controls.Actions.OpenInBrowser" = "Abrir en el navegador"; "Common.Controls.Actions.OpenInSafari" = "Abrir en Safari"; "Common.Controls.Actions.Preview" = "Previsualización"; "Common.Controls.Actions.Previous" = "Anterior"; @@ -93,6 +94,7 @@ Por favor, revisá tu conexión a Internet."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Cambiar la marca de favorito en el mensaje"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Cambiar la adhesión en el mensaje"; "Common.Controls.Status.Actions.Favorite" = "Marcar como favorito"; +"Common.Controls.Status.Actions.Hide" = "Ocultar"; "Common.Controls.Status.Actions.Menu" = "Menú"; "Common.Controls.Status.Actions.Reblog" = "Adherir"; "Common.Controls.Status.Actions.Reply" = "Responder"; @@ -112,6 +114,10 @@ Por favor, revisá tu conexión a Internet."; "Common.Controls.Status.Tag.Url" = "Dirección web"; "Common.Controls.Status.UserReblogged" = "%@ adhirió"; "Common.Controls.Status.UserRepliedTo" = "Respondió a %@"; +"Common.Controls.Status.Visibility.Direct" = "Sólo el usuario mencionado puede ver este mensaje."; +"Common.Controls.Status.Visibility.Private" = "Sólo sus seguidores pueden ver este mensaje."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Sólo mis seguidores pueden ver este mensaje."; +"Common.Controls.Status.Visibility.Unlisted" = "Todo el mundo puede ver este mensaje pero no mostrarse en la línea temporal pública."; "Common.Controls.Tabs.Home" = "Principal"; "Common.Controls.Tabs.Notification" = "Notificación"; "Common.Controls.Tabs.Profile" = "Perfil"; @@ -178,8 +184,8 @@ y no se puede subir a Mastodon."; "Scene.Compose.Visibility.Private" = "Sólo para seguidores"; "Scene.Compose.Visibility.Public" = "Público"; "Scene.Compose.Visibility.Unlisted" = "No listado"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "Nunca recibí un correo electrónico"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Abrir aplicación de correo electrónico"; +"Scene.ConfirmEmail.Button.Resend" = "Reenviar"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Revisá si tu dirección de correo electrónico es correcta así como tu carpeta de correo basura / correo no deseado / spam, si todavía no lo hiciste."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Reenviar correo electrónico"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Revisá tu correo electrónico"; @@ -200,14 +206,14 @@ pulsá en el enlace para confirmar tu cuenta."; "Scene.HomeTimeline.Title" = "Principal"; "Scene.Notification.Keyobard.ShowEverything" = "Mostrar todo"; "Scene.Notification.Keyobard.ShowMentions" = "Mostrar menciones"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "marcó como favorito tu mensaje"; +"Scene.Notification.NotificationDescription.FollowedYou" = "te sigue"; +"Scene.Notification.NotificationDescription.MentionedYou" = "te mencionó"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "la encuesta terminó"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "adhirió a tu mensaje"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "solicitó seguirte"; "Scene.Notification.Title.Everything" = "Todo"; "Scene.Notification.Title.Mentions" = "Menciones"; -"Scene.Notification.UserFavorited Your Post" = "%@ marcó tu msj. como favorito"; -"Scene.Notification.UserFollowedYou" = "%@ te sigue"; -"Scene.Notification.UserMentionedYou" = "%@ te mencionó"; -"Scene.Notification.UserRebloggedYourPost" = "%@ adhirió a tu mensaje"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ solicitó seguirte"; -"Scene.Notification.UserYourPollHasEnded" = "%@, tu encuesta finalizó"; "Scene.Preview.Keyboard.ClosePreview" = "Cerrar previsualización"; "Scene.Preview.Keyboard.ShowNext" = "Mostrar siguiente"; "Scene.Preview.Keyboard.ShowPrevious" = "Mostrar anterior"; @@ -217,12 +223,18 @@ pulsá en el enlace para confirmar tu cuenta."; "Scene.Profile.Fields.AddRow" = "Agregar fila"; "Scene.Profile.Fields.Placeholder.Content" = "Valor de campo"; "Scene.Profile.Fields.Placeholder.Label" = "Nombre de campo"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Confirmá para desbloquear a %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Desbloquear cuenta"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirmá para desbloquear a %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Bloquear cuenta"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirmá para silenciar a %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Silenciar cuenta"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirmá para desbloquear a %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Desbloquear cuenta"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirmá para dejar de silenciar a %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Dejar de silenciar cuenta"; +"Scene.Profile.SegmentedControl.About" = "Información"; "Scene.Profile.SegmentedControl.Media" = "Medios"; "Scene.Profile.SegmentedControl.Posts" = "Mensajes"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Mensajes y respuestas"; "Scene.Profile.SegmentedControl.Replies" = "Respuestas"; "Scene.Register.Error.Item.Agreement" = "Acuerdo"; "Scene.Register.Error.Item.Email" = "Correo electrónico"; @@ -248,19 +260,26 @@ pulsá en el enlace para confirmar tu cuenta."; "Scene.Register.Input.DisplayName.Placeholder" = "nombre para mostrar"; "Scene.Register.Input.Email.Placeholder" = "correo electrónico"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "¿Por qué querés unirte?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "marcado"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "sin marcar"; +"Scene.Register.Input.Password.CharacterLimit" = "8 caracteres"; "Scene.Register.Input.Password.Hint" = "Tu contraseña necesita al menos ocho caracteres"; "Scene.Register.Input.Password.Placeholder" = "contraseña"; +"Scene.Register.Input.Password.Require" = "Tu contraseña necesita al menos:"; "Scene.Register.Input.Username.DuplicatePrompt" = "Este nombre de usuario ya está en uso."; "Scene.Register.Input.Username.Placeholder" = "nombre de usuario"; "Scene.Register.Title" = "Contanos sobre vos."; "Scene.Report.Content1" = "¿Hay otros mensajes que te gustaría agregar a la denuncia?"; "Scene.Report.Content2" = "¿Hay algo que los moderadores deban saber sobre esta denuncia?"; +"Scene.Report.ReportSentTitle" = "Gracias por tu denuncia, vamos a revisarla."; +"Scene.Report.Reported" = "DENUNCIADA"; "Scene.Report.Send" = "Enviar denuncia"; "Scene.Report.SkipToSend" = "Enviar sin comentarios"; "Scene.Report.Step1" = "Paso 1 de 2"; "Scene.Report.Step2" = "Paso 2 de 2"; "Scene.Report.TextPlaceholder" = "Escribí o pegá comentarios adicionales"; "Scene.Report.Title" = "Denunciar a %@"; +"Scene.Report.TitleReport" = "Denunciar"; "Scene.Search.Recommend.Accounts.Description" = "Puede que te guste seguir estas cuentas"; "Scene.Search.Recommend.Accounts.Follow" = "Seguir"; "Scene.Search.Recommend.Accounts.Title" = "Cuentas que te pueden gustar"; @@ -301,6 +320,8 @@ pulsá en el enlace para confirmar tu cuenta."; "Scene.ServerPicker.Label.Category" = "CATEGORÍA"; "Scene.ServerPicker.Label.Language" = "IDIOMA"; "Scene.ServerPicker.Label.Users" = "CUENTAS"; +"Scene.ServerPicker.Subtitle" = "Elegí una comunidad basada en tus intereses, región o una de propósitos generales."; +"Scene.ServerPicker.SubtitleExtend" = "Elegí una comunidad basada en tus intereses, región o una de propósitos generales. Cada comunidad es operada por una organización o individuo totalmente independiente."; "Scene.ServerPicker.Title" = "Elegí un servidor, el que quieras."; "Scene.ServerRules.Button.Confirm" = "Estoy de acuerdo"; @@ -319,6 +340,11 @@ el que quieras."; "Scene.Settings.Section.BoringZone.Privacy" = "Política de privacidad"; "Scene.Settings.Section.BoringZone.Terms" = "Términos del servicio"; "Scene.Settings.Section.BoringZone.Title" = "La zona aburrida"; +"Scene.Settings.Section.LookAndFeel.Light" = "Claro"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Oscuro de verdad"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Algo oscuro"; +"Scene.Settings.Section.LookAndFeel.Title" = "Apariencia"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Usar sistema"; "Scene.Settings.Section.Notifications.Boosts" = "Adhirió a mi mensaje"; "Scene.Settings.Section.Notifications.Favorites" = "Marcó como favorito mi mensaje"; "Scene.Settings.Section.Notifications.Follows" = "Me sigue"; @@ -342,6 +368,8 @@ el que quieras."; "Scene.SuggestionAccount.Title" = "Encontrá cuentas para seguir"; "Scene.Thread.BackTitle" = "Mensaje"; "Scene.Thread.Title" = "Mensaje de %@"; +"Scene.Welcome.GetStarted" = "Comenzá"; +"Scene.Welcome.LogIn" = "Iniciar sesión"; "Scene.Welcome.Slogan" = "La red social, nuevamente en tu poder."; "Scene.Wizard.AccessibilityHint" = "Tocá dos veces para descartar este asistente"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings index dcf12dfe2..3c405b666 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Limpiar Caché"; "Common.Alerts.Common.PleaseTryAgain" = "Por favor, vuelve a intentarlo."; "Common.Alerts.Common.PleaseTryAgainLater" = "Por favor, vuelve a intentarlo más tarde."; -"Common.Alerts.DeletePost.Delete" = "Eliminar"; +"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; "Common.Alerts.DeletePost.Title" = "¿Estás seguro de que deseas eliminar esta publicación?"; "Common.Alerts.DiscardPostContent.Message" = "Confirma para descartar el contenido de la publicación."; "Common.Alerts.DiscardPostContent.Title" = "Descartar borrador"; @@ -41,6 +41,7 @@ Por favor, revise su conexión a internet."; "Common.Controls.Actions.Next" = "Siguiente"; "Common.Controls.Actions.Ok" = "Aceptar"; "Common.Controls.Actions.Open" = "Abrir"; +"Common.Controls.Actions.OpenInBrowser" = "Abrir en el navegador"; "Common.Controls.Actions.OpenInSafari" = "Abrir en Safari"; "Common.Controls.Actions.Preview" = "Vista previa"; "Common.Controls.Actions.Previous" = "Anterior"; @@ -93,6 +94,7 @@ Por favor, revise su conexión a internet."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Conmutar la Marca de Favorito en la Publicación"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Conmutar el Reblogueo en la Publicación"; "Common.Controls.Status.Actions.Favorite" = "Favorito"; +"Common.Controls.Status.Actions.Hide" = "Hide"; "Common.Controls.Status.Actions.Menu" = "Menú"; "Common.Controls.Status.Actions.Reblog" = "Rebloguear"; "Common.Controls.Status.Actions.Reply" = "Responder"; @@ -112,6 +114,10 @@ Por favor, revise su conexión a internet."; "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ lo reblogueó"; "Common.Controls.Status.UserRepliedTo" = "En respuesta a %@"; +"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; +"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; +"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; "Common.Controls.Tabs.Home" = "Inicio"; "Common.Controls.Tabs.Notification" = "Notificación"; "Common.Controls.Tabs.Profile" = "Perfil"; @@ -134,9 +140,9 @@ Tu perfil se ve así para él."; "Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Cargando publicaciones faltantes..."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Mostrar más respuestas"; "Common.Controls.Timeline.Timestamp.Now" = "Ahora"; -"Scene.AccountList.AddAccount" = "Add Account"; -"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher"; -"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher"; +"Scene.AccountList.AddAccount" = "Añadir cuenta"; +"Scene.AccountList.DismissAccountSwitcher" = "Descartar el selector de cuentas"; +"Scene.AccountList.TabBarHint" = "Perfil seleccionado actualmente: %@. Haz un doble toque y mantén pulsado para mostrar el selector de cuentas"; "Scene.Compose.Accessibility.AppendAttachment" = "Añadir Adjunto"; "Scene.Compose.Accessibility.AppendPoll" = "Añadir Encuesta"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "Selector de Emojis Personalizados"; @@ -178,8 +184,8 @@ subirse a Mastodon."; "Scene.Compose.Visibility.Private" = "Solo seguidores"; "Scene.Compose.Visibility.Public" = "Pública"; "Scene.Compose.Visibility.Unlisted" = "Sin listar"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "No he recibido el correo electrónico"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Abrir Aplicación de Correo Electrónico"; +"Scene.ConfirmEmail.Button.Resend" = "Reenviar"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Comprueba que tu dirección de correo electrónico sea correcta y revisa la carpeta de correo no deseado si no lo has hecho ya."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Volver a Enviar Correo Electrónico"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Revisa tu correo electrónico"; @@ -200,14 +206,14 @@ pulsa en el enlace para confirmar tu cuenta."; "Scene.HomeTimeline.Title" = "Inicio"; "Scene.Notification.Keyobard.ShowEverything" = "Mostrar Todo"; "Scene.Notification.Keyobard.ShowMentions" = "Mostrar Menciones"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; +"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; +"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; "Scene.Notification.Title.Everything" = "Todo"; "Scene.Notification.Title.Mentions" = "Menciones"; -"Scene.Notification.UserFavorited Your Post" = "%@ marcó tu post como favorito"; -"Scene.Notification.UserFollowedYou" = "%@ te ha empezado a seguir"; -"Scene.Notification.UserMentionedYou" = "%@ te ha mencionado"; -"Scene.Notification.UserRebloggedYourPost" = "%@ reblogueó tu publicación"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ ha solicitado seguirte"; -"Scene.Notification.UserYourPollHasEnded" = "%@ Tu encuesta ha terminado"; "Scene.Preview.Keyboard.ClosePreview" = "Cerrar Previsualización"; "Scene.Preview.Keyboard.ShowNext" = "Mostrar Siguiente"; "Scene.Preview.Keyboard.ShowPrevious" = "Mostrar Anterior"; @@ -217,12 +223,18 @@ pulsa en el enlace para confirmar tu cuenta."; "Scene.Profile.Fields.AddRow" = "Añadir Fila"; "Scene.Profile.Fields.Placeholder.Content" = "Contenido"; "Scene.Profile.Fields.Placeholder.Label" = "Nombre para el campo"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Confirmar para desbloquear a %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Desbloquear Cuenta"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirmar para dejar de silenciar a %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Dejar de Silenciar Cuenta"; +"Scene.Profile.SegmentedControl.About" = "About"; "Scene.Profile.SegmentedControl.Media" = "Multimedia"; "Scene.Profile.SegmentedControl.Posts" = "Publicaciones"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; "Scene.Profile.SegmentedControl.Replies" = "Respuestas"; "Scene.Register.Error.Item.Agreement" = "Aceptación"; "Scene.Register.Error.Item.Email" = "Correo electrónico"; @@ -248,19 +260,26 @@ pulsa en el enlace para confirmar tu cuenta."; "Scene.Register.Input.DisplayName.Placeholder" = "nombre a mostrar"; "Scene.Register.Input.Email.Placeholder" = "correo electrónico"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "¿Por qué quieres unirte?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "marcado"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "sin marcar"; +"Scene.Register.Input.Password.CharacterLimit" = "8 caracteres"; "Scene.Register.Input.Password.Hint" = "Tu contraseña necesita tener al menos ocho caracteres"; "Scene.Register.Input.Password.Placeholder" = "contraseña"; +"Scene.Register.Input.Password.Require" = "Tu contraseña debe contener como mínimo:"; "Scene.Register.Input.Username.DuplicatePrompt" = "Este nombre de usuario ya está en uso."; "Scene.Register.Input.Username.Placeholder" = "nombre de usuario"; "Scene.Register.Title" = "Háblanos de ti."; "Scene.Report.Content1" = "¿Hay alguna otra publicación que te gustaría añadir al reporte?"; "Scene.Report.Content2" = "¿Hay algo que los moderadores deberían saber acerca de este reporte?"; +"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; +"Scene.Report.Reported" = "REPORTED"; "Scene.Report.Send" = "Enviar Reporte"; "Scene.Report.SkipToSend" = "Enviar sin comentarios"; "Scene.Report.Step1" = "Paso 1 de 2"; "Scene.Report.Step2" = "Paso 2 de 2"; "Scene.Report.TextPlaceholder" = "Escribe o pega comentarios adicionales"; "Scene.Report.Title" = "Reportar %@"; +"Scene.Report.TitleReport" = "Report"; "Scene.Search.Recommend.Accounts.Description" = "Puede que guste seguir estas cuentas"; "Scene.Search.Recommend.Accounts.Follow" = "Seguir"; "Scene.Search.Recommend.Accounts.Title" = "Cuentas que quizá quieras seguir"; @@ -301,6 +320,8 @@ pulsa en el enlace para confirmar tu cuenta."; "Scene.ServerPicker.Label.Category" = "CATEGORÍA"; "Scene.ServerPicker.Label.Language" = "IDIOMA"; "Scene.ServerPicker.Label.Users" = "USUARIOS"; +"Scene.ServerPicker.Subtitle" = "Elige una comunidad relacionada con tus intereses, con tu región o una más genérica."; +"Scene.ServerPicker.SubtitleExtend" = "Elige una comunidad relacionada con tus intereses, con tu región o una más genérica. Cada comunidad está operada por una organización o individuo completamente independiente."; "Scene.ServerPicker.Title" = "Elige un servidor, cualquier servidor."; "Scene.ServerRules.Button.Confirm" = "Acepto"; @@ -319,6 +340,11 @@ cualquier servidor."; "Scene.Settings.Section.BoringZone.Privacy" = "Política de Privacidad"; "Scene.Settings.Section.BoringZone.Terms" = "Términos de Servicio"; "Scene.Settings.Section.BoringZone.Title" = "La Zona Aburrida"; +"Scene.Settings.Section.LookAndFeel.Light" = "Light"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; +"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; "Scene.Settings.Section.Notifications.Boosts" = "Rebloguee mi publicación"; "Scene.Settings.Section.Notifications.Favorites" = "Marque como favorita mi publicación"; "Scene.Settings.Section.Notifications.Follows" = "Me siga"; @@ -342,8 +368,10 @@ cualquier servidor."; "Scene.SuggestionAccount.Title" = "Encuentra Gente a la que Seguir"; "Scene.Thread.BackTitle" = "Publicación"; "Scene.Thread.Title" = "Publicación de %@"; +"Scene.Welcome.GetStarted" = "Empezar"; +"Scene.Welcome.LogIn" = "Iniciar sesión"; "Scene.Welcome.Slogan" = "Las redes sociales de nuevo en tus manos."; -"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard"; -"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button."; -"Scene.Wizard.NewInMastodon" = "New in Mastodon"; \ No newline at end of file +"Scene.Wizard.AccessibilityHint" = "Haz doble toque para descartar este asistente"; +"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Cambie entre varias cuentas manteniendo presionado el botón de perfil."; +"Scene.Wizard.NewInMastodon" = "Nuevo en Mastodon"; \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict index d31d8825b..186218af6 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/es.lproj/Localizable.stringsdict @@ -13,9 +13,9 @@ NSStringFormatValueTypeKey ld one - 1 unread notification + 1 notificación no leída other - %ld unread notification + %ld notificaciones no leídas a11y.plural.count.input_limit_exceeds diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings new file mode 100644 index 000000000..7feec0a73 --- /dev/null +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.strings @@ -0,0 +1,377 @@ +"Common.Alerts.BlockDomain.BlockEntireDomain" = "Blokeatu domeinua"; +"Common.Alerts.BlockDomain.Title" = "Ziur, erabat ziur, %@ domeinu osoa blokeatu nahi duzula? Gehienetan erabiltzaile gutxi batzuk blokeatu edo mututzearekin nahikoa da. Ez duzu domeinu horretako edukirik ikusiko eta domeinu horretako zure jarraitzaileak kenduko dira."; +"Common.Alerts.CleanCache.Message" = "Behar bezala garbitu da %@ cache-a."; +"Common.Alerts.CleanCache.Title" = "Garbitu cache-a"; +"Common.Alerts.Common.PleaseTryAgain" = "Mesedez, saiatu berriro."; +"Common.Alerts.Common.PleaseTryAgainLater" = "Mesedez beranduago saiatu."; +"Common.Alerts.DeletePost.Message" = "Ziur bidalketa hau ezabatu nahi duzula?"; +"Common.Alerts.DeletePost.Title" = "Ziur zaude bidalketa hau ezabatu nahi duzula?"; +"Common.Alerts.DiscardPostContent.Message" = "Berretsi idatzitako bidalketaren edukia baztertzea."; +"Common.Alerts.DiscardPostContent.Title" = "Baztertu zirriborroa"; +"Common.Alerts.EditProfileFailure.Message" = "Ezin da profila editatu. Mesedez saiatu berriro."; +"Common.Alerts.EditProfileFailure.Title" = "Errorea profila editatzean"; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Ezin da bideo bat baino gehiago erantsi."; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Ezin da irudiak dituen bidalketa batean bideo bat erantsi."; +"Common.Alerts.PublishPostFailure.Message" = "Huts egin du bidalketa argitaratzean. +Egiaztatu Interneteko konexioa."; +"Common.Alerts.PublishPostFailure.Title" = "Hutsegitea argitaratzean"; +"Common.Alerts.SavePhotoFailure.Message" = "Gaitu argazki galeriarako sarbidearen baimena argazkia gordetzeko."; +"Common.Alerts.SavePhotoFailure.Title" = "Hutsegitea argazkia gordetzean"; +"Common.Alerts.ServerError.Title" = "Zerbitzari-errorea"; +"Common.Alerts.SignOut.Confirm" = "Amaitu saioa"; +"Common.Alerts.SignOut.Message" = "Ziur saioa amaitu nahi duzula?"; +"Common.Alerts.SignOut.Title" = "Amaitu saioa"; +"Common.Alerts.SignUpFailure.Title" = "Hutsegitea izen-ematean"; +"Common.Alerts.VoteFailure.PollEnded" = "Inkesta amaitu da"; +"Common.Alerts.VoteFailure.Title" = "Hutsegitea botoa ematean"; +"Common.Controls.Actions.Add" = "Gehitu"; +"Common.Controls.Actions.Back" = "Atzera"; +"Common.Controls.Actions.BlockDomain" = "Blokeatu %@"; +"Common.Controls.Actions.Cancel" = "Utzi"; +"Common.Controls.Actions.Compose" = "Idatzi"; +"Common.Controls.Actions.Confirm" = "Berretsi"; +"Common.Controls.Actions.Continue" = "Jarraitu"; +"Common.Controls.Actions.CopyPhoto" = "Kopiatu argazkia"; +"Common.Controls.Actions.Delete" = "Ezabatu"; +"Common.Controls.Actions.Discard" = "Baztertu"; +"Common.Controls.Actions.Done" = "Egina"; +"Common.Controls.Actions.Edit" = "Editatu"; +"Common.Controls.Actions.FindPeople" = "Bilatu jarraitzeko jendea"; +"Common.Controls.Actions.ManuallySearch" = "Eskuz bilatu"; +"Common.Controls.Actions.Next" = "Hurrengoa"; +"Common.Controls.Actions.Ok" = "Ados"; +"Common.Controls.Actions.Open" = "Ireki"; +"Common.Controls.Actions.OpenInBrowser" = "Ireki nabigatzailean"; +"Common.Controls.Actions.OpenInSafari" = "Ireki Safarin"; +"Common.Controls.Actions.Preview" = "Aurrebista"; +"Common.Controls.Actions.Previous" = "Aurrekoa"; +"Common.Controls.Actions.Remove" = "Kendu"; +"Common.Controls.Actions.Reply" = "Erantzun"; +"Common.Controls.Actions.ReportUser" = "Salatu %@"; +"Common.Controls.Actions.Save" = "Gorde"; +"Common.Controls.Actions.SavePhoto" = "Gorde argazkia"; +"Common.Controls.Actions.SeeMore" = "Ikusi gehiago"; +"Common.Controls.Actions.Settings" = "Ezarpenak"; +"Common.Controls.Actions.Share" = "Partekatu"; +"Common.Controls.Actions.SharePost" = "Partekatu bidalketa"; +"Common.Controls.Actions.ShareUser" = "Partekatu %@"; +"Common.Controls.Actions.SignIn" = "Hasi saioa"; +"Common.Controls.Actions.SignUp" = "Eman Izena"; +"Common.Controls.Actions.Skip" = "Saltatu"; +"Common.Controls.Actions.TakePhoto" = "Atera argazkia"; +"Common.Controls.Actions.TryAgain" = "Saiatu berriro"; +"Common.Controls.Actions.UnblockDomain" = "Desblokeatu %@"; +"Common.Controls.Friendship.Block" = "Blokeatu"; +"Common.Controls.Friendship.BlockDomain" = "Blokeatu %@"; +"Common.Controls.Friendship.BlockUser" = "Blokeatu %@"; +"Common.Controls.Friendship.Blocked" = "Blokeatuta"; +"Common.Controls.Friendship.EditInfo" = "Editatu informazioa"; +"Common.Controls.Friendship.Follow" = "Jarraitu"; +"Common.Controls.Friendship.Following" = "Jarraitzen"; +"Common.Controls.Friendship.Mute" = "Mututu"; +"Common.Controls.Friendship.MuteUser" = "Mututu %@"; +"Common.Controls.Friendship.Muted" = "Mutututa"; +"Common.Controls.Friendship.Pending" = "Zain"; +"Common.Controls.Friendship.Request" = "Eskaera"; +"Common.Controls.Friendship.Unblock" = "Desblokeatu"; +"Common.Controls.Friendship.UnblockUser" = "Desblokeatu %@"; +"Common.Controls.Friendship.Unmute" = "Desmututu"; +"Common.Controls.Friendship.UnmuteUser" = "Desmututu %@"; +"Common.Controls.Keyboard.Common.ComposeNewPost" = "Idatzi bidalketa berria"; +"Common.Controls.Keyboard.Common.OpenSettings" = "Ireki ezarpenak"; +"Common.Controls.Keyboard.Common.ShowFavorites" = "Erakutsi gogokoak"; +"Common.Controls.Keyboard.Common.SwitchToTab" = "Aldatu %@(e)ra"; +"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Hurrengo sekzioa"; +"Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Aurreko sekzioa"; +"Common.Controls.Keyboard.Timeline.NextStatus" = "Hurrengo bidalketa"; +"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Ireki egilearen profila"; +"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Ireki bultzada eman duenaren profila"; +"Common.Controls.Keyboard.Timeline.OpenStatus" = "Ireki bidalketa"; +"Common.Controls.Keyboard.Timeline.PreviewImage" = "Aurreikusi irudia"; +"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Aurreko bidalketa"; +"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Erantzun bidalketari"; +"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Txandakatu edukiaren abisua"; +"Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Txandakatu bidalketa gogoko egitea"; +"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Txandakatu bidalketaren bultzada"; +"Common.Controls.Status.Actions.Favorite" = "Gogokoa"; +"Common.Controls.Status.Actions.Hide" = "Ezkutatu"; +"Common.Controls.Status.Actions.Menu" = "Menua"; +"Common.Controls.Status.Actions.Reblog" = "Bultzada"; +"Common.Controls.Status.Actions.Reply" = "Erantzun"; +"Common.Controls.Status.Actions.Unfavorite" = "Kendu gogokoa"; +"Common.Controls.Status.Actions.Unreblog" = "Desegin bultzada"; +"Common.Controls.Status.ContentWarning" = "Edukiaren abisua"; +"Common.Controls.Status.MediaContentWarning" = "Ukitu edonon bistaratzeko"; +"Common.Controls.Status.Poll.Closed" = "Itxita"; +"Common.Controls.Status.Poll.Vote" = "Bozkatu"; +"Common.Controls.Status.ShowPost" = "Erakutsi bidalketa"; +"Common.Controls.Status.ShowUserProfile" = "Erakutsi erabiltzailearen profila"; +"Common.Controls.Status.Tag.Email" = "Eposta"; +"Common.Controls.Status.Tag.Emoji" = "Emojia"; +"Common.Controls.Status.Tag.Hashtag" = "Traola"; +"Common.Controls.Status.Tag.Link" = "Esteka"; +"Common.Controls.Status.Tag.Mention" = "Aipatu"; +"Common.Controls.Status.Tag.Url" = "URLa"; +"Common.Controls.Status.UserReblogged" = "%@ erabiltzaileak bultzada eman dio"; +"Common.Controls.Status.UserRepliedTo" = "%@(r)i erantzuten"; +"Common.Controls.Status.Visibility.Direct" = "Aipatutako erabiltzaileek soilik ikus dezakete bidalketa hau."; +"Common.Controls.Status.Visibility.Private" = "Beren jarraitzaileek soilik ikus dezakete bidalketa hau."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Nire jarraitzaileek soilik ikus dezakete bidalketa hau."; +"Common.Controls.Status.Visibility.Unlisted" = "Edozeinek ikusi dezake bidalketa hau baina ez da denbora-lerro publikoan bistaratuko."; +"Common.Controls.Tabs.Home" = "Hasiera"; +"Common.Controls.Tabs.Notification" = "Jakinarazpena"; +"Common.Controls.Tabs.Profile" = "Profila"; +"Common.Controls.Tabs.Search" = "Bilatu"; +"Common.Controls.Timeline.Filtered" = "Iragazita"; +"Common.Controls.Timeline.Header.BlockedWarning" = "Ezin duzu erabiltzaile honen profila ikusi +desblokeatzen zaituen arte."; +"Common.Controls.Timeline.Header.BlockingWarning" = "Ezin duzu erabiltzaile honen profila ikusi +desblokeatzen duzun arte. +Zure profilak itxura hau du berarentzat."; +"Common.Controls.Timeline.Header.NoStatusFound" = "Ez da bidalketa aurkitu"; +"Common.Controls.Timeline.Header.SuspendedWarning" = "Erabiltzaile hau kanporatua izan da."; +"Common.Controls.Timeline.Header.UserBlockedWarning" = "Ezin duzu %@ erabiltzailearen +profila ikusi desblokeatzen zaituen arte."; +"Common.Controls.Timeline.Header.UserBlockingWarning" = "Ezin duzu %@ erabiltzailearen +profila ikusi desblokeatzen duzun arte. +Zure profilak itxura hau du berarentzat."; +"Common.Controls.Timeline.Header.UserSuspendedWarning" = "%@ kontua kanporatua izan da."; +"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Kargatu falta diren bidalketak"; +"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Falta diren bidalketak kargatzen..."; +"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Erakutsi erantzun gehiago"; +"Common.Controls.Timeline.Timestamp.Now" = "Orain"; +"Scene.AccountList.AddAccount" = "Gehitu kontua"; +"Scene.AccountList.DismissAccountSwitcher" = "Baztertu kontu-aldatzailea"; +"Scene.AccountList.TabBarHint" = "Unean hautatutako profila: %@. Ukitu birritan, ondoren eduki sakatuta kontu-aldatzailea erakusteko"; +"Scene.Compose.Accessibility.AppendAttachment" = "Gehitu eranskina"; +"Scene.Compose.Accessibility.AppendPoll" = "Gehitu inkesta"; +"Scene.Compose.Accessibility.CustomEmojiPicker" = "Emoji pertsonalizatuen hautatzailea"; +"Scene.Compose.Accessibility.DisableContentWarning" = "Desgaitu edukiaren abisua"; +"Scene.Compose.Accessibility.EnableContentWarning" = "Gaitu edukiaren abisua"; +"Scene.Compose.Accessibility.PostVisibilityMenu" = "Bidalketaren ikusgaitasunaren menua"; +"Scene.Compose.Accessibility.RemovePoll" = "Kendu inkesta"; +"Scene.Compose.Attachment.AttachmentBroken" = "%@ hondatuta dago eta ezin da +Mastodonera igo."; +"Scene.Compose.Attachment.DescriptionPhoto" = "Deskribatu argazkia ikusmen arazoak dituztenentzat..."; +"Scene.Compose.Attachment.DescriptionVideo" = "Deskribatu bideoa ikusmen arazoak dituztenentzat..."; +"Scene.Compose.Attachment.Photo" = "argazkia"; +"Scene.Compose.Attachment.Video" = "bideoa"; +"Scene.Compose.AutoComplete.SpaceToAdd" = "Sakatu zuriunea gehitzeko"; +"Scene.Compose.ComposeAction" = "Argitaratu"; +"Scene.Compose.ContentInputPlaceholder" = "Idatzi edo itsatsi buruan duzuna"; +"Scene.Compose.ContentWarning.Placeholder" = "Idatzi abisu zehatz bat hemen..."; +"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Gehitu eranskina - %@"; +"Scene.Compose.Keyboard.DiscardPost" = "Baztertu bidalketa"; +"Scene.Compose.Keyboard.PublishPost" = "Argitaratu bidalketa"; +"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Hautatu ikusgaitasuna - %@"; +"Scene.Compose.Keyboard.ToggleContentWarning" = "Txandakatu edukiaren abisua"; +"Scene.Compose.Keyboard.TogglePoll" = "Txandakatu inkesta"; +"Scene.Compose.MediaSelection.Browse" = "Arakatu"; +"Scene.Compose.MediaSelection.Camera" = "Atera argazkia"; +"Scene.Compose.MediaSelection.PhotoLibrary" = "Argazki-liburutegia"; +"Scene.Compose.Poll.DurationTime" = "Iraupena: %@"; +"Scene.Compose.Poll.OneDay" = "Egun 1"; +"Scene.Compose.Poll.OneHour" = "Ordu 1"; +"Scene.Compose.Poll.OptionNumber" = "%ld aukera"; +"Scene.Compose.Poll.SevenDays" = "7 egun"; +"Scene.Compose.Poll.SixHours" = "6 ordu"; +"Scene.Compose.Poll.ThirtyMinutes" = "30 minutu"; +"Scene.Compose.Poll.ThreeDays" = "3 egun"; +"Scene.Compose.ReplyingToUser" = "%@(r)i erantzuten"; +"Scene.Compose.Title.NewPost" = "Bidalketa berria"; +"Scene.Compose.Title.NewReply" = "Erantzun berria"; +"Scene.Compose.Visibility.Direct" = "Aipatzen dudan jendea soilik"; +"Scene.Compose.Visibility.Private" = "Jarraitzaileak soilik"; +"Scene.Compose.Visibility.Public" = "Publikoa"; +"Scene.Compose.Visibility.Unlisted" = "Zerrendatu gabea"; +"Scene.ConfirmEmail.Button.OpenEmailApp" = "Ireki eposta aplikazioa"; +"Scene.ConfirmEmail.Button.Resend" = "Berbidali"; +"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Egiaztatu zure eposta helbidea zuzena den eta begiratu zaborraren karpeta."; +"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Birbidali eposta"; +"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Begiratu zure eposta"; +"Scene.ConfirmEmail.OpenEmailApp.Description" = "Eposta bat bidali dizugu. Egiaztatu zure zaborraren karpeta."; +"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Posta"; +"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Ireki eposta bezeroa"; +"Scene.ConfirmEmail.OpenEmailApp.Title" = "Egiaztatu zure sarrerako ontzia."; +"Scene.ConfirmEmail.Subtitle" = "Eposta bat bidali dizugu %@ helbidera, +sakatu kontua berresteko esteka."; +"Scene.ConfirmEmail.Title" = "Eta azkenik..."; +"Scene.Favorite.Title" = "Zure gogokoak"; +"Scene.Follower.Footer" = "Beste zerbitzarietako jarraitzaileak ez dira bistaratzen."; +"Scene.Following.Footer" = "Beste zerbitzarietan jarraitutakoak ez dira bistaratzen."; +"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Ikusi bidal. berriak"; +"Scene.HomeTimeline.NavigationBarState.Offline" = "Konexio gabe"; +"Scene.HomeTimeline.NavigationBarState.Published" = "Argitaratua!"; +"Scene.HomeTimeline.NavigationBarState.Publishing" = "Bidalketa argitaratzen..."; +"Scene.HomeTimeline.Title" = "Hasiera"; +"Scene.Notification.Keyobard.ShowEverything" = "Erakutsi guztia"; +"Scene.Notification.Keyobard.ShowMentions" = "Erakutsi aipamenak"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "erabiltzaileak zure bidalketa gogoko du"; +"Scene.Notification.NotificationDescription.FollowedYou" = "zu jarraitzen hasi da"; +"Scene.Notification.NotificationDescription.MentionedYou" = "erabiltzaileak aipatu zaitu"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "inkesta amaitu da"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "erabiltzaileak bultzada eman dio zure bidalketari"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "erabiltzaileak zu jarraitzea eskatu du"; +"Scene.Notification.Title.Everything" = "Dena"; +"Scene.Notification.Title.Mentions" = "Aipamenak"; +"Scene.Preview.Keyboard.ClosePreview" = "Itxi aurrebista"; +"Scene.Preview.Keyboard.ShowNext" = "Erakutsi hurrengoa"; +"Scene.Preview.Keyboard.ShowPrevious" = "Erakutsi aurrekoa"; +"Scene.Profile.Dashboard.Followers" = "jarraitzaile"; +"Scene.Profile.Dashboard.Following" = "jarraitzen"; +"Scene.Profile.Dashboard.Posts" = "bidalketa"; +"Scene.Profile.Fields.AddRow" = "Gehitu errenkada"; +"Scene.Profile.Fields.Placeholder.Content" = "Edukia"; +"Scene.Profile.Fields.Placeholder.Label" = "Etiketa"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Berretsi %@ blokeatzea"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Blokeatu kontua"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Berretsi %@ mututzea"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mututu kontua"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Berretsi %@ desblokeatzea"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Desblokeatu kontua"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Berretsi %@ desmututzea"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Desmututu kontua"; +"Scene.Profile.SegmentedControl.About" = "Honi buruz"; +"Scene.Profile.SegmentedControl.Media" = "Multimedia"; +"Scene.Profile.SegmentedControl.Posts" = "Bidalketak"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Bidalketak eta erantzunak"; +"Scene.Profile.SegmentedControl.Replies" = "Erantzunak"; +"Scene.Register.Error.Item.Agreement" = "Adostasuna"; +"Scene.Register.Error.Item.Email" = "Eposta"; +"Scene.Register.Error.Item.Locale" = "Eskualdeko ezarpenak"; +"Scene.Register.Error.Item.Password" = "Pasahitza"; +"Scene.Register.Error.Item.Reason" = "Arrazoia"; +"Scene.Register.Error.Item.Username" = "Erabiltzaile-izena"; +"Scene.Register.Error.Reason.Accepted" = "%@ onartu behar da"; +"Scene.Register.Error.Reason.Blank" = "%@ beharrezkoa da"; +"Scene.Register.Error.Reason.Blocked" = "%@(e)k onartu gabeko eposta hornitzaile bat erabiltzen du"; +"Scene.Register.Error.Reason.Inclusion" = "%@ ez da onartutako balio bat"; +"Scene.Register.Error.Reason.Invalid" = "%@ baliogabea da"; +"Scene.Register.Error.Reason.Reserved" = "%@ gako-hitz erreserbatu bat da"; +"Scene.Register.Error.Reason.Taken" = "%@ dagoeneko erabiltzen da"; +"Scene.Register.Error.Reason.TooLong" = "%@ luzeegia da"; +"Scene.Register.Error.Reason.TooShort" = "%@ laburregia da"; +"Scene.Register.Error.Reason.Unreachable" = "dirudienez %@ ez da existitzen"; +"Scene.Register.Error.Special.EmailInvalid" = "Hau ez da baliozko eposta helbidea"; +"Scene.Register.Error.Special.PasswordTooShort" = "Pasahitza laburregia da (gutxienez 8 karaktere izan behar ditu)"; +"Scene.Register.Error.Special.UsernameInvalid" = "Erabiltzaile-izenak karaktere alfanumerikoak eta azpimarrak soilik eduki ditzake"; +"Scene.Register.Error.Special.UsernameTooLong" = "Erabiltzaile-izena luzeegia da (ezin ditu 30 karaktere baino gehiago izan)"; +"Scene.Register.Input.Avatar.Delete" = "Ezabatu"; +"Scene.Register.Input.DisplayName.Placeholder" = "pantaila-izena"; +"Scene.Register.Input.Email.Placeholder" = "eposta"; +"Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Zergatik elkartu nahi duzu?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "hautatuta"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "hautatu gabe"; +"Scene.Register.Input.Password.CharacterLimit" = "8 karaktere"; +"Scene.Register.Input.Password.Hint" = "Pasahitzak zortzi karaktere izan behar ditu gutxienez"; +"Scene.Register.Input.Password.Placeholder" = "pasahitza"; +"Scene.Register.Input.Password.Require" = "Zure pasahitzak izan behar ditu gutxienez:"; +"Scene.Register.Input.Username.DuplicatePrompt" = "Erabiltzaile-izen hau hartuta dago."; +"Scene.Register.Input.Username.Placeholder" = "erabiltzaile-izena"; +"Scene.Register.Title" = "Hitz egin iezaguzu zuri buruz."; +"Scene.Report.Content1" = "Salaketan beste bidalketarik gehitu nahi duzu?"; +"Scene.Report.Content2" = "Moderatzaileek besterik jakin behar dute salaketa honi buruz?"; +"Scene.Report.ReportSentTitle" = "Mila esker salaketagatik, berrikusiko dugu."; +"Scene.Report.Reported" = "SALATUA"; +"Scene.Report.Send" = "Bidali salaketa"; +"Scene.Report.SkipToSend" = "Bidali iruzkinik gabe"; +"Scene.Report.Step1" = "1. urratsa 2tik"; +"Scene.Report.Step2" = "2. urratsa 2tik"; +"Scene.Report.TextPlaceholder" = "Idatzi edo itsatsi iruzkin gehigarriak"; +"Scene.Report.Title" = "Salatu %@"; +"Scene.Report.TitleReport" = "Salatu"; +"Scene.Search.Recommend.Accounts.Description" = "Kontu hauek jarraitu nahiko dituzu behar bada"; +"Scene.Search.Recommend.Accounts.Follow" = "Jarraitu"; +"Scene.Search.Recommend.Accounts.Title" = "Gustuko izan ditzakezun kontuak"; +"Scene.Search.Recommend.ButtonText" = "Ikusi guztiak"; +"Scene.Search.Recommend.HashTag.Description" = "Deigarri gertatzen ari diren traolak"; +"Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ pertsona hizketan"; +"Scene.Search.Recommend.HashTag.Title" = "Mastodoneko joerak"; +"Scene.Search.SearchBar.Cancel" = "Utzi"; +"Scene.Search.SearchBar.Placeholder" = "Bilatu traolak eta erabiltzaileak"; +"Scene.Search.Searching.Clear" = "Garbitu"; +"Scene.Search.Searching.EmptyState.NoResults" = "Emaitzarik ez"; +"Scene.Search.Searching.RecentSearch" = "Azken bilaketak"; +"Scene.Search.Searching.Segment.All" = "Guztiak"; +"Scene.Search.Searching.Segment.Hashtags" = "Traolak"; +"Scene.Search.Searching.Segment.People" = "Jendea"; +"Scene.Search.Searching.Segment.Posts" = "Bidalketak"; +"Scene.Search.Title" = "Bilatu"; +"Scene.ServerPicker.Button.Category.Academia" = "akademia"; +"Scene.ServerPicker.Button.Category.Activism" = "aktibismoa"; +"Scene.ServerPicker.Button.Category.All" = "Guztiak"; +"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "Kategoria: Guztiak"; +"Scene.ServerPicker.Button.Category.Art" = "artea"; +"Scene.ServerPicker.Button.Category.Food" = "janaria"; +"Scene.ServerPicker.Button.Category.Furry" = "furry"; +"Scene.ServerPicker.Button.Category.Games" = "jokoak"; +"Scene.ServerPicker.Button.Category.General" = "orokorra"; +"Scene.ServerPicker.Button.Category.Journalism" = "kazetaritza"; +"Scene.ServerPicker.Button.Category.Lgbt" = "LGBTQ+"; +"Scene.ServerPicker.Button.Category.Music" = "musika"; +"Scene.ServerPicker.Button.Category.Regional" = "herrialdekoa"; +"Scene.ServerPicker.Button.Category.Tech" = "teknologia"; +"Scene.ServerPicker.Button.SeeLess" = "Ikusi gutxiago"; +"Scene.ServerPicker.Button.SeeMore" = "Ikusi gehiago"; +"Scene.ServerPicker.EmptyState.BadNetwork" = "Arazoren bat egon da datuak kargatzean. Egiaztatu zure Interneteko konexioa."; +"Scene.ServerPicker.EmptyState.FindingServers" = "Erabilgarri dauden zerbitzariak bilatzen..."; +"Scene.ServerPicker.EmptyState.NoResults" = "Emaitzarik ez"; +"Scene.ServerPicker.Input.Placeholder" = "Bilatu zerbitzari bat edo sortu zurea..."; +"Scene.ServerPicker.Label.Category" = "KATEGORIA"; +"Scene.ServerPicker.Label.Language" = "HIZKUNTZA"; +"Scene.ServerPicker.Label.Users" = "ERABILTZAILEAK"; +"Scene.ServerPicker.Subtitle" = "Aukeratu komunitate bat zure interes edo lurraldearen arabera, edo erabilera orokorreko bat."; +"Scene.ServerPicker.SubtitleExtend" = "Aukeratu komunitate bat zure interes edo lurraldearen arabera, edo erabilera orokorreko bat. Komunitate bakoitza erakunde edo norbanako independente batek kudeatzen du."; +"Scene.ServerPicker.Title" = "Aukeratu zerbitzari bat, +edozein zerbitzari."; +"Scene.ServerRules.Button.Confirm" = "Ados nago"; +"Scene.ServerRules.PrivacyPolicy" = "pribatutasun-gidalerroak"; +"Scene.ServerRules.Prompt" = "Jarraituz gero, %@ instantziaren zerbitzu-baldintzak eta pribatutasun-gidalerroak onartzen dituzu."; +"Scene.ServerRules.Subtitle" = "Arau hauek %@ instantziako administratzaileek ezarri dituzte."; +"Scene.ServerRules.TermsOfService" = "zerbitzu-baldintzak"; +"Scene.ServerRules.Title" = "Oinarrizko arau batzuk."; +"Scene.Settings.Footer.MastodonDescription" = "Mastodon software librea da. Arazoen berri eman dezakezu GitHub bidez: %@ (%@)"; +"Scene.Settings.Keyboard.CloseSettingsWindow" = "Itxi ezarpenen leihoa"; +"Scene.Settings.Section.Appearance.Automatic" = "Automatikoa"; +"Scene.Settings.Section.Appearance.Dark" = "Beti iluna"; +"Scene.Settings.Section.Appearance.Light" = "Beti argia"; +"Scene.Settings.Section.Appearance.Title" = "Itxura"; +"Scene.Settings.Section.BoringZone.AccountSettings" = "Kontuaren ezarpenak"; +"Scene.Settings.Section.BoringZone.Privacy" = "Pribatutasun-gidalerroak"; +"Scene.Settings.Section.BoringZone.Terms" = "Zerbitzu-baldintzak"; +"Scene.Settings.Section.BoringZone.Title" = "Eremu aspergarria"; +"Scene.Settings.Section.LookAndFeel.Light" = "Argia"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Oso iluna"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Ilun antzekoa"; +"Scene.Settings.Section.LookAndFeel.Title" = "Itxura"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Erabili sistemakoa"; +"Scene.Settings.Section.Notifications.Boosts" = "Nire bidalketa bultzatu du"; +"Scene.Settings.Section.Notifications.Favorites" = "Nire bidalketa gogoko egitean"; +"Scene.Settings.Section.Notifications.Follows" = "Jarraitzen nau"; +"Scene.Settings.Section.Notifications.Mentions" = "Aipatu nau"; +"Scene.Settings.Section.Notifications.Title" = "Jakinarazpenak"; +"Scene.Settings.Section.Notifications.Trigger.Anyone" = "edozein"; +"Scene.Settings.Section.Notifications.Trigger.Follow" = "jarraitzen dudan edonor"; +"Scene.Settings.Section.Notifications.Trigger.Follower" = "jarraitzaile bat"; +"Scene.Settings.Section.Notifications.Trigger.Noone" = "inor ez"; +"Scene.Settings.Section.Notifications.Trigger.Title" = "Noiz jakinarazi:"; +"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Desgaitu abatar animatuak"; +"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Desgaitu emoji animatuak"; +"Scene.Settings.Section.Preference.Title" = "Hobespenak"; +"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Benetako modu beltz iluna"; +"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Erabili nabigatzaile lehenetsia estekak irekitzeko"; +"Scene.Settings.Section.SpicyZone.Clear" = "Garbitu multimediaren cachea"; +"Scene.Settings.Section.SpicyZone.Signout" = "Amaitu saioa"; +"Scene.Settings.Section.SpicyZone.Title" = "Eremu beroa"; +"Scene.Settings.Title" = "Ezarpenak"; +"Scene.SuggestionAccount.FollowExplain" = "Norbait jarraitzen duzunean, bere bidalketak zure hasierako denbora-lerroan agertuko zaizkizu."; +"Scene.SuggestionAccount.Title" = "Bilatu jarraitzeko jendea"; +"Scene.Thread.BackTitle" = "Bidalketa"; +"Scene.Thread.Title" = "%@(e)n bidalketa"; +"Scene.Welcome.GetStarted" = "Nola hasi"; +"Scene.Welcome.LogIn" = "Hasi saioa"; +"Scene.Welcome.Slogan" = "Sare sozialak +berriz zure eskuetan."; +"Scene.Wizard.AccessibilityHint" = "Ukitu birritan morroi hau baztertzeko"; +"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Aldatu hainbat konturen artean profilaren botoia sakatuta edukiz."; +"Scene.Wizard.NewInMastodon" = "Berria Mastodonen"; \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.stringsdict new file mode 100644 index 000000000..817e8372b --- /dev/null +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/eu-ES.lproj/Localizable.stringsdict @@ -0,0 +1,390 @@ + + + + + a11y.plural.count.unread.notification + + NSStringLocalizedFormatKey + %#@notification_count_unread_notification@ + notification_count_unread_notification + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Irakurri gabeko jakinarazpen bat + other + Irakurri gabeko %ld jakinarazpen + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Sarrerak %#@character_count@ karaktereko muga gainditzen du + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + karaktere bat + other + %ld karaktere + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Sarreraren karaktere muga %#@character_count@ da oraindik + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + karaktere bat + other + %ld karaktere + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + bidalketa + other + bidalketa + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Bidalketa bat + other + %ld bidalketa + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Gogoko bat + other + %ld gogoko + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Bultzada bat + other + %ld bultzada + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Boto bat + other + %ld boto + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Boto-emaile bat + other + %ld boto-emaile + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Pertsona bat hizketan + other + %ld pertsona hizketan + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Bat jarraitzen + other + %ld jarraitzen + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Jarraitzaile bat + other + %ld jarraitzaile + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Urte bat geratzen da + other + %ld urte geratzen dira + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Hilabete bat geratzen da + other + %ld hilabete geratzen dira + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Egun bat geratzen da + other + %ld egun geratzen dira + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Ordu 1 geratzen da + other + %ld ordu geratzen dira + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Minutu 1 geratzen da + other + %ld minutu geratzen dira + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Segundo 1 geratzen da + other + %ld segundo geratzen dira + + + date.year.ago.abbr + + NSStringLocalizedFormatKey + %#@count_year_ago_abbr@ + count_year_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Duela urtebete + other + Duela %ld urte + + + date.month.ago.abbr + + NSStringLocalizedFormatKey + %#@count_month_ago_abbr@ + count_month_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Duela hilabete + other + Duela %ld hilabete + + + date.day.ago.abbr + + NSStringLocalizedFormatKey + %#@count_day_ago_abbr@ + count_day_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Duela egun bat + other + Duela %ld egun + + + date.hour.ago.abbr + + NSStringLocalizedFormatKey + %#@count_hour_ago_abbr@ + count_hour_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Duela ordubete + other + Duela %ld ordu + + + date.minute.ago.abbr + + NSStringLocalizedFormatKey + %#@count_minute_ago_abbr@ + count_minute_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Duela minutu bat + other + Duela %ld minutu + + + date.second.ago.abbr + + NSStringLocalizedFormatKey + %#@count_second_ago_abbr@ + count_second_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + Duela segundo bat + other + Duela %ld segundo + + + + diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings index a4dbfdb6f..ffcd28467 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Vider le cache"; "Common.Alerts.Common.PleaseTryAgain" = "Merci de réessayer."; "Common.Alerts.Common.PleaseTryAgainLater" = "Merci de réessayer plus tard."; -"Common.Alerts.DeletePost.Delete" = "Supprimer"; +"Common.Alerts.DeletePost.Message" = "Voulez-vous vraiment supprimer ce message ?"; "Common.Alerts.DeletePost.Title" = "Voulez-vous vraiment supprimer ce message ?"; "Common.Alerts.DiscardPostContent.Message" = "Confirmez pour abandonner le contenu de votre message."; "Common.Alerts.DiscardPostContent.Title" = "Abandonner le brouillon"; @@ -28,7 +28,7 @@ Veuillez vérifier votre accès à Internet."; "Common.Controls.Actions.Back" = "Retour"; "Common.Controls.Actions.BlockDomain" = "Bloquer %@"; "Common.Controls.Actions.Cancel" = "Annuler"; -"Common.Controls.Actions.Compose" = "Compose"; +"Common.Controls.Actions.Compose" = "Rédiger"; "Common.Controls.Actions.Confirm" = "Confirmer"; "Common.Controls.Actions.Continue" = "Continuer"; "Common.Controls.Actions.CopyPhoto" = "Copier la photo"; @@ -41,6 +41,7 @@ Veuillez vérifier votre accès à Internet."; "Common.Controls.Actions.Next" = "Suivant"; "Common.Controls.Actions.Ok" = "OK"; "Common.Controls.Actions.Open" = "Ouvrir"; +"Common.Controls.Actions.OpenInBrowser" = "Ouvrir dans le navigateur"; "Common.Controls.Actions.OpenInSafari" = "Ouvrir dans Safari"; "Common.Controls.Actions.Preview" = "Aperçu"; "Common.Controls.Actions.Previous" = "Précédent"; @@ -93,6 +94,7 @@ Veuillez vérifier votre accès à Internet."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Basculer le favori lors de la publication"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Basculer le reblogue lors de la publication"; "Common.Controls.Status.Actions.Favorite" = "Favori"; +"Common.Controls.Status.Actions.Hide" = "Cacher"; "Common.Controls.Status.Actions.Menu" = "Menu"; "Common.Controls.Status.Actions.Reblog" = "Rebloguer"; "Common.Controls.Status.Actions.Reply" = "Répondre"; @@ -112,6 +114,10 @@ Veuillez vérifier votre accès à Internet."; "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ a reblogué"; "Common.Controls.Status.UserRepliedTo" = "À répondu à %@"; +"Common.Controls.Status.Visibility.Direct" = "Seul·e l’utilisateur·rice mentionnée peut voir ce message."; +"Common.Controls.Status.Visibility.Private" = "Seul·e·s leurs abonné·e·s peuvent voir ce message."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Seul·e·s mes abonné·e·s peuvent voir ce message."; +"Common.Controls.Status.Visibility.Unlisted" = "Tout le monde peut voir ce message mais ne sera pas affiché sur le fil public."; "Common.Controls.Tabs.Home" = "Accueil"; "Common.Controls.Tabs.Notification" = "Notification"; "Common.Controls.Tabs.Profile" = "Profil"; @@ -135,8 +141,8 @@ Votre profil ressemble à ça pour lui."; "Common.Controls.Timeline.Loader.ShowMoreReplies" = "Charger plus de réponses"; "Common.Controls.Timeline.Timestamp.Now" = "À l’instant"; "Scene.AccountList.AddAccount" = "Ajouter un compte"; -"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher"; -"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher"; +"Scene.AccountList.DismissAccountSwitcher" = "Rejeter le commutateur de compte"; +"Scene.AccountList.TabBarHint" = "Profil sélectionné actuel: %@. Double appui puis maintenez enfoncé pour afficher le changement de compte"; "Scene.Compose.Accessibility.AppendAttachment" = "Joindre un document"; "Scene.Compose.Accessibility.AppendPoll" = "Ajouter un Sondage"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "Sélecteur d’émojis personnalisés"; @@ -178,8 +184,8 @@ téléversé sur Mastodon."; "Scene.Compose.Visibility.Private" = "Abonnés seulement"; "Scene.Compose.Visibility.Public" = "Public"; "Scene.Compose.Visibility.Unlisted" = "Non listé"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "Je n’ai jamais reçu de courriel"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Ouvrir l’application de courriel"; +"Scene.ConfirmEmail.Button.Resend" = "Renvoyer"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Vérifiez que votre adresse courriel est valide ainsi que votre fichier spam si ce n’est pas déjà fait."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Renvoyer le courriel"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Vérifier vos courriels"; @@ -192,7 +198,7 @@ tapotez le lien pour confirmer votre compte."; "Scene.ConfirmEmail.Title" = "Une dernière chose."; "Scene.Favorite.Title" = "Vos favoris"; "Scene.Follower.Footer" = "Les abonné·e·s issus des autres serveurs ne sont pas affiché·e·s."; -"Scene.Following.Footer" = "Follows from other servers are not displayed."; +"Scene.Following.Footer" = "Les abonnés issus des autres serveurs ne sont pas affichés."; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "Voir les nouvelles publications"; "Scene.HomeTimeline.NavigationBarState.Offline" = "Hors ligne"; "Scene.HomeTimeline.NavigationBarState.Published" = "Publié!"; @@ -200,14 +206,14 @@ tapotez le lien pour confirmer votre compte."; "Scene.HomeTimeline.Title" = "Accueil"; "Scene.Notification.Keyobard.ShowEverything" = "Tout Afficher"; "Scene.Notification.Keyobard.ShowMentions" = "Afficher les mentions"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "a ajouté votre message à ses favoris"; +"Scene.Notification.NotificationDescription.FollowedYou" = "s’est abonné à vous"; +"Scene.Notification.NotificationDescription.MentionedYou" = "vous a mentionné"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "le sondage est terminé"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "a partagé votre message"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "vous a envoyé une demande d’abonnement"; "Scene.Notification.Title.Everything" = "Tout"; "Scene.Notification.Title.Mentions" = "Mentions"; -"Scene.Notification.UserFavorited Your Post" = "%@ a mis votre pouet en favori"; -"Scene.Notification.UserFollowedYou" = "%@ s’est abonné à vous"; -"Scene.Notification.UserMentionedYou" = "%@ vous a mentionné"; -"Scene.Notification.UserRebloggedYourPost" = "%@ a partagé votre publication"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ a demandé à vous suivre"; -"Scene.Notification.UserYourPollHasEnded" = "%@ votre sondage est terminé"; "Scene.Preview.Keyboard.ClosePreview" = "Fermer l'aperçu"; "Scene.Preview.Keyboard.ShowNext" = "Afficher le suivant"; "Scene.Preview.Keyboard.ShowPrevious" = "Afficher le précédent"; @@ -217,12 +223,18 @@ tapotez le lien pour confirmer votre compte."; "Scene.Profile.Fields.AddRow" = "Ajouter une rangée"; "Scene.Profile.Fields.Placeholder.Content" = "Contenu"; "Scene.Profile.Fields.Placeholder.Label" = "Étiquette"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Confirmer le déblocage de %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Débloquer le compte"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirmer le blocage de %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Bloquer le compte"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Êtes-vous sûr de vouloir mettre en sourdine %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Masquer le compte"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirmer le déblocage de %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Débloquer le compte"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Êtes-vous sûr de vouloir désactiver la sourdine de %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Ne plus mettre en sourdine ce compte"; +"Scene.Profile.SegmentedControl.About" = "À propos"; "Scene.Profile.SegmentedControl.Media" = "Média"; "Scene.Profile.SegmentedControl.Posts" = "Publications"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Messages et réponses"; "Scene.Profile.SegmentedControl.Replies" = "Réponses"; "Scene.Register.Error.Item.Agreement" = "Accord"; "Scene.Register.Error.Item.Email" = "Courriel"; @@ -248,19 +260,26 @@ tapotez le lien pour confirmer votre compte."; "Scene.Register.Input.DisplayName.Placeholder" = "nom affiché"; "Scene.Register.Input.Email.Placeholder" = "courriel"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Pourquoi voulez-vous vous inscrire ?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "vérifié"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "non vérifié"; +"Scene.Register.Input.Password.CharacterLimit" = "8 caractères"; "Scene.Register.Input.Password.Hint" = "Votre mot de passe doit contenir au moins 8 caractères"; "Scene.Register.Input.Password.Placeholder" = "mot de passe"; +"Scene.Register.Input.Password.Require" = "Votre mot de passe doit être composé d’au moins :"; "Scene.Register.Input.Username.DuplicatePrompt" = "Ce nom d'utilisateur est déjà pris."; "Scene.Register.Input.Username.Placeholder" = "nom d'utilisateur"; "Scene.Register.Title" = "Parlez-nous de vous."; "Scene.Report.Content1" = "Y a-t-il d’autres messages que vous aimeriez ajouter au signalement?"; "Scene.Report.Content2" = "Y a-t-il quelque chose que les modérateurs devraient savoir sur ce rapport ?"; +"Scene.Report.ReportSentTitle" = "Merci de nous l’avoir signalé, nous allons examiner cela."; +"Scene.Report.Reported" = "SIGNALÉ"; "Scene.Report.Send" = "Envoyer le rapport"; "Scene.Report.SkipToSend" = "Envoyer sans commentaire"; "Scene.Report.Step1" = "Étape 1 de 2"; "Scene.Report.Step2" = "Étape 2 de 2"; "Scene.Report.TextPlaceholder" = "Tapez ou collez des informations supplémentaires"; "Scene.Report.Title" = "Signaler %@"; +"Scene.Report.TitleReport" = "Signalement"; "Scene.Search.Recommend.Accounts.Description" = "Vous aimeriez peut-être suivre ces comptes"; "Scene.Search.Recommend.Accounts.Follow" = "Suivre"; "Scene.Search.Recommend.Accounts.Title" = "Comptes que vous pourriez aimer"; @@ -301,6 +320,8 @@ tapotez le lien pour confirmer votre compte."; "Scene.ServerPicker.Label.Category" = "CATÉGORIE"; "Scene.ServerPicker.Label.Language" = "LANGUE"; "Scene.ServerPicker.Label.Users" = "UTILISATEUR·RICE·S"; +"Scene.ServerPicker.Subtitle" = "Choisissez une communauté en fonction de vos intérêts, de votre région ou de votre objectif général."; +"Scene.ServerPicker.SubtitleExtend" = "Choisissez une communauté basée sur vos intérêts, votre région ou un but général. Chaque communauté est gérée par une organisation ou un individu entièrement indépendant."; "Scene.ServerPicker.Title" = "Choisissez un serveur, n'importe quel serveur."; "Scene.ServerRules.Button.Confirm" = "J’accepte"; @@ -319,6 +340,11 @@ n'importe quel serveur."; "Scene.Settings.Section.BoringZone.Privacy" = "Politique de confidentialité"; "Scene.Settings.Section.BoringZone.Terms" = "Entente de service"; "Scene.Settings.Section.BoringZone.Title" = "La zone ennuyante"; +"Scene.Settings.Section.LookAndFeel.Light" = "Clair"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Très sombre"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Légèrement sombre"; +"Scene.Settings.Section.LookAndFeel.Title" = "Apparence"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Utiliser le thème du système"; "Scene.Settings.Section.Notifications.Boosts" = "Reblogue mon message"; "Scene.Settings.Section.Notifications.Favorites" = "Ajoute l’une de mes publications à ses favoris"; "Scene.Settings.Section.Notifications.Follows" = "Me suit"; @@ -342,6 +368,8 @@ n'importe quel serveur."; "Scene.SuggestionAccount.Title" = "Trouver des personnes à suivre"; "Scene.Thread.BackTitle" = "Publication"; "Scene.Thread.Title" = "Publication de %@"; +"Scene.Welcome.GetStarted" = "Prise en main"; +"Scene.Welcome.LogIn" = "Se connecter"; "Scene.Welcome.Slogan" = "Le réseau social qui vous rend le contrôle."; "Scene.Wizard.AccessibilityHint" = "Tapotez deux fois pour fermer cet assistant"; "Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Basculez entre plusieurs comptes en appuyant de maniere prolongée sur le bouton profil."; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.stringsdict index 4a912e4b3..37f07e67a 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.stringsdict +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/fr.lproj/Localizable.stringsdict @@ -37,7 +37,7 @@ a11y.plural.count.input_limit_remains NSStringLocalizedFormatKey - Input limit remains %#@character_count@ + La limite d'entrée reste %#@character_count@ character_count NSStringFormatSpecTypeKey diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings index 3f80f6411..97e5d01de 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/gd-GB.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Falamhaich an tasgadan"; "Common.Alerts.Common.PleaseTryAgain" = "Feuch ris a-rithist."; "Common.Alerts.Common.PleaseTryAgainLater" = "Feuch ris a-rithist an ceann greis."; -"Common.Alerts.DeletePost.Delete" = "Sguab às"; +"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; "Common.Alerts.DeletePost.Title" = "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?"; "Common.Alerts.DiscardPostContent.Message" = "Dearbh tilgeil air falbh susbaint a’ phuist a sgrìobh thu."; "Common.Alerts.DiscardPostContent.Title" = "Tilg air falbh an dreachd"; @@ -41,6 +41,7 @@ Thoir sùil air a’ cheangal agad ris an eadar-lìon."; "Common.Controls.Actions.Next" = "Air adhart"; "Common.Controls.Actions.Ok" = "Ceart ma-thà"; "Common.Controls.Actions.Open" = "Fosgail"; +"Common.Controls.Actions.OpenInBrowser" = "Fosgail sa bhrabhsair"; "Common.Controls.Actions.OpenInSafari" = "Fosgail ann an Safari"; "Common.Controls.Actions.Preview" = "Ro-sheall"; "Common.Controls.Actions.Previous" = "Air ais"; @@ -93,6 +94,7 @@ Thoir sùil air a’ cheangal agad ris an eadar-lìon."; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Toglaich annsachd a’ phuist"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Toglaich brosnachadh a’ phuist"; "Common.Controls.Status.Actions.Favorite" = "Cuir ris na h-annsachdan"; +"Common.Controls.Status.Actions.Hide" = "Hide"; "Common.Controls.Status.Actions.Menu" = "Clàr-taice"; "Common.Controls.Status.Actions.Reblog" = "Brosnaich"; "Common.Controls.Status.Actions.Reply" = "Freagair"; @@ -112,6 +114,10 @@ Thoir sùil air a’ cheangal agad ris an eadar-lìon."; "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "Tha %@ ’ga bhrosnachadh"; "Common.Controls.Status.UserRepliedTo" = "Air %@ fhreagairt"; +"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; +"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; +"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; "Common.Controls.Tabs.Home" = "Dachaigh"; "Common.Controls.Tabs.Notification" = "Brath"; "Common.Controls.Tabs.Profile" = "Pròifil"; @@ -178,8 +184,8 @@ a luchdadh suas gu Mastodon."; "Scene.Compose.Visibility.Private" = "Luchd-leantainn a-mhàin"; "Scene.Compose.Visibility.Public" = "Poblach"; "Scene.Compose.Visibility.Unlisted" = "Falaichte o liostaichean"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "Cha d’ fhuair mi post-d a-riamh"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Fosgail aplacaid a’ phuist-d"; +"Scene.ConfirmEmail.Button.Resend" = "Ath-chuir"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Dearbh gu bheil an seòladh puist-d agad mar bu chòir agus nach eil dad ann am pasgan an truilleis."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Cuir am post-d a-rithist"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Thoir sùil air a’ phost-d agad"; @@ -200,14 +206,14 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.HomeTimeline.Title" = "Dachaigh"; "Scene.Notification.Keyobard.ShowEverything" = "Seall a h-uile càil"; "Scene.Notification.Keyobard.ShowMentions" = "Seall na h-iomraidhean"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; +"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; +"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; "Scene.Notification.Title.Everything" = "A h-uile rud"; "Scene.Notification.Title.Mentions" = "Iomraidhean"; -"Scene.Notification.UserFavorited Your Post" = "Is annsa le %@ am post agad"; -"Scene.Notification.UserFollowedYou" = "Tha %@ a’ leantainn ort a-nis"; -"Scene.Notification.UserMentionedYou" = "Thug %@ iomradh ort"; -"Scene.Notification.UserRebloggedYourPost" = "Bhrosnaich %@ am post agad"; -"Scene.Notification.UserRequestedToFollowYou" = "Dh’iarr %@ leantainn ort"; -"Scene.Notification.UserYourPollHasEnded" = "Crìoch cunntais-bheachd aig %@"; "Scene.Preview.Keyboard.ClosePreview" = "Dùin an ro-shealladh"; "Scene.Preview.Keyboard.ShowNext" = "Air adhart"; "Scene.Preview.Keyboard.ShowPrevious" = "Air ais"; @@ -217,12 +223,18 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.Profile.Fields.AddRow" = "Cuir ràgh ris"; "Scene.Profile.Fields.Placeholder.Content" = "Susbaint"; "Scene.Profile.Fields.Placeholder.Label" = "Leubail"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Dearbh dì-bhacadh %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Dì-bhac an cunntas"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Dearbh dì-mhùchadh %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Dì-mhùch an cunntas"; +"Scene.Profile.SegmentedControl.About" = "About"; "Scene.Profile.SegmentedControl.Media" = "Meadhanan"; "Scene.Profile.SegmentedControl.Posts" = "Postaichean"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; "Scene.Profile.SegmentedControl.Replies" = "Freagairtean"; "Scene.Register.Error.Item.Agreement" = "Aonta"; "Scene.Register.Error.Item.Email" = "Post-d"; @@ -248,19 +260,26 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.Register.Input.DisplayName.Placeholder" = "ainm-taisbeanaidh"; "Scene.Register.Input.Email.Placeholder" = "post-d"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Carson a bu mhiann leat ballrachd fhaighinn?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "le cromag"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "gun chromag"; +"Scene.Register.Input.Password.CharacterLimit" = "8 caractaran"; "Scene.Register.Input.Password.Hint" = "Feumaidh ochd caractaran a bhith san fhacal-fhaire agad air a char as giorra"; "Scene.Register.Input.Password.Placeholder" = "facal-faire"; +"Scene.Register.Input.Password.Require" = "Feumaidh am facal-faire agad co-dhiù:"; "Scene.Register.Input.Username.DuplicatePrompt" = "Tha an t-ainm-cleachdaiche seo aig cuideigin eile."; "Scene.Register.Input.Username.Placeholder" = "ainm-cleachdaiche"; "Scene.Register.Title" = "Innis dhuinn mu do dhèidhinn."; "Scene.Report.Content1" = "A bheil post sam bith eile ann a bu mhiann leat cur ris a’ ghearan?"; "Scene.Report.Content2" = "A bheil rud sam bith ann a bu mhiann leat innse dha na maoir mun ghearan seo?"; +"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; +"Scene.Report.Reported" = "REPORTED"; "Scene.Report.Send" = "Cuir an gearan"; "Scene.Report.SkipToSend" = "Cuir gun bheachd ris"; "Scene.Report.Step1" = "Ceum 1 à 2"; "Scene.Report.Step2" = "Ceum 2 à 2"; "Scene.Report.TextPlaceholder" = "Sgrìobh no cuir ann beachdan a bharrachd"; "Scene.Report.Title" = "Dèan gearan mu %@"; +"Scene.Report.TitleReport" = "Report"; "Scene.Search.Recommend.Accounts.Description" = "Saoil am bu toigh leat leantainn air na cunntasan seo?"; "Scene.Search.Recommend.Accounts.Follow" = "Lean air"; "Scene.Search.Recommend.Accounts.Title" = "Cunntasan a chòrdas riut ma dh’fhaoidte"; @@ -301,6 +320,8 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.ServerPicker.Label.Category" = "ROINN-SEÒRSA"; "Scene.ServerPicker.Label.Language" = "CÀNAN"; "Scene.ServerPicker.Label.Users" = "CLEACHDAICHEAN"; +"Scene.ServerPicker.Subtitle" = "Tagh coimhearsnachd stèidhichte air d’ ùidhean no an roinn-dùthcha agad no tè choitcheann."; +"Scene.ServerPicker.SubtitleExtend" = "Tagh coimhearsnachd stèidhichte air d’ ùidhean no an roinn-dùthcha agad no tè choitcheann. Tha gach coimhearsnachd ’ga stiùireadh le buidheann no neach gu neo-eisimeileach."; "Scene.ServerPicker.Title" = "Tagh frithealaiche sam bith."; "Scene.ServerRules.Button.Confirm" = "Gabhaidh mi ris"; "Scene.ServerRules.PrivacyPolicy" = "poileasaidh prìobhaideachd"; @@ -318,6 +339,11 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.Settings.Section.BoringZone.Privacy" = "Am poileasaidh prìobhaideachd"; "Scene.Settings.Section.BoringZone.Terms" = "Teirmichean na seirbheise"; "Scene.Settings.Section.BoringZone.Title" = "An earrann ràsanach"; +"Scene.Settings.Section.LookAndFeel.Light" = "Light"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; +"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; "Scene.Settings.Section.Notifications.Boosts" = "Nuair a bhrosnaicheas iad post uam"; "Scene.Settings.Section.Notifications.Favorites" = "Nuair as annsa leotha am post agam"; "Scene.Settings.Section.Notifications.Follows" = "Nuair a leanas iad orm"; @@ -341,6 +367,8 @@ thoir gnogag air a’ chunntas a dhearbhadh a’ chunntais agad."; "Scene.SuggestionAccount.Title" = "Lorg daoine a leanas tu"; "Scene.Thread.BackTitle" = "Post"; "Scene.Thread.Title" = "Post le %@"; +"Scene.Welcome.GetStarted" = "Dèan toiseach-tòiseachaidh"; +"Scene.Welcome.LogIn" = "Clàraich a-steach"; "Scene.Welcome.Slogan" = "A’ cur nan lìonraidhean sòisealta ’nad làmhan fhèin."; "Scene.Wizard.AccessibilityHint" = "Thoir gnogag dhùbailte a’ leigeil seachad an draoidh seo"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings index 98bf71639..db88120b5 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "キャッシュを消去"; "Common.Alerts.Common.PleaseTryAgain" = "もう一度お試しください。"; "Common.Alerts.Common.PleaseTryAgainLater" = "後でもう一度お試しください。"; -"Common.Alerts.DeletePost.Delete" = "消去"; +"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; "Common.Alerts.DeletePost.Title" = "この投稿を消去しますか?"; "Common.Alerts.DiscardPostContent.Message" = "この操作は取り消しできません。下書きは失われます。"; "Common.Alerts.DiscardPostContent.Title" = "投稿を破棄しますか?"; @@ -28,7 +28,7 @@ "Common.Controls.Actions.Back" = "戻る"; "Common.Controls.Actions.BlockDomain" = "%@をブロック"; "Common.Controls.Actions.Cancel" = "キャンセル"; -"Common.Controls.Actions.Compose" = "Compose"; +"Common.Controls.Actions.Compose" = "新規作成"; "Common.Controls.Actions.Confirm" = "確認"; "Common.Controls.Actions.Continue" = "続ける"; "Common.Controls.Actions.CopyPhoto" = "写真をコピー"; @@ -41,6 +41,7 @@ "Common.Controls.Actions.Next" = "次"; "Common.Controls.Actions.Ok" = "OK"; "Common.Controls.Actions.Open" = "開く"; +"Common.Controls.Actions.OpenInBrowser" = "ブラウザで開く"; "Common.Controls.Actions.OpenInSafari" = "Safariで開く"; "Common.Controls.Actions.Preview" = "プレビュー"; "Common.Controls.Actions.Previous" = "前"; @@ -93,6 +94,7 @@ "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "お気に入り登録を切り替える"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "ブーストを切り替える"; "Common.Controls.Status.Actions.Favorite" = "お気に入り"; +"Common.Controls.Status.Actions.Hide" = "Hide"; "Common.Controls.Status.Actions.Menu" = "メニュー"; "Common.Controls.Status.Actions.Reblog" = "ブースト"; "Common.Controls.Status.Actions.Reply" = "リプライ"; @@ -112,6 +114,10 @@ "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@がブースト"; "Common.Controls.Status.UserRepliedTo" = "%@がリプライ"; +"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; +"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; +"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; "Common.Controls.Tabs.Home" = "ホーム"; "Common.Controls.Tabs.Notification" = "通知"; "Common.Controls.Tabs.Profile" = "プロフィール"; @@ -131,8 +137,8 @@ "Common.Controls.Timeline.Loader.ShowMoreReplies" = "リプライをもっとみる"; "Common.Controls.Timeline.Timestamp.Now" = "今"; "Scene.AccountList.AddAccount" = "アカウントを追加"; -"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher"; -"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher"; +"Scene.AccountList.DismissAccountSwitcher" = "アカウント切替画面を閉じます"; +"Scene.AccountList.TabBarHint" = "現在のアカウント: %@. ダブルタップしてアカウント切替画面を表示します"; "Scene.Compose.Accessibility.AppendAttachment" = "アタッチメントの追加"; "Scene.Compose.Accessibility.AppendPoll" = "投票を追加"; "Scene.Compose.Accessibility.CustomEmojiPicker" = "カスタム絵文字ピッカー"; @@ -173,8 +179,8 @@ "Scene.Compose.Visibility.Private" = "フォロワーのみ"; "Scene.Compose.Visibility.Public" = "パブリック"; "Scene.Compose.Visibility.Unlisted" = "非表示"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "メールがこない"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "メールアプリを開く"; +"Scene.ConfirmEmail.Button.Resend" = "Resend"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "メールアドレスが正しいかどうか、また、迷惑メールフォルダに入っていないかどうかも確認してください。"; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "もう一度メールを送信"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "メールをチェックしてください"; @@ -185,8 +191,8 @@ "Scene.ConfirmEmail.Subtitle" = "先程 %@ にメールを送信しました。リンクをタップしてアカウントを確認してください。"; "Scene.ConfirmEmail.Title" = "さいごにもうひとつ。"; "Scene.Favorite.Title" = "お気に入り"; -"Scene.Follower.Footer" = "Followers from other servers are not displayed."; -"Scene.Following.Footer" = "Follows from other servers are not displayed."; +"Scene.Follower.Footer" = "他のサーバーからのフォロワーは表示されません。"; +"Scene.Following.Footer" = "他のサーバーにいるフォローは表示されません。"; "Scene.HomeTimeline.NavigationBarState.NewPosts" = "新しい投稿を見る"; "Scene.HomeTimeline.NavigationBarState.Offline" = "オフライン"; "Scene.HomeTimeline.NavigationBarState.Published" = "投稿しました!"; @@ -194,14 +200,14 @@ "Scene.HomeTimeline.Title" = "ホーム"; "Scene.Notification.Keyobard.ShowEverything" = "すべて見る"; "Scene.Notification.Keyobard.ShowMentions" = "メンションを見る"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; +"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; +"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; "Scene.Notification.Title.Everything" = "すべて"; "Scene.Notification.Title.Mentions" = "メンション"; -"Scene.Notification.UserFavorited Your Post" = "%@ がお気に入り登録しました"; -"Scene.Notification.UserFollowedYou" = "%@ にフォローされました"; -"Scene.Notification.UserMentionedYou" = "%@ に返信されました"; -"Scene.Notification.UserRebloggedYourPost" = "%@ がブーストしました"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ がフォローリクエストを送信しました"; -"Scene.Notification.UserYourPollHasEnded" = "%@ 投票が終了しました"; "Scene.Preview.Keyboard.ClosePreview" = "プレビューを閉じる"; "Scene.Preview.Keyboard.ShowNext" = "次を見る"; "Scene.Preview.Keyboard.ShowPrevious" = "前を見る"; @@ -211,12 +217,18 @@ "Scene.Profile.Fields.AddRow" = "行追加"; "Scene.Profile.Fields.Placeholder.Content" = "コンテンツ"; "Scene.Profile.Fields.Placeholder.Label" = "ラベル"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "%@のブロックを解除しますか?"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "ブロックを解除"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "%@をミュートしますか?"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "ミュートを解除"; +"Scene.Profile.SegmentedControl.About" = "About"; "Scene.Profile.SegmentedControl.Media" = "メディア"; "Scene.Profile.SegmentedControl.Posts" = "投稿"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; "Scene.Profile.SegmentedControl.Replies" = "リプライ"; "Scene.Register.Error.Item.Agreement" = "契約"; "Scene.Register.Error.Item.Email" = "メール"; @@ -242,19 +254,26 @@ "Scene.Register.Input.DisplayName.Placeholder" = "表示名"; "Scene.Register.Input.Email.Placeholder" = "メール"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "なぜ参加したいと思ったのですか?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "checked"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "unchecked"; +"Scene.Register.Input.Password.CharacterLimit" = "8 characters"; "Scene.Register.Input.Password.Hint" = "パスワードは最低でも8文字必要です。"; "Scene.Register.Input.Password.Placeholder" = "パスワード"; +"Scene.Register.Input.Password.Require" = "Your password needs at least:"; "Scene.Register.Input.Username.DuplicatePrompt" = "このユーザー名は使用されています"; "Scene.Register.Input.Username.Placeholder" = "ユーザー名"; "Scene.Register.Title" = "あなたのことを教えてください"; "Scene.Report.Content1" = "他に報告したい投稿はありますか?"; "Scene.Report.Content2" = "この報告についてモデレーターに言いたいことはありますか?"; +"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; +"Scene.Report.Reported" = "REPORTED"; "Scene.Report.Send" = "報告を送信"; "Scene.Report.SkipToSend" = "コメントなしで送信"; "Scene.Report.Step1" = "ステップ 1/2"; "Scene.Report.Step2" = "ステップ 2/2"; "Scene.Report.TextPlaceholder" = "追加コメントを入力"; "Scene.Report.Title" = "%@を報告"; +"Scene.Report.TitleReport" = "Report"; "Scene.Search.Recommend.Accounts.Description" = "以下のアカウントをフォローしてみてはいかがでしょうか?"; "Scene.Search.Recommend.Accounts.Follow" = "フォロー"; "Scene.Search.Recommend.Accounts.Title" = "おすすめのアカウント"; @@ -278,7 +297,7 @@ "Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "カテゴリ: すべて"; "Scene.ServerPicker.Button.Category.Art" = "アート"; "Scene.ServerPicker.Button.Category.Food" = "食べ物"; -"Scene.ServerPicker.Button.Category.Furry" = "furry"; +"Scene.ServerPicker.Button.Category.Furry" = "ケモノ"; "Scene.ServerPicker.Button.Category.Games" = "ゲーム"; "Scene.ServerPicker.Button.Category.General" = "全般"; "Scene.ServerPicker.Button.Category.Journalism" = "言論"; @@ -295,6 +314,8 @@ "Scene.ServerPicker.Label.Category" = "カテゴリー"; "Scene.ServerPicker.Label.Language" = "言語"; "Scene.ServerPicker.Label.Users" = "ユーザー"; +"Scene.ServerPicker.Subtitle" = "Pick a community based on your interests, region, or a general purpose one."; +"Scene.ServerPicker.SubtitleExtend" = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual."; "Scene.ServerPicker.Title" = "サーバーを選択"; "Scene.ServerRules.Button.Confirm" = "同意する"; "Scene.ServerRules.PrivacyPolicy" = "プライバシーポリシー"; @@ -312,6 +333,11 @@ "Scene.Settings.Section.BoringZone.Privacy" = "プライバシーポリシー"; "Scene.Settings.Section.BoringZone.Terms" = "利用規約"; "Scene.Settings.Section.BoringZone.Title" = "アプリについて"; +"Scene.Settings.Section.LookAndFeel.Light" = "Light"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; +"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; "Scene.Settings.Section.Notifications.Boosts" = "ブースト"; "Scene.Settings.Section.Notifications.Favorites" = "お気に入り登録"; "Scene.Settings.Section.Notifications.Follows" = "フォロー"; @@ -335,7 +361,9 @@ "Scene.SuggestionAccount.Title" = "フォローする人を探す"; "Scene.Thread.BackTitle" = "投稿"; "Scene.Thread.Title" = "%@の投稿"; +"Scene.Welcome.GetStarted" = "Get Started"; +"Scene.Welcome.LogIn" = "Log In"; "Scene.Welcome.Slogan" = "ソーシャルネットワーキングを、あなたの手の中に."; -"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard"; +"Scene.Wizard.AccessibilityHint" = "チュートリアルを閉じるには、ダブルタップしてください"; "Scene.Wizard.MultipleAccountSwitchIntroDescription" = "プロフィールボタンを押して複数のアカウントを切り替えます。"; "Scene.Wizard.NewInMastodon" = "Mastodon の新機能"; \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict index c51a9a29d..f1c5e6e25 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ja.lproj/Localizable.stringsdict @@ -279,7 +279,7 @@ NSStringFormatValueTypeKey ld other - %ld分前 + %ldか月前 date.day.ago.abbr diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ku-TR.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ku-TR.lproj/Localizable.strings index d0d0f294e..6e629cb0b 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ku-TR.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ku-TR.lproj/Localizable.strings @@ -4,8 +4,8 @@ "Common.Alerts.CleanCache.Title" = "Pêşbîrê pak bike"; "Common.Alerts.Common.PleaseTryAgain" = "Ji kerema xwe dîsa biceribîne."; "Common.Alerts.Common.PleaseTryAgainLater" = "Ji kerema xwe paşê dîsa biceribîne."; -"Common.Alerts.DeletePost.Delete" = "Jê bibe"; -"Common.Alerts.DeletePost.Title" = "Ma tu dixwazî vê şandiyê jê bibî?"; +"Common.Alerts.DeletePost.Message" = "Ma tu dixwazî vê şandiyê jê bibî?"; +"Common.Alerts.DeletePost.Title" = "Şandiyê jê bibe"; "Common.Alerts.DiscardPostContent.Message" = "Bipejrîne ku naveroka şandiyê ya hatiye nivîsandin paşguh bikî."; "Common.Alerts.DiscardPostContent.Title" = "Reşnivîsê paşguh bike"; "Common.Alerts.EditProfileFailure.Message" = "Nikare profîlê serrast bike. Jkx dîsa biceribîne."; @@ -41,6 +41,7 @@ Jkx girêdana înternetê xwe kontrol bike."; "Common.Controls.Actions.Next" = "Pêş"; "Common.Controls.Actions.Ok" = "BAŞ E"; "Common.Controls.Actions.Open" = "Veke"; +"Common.Controls.Actions.OpenInBrowser" = "Di gerokê de veke"; "Common.Controls.Actions.OpenInSafari" = "Di Safariyê de veke"; "Common.Controls.Actions.Preview" = "Pêşdîtin"; "Common.Controls.Actions.Previous" = "Paş"; @@ -91,8 +92,9 @@ Jkx girêdana înternetê xwe kontrol bike."; "Common.Controls.Keyboard.Timeline.ReplyStatus" = "Bersivê bide şandiyê"; "Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Hişyariya naverokê biguherîne"; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Li ser şandiyê bijarte biguherîne"; -"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Ji vû nivîsandin di şandiyê de biguherîne"; +"Common.Controls.Keyboard.Timeline.ToggleReblog" = "Ji nû ve nivîsandin di şandiyê de biguherîne"; "Common.Controls.Status.Actions.Favorite" = "Bijarte"; +"Common.Controls.Status.Actions.Hide" = "Veşêre"; "Common.Controls.Status.Actions.Menu" = "Kulîn"; "Common.Controls.Status.Actions.Reblog" = "Ji nû ve nivîsandin"; "Common.Controls.Status.Actions.Reply" = "Bersivê bide"; @@ -110,8 +112,12 @@ Jkx girêdana înternetê xwe kontrol bike."; "Common.Controls.Status.Tag.Link" = "Girêdan"; "Common.Controls.Status.Tag.Mention" = "Qalkirin"; "Common.Controls.Status.Tag.Url" = "URL"; -"Common.Controls.Status.UserReblogged" = "%@ ji nû ve hate nivîsandin"; +"Common.Controls.Status.UserReblogged" = "%@ ji nû ve nivîsand"; "Common.Controls.Status.UserRepliedTo" = "Bersiv da %@"; +"Common.Controls.Status.Visibility.Direct" = "Tenê bikarhênerê qalkirî dikare vê şandiyê bibîne."; +"Common.Controls.Status.Visibility.Private" = "Tenê şopînerên wan dikarin vê şandiyê bibînin."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Tenê şopînerên min dikarin vê şandiyê bibînin."; +"Common.Controls.Status.Visibility.Unlisted" = "Her kes dikare vê şandiyê bibîne lê nayê nîşandan di demnameya gelemperî de."; "Common.Controls.Tabs.Home" = "Serrûpel"; "Common.Controls.Tabs.Notification" = "Agahdarî"; "Common.Controls.Tabs.Profile" = "Profîl"; @@ -178,8 +184,8 @@ Profîla te ji wan ra wiha xuya dike."; "Scene.Compose.Visibility.Private" = "Tenê şopîneran"; "Scene.Compose.Visibility.Public" = "Gelemperî"; "Scene.Compose.Visibility.Unlisted" = "Nerêzokkirî"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "Min hîç e-nameyeke nesitand"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Sepana e-nameyê veke"; +"Scene.ConfirmEmail.Button.Resend" = "Ji nû ve bişîne"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Kontrol bike ka navnîşana e-nameya te rast e û her wiha peldanka xwe ya spam."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "E-namyê yê dîsa bişîne"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "E-nameyê xwe kontrol bike"; @@ -200,14 +206,14 @@ girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin."; "Scene.HomeTimeline.Title" = "Serrûpel"; "Scene.Notification.Keyobard.ShowEverything" = "Her tiştî nîşan bide"; "Scene.Notification.Keyobard.ShowMentions" = "Qalkirinan nîşan bike"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "şandiya te hez kir"; +"Scene.Notification.NotificationDescription.FollowedYou" = "te şopand"; +"Scene.Notification.NotificationDescription.MentionedYou" = "qale te kir"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "rapirsî qediya"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "şandiya te ji nû ve nivisand"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "dixwazê te bişopîne"; "Scene.Notification.Title.Everything" = "Her tişt"; "Scene.Notification.Title.Mentions" = "Qalkirin"; -"Scene.Notification.UserFavorited Your Post" = "%@ şandiya te hez kir"; -"Scene.Notification.UserFollowedYou" = "%@ te şopand"; -"Scene.Notification.UserMentionedYou" = "%@ qale te kir"; -"Scene.Notification.UserRebloggedYourPost" = "%@ posta we ji nû ve tomar kir"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ dixwazê te bişopîne"; -"Scene.Notification.UserYourPollHasEnded" = "Rapirsîya te qediya"; "Scene.Preview.Keyboard.ClosePreview" = "Pêşdîtin bigire"; "Scene.Preview.Keyboard.ShowNext" = "A pêş nîşan bide"; "Scene.Preview.Keyboard.ShowPrevious" = "A paş nîşan bide"; @@ -217,12 +223,18 @@ girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin."; "Scene.Profile.Fields.AddRow" = "Rêzê tevlî bike"; "Scene.Profile.Fields.Placeholder.Content" = "Naverok"; "Scene.Profile.Fields.Placeholder.Label" = "Nîşan"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Ji bo rakirina astengkirinê bipejirîne %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Astengiyê li ser ajimêr rake"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Ji bo vekirina bêdengkirinê bipejirîne %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Ji bo rakirina astengkirinê %@ bipejirîne"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Ajimêr asteng bike"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Ji bo bêdengkirina %@ bipejirîne"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Ajimêrê bêdeng bike"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Ji bo rakirina astengkirinê %@ bipejirîne"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Astengiyê li ser ajimêr rake"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Ji bo vekirina bêdengkirinê %@ bipejirîne"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Ajimêrê bêdeng neke"; +"Scene.Profile.SegmentedControl.About" = "Derbar"; "Scene.Profile.SegmentedControl.Media" = "Medya"; "Scene.Profile.SegmentedControl.Posts" = "Şandî"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Şandî û bersiv"; "Scene.Profile.SegmentedControl.Replies" = "Bersiv"; "Scene.Register.Error.Item.Agreement" = "Peyman"; "Scene.Register.Error.Item.Email" = "E-name"; @@ -248,19 +260,26 @@ girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin."; "Scene.Register.Input.DisplayName.Placeholder" = "navê nîşanê"; "Scene.Register.Input.Email.Placeholder" = "e-name"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Tu çima dixwazî beşdar bibî?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "hate kontrolkirin"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "nehate kontrolkirin"; +"Scene.Register.Input.Password.CharacterLimit" = "8 tîp"; "Scene.Register.Input.Password.Hint" = "Pêborîna te herî kêm divê ji 8 tîpan pêk bê"; "Scene.Register.Input.Password.Placeholder" = "pêborîn"; +"Scene.Register.Input.Password.Require" = "Pêdiviya pêborîna te ya herî kêm:"; "Scene.Register.Input.Username.DuplicatePrompt" = "Navê vê bikarhêner tê girtin."; "Scene.Register.Input.Username.Placeholder" = "navê bikarhêner"; -"Scene.Register.Title" = "Ji me re hinekî qala xwe bike."; +"Scene.Register.Title" = "Ji me re hinekî qala xwe bike %@"; "Scene.Report.Content1" = "Şandiyên din hene ku tu dixwazî tevlî ragihandinê bikî?"; "Scene.Report.Content2" = "Derbarê vê ragihandinê de tiştek heye ku divê çavdêr bizanin?"; +"Scene.Report.ReportSentTitle" = "Spas ji bo ragihandina te, em ê binirxînin."; +"Scene.Report.Reported" = "HATE RAGIHANDIN"; "Scene.Report.Send" = "Ragihandinê bişîne"; "Scene.Report.SkipToSend" = "Bêyî şirove bişîne"; "Scene.Report.Step1" = "Gav 1 ji 2"; "Scene.Report.Step2" = "Gav 2 ji 2"; "Scene.Report.TextPlaceholder" = "Şiroveyên daxwazkirê binivîsine an jî pê ve bike"; "Scene.Report.Title" = "%@ ragihîne"; +"Scene.Report.TitleReport" = "Ragihandin"; "Scene.Search.Recommend.Accounts.Description" = "Dibe ku tu bixwazî van ajimêran bişopînî"; "Scene.Search.Recommend.Accounts.Follow" = "Bişopîne"; "Scene.Search.Recommend.Accounts.Title" = "Ajimêrên ku belkî tu jê hez bikî"; @@ -301,12 +320,14 @@ girêdanê bitikne da ku ajimêra xwe bidî piştrastkirin."; "Scene.ServerPicker.Label.Category" = "BEŞ"; "Scene.ServerPicker.Label.Language" = "ZIMAN"; "Scene.ServerPicker.Label.Users" = "BIKARHÊNER"; +"Scene.ServerPicker.Subtitle" = "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre."; +"Scene.ServerPicker.SubtitleExtend" = "Li gorî berjewendî, herêm, an jî armancek gelemperî civakekê hilbijêre. Her civakek ji hêla rêxistinek an kesek bi tevahî serbixwe ve tê xebitandin."; "Scene.ServerPicker.Title" = "Rajekarekê hilbijêre, Her kîjan rajekar be."; "Scene.ServerRules.Button.Confirm" = "Ez dipejirînim"; "Scene.ServerRules.PrivacyPolicy" = "polîtikaya nihêniyê"; "Scene.ServerRules.Prompt" = "Bi domandinê, tu ji bo %@ di bin mercên bikaranînê û polîtîkaya nepenîtiyê dipejirînî."; -"Scene.ServerRules.Subtitle" = "Ev rêzik ji aliyê rêvebirên %@ ve tên sazkirin."; +"Scene.ServerRules.Subtitle" = "Ev rêzik ji aliyê çavdêrên %@ ve tên sazkirin."; "Scene.ServerRules.TermsOfService" = "mercên bikaranînê"; "Scene.ServerRules.Title" = "Hinek rêzikên bingehîn."; "Scene.Settings.Footer.MastodonDescription" = "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di %@ (%@) de"; @@ -319,6 +340,11 @@ Her kîjan rajekar be."; "Scene.Settings.Section.BoringZone.Privacy" = "Polîtikaya nihêniyê"; "Scene.Settings.Section.BoringZone.Terms" = "Mercên bikaranînê"; "Scene.Settings.Section.BoringZone.Title" = "Devera acizker"; +"Scene.Settings.Section.LookAndFeel.Light" = "Ron"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Tarî"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Hinekî tarî"; +"Scene.Settings.Section.LookAndFeel.Title" = "Xuyang"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Pergalê bi kar bîne"; "Scene.Settings.Section.Notifications.Boosts" = "Şandiya min ji nû ve nivîsand"; "Scene.Settings.Section.Notifications.Favorites" = "Şandiyên min hez kir"; "Scene.Settings.Section.Notifications.Follows" = "Min dişopîne"; @@ -342,6 +368,8 @@ Her kîjan rajekar be."; "Scene.SuggestionAccount.Title" = "Kesên bo ku bişopînî bibîne"; "Scene.Thread.BackTitle" = "Şandî"; "Scene.Thread.Title" = "Şandî ji %@"; +"Scene.Welcome.GetStarted" = "Dest pê bike"; +"Scene.Welcome.LogIn" = "Têkeve"; "Scene.Welcome.Slogan" = "Torên civakî di destên te de."; "Scene.Wizard.AccessibilityHint" = "Du caran bitikîne da ku çarçoveyahilpekok ji holê rakî"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings index 9c84e138f..f9e04622d 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/nl.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Cache-geheugen Wissen"; "Common.Alerts.Common.PleaseTryAgain" = "Probeer het opnieuw."; "Common.Alerts.Common.PleaseTryAgainLater" = "Probeer het later nog eens."; -"Common.Alerts.DeletePost.Delete" = "Verwijderen"; +"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; "Common.Alerts.DeletePost.Title" = "Weet u zeker dat u dit bericht wilt verwijderen?"; "Common.Alerts.DiscardPostContent.Message" = "Bevestig het verwijderen van het concept bericht."; "Common.Alerts.DiscardPostContent.Title" = "Concept Verwijderen"; @@ -40,6 +40,7 @@ "Common.Controls.Actions.Next" = "Volgende"; "Common.Controls.Actions.Ok" = "Oké"; "Common.Controls.Actions.Open" = "Open"; +"Common.Controls.Actions.OpenInBrowser" = "Open in Browser"; "Common.Controls.Actions.OpenInSafari" = "Open in Safari"; "Common.Controls.Actions.Preview" = "Voorvertoning"; "Common.Controls.Actions.Previous" = "Vorige"; @@ -92,6 +93,7 @@ "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Favoriet Omschakelen bij Bericht"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Delen bij berichten omschakelen"; "Common.Controls.Status.Actions.Favorite" = "Toevoegen aan Favorieten"; +"Common.Controls.Status.Actions.Hide" = "Hide"; "Common.Controls.Status.Actions.Menu" = "Menu"; "Common.Controls.Status.Actions.Reblog" = "Delen"; "Common.Controls.Status.Actions.Reply" = "Reageren"; @@ -111,6 +113,10 @@ "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ gedeeld"; "Common.Controls.Status.UserRepliedTo" = "Reactie op %@"; +"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; +"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; +"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; "Common.Controls.Tabs.Home" = "Start"; "Common.Controls.Tabs.Notification" = "Melding"; "Common.Controls.Tabs.Profile" = "Profiel"; @@ -172,8 +178,8 @@ Uw profiel ziet er zo uit voor hen."; "Scene.Compose.Visibility.Private" = "Alleen volgers"; "Scene.Compose.Visibility.Public" = "Openbaar"; "Scene.Compose.Visibility.Unlisted" = "Niet-vermeld"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "Ik heb geen email ontvangen"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Email Openen"; +"Scene.ConfirmEmail.Button.Resend" = "Resend"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Controleer of uw emailadres correct is en of the email in de ongewenste email filter terecht is gekomen."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Email Opnieuw Versturen"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Controleer uw emailadres"; @@ -194,14 +200,14 @@ klik op de link om uw account te bevestigen."; "Scene.HomeTimeline.Title" = "Start"; "Scene.Notification.Keyobard.ShowEverything" = "Alles weergeven"; "Scene.Notification.Keyobard.ShowMentions" = "Vermeldingen weergeven"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; +"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; +"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; "Scene.Notification.Title.Everything" = "Alles"; "Scene.Notification.Title.Mentions" = "Vermeldingen"; -"Scene.Notification.UserFavorited Your Post" = "%@ favorited your post"; -"Scene.Notification.UserFollowedYou" = "%@ followed you"; -"Scene.Notification.UserMentionedYou" = "%@ mentioned you"; -"Scene.Notification.UserRebloggedYourPost" = "%@ reblogged your post"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ requested to follow you"; -"Scene.Notification.UserYourPollHasEnded" = "%@ Your poll has ended"; "Scene.Preview.Keyboard.ClosePreview" = "Voorbeeldweergave Sluiten"; "Scene.Preview.Keyboard.ShowNext" = "Volgende"; "Scene.Preview.Keyboard.ShowPrevious" = "Vorige"; @@ -211,12 +217,18 @@ klik op de link om uw account te bevestigen."; "Scene.Profile.Fields.AddRow" = "Rij Toevoegen"; "Scene.Profile.Fields.Placeholder.Content" = "Inhoud"; "Scene.Profile.Fields.Placeholder.Label" = "Etiket"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Bevestig om %@ te deblokkeren"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Account niet langer negeren"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Bevestig om %@ te negeren"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Account Negeren"; +"Scene.Profile.SegmentedControl.About" = "About"; "Scene.Profile.SegmentedControl.Media" = "Media"; "Scene.Profile.SegmentedControl.Posts" = "Berichten"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; "Scene.Profile.SegmentedControl.Replies" = "Reacties"; "Scene.Register.Error.Item.Agreement" = "Overeenkomst"; "Scene.Register.Error.Item.Email" = "Email"; @@ -242,19 +254,26 @@ klik op de link om uw account te bevestigen."; "Scene.Register.Input.DisplayName.Placeholder" = "weergavenaam"; "Scene.Register.Input.Email.Placeholder" = "email"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Waarom wil u zich hier registreren?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "checked"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "unchecked"; +"Scene.Register.Input.Password.CharacterLimit" = "8 characters"; "Scene.Register.Input.Password.Hint" = "Uw wachtwoord moet ten minste acht tekens bevatten"; "Scene.Register.Input.Password.Placeholder" = "wachtwoord"; +"Scene.Register.Input.Password.Require" = "Your password needs at least:"; "Scene.Register.Input.Username.DuplicatePrompt" = "Deze gebruikersnaam is al in gebruik."; "Scene.Register.Input.Username.Placeholder" = "gebruikersnaam"; "Scene.Register.Title" = "Vertel ons over uzelf."; "Scene.Report.Content1" = "Zijn er nog meer berichten die u aan het rapport wilt toevoegen?"; "Scene.Report.Content2" = "Is er iets anders over dit rapport dat de moderators zouden moeten weten?"; +"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; +"Scene.Report.Reported" = "REPORTED"; "Scene.Report.Send" = "Stuur rapport"; "Scene.Report.SkipToSend" = "Verstuur zonder opmerkingen"; "Scene.Report.Step1" = "Stap 1 van 2"; "Scene.Report.Step2" = "Stap 2 van 2"; "Scene.Report.TextPlaceholder" = "Schrijf of plak aanvullende opmerkingen"; "Scene.Report.Title" = "Rapporteer %@"; +"Scene.Report.TitleReport" = "Report"; "Scene.Search.Recommend.Accounts.Description" = "Misschien dat u geïnteresseerd bent in deze accounts"; "Scene.Search.Recommend.Accounts.Follow" = "Volgen"; "Scene.Search.Recommend.Accounts.Title" = "Interessante accounts voor u"; @@ -295,6 +314,8 @@ klik op de link om uw account te bevestigen."; "Scene.ServerPicker.Label.Category" = "CATEGORIE"; "Scene.ServerPicker.Label.Language" = "TAAL"; "Scene.ServerPicker.Label.Users" = "GEBRUIKERS"; +"Scene.ServerPicker.Subtitle" = "Pick a community based on your interests, region, or a general purpose one."; +"Scene.ServerPicker.SubtitleExtend" = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual."; "Scene.ServerPicker.Title" = "Kies een server, welke dan ook."; "Scene.ServerRules.Button.Confirm" = "Ik Ga Akkoord"; "Scene.ServerRules.PrivacyPolicy" = "privacybeleid"; @@ -312,6 +333,11 @@ klik op de link om uw account te bevestigen."; "Scene.Settings.Section.BoringZone.Privacy" = "Privacybeleid"; "Scene.Settings.Section.BoringZone.Terms" = "Servicevoorwaarden"; "Scene.Settings.Section.BoringZone.Title" = "De Saaie Instellingen"; +"Scene.Settings.Section.LookAndFeel.Light" = "Light"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; +"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; "Scene.Settings.Section.Notifications.Boosts" = "Mijn bericht deelt"; "Scene.Settings.Section.Notifications.Favorites" = "Mijn bericht als favoriet toevoegt"; "Scene.Settings.Section.Notifications.Follows" = "Mij volgt"; @@ -335,6 +361,8 @@ klik op de link om uw account te bevestigen."; "Scene.SuggestionAccount.Title" = "Zoek Mensen om te Volgen"; "Scene.Thread.BackTitle" = "Bericht"; "Scene.Thread.Title" = "Bericht van %@"; +"Scene.Welcome.GetStarted" = "Get Started"; +"Scene.Welcome.LogIn" = "Log In"; "Scene.Welcome.Slogan" = "Sociale media terug in uw handen."; "Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard"; "Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button."; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings index 1a4f92fc6..aa05910c0 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/ru.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "Очистка кэша"; "Common.Alerts.Common.PleaseTryAgain" = "Пожалуйста, попробуйте ещё раз."; "Common.Alerts.Common.PleaseTryAgainLater" = "Пожалуйста, попробуйте позже."; -"Common.Alerts.DeletePost.Delete" = "Удалить"; +"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; "Common.Alerts.DeletePost.Title" = "Вы уверены, что хотите удалить этот пост?"; "Common.Alerts.DiscardPostContent.Message" = "Вы действительно хотите удалить набранное содержимое поста?"; "Common.Alerts.DiscardPostContent.Title" = "Удалить черновик"; @@ -28,7 +28,7 @@ "Common.Controls.Actions.Back" = "Назад"; "Common.Controls.Actions.BlockDomain" = "Заблокировать %@"; "Common.Controls.Actions.Cancel" = "Отмена"; -"Common.Controls.Actions.Compose" = "Compose"; +"Common.Controls.Actions.Compose" = "Написать"; "Common.Controls.Actions.Confirm" = "Подтвердить"; "Common.Controls.Actions.Continue" = "Продолжить"; "Common.Controls.Actions.CopyPhoto" = "Скопировать изображение"; @@ -41,6 +41,7 @@ "Common.Controls.Actions.Next" = "Далее"; "Common.Controls.Actions.Ok" = "ОК"; "Common.Controls.Actions.Open" = "Открыть"; +"Common.Controls.Actions.OpenInBrowser" = "Открыть в браузере"; "Common.Controls.Actions.OpenInSafari" = "Открыть в Safari"; "Common.Controls.Actions.Preview" = "Предпросмотр"; "Common.Controls.Actions.Previous" = "Прошлые"; @@ -93,6 +94,7 @@ "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Добавить или убрать из избранного"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Продвинуть или убрать продвижение"; "Common.Controls.Status.Actions.Favorite" = "Добавить в избранное"; +"Common.Controls.Status.Actions.Hide" = "Hide"; "Common.Controls.Status.Actions.Menu" = "Меню"; "Common.Controls.Status.Actions.Reblog" = "Продвинуть"; "Common.Controls.Status.Actions.Reply" = "Ответить"; @@ -112,6 +114,10 @@ "Common.Controls.Status.Tag.Url" = "Ссылка"; "Common.Controls.Status.UserReblogged" = "%@ продвинул(а)"; "Common.Controls.Status.UserRepliedTo" = "Ответил(а) %@"; +"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; +"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; +"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; "Common.Controls.Tabs.Home" = "Главная"; "Common.Controls.Tabs.Notification" = "Уведомление"; "Common.Controls.Tabs.Profile" = "Профиль"; @@ -186,8 +192,8 @@ "Scene.Compose.Visibility.Private" = "Для подписчиков"; "Scene.Compose.Visibility.Public" = "Публичный"; "Scene.Compose.Visibility.Unlisted" = "Скрытый"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "Я не получил письма"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "Открыть приложение почты"; +"Scene.ConfirmEmail.Button.Resend" = "Resend"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "Проверьте, правильно ли указан ваш e-mail адрес, а также папку «спам», если ещё не сделали этого."; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Отправить ещё раз"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "Проверьте свой e-mail адрес"; @@ -210,14 +216,14 @@ "Scene.HomeTimeline.Title" = "Главная"; "Scene.Notification.Keyobard.ShowEverything" = "Показать все"; "Scene.Notification.Keyobard.ShowMentions" = "Показать упоминания"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; +"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; +"Scene.Notification.NotificationDescription.MentionedYou" = "mentioned you"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; "Scene.Notification.Title.Everything" = "Все"; "Scene.Notification.Title.Mentions" = "Упоминания"; -"Scene.Notification.UserFavorited Your Post" = "%@ favorited your post"; -"Scene.Notification.UserFollowedYou" = "%@ подписался (-ась)"; -"Scene.Notification.UserMentionedYou" = "%@ упомянул вас"; -"Scene.Notification.UserRebloggedYourPost" = "%@ reblogged your post"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ запрашивает подписку"; -"Scene.Notification.UserYourPollHasEnded" = "%@ Your poll has ended"; "Scene.Preview.Keyboard.ClosePreview" = "Закрыть предпросмотр"; "Scene.Preview.Keyboard.ShowNext" = "Следующее изображение"; "Scene.Preview.Keyboard.ShowPrevious" = "Предыдущее изображение"; @@ -227,12 +233,18 @@ "Scene.Profile.Fields.AddRow" = "Добавить строку"; "Scene.Profile.Fields.Placeholder.Content" = "Содержимое"; "Scene.Profile.Fields.Placeholder.Label" = "Ярлык"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Убрать %@ из списка блокировки?"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Разблокировать"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Убрать %@ из игнорируемых?"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Убрать из игнорируемых"; +"Scene.Profile.SegmentedControl.About" = "About"; "Scene.Profile.SegmentedControl.Media" = "Медиа"; "Scene.Profile.SegmentedControl.Posts" = "Посты"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; "Scene.Profile.SegmentedControl.Replies" = "Ответы"; "Scene.Register.Error.Item.Agreement" = "Соглашение"; "Scene.Register.Error.Item.Email" = "E-mail"; @@ -258,19 +270,26 @@ "Scene.Register.Input.DisplayName.Placeholder" = "отображаемое имя"; "Scene.Register.Input.Email.Placeholder" = "e-mail"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Почему вы хотите присоединиться?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "checked"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "unchecked"; +"Scene.Register.Input.Password.CharacterLimit" = "8 characters"; "Scene.Register.Input.Password.Hint" = "Пароль должен содержать не менее восьми символов"; "Scene.Register.Input.Password.Placeholder" = "пароль"; +"Scene.Register.Input.Password.Require" = "Your password needs at least:"; "Scene.Register.Input.Username.DuplicatePrompt" = "Это имя пользователя занято."; "Scene.Register.Input.Username.Placeholder" = "имя пользователя"; "Scene.Register.Title" = "Расскажите нам о себе."; "Scene.Report.Content1" = "Есть ли другие сообщения, которые вы хотите добавить в отчёт?"; "Scene.Report.Content2" = "Есть ли что-то, что модераторы должны знать об этом сообщении?"; +"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; +"Scene.Report.Reported" = "REPORTED"; "Scene.Report.Send" = "Пожаловаться"; "Scene.Report.SkipToSend" = "Отправить без комментария"; "Scene.Report.Step1" = "Шаг 1 из 2"; "Scene.Report.Step2" = "Шаг 2 из 2"; "Scene.Report.TextPlaceholder" = "Дополнительные комментарии"; "Scene.Report.Title" = "Пожаловаться на %@"; +"Scene.Report.TitleReport" = "Report"; "Scene.Search.Recommend.Accounts.Description" = "Возможно, вы захотите подписаться на эти профили"; "Scene.Search.Recommend.Accounts.Follow" = "Подписаться"; "Scene.Search.Recommend.Accounts.Title" = "Вам может понравится"; @@ -311,6 +330,8 @@ "Scene.ServerPicker.Label.Category" = "КАТЕГОРИЯ"; "Scene.ServerPicker.Label.Language" = "ЯЗЫК"; "Scene.ServerPicker.Label.Users" = "ПОЛЬЗОВАТЕЛИ"; +"Scene.ServerPicker.Subtitle" = "Выберите сообщество на основе своих интересов, региона или общей тематики."; +"Scene.ServerPicker.SubtitleExtend" = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual."; "Scene.ServerPicker.Title" = "Выберите сервер, любой сервер."; "Scene.ServerRules.Button.Confirm" = "Принимаю"; @@ -329,6 +350,11 @@ "Scene.Settings.Section.BoringZone.Privacy" = "Политика конфиденциальности"; "Scene.Settings.Section.BoringZone.Terms" = "Условия использования"; "Scene.Settings.Section.BoringZone.Title" = "Зона скукотищи"; +"Scene.Settings.Section.LookAndFeel.Light" = "Light"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; +"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; "Scene.Settings.Section.Notifications.Boosts" = "Продвигает мой пост"; "Scene.Settings.Section.Notifications.Favorites" = "Добавляет мой пост в избранное"; "Scene.Settings.Section.Notifications.Follows" = "Подписался на меня"; @@ -352,6 +378,8 @@ "Scene.SuggestionAccount.Title" = "Подпишитесь на людей"; "Scene.Thread.BackTitle" = "Пост"; "Scene.Thread.Title" = "Пост %@"; +"Scene.Welcome.GetStarted" = "Get Started"; +"Scene.Welcome.LogIn" = "Вход"; "Scene.Welcome.Slogan" = "Социальная сеть под вашим контролем."; "Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings index bf57c0401..738a9ac00 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.strings @@ -1,349 +1,376 @@ -"Common.Alerts.BlockDomain.BlockEntireDomain" = "Block Domain"; +"Common.Alerts.BlockDomain.BlockEntireDomain" = "Estä verkkotunnus"; "Common.Alerts.BlockDomain.Title" = "Are you really, really sure you want to block the entire %@? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed."; -"Common.Alerts.CleanCache.Message" = "Successfully cleaned %@ cache."; -"Common.Alerts.CleanCache.Title" = "Clean Cache"; -"Common.Alerts.Common.PleaseTryAgain" = "Var god försök igen."; -"Common.Alerts.Common.PleaseTryAgainLater" = "Var god försök igen senare."; -"Common.Alerts.DeletePost.Delete" = "Radera"; -"Common.Alerts.DeletePost.Title" = "Are you sure you want to delete this post?"; +"Common.Alerts.CleanCache.Message" = "%@ välimuisti tyhjennetty onnistuneesti."; +"Common.Alerts.CleanCache.Title" = "Puhdista välimuisti"; +"Common.Alerts.Common.PleaseTryAgain" = "Yritä uudelleen."; +"Common.Alerts.Common.PleaseTryAgainLater" = "Yritä uudelleen myöhemmin."; +"Common.Alerts.DeletePost.Message" = "Are you sure you want to delete this post?"; +"Common.Alerts.DeletePost.Title" = "Haluatko varmasti poistaa tämän julkaisun?"; "Common.Alerts.DiscardPostContent.Message" = "Confirm to discard composed post content."; -"Common.Alerts.DiscardPostContent.Title" = "Discard Draft"; -"Common.Alerts.EditProfileFailure.Message" = "Cannot edit profile. Please try again."; -"Common.Alerts.EditProfileFailure.Title" = "Edit Profile Error"; -"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Cannot attach more than one video."; +"Common.Alerts.DiscardPostContent.Title" = "Hylkää luonnos"; +"Common.Alerts.EditProfileFailure.Message" = "Profiilia ei voida muoka. Yritä uudelleen."; +"Common.Alerts.EditProfileFailure.Title" = "Virhe profiilin muokkauksessa"; +"Common.Alerts.PublishPostFailure.AttachmentsMessage.MoreThanOneVideo" = "Ei voi liittä yhtä videota enempää."; "Common.Alerts.PublishPostFailure.AttachmentsMessage.VideoAttachWithPhoto" = "Cannot attach a video to a post that already contains images."; -"Common.Alerts.PublishPostFailure.Message" = "Failed to publish the post. -Please check your internet connection."; -"Common.Alerts.PublishPostFailure.Title" = "Publish Failure"; +"Common.Alerts.PublishPostFailure.Message" = "Julkaisun julkaiseminen epäonnistui. +Tarkista internet-yhteytesi."; +"Common.Alerts.PublishPostFailure.Title" = "Julkaiseminen epäonnistui"; "Common.Alerts.SavePhotoFailure.Message" = "Please enable the photo library access permission to save the photo."; -"Common.Alerts.SavePhotoFailure.Title" = "Save Photo Failure"; -"Common.Alerts.ServerError.Title" = "Serverfel"; -"Common.Alerts.SignOut.Confirm" = "Sign Out"; -"Common.Alerts.SignOut.Message" = "Är du säker på att du vill logga ut?"; -"Common.Alerts.SignOut.Title" = "Sign Out"; -"Common.Alerts.SignUpFailure.Title" = "Sign Up Failure"; -"Common.Alerts.VoteFailure.PollEnded" = "Omröstningen har avslutats"; +"Common.Alerts.SavePhotoFailure.Title" = "Kuvan tallentaminen epäonnistui"; +"Common.Alerts.ServerError.Title" = "Palvelinvirhe"; +"Common.Alerts.SignOut.Confirm" = "Kirjaudu ulos"; +"Common.Alerts.SignOut.Message" = "Haluatko varmasti kirjautua ulos?"; +"Common.Alerts.SignOut.Title" = "Kirjaudu ulos"; +"Common.Alerts.SignUpFailure.Title" = "Rekisteröinti epäonnistui"; +"Common.Alerts.VoteFailure.PollEnded" = "Kysely on päättynyt"; "Common.Alerts.VoteFailure.Title" = "Vote Failure"; -"Common.Controls.Actions.Add" = "Add"; -"Common.Controls.Actions.Back" = "Back"; -"Common.Controls.Actions.BlockDomain" = "Block %@"; -"Common.Controls.Actions.Cancel" = "Avbryt"; -"Common.Controls.Actions.Compose" = "Compose"; -"Common.Controls.Actions.Confirm" = "Confirm"; -"Common.Controls.Actions.Continue" = "Fortsätt"; -"Common.Controls.Actions.CopyPhoto" = "Copy Photo"; -"Common.Controls.Actions.Delete" = "Radera"; -"Common.Controls.Actions.Discard" = "Discard"; -"Common.Controls.Actions.Done" = "Done"; -"Common.Controls.Actions.Edit" = "Redigera"; -"Common.Controls.Actions.FindPeople" = "Find people to follow"; +"Common.Controls.Actions.Add" = "Lisää"; +"Common.Controls.Actions.Back" = "Takaisin"; +"Common.Controls.Actions.BlockDomain" = "Estä %@"; +"Common.Controls.Actions.Cancel" = "Kumoa"; +"Common.Controls.Actions.Compose" = "Koosta"; +"Common.Controls.Actions.Confirm" = "Vahvista"; +"Common.Controls.Actions.Continue" = "Jatka"; +"Common.Controls.Actions.CopyPhoto" = "Kopioi kuva"; +"Common.Controls.Actions.Delete" = "Poista"; +"Common.Controls.Actions.Discard" = "Hylkää"; +"Common.Controls.Actions.Done" = "Valmis"; +"Common.Controls.Actions.Edit" = "Muokkaa"; +"Common.Controls.Actions.FindPeople" = "Löydä tilejä seurattavaksi"; "Common.Controls.Actions.ManuallySearch" = "Manually search instead"; -"Common.Controls.Actions.Next" = "Next"; +"Common.Controls.Actions.Next" = "Seuraava"; "Common.Controls.Actions.Ok" = "OK"; -"Common.Controls.Actions.Open" = "Open"; -"Common.Controls.Actions.OpenInSafari" = "Öppna i Safari"; -"Common.Controls.Actions.Preview" = "Preview"; -"Common.Controls.Actions.Previous" = "Previous"; -"Common.Controls.Actions.Remove" = "Remove"; -"Common.Controls.Actions.Reply" = "Reply"; -"Common.Controls.Actions.ReportUser" = "Rapportera %@"; -"Common.Controls.Actions.Save" = "Spara"; -"Common.Controls.Actions.SavePhoto" = "Save Photo"; -"Common.Controls.Actions.SeeMore" = "See More"; -"Common.Controls.Actions.Settings" = "Inställningar"; -"Common.Controls.Actions.Share" = "Dela"; -"Common.Controls.Actions.SharePost" = "Share Post"; -"Common.Controls.Actions.ShareUser" = "Dela %@"; -"Common.Controls.Actions.SignIn" = "Sign In"; -"Common.Controls.Actions.SignUp" = "Sign Up"; -"Common.Controls.Actions.Skip" = "Skip"; -"Common.Controls.Actions.TakePhoto" = "Take Photo"; -"Common.Controls.Actions.TryAgain" = "Försök igen"; -"Common.Controls.Actions.UnblockDomain" = "Unblock %@"; -"Common.Controls.Friendship.Block" = "Block"; -"Common.Controls.Friendship.BlockDomain" = "Block %@"; -"Common.Controls.Friendship.BlockUser" = "Block %@"; -"Common.Controls.Friendship.Blocked" = "Blocked"; -"Common.Controls.Friendship.EditInfo" = "Edit Info"; -"Common.Controls.Friendship.Follow" = "Följ"; -"Common.Controls.Friendship.Following" = "Följer"; -"Common.Controls.Friendship.Mute" = "Mute"; -"Common.Controls.Friendship.MuteUser" = "Mute %@"; -"Common.Controls.Friendship.Muted" = "Muted"; -"Common.Controls.Friendship.Pending" = "Pending"; -"Common.Controls.Friendship.Request" = "Request"; -"Common.Controls.Friendship.Unblock" = "Unblock"; +"Common.Controls.Actions.Open" = "Avaa"; +"Common.Controls.Actions.OpenInBrowser" = "Open in Browser"; +"Common.Controls.Actions.OpenInSafari" = "Avaa Safarissa"; +"Common.Controls.Actions.Preview" = "Esikatselu"; +"Common.Controls.Actions.Previous" = "Edellinen"; +"Common.Controls.Actions.Remove" = "Poista"; +"Common.Controls.Actions.Reply" = "Vastaa"; +"Common.Controls.Actions.ReportUser" = "Ilmianna %@"; +"Common.Controls.Actions.Save" = "Tallenna"; +"Common.Controls.Actions.SavePhoto" = "Tallenna kuva"; +"Common.Controls.Actions.SeeMore" = "Näytä lisää"; +"Common.Controls.Actions.Settings" = "Asetukset"; +"Common.Controls.Actions.Share" = "Jaa"; +"Common.Controls.Actions.SharePost" = "Jaa julkaisu"; +"Common.Controls.Actions.ShareUser" = "Jaa %@"; +"Common.Controls.Actions.SignIn" = "Kirjaudu sisään"; +"Common.Controls.Actions.SignUp" = "Rekisteröidy"; +"Common.Controls.Actions.Skip" = "Ohita"; +"Common.Controls.Actions.TakePhoto" = "Ota kuva"; +"Common.Controls.Actions.TryAgain" = "Yritä uudelleen"; +"Common.Controls.Actions.UnblockDomain" = "Poista esto %@"; +"Common.Controls.Friendship.Block" = "Estä"; +"Common.Controls.Friendship.BlockDomain" = "Estä %@"; +"Common.Controls.Friendship.BlockUser" = "Estä %@"; +"Common.Controls.Friendship.Blocked" = "Estetty"; +"Common.Controls.Friendship.EditInfo" = "Muokkaa profiilia"; +"Common.Controls.Friendship.Follow" = "Seuraa"; +"Common.Controls.Friendship.Following" = "Seurataan"; +"Common.Controls.Friendship.Mute" = "Mykistä"; +"Common.Controls.Friendship.MuteUser" = "Mykistä %@"; +"Common.Controls.Friendship.Muted" = "Mykistetty"; +"Common.Controls.Friendship.Pending" = "Pyydetty"; +"Common.Controls.Friendship.Request" = "Pyydä"; +"Common.Controls.Friendship.Unblock" = "Poista esto"; "Common.Controls.Friendship.UnblockUser" = "Unblock %@"; -"Common.Controls.Friendship.Unmute" = "Unmute"; -"Common.Controls.Friendship.UnmuteUser" = "Unmute %@"; -"Common.Controls.Keyboard.Common.ComposeNewPost" = "Compose New Post"; -"Common.Controls.Keyboard.Common.OpenSettings" = "Open Settings"; -"Common.Controls.Keyboard.Common.ShowFavorites" = "Show Favorites"; -"Common.Controls.Keyboard.Common.SwitchToTab" = "Switch to %@"; -"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Next Section"; +"Common.Controls.Friendship.Unmute" = "Poista mykistys"; +"Common.Controls.Friendship.UnmuteUser" = "Poista mykistys tililtä %@"; +"Common.Controls.Keyboard.Common.ComposeNewPost" = "Koosta uusi julkaisu"; +"Common.Controls.Keyboard.Common.OpenSettings" = "Avaa asetukset"; +"Common.Controls.Keyboard.Common.ShowFavorites" = "Näytä suosikit"; +"Common.Controls.Keyboard.Common.SwitchToTab" = "Vaihda %@"; +"Common.Controls.Keyboard.SegmentedControl.NextSection" = "Seuraava lohko"; "Common.Controls.Keyboard.SegmentedControl.PreviousSection" = "Previous Section"; -"Common.Controls.Keyboard.Timeline.NextStatus" = "Next Post"; -"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Open Author's Profile"; -"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Open Reblogger's Profile"; -"Common.Controls.Keyboard.Timeline.OpenStatus" = "Open Post"; +"Common.Controls.Keyboard.Timeline.NextStatus" = "Seuraava julkaisu"; +"Common.Controls.Keyboard.Timeline.OpenAuthorProfile" = "Avaa tekijän profiili"; +"Common.Controls.Keyboard.Timeline.OpenRebloggerProfile" = "Avaa edelleen jakajan profiili"; +"Common.Controls.Keyboard.Timeline.OpenStatus" = "Avaa julkaisu"; "Common.Controls.Keyboard.Timeline.PreviewImage" = "Preview Image"; -"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Previous Post"; -"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Reply to Post"; -"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Toggle Content Warning"; +"Common.Controls.Keyboard.Timeline.PreviousStatus" = "Edellinen julkaisu"; +"Common.Controls.Keyboard.Timeline.ReplyStatus" = "Vastaa julkaisuun"; +"Common.Controls.Keyboard.Timeline.ToggleContentWarning" = "Vaihda sisältövaroitus"; "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "Toggle Favorite on Post"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "Toggle Reblog on Post"; "Common.Controls.Status.Actions.Favorite" = "Favorite"; -"Common.Controls.Status.Actions.Menu" = "Meny"; -"Common.Controls.Status.Actions.Reblog" = "Reblog"; -"Common.Controls.Status.Actions.Reply" = "Reply"; +"Common.Controls.Status.Actions.Hide" = "Dölj"; +"Common.Controls.Status.Actions.Menu" = "Valikko"; +"Common.Controls.Status.Actions.Reblog" = "Jaa edelleen"; +"Common.Controls.Status.Actions.Reply" = "Vastaa"; "Common.Controls.Status.Actions.Unfavorite" = "Unfavorite"; -"Common.Controls.Status.Actions.Unreblog" = "Undo reblog"; -"Common.Controls.Status.ContentWarning" = "Content Warning"; -"Common.Controls.Status.MediaContentWarning" = "Tap anywhere to reveal"; -"Common.Controls.Status.Poll.Closed" = "Closed"; +"Common.Controls.Status.Actions.Unreblog" = "Peru edelleen jako"; +"Common.Controls.Status.ContentWarning" = "Sisältövaroitus"; +"Common.Controls.Status.MediaContentWarning" = "Napauta mistä tahansa paljastaaksesi"; +"Common.Controls.Status.Poll.Closed" = "Suljettu"; "Common.Controls.Status.Poll.Vote" = "Vote"; -"Common.Controls.Status.ShowPost" = "Show Post"; -"Common.Controls.Status.ShowUserProfile" = "Show user profile"; -"Common.Controls.Status.Tag.Email" = "Email"; +"Common.Controls.Status.ShowPost" = "Näytä julkaisu"; +"Common.Controls.Status.ShowUserProfile" = "Näytä tili"; +"Common.Controls.Status.Tag.Email" = "Sähköposti"; "Common.Controls.Status.Tag.Emoji" = "Emoji"; -"Common.Controls.Status.Tag.Hashtag" = "Hashtag"; -"Common.Controls.Status.Tag.Link" = "Link"; +"Common.Controls.Status.Tag.Hashtag" = "Hashtagi"; +"Common.Controls.Status.Tag.Link" = "Linkki"; "Common.Controls.Status.Tag.Mention" = "Mention"; "Common.Controls.Status.Tag.Url" = "URL"; -"Common.Controls.Status.UserReblogged" = "%@ reblogged"; -"Common.Controls.Status.UserRepliedTo" = "Replied to %@"; -"Common.Controls.Tabs.Home" = "Home"; -"Common.Controls.Tabs.Notification" = "Notification"; -"Common.Controls.Tabs.Profile" = "Profil"; -"Common.Controls.Tabs.Search" = "Search"; -"Common.Controls.Timeline.Filtered" = "Filtered"; -"Common.Controls.Timeline.Header.BlockedWarning" = "You can’t view this user’s profile -until they unblock you."; -"Common.Controls.Timeline.Header.BlockingWarning" = "You can’t view this user's profile -until you unblock them. -Your profile looks like this to them."; -"Common.Controls.Timeline.Header.NoStatusFound" = "No Post Found"; -"Common.Controls.Timeline.Header.SuspendedWarning" = "This user has been suspended."; -"Common.Controls.Timeline.Header.UserBlockedWarning" = "You can’t view %@’s profile -until they unblock you."; -"Common.Controls.Timeline.Header.UserBlockingWarning" = "You can’t view %@’s profile -until you unblock them. -Your profile looks like this to them."; -"Common.Controls.Timeline.Header.UserSuspendedWarning" = "%@’s account has been suspended."; -"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Load missing posts"; -"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Loading missing posts..."; -"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Visa fler svar"; -"Common.Controls.Timeline.Timestamp.Now" = "Now"; -"Scene.AccountList.AddAccount" = "Lägg till konto"; -"Scene.AccountList.DismissAccountSwitcher" = "Dismiss Account Switcher"; -"Scene.AccountList.TabBarHint" = "Current selected profile: %@. Double tap then hold to show account switcher"; -"Scene.Compose.Accessibility.AppendAttachment" = "Add Attachment"; -"Scene.Compose.Accessibility.AppendPoll" = "Add Poll"; -"Scene.Compose.Accessibility.CustomEmojiPicker" = "Custom Emoji Picker"; -"Scene.Compose.Accessibility.DisableContentWarning" = "Disable Content Warning"; -"Scene.Compose.Accessibility.EnableContentWarning" = "Enable Content Warning"; -"Scene.Compose.Accessibility.PostVisibilityMenu" = "Post Visibility Menu"; -"Scene.Compose.Accessibility.RemovePoll" = "Remove Poll"; +"Common.Controls.Status.UserReblogged" = "%@ jakoi edelleen"; +"Common.Controls.Status.UserRepliedTo" = "Vastasi %@:lle"; +"Common.Controls.Status.Visibility.Direct" = "Only mentioned user can see this post."; +"Common.Controls.Status.Visibility.Private" = "Only their followers can see this post."; +"Common.Controls.Status.Visibility.PrivateFromMe" = "Only my followers can see this post."; +"Common.Controls.Status.Visibility.Unlisted" = "Everyone can see this post but not display in the public timeline."; +"Common.Controls.Tabs.Home" = "Koti"; +"Common.Controls.Tabs.Notification" = "Ilmoitus"; +"Common.Controls.Tabs.Profile" = "Profiili"; +"Common.Controls.Tabs.Search" = "Haku"; +"Common.Controls.Timeline.Filtered" = "Suodatettu"; +"Common.Controls.Timeline.Header.BlockedWarning" = "Et voi tarkastella tämän tilin profiilia +ennen kuin hän poistaa eston."; +"Common.Controls.Timeline.Header.BlockingWarning" = "Et voi tarkastella tämän tilin profiilia +ennen kuin poistat sen esto. +Profiilisi näyttää tältä hänelle."; +"Common.Controls.Timeline.Header.NoStatusFound" = "Julkaisua ei löytynyt"; +"Common.Controls.Timeline.Header.SuspendedWarning" = "Tämä tili on lakkautettu."; +"Common.Controls.Timeline.Header.UserBlockedWarning" = "Et voi tarkastella tilin %@ profiilia +ennen kuin hän poistaa eston."; +"Common.Controls.Timeline.Header.UserBlockingWarning" = "Et voi tarkastella tilin %@ profiilia +ennen kuin poistat sen esto. +Profiilisi näyttää tältä hänelle."; +"Common.Controls.Timeline.Header.UserSuspendedWarning" = "Tili %@ on lakkautettu."; +"Common.Controls.Timeline.Loader.LoadMissingPosts" = "Lataa puuttuvat julkaisut"; +"Common.Controls.Timeline.Loader.LoadingMissingPosts" = "Ladataan puuttuvia julkaisuja..."; +"Common.Controls.Timeline.Loader.ShowMoreReplies" = "Näytä lisää vastauksia"; +"Common.Controls.Timeline.Timestamp.Now" = "Nyt"; +"Scene.AccountList.AddAccount" = "Lisää tili"; +"Scene.AccountList.DismissAccountSwitcher" = "Sulje tilin vaihtaja"; +"Scene.AccountList.TabBarHint" = "Nykyinen valittu profiili: %@. Kaksoisnapauta ja pidä sitten painettuna näytääksesi tilin vaihtajan"; +"Scene.Compose.Accessibility.AppendAttachment" = "Lisää liite"; +"Scene.Compose.Accessibility.AppendPoll" = "Lisää kysely"; +"Scene.Compose.Accessibility.CustomEmojiPicker" = "Mukautettu emojivalitsin"; +"Scene.Compose.Accessibility.DisableContentWarning" = "Poista sisältövaroitus käytöstä"; +"Scene.Compose.Accessibility.EnableContentWarning" = "Ota sisältövaroitus käyttöön"; +"Scene.Compose.Accessibility.PostVisibilityMenu" = "Julkaisun näkyvyysvalikko"; +"Scene.Compose.Accessibility.RemovePoll" = "Poista kysely"; "Scene.Compose.Attachment.AttachmentBroken" = "This %@ is broken and can’t be uploaded to Mastodon."; -"Scene.Compose.Attachment.DescriptionPhoto" = "Describe the photo for the visually-impaired..."; -"Scene.Compose.Attachment.DescriptionVideo" = "Describe the video for the visually-impaired..."; -"Scene.Compose.Attachment.Photo" = "photo"; +"Scene.Compose.Attachment.DescriptionPhoto" = "Kuvaile kuva näkövammaisille..."; +"Scene.Compose.Attachment.DescriptionVideo" = "Kuvaile video näkövammaisille..."; +"Scene.Compose.Attachment.Photo" = "kuva"; "Scene.Compose.Attachment.Video" = "video"; "Scene.Compose.AutoComplete.SpaceToAdd" = "Space to add"; -"Scene.Compose.ComposeAction" = "Publicera"; -"Scene.Compose.ContentInputPlaceholder" = "Type or paste what’s on your mind"; -"Scene.Compose.ContentWarning.Placeholder" = "Write an accurate warning here..."; -"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Add Attachment - %@"; -"Scene.Compose.Keyboard.DiscardPost" = "Discard Post"; -"Scene.Compose.Keyboard.PublishPost" = "Publish Post"; -"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Select Visibility - %@"; -"Scene.Compose.Keyboard.ToggleContentWarning" = "Toggle Content Warning"; -"Scene.Compose.Keyboard.TogglePoll" = "Toggle Poll"; -"Scene.Compose.MediaSelection.Browse" = "Bläddra"; -"Scene.Compose.MediaSelection.Camera" = "Take Photo"; -"Scene.Compose.MediaSelection.PhotoLibrary" = "Photo Library"; -"Scene.Compose.Poll.DurationTime" = "Varaktighet: %@"; -"Scene.Compose.Poll.OneDay" = "1 Day"; -"Scene.Compose.Poll.OneHour" = "1 Hour"; -"Scene.Compose.Poll.OptionNumber" = "Option %ld"; -"Scene.Compose.Poll.SevenDays" = "7 Days"; -"Scene.Compose.Poll.SixHours" = "6 Hours"; -"Scene.Compose.Poll.ThirtyMinutes" = "30 minuter"; -"Scene.Compose.Poll.ThreeDays" = "3 Days"; -"Scene.Compose.ReplyingToUser" = "replying to %@"; -"Scene.Compose.Title.NewPost" = "New Post"; -"Scene.Compose.Title.NewReply" = "New Reply"; -"Scene.Compose.Visibility.Direct" = "Only people I mention"; -"Scene.Compose.Visibility.Private" = "Followers only"; -"Scene.Compose.Visibility.Public" = "Public"; -"Scene.Compose.Visibility.Unlisted" = "Unlisted"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "I never got an email"; -"Scene.ConfirmEmail.Button.OpenEmailApp" = "Open Email App"; -"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Check if your email address is correct as well as your junk folder if you haven’t."; -"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Resend Email"; -"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Check your email"; -"Scene.ConfirmEmail.OpenEmailApp.Description" = "We just sent you an email. Check your junk folder if you haven’t."; -"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Mail"; -"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Open Email Client"; -"Scene.ConfirmEmail.OpenEmailApp.Title" = "Check your inbox."; -"Scene.ConfirmEmail.Subtitle" = "We just sent an email to %@, -tap the link to confirm your account."; -"Scene.ConfirmEmail.Title" = "One last thing."; -"Scene.Favorite.Title" = "Your Favorites"; -"Scene.Follower.Footer" = "Followers from other servers are not displayed."; -"Scene.Following.Footer" = "Follows from other servers are not displayed."; -"Scene.HomeTimeline.NavigationBarState.NewPosts" = "See new posts"; -"Scene.HomeTimeline.NavigationBarState.Offline" = "Offline"; -"Scene.HomeTimeline.NavigationBarState.Published" = "Published!"; -"Scene.HomeTimeline.NavigationBarState.Publishing" = "Publishing post..."; -"Scene.HomeTimeline.Title" = "Home"; -"Scene.Notification.Keyobard.ShowEverything" = "Show Everything"; -"Scene.Notification.Keyobard.ShowMentions" = "Show Mentions"; -"Scene.Notification.Title.Everything" = "Everything"; -"Scene.Notification.Title.Mentions" = "Mentions"; -"Scene.Notification.UserFavorited Your Post" = "%@ favorited your post"; -"Scene.Notification.UserFollowedYou" = "%@ följde dig"; -"Scene.Notification.UserMentionedYou" = "%@ nämnde dig"; -"Scene.Notification.UserRebloggedYourPost" = "%@ reblogged your post"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ har begärt att följa dig"; -"Scene.Notification.UserYourPollHasEnded" = "%@ Omröstningen har avslutats"; -"Scene.Preview.Keyboard.ClosePreview" = "Close Preview"; -"Scene.Preview.Keyboard.ShowNext" = "Show Next"; -"Scene.Preview.Keyboard.ShowPrevious" = "Show Previous"; -"Scene.Profile.Dashboard.Followers" = "followers"; -"Scene.Profile.Dashboard.Following" = "following"; -"Scene.Profile.Dashboard.Posts" = "posts"; -"Scene.Profile.Fields.AddRow" = "Add Row"; -"Scene.Profile.Fields.Placeholder.Content" = "Content"; -"Scene.Profile.Fields.Placeholder.Label" = "Label"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "Confirm to unblock %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "Unblock Account"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Confirm to unmute %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Unmute Account"; +"Scene.Compose.ComposeAction" = "Julkaise"; +"Scene.Compose.ContentInputPlaceholder" = "Kirjoita tai liitä, siitä mitä ajattelet"; +"Scene.Compose.ContentWarning.Placeholder" = "Kirjoita tarkka varoitus tähän..."; +"Scene.Compose.Keyboard.AppendAttachmentEntry" = "Lisää liite - %@"; +"Scene.Compose.Keyboard.DiscardPost" = "Hylkää julkaisu"; +"Scene.Compose.Keyboard.PublishPost" = "Julkaise julkaisu"; +"Scene.Compose.Keyboard.SelectVisibilityEntry" = "Valitse näkyvyys - %@"; +"Scene.Compose.Keyboard.ToggleContentWarning" = "Vaihda sisältövaroitus"; +"Scene.Compose.Keyboard.TogglePoll" = "Vaihda kysely"; +"Scene.Compose.MediaSelection.Browse" = "Selaa"; +"Scene.Compose.MediaSelection.Camera" = "Ota kuva"; +"Scene.Compose.MediaSelection.PhotoLibrary" = "Kuvakirjasto"; +"Scene.Compose.Poll.DurationTime" = "Kesto: %@"; +"Scene.Compose.Poll.OneDay" = "1 päivä"; +"Scene.Compose.Poll.OneHour" = "1 tunti"; +"Scene.Compose.Poll.OptionNumber" = "Vaihtoehto %ld"; +"Scene.Compose.Poll.SevenDays" = "7 päivää"; +"Scene.Compose.Poll.SixHours" = "6 tuntia"; +"Scene.Compose.Poll.ThirtyMinutes" = "30 minuuttia"; +"Scene.Compose.Poll.ThreeDays" = "3 päivää"; +"Scene.Compose.ReplyingToUser" = "vastaamassa tilille %@"; +"Scene.Compose.Title.NewPost" = "Uusi julkaisu"; +"Scene.Compose.Title.NewReply" = "Uusi vastaus"; +"Scene.Compose.Visibility.Direct" = "Vain mainitsemani tilit"; +"Scene.Compose.Visibility.Private" = "Vain seuraajat"; +"Scene.Compose.Visibility.Public" = "Julkinen"; +"Scene.Compose.Visibility.Unlisted" = "Listaamaton"; +"Scene.ConfirmEmail.Button.OpenEmailApp" = "Avaa sähköpostisovellus"; +"Scene.ConfirmEmail.Button.Resend" = "Resend"; +"Scene.ConfirmEmail.DontReceiveEmail.Description" = "Tarkista, että sähköpostiosoitteesi on oikea, sekä roskapostikansiosi, jos et vielä ole."; +"Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "Lähetä sähköposti uudelleen"; +"Scene.ConfirmEmail.DontReceiveEmail.Title" = "Tarkista sähköpostisi"; +"Scene.ConfirmEmail.OpenEmailApp.Description" = "Lähetimme sinulle juuri sähköpostin. Tarkista myös roskapostikansiosi, jos et vielä ole."; +"Scene.ConfirmEmail.OpenEmailApp.Mail" = "Sähköposti"; +"Scene.ConfirmEmail.OpenEmailApp.OpenEmailClient" = "Avaa sähköpostisovellus"; +"Scene.ConfirmEmail.OpenEmailApp.Title" = "Tarkasta postilaatikkosi."; +"Scene.ConfirmEmail.Subtitle" = "Lähetimme juuri sähköpostin osoitteeseen %@, napauta siinä olevaa linkkiä vahvistaaksesi tilisi."; +"Scene.ConfirmEmail.Title" = "Viimeinen asia."; +"Scene.Favorite.Title" = "Omat suosikit"; +"Scene.Follower.Footer" = "Seuraajia muilta palvelimilta ei näytetä."; +"Scene.Following.Footer" = "Seurauksia muilta palvelimilta ei näytetä."; +"Scene.HomeTimeline.NavigationBarState.NewPosts" = "Uusia julkaisuja"; +"Scene.HomeTimeline.NavigationBarState.Offline" = "Yhteydetön"; +"Scene.HomeTimeline.NavigationBarState.Published" = "Julkaistu!"; +"Scene.HomeTimeline.NavigationBarState.Publishing" = "Julkaistaan julkaisua..."; +"Scene.HomeTimeline.Title" = "Koti"; +"Scene.Notification.Keyobard.ShowEverything" = "Näytä kaikki"; +"Scene.Notification.Keyobard.ShowMentions" = "Näytä maininnat"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "favorited your post"; +"Scene.Notification.NotificationDescription.FollowedYou" = "followed you"; +"Scene.Notification.NotificationDescription.MentionedYou" = "nämnde dig"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "poll has ended"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "reblogged your post"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "request to follow you"; +"Scene.Notification.Title.Everything" = "Kaikki"; +"Scene.Notification.Title.Mentions" = "Maininnat"; +"Scene.Preview.Keyboard.ClosePreview" = "Sulje esikatselu"; +"Scene.Preview.Keyboard.ShowNext" = "Näytä seuraava"; +"Scene.Preview.Keyboard.ShowPrevious" = "Näytä edellinen"; +"Scene.Profile.Dashboard.Followers" = "seuraajat"; +"Scene.Profile.Dashboard.Following" = "seurataan"; +"Scene.Profile.Dashboard.Posts" = "julkaisut"; +"Scene.Profile.Fields.AddRow" = "Lisää rivi"; +"Scene.Profile.Fields.Placeholder.Content" = "Sisältö"; +"Scene.Profile.Fields.Placeholder.Label" = "Nimi"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "Confirm to block %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "Block Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "Confirm to mute %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "Mute Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "Confirm to unblock %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "Unblock Account"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "Vahvista, että haluat poistaa mykistyksen tililtä %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "Poista tilin mykistys"; +"Scene.Profile.SegmentedControl.About" = "Om"; "Scene.Profile.SegmentedControl.Media" = "Media"; -"Scene.Profile.SegmentedControl.Posts" = "Posts"; -"Scene.Profile.SegmentedControl.Replies" = "Replies"; -"Scene.Register.Error.Item.Agreement" = "Agreement"; -"Scene.Register.Error.Item.Email" = "Email"; +"Scene.Profile.SegmentedControl.Posts" = "Julkaisut"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "Posts and Replies"; +"Scene.Profile.SegmentedControl.Replies" = "Vastaukset"; +"Scene.Register.Error.Item.Agreement" = "Hyväksy"; +"Scene.Register.Error.Item.Email" = "Sähköposti"; "Scene.Register.Error.Item.Locale" = "Locale"; -"Scene.Register.Error.Item.Password" = "Password"; -"Scene.Register.Error.Item.Reason" = "Reason"; -"Scene.Register.Error.Item.Username" = "Användarnamn"; -"Scene.Register.Error.Reason.Accepted" = "%@ must be accepted"; -"Scene.Register.Error.Reason.Blank" = "%@ is required"; -"Scene.Register.Error.Reason.Blocked" = "%@ contains a disallowed email provider"; -"Scene.Register.Error.Reason.Inclusion" = "%@ is not a supported value"; -"Scene.Register.Error.Reason.Invalid" = "%@ is invalid"; +"Scene.Register.Error.Item.Password" = "Salasana"; +"Scene.Register.Error.Item.Reason" = "Syy"; +"Scene.Register.Error.Item.Username" = "Käyttäjänimi"; +"Scene.Register.Error.Reason.Accepted" = "%@ täytyy hyväksyä"; +"Scene.Register.Error.Reason.Blank" = "%@ vaaditaan"; +"Scene.Register.Error.Reason.Blocked" = "%@ sisältää estetyn sähköpostipalveluntarjoajan"; +"Scene.Register.Error.Reason.Inclusion" = "%@ ei ole tuettu arvo"; +"Scene.Register.Error.Reason.Invalid" = "%@ on virheellinen"; "Scene.Register.Error.Reason.Reserved" = "%@ is a reserved keyword"; -"Scene.Register.Error.Reason.Taken" = "%@ is already in use"; -"Scene.Register.Error.Reason.TooLong" = "%@ is too long"; -"Scene.Register.Error.Reason.TooShort" = "%@ is too short"; -"Scene.Register.Error.Reason.Unreachable" = "%@ does not seem to exist"; -"Scene.Register.Error.Special.EmailInvalid" = "This is not a valid email address"; -"Scene.Register.Error.Special.PasswordTooShort" = "Password is too short (must be at least 8 characters)"; -"Scene.Register.Error.Special.UsernameInvalid" = "Username must only contain alphanumeric characters and underscores"; -"Scene.Register.Error.Special.UsernameTooLong" = "Username is too long (can’t be longer than 30 characters)"; -"Scene.Register.Input.Avatar.Delete" = "Radera"; -"Scene.Register.Input.DisplayName.Placeholder" = "display name"; -"Scene.Register.Input.Email.Placeholder" = "email"; -"Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Why do you want to join?"; -"Scene.Register.Input.Password.Hint" = "Your password needs at least eight characters"; -"Scene.Register.Input.Password.Placeholder" = "password"; -"Scene.Register.Input.Username.DuplicatePrompt" = "This username is taken."; -"Scene.Register.Input.Username.Placeholder" = "username"; -"Scene.Register.Title" = "Tell us about you."; -"Scene.Report.Content1" = "Are there any other posts you’d like to add to the report?"; -"Scene.Report.Content2" = "Is there anything the moderators should know about this report?"; -"Scene.Report.Send" = "Send Report"; -"Scene.Report.SkipToSend" = "Send without comment"; -"Scene.Report.Step1" = "Steg 1 av 2"; -"Scene.Report.Step2" = "Steg 2 av 2"; -"Scene.Report.TextPlaceholder" = "Type or paste additional comments"; -"Scene.Report.Title" = "Rapportera %@"; -"Scene.Search.Recommend.Accounts.Description" = "You may like to follow these accounts"; -"Scene.Search.Recommend.Accounts.Follow" = "Följ"; -"Scene.Search.Recommend.Accounts.Title" = "Accounts you might like"; -"Scene.Search.Recommend.ButtonText" = "See All"; -"Scene.Search.Recommend.HashTag.Description" = "Hashtags that are getting quite a bit of attention"; -"Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ people are talking"; -"Scene.Search.Recommend.HashTag.Title" = "Trending on Mastodon"; -"Scene.Search.SearchBar.Cancel" = "Avbryt"; -"Scene.Search.SearchBar.Placeholder" = "Search hashtags and users"; -"Scene.Search.Searching.Clear" = "Clear"; -"Scene.Search.Searching.EmptyState.NoResults" = "Inga resultat"; -"Scene.Search.Searching.RecentSearch" = "Recent searches"; -"Scene.Search.Searching.Segment.All" = "All"; -"Scene.Search.Searching.Segment.Hashtags" = "Hashtags"; -"Scene.Search.Searching.Segment.People" = "People"; -"Scene.Search.Searching.Segment.Posts" = "Posts"; -"Scene.Search.Title" = "Search"; -"Scene.ServerPicker.Button.Category.Academia" = "academia"; -"Scene.ServerPicker.Button.Category.Activism" = "activism"; -"Scene.ServerPicker.Button.Category.All" = "All"; -"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "Kategori: Alla"; -"Scene.ServerPicker.Button.Category.Art" = "art"; -"Scene.ServerPicker.Button.Category.Food" = "food"; -"Scene.ServerPicker.Button.Category.Furry" = "furry"; -"Scene.ServerPicker.Button.Category.Games" = "games"; -"Scene.ServerPicker.Button.Category.General" = "general"; -"Scene.ServerPicker.Button.Category.Journalism" = "journalism"; -"Scene.ServerPicker.Button.Category.Lgbt" = "lgbt"; -"Scene.ServerPicker.Button.Category.Music" = "music"; -"Scene.ServerPicker.Button.Category.Regional" = "regional"; -"Scene.ServerPicker.Button.Category.Tech" = "tech"; -"Scene.ServerPicker.Button.SeeLess" = "See Less"; -"Scene.ServerPicker.Button.SeeMore" = "See More"; -"Scene.ServerPicker.EmptyState.BadNetwork" = "Something went wrong while loading the data. Check your internet connection."; -"Scene.ServerPicker.EmptyState.FindingServers" = "Finding available servers..."; -"Scene.ServerPicker.EmptyState.NoResults" = "Inga resultat"; -"Scene.ServerPicker.Input.Placeholder" = "Find a server or join your own..."; -"Scene.ServerPicker.Label.Category" = "KATEGORI"; -"Scene.ServerPicker.Label.Language" = "SPRÅK"; -"Scene.ServerPicker.Label.Users" = "ANVÄNDARE"; -"Scene.ServerPicker.Title" = "Pick a server, -any server."; -"Scene.ServerRules.Button.Confirm" = "I Agree"; -"Scene.ServerRules.PrivacyPolicy" = "integritetspolicy"; -"Scene.ServerRules.Prompt" = "By continuing, you’re subject to the terms of service and privacy policy for %@."; -"Scene.ServerRules.Subtitle" = "These rules are set by the admins of %@."; -"Scene.ServerRules.TermsOfService" = "terms of service"; -"Scene.ServerRules.Title" = "Some ground rules."; -"Scene.Settings.Footer.MastodonDescription" = "Mastodon is open source software. You can report issues on GitHub at %@ (%@)"; -"Scene.Settings.Keyboard.CloseSettingsWindow" = "Close Settings Window"; -"Scene.Settings.Section.Appearance.Automatic" = "Automatic"; -"Scene.Settings.Section.Appearance.Dark" = "Always Dark"; -"Scene.Settings.Section.Appearance.Light" = "Always Light"; -"Scene.Settings.Section.Appearance.Title" = "Appearance"; -"Scene.Settings.Section.BoringZone.AccountSettings" = "Account Settings"; -"Scene.Settings.Section.BoringZone.Privacy" = "Integritetspolicy"; -"Scene.Settings.Section.BoringZone.Terms" = "Terms of Service"; -"Scene.Settings.Section.BoringZone.Title" = "The Boring Zone"; -"Scene.Settings.Section.Notifications.Boosts" = "Reblogs my post"; +"Scene.Register.Error.Reason.Taken" = "%@ on jo käytössä"; +"Scene.Register.Error.Reason.TooLong" = "%@ on liian pitkä"; +"Scene.Register.Error.Reason.TooShort" = "%@ on liian lyhyt"; +"Scene.Register.Error.Reason.Unreachable" = "%@ ei näytä olevan olemassa"; +"Scene.Register.Error.Special.EmailInvalid" = "Tämä ei ole kelvollinen sähköpostiosoite"; +"Scene.Register.Error.Special.PasswordTooShort" = "Salasana on liian lyhyt (täytyy olla vähintään 8 merkkiä)"; +"Scene.Register.Error.Special.UsernameInvalid" = "Käyttäjänimi voi sisältää ainoastaan aakkosnumerrisia merkkejä ja alaviivoja"; +"Scene.Register.Error.Special.UsernameTooLong" = "Käyttäjänimi on liian pitkä (ei voi olla pidempi kuin 30 merkkiä)"; +"Scene.Register.Input.Avatar.Delete" = "Poista"; +"Scene.Register.Input.DisplayName.Placeholder" = "näyttönimi"; +"Scene.Register.Input.Email.Placeholder" = "sähköposti"; +"Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "Miksi haluat liittyä?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "checked"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "unchecked"; +"Scene.Register.Input.Password.CharacterLimit" = "8 characters"; +"Scene.Register.Input.Password.Hint" = "Salasanassasi on oltava vähintään kahdeksan merkkiä"; +"Scene.Register.Input.Password.Placeholder" = "salasana"; +"Scene.Register.Input.Password.Require" = "Your password needs at least:"; +"Scene.Register.Input.Username.DuplicatePrompt" = "Tämä käyttäjänimi on varattu."; +"Scene.Register.Input.Username.Placeholder" = "käyttäjänimi"; +"Scene.Register.Title" = "Kerro meille sinusta."; +"Scene.Report.Content1" = "Onko julkaisuja, joita haluaisit lisätä ilmiantoon?"; +"Scene.Report.Content2" = "Onko valvojien syytä tietää tästä ilmiannosta?"; +"Scene.Report.ReportSentTitle" = "Thanks for reporting, we’ll look into this."; +"Scene.Report.Reported" = "REPORTED"; +"Scene.Report.Send" = "Lähetä ilmianto"; +"Scene.Report.SkipToSend" = "Lähetä ilman kommentteja"; +"Scene.Report.Step1" = "Vaihe 1/2"; +"Scene.Report.Step2" = "Vaihe 2/2"; +"Scene.Report.TextPlaceholder" = "Kirjoita tai liitä lisäkommentteja"; +"Scene.Report.Title" = "Ilmianna %@"; +"Scene.Report.TitleReport" = "Report"; +"Scene.Search.Recommend.Accounts.Description" = "Haluta ehkä seurata näitä tilejä"; +"Scene.Search.Recommend.Accounts.Follow" = "Seuraa"; +"Scene.Search.Recommend.Accounts.Title" = "Saatat pitää näistä tileistä"; +"Scene.Search.Recommend.ButtonText" = "Katso kaikki"; +"Scene.Search.Recommend.HashTag.Description" = "Hashtagit, jotka saavat melkoisesti huomiota"; +"Scene.Search.Recommend.HashTag.PeopleTalking" = "%@ ihmistä puhuu"; +"Scene.Search.Recommend.HashTag.Title" = "Trendaavat Mastodonissa"; +"Scene.Search.SearchBar.Cancel" = "Kumoa"; +"Scene.Search.SearchBar.Placeholder" = "Haku"; +"Scene.Search.Searching.Clear" = "Tyhjennä"; +"Scene.Search.Searching.EmptyState.NoResults" = "Ei hakutuloksia"; +"Scene.Search.Searching.RecentSearch" = "Viimeaikaiset"; +"Scene.Search.Searching.Segment.All" = "Kaikki"; +"Scene.Search.Searching.Segment.Hashtags" = "Hashtagit"; +"Scene.Search.Searching.Segment.People" = "Tilit"; +"Scene.Search.Searching.Segment.Posts" = "Julkaisut"; +"Scene.Search.Title" = "Haku"; +"Scene.ServerPicker.Button.Category.Academia" = "akateeminen"; +"Scene.ServerPicker.Button.Category.Activism" = "aktivismi"; +"Scene.ServerPicker.Button.Category.All" = "Kaikki"; +"Scene.ServerPicker.Button.Category.AllAccessiblityDescription" = "Kategoria: Kaikki"; +"Scene.ServerPicker.Button.Category.Art" = "taide"; +"Scene.ServerPicker.Button.Category.Food" = "ruoka"; +"Scene.ServerPicker.Button.Category.Furry" = "turri"; +"Scene.ServerPicker.Button.Category.Games" = "pelit"; +"Scene.ServerPicker.Button.Category.General" = "yleinen"; +"Scene.ServerPicker.Button.Category.Journalism" = "journalismi"; +"Scene.ServerPicker.Button.Category.Lgbt" = "hlbt"; +"Scene.ServerPicker.Button.Category.Music" = "musiikki"; +"Scene.ServerPicker.Button.Category.Regional" = "alueellinen"; +"Scene.ServerPicker.Button.Category.Tech" = "tekniikka"; +"Scene.ServerPicker.Button.SeeLess" = "Näytä vähemmän"; +"Scene.ServerPicker.Button.SeeMore" = "Näytä lisää"; +"Scene.ServerPicker.EmptyState.BadNetwork" = "Jokin meni pieleen dataa ladatessa. Tarkista internet-yhteytesi."; +"Scene.ServerPicker.EmptyState.FindingServers" = "Etsistään saatavilla olevia palvelimia..."; +"Scene.ServerPicker.EmptyState.NoResults" = "Ei hakutuloksia"; +"Scene.ServerPicker.Input.Placeholder" = "Etsi palvelin tai liity omaan..."; +"Scene.ServerPicker.Label.Category" = "KATEGORIA"; +"Scene.ServerPicker.Label.Language" = "KIELI"; +"Scene.ServerPicker.Label.Users" = "TILIÄ"; +"Scene.ServerPicker.Subtitle" = "Pick a community based on your interests, region, or a general purpose one."; +"Scene.ServerPicker.SubtitleExtend" = "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual."; +"Scene.ServerPicker.Title" = "Valitse palvelin, +mikä tahansa palvelin."; +"Scene.ServerRules.Button.Confirm" = "Hyväksyn"; +"Scene.ServerRules.PrivacyPolicy" = "tietosuojakäytäntö"; +"Scene.ServerRules.Prompt" = "Jatkamalla, hyväksyt palvelun %@ palveluehdot ja tietosuojakäytönnön."; +"Scene.ServerRules.Subtitle" = "Nämä säännöt ovat %@ -palvelun asettamia."; +"Scene.ServerRules.TermsOfService" = "käyttöehdot"; +"Scene.ServerRules.Title" = "Joitakin perussääntöjä."; +"Scene.Settings.Footer.MastodonDescription" = "Mastodon on avoimen lähdekoodin ohjelmisto. Voit raportoida ongelmasta GitHubissa osoitteessa %@ (%@)"; +"Scene.Settings.Keyboard.CloseSettingsWindow" = "Sulje asetukset"; +"Scene.Settings.Section.Appearance.Automatic" = "Seuraa järjestelmää"; +"Scene.Settings.Section.Appearance.Dark" = "Tumma"; +"Scene.Settings.Section.Appearance.Light" = "Vaalea"; +"Scene.Settings.Section.Appearance.Title" = "Ulkoasu"; +"Scene.Settings.Section.BoringZone.AccountSettings" = "Tiliasetukset"; +"Scene.Settings.Section.BoringZone.Privacy" = "Tietosuojakäytäntö"; +"Scene.Settings.Section.BoringZone.Terms" = "Palveluehdot"; +"Scene.Settings.Section.BoringZone.Title" = "Tylsä alue"; +"Scene.Settings.Section.LookAndFeel.Light" = "Ljust"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "Really Dark"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "Sorta Dark"; +"Scene.Settings.Section.LookAndFeel.Title" = "Look and Feel"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "Use System"; +"Scene.Settings.Section.Notifications.Boosts" = "Omien julkaisujen edelleen jaot"; "Scene.Settings.Section.Notifications.Favorites" = "Favorites my post"; -"Scene.Settings.Section.Notifications.Follows" = "Follows me"; -"Scene.Settings.Section.Notifications.Mentions" = "Mentions me"; -"Scene.Settings.Section.Notifications.Title" = "Notifications"; -"Scene.Settings.Section.Notifications.Trigger.Anyone" = "anyone"; -"Scene.Settings.Section.Notifications.Trigger.Follow" = "anyone I follow"; -"Scene.Settings.Section.Notifications.Trigger.Follower" = "a follower"; -"Scene.Settings.Section.Notifications.Trigger.Noone" = "no one"; -"Scene.Settings.Section.Notifications.Trigger.Title" = "Notify me when"; -"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Disable animated avatars"; -"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Disable animated emojis"; -"Scene.Settings.Section.Preference.Title" = "Preferences"; -"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "True black dark mode"; -"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Use default browser to open links"; -"Scene.Settings.Section.SpicyZone.Clear" = "Clear Media Cache"; -"Scene.Settings.Section.SpicyZone.Signout" = "Logga ut"; -"Scene.Settings.Section.SpicyZone.Title" = "The Spicy Zone"; -"Scene.Settings.Title" = "Inställningar"; -"Scene.SuggestionAccount.FollowExplain" = "When you follow someone, you’ll see their posts in your home feed."; -"Scene.SuggestionAccount.Title" = "Find People to Follow"; -"Scene.Thread.BackTitle" = "Post"; -"Scene.Thread.Title" = "Post from %@"; -"Scene.Welcome.Slogan" = "Social networking -back in your hands."; -"Scene.Wizard.AccessibilityHint" = "Double tap to dismiss this wizard"; -"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Switch between multiple accounts by holding the profile button."; -"Scene.Wizard.NewInMastodon" = "New in Mastodon"; \ No newline at end of file +"Scene.Settings.Section.Notifications.Follows" = "Seuraa minua"; +"Scene.Settings.Section.Notifications.Mentions" = "Mainitsee minut"; +"Scene.Settings.Section.Notifications.Title" = "Ilmoitukset"; +"Scene.Settings.Section.Notifications.Trigger.Anyone" = "kuka tahansa"; +"Scene.Settings.Section.Notifications.Trigger.Follow" = "kuka tahansa, jota seuraan"; +"Scene.Settings.Section.Notifications.Trigger.Follower" = "seuraaja"; +"Scene.Settings.Section.Notifications.Trigger.Noone" = "ei kukaan"; +"Scene.Settings.Section.Notifications.Trigger.Title" = "Ilmoita minulle, kun"; +"Scene.Settings.Section.Preference.DisableAvatarAnimation" = "Poista käytöstä animoidut avatarit"; +"Scene.Settings.Section.Preference.DisableEmojiAnimation" = "Poista käytöstä animoidut emojit"; +"Scene.Settings.Section.Preference.Title" = "Lisäasetukset"; +"Scene.Settings.Section.Preference.TrueBlackDarkMode" = "Todellinen mustan tumma tila"; +"Scene.Settings.Section.Preference.UsingDefaultBrowser" = "Käytä oletusselainta linkkien avaamiseen"; +"Scene.Settings.Section.SpicyZone.Clear" = "Tyhjennä median välimuisti"; +"Scene.Settings.Section.SpicyZone.Signout" = "Kirjaudu ulos"; +"Scene.Settings.Section.SpicyZone.Title" = "Varovainen alue"; +"Scene.Settings.Title" = "Asetukset"; +"Scene.SuggestionAccount.FollowExplain" = "Kun seuraat jotakuta, näet hänen julkaisunsa kotisyötteessäsi."; +"Scene.SuggestionAccount.Title" = "Löydä tilejä seurattavaksi"; +"Scene.Thread.BackTitle" = "Julkaisu"; +"Scene.Thread.Title" = "Julkaisu tililtä %@"; +"Scene.Welcome.GetStarted" = "Kom igång"; +"Scene.Welcome.LogIn" = "Logga in"; +"Scene.Welcome.Slogan" = "Sosiaalinen verkostoituminen +takaisin käsissäsi."; +"Scene.Wizard.AccessibilityHint" = "Hylkää tämä ohjattu toiminto kaksoisnapauttamalla"; +"Scene.Wizard.MultipleAccountSwitchIntroDescription" = "Vaihda useiden tilien välillä pitämällä profiilipainiketta painettuna."; +"Scene.Wizard.NewInMastodon" = "Uutta Mastodonissa"; \ No newline at end of file diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.stringsdict b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.stringsdict index 65316e3d0..eec977a68 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.stringsdict +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/sv_FI.lproj/Localizable.stringsdict @@ -13,15 +13,15 @@ NSStringFormatValueTypeKey ld one - 1 unread notification + 1 lukematon ilmoitus other - %ld unread notification + %ld lukematonta ilmoitusta a11y.plural.count.input_limit_exceeds NSStringLocalizedFormatKey - Input limit exceeds %#@character_count@ + Syöterajoitus ylittyy %#@character_count@ character_count NSStringFormatSpecTypeKey @@ -29,15 +29,15 @@ NSStringFormatValueTypeKey ld one - 1 character + 1 merkki other - %ld characters + %ld merkkiä a11y.plural.count.input_limit_remains NSStringLocalizedFormatKey - Input limit remains %#@character_count@ + Syöterajoitus ylittyy %#@character_count@ päästä character_count NSStringFormatSpecTypeKey @@ -45,9 +45,9 @@ NSStringFormatValueTypeKey ld one - 1 character + 1 merkki other - %ld characters + %ld merkkiä plural.count.metric_formatted.post @@ -61,9 +61,9 @@ NSStringFormatValueTypeKey ld one - post + julkaisu other - posts + julkaisut plural.count.post @@ -77,9 +77,9 @@ NSStringFormatValueTypeKey ld one - 1 post + 1 julkaisu other - %ld posts + %ld julkaisua plural.count.favorite @@ -93,9 +93,9 @@ NSStringFormatValueTypeKey ld one - 1 favorite + 1 suosikki other - %ld favorites + %ld suosikkia plural.count.reblog @@ -109,9 +109,9 @@ NSStringFormatValueTypeKey ld one - 1 reblog + 1 edelleen jako other - %ld reblogs + %ld edelleen jakoa plural.count.vote @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 vote + 1 ääni other - %ld votes + %ld ääntä plural.count.voter @@ -141,9 +141,9 @@ NSStringFormatValueTypeKey ld one - 1 voter + 1 vastaaja other - %ld voters + %ld vastaajaa plural.people_talking @@ -157,9 +157,9 @@ NSStringFormatValueTypeKey ld one - 1 people talking + 1 ihminen puhuu other - %ld people talking + %ld ihmistä puhuu plural.count.following @@ -173,9 +173,9 @@ NSStringFormatValueTypeKey ld one - 1 following + 1 seurataan other - %ld following + %ld seurataan plural.count.follower @@ -189,9 +189,9 @@ NSStringFormatValueTypeKey ld one - 1 följare + 1 seuraaja other - %ld följare + %ld seuraajaa date.year.left @@ -205,9 +205,9 @@ NSStringFormatValueTypeKey ld one - 1 year left + 1 vuosi jäljellä other - %ld years left + %ld vuotta jäljellä date.month.left @@ -221,9 +221,9 @@ NSStringFormatValueTypeKey ld one - 1 months left + 1 kuukausi jäljellä other - %ld months left + %ld kuukautta jäljellä date.day.left @@ -237,9 +237,9 @@ NSStringFormatValueTypeKey ld one - 1 day left + 1 päivä jäljellä other - %ld days left + %ld päivää jäljellä date.hour.left @@ -253,9 +253,9 @@ NSStringFormatValueTypeKey ld one - 1 hour left + 1 tunti jäljellä other - %ld hours left + %ld tuntia jäljellä date.minute.left @@ -269,9 +269,9 @@ NSStringFormatValueTypeKey ld one - 1 minute left + 1 minuutti jäljellä other - %ld minutes left + %ld minuuttia jäljellä date.second.left @@ -285,9 +285,9 @@ NSStringFormatValueTypeKey ld one - 1 second left + 1 sekuntti other - %ld seconds left + %ld sekunttia jäljellä date.year.ago.abbr @@ -301,9 +301,9 @@ NSStringFormatValueTypeKey ld one - 1y ago + 1v sitten other - %ldy ago + %ldv sitten date.month.ago.abbr @@ -317,9 +317,9 @@ NSStringFormatValueTypeKey ld one - 1M ago + 1kk sitten other - %ldM ago + %ldkk sitten date.day.ago.abbr @@ -333,9 +333,9 @@ NSStringFormatValueTypeKey ld one - 1d ago + 1pv sitten other - %ldd ago + %ldpv sitten date.hour.ago.abbr @@ -349,9 +349,9 @@ NSStringFormatValueTypeKey ld one - 1h ago + 1t sitten other - %ldh ago + %ldt sitten date.minute.ago.abbr @@ -365,9 +365,9 @@ NSStringFormatValueTypeKey ld one - 1m ago + 1min sitten other - %ldm ago + %ldmin sitten date.second.ago.abbr @@ -381,9 +381,9 @@ NSStringFormatValueTypeKey ld one - 1s ago + 1s sitten other - %lds ago + %lds sitten diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings index 1bd954fe5..c323d415a 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/th.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "ล้างแคช"; "Common.Alerts.Common.PleaseTryAgain" = "โปรดลองอีกครั้ง"; "Common.Alerts.Common.PleaseTryAgainLater" = "โปรดลองอีกครั้งในภายหลัง"; -"Common.Alerts.DeletePost.Delete" = "ลบ"; +"Common.Alerts.DeletePost.Message" = "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?"; "Common.Alerts.DeletePost.Title" = "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?"; "Common.Alerts.DiscardPostContent.Message" = "ยืนยันที่จะละทิ้งเนื้อหาโพสต์ที่เขียน"; "Common.Alerts.DiscardPostContent.Title" = "ละทิ้งแบบร่าง"; @@ -41,6 +41,7 @@ "Common.Controls.Actions.Next" = "ถัดไป"; "Common.Controls.Actions.Ok" = "ตกลง"; "Common.Controls.Actions.Open" = "เปิด"; +"Common.Controls.Actions.OpenInBrowser" = "เปิดในเบราว์เซอร์"; "Common.Controls.Actions.OpenInSafari" = "เปิดใน Safari"; "Common.Controls.Actions.Preview" = "แสดงตัวอย่าง"; "Common.Controls.Actions.Previous" = "ก่อนหน้า"; @@ -93,6 +94,7 @@ "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "เปิด/ปิดรายการโปรดในโพสต์"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "เปิด/ปิดการดันในโพสต์"; "Common.Controls.Status.Actions.Favorite" = "ชื่นชอบ"; +"Common.Controls.Status.Actions.Hide" = "ซ่อน"; "Common.Controls.Status.Actions.Menu" = "เมนู"; "Common.Controls.Status.Actions.Reblog" = "ดัน"; "Common.Controls.Status.Actions.Reply" = "ตอบกลับ"; @@ -112,6 +114,10 @@ "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ ได้ดัน"; "Common.Controls.Status.UserRepliedTo" = "ตอบกลับ %@"; +"Common.Controls.Status.Visibility.Direct" = "เฉพาะผู้ใช้ที่กล่าวถึงเท่านั้นที่สามารถเห็นโพสต์นี้"; +"Common.Controls.Status.Visibility.Private" = "เฉพาะผู้ติดตามของเขาเท่านั้นที่สามารถเห็นโพสต์นี้"; +"Common.Controls.Status.Visibility.PrivateFromMe" = "เฉพาะผู้ติดตามของฉันเท่านั้นที่สามารถเห็นโพสต์นี้"; +"Common.Controls.Status.Visibility.Unlisted" = "ทุกคนสามารถเห็นโพสต์นี้แต่ไม่แสดงในเส้นเวลาสาธารณะ"; "Common.Controls.Tabs.Home" = "หน้าแรก"; "Common.Controls.Tabs.Notification" = "การแจ้งเตือน"; "Common.Controls.Tabs.Profile" = "โปรไฟล์"; @@ -178,8 +184,8 @@ "Scene.Compose.Visibility.Private" = "ผู้ติดตามเท่านั้น"; "Scene.Compose.Visibility.Public" = "สาธารณะ"; "Scene.Compose.Visibility.Unlisted" = "ไม่อยู่ในรายการ"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "ฉันไม่เคยได้รับอีเมล"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "เปิดแอปอีเมล"; +"Scene.ConfirmEmail.Button.Resend" = "ส่งใหม่"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "หากคุณยังไม่ได้รับอีเมล ตรวจสอบว่าที่อยู่อีเมลของคุณถูกต้อง รวมถึงโฟลเดอร์อีเมลขยะของคุณ"; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "ส่งอีเมลใหม่"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "ตรวจสอบอีเมลของคุณ"; @@ -200,14 +206,14 @@ "Scene.HomeTimeline.Title" = "หน้าแรก"; "Scene.Notification.Keyobard.ShowEverything" = "แสดงทุกอย่าง"; "Scene.Notification.Keyobard.ShowMentions" = "แสดงการกล่าวถึง"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "ได้ชื่นชอบโพสต์ของคุณ"; +"Scene.Notification.NotificationDescription.FollowedYou" = "ได้ติดตามคุณ"; +"Scene.Notification.NotificationDescription.MentionedYou" = "ได้กล่าวถึงคุณ"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "การสำรวจความคิดเห็นได้สิ้นสุดแล้ว"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "ได้ดันโพสต์ของคุณ"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "ขอติดตามคุณ"; "Scene.Notification.Title.Everything" = "ทุกอย่าง"; "Scene.Notification.Title.Mentions" = "การกล่าวถึง"; -"Scene.Notification.UserFavorited Your Post" = "%@ ได้ชื่นชอบโพสต์ของคุณ"; -"Scene.Notification.UserFollowedYou" = "%@ ได้ติดตามคุณ"; -"Scene.Notification.UserMentionedYou" = "%@ ได้กล่าวถึงคุณ"; -"Scene.Notification.UserRebloggedYourPost" = "%@ ได้ดันโพสต์ของคุณ"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ ได้ขอติดตามคุณ"; -"Scene.Notification.UserYourPollHasEnded" = "%@ โพลของคุณได้สิ้นสุดแล้ว"; "Scene.Preview.Keyboard.ClosePreview" = "ปิดตัวอย่าง"; "Scene.Preview.Keyboard.ShowNext" = "แสดงถัดไป"; "Scene.Preview.Keyboard.ShowPrevious" = "แสดงก่อนหน้า"; @@ -217,12 +223,18 @@ "Scene.Profile.Fields.AddRow" = "เพิ่มแถว"; "Scene.Profile.Fields.Placeholder.Content" = "เนื้อหา"; "Scene.Profile.Fields.Placeholder.Label" = "ป้ายชื่อ"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "ยืนยันเพื่อเลิกปิดกั้น %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "เลิกปิดกั้นบัญชี"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "ยืนยันเพื่อปิดกั้น %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "ปิดกั้นบัญชี"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "ยืนยันเพื่อซ่อน %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "ซ่อนบัญชี"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "ยืนยันเพื่อเลิกปิดกั้น %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "เลิกปิดกั้นบัญชี"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "ยืนยันเพื่อเลิกซ่อน %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "เลิกซ่อนบัญชี"; +"Scene.Profile.SegmentedControl.About" = "เกี่ยวกับ"; "Scene.Profile.SegmentedControl.Media" = "สื่อ"; "Scene.Profile.SegmentedControl.Posts" = "โพสต์"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "โพสต์และการตอบกลับ"; "Scene.Profile.SegmentedControl.Replies" = "การตอบกลับ"; "Scene.Register.Error.Item.Agreement" = "ข้อตกลง"; "Scene.Register.Error.Item.Email" = "อีเมล"; @@ -248,19 +260,26 @@ "Scene.Register.Input.DisplayName.Placeholder" = "ชื่อที่แสดง"; "Scene.Register.Input.Email.Placeholder" = "อีเมล"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "ทำไมคุณจึงต้องการเข้าร่วม?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "กาเครื่องหมายแล้ว"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "ไม่ได้กาเครื่องหมาย"; +"Scene.Register.Input.Password.CharacterLimit" = "8 ตัวอักษร"; "Scene.Register.Input.Password.Hint" = "รหัสผ่านของคุณต้องมีอย่างน้อยแปดตัวอักษร"; "Scene.Register.Input.Password.Placeholder" = "รหัสผ่าน"; +"Scene.Register.Input.Password.Require" = "รหัสผ่านของคุณต้องมีอย่างน้อย:"; "Scene.Register.Input.Username.DuplicatePrompt" = "ชื่อผู้ใช้นี้ถูกใช้ไปแล้ว"; "Scene.Register.Input.Username.Placeholder" = "ชื่อผู้ใช้"; "Scene.Register.Title" = "บอกเราเกี่ยวกับคุณ"; "Scene.Report.Content1" = "มีโพสต์อื่นใดที่คุณต้องการเพิ่มไปยังรายงานหรือไม่?"; "Scene.Report.Content2" = "มีสิ่งใดที่ผู้ควบคุมควรทราบเกี่ยวกับรายงานนี้หรือไม่?"; +"Scene.Report.ReportSentTitle" = "ขอบคุณสำหรับการรายงาน เราจะตรวจสอบสิ่งนี้"; +"Scene.Report.Reported" = "รายงานแล้ว"; "Scene.Report.Send" = "ส่งรายงาน"; "Scene.Report.SkipToSend" = "ส่งโดยไม่มีความคิดเห็น"; "Scene.Report.Step1" = "ขั้นตอนที่ 1 จาก 2"; "Scene.Report.Step2" = "ขั้นตอนที่ 2 จาก 2"; "Scene.Report.TextPlaceholder" = "พิมพ์หรือวางความคิดเห็นเพิ่มเติม"; "Scene.Report.Title" = "รายงาน %@"; +"Scene.Report.TitleReport" = "รายงาน"; "Scene.Search.Recommend.Accounts.Description" = "คุณอาจต้องการติดตามบัญชีเหล่านี้"; "Scene.Search.Recommend.Accounts.Follow" = "ติดตาม"; "Scene.Search.Recommend.Accounts.Title" = "บัญชีที่คุณอาจชอบ"; @@ -301,6 +320,8 @@ "Scene.ServerPicker.Label.Category" = "หมวดหมู่"; "Scene.ServerPicker.Label.Language" = "ภาษา"; "Scene.ServerPicker.Label.Users" = "ผู้ใช้"; +"Scene.ServerPicker.Subtitle" = "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ"; +"Scene.ServerPicker.SubtitleExtend" = "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละชุมชนดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระโดยสิ้นเชิง"; "Scene.ServerPicker.Title" = "เลือกเซิร์ฟเวอร์ อันไหนก็ได้"; "Scene.ServerRules.Button.Confirm" = "ฉันเห็นด้วย"; @@ -319,6 +340,11 @@ "Scene.Settings.Section.BoringZone.Privacy" = "นโยบายความเป็นส่วนตัว"; "Scene.Settings.Section.BoringZone.Terms" = "เงื่อนไขการให้บริการ"; "Scene.Settings.Section.BoringZone.Title" = "โซนน่าเบื่อ"; +"Scene.Settings.Section.LookAndFeel.Light" = "สว่าง"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "มืดมาก"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "ค่อนข้างมืด"; +"Scene.Settings.Section.LookAndFeel.Title" = "ลักษณะที่แสดง"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "ใช้ของระบบ"; "Scene.Settings.Section.Notifications.Boosts" = "ดันโพสต์ของฉัน"; "Scene.Settings.Section.Notifications.Favorites" = "ชื่นชอบโพสต์ของฉัน"; "Scene.Settings.Section.Notifications.Follows" = "ติดตามฉัน"; @@ -342,6 +368,8 @@ "Scene.SuggestionAccount.Title" = "ค้นหาผู้คนที่จะติดตาม"; "Scene.Thread.BackTitle" = "โพสต์"; "Scene.Thread.Title" = "โพสต์จาก %@"; +"Scene.Welcome.GetStarted" = "เริ่มต้นใช้งาน"; +"Scene.Welcome.LogIn" = "เข้าสู่ระบบ"; "Scene.Welcome.Slogan" = "ให้เครือข่ายสังคม กลับมาอยู่ในมือของคุณ"; "Scene.Wizard.AccessibilityHint" = "แตะสองครั้งเพื่อปิดตัวช่วยสร้างนี้"; diff --git a/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings index 7a6b02032..7ad984f19 100644 --- a/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings +++ b/MastodonSDK/Sources/MastodonLocalization/Resources/zh-Hans.lproj/Localizable.strings @@ -4,7 +4,7 @@ "Common.Alerts.CleanCache.Title" = "清除缓存"; "Common.Alerts.Common.PleaseTryAgain" = "请重试。"; "Common.Alerts.Common.PleaseTryAgainLater" = "请稍后重试。"; -"Common.Alerts.DeletePost.Delete" = "删除"; +"Common.Alerts.DeletePost.Message" = "确定要删除这个帖子吗?"; "Common.Alerts.DeletePost.Title" = "确定要删除这条消息吗?"; "Common.Alerts.DiscardPostContent.Message" = "确认要丢弃正在编辑的内容"; "Common.Alerts.DiscardPostContent.Title" = "丢弃草案"; @@ -41,6 +41,7 @@ "Common.Controls.Actions.Next" = "下一个"; "Common.Controls.Actions.Ok" = "好的"; "Common.Controls.Actions.Open" = "打开"; +"Common.Controls.Actions.OpenInBrowser" = "在浏览器中打开"; "Common.Controls.Actions.OpenInSafari" = "在 Safari 中打开"; "Common.Controls.Actions.Preview" = "预览"; "Common.Controls.Actions.Previous" = "上一个"; @@ -93,6 +94,7 @@ "Common.Controls.Keyboard.Timeline.ToggleFavorite" = "喜欢此帖子"; "Common.Controls.Keyboard.Timeline.ToggleReblog" = "转发此帖子"; "Common.Controls.Status.Actions.Favorite" = "喜欢"; +"Common.Controls.Status.Actions.Hide" = "隐藏"; "Common.Controls.Status.Actions.Menu" = "菜单"; "Common.Controls.Status.Actions.Reblog" = "转发"; "Common.Controls.Status.Actions.Reply" = "回复"; @@ -112,6 +114,10 @@ "Common.Controls.Status.Tag.Url" = "URL"; "Common.Controls.Status.UserReblogged" = "%@ 转发"; "Common.Controls.Status.UserRepliedTo" = "回复给 %@"; +"Common.Controls.Status.Visibility.Direct" = "只有提到的用户才能看到此帖子。"; +"Common.Controls.Status.Visibility.Private" = "只有作者的关注者才能看到此帖子。"; +"Common.Controls.Status.Visibility.PrivateFromMe" = "只有我的关注者才能看到此帖子。"; +"Common.Controls.Status.Visibility.Unlisted" = "任何人都可以看到这个帖子,但不会在公开的时间线中显示。"; "Common.Controls.Tabs.Home" = "主页"; "Common.Controls.Tabs.Notification" = "通知"; "Common.Controls.Tabs.Profile" = "个人资料"; @@ -178,8 +184,8 @@ "Scene.Compose.Visibility.Private" = "仅关注者"; "Scene.Compose.Visibility.Public" = "公开"; "Scene.Compose.Visibility.Unlisted" = "不公开"; -"Scene.ConfirmEmail.Button.DontReceiveEmail" = "我还没有收到电子邮件"; "Scene.ConfirmEmail.Button.OpenEmailApp" = "打开电子邮件应用"; +"Scene.ConfirmEmail.Button.Resend" = "重新发送"; "Scene.ConfirmEmail.DontReceiveEmail.Description" = "检查您的电子邮件地址是否正确,同时请检查你的垃圾箱。"; "Scene.ConfirmEmail.DontReceiveEmail.ResendEmail" = "重新发送邮件"; "Scene.ConfirmEmail.DontReceiveEmail.Title" = "请检查你的邮箱。"; @@ -200,14 +206,14 @@ "Scene.HomeTimeline.Title" = "主页"; "Scene.Notification.Keyobard.ShowEverything" = "显示全部"; "Scene.Notification.Keyobard.ShowMentions" = "显示提及"; +"Scene.Notification.NotificationDescription.FavoritedYourPost" = "喜欢了你的帖子"; +"Scene.Notification.NotificationDescription.FollowedYou" = "关注了你"; +"Scene.Notification.NotificationDescription.MentionedYou" = "提及了你"; +"Scene.Notification.NotificationDescription.PollHasEnded" = "投票已结束"; +"Scene.Notification.NotificationDescription.RebloggedYourPost" = "转发了你的帖子"; +"Scene.Notification.NotificationDescription.RequestToFollowYou" = "关注请求"; "Scene.Notification.Title.Everything" = "全部"; "Scene.Notification.Title.Mentions" = "提及"; -"Scene.Notification.UserFavorited Your Post" = "%@ 喜欢了你的帖子"; -"Scene.Notification.UserFollowedYou" = "%@ 关注了你"; -"Scene.Notification.UserMentionedYou" = "%@ 提及了你"; -"Scene.Notification.UserRebloggedYourPost" = "%@ 转发了你的帖子"; -"Scene.Notification.UserRequestedToFollowYou" = "%@ 向你发送了关注请求"; -"Scene.Notification.UserYourPollHasEnded" = "%@ 你的投票已经结束"; "Scene.Preview.Keyboard.ClosePreview" = "关闭预览"; "Scene.Preview.Keyboard.ShowNext" = "显示下一个"; "Scene.Preview.Keyboard.ShowPrevious" = "显示前一个"; @@ -217,12 +223,18 @@ "Scene.Profile.Fields.AddRow" = "添加"; "Scene.Profile.Fields.Placeholder.Content" = "内容"; "Scene.Profile.Fields.Placeholder.Label" = "标签"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Message" = "确认取消屏蔽 %@"; -"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.Title" = "解除屏蔽帐户"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Message" = "确认屏蔽 %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmBlockUser.Title" = "屏蔽帐户"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Message" = "确认静音 %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmMuteUser.Title" = "静音账户"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Message" = "确认取消屏蔽 %@"; +"Scene.Profile.RelationshipActionAlert.ConfirmUnblockUser.Title" = "解除屏蔽帐户"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Message" = "确认取消静音 %@"; "Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.Title" = "取消静音账户"; +"Scene.Profile.SegmentedControl.About" = "关于"; "Scene.Profile.SegmentedControl.Media" = "媒体"; "Scene.Profile.SegmentedControl.Posts" = "帖子"; +"Scene.Profile.SegmentedControl.PostsAndReplies" = "帖子与回复"; "Scene.Profile.SegmentedControl.Replies" = "回复"; "Scene.Register.Error.Item.Agreement" = "协议"; "Scene.Register.Error.Item.Email" = "电子邮箱"; @@ -248,19 +260,26 @@ "Scene.Register.Input.DisplayName.Placeholder" = "昵称"; "Scene.Register.Input.Email.Placeholder" = "电子邮箱"; "Scene.Register.Input.Invite.RegistrationUserInviteRequest" = "加入的理由是?"; +"Scene.Register.Input.Password.Accessibility.Checked" = "已选中"; +"Scene.Register.Input.Password.Accessibility.Unchecked" = "未选中"; +"Scene.Register.Input.Password.CharacterLimit" = "8 个字符"; "Scene.Register.Input.Password.Hint" = "密码长度至少为 8 个字符"; "Scene.Register.Input.Password.Placeholder" = "密码"; +"Scene.Register.Input.Password.Require" = "您的密码至少需要:"; "Scene.Register.Input.Username.DuplicatePrompt" = "此用户名已被使用"; "Scene.Register.Input.Username.Placeholder" = "用户名"; "Scene.Register.Title" = "介绍一下你自己吧"; "Scene.Report.Content1" = "是否有帖子需要举报?"; "Scene.Report.Content2" = "是否有关于此举报的详细描述信息?"; +"Scene.Report.ReportSentTitle" = "感谢提交举报,我们将会进行处理。"; +"Scene.Report.Reported" = "已报告"; "Scene.Report.Send" = "发送举报"; "Scene.Report.SkipToSend" = "直接发送"; "Scene.Report.Step1" = "步骤 1 / 2"; "Scene.Report.Step2" = "步骤 2 / 2"; "Scene.Report.TextPlaceholder" = "输入或粘贴额外的注释"; "Scene.Report.Title" = "举报 %@"; +"Scene.Report.TitleReport" = "举报"; "Scene.Search.Recommend.Accounts.Description" = "你可能会喜欢关注这些用户"; "Scene.Search.Recommend.Accounts.Follow" = "关注"; "Scene.Search.Recommend.Accounts.Title" = "你可能感兴趣的用户"; @@ -301,6 +320,8 @@ "Scene.ServerPicker.Label.Category" = "类别"; "Scene.ServerPicker.Label.Language" = "语言"; "Scene.ServerPicker.Label.Users" = "用户"; +"Scene.ServerPicker.Subtitle" = "根据你的兴趣、区域或一般目的选择一个社区。"; +"Scene.ServerPicker.SubtitleExtend" = "根据你的兴趣、区域或一般目的选择一个社区。每个社区都由完全独立的组织或个人管理。"; "Scene.ServerPicker.Title" = "挑选一个服务器, 任意服务器。"; "Scene.ServerRules.Button.Confirm" = "我同意"; @@ -319,6 +340,11 @@ "Scene.Settings.Section.BoringZone.Privacy" = "隐私政策"; "Scene.Settings.Section.BoringZone.Terms" = "服务条款"; "Scene.Settings.Section.BoringZone.Title" = "The Boring Zone"; +"Scene.Settings.Section.LookAndFeel.Light" = "浅色"; +"Scene.Settings.Section.LookAndFeel.ReallyDark" = "暗色"; +"Scene.Settings.Section.LookAndFeel.SortaDark" = "深色"; +"Scene.Settings.Section.LookAndFeel.Title" = "外观和风格"; +"Scene.Settings.Section.LookAndFeel.UseSystem" = "跟随系统"; "Scene.Settings.Section.Notifications.Boosts" = "转发我的帖子"; "Scene.Settings.Section.Notifications.Favorites" = "喜欢我的帖子"; "Scene.Settings.Section.Notifications.Follows" = "关注我"; @@ -342,6 +368,8 @@ "Scene.SuggestionAccount.Title" = "查看推荐关注的用户"; "Scene.Thread.BackTitle" = "帖子"; "Scene.Thread.Title" = "来自 %@ 的帖子"; +"Scene.Welcome.GetStarted" = "开始使用"; +"Scene.Welcome.LogIn" = "登录"; "Scene.Welcome.Slogan" = "社交网络 回到你的手中。"; "Scene.Wizard.AccessibilityHint" = "双击关闭此向导"; diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift index 9b5aa5a00..b7056a7a8 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerBannerView.swift @@ -6,8 +6,9 @@ // import UIKit -import MastodonAsset import MetaTextKit +import MastodonAsset +import MastodonLocalization public final class SpoilerBannerView: UIView { @@ -22,7 +23,7 @@ public final class SpoilerBannerView: UIView { let label = UILabel() label.textColor = Asset.Colors.Label.primary.color label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .regular)) - label.text = "Hide" // TODO: i18n + label.text = L10n.Common.Controls.Status.Actions.hide return label }() From 7f597c2082273e134d6fa7d9a152816fbfd0250f Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 14:54:59 +0800 Subject: [PATCH 273/374] fix: setting switch use wrong tint color issue --- .../Cell/SettingsToggleTableViewCell.swift | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Mastodon/Scene/Settings/Cell/SettingsToggleTableViewCell.swift b/Mastodon/Scene/Settings/Cell/SettingsToggleTableViewCell.swift index 419f24d61..4926dbfce 100644 --- a/Mastodon/Scene/Settings/Cell/SettingsToggleTableViewCell.swift +++ b/Mastodon/Scene/Settings/Cell/SettingsToggleTableViewCell.swift @@ -20,7 +20,6 @@ class SettingsToggleTableViewCell: UITableViewCell { private(set) lazy var switchButton: UISwitch = { let view = UISwitch(frame:.zero) - view.onTintColor = contentView.window?.tintColor ?? .label return view }() @@ -49,8 +48,15 @@ class SettingsToggleTableViewCell: UITableViewCell { accessoryView = switchButton textLabel?.numberOfLines = 0 + updateAppearance() switchButton.addTarget(self, action: #selector(switchValueDidChange(sender:)), for: .valueChanged) } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + updateAppearance() + } } @@ -72,4 +78,16 @@ extension SettingsToggleTableViewCell { switchButton.isOn = enabled ?? false } + private func updateAppearance() { + switchButton.onTintColor = { + switch traitCollection.userInterfaceStyle { + case .dark: + // set default green for Dark Mode + return nil + default: + // set tint black for Light Mode + return self.contentView.window?.tintColor ?? nil + } + }() + } } From 0b1dc13894a831e47db1ed94658798477cc0331c Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 16:25:29 +0800 Subject: [PATCH 274/374] chore: restore RTL layout for post content --- .../Content/StatusView+Configuration.swift | 2 + .../View/Content/StatusView+ViewModel.swift | 118 +++++------------- 2 files changed, 35 insertions(+), 85 deletions(-) diff --git a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift index 85105c2c1..6d4572c8b 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift @@ -245,6 +245,8 @@ extension StatusView { } else { viewModel.spoilerContent = nil } + // language + viewModel.language = (status.reblog ?? status).language // content do { let content = MastodonContent(content: status.content, emojis: status.emojis.asDictionary) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index 39a802dbc..cc162a94d 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -50,6 +50,7 @@ extension StatusView { // Status @Published public var content: MetaContent? + @Published public var language: String? // Media @Published public var mediaViewConfigurations: [MediaView.Configuration] = [] @@ -273,12 +274,13 @@ extension StatusView.ViewModel { } private func bindContent(statusView: StatusView) { - Publishers.CombineLatest3( + Publishers.CombineLatest4( $spoilerContent, $content, + $language, $isContentReveal.removeDuplicates() ) - .sink { spoilerContent, content, isContentReveal in + .sink { spoilerContent, content, language, isContentReveal in if let spoilerContent = spoilerContent { statusView.spoilerOverlayView.spoilerMetaLabel.configure(content: spoilerContent) // statusView.spoilerBannerView.label.configure(content: spoilerContent) @@ -289,6 +291,15 @@ extension StatusView.ViewModel { // statusView.spoilerBannerView.label.reset() } + let paragraphStyle = statusView.contentMetaText.paragraphStyle + if let language = language { + let direction = Locale.characterDirection(forLanguage: language) + paragraphStyle.alignment = direction == .rightToLeft ? .right : .left + } else { + paragraphStyle.alignment = .natural + } + statusView.contentMetaText.paragraphStyle = paragraphStyle + if let content = content { statusView.contentMetaText.configure( content: content, @@ -310,95 +321,32 @@ extension StatusView.ViewModel { self.logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): isContentReveal: \(isContentReveal)") } .store(in: &disposeBag) - $isSensitive - .sink { isSensitive in - guard isSensitive else { return } - statusView.setContentSensitiveeToggleButtonDisplay() - } - .store(in: &disposeBag) - // visibility - Publishers.CombineLatest( - $visibility, - $isMyself - ) - .sink { visibility, isMyself in - switch visibility { - case .public: - break - case .unlisted: - statusView.statusVisibilityView.label.text = "Everyone can see this post but not display in the public timeline." - statusView.setVisibilityDisplay() - case .private: - statusView.statusVisibilityView.label.text = isMyself ? "Only my followers can see this post." : "Only their followers can see this post." - statusView.setVisibilityDisplay() - case .direct: - statusView.statusVisibilityView.label.text = "Only mentioned user can see this post." - statusView.setVisibilityDisplay() - case ._other: - break - } - } - .store(in: &disposeBag) + // $isSensitive // .sink { isSensitive in -// if isSensitive { -// statusView.setStatusSpoilerBannerViewDisplay() -// } +// guard isSensitive else { return } +// statusView.setContentSensitiveeToggleButtonDisplay() // } // .store(in: &disposeBag) -// $spoilerContent -// .sink { metaContent in -// guard let metaContent = metaContent else { -// statusView.spoilerContentTextView.reset() -// return -// } -// statusView.spoilerContentTextView.configure(content: metaContent) -// statusView.setSpoilerDisplay() -// } -// .store(in: &disposeBag) -// +// // visibility // Publishers.CombineLatest( -// $isContentReveal, -// $spoilerContent +// $visibility, +// $isMyself // ) -// .receive(on: DispatchQueue.main) -// .sink { [weak self] isContentReveal, spoilerContent in -// guard let self = self else { return } -// guard spoilerContent != nil else { -// // ignore reveal state when no spoiler exists -// statusView.contentTextView.isHidden = false -// return -// } -// -// statusView.contentTextView.isHidden = !isContentReveal -// self.contentRevealChangePublisher.send() -// } -// .store(in: &disposeBag) -// $source -// .sink { source in -// statusView.metricsDashboardView.sourceLabel.text = source ?? "" -// } -// .store(in: &disposeBag) -// // dashboard -// Publishers.CombineLatest4( -// $replyCount, -// $reblogCount, -// $quoteCount, -// $favoriteCount -// ) -// .sink { replyCount, reblogCount, quoteCount, favoriteCount in -// switch statusView.style { -// case .plain: -// statusView.setMetricsDisplay() -// -// statusView.metricsDashboardView.setupReply(count: replyCount) -// statusView.metricsDashboardView.setupRepost(count: reblogCount) -// statusView.metricsDashboardView.setupQuote(count: quoteCount) -// statusView.metricsDashboardView.setupLike(count: favoriteCount) -// -// let needsDashboardDisplay = replyCount > 0 || reblogCount > 0 || quoteCount > 0 || favoriteCount > 0 -// statusView.metricsDashboardView.dashboardContainer.isHidden = !needsDashboardDisplay -// default: +// .sink { visibility, isMyself in +// switch visibility { +// case .public: +// break +// case .unlisted: +// statusView.statusVisibilityView.label.text = "Everyone can see this post but not display in the public timeline." +// statusView.setVisibilityDisplay() +// case .private: +// statusView.statusVisibilityView.label.text = isMyself ? "Only my followers can see this post." : "Only their followers can see this post." +// statusView.setVisibilityDisplay() +// case .direct: +// statusView.statusVisibilityView.label.text = "Only mentioned user can see this post." +// statusView.setVisibilityDisplay() +// case ._other: // break // } // } From 94470c9f1b44b6ca3c6cfa71ebb0907495df5432 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 17:13:02 +0800 Subject: [PATCH 275/374] chore: update profile relationship button UI --- .../Header/View/ProfileHeaderView.swift | 12 +++++- .../ProfileRelationshipActionButton.swift | 11 ++++-- .../Scene/Profile/ProfileViewController.swift | 2 +- Mastodon/Scene/Profile/ProfileViewModel.swift | 1 + .../Contents.json | 6 +-- .../Profile/RelationshipButton/Contents.json | 9 +++++ .../background.colorset/Contents.json | 38 +++++++++++++++++++ .../Contents.json | 38 +++++++++++++++++++ .../MastodonAsset/Generated/Assets.swift | 4 ++ 9 files changed, 112 insertions(+), 9 deletions(-) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.colorset/Contents.json diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index aadb0d70f..1c667cbba 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -154,6 +154,8 @@ final class ProfileHeaderView: UIView { }() let statusDashboardView = ProfileStatusDashboardView() + + let relationshipActionButtonShadowContainer = ShadowBackgroundContainer() let relationshipActionButton: ProfileRelationshipActionButton = { let button = ProfileRelationshipActionButton() button.titleLabel?.font = .systemFont(ofSize: 17, weight: .semibold) @@ -357,7 +359,7 @@ extension ProfileHeaderView { avatarImageViewBackgroundView.bottomAnchor.constraint(equalTo: dashboardContainer.bottomAnchor), ]) - // authorContainer: H - [ nameContainer | relationshipActionButton ] + // authorContainer: H - [ nameContainer | relationshipActionButtonShadowContainer ] let authorContainer = UIStackView() authorContainer.axis = .horizontal authorContainer.alignment = .top @@ -402,9 +404,15 @@ extension ProfileHeaderView { nameContainerStackView.addArrangedSubview(usernameLabel) authorContainer.addArrangedSubview(nameContainerStackView) + authorContainer.addArrangedSubview(relationshipActionButtonShadowContainer) + relationshipActionButton.translatesAutoresizingMaskIntoConstraints = false - authorContainer.addArrangedSubview(relationshipActionButton) + relationshipActionButtonShadowContainer.addSubview(relationshipActionButton) NSLayoutConstraint.activate([ + relationshipActionButton.topAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.topAnchor), + relationshipActionButton.leadingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.leadingAnchor), + relationshipActionButton.trailingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.trailingAnchor), + relationshipActionButton.bottomAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.bottomAnchor), relationshipActionButton.widthAnchor.constraint(greaterThanOrEqualToConstant: ProfileHeaderView.friendshipActionButtonSize.width).priority(.required - 1), relationshipActionButton.heightAnchor.constraint(equalToConstant: ProfileHeaderView.friendshipActionButtonSize.height).priority(.defaultHigh), ]) diff --git a/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift b/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift index fffb061b4..8935783fc 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift @@ -7,6 +7,7 @@ import UIKit import MastodonUI +import MastodonAsset final class ProfileRelationshipActionButton: RoundedEdgesButton { @@ -30,6 +31,7 @@ final class ProfileRelationshipActionButton: RoundedEdgesButton { extension ProfileRelationshipActionButton { private func _init() { + cornerRadius = 10 titleLabel?.font = .systemFont(ofSize: 17, weight: .semibold) activityIndicatorView.translatesAutoresizingMaskIntoConstraints = false @@ -49,9 +51,12 @@ extension ProfileRelationshipActionButton { setTitle(actionOptionSet.title, for: .normal) setTitleColor(.white, for: .normal) setTitleColor(UIColor.white.withAlphaComponent(0.5), for: .highlighted) - setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor), for: .normal) - setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .highlighted) - setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .disabled) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.background.color), for: .normal) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlighted.color), for: .highlighted) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlighted.color), for: .disabled) +// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor), for: .normal) +// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .highlighted) +// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .disabled) titleEdgeInsets = UIEdgeInsets(top: 0, left: 4, bottom: 0, right: 4) diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index ee2dacb52..d8e27a299 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -619,7 +619,7 @@ extension ProfileViewController { .receive(on: DispatchQueue.main) .sink { [weak self] isHidden in guard let self = self else { return } - self.profileHeaderViewController.profileHeaderView.relationshipActionButton.isHidden = isHidden + self.profileHeaderViewController.profileHeaderView.relationshipActionButtonShadowContainer.isHidden = isHidden } .store(in: &disposeBag) diff --git a/Mastodon/Scene/Profile/ProfileViewModel.swift b/Mastodon/Scene/Profile/ProfileViewModel.swift index 588651c8d..403437daf 100644 --- a/Mastodon/Scene/Profile/ProfileViewModel.swift +++ b/Mastodon/Scene/Profile/ProfileViewModel.swift @@ -442,6 +442,7 @@ extension ProfileViewModel { } } + @available(*, deprecated, message: "") var backgroundColor: UIColor { guard let highPriorityAction = self.highPriorityAction(except: []) else { assertionFailure() diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json index a36ab82ce..0c0c8af04 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/navigation.next.button.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.216", - "green" : "0.173", - "red" : "0.157" + "blue" : "55", + "green" : "44", + "red" : "40" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/Contents.json new file mode 100644 index 000000000..6e965652d --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.colorset/Contents.json new file mode 100644 index 000000000..a36ab82ce --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.216", + "green" : "0.173", + "red" : "0.157" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.933", + "green" : "0.933", + "red" : "0.933" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.colorset/Contents.json new file mode 100644 index 000000000..2dfe8b1c4 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.106", + "green" : "0.082", + "red" : "0.075" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.729", + "green" : "0.729", + "red" : "0.729" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift index 23aa940da..23d724d6c 100644 --- a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift +++ b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift @@ -119,6 +119,10 @@ public enum Asset { public static let nameEditBackgroundGray = ColorAsset(name: "Scene/Profile/Banner/name.edit.background.gray") public static let usernameGray = ColorAsset(name: "Scene/Profile/Banner/username.gray") } + public enum RelationshipButton { + public static let background = ColorAsset(name: "Scene/Profile/RelationshipButton/background") + public static let backgroundHighlighted = ColorAsset(name: "Scene/Profile/RelationshipButton/background.highlighted") + } } public enum Report { public static let background = ColorAsset(name: "Scene/Report/background") From d4a4e4ba3de2bd4544f526d9f9ced0274504e4fa Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 18:15:58 +0800 Subject: [PATCH 276/374] chore: update color panel --- .../Scene/Compose/ComposeViewController.swift | 12 +++++- .../Cell/NotificationTableViewCell.swift | 9 +++++ .../MastodonConfirmEmailViewController.swift | 2 +- .../MastodonPickServerViewController.swift | 2 +- .../TableViewCell/PickServerCell.swift | 2 +- ...ckServerServerSectionTableHeaderView.swift | 2 +- .../MastodonRegisterViewController.swift | 2 +- .../MastodonServerRulesViewController.swift | 2 +- .../OnboardingHeadlineTableViewCell.swift | 2 +- .../OnboardingViewControllerAppearance.swift | 4 +- .../ProfileRelationshipActionButton.swift | 31 ++++++++++----- .../ReportResultViewController.swift | 2 +- .../ReportStatus/ReportViewController.swift | 2 +- .../ReportSupplementaryViewController.swift | 2 +- .../PollOptionView+Configuration.swift | 2 +- .../Contents.json | 0 .../Scene/Setting/Contents.json | 9 +++++ .../Setting/background.colorset/Contents.json | 38 +++++++++++++++++++ .../Contents.json | 6 +-- .../Contents.json | 6 +-- .../Contents.json | 6 +-- .../Contents.json | 6 +-- .../Contents.json | 12 +++--- .../Contents.json | 12 +++--- .../system.background.colorset/Contents.json | 6 +-- .../Contents.json | 12 +++--- .../Contents.json | 6 +-- .../Contents.json | 6 +-- .../MastodonAsset/Generated/Assets.swift | 5 ++- .../View/Content/NotificationView.swift | 2 +- 30 files changed, 145 insertions(+), 65 deletions(-) rename MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/{onboarding.background.colorset => background.colorset}/Contents.json (100%) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Setting/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Setting/background.colorset/Contents.json diff --git a/Mastodon/Scene/Compose/ComposeViewController.swift b/Mastodon/Scene/Compose/ComposeViewController.swift index 04687ca5d..669861d0f 100644 --- a/Mastodon/Scene/Compose/ComposeViewController.swift +++ b/Mastodon/Scene/Compose/ComposeViewController.swift @@ -669,8 +669,16 @@ extension ComposeViewController { } private func setupBackgroundColor(theme: Theme) { - view.backgroundColor = theme.systemElevatedBackgroundColor - tableView.backgroundColor = theme.systemElevatedBackgroundColor + let backgroundColor = UIColor(dynamicProvider: { traitCollection in + switch traitCollection.userInterfaceStyle { + case .light: + return .systemBackground + default: + return theme.systemElevatedBackgroundColor + } + }) + view.backgroundColor = backgroundColor + tableView.backgroundColor = backgroundColor composeToolbarBackgroundView.backgroundColor = theme.composeToolbarBackgroundColor } diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift index 17b1b9a1d..fe2f87361 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift @@ -16,6 +16,7 @@ final class NotificationTableViewCell: UITableViewCell { weak var delegate: NotificationTableViewCellDelegate? var disposeBag = Set() + private var _disposeBag = Set() let notificationView = NotificationView() @@ -66,6 +67,14 @@ extension NotificationTableViewCell { separatorLine.heightAnchor.constraint(equalToConstant: UIView.separatorLineHeight(of: contentView)).priority(.required - 1), ]) + notificationView.quoteBackgroundView.backgroundColor = ThemeService.shared.currentTheme.value.secondarySystemBackgroundColor + ThemeService.shared.currentTheme + .sink { [weak self] theme in + guard let self = self else { return } + self.notificationView.quoteBackgroundView.backgroundColor = theme.secondarySystemBackgroundColor + } + .store(in: &_disposeBag) + notificationView.delegate = self } diff --git a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift index 2c1a67f34..b1b2280d8 100644 --- a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift +++ b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift @@ -51,7 +51,7 @@ final class MastodonConfirmEmailViewController: UIViewController, NeedsDependenc let navigationActionView: NavigationActionView = { let navigationActionView = NavigationActionView() - navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color return navigationActionView }() diff --git a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift index 78a433956..2d43faa56 100644 --- a/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift +++ b/Mastodon/Scene/Onboarding/PickServer/MastodonPickServerViewController.swift @@ -51,7 +51,7 @@ final class MastodonPickServerViewController: UIViewController, NeedsDependency let navigationActionView: NavigationActionView = { let navigationActionView = NavigationActionView() - navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color return navigationActionView }() diff --git a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift index cf92778be..669067770 100644 --- a/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift +++ b/Mastodon/Scene/Onboarding/PickServer/TableViewCell/PickServerCell.swift @@ -114,7 +114,7 @@ class PickServerCell: UITableViewCell { extension PickServerCell { private func _init() { selectionStyle = .none - backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + backgroundColor = Asset.Scene.Onboarding.background.color checkbox.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(checkbox) diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift index f26f79b00..b2269b9c4 100644 --- a/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift @@ -136,7 +136,7 @@ final class PickServerServerSectionTableHeaderView: UIView { extension PickServerServerSectionTableHeaderView { private func _init() { preservesSuperviewLayoutMargins = true - backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + backgroundColor = Asset.Scene.Onboarding.background.color collectionView.translatesAutoresizingMaskIntoConstraints = false collectionView.preservesSuperviewLayoutMargins = true diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift index f4edf8e88..bd2db3d45 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift @@ -69,7 +69,7 @@ final class MastodonRegisterViewController: UIViewController, NeedsDependency, O let navigationActionView: NavigationActionView = { let navigationActionView = NavigationActionView() - navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color return navigationActionView }() diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift index 74649bc22..2f13ad193 100644 --- a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift @@ -46,7 +46,7 @@ final class MastodonServerRulesViewController: UIViewController, NeedsDependency let navigationActionView: NavigationActionView = { let navigationActionView = NavigationActionView() - navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color return navigationActionView }() diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift b/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift index a6c603c23..a5d6e588c 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingHeadlineTableViewCell.swift @@ -46,7 +46,7 @@ extension OnboardingHeadlineTableViewCell { private func _init() { selectionStyle = .none - backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + backgroundColor = Asset.Scene.Onboarding.background.color let container = UIStackView() container.axis = .vertical diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift index 5c51fb559..ba1eecfc5 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingViewControllerAppearance.swift @@ -40,7 +40,7 @@ extension OnboardingViewControllerAppearance { } func setupOnboardingAppearance() { - view.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + view.backgroundColor = Asset.Scene.Onboarding.background.color setupNavigationBarAppearance() @@ -72,7 +72,7 @@ extension OnboardingViewControllerAppearance { func setupNavigationBarBackgroundView() { let navigationBarBackgroundView: UIView = { let view = UIView() - view.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + view.backgroundColor = Asset.Scene.Onboarding.background.color return view }() diff --git a/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift b/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift index 8935783fc..34b8bd7ce 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift @@ -13,7 +13,7 @@ final class ProfileRelationshipActionButton: RoundedEdgesButton { let activityIndicatorView: UIActivityIndicatorView = { let activityIndicatorView = UIActivityIndicatorView(style: .medium) - activityIndicatorView.color = .white + activityIndicatorView.color = Asset.Colors.Label.primaryReverse.color return activityIndicatorView }() @@ -44,19 +44,21 @@ extension ProfileRelationshipActionButton { activityIndicatorView.hidesWhenStopped = true activityIndicatorView.stopAnimating() } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) { + configureAppearance() + } + } } extension ProfileRelationshipActionButton { func configure(actionOptionSet: ProfileViewModel.RelationshipActionOptionSet) { setTitle(actionOptionSet.title, for: .normal) - setTitleColor(.white, for: .normal) - setTitleColor(UIColor.white.withAlphaComponent(0.5), for: .highlighted) - setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.background.color), for: .normal) - setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlighted.color), for: .highlighted) - setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlighted.color), for: .disabled) -// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor), for: .normal) -// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .highlighted) -// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .disabled) + + configureAppearance() titleEdgeInsets = UIEdgeInsets(top: 0, left: 4, bottom: 0, right: 4) @@ -71,5 +73,16 @@ extension ProfileRelationshipActionButton { isEnabled = true } } + + private func configureAppearance() { + setTitleColor(Asset.Colors.Label.primaryReverse.color, for: .normal) + setTitleColor(Asset.Colors.Label.primaryReverse.color.withAlphaComponent(0.5), for: .highlighted) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.background.color), for: .normal) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlighted.color), for: .highlighted) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlighted.color), for: .disabled) +// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor), for: .normal) +// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .highlighted) +// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .disabled) + } } diff --git a/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift b/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift index 6970b8560..26f56b98d 100644 --- a/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift +++ b/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift @@ -39,7 +39,7 @@ final class ReportResultViewController: UIViewController, NeedsDependency, Repor let navigationActionView: NavigationActionView = { let navigationActionView = NavigationActionView() - navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color navigationActionView.hidesBackButton = true navigationActionView.nextButton.setTitle(L10n.Common.Controls.Actions.done, for: .normal) return navigationActionView diff --git a/Mastodon/Scene/Report/ReportStatus/ReportViewController.swift b/Mastodon/Scene/Report/ReportStatus/ReportViewController.swift index 4cb1f56fd..12291a964 100644 --- a/Mastodon/Scene/Report/ReportStatus/ReportViewController.swift +++ b/Mastodon/Scene/Report/ReportStatus/ReportViewController.swift @@ -47,7 +47,7 @@ class ReportViewController: UIViewController, NeedsDependency, ReportViewControl let navigationActionView: NavigationActionView = { let navigationActionView = NavigationActionView() - navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color navigationActionView.backButton.setTitle(L10n.Common.Controls.Actions.skip, for: .normal) return navigationActionView }() diff --git a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift index 44545dd28..4f6e102b2 100644 --- a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift +++ b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift @@ -55,7 +55,7 @@ final class ReportSupplementaryViewController: UIViewController, NeedsDependency let navigationActionView: NavigationActionView = { let navigationActionView = NavigationActionView() - navigationActionView.backgroundColor = Asset.Scene.Onboarding.onboardingBackground.color + navigationActionView.backgroundColor = Asset.Scene.Onboarding.background.color navigationActionView.backButton.setTitle(L10n.Common.Controls.Actions.skip, for: .normal) return navigationActionView }() diff --git a/Mastodon/Scene/Share/View/Content/PollOptionView+Configuration.swift b/Mastodon/Scene/Share/View/Content/PollOptionView+Configuration.swift index a4183a830..717c35f82 100644 --- a/Mastodon/Scene/Share/View/Content/PollOptionView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/PollOptionView+Configuration.swift @@ -20,7 +20,7 @@ extension PollOptionView { .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } - self.viewModel.roundedBackgroundViewColor = theme.secondarySystemBackgroundColor + self.viewModel.roundedBackgroundViewColor = theme.systemElevatedBackgroundColor } .store(in: &disposeBag) // metaContent diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/background.colorset/Contents.json similarity index 100% rename from MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/onboarding.background.colorset/Contents.json rename to MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Onboarding/background.colorset/Contents.json diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Setting/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Setting/Contents.json new file mode 100644 index 000000000..6e965652d --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Setting/Contents.json @@ -0,0 +1,9 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "provides-namespace" : true + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Setting/background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Setting/background.colorset/Contents.json new file mode 100644 index 000000000..4d55227b9 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Setting/background.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.969", + "green" : "0.949", + "red" : "0.949" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.129", + "green" : "0.106", + "red" : "0.098" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/secondary.system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/secondary.system.background.colorset/Contents.json index c915c8911..14b5119b8 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/secondary.system.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/secondary.system.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.910", - "green" : "0.882", - "red" : "0.851" + "blue" : "0xF7", + "green" : "0xF2", + "red" : "0xF2" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json index 33b71ef90..d47dc714f 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.elevated.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "1.000", - "green" : "1.000", - "red" : "1.000" + "blue" : "0xF2", + "green" : "0xED", + "red" : "0xE9" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.grouped.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.grouped.background.colorset/Contents.json index c915c8911..14b5119b8 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.grouped.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/system.grouped.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.910", - "green" : "0.882", - "red" : "0.851" + "blue" : "0xF7", + "green" : "0xF2", + "red" : "0xF2" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.grouped.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.grouped.background.colorset/Contents.json index 98dd7bbde..bc3fb38b9 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.grouped.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/tertiary.system.grouped.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.910", - "green" : "0.882", - "red" : "0.851" + "blue" : "0xF7", + "green" : "0xF2", + "red" : "0xF2" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json index b054549a3..b0a1b74fb 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.grouped.system.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.996", - "green" : "1.000", - "red" : "0.996" + "blue" : "254", + "green" : "255", + "red" : "254" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.180", - "green" : "0.173", - "red" : "0.173" + "blue" : "0x2D", + "green" : "0x2C", + "red" : "0x2C" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json index facc139f8..8fd668a51 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/secondary.system.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.910", - "green" : "0.878", - "red" : "0.851" + "blue" : "0xF7", + "green" : "0xF2", + "red" : "0xF2" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.180", - "green" : "0.173", - "red" : "0.173" + "blue" : "0x2D", + "green" : "0x2C", + "red" : "0x2C" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.background.colorset/Contents.json index 2b3ad55ea..ab7d95395 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.background.colorset/Contents.json @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.000", - "green" : "0.000", - "red" : "0.000" + "blue" : "0x00", + "green" : "0x00", + "red" : "0x00" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset/Contents.json index ca11ee759..253652481 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.elevated.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "1.000", - "green" : "1.000", - "red" : "1.000" + "blue" : "0xF2", + "green" : "0xED", + "red" : "0xE9" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.118", - "green" : "0.110", - "red" : "0.110" + "blue" : "30", + "green" : "28", + "red" : "28" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json index bcd0e01ff..05051dc50 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/system.grouped.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.910", - "green" : "0.878", - "red" : "0.851" + "blue" : "0xF7", + "green" : "0xF2", + "red" : "0xF2" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json index 6b9fb70a6..30aadfbcb 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/tertiary.system.grouped.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.910", - "green" : "0.882", - "red" : "0.851" + "blue" : "0xF7", + "green" : "0xF2", + "red" : "0xF2" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift index 23d724d6c..41369d7d5 100644 --- a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift +++ b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift @@ -105,11 +105,11 @@ public enum Asset { public enum Scene { public enum Onboarding { public static let avatarPlaceholder = ImageAsset(name: "Scene/Onboarding/avatar.placeholder") + public static let background = ColorAsset(name: "Scene/Onboarding/background") public static let navigationBackButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background") public static let navigationBackButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.back.button.background.highlighted") public static let navigationNextButtonBackground = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background") public static let navigationNextButtonBackgroundHighlighted = ColorAsset(name: "Scene/Onboarding/navigation.next.button.background.highlighted") - public static let onboardingBackground = ColorAsset(name: "Scene/Onboarding/onboarding.background") public static let searchBarBackground = ColorAsset(name: "Scene/Onboarding/search.bar.background") public static let textFieldBackground = ColorAsset(name: "Scene/Onboarding/textField.background") } @@ -128,6 +128,9 @@ public enum Asset { public static let background = ColorAsset(name: "Scene/Report/background") public static let reportBanner = ColorAsset(name: "Scene/Report/report.banner") } + public enum Setting { + public static let background = ColorAsset(name: "Scene/Setting/background") + } public enum Sidebar { public static let logo = ImageAsset(name: "Scene/Sidebar/logo") } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index 99b2d69aa..4c5e8aba7 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -103,6 +103,7 @@ public final class NotificationView: UIView { public let statusView = StatusView() public let quoteStatusViewContainerView = UIView() + public let quoteBackgroundView = UIView() public let quoteStatusView = StatusView() public func prepareForReuse() { @@ -232,7 +233,6 @@ extension NotificationView { right: StatusView.containerLayoutMargin.right ) - let quoteBackgroundView = UIView() quoteBackgroundView.layoutMargins = UIEdgeInsets(top: 16, left: 0, bottom: 0, right: 0) quoteBackgroundView.translatesAutoresizingMaskIntoConstraints = false From aa26a19ae06a52565a0e747df4c424a29362f20a Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 18:17:37 +0800 Subject: [PATCH 277/374] fix: post reblog header may display empty reblogger name issue --- .../Scene/Share/View/Content/StatusView+Configuration.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift index 6d4572c8b..5df294027 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift @@ -60,7 +60,7 @@ extension StatusView { status.author.publisher(for: \.emojis) ) .map { name, emojis -> StatusView.ViewModel.Header in - let text = L10n.Common.Controls.Status.userReblogged(name) + let text = L10n.Common.Controls.Status.userReblogged(status.author.displayNameWithFallback) let content = MastodonContent(content: text, emojis: emojis.asDictionary) do { let metaContent = try MastodonMetaContent.convert(document: content) From d80b8d718a0f55ce27274dbcbd4fcbd6d9502198 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 18:17:55 +0800 Subject: [PATCH 278/374] fix: wrong reply header redirect logic issue --- ...Provider+StatusTableViewCellDelegate.swift | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift index a7afca8ce..d14b5c346 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift @@ -28,11 +28,36 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider { assertionFailure("only works for status data provider") return } - await DataSourceFacade.coordinateToProfileScene( - provider: self, - target: .reblog, // keep the wrapper for header author - status: status - ) + + switch await statusView.viewModel.header { + case .none: + break + case .reply: + let _replyToAuthor: ManagedObjectRecord? = try? await context.managedObjectContext.perform { + guard let status = status.object(in: self.context.managedObjectContext) else { return nil } + guard let inReplyToAccountID = status.inReplyToAccountID else { return nil } + let request = MastodonUser.sortedFetchRequest + request.predicate = MastodonUser.predicate(domain: status.author.domain, id: inReplyToAccountID) + request.fetchLimit = 1 + guard let author = self.context.managedObjectContext.safeFetch(request).first else { return nil } + return .init(objectID: author.objectID) + } + guard let replyToAuthor = _replyToAuthor else { + return + } + + await DataSourceFacade.coordinateToProfileScene( + provider: self, + user: replyToAuthor + ) + + case .repost: + await DataSourceFacade.coordinateToProfileScene( + provider: self, + target: .reblog, // keep the wrapper for header author + status: status + ) + } } } From 792208aebb401cec0ec16c02ae9d188dcf6b7e7e Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 19:44:45 +0800 Subject: [PATCH 279/374] feat: restore post filter supports --- .../Notification/NotificationSection.swift | 219 +----------------- Mastodon/Diffiable/Status/StatusSection.swift | 142 +----------- .../HashtagTimelineViewModel+Diffable.swift | 4 +- .../HomeTimelineViewModel+Diffable.swift | 4 +- ...tificationTimelineViewModel+Diffable.swift | 4 +- .../Favorite/FavoriteViewModel+Diffable.swift | 4 +- .../UserTimelineViewModel+Diffable.swift | 4 +- .../Content/StatusView+Configuration.swift | 61 ++++- .../Thread/ThreadViewModel+Diffable.swift | 4 +- Mastodon/Service/StatusFilterService.swift | 13 +- .../CoreData 3.xcdatamodel/contents | 2 +- .../Entity/Mastodon+Entity+Filter.swift | 4 +- .../View/Content/StatusView+ViewModel.swift | 22 +- .../MastodonUI/View/Content/StatusView.swift | 25 +- 14 files changed, 155 insertions(+), 357 deletions(-) diff --git a/Mastodon/Diffiable/Notification/NotificationSection.swift b/Mastodon/Diffiable/Notification/NotificationSection.swift index 7cca0c0eb..97cf8ada0 100644 --- a/Mastodon/Diffiable/Notification/NotificationSection.swift +++ b/Mastodon/Diffiable/Notification/NotificationSection.swift @@ -24,6 +24,8 @@ extension NotificationSection { struct Configuration { weak var notificationTableViewCellDelegate: NotificationTableViewCellDelegate? + let filterContext: Mastodon.Entity.Filter.Context? + let activeFilters: Published<[Mastodon.Entity.Filter]>.Publisher? } static func diffableDataSource( @@ -58,57 +60,6 @@ extension NotificationSection { cell.activityIndicatorView.startAnimating() return cell } -// switch notificationItem { -// case .notification(let objectID, let attribute): -// guard let notification = try? managedObjectContext.existingObject(with: objectID) as? MastodonNotification, -// !notification.isDeleted -// else { return UITableViewCell() } -// -// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: NotificationStatusTableViewCell.self), for: indexPath) as! NotificationStatusTableViewCell -// configure( -// tableView: tableView, -// cell: cell, -// notification: notification, -// dependency: dependency, -// attribute: attribute -// ) -// cell.delegate = delegate -// cell.isAccessibilityElement = true -// NotificationSection.configureStatusAccessibilityLabel(cell: cell) -// return cell -// -// case .notificationStatus(objectID: let objectID, attribute: let attribute): -// guard let notification = try? managedObjectContext.existingObject(with: objectID) as? MastodonNotification, -// !notification.isDeleted, -// let status = notification.status, -// let requestUserID = dependency.context.authenticationService.activeMastodonAuthenticationBox.value?.userID -// else { return UITableViewCell() } -// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell -// -// // configure cell -// StatusSection.configureStatusTableViewCell( -// cell: cell, -// tableView: tableView, -// timelineContext: .notifications, -// dependency: dependency, -// readableLayoutFrame: tableView.readableContentGuide.layoutFrame, -// status: status, -// requestUserID: requestUserID, -// statusItemAttribute: attribute -// ) -// cell.statusView.headerContainerView.isHidden = true // set header hide -// cell.statusView.actionToolbarContainer.isHidden = true // set toolbar hide -// cell.statusView.actionToolbarPlaceholderPaddingView.isHidden = false -// cell.delegate = statusTableViewCellDelegate -// cell.isAccessibilityElement = true -// StatusSection.configureStatusAccessibilityLabel(cell: cell) -// return cell -// -// case .bottomLoader: -// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) as! TimelineBottomLoaderTableViewCell -// cell.startAnimating() -// return cell -// } } } } @@ -142,163 +93,17 @@ extension NotificationSection { viewModel: viewModel, delegate: configuration.notificationTableViewCellDelegate ) + + cell.notificationView.statusView.viewModel.filterContext = configuration.filterContext + cell.notificationView.quoteStatusView.viewModel.filterContext = configuration.filterContext + + configuration.activeFilters? + .assign(to: \.activeFilters, on: cell.notificationView.statusView.viewModel) + .store(in: &cell.disposeBag) + configuration.activeFilters? + .assign(to: \.activeFilters, on: cell.notificationView.quoteStatusView.viewModel) + .store(in: &cell.disposeBag) } -// static func configure( -// tableView: UITableView, -// cell: NotificationStatusTableViewCell, -// notification: MastodonNotification, -// dependency: NeedsDependency, -// attribute: Item.StatusAttribute -// ) { -// // configure author -// cell.configure( -// with: AvatarConfigurableViewConfiguration( -// avatarImageURL: notification.account.avatarImageURL() -// ) -// ) -// -// func createActionImage() -> UIImage? { -// return UIImage( -// systemName: notification.notificationType.actionImageName, -// withConfiguration: UIImage.SymbolConfiguration( -// pointSize: 12, weight: .semibold -// ) -// )? -// .withTintColor(.systemBackground) -// .af.imageAspectScaled(toFit: CGSize(width: 14, height: 14)) -// } -// -// cell.avatarButton.badgeImageView.backgroundColor = notification.notificationType.color -// cell.avatarButton.badgeImageView.image = createActionImage() -// cell.traitCollectionDidChange -// .receive(on: DispatchQueue.main) -// .sink { [weak cell] in -// guard let cell = cell else { return } -// cell.avatarButton.badgeImageView.image = createActionImage() -// } -// .store(in: &cell.disposeBag) -// -// // configure author name, notification description, timestamp -// let nameText = notification.account.displayNameWithFallback -// let titleLabelText: String = { -// switch notification.notificationType { -// case .favourite: return L10n.Scene.Notification.userFavoritedYourPost(nameText) -// case .follow: return L10n.Scene.Notification.userFollowedYou(nameText) -// case .followRequest: return L10n.Scene.Notification.userRequestedToFollowYou(nameText) -// case .mention: return L10n.Scene.Notification.userMentionedYou(nameText) -// case .poll: return L10n.Scene.Notification.userYourPollHasEnded(nameText) -// case .reblog: return L10n.Scene.Notification.userRebloggedYourPost(nameText) -// default: return "" -// } -// }() -// -// do { -// let nameContent = MastodonContent(content: nameText, emojis: notification.account.emojiMeta) -// let nameMetaContent = try MastodonMetaContent.convert(document: nameContent) -// -// let mastodonContent = MastodonContent(content: titleLabelText, emojis: notification.account.emojiMeta) -// let metaContent = try MastodonMetaContent.convert(document: mastodonContent) -// -// cell.titleLabel.configure(content: metaContent) -// -// if let nameRange = metaContent.string.range(of: nameMetaContent.string) { -// let nsRange = NSRange(nameRange, in: metaContent.string) -// cell.titleLabel.textStorage.addAttributes([ -// .font: UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold), maximumPointSize: 20), -// .foregroundColor: Asset.Colors.brandBlue.color, -// ], range: nsRange) -// } -// -// } catch { -// let metaContent = PlaintextMetaContent(string: titleLabelText) -// cell.titleLabel.configure(content: metaContent) -// } -// -// let createAt = notification.createAt -// cell.timestampLabel.text = createAt.localizedSlowedTimeAgoSinceNow -// AppContext.shared.timestampUpdatePublisher -// .receive(on: DispatchQueue.main) -// .sink { [weak cell] _ in -// guard let cell = cell else { return } -// cell.timestampLabel.text = createAt.localizedSlowedTimeAgoSinceNow -// } -// .store(in: &cell.disposeBag) -// -// // configure follow request (if exist) -// if case .followRequest = notification.notificationType { -// cell.acceptButton.publisher(for: .touchUpInside) -// .sink { [weak cell] _ in -// guard let cell = cell else { return } -// cell.delegate?.notificationTableViewCell(cell, notification: notification, acceptButtonDidPressed: cell.acceptButton) -// } -// .store(in: &cell.disposeBag) -// cell.rejectButton.publisher(for: .touchUpInside) -// .sink { [weak cell] _ in -// guard let cell = cell else { return } -// cell.delegate?.notificationTableViewCell(cell, notification: notification, rejectButtonDidPressed: cell.rejectButton) -// } -// .store(in: &cell.disposeBag) -// cell.buttonStackView.isHidden = false -// } else { -// cell.buttonStackView.isHidden = true -// } -// -// // configure status (if exist) -// if let status = notification.status { -// let frame = CGRect( -// x: 0, -// y: 0, -// width: tableView.readableContentGuide.layoutFrame.width - NotificationStatusTableViewCell.statusPadding.left - NotificationStatusTableViewCell.statusPadding.right, -// height: tableView.readableContentGuide.layoutFrame.height -// ) -// StatusSection.configure( -// cell: cell, -// tableView: tableView, -// timelineContext: .notifications, -// dependency: dependency, -// readableLayoutFrame: frame, -// status: status, -// requestUserID: notification.userID, -// statusItemAttribute: attribute -// ) -// cell.statusContainerView.isHidden = false -// cell.containerStackView.alignment = .top -// cell.containerStackViewBottomLayoutConstraint.constant = 0 -// } else { -// if case .followRequest = notification.notificationType { -// cell.containerStackView.alignment = .top -// } else { -// cell.containerStackView.alignment = .center -// } -// cell.statusContainerView.isHidden = true -// cell.containerStackViewBottomLayoutConstraint.constant = 5 // 5pt margin when no status view -// } -// } -// -// static func configureStatusAccessibilityLabel(cell: NotificationStatusTableViewCell) { -// // FIXME: -// cell.accessibilityLabel = { -// var accessibilityViews: [UIView?] = [] -// accessibilityViews.append(contentsOf: [ -// cell.titleLabel, -// cell.timestampLabel, -// cell.statusView -// ]) -// if !cell.statusContainerView.isHidden { -// if !cell.statusView.headerContainerView.isHidden { -// accessibilityViews.append(cell.statusView.headerInfoLabel) -// } -// accessibilityViews.append(contentsOf: [ -// cell.statusView.nameMetaLabel, -// cell.statusView.dateLabel, -// cell.statusView.contentMetaText.textView, -// ]) -// } -// return accessibilityViews -// .compactMap { $0?.accessibilityLabel } -// .joined(separator: " ") -// }() -// } } diff --git a/Mastodon/Diffiable/Status/StatusSection.swift b/Mastodon/Diffiable/Status/StatusSection.swift index 6eefdef7b..40b7e5351 100644 --- a/Mastodon/Diffiable/Status/StatusSection.swift +++ b/Mastodon/Diffiable/Status/StatusSection.swift @@ -28,6 +28,8 @@ extension StatusSection { struct Configuration { weak var statusTableViewCellDelegate: StatusTableViewCellDelegate? weak var timelineMiddleLoaderTableViewCellDelegate: TimelineMiddleLoaderTableViewCellDelegate? + let filterContext: Mastodon.Entity.Filter.Context? + let activeFilters: Published<[Mastodon.Entity.Filter]>.Publisher? } static func diffableDataSource( @@ -258,6 +260,11 @@ extension StatusSection { viewModel: viewModel, delegate: configuration.statusTableViewCellDelegate ) + + cell.statusView.viewModel.filterContext = configuration.filterContext + configuration.activeFilters? + .assign(to: \.activeFilters, on: cell.statusView.viewModel) + .store(in: &cell.disposeBag) } static func configure( @@ -282,6 +289,11 @@ extension StatusSection { viewModel: viewModel, delegate: configuration.statusTableViewCellDelegate ) + + cell.statusView.viewModel.filterContext = configuration.filterContext + configuration.activeFilters? + .assign(to: \.activeFilters, on: cell.statusView.viewModel) + .store(in: &cell.disposeBag) } static func configure( @@ -296,133 +308,3 @@ extension StatusSection { } } - -extension StatusSection { - - enum TimelineContext { - case home - case notifications - case `public` - case thread - case account - - case favorite - case hashtag - case report - case search - - var filterContext: Mastodon.Entity.Filter.Context? { - switch self { - case .home: return .home - case .notifications: return .notifications - case .public: return .public - case .thread: return .thread - case .account: return .account - default: return nil - } - } - } - - private static func needsFilterStatus( - content: MastodonMetaContent?, - filters: [Mastodon.Entity.Filter], - timelineContext: TimelineContext - ) -> AnyPublisher { - guard let content = content, - let currentFilterContext = timelineContext.filterContext, - !filters.isEmpty else { - return Just(false).eraseToAnyPublisher() - } - - return Future { promise in - DispatchQueue.global(qos: .userInteractive).async { - var wordFilters: [Mastodon.Entity.Filter] = [] - var nonWordFilters: [Mastodon.Entity.Filter] = [] - for filter in filters { - guard filter.context.contains(where: { $0 == currentFilterContext }) else { continue } - if filter.wholeWord { - wordFilters.append(filter) - } else { - nonWordFilters.append(filter) - } - } - - let text = content.original.lowercased() - - var needsFilter = false - for filter in nonWordFilters { - guard text.contains(filter.phrase.lowercased()) else { continue } - needsFilter = true - break - } - - if needsFilter { - DispatchQueue.main.async { - promise(.success(true)) - } - return - } - - let tokenizer = NLTokenizer(unit: .word) - tokenizer.string = text - let phraseWords = wordFilters.map { $0.phrase.lowercased() } - tokenizer.enumerateTokens(in: text.startIndex..? - - init( - statusObjectID: NSManagedObjectID, - mastodonContent: MastodonContent - ) { - self.statusObjectID = statusObjectID - self.mastodonContent = mastodonContent - super.init() - } - - override func main() { - guard !isCancelled else { return } - // logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): prcoess \(self.statusObjectID)…") - - do { - let content = try MastodonMetaContent.convert(document: mastodonContent) - result = .success(content) - // logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): process success \(self.statusObjectID)") - } catch { - result = .failure(error) - // logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): process fail \(self.statusObjectID)") - } - - } - - override func cancel() { - // logger.debug("\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): cancel \(self.statusObjectID.debugDescription)") - super.cancel() - } -} diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift index 43add2d27..c71d195c7 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift @@ -21,7 +21,9 @@ extension HashtagTimelineViewModel { context: context, configuration: StatusSection.Configuration( statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: nil + timelineMiddleLoaderTableViewCellDelegate: nil, + filterContext: .none, + activeFilters: nil ) ) diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift index 67f9e5b52..756a4b608 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift @@ -22,7 +22,9 @@ extension HomeTimelineViewModel { context: context, configuration: StatusSection.Configuration( statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: timelineMiddleLoaderTableViewCellDelegate + timelineMiddleLoaderTableViewCellDelegate: timelineMiddleLoaderTableViewCellDelegate, + filterContext: .home, + activeFilters: context.statusFilterService.$activeFilters ) ) diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+Diffable.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+Diffable.swift index 1476ef2e0..b32eae76b 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewModel+Diffable.swift @@ -20,7 +20,9 @@ extension NotificationTimelineViewModel { tableView: tableView, context: context, configuration: NotificationSection.Configuration( - notificationTableViewCellDelegate: notificationTableViewCellDelegate + notificationTableViewCellDelegate: notificationTableViewCellDelegate, + filterContext: .notifications, + activeFilters: context.statusFilterService.$activeFilters ) ) diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+Diffable.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+Diffable.swift index f74d3de7b..58109247e 100644 --- a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+Diffable.swift +++ b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+Diffable.swift @@ -18,7 +18,9 @@ extension FavoriteViewModel { context: context, configuration: StatusSection.Configuration( statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: nil + timelineMiddleLoaderTableViewCellDelegate: nil, + filterContext: .none, + activeFilters: nil ) ) // set empty section to make update animation top-to-bottom style diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift index 56d0973e9..a0a1f52cd 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift @@ -19,7 +19,9 @@ extension UserTimelineViewModel { context: context, configuration: StatusSection.Configuration( statusTableViewCellDelegate: statusTableViewCellDelegate, - timelineMiddleLoaderTableViewCellDelegate: nil + timelineMiddleLoaderTableViewCellDelegate: nil, + filterContext: .none, + activeFilters: nil ) ) diff --git a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift index 5df294027..1a90c69af 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView+Configuration.swift @@ -9,11 +9,16 @@ import UIKit import Combine import MastodonUI import CoreDataStack +import MastodonSDK import MastodonLocalization import MastodonMeta import Meta +import NaturalLanguage extension StatusView { + + static let statusFilterWorkingQueue = DispatchQueue(label: "StatusFilterWorkingQueue") + public func configure(feed: Feed) { switch feed.kind { case .home: @@ -48,7 +53,8 @@ extension StatusView { configureContent(status: status) configureMedia(status: status) configurePoll(status: status) - configureToolbar(status: status) + configureToolbar(status: status) + configureFilter(status: status) } } @@ -397,5 +403,58 @@ extension StatusView { .assign(to: \.isFavorite, on: viewModel) .store(in: &disposeBag) } + + private func configureFilter(status: Status) { + let status = status.reblog ?? status + + let content = status.content.lowercased() + + Publishers.CombineLatest( + viewModel.$activeFilters, + viewModel.$filterContext + ) + .receive(on: StatusView.statusFilterWorkingQueue) + .map { filters, filterContext in + var wordFilters: [Mastodon.Entity.Filter] = [] + var nonWordFilters: [Mastodon.Entity.Filter] = [] + for filter in filters { + guard filter.context.contains(where: { $0 == filterContext }) else { continue } + if filter.wholeWord { + wordFilters.append(filter) + } else { + nonWordFilters.append(filter) + } + } + + var needsFilter = false + for filter in nonWordFilters { + guard content.contains(filter.phrase.lowercased()) else { continue } + needsFilter = true + break + } + + if needsFilter { + return true + } + + let tokenizer = NLTokenizer(unit: .word) + tokenizer.string = content + let phraseWords = wordFilters.map { $0.phrase.lowercased() } + tokenizer.enumerateTokens(in: content.startIndex..() // output - let activeFilters = CurrentValueSubject<[Mastodon.Entity.Filter], Never>([]) + @Published var activeFilters: [Mastodon.Entity.Filter] = [] init( apiService: APIService, @@ -57,7 +57,14 @@ final class StatusFilterService { .map { response in let now = Date() let newResponse = response.map { filters in - return filters.filter { $0.expiresAt > now } // filter out expired rules + return filters.filter { filter in + if let expiresAt = filter.expiresAt { + // filter out expired rules + return expiresAt > now + } else { + return true + } + } } return Result, Error>.success(newResponse) } @@ -70,7 +77,7 @@ final class StatusFilterService { switch result { case .success(let response): os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch account filters success. %ld items", ((#file as NSString).lastPathComponent), #line, #function, response.value.count) - self.activeFilters.value = response.value + self.activeFilters = response.value case .failure(let error): os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: fetch account filters fail: %s", ((#file as NSString).lastPathComponent), #line, #function, error.localizedDescription) diff --git a/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents index 3e2fcc138..a6f0ee0ce 100644 --- a/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents +++ b/MastodonSDK/Sources/CoreDataStack/CoreData.xcdatamodeld/CoreData 3.xcdatamodel/contents @@ -1,5 +1,5 @@ - + diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Filter.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Filter.swift index e52dd36b0..00a06ccf0 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Filter.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Filter.swift @@ -22,7 +22,7 @@ extension Mastodon.Entity { public let id: ID public let phrase: String public let context: [Context] - public let expiresAt: Date + public let expiresAt: Date? public let irreversible: Bool public let wholeWord: Bool @@ -38,7 +38,7 @@ extension Mastodon.Entity { } extension Mastodon.Entity.Filter { - public enum Context: RawRepresentable, Codable { + public enum Context: RawRepresentable, Codable, Hashable { case home case notifications case `public` diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index cc162a94d..ceaf103c5 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -89,6 +89,11 @@ extension StatusView { @Published public var replyCount: Int = 0 @Published public var reblogCount: Int = 0 @Published public var favoriteCount: Int = 0 + + // Filter + @Published public var activeFilters: [Mastodon.Entity.Filter] = [] + @Published public var filterContext: Mastodon.Entity.Filter.Context? + @Published public var isFiltered = false @Published public var groupedAccessibilityLabel = "" @@ -128,9 +133,8 @@ extension StatusView { isMediaSensitive = false isMediaSensitiveToggled = false -// isSensitive = false -// isContentReveal = false -// isMediaReveal = false + activeFilters = [] + filterContext = nil } init() { @@ -192,6 +196,7 @@ extension StatusView.ViewModel { bindToolbar(statusView: statusView) bindMetric(statusView: statusView) bindMenu(statusView: statusView) + bindFilter(statusView: statusView) bindAccessibility(statusView: statusView) } @@ -611,6 +616,17 @@ extension StatusView.ViewModel { .store(in: &disposeBag) } + private func bindFilter(statusView: StatusView) { + $isFiltered + .sink { isFiltered in + statusView.containerStackView.isHidden = isFiltered + if isFiltered { + statusView.setFilterHintLabelDisplay() + } + } + .store(in: &disposeBag) + } + private func bindAccessibility(statusView: StatusView) { let authorAccessibilityLabel = Publishers.CombineLatest3( $header, diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index 8a1c02df3..2b9f936bb 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -226,6 +226,15 @@ public final class StatusView: UIView { // metric public let statusMetricView = StatusMetricView() + // filter hint + public let filterHintLabel: UILabel = { + let label = UILabel() + label.textColor = Asset.Colors.Label.secondary.color + label.text = L10n.Common.Controls.Timeline.filtered + label.font = .systemFont(ofSize: 17, weight: .regular) + return label + }() + public func prepareForReuse() { disposeBag.removeAll() @@ -249,7 +258,7 @@ public final class StatusView: UIView { mediaContainerView.isHidden = true pollContainerView.isHidden = true statusVisibilityView.isHidden = true - // setSpoilerBannerViewHidden(isHidden: true) + filterHintLabel.isHidden = true } public override init(frame: CGRect) { @@ -570,6 +579,14 @@ extension StatusView.Style { statusView.actionToolbarContainer.configure(for: .inline) statusView.actionToolbarContainer.preservesSuperviewLayoutMargins = true statusView.containerStackView.addArrangedSubview(statusView.actionToolbarContainer) + + // filterHintLabel + statusView.filterHintLabel.translatesAutoresizingMaskIntoConstraints = false + statusView.addSubview(statusView.filterHintLabel) + NSLayoutConstraint.activate([ + statusView.filterHintLabel.centerXAnchor.constraint(equalTo: statusView.containerStackView.centerXAnchor), + statusView.filterHintLabel.centerYAnchor.constraint(equalTo: statusView.containerStackView.centerYAnchor), + ]) } func inline(statusView: StatusView) { @@ -673,9 +690,9 @@ extension StatusView { statusVisibilityView.isHidden = false } - // func setSpoilerBannerViewHidden(isHidden: Bool) { - // spoilerBannerView.isHidden = isHidden - // } + func setFilterHintLabelDisplay() { + filterHintLabel.isHidden = false + } // content text Width public var contentMaxLayoutWidth: CGFloat { From 771c8327b3e1fb383163e09349e370815dbe38d4 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 19:58:18 +0800 Subject: [PATCH 280/374] chore: update version to 1.3.0 (98) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index dd589d8f2..ff0b30e0d 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 97 + 98 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index eb36049de..8c00e08a7 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4620,7 +4620,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4649,7 +4649,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4757,11 +4757,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 97; + DYLIB_CURRENT_VERSION = 98; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4788,11 +4788,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 97; + DYLIB_CURRENT_VERSION = 98; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4817,7 +4817,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4842,7 +4842,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4867,7 +4867,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4892,7 +4892,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4917,7 +4917,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4941,7 +4941,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 97; + CURRENT_PROJECT_VERSION = 98; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index efcd36112..e43cc170b 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 18 + 27 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 20 + 26 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 19 + 25 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 03bdd3931..291e11139 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 97 + 98 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 0e6eef466..bb591d174 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 97 + 98 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index dd589d8f2..ff0b30e0d 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 97 + 98 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index dd589d8f2..ff0b30e0d 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 97 + 98 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index f3907d9de..8d1dc4891 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 97 + 98 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index c717eb63f..fd8358bf1 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 97 + 98 NSExtension NSExtensionAttributes From 18a902c8aedd6ea3cd027e06f8d56c92e716b9c5 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 20:08:39 +0800 Subject: [PATCH 281/374] chore: update post content sensitive style --- .../View/Content/StatusView+ViewModel.swift | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift index ceaf103c5..f848b37e1 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+ViewModel.swift @@ -307,8 +307,7 @@ extension StatusView.ViewModel { if let content = content { statusView.contentMetaText.configure( - content: content, - isRedactedModeEnabled: !isContentReveal + content: content ) statusView.contentMetaText.textView.accessibilityLabel = content.string statusView.contentMetaText.textView.accessibilityTraits = [.staticText] @@ -318,6 +317,8 @@ extension StatusView.ViewModel { statusView.contentMetaText.textView.accessibilityLabel = "" } + statusView.contentMetaText.textView.alpha = isContentReveal ? 1 : 0 // keep the frame size and only display when revealing + statusView.setSpoilerOverlayViewHidden(isHidden: isContentReveal) let image = isContentReveal ? UIImage(systemName: "eye.slash.fill") : UIImage(systemName: "eye.fill") @@ -327,12 +328,13 @@ extension StatusView.ViewModel { } .store(in: &disposeBag) -// $isSensitive -// .sink { isSensitive in -// guard isSensitive else { return } -// statusView.setContentSensitiveeToggleButtonDisplay() -// } -// .store(in: &disposeBag) + $isSensitive + .sink { isSensitive in + guard isSensitive else { return } + statusView.setContentSensitiveeToggleButtonDisplay() + } + .store(in: &disposeBag) + // // visibility // Publishers.CombineLatest( // $visibility, From 4c41e94f8d89633c0462808ccfe6581dc150b28f Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 20:12:53 +0800 Subject: [PATCH 282/374] fix: blurhash image not display during image loading issue --- MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift index f4231f02c..3b4d249ef 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift @@ -154,7 +154,7 @@ extension MediaView { .receive(on: DispatchQueue.main) .sink { [weak self] isReveal, previewImage, blurhashImage in guard let self = self else { return } - let image = isReveal ? previewImage : blurhashImage + let image = isReveal ? (previewImage ?? blurhashImage) : blurhashImage self.imageView.image = image } .store(in: &configuration.disposeBag) From 65968278373fd610f8041a8c39b4cf719c731dc9 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 15 Feb 2022 20:13:11 +0800 Subject: [PATCH 283/374] chore: update version to 1.3.0 (99) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index ff0b30e0d..11db6d028 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 98 + 99 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 8c00e08a7..2d2fcba13 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4620,7 +4620,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4649,7 +4649,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4757,11 +4757,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 98; + DYLIB_CURRENT_VERSION = 99; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4788,11 +4788,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 98; + DYLIB_CURRENT_VERSION = 99; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4817,7 +4817,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4842,7 +4842,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4867,7 +4867,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4892,7 +4892,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4917,7 +4917,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4941,7 +4941,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 98; + CURRENT_PROJECT_VERSION = 99; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index e43cc170b..22741ed56 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 27 + 28 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 26 + 30 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 25 + 29 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 291e11139..58e476d32 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 98 + 99 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index bb591d174..3c1524c4c 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 98 + 99 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index ff0b30e0d..11db6d028 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 98 + 99 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index ff0b30e0d..11db6d028 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 98 + 99 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 8d1dc4891..7b648693e 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 98 + 99 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index fd8358bf1..5078c580b 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 98 + 99 NSExtension NSExtensionAttributes From 7da3bbcaa7558fa743013ee4c077e3301ca6b9be Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 16 Feb 2022 17:25:55 +0800 Subject: [PATCH 284/374] feat: restore user recommend scene --- Localization/app.json | 3 +- Mastodon.xcodeproj/project.pbxproj | 4 + .../xcschemes/xcschememanagement.plist | 6 +- .../UserFetchedResultsController.swift | 17 +- .../RecommendAccountSection.swift | 9 +- .../Follower/FollowerListViewModel.swift | 2 +- .../Following/FollowingListViewModel.swift | 2 +- .../SearchResult/SearchResultViewModel.swift | 2 +- .../SuggestionAccountViewController.swift | 50 ++-- .../SuggestionAccountViewModel+Diffable.swift | 14 +- .../SuggestionAccountViewModel.swift | 189 +++----------- ...estionAccountTableViewCell+ViewModel.swift | 139 +++++++++++ .../SuggestionAccountTableViewCell.swift | 96 +++---- .../Entity/Mastodon/MastodonUser.swift | 8 + .../Entity/Mastodon/Status.swift | 235 ------------------ 15 files changed, 285 insertions(+), 491 deletions(-) create mode 100644 Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell+ViewModel.swift diff --git a/Localization/app.json b/Localization/app.json index fad7cc206..f8dc9d811 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -449,7 +449,8 @@ "accessibility": { "show_avatar_image": "Show avatar image", "edit_avatar_image": "Edit avatar image", - "show_banner_image": "Show banner image" + "show_banner_image": "Show banner image", + "double_tap_to_open_the_list": "Double tap to open the list" } }, "follower": { diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 2d2fcba13..0fc94fd31 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -546,6 +546,7 @@ DBCCC71E25F73297007E1AB6 /* APIService+Reblog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBCCC71D25F73297007E1AB6 /* APIService+Reblog.swift */; }; DBD376AC2692ECDB007FEC24 /* ThemePreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD376AB2692ECDB007FEC24 /* ThemePreference.swift */; }; DBD376B2269302A4007FEC24 /* UITableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD376B1269302A4007FEC24 /* UITableViewCell.swift */; }; + DBD5B1F627BCD3D200BD6B38 /* SuggestionAccountTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD5B1F527BCD3D200BD6B38 /* SuggestionAccountTableViewCell+ViewModel.swift */; }; DBD9149025DF6D8D00903DFD /* APIService+Onboarding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD9148F25DF6D8D00903DFD /* APIService+Onboarding.swift */; }; DBE0821525CD382600FD6BBD /* MastodonRegisterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE0821425CD382600FD6BBD /* MastodonRegisterViewController.swift */; }; DBE0822425CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */; }; @@ -1279,6 +1280,7 @@ DBCCC71D25F73297007E1AB6 /* APIService+Reblog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Reblog.swift"; sourceTree = ""; }; DBD376AB2692ECDB007FEC24 /* ThemePreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemePreference.swift; sourceTree = ""; }; DBD376B1269302A4007FEC24 /* UITableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITableViewCell.swift; sourceTree = ""; }; + DBD5B1F527BCD3D200BD6B38 /* SuggestionAccountTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SuggestionAccountTableViewCell+ViewModel.swift"; sourceTree = ""; }; DBD9148F25DF6D8D00903DFD /* APIService+Onboarding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Onboarding.swift"; sourceTree = ""; }; DBDC1CF9272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ku-TR"; path = "ku-TR.lproj/Intents.strings"; sourceTree = ""; }; DBDC1CFC272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ku-TR"; path = "ku-TR.lproj/InfoPlist.strings"; sourceTree = ""; }; @@ -1768,6 +1770,7 @@ isa = PBXGroup; children = ( 2DAC9E45262FC9FD0062E1A6 /* SuggestionAccountTableViewCell.swift */, + DBD5B1F527BCD3D200BD6B38 /* SuggestionAccountTableViewCell+ViewModel.swift */, ); path = TableViewCell; sourceTree = ""; @@ -3835,6 +3838,7 @@ DBB45B5E27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift in Sources */, DB6180F226391CF40018D199 /* MediaPreviewImageViewModel.swift in Sources */, DBA5E7A3263AD0A3004598BB /* PhotoLibraryService.swift in Sources */, + DBD5B1F627BCD3D200BD6B38 /* SuggestionAccountTableViewCell+ViewModel.swift in Sources */, 5DDDF1932617442700311060 /* Mastodon+Entity+Account.swift in Sources */, DB63F767279A5EB300455B82 /* NotificationTimelineViewModel.swift in Sources */, 2D607AD826242FC500B70763 /* NotificationViewModel.swift in Sources */, diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 22741ed56..7e9982d3c 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 28 + 20 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 30 + 19 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 29 + 18 SuppressBuildableAutocreation diff --git a/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift b/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift index 2230e04bc..c0922afcb 100644 --- a/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift +++ b/Mastodon/Diffiable/FetchedResultsController/UserFetchedResultsController.swift @@ -22,12 +22,17 @@ final class UserFetchedResultsController: NSObject { // input @Published var domain: String? = nil @Published var userIDs: [Mastodon.Entity.Account.ID] = [] + @Published var additionalPredicate: NSPredicate? // output let _objectIDs = CurrentValueSubject<[NSManagedObjectID], Never>([]) @Published var records: [ManagedObjectRecord] = [] - init(managedObjectContext: NSManagedObjectContext, domain: String?, additionalTweetPredicate: NSPredicate?) { + init( + managedObjectContext: NSManagedObjectContext, + domain: String?, + additionalPredicate: NSPredicate? + ) { self.domain = domain ?? "" self.fetchedResultsController = { let fetchRequest = MastodonUser.sortedFetchRequest @@ -43,6 +48,7 @@ final class UserFetchedResultsController: NSObject { return controller }() + self.additionalPredicate = additionalPredicate super.init() // debounce output to prevent UI update issues @@ -53,15 +59,16 @@ final class UserFetchedResultsController: NSObject { fetchedResultsController.delegate = self - Publishers.CombineLatest( + Publishers.CombineLatest3( self.$domain.removeDuplicates(), - self.$userIDs.removeDuplicates() + self.$userIDs.removeDuplicates(), + self.$additionalPredicate.removeDuplicates() ) .receive(on: DispatchQueue.main) - .sink { [weak self] domain, ids in + .sink { [weak self] domain, ids, additionalPredicate in guard let self = self else { return } var predicates = [MastodonUser.predicate(domain: domain ?? "", ids: ids)] - if let additionalPredicate = additionalTweetPredicate { + if let additionalPredicate = additionalPredicate { predicates.append(additionalPredicate) } self.fetchedResultsController.fetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: predicates) diff --git a/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift b/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift index c6d4897ab..f59164f35 100644 --- a/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift +++ b/Mastodon/Diffiable/RecommandAccount/RecommendAccountSection.swift @@ -146,10 +146,15 @@ extension RecommendAccountSection { case .account(let record): context.managedObjectContext.performAndWait { guard let user = record.object(in: context.managedObjectContext) else { return } - cell.config(with: user) + cell.configure(user: user) } + + context.authenticationService.activeMastodonAuthenticationBox + .map { $0 as UserIdentifier? } + .assign(to: \.userIdentifier, on: cell.viewModel) + .store(in: &cell.disposeBag) + cell.delegate = configuration.suggestionAccountTableViewCellDelegate } - cell.delegate = configuration.suggestionAccountTableViewCellDelegate return cell } } diff --git a/Mastodon/Scene/Profile/Follower/FollowerListViewModel.swift b/Mastodon/Scene/Profile/Follower/FollowerListViewModel.swift index a212c95b0..80f26e608 100644 --- a/Mastodon/Scene/Profile/Follower/FollowerListViewModel.swift +++ b/Mastodon/Scene/Profile/Follower/FollowerListViewModel.swift @@ -44,7 +44,7 @@ final class FollowerListViewModel { self.userFetchedResultsController = UserFetchedResultsController( managedObjectContext: context.managedObjectContext, domain: domain, - additionalTweetPredicate: nil + additionalPredicate: nil ) self.domain = CurrentValueSubject(domain) self.userID = CurrentValueSubject(userID) diff --git a/Mastodon/Scene/Profile/Following/FollowingListViewModel.swift b/Mastodon/Scene/Profile/Following/FollowingListViewModel.swift index 22658a0e4..f1e07f9d8 100644 --- a/Mastodon/Scene/Profile/Following/FollowingListViewModel.swift +++ b/Mastodon/Scene/Profile/Following/FollowingListViewModel.swift @@ -44,7 +44,7 @@ final class FollowingListViewModel { self.userFetchedResultsController = UserFetchedResultsController( managedObjectContext: context.managedObjectContext, domain: domain, - additionalTweetPredicate: nil + additionalPredicate: nil ) self.domain = CurrentValueSubject(domain) self.userID = CurrentValueSubject(userID) diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift index 7641bc0cb..ad012518d 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift @@ -53,7 +53,7 @@ final class SearchResultViewModel { self.userFetchedResultsController = UserFetchedResultsController( managedObjectContext: context.managedObjectContext, domain: nil, - additionalTweetPredicate: nil + additionalPredicate: nil ) self.statusFetchedResultsController = StatusFetchedResultsController( managedObjectContext: context.managedObjectContext, diff --git a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift index 20449fdf7..07c27a721 100644 --- a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift +++ b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift @@ -74,7 +74,7 @@ extension SuggestionAccountViewController { setupBackgroundColor(theme: ThemeService.shared.currentTheme.value) ThemeService.shared.currentTheme - .receive(on: RunLoop.main) + .receive(on: DispatchQueue.main) .sink { [weak self] theme in guard let self = self else { return } self.setupBackgroundColor(theme: theme) @@ -169,29 +169,31 @@ extension SuggestionAccountViewController: UITableViewDelegate { } extension SuggestionAccountViewController: SuggestionAccountTableViewCellDelegate { - func accountButtonPressed(objectID: NSManagedObjectID, cell: SuggestionAccountTableViewCell) { -// let selected = !viewModel.selectedAccounts.value.contains(objectID) -// cell.startAnimating() -// viewModel.followAction(objectID: objectID)? -// .sink(receiveCompletion: { [weak self] completion in -// guard let self = self else { return } -// cell.stopAnimating() -// switch completion { -// case .failure(let error): -// os_log("%{public}s[%{public}ld], %{public}s: follow failed. %s", (#file as NSString).lastPathComponent, #line, #function, error.localizedDescription) -// case .finished: -// var selectedAccounts = self.viewModel.selectedAccounts.value -// if selected { -// selectedAccounts.append(objectID) -// } else { -// selectedAccounts.removeAll { $0 == objectID } -// } -// cell.button.isSelected = selected -// self.viewModel.selectedAccounts.value = selectedAccounts -// } -// }, receiveValue: { _ in -// }) -// .store(in: &disposeBag) + func suggestionAccountTableViewCell( + _ cell: SuggestionAccountTableViewCell, + friendshipDidPressed button: UIButton + ) { + guard let tableViewDiffableDataSource = viewModel.tableViewDiffableDataSource else { return } + guard let indexPath = tableView.indexPath(for: cell) else { return } + guard let item = tableViewDiffableDataSource.itemIdentifier(for: indexPath) else { return } + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } + + switch item { + case .account(let user): + Task { @MainActor in + cell.startAnimating() + do { + try await DataSourceFacade.responseToUserFollowAction( + dependency: self, + user: user, + authenticationBox: authenticationBox + ) + } catch { + // do noting + } + cell.stopAnimating() + } // end Task + } } } diff --git a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel+Diffable.swift b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel+Diffable.swift index 49f38c888..4496b9f0a 100644 --- a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel+Diffable.swift +++ b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewModel+Diffable.swift @@ -22,6 +22,7 @@ extension SuggestionAccountViewModel { ) userFetchedResultsController.$records + .removeDuplicates() .receive(on: DispatchQueue.main) .sink { [weak self] records in guard let self = self else { return } @@ -50,7 +51,7 @@ extension SuggestionAccountViewModel { context: context ) - userFetchedResultsController.$records + selectedUserFetchedResultsController.$records .receive(on: DispatchQueue.main) .sink { [weak self] records in guard let self = self else { return } @@ -58,7 +59,16 @@ extension SuggestionAccountViewModel { var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) - let items: [SelectedAccountItem] = records.map { SelectedAccountItem.account($0) } + var items: [SelectedAccountItem] = records.map { SelectedAccountItem.account($0) } + + if items.count < 10 { + let count = 10 - items.count + let placeholderItems: [SelectedAccountItem] = (0..() @@ -32,11 +33,6 @@ final class SuggestionAccountViewModel: NSObject { var collectionViewDiffableDataSource: UICollectionViewDiffableDataSource? var tableViewDiffableDataSource: UITableViewDiffableDataSource? - @Published var selectedAccounts: [ManagedObjectRecord] = [] - var headerPlaceholderCount = CurrentValueSubject(nil) - var suggestionAccountsFallback = PassthroughSubject() - - init( context: AppContext ) { @@ -44,53 +40,26 @@ final class SuggestionAccountViewModel: NSObject { self.userFetchedResultsController = UserFetchedResultsController( managedObjectContext: context.managedObjectContext, domain: nil, - additionalTweetPredicate: nil + additionalPredicate: nil + ) + self.selectedUserFetchedResultsController = UserFetchedResultsController( + managedObjectContext: context.managedObjectContext, + domain: nil, + additionalPredicate: nil ) super.init() - -// Publishers.CombineLatest( -// $accounts, -// $selectedAccounts -// ) -// .receive(on: RunLoop.main) -// .sink { [weak self] accounts,selectedAccounts in -// self?.applyTableViewDataSource(accounts: accounts) -// self?.applySelectedCollectionViewDataSource(accounts: selectedAccounts) -// } -// .store(in: &disposeBag) - -// Publishers.CombineLatest( -// self.selectedAccounts, -// self.headerPlaceholderCount -// ) -// .receive(on: RunLoop.main) -// .sink { [weak self] selectedAccount,count in -// self?.applySelectedCollectionViewDataSource(accounts: selectedAccount) -// } -// .store(in: &disposeBag) -// -// viewWillAppear -// .sink { [weak self] _ in -// self?.checkAccountsFollowState() -// } -// .store(in: &disposeBag) -// -// context.authenticationService.activeMastodonAuthentication -// .sink { [weak self] activeMastodonAuthentication in -// guard let self = self else { return } -// guard let activeMastodonAuthentication = activeMastodonAuthentication else { -// self.currentMastodonUser.value = nil -// return -// } -// self.currentMastodonUser.value = activeMastodonAuthentication.user -// } -// .store(in: &disposeBag) - + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return } userFetchedResultsController.domain = authenticationBox.domain + selectedUserFetchedResultsController.domain = authenticationBox.domain + selectedUserFetchedResultsController.additionalPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: [ + MastodonUser.predicate(followingBy: authenticationBox.userID), + MastodonUser.predicate(followRequestedBy: authenticationBox.userID) + ]) + // fetch recomment users Task { var userIDs: [MastodonUser.ID] = [] do { @@ -111,121 +80,25 @@ final class SuggestionAccountViewModel: NSObject { guard !userIDs.isEmpty else { return } userFetchedResultsController.userIDs = userIDs + selectedUserFetchedResultsController.userIDs = userIDs } -// .sink { [weak self] completion in -// switch completion { -// case .failure(let error): -// if let apiError = error as? Mastodon.API.Error { -// if apiError.httpResponseStatus == .notFound { -// self?.suggestionAccountsFallback.send() -// } -// } -// case .finished: -// // handle isFetchingLatestTimeline in fetch controller delegate -// break -// } -// } receiveValue: { [weak self] response in -// let ids = response.value.map(\.account.id) -// self?.receiveAccounts(ids: ids) -// } -// .store(in: &disposeBag) -// -// suggestionAccountsFallback -// .sink(receiveValue: { [weak self] _ in -// self?.requestSuggestionAccount() -// }) -// .store(in: &disposeBag) + // fetch relationship + userFetchedResultsController.$records + .removeDuplicates() + .sink { [weak self] records in + guard let _ = self else { return } + Task { + guard let authenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { + return + } + _ = try await context.apiService.relationship( + records: records, + authenticationBox: authenticationBox + ) + } + } + .store(in: &disposeBag) } - -// func applyTableViewDataSource(accounts: [NSManagedObjectID]) { -// assert(Thread.isMainThread) -// guard let dataSource = diffableDataSource else { return } -// var snapshot = NSDiffableDataSourceSnapshot() -// snapshot.appendSections([.main]) -// snapshot.appendItems(accounts, toSection: .main) -// dataSource.apply(snapshot, animatingDifferences: false, completion: nil) -// } -// -// func applySelectedCollectionViewDataSource(accounts: [NSManagedObjectID]) { -// assert(Thread.isMainThread) -// guard let count = headerPlaceholderCount.value else { return } -// guard let dataSource = collectionDiffableDataSource else { return } -// var snapshot = NSDiffableDataSourceSnapshot() -// snapshot.appendSections([.main]) -// let placeholderCount = count - accounts.count -// let accountItems = accounts.map { SelectedAccountItem.accountObjectID(accountObjectID: $0) } -// snapshot.appendItems(accountItems, toSection: .main) -// -// if placeholderCount > 0 { -// for _ in 0 ..< placeholderCount { -// snapshot.appendItems([SelectedAccountItem.placeHolder(uuid: UUID())], toSection: .main) -// } -// } -// dataSource.apply(snapshot, animatingDifferences: false, completion: nil) -// } -// func receiveAccounts(userIDs: [MastodonUser.ID]) { -// guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { -// return -// } -// let request = MastodonUser.sortedFetchRequest -// request.predicate = MastodonUser.predicate(domain: activeMastodonAuthenticationBox.domain, ids: userIDs) -// let mastodonUsers: [MastodonUser]? = { -// let userFetchRequest = MastodonUser.sortedFetchRequest -// userFetchRequest.predicate = MastodonUser.predicate(domain: activeMastodonAuthenticationBox.domain, ids: ids) -// userFetchRequest.returnsObjectsAsFaults = false -// do { -// return try self.context.managedObjectContext.fetch(userFetchRequest) -// } catch { -// assertionFailure(error.localizedDescription) -// return nil -// } -// }() -// if let users = mastodonUsers { -// let sortedUsers = users.sorted { (user1, user2) -> Bool in -// (ids.firstIndex(of: user1.id) ?? 0) < (ids.firstIndex(of: user2.id) ?? 0) -// } -// accounts.value = sortedUsers.map(\.objectID) -// } -// } - - func followAction(objectID: NSManagedObjectID) -> AnyPublisher, Error>? { - fatalError() -// guard let activeMastodonAuthenticationBox = context.authenticationService.activeMastodonAuthenticationBox.value else { return nil } -// -// let mastodonUser = context.managedObjectContext.object(with: objectID) as! MastodonUser -// return context.apiService.toggleFollow( -// for: mastodonUser, -// activeMastodonAuthenticationBox: activeMastodonAuthenticationBox -// ) - } - -// func checkAccountsFollowState() { -// fatalError() -// guard let currentMastodonUser = currentMastodonUser.value else { -// return -// } -// let users: [MastodonUser] = accounts.value.compactMap { -// guard let user = context.managedObjectContext.object(with: $0) as? MastodonUser else { -// return nil -// } -// let isBlock = user.blockingBy.flatMap { $0.contains(currentMastodonUser) } ?? false -// let isDomainBlock = user.domainBlockingBy.flatMap { $0.contains(currentMastodonUser) } ?? false -// if isBlock || isDomainBlock { -// return nil -// } else { -// return user -// } -// } -// accounts.value = users.map(\.objectID) -// -// let followingUsers = users.filter { user -> Bool in -// let isFollowing = user.followingBy.flatMap { $0.contains(currentMastodonUser) } ?? false -// let isPending = user.followRequestedBy.flatMap { $0.contains(currentMastodonUser) } ?? false -// return isFollowing || isPending -// }.map(\.objectID) -// -// selectedAccounts.value = followingUsers -// } } diff --git a/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell+ViewModel.swift b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell+ViewModel.swift new file mode 100644 index 000000000..722f76180 --- /dev/null +++ b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell+ViewModel.swift @@ -0,0 +1,139 @@ +// +// SuggestionAccountTableViewCell+ViewModel.swift +// Mastodon +// +// Created by MainasuK on 2022-2-16. +// + +import UIKit +import Combine +import CoreDataStack +import MastodonAsset +import MastodonMeta +import Meta + +extension SuggestionAccountTableViewCell { + + class ViewModel { + var disposeBag = Set() + + @Published public var userIdentifier: UserIdentifier? // me + + @Published var avatarImageURL: URL? + @Published public var authorName: MetaContent? + @Published public var authorUsername: String? + + @Published var isFollowing = false + @Published var isPending = false + + func prepareForReuse() { + isFollowing = false + isPending = false + } + } + +} + +extension SuggestionAccountTableViewCell.ViewModel { + func bind(cell: SuggestionAccountTableViewCell) { + // avatar + $avatarImageURL.removeDuplicates() + .sink { url in + let configuration = AvatarImageView.Configuration(url: url) + cell.avatarButton.avatarImageView.configure(configuration: configuration) + cell.avatarButton.avatarImageView.configure(cornerConfiguration: .init(corner: .fixed(radius: 12))) + } + .store(in: &disposeBag) + // name + $authorName + .sink { metaContent in + let metaContent = metaContent ?? PlaintextMetaContent(string: " ") + cell.titleLabel.configure(content: metaContent) + } + .store(in: &disposeBag) + // username + $authorUsername + .map { text -> String in + guard let text = text else { return "" } + return "@\(text)" + } + .sink { username in + cell.subTitleLabel.text = username + } + .store(in: &disposeBag) + // button + Publishers.CombineLatest( + $isFollowing, + $isPending + ) + .sink { isFollowing, isPending in + let isFollowState = isFollowing || isPending + let imageName = isFollowState ? "minus.circle.fill" : "plus.circle" + let image = UIImage(systemName: imageName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 22, weight: .regular)) + cell.button.setImage(image, for: .normal) + cell.button.tintColor = isFollowState ? Asset.Colors.danger.color : Asset.Colors.Label.secondary.color + } + .store(in: &disposeBag) + } +} + +extension SuggestionAccountTableViewCell { + func configure(user: MastodonUser) { + // author avatar + Publishers.CombineLatest( + user.publisher(for: \.avatar), + UserDefaults.shared.publisher(for: \.preferredStaticAvatar) + ) + .map { _ in user.avatarImageURL() } + .assign(to: \.avatarImageURL, on: viewModel) + .store(in: &disposeBag) + // author name + Publishers.CombineLatest( + user.publisher(for: \.displayName), + user.publisher(for: \.emojis) + ) + .map { _, emojis in + do { + let content = MastodonContent(content: user.displayNameWithFallback, emojis: emojis.asDictionary) + let metaContent = try MastodonMetaContent.convert(document: content) + return metaContent + } catch { + assertionFailure(error.localizedDescription) + return PlaintextMetaContent(string: user.displayNameWithFallback) + } + } + .assign(to: \.authorName, on: viewModel) + .store(in: &disposeBag) + // author username + user.publisher(for: \.acct) + .map { $0 as String? } + .assign(to: \.authorUsername, on: viewModel) + .store(in: &disposeBag) + // isFollowing + Publishers.CombineLatest( + viewModel.$userIdentifier, + user.publisher(for: \.followingBy) + ) + .map { userIdentifier, followingBy in + guard let userIdentifier = userIdentifier else { return false } + return followingBy.contains(where: { + $0.id == userIdentifier.userID && $0.domain == userIdentifier.domain + }) + } + .assign(to: \.isFollowing, on: viewModel) + .store(in: &disposeBag) + // isPending + Publishers.CombineLatest( + viewModel.$userIdentifier, + user.publisher(for: \.followRequestedBy) + ) + .map { userIdentifier, followRequestedBy in + guard let userIdentifier = userIdentifier else { return false } + return followRequestedBy.contains(where: { + $0.id == userIdentifier.userID && $0.domain == userIdentifier.domain + }) + } + .assign(to: \.isPending, on: viewModel) + .store(in: &disposeBag) + } +} diff --git a/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift index 5e3a2e1f1..47bd9d6b3 100644 --- a/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift +++ b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift @@ -5,6 +5,7 @@ // Created by sxiaojian on 2021/4/21. // +import os.log import Combine import CoreData import CoreDataStack @@ -15,23 +16,28 @@ import MetaTextKit import MastodonMeta import MastodonAsset import MastodonLocalization +import MastodonUI protocol SuggestionAccountTableViewCellDelegate: AnyObject { - func accountButtonPressed(objectID: NSManagedObjectID, cell: SuggestionAccountTableViewCell) + func suggestionAccountTableViewCell(_ cell: SuggestionAccountTableViewCell, friendshipDidPressed button: UIButton) } final class SuggestionAccountTableViewCell: UITableViewCell { + + let logger = Logger(subsystem: "SuggestionAccountTableViewCell", category: "View") + var disposeBag = Set() + weak var delegate: SuggestionAccountTableViewCellDelegate? - let _imageView: UIImageView = { - let imageView = UIImageView() - imageView.tintColor = Asset.Colors.Label.primary.color - imageView.layer.cornerRadius = 4 - imageView.clipsToBounds = true - return imageView + public private(set) lazy var viewModel: ViewModel = { + let viewModel = ViewModel() + viewModel.bind(cell: self) + return viewModel }() + let avatarButton = AvatarButton() + let titleLabel = MetaLabel(style: .statusName) let subTitleLabel: UILabel = { @@ -49,12 +55,8 @@ final class SuggestionAccountTableViewCell: UITableViewCell { let button: HighlightDimmableButton = { let button = HighlightDimmableButton(type: .custom) - if let plusImage = UIImage(systemName: "plus.circle", withConfiguration: UIImage.SymbolConfiguration(pointSize: 22, weight: .regular))?.withRenderingMode(.alwaysTemplate) { - button.setImage(plusImage, for: .normal) - } - if let minusImage = UIImage(systemName: "minus.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 22, weight: .regular))?.withRenderingMode(.alwaysTemplate) { - button.setImage(minusImage, for: .selected) - } + let image = UIImage(systemName: "plus.circle", withConfiguration: UIImage.SymbolConfiguration(pointSize: 22, weight: .regular)) + button.setImage(image, for: .normal) return button }() @@ -66,9 +68,10 @@ final class SuggestionAccountTableViewCell: UITableViewCell { override func prepareForReuse() { super.prepareForReuse() - _imageView.af.cancelImageRequest() - _imageView.image = nil + disposeBag.removeAll() + avatarButton.avatarImageView.prepareForReuse() + viewModel.prepareForReuse() } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { @@ -80,9 +83,11 @@ final class SuggestionAccountTableViewCell: UITableViewCell { super.init(coder: coder) configure() } + } extension SuggestionAccountTableViewCell { + private func configure() { let containerStackView = UIStackView() containerStackView.axis = .horizontal @@ -99,11 +104,11 @@ extension SuggestionAccountTableViewCell { containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), ]) - _imageView.translatesAutoresizingMaskIntoConstraints = false - containerStackView.addArrangedSubview(_imageView) + avatarButton.translatesAutoresizingMaskIntoConstraints = false + containerStackView.addArrangedSubview(avatarButton) NSLayoutConstraint.activate([ - _imageView.widthAnchor.constraint(equalToConstant: 42).priority(.required - 1), - _imageView.heightAnchor.constraint(equalToConstant: 42).priority(.required - 1), + avatarButton.widthAnchor.constraint(equalToConstant: 42).priority(.required - 1), + avatarButton.heightAnchor.constraint(equalToConstant: 42).priority(.required - 1), ]) let textStackView = UIStackView() @@ -139,56 +144,31 @@ extension SuggestionAccountTableViewCell { buttonContainer.centerXAnchor.constraint(equalTo: button.centerXAnchor), buttonContainer.centerYAnchor.constraint(equalTo: button.centerYAnchor), ]) + + button.addTarget(self, action: #selector(SuggestionAccountTableViewCell.buttonDidPressed(_:)), for: .touchUpInside) } - func config(with account: MastodonUser) { - if let url = account.avatarImageURL() { - _imageView.af.setImage( - withURL: url, - placeholderImage: UIImage.placeholder(color: .systemFill), - imageTransition: .crossDissolve(0.2) - ) - } - let mastodonContent = MastodonContent(content: account.displayNameWithFallback, emojis: account.emojis.asDictionary) - do { - let metaContent = try MastodonMetaContent.convert(document: mastodonContent) - titleLabel.configure(content: metaContent) - } catch { - let metaContent = PlaintextMetaContent(string: account.displayNameWithFallback) - titleLabel.configure(content: metaContent) - } - subTitleLabel.text = "@" + account.acct - button.isSelected = isSelected - button.publisher(for: .touchUpInside) - .sink { [weak self] _ in - guard let self = self else { return } - self.delegate?.accountButtonPressed(objectID: account.objectID, cell: self) - } - .store(in: &disposeBag) - button.publisher(for: \.isSelected) - .sink { [weak self] isSelected in - if isSelected { - self?.button.tintColor = Asset.Colors.danger.color - } else { - self?.button.tintColor = Asset.Colors.Label.secondary.color - } - } - .store(in: &disposeBag) - activityIndicatorView.publisher(for: \.isHidden) - .receive(on: DispatchQueue.main) - .sink { [weak self] isHidden in - self?.button.isHidden = !isHidden - } - .store(in: &disposeBag) +} + +extension SuggestionAccountTableViewCell { + @objc private func buttonDidPressed(_ sender: UIButton) { + logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") + delegate?.suggestionAccountTableViewCell(self, friendshipDidPressed: sender) } +} + +extension SuggestionAccountTableViewCell { func startAnimating() { activityIndicatorView.isHidden = false activityIndicatorView.startAnimating() + button.isHidden = true } func stopAnimating() { activityIndicatorView.stopAnimating() activityIndicatorView.isHidden = true + button.isHidden = false } + } diff --git a/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/MastodonUser.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/MastodonUser.swift index 3def7efd8..4b16b7c7b 100644 --- a/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/MastodonUser.swift +++ b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/MastodonUser.swift @@ -203,6 +203,14 @@ extension MastodonUser { ]) } + public static func predicate(followingBy userID: MastodonUser.ID) -> NSPredicate { + NSPredicate(format: "ANY %K.%K == %@", #keyPath(MastodonUser.followingBy), #keyPath(MastodonUser.id), userID) + } + + public static func predicate(followRequestedBy userID: MastodonUser.ID) -> NSPredicate { + NSPredicate(format: "ANY %K.%K == %@", #keyPath(MastodonUser.followRequestedBy), #keyPath(MastodonUser.id), userID) + } + } diff --git a/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift index c9946b3fb..d17d1c616 100644 --- a/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift +++ b/MastodonSDK/Sources/CoreDataStack/Entity/Mastodon/Status.swift @@ -197,166 +197,6 @@ extension Status { return object } - -// @discardableResult -// public static func insert( -// into context: NSManagedObjectContext, -// property: Property, -// author: MastodonUser, -// reblog: Status?, -// application: Application?, -// replyTo: Status?, -// poll: Poll?, -// mentions: [Mention]?, -// mediaAttachments: [Attachment]?, -// favouritedBy: MastodonUser?, -// rebloggedBy: MastodonUser?, -// mutedBy: MastodonUser?, -// bookmarkedBy: MastodonUser?, -// pinnedBy: MastodonUser? -// ) -> Status { -// let status: Status = context.insertObject() -// -// status.identifier = property.identifier -// status.domain = property.domain -// -// status.id = property.id -// status.uri = property.uri -// status.createdAt = property.createdAt -// status.content = property.content -// -// status.visibility = property.visibility -// status.sensitive = property.sensitive -// status.spoilerText = property.spoilerText -// status.application = application -// -// status.emojisData = property.emojisData -// -// status.reblogsCount = property.reblogsCount -// status.favouritesCount = property.favouritesCount -// status.repliesCount = property.repliesCount -// -// status.url = property.url -// status.inReplyToID = property.inReplyToID -// status.inReplyToAccountID = property.inReplyToAccountID -// -// status.language = property.language -// status.text = property.text -// -// status.author = author -// status.reblog = reblog -// -// status.pinnedBy = pinnedBy -// status.poll = poll -// -// if let mentions = mentions { -// status.mutableSetValue(forKey: #keyPath(Status.mentions)).addObjects(from: mentions) -// } -// if let mediaAttachments = mediaAttachments { -// status.mutableSetValue(forKey: #keyPath(Status.mediaAttachments)).addObjects(from: mediaAttachments) -// } -// if let favouritedBy = favouritedBy { -// status.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).add(favouritedBy) -// } -// if let rebloggedBy = rebloggedBy { -// status.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).add(rebloggedBy) -// } -// if let mutedBy = mutedBy { -// status.mutableSetValue(forKey: #keyPath(Status.mutedBy)).add(mutedBy) -// } -// if let bookmarkedBy = bookmarkedBy { -// status.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).add(bookmarkedBy) -// } -// -// status.updatedAt = property.networkDate -// -// return status -// } -// -// public func update(emojisData: Data?) { -// if self.emojisData != emojisData { -// self.emojisData = emojisData -// } -// } -// -// public func update(reblogsCount: NSNumber) { -// if self.reblogsCount.intValue != reblogsCount.intValue { -// self.reblogsCount = reblogsCount -// } -// } -// -// public func update(favouritesCount: NSNumber) { -// if self.favouritesCount.intValue != favouritesCount.intValue { -// self.favouritesCount = favouritesCount -// } -// } -// -// public func update(repliesCount: NSNumber?) { -// guard let count = repliesCount else { -// return -// } -// if self.repliesCount?.intValue != count.intValue { -// self.repliesCount = repliesCount -// } -// } -// -// public func update(replyTo: Status?) { -// if self.replyTo != replyTo { -// self.replyTo = replyTo -// } -// } -// -// public func update(liked: Bool, by mastodonUser: MastodonUser) { -// if liked { -// if !(self.favouritedBy ?? Set()).contains(mastodonUser) { -// self.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).add(mastodonUser) -// } -// } else { -// if (self.favouritedBy ?? Set()).contains(mastodonUser) { -// self.mutableSetValue(forKey: #keyPath(Status.favouritedBy)).remove(mastodonUser) -// } -// } -// } -// -// public func update(reblogged: Bool, by mastodonUser: MastodonUser) { -// if reblogged { -// if !(self.rebloggedBy ?? Set()).contains(mastodonUser) { -// self.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).add(mastodonUser) -// } -// } else { -// if (self.rebloggedBy ?? Set()).contains(mastodonUser) { -// self.mutableSetValue(forKey: #keyPath(Status.rebloggedBy)).remove(mastodonUser) -// } -// } -// } -// -// public func update(muted: Bool, by mastodonUser: MastodonUser) { -// if muted { -// if !(self.mutedBy ?? Set()).contains(mastodonUser) { -// self.mutableSetValue(forKey: #keyPath(Status.mutedBy)).add(mastodonUser) -// } -// } else { -// if (self.mutedBy ?? Set()).contains(mastodonUser) { -// self.mutableSetValue(forKey: #keyPath(Status.mutedBy)).remove(mastodonUser) -// } -// } -// } -// -// public func update(bookmarked: Bool, by mastodonUser: MastodonUser) { -// if bookmarked { -// if !(self.bookmarkedBy ?? Set()).contains(mastodonUser) { -// self.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).add(mastodonUser) -// } -// } else { -// if (self.bookmarkedBy ?? Set()).contains(mastodonUser) { -// self.mutableSetValue(forKey: #keyPath(Status.bookmarkedBy)).remove(mastodonUser) -// } -// } -// } -// -// public func didUpdate(at networkDate: Date) { -// self.updatedAt = networkDate -// } } @@ -737,78 +577,3 @@ extension Status { mutableSetValue(forKey: #keyPath(Status.feeds)).add(feed) } } - - -//extension Status { -// public struct Property { -// -// public let identifier: ID -// public let domain: String -// -// public let id: String -// public let uri: String -// public let createdAt: Date -// public let content: String -// -// public let visibility: String? -// public let sensitive: Bool -// public let spoilerText: String? -// -// public let emojisData: Data? -// -// public let reblogsCount: NSNumber -// public let favouritesCount: NSNumber -// public let repliesCount: NSNumber? -// -// public let url: String? -// public let inReplyToID: Status.ID? -// public let inReplyToAccountID: MastodonUser.ID? -// public let language: String? // (ISO 639 Part @1 two-letter language code) -// public let text: String? -// -// public let networkDate: Date -// -// public init( -// domain: String, -// id: String, -// uri: String, -// createdAt: Date, -// content: String, -// visibility: String?, -// sensitive: Bool, -// spoilerText: String?, -// emojisData: Data?, -// reblogsCount: NSNumber, -// favouritesCount: NSNumber, -// repliesCount: NSNumber?, -// url: String?, -// inReplyToID: Status.ID?, -// inReplyToAccountID: MastodonUser.ID?, -// language: String?, -// text: String?, -// networkDate: Date -// ) { -// self.identifier = id + "@" + domain -// self.domain = domain -// self.id = id -// self.uri = uri -// self.createdAt = createdAt -// self.content = content -// self.visibility = visibility -// self.sensitive = sensitive -// self.spoilerText = spoilerText -// self.emojisData = emojisData -// self.reblogsCount = reblogsCount -// self.favouritesCount = favouritesCount -// self.repliesCount = repliesCount -// self.url = url -// self.inReplyToID = inReplyToID -// self.inReplyToAccountID = inReplyToAccountID -// self.language = language -// self.text = text -// self.networkDate = networkDate -// } -// -// } -//} -// From b4707e3567db176cd4965db3039f345cf0c7b85d Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 16 Feb 2022 17:32:03 +0800 Subject: [PATCH 285/374] chore: update badge tint color --- Mastodon/Scene/Account/View/BadgeButton.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Mastodon/Scene/Account/View/BadgeButton.swift b/Mastodon/Scene/Account/View/BadgeButton.swift index a0101ef5a..785053be9 100644 --- a/Mastodon/Scene/Account/View/BadgeButton.swift +++ b/Mastodon/Scene/Account/View/BadgeButton.swift @@ -26,10 +26,10 @@ final class BadgeButton: UIButton { extension BadgeButton { private func _init() { titleLabel?.font = UIFontMetrics(forTextStyle: .caption1).scaledFont(for: .systemFont(ofSize: 13, weight: .medium)) - setBackgroundColor(Asset.Colors.badgeBackground.color, for: .normal) - setTitleColor(.white, for: .normal) + setBackgroundColor(.systemBackground, for: .normal) + setTitleColor(.label, for: .normal) - contentEdgeInsets = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: 5) + contentEdgeInsets = UIEdgeInsets(top: 6, left: 6, bottom: 6, right: 6) } override func layoutSubviews() { From bb4f9f8e20f3706836f520f49f2ddb3ab39320c7 Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 16 Feb 2022 19:47:51 +0800 Subject: [PATCH 286/374] feat: restore keyboard shortcut supports --- Mastodon.xcodeproj/project.pbxproj | 10 +- .../Provider/DataSourceFacade+Status.swift | 4 + ...tatusTableViewControllerNavigateable.swift | 191 +++++++ ...ider+TableViewControllerNavigateable.swift | 156 ++++++ .../HomeTimelineViewController.swift | 45 +- .../NotificationTimelineViewController.swift | 121 +++++ .../NotificationViewController.swift | 498 +++--------------- .../Favorite/FavoriteViewController.swift | 108 +--- .../Scene/Profile/ProfileViewController.swift | 11 + .../Timeline/UserTimelineViewController.swift | 17 + .../Scene/Thread/ThreadViewController.swift | 136 +---- 11 files changed, 631 insertions(+), 666 deletions(-) create mode 100644 Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewControllerNavigateable.swift create mode 100644 Mastodon/Protocol/Provider/DataSourceProvider+TableViewControllerNavigateable.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 0fc94fd31..aaf6a2cf3 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -547,6 +547,8 @@ DBD376AC2692ECDB007FEC24 /* ThemePreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD376AB2692ECDB007FEC24 /* ThemePreference.swift */; }; DBD376B2269302A4007FEC24 /* UITableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD376B1269302A4007FEC24 /* UITableViewCell.swift */; }; DBD5B1F627BCD3D200BD6B38 /* SuggestionAccountTableViewCell+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD5B1F527BCD3D200BD6B38 /* SuggestionAccountTableViewCell+ViewModel.swift */; }; + DBD5B1F827BCFD9D00BD6B38 /* DataSourceProvider+TableViewControllerNavigateable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD5B1F727BCFD9D00BD6B38 /* DataSourceProvider+TableViewControllerNavigateable.swift */; }; + DBD5B1FA27BD013700BD6B38 /* DataSourceProvider+StatusTableViewControllerNavigateable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD5B1F927BD013700BD6B38 /* DataSourceProvider+StatusTableViewControllerNavigateable.swift */; }; DBD9149025DF6D8D00903DFD /* APIService+Onboarding.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD9148F25DF6D8D00903DFD /* APIService+Onboarding.swift */; }; DBE0821525CD382600FD6BBD /* MastodonRegisterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE0821425CD382600FD6BBD /* MastodonRegisterViewController.swift */; }; DBE0822425CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBE0822325CD3F1E00FD6BBD /* MastodonRegisterViewModel.swift */; }; @@ -1281,6 +1283,8 @@ DBD376AB2692ECDB007FEC24 /* ThemePreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemePreference.swift; sourceTree = ""; }; DBD376B1269302A4007FEC24 /* UITableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITableViewCell.swift; sourceTree = ""; }; DBD5B1F527BCD3D200BD6B38 /* SuggestionAccountTableViewCell+ViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SuggestionAccountTableViewCell+ViewModel.swift"; sourceTree = ""; }; + DBD5B1F727BCFD9D00BD6B38 /* DataSourceProvider+TableViewControllerNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceProvider+TableViewControllerNavigateable.swift"; sourceTree = ""; }; + DBD5B1F927BD013700BD6B38 /* DataSourceProvider+StatusTableViewControllerNavigateable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "DataSourceProvider+StatusTableViewControllerNavigateable.swift"; sourceTree = ""; }; DBD9148F25DF6D8D00903DFD /* APIService+Onboarding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+Onboarding.swift"; sourceTree = ""; }; DBDC1CF9272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ku-TR"; path = "ku-TR.lproj/Intents.strings"; sourceTree = ""; }; DBDC1CFC272C0FD600055C3D /* ku-TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ku-TR"; path = "ku-TR.lproj/InfoPlist.strings"; sourceTree = ""; }; @@ -2494,6 +2498,8 @@ DB697DDA278F4DE3004EF2F7 /* DataSourceProvider+StatusTableViewCellDelegate.swift */, DB023D2927A0FE5C005AC798 /* DataSourceProvider+NotificationTableViewCellDelegate.swift */, DB0FCB7727957678006C02E2 /* DataSourceProvider+UITableViewDelegate.swift */, + DBD5B1F727BCFD9D00BD6B38 /* DataSourceProvider+TableViewControllerNavigateable.swift */, + DBD5B1F927BD013700BD6B38 /* DataSourceProvider+StatusTableViewControllerNavigateable.swift */, ); path = Provider; sourceTree = ""; @@ -2649,11 +2655,11 @@ DB9D6BFD25E4F57B0051B173 /* Notification */, DB938EEB2623F52600E5B6C1 /* Thread */, 5B24BBD6262DB14800A9381B /* Report */, - DB9D6BEE25E4F5370051B173 /* Search */, DB789A1025F9F29B0071ACA0 /* Compose */, DB6180DE263919350018D199 /* MediaPreview */, 2DAC9E36262FC20B0062E1A6 /* SuggestionAccount */, DB9D6C0825E4F5A60051B173 /* Profile */, + DB9D6BEE25E4F5370051B173 /* Search */, 5B90C455262599800002E742 /* Settings */, ); path = Scene; @@ -4128,6 +4134,7 @@ DB1FD45025F26FA1004CFCFC /* MastodonPickServerViewModel+Diffable.swift in Sources */, DBD376AC2692ECDB007FEC24 /* ThemePreference.swift in Sources */, DB4F097D26A03A5B00D62E92 /* SearchHistoryItem.swift in Sources */, + DBD5B1FA27BD013700BD6B38 /* DataSourceProvider+StatusTableViewControllerNavigateable.swift in Sources */, DB68046C2636DC9E00430867 /* MastodonNotification.swift in Sources */, DBAE3F9E2616E308004B8251 /* APIService+Mute.swift in Sources */, DB427DD625BAA00100D1B89D /* AppDelegate.swift in Sources */, @@ -4241,6 +4248,7 @@ DB0FCB962797E6C2006C02E2 /* SearchResultViewController+DataSourceProvider.swift in Sources */, DB66729C25F9F91F00D60309 /* ComposeStatusItem.swift in Sources */, DB6180E326391A4C0018D199 /* ViewControllerAnimatedTransitioning.swift in Sources */, + DBD5B1F827BCFD9D00BD6B38 /* DataSourceProvider+TableViewControllerNavigateable.swift in Sources */, 0FB3D31E25E534C700AAD544 /* PickServerCategoryCollectionViewCell.swift in Sources */, DB0FCB882796BDA9006C02E2 /* SearchItem.swift in Sources */, DB336F3D278D80040031E64B /* FeedFetchedResultsController.swift in Sources */, diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift index a98d34f34..eab85e95e 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift @@ -10,6 +10,7 @@ import CoreDataStack import MastodonUI import MastodonLocalization +// Delete extension DataSourceFacade { static func responseToDeleteStatus( @@ -25,6 +26,7 @@ extension DataSourceFacade { } +// Share extension DataSourceFacade { @MainActor @@ -74,6 +76,7 @@ extension DataSourceFacade { } } +// ActionToolBar extension DataSourceFacade { @MainActor static func responseToActionToolbar( @@ -133,6 +136,7 @@ extension DataSourceFacade { } +// menu extension DataSourceFacade { struct MenuContext { diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewControllerNavigateable.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewControllerNavigateable.swift new file mode 100644 index 000000000..fb4a7d843 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewControllerNavigateable.swift @@ -0,0 +1,191 @@ +// +// DataSourceProvider+StatusTableViewControllerNavigateable.swift +// Mastodon +// +// Created by MainasuK on 2022-2-16. +// + +import os.log +import UIKit +import CoreDataStack + +extension StatusTableViewControllerNavigateableCore where Self: DataSourceProvider & StatusTableViewControllerNavigateableRelay { + + var statusNavigationKeyCommands: [UIKeyCommand] { + StatusTableViewNavigation.allCases.map { navigation in + UIKeyCommand( + title: navigation.title, + image: nil, + action: #selector(Self.statusKeyCommandHandlerRelay(_:)), + input: navigation.input, + modifierFlags: navigation.modifierFlags, + propertyList: navigation.propertyList, + alternates: [], + discoverabilityTitle: nil, + attributes: [], + state: .off + ) + } + } + +} + +extension StatusTableViewControllerNavigateableCore where Self: DataSourceProvider { + + func statusKeyCommandHandler(_ sender: UIKeyCommand) { + guard let rawValue = sender.propertyList as? String, + let navigation = StatusTableViewNavigation(rawValue: rawValue) else { return } + + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: %s", ((#file as NSString).lastPathComponent), #line, #function, navigation.title) + Task { + switch navigation { + case .openAuthorProfile: await openAuthorProfile(target: .status) + case .openRebloggerProfile: await openAuthorProfile(target: .reblog) + case .replyStatus: await replyStatus() + case .toggleReblog: await toggleReblog() + case .toggleFavorite: await toggleFavorite() + case .toggleContentWarning: await toggleContentWarning() + case .previewImage: await previewImage() + } + } + } + +} + +// status coordinate +extension StatusTableViewControllerNavigateableCore where Self: DataSourceProvider { + + @MainActor + private func statusRecord() async -> ManagedObjectRecord? { + guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return nil } + let source = DataSourceItem.Source(indexPath: indexPathForSelectedRow) + guard let item = await item(from: source) else { return nil } + + switch item { + case .status(let record): + return record + case .notification(let record): + let _statusRecord: ManagedObjectRecord? = try? await context.managedObjectContext.perform { + guard let notification = record.object(in: self.context.managedObjectContext) else { return nil } + guard let status = notification.status else { return nil } + return .init(objectID: status.objectID) + } + guard let statusRecord = _statusRecord else { + return nil + } + return statusRecord + default: + return nil + } + } + + @MainActor + private func openAuthorProfile(target: DataSourceFacade.StatusTarget) async { + guard let status = await statusRecord() else { return } + await DataSourceFacade.coordinateToProfileScene( + provider: self, + target: target, + status: status + ) + } + + @MainActor + private func replyStatus() async { + guard let status = await statusRecord() else { return } + + guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else { return } + let selectionFeedbackGenerator = UISelectionFeedbackGenerator() + selectionFeedbackGenerator.selectionChanged() + + let composeViewModel = ComposeViewModel( + context: self.context, + composeKind: .reply(status: status), + authenticationBox: authenticationBox + ) + self.coordinator.present( + scene: .compose(viewModel: composeViewModel), + from: self, + transition: .modal(animated: true, completion: nil) + ) + } + + @MainActor + private func previewImage() async { + guard let status = await statusRecord() else { return } + + guard let provider = self as? (DataSourceProvider & MediaPreviewableViewController) else { return } + guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow, + let cell = tableView.cellForRow(at: indexPathForSelectedRow) as? StatusTableViewCell + else { return } + + guard let mediaView = cell.statusView.mediaGridContainerView.mediaViews.first else { return } + + do { + try await DataSourceFacade.coordinateToMediaPreviewScene( + dependency: provider, + status: status, + previewContext: DataSourceFacade.AttachmentPreviewContext( + containerView: .mediaGridContainerView(cell.statusView.mediaGridContainerView), + mediaView: mediaView, + index: 0 + ) + ) + } catch { + assertionFailure() + } + } + +} + +// toggle +extension StatusTableViewControllerNavigateableCore where Self: DataSourceProvider { + + @MainActor + private func toggleReblog() async { + guard let status = await statusRecord() else { return } + + guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else { return } + + do { + try await DataSourceFacade.responseToStatusReblogAction( + provider: self, + status: status, + authenticationBox: authenticationBox + ) + } catch { + assertionFailure() + } + } + + @MainActor + private func toggleFavorite() async { + guard let status = await statusRecord() else { return } + + guard let authenticationBox = self.context.authenticationService.activeMastodonAuthenticationBox.value else { return } + + do { + try await DataSourceFacade.responseToStatusFavoriteAction( + provider: self, + status: status, + authenticationBox: authenticationBox + ) + } catch { + assertionFailure() + } + } + + @MainActor + private func toggleContentWarning() async { + guard let status = await statusRecord() else { return } + + do { + try await DataSourceFacade.responseToToggleSensitiveAction( + dependency: self, + status: status + ) + } catch { + assertionFailure() + } + } + +} diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+TableViewControllerNavigateable.swift b/Mastodon/Protocol/Provider/DataSourceProvider+TableViewControllerNavigateable.swift new file mode 100644 index 000000000..f7e50cff8 --- /dev/null +++ b/Mastodon/Protocol/Provider/DataSourceProvider+TableViewControllerNavigateable.swift @@ -0,0 +1,156 @@ +// +// DataSourceProvider+TableViewControllerNavigateable.swift +// Mastodon +// +// Created by MainasuK on 2022-2-16. +// + +import os.log +import UIKit + +extension TableViewControllerNavigateableCore where Self: TableViewControllerNavigateableRelay { + var navigationKeyCommands: [UIKeyCommand] { + TableViewNavigation.allCases.map { navigation in + UIKeyCommand( + title: navigation.title, + image: nil, + action: #selector(Self.navigateKeyCommandHandlerRelay(_:)), + input: navigation.input, + modifierFlags: navigation.modifierFlags, + propertyList: navigation.propertyList, + alternates: [], + discoverabilityTitle: nil, + attributes: [], + state: .off + ) + } + } +} + +extension TableViewControllerNavigateableCore { + + func navigateKeyCommandHandler(_ sender: UIKeyCommand) { + guard let rawValue = sender.propertyList as? String, + let navigation = TableViewNavigation(rawValue: rawValue) else { return } + + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s: %s", ((#file as NSString).lastPathComponent), #line, #function, navigation.title) + switch navigation { + case .up: navigate(direction: .up) + case .down: navigate(direction: .down) + case .back: back() + case .open: open() + } + } + +} + + +// navigate status up/down +extension TableViewControllerNavigateableCore where Self: DataSourceProvider { + + func navigate(direction: TableViewNavigationDirection) { + if let indexPathForSelectedRow = tableView.indexPathForSelectedRow { + // navigate up/down on the current selected item + Task { + await navigateToStatus(direction: direction, indexPath: indexPathForSelectedRow) + } + } else { + // set first visible item selected + navigateToFirstVisibleStatus() + } + } + + @MainActor + private func navigateToStatus( + direction: TableViewNavigationDirection, + indexPath: IndexPath + ) async { + let row: Int = { + let index = indexPath.row + switch direction { + case .up: return index - 1 + case .down: return index + 1 + } + }() + let indexPath = IndexPath(row: row , section: indexPath.section) + guard indexPath.section >= 0, indexPath.section < tableView.numberOfSections, + indexPath.row >= 0, indexPath.row < tableView.numberOfRows(inSection: indexPath.section) + else { return } + + let scrollPosition: UITableView.ScrollPosition = overrideNavigationScrollPosition ?? Self.navigateScrollPosition(tableView: tableView, indexPath: indexPath) + tableView.selectRow(at: indexPath, animated: true, scrollPosition: scrollPosition) + } + + private func navigateToFirstVisibleStatus() { + guard var indexPathsForVisibleRows = tableView.indexPathsForVisibleRows?.sorted() else { return } + + if indexPathsForVisibleRows.first?.row != 0 { + // drop first when visible not the first cell of table + indexPathsForVisibleRows.removeFirst() + } + + guard let indexPath = indexPathsForVisibleRows.first else { return } + let scrollPosition: UITableView.ScrollPosition = overrideNavigationScrollPosition ?? Self.navigateScrollPosition(tableView: tableView, indexPath: indexPath) + tableView.selectRow(at: indexPath, animated: true, scrollPosition: scrollPosition) + } + + static func validNavigateableItem(_ item: DataSourceItem) -> Bool { + switch item { + case .status, + .notification: + return true + default: + return false + } + } + +} + +extension TableViewControllerNavigateableCore { + // check is visible and not the first and last + static func navigateScrollPosition(tableView: UITableView, indexPath: IndexPath) -> UITableView.ScrollPosition { + let middleVisibleIndexPaths = (tableView.indexPathsForVisibleRows ?? []) + .sorted() + .dropFirst() + .dropLast() + guard middleVisibleIndexPaths.contains(indexPath) else { + return .top + } + guard middleVisibleIndexPaths.count > 2 else { + return .middle + } + return .none + } + +} + +extension TableViewControllerNavigateableCore where Self: DataSourceProvider { + func open() { + guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } + let source = DataSourceItem.Source(indexPath: indexPathForSelectedRow) + + Task { @MainActor in + guard let item = await item(from: source) else { return } + switch item { + case .status(let record): + await DataSourceFacade.coordinateToStatusThreadScene( + provider: self, + target: .status, + status: record + ) + case .notification(let record): + assertionFailure() + default: + assertionFailure() + } + } // end Task +// StatusProviderFacade.coordinateToStatusThreadScene(for: .primary, provider: self, indexPath: indexPathForSelectedRow) + } +} + +extension TableViewControllerNavigateableCore where Self: UIViewController { + func back() { + UserDefaults.shared.backKeyCommandPressDate = Date() + navigationController?.popViewController(animated: true) + } +} diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index b8ad6d05e..fda5a471b 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -540,19 +540,6 @@ extension HomeTimelineViewController: UITableViewDelegate, AutoGenerateTableView } // sourcery:end - -// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { -// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// } - } // MARK: - TimelineMiddleLoaderTableViewCellDelegate @@ -633,19 +620,19 @@ extension HomeTimelineViewController: HomeTimelineNavigationBarTitleViewDelegate } } -//extension HomeTimelineViewController { -// override var keyCommands: [UIKeyCommand]? { -// return navigationKeyCommands + statusNavigationKeyCommands -// } -//} -// -//// MARK: - StatusTableViewControllerNavigateable -//extension HomeTimelineViewController: StatusTableViewControllerNavigateable { -// @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// navigateKeyCommandHandler(sender) -// } -// -// @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// statusKeyCommandHandler(sender) -// } -//} +extension HomeTimelineViewController { + override var keyCommands: [UIKeyCommand]? { + return navigationKeyCommands + statusNavigationKeyCommands + } +} + +// MARK: - StatusTableViewControllerNavigateable +extension HomeTimelineViewController: StatusTableViewControllerNavigateable { + @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { + navigateKeyCommandHandler(sender) + } + + @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { + statusKeyCommandHandler(sender) + } +} diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift index 246630829..bdb4d05cb 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift @@ -9,6 +9,7 @@ import os.log import UIKit import Combine import CoreDataStack +import MastodonLocalization final class NotificationTimelineViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { @@ -183,3 +184,123 @@ extension NotificationTimelineViewController: ScrollViewContainer { var scrollView: UIScrollView? { tableView } } + +extension NotificationTimelineViewController { + override var keyCommands: [UIKeyCommand]? { + return navigationKeyCommands + } +} + +extension NotificationTimelineViewController: TableViewControllerNavigateable { + + func navigate(direction: TableViewNavigationDirection) { + if let indexPathForSelectedRow = tableView.indexPathForSelectedRow { + // navigate up/down on the current selected item + navigateToStatus(direction: direction, indexPath: indexPathForSelectedRow) + } else { + // set first visible item selected + navigateToFirstVisibleStatus() + } + } + + private func navigateToStatus(direction: TableViewNavigationDirection, indexPath: IndexPath) { + guard let diffableDataSource = viewModel.diffableDataSource else { return } + let items = diffableDataSource.snapshot().itemIdentifiers + guard let selectedItem = diffableDataSource.itemIdentifier(for: indexPath), + let selectedItemIndex = items.firstIndex(of: selectedItem) else { + return + } + + let _navigateToItem: NotificationItem? = { + var index = selectedItemIndex + while 0.. 1 { + // drop first when visible not the first cell of table + visibleItems.removeFirst() + } + guard let item = visibleItems.first, let indexPath = diffableDataSource.indexPath(for: item) else { return } + let scrollPosition: UITableView.ScrollPosition = overrideNavigationScrollPosition ?? Self.navigateScrollPosition(tableView: tableView, indexPath: indexPath) + tableView.selectRow(at: indexPath, animated: true, scrollPosition: scrollPosition) + } + + static func validNavigateableItem(_ item: NotificationItem) -> Bool { + switch item { + case .feed: + return true + default: + return false + } + } + + func open() { + guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } + guard let diffableDataSource = viewModel.diffableDataSource else { return } + guard let item = diffableDataSource.itemIdentifier(for: indexPathForSelectedRow) else { return } + + Task { @MainActor in + switch item { + case .feed(let record): + guard let feed = record.object(in: self.context.managedObjectContext) else { return } + guard let notification = feed.notification else { return } + + if let stauts = notification.status { + let threadViewModel = ThreadViewModel( + context: self.context, + optionalRoot: .root(context: .init(status: .init(objectID: stauts.objectID))) + ) + self.coordinator.present( + scene: .thread(viewModel: threadViewModel), + from: self, + transition: .show + ) + } else { + let profileViewModel = ProfileViewModel( + context: self.context, + optionalMastodonUser: notification.account + ) + self.coordinator.present( + scene: .profile(viewModel: profileViewModel), + from: self, + transition: .show + ) + } + default: + break + } + } // end Task + } + + func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { + navigateKeyCommandHandler(sender) + } + +} diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index e1f418e2d..dd4d97047 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -93,96 +93,6 @@ extension NotificationViewController { } } .store(in: &disposeBag) - -// segmentControl.translatesAutoresizingMaskIntoConstraints = false -// navigationItem.titleView = segmentControl -// NSLayoutConstraint.activate([ -// segmentControl.widthAnchor.constraint(equalToConstant: 287) -// ]) -// segmentControl.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .valueChanged) -// -// tableView.translatesAutoresizingMaskIntoConstraints = false -// view.addSubview(tableView) -// NSLayoutConstraint.activate([ -// tableView.topAnchor.constraint(equalTo: view.topAnchor), -// tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), -// tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), -// tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), -// ]) -// -// tableView.refreshControl = refreshControl -// refreshControl.addTarget(self, action: #selector(NotificationViewController.refreshControlValueChanged(_:)), for: .valueChanged) -// -// tableView.delegate = self -// viewModel.tableView = tableView -// viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self -// viewModel.setupDiffableDataSource( -// for: tableView, -// dependency: self, -// delegate: self, -// statusTableViewCellDelegate: self -// ) -// viewModel.viewDidLoad.send() -// -// // bind refresh control -// viewModel.isFetchingLatestNotification -// .receive(on: DispatchQueue.main) -// .sink { [weak self] isFetching in -// guard let self = self else { return } -// if !isFetching { -// UIView.animate(withDuration: 0.5) { [weak self] in -// guard let self = self else { return } -// self.refreshControl.endRefreshing() -// } -// } -// } -// .store(in: &disposeBag) -// -// viewModel.dataSourceDidUpdated -// .receive(on: RunLoop.main) -// .sink { [weak self] in -// guard let self = self else { return } -// guard self.viewModel.needsScrollToTopAfterDataSourceUpdate else { return } -// self.viewModel.needsScrollToTopAfterDataSourceUpdate = false -// DispatchQueue.main.asyncAfter(deadline: .now() + 0.33) { -// self.scrollToTop(animated: true) -// } -// } -// .store(in: &disposeBag) -// -// viewModel.selectedIndex -// .removeDuplicates() -// .receive(on: DispatchQueue.main) -// .sink { [weak self] segment in -// guard let self = self else { return } -// self.segmentControl.selectedSegmentIndex = segment.rawValue -// -// // trigger scroll-to-top after data reload -// self.viewModel.needsScrollToTopAfterDataSourceUpdate = true -// -// guard let domain = self.viewModel.activeMastodonAuthenticationBox.value?.domain, let userID = self.viewModel.activeMastodonAuthenticationBox.value?.userID else { -// return -// } -// -// self.viewModel.needsScrollToTopAfterDataSourceUpdate = true -// -// switch segment { -// case .everyThing: -// self.viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) -// case .mentions: -// self.viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID, typeRaw: Mastodon.Entity.Notification.NotificationType.mention.rawValue) -// } -// } -// .store(in: &disposeBag) -// -// segmentControl.observe(\.selectedSegmentIndex, options: [.new]) { [weak self] segmentControl, _ in -// guard let self = self else { return } -// // scroll to top when select same segment -// if segmentControl.selectedSegmentIndex == self.viewModel.selectedIndex.value.rawValue { -// self.scrollToTop(animated: true) -// } -// } -// .store(in: &observations) } override func viewWillAppear(_ animated: Bool) { @@ -197,19 +107,12 @@ extension NotificationViewController { // needs trigger manually after onboarding dismiss -// setNeedsStatusBarAppearanceUpdate() + setNeedsStatusBarAppearanceUpdate() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) -// DispatchQueue.main.async { [weak self] in -// guard let self = self else { return } -// if (self.viewModel.fetchedResultsController.fetchedObjects ?? []).count == 0 { -//// self.viewModel.loadLatestStateMachine.enter(NotificationViewModel.LoadLatestState.Loading.self) -// } -// } -// // reset notification count context.notificationService.clearNotificationCountForActiveUser() } @@ -265,335 +168,6 @@ extension NotificationViewController { } } -// MARK: - UITableViewDelegate - -extension NotificationViewController: UITableViewDelegate { - -// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { -// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } -// switch item { -// case .notificationStatus: -// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) -// case .bottomLoader: -// if !tableView.isDragging, !tableView.isDecelerating { -// viewModel.loadOldestStateMachine.enter(NotificationViewModel.LoadOldestState.Loading.self) -// } -// default: -// break -// } -// } -// -// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didSelectRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { -// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) -// } -// -// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { -// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) -// } - -} - -//extension NotificationViewController { -// private func open(item: NotificationItem) { -// switch item { -// case .notification(let objectID, _): -// let notification = context.managedObjectContext.object(with: objectID) as! MastodonNotification -// if let status = notification.status { -// let viewModel = ThreadViewModel( -// context: context, -// optionalRoot: .root(context: .init(status: status.asRecord)) -// ) -// coordinator.present(scene: .thread(viewModel: viewModel), from: self, transition: .show) -// } else { -// let viewModel = ProfileViewModel( -// context: context, -// optionalMastodonUser: notification.account -// ) -// coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) -// } -// default: -// break -// } -// } -//} - -// MARK: - NotificationTableViewCellDelegate -//extension NotificationViewController: NotificationTableViewCellDelegate { -// -// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, avatarImageViewDidPressed imageView: UIImageView) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// guard let indexPath = tableView.indexPath(for: cell) else { return } -// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } -// switch item { -// case .notification(let objectID, _): -// guard let notification = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return } -// let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) -// coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) -// default: -// break -// } -// } -// -// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, authorNameLabelDidPressed label: MetaLabel) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// guard let indexPath = tableView.indexPath(for: cell) else { return } -// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } -// switch item { -// case .notification(let objectID, _): -// guard let notification = try? viewModel.fetchedResultsController.managedObjectContext.existingObject(with: objectID) as? MastodonNotification else { return } -// let viewModel = ProfileViewModel(context: context, optionalMastodonUser: notification.account) -// coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) -// default: -// break -// } -// } -// -// func notificationTableViewCell(_ cell: NotificationStatusTableViewCell, notification: MastodonNotification, acceptButtonDidPressed button: UIButton) { -// viewModel.acceptFollowRequest(notification: notification) -// } -// -// func notificationTableViewCell(_ cell: NotificationStatusTableViewCell, notification: MastodonNotification, rejectButtonDidPressed button: UIButton) { -// viewModel.rejectFollowRequest(notification: notification) -// } -// -// func userNameLabelDidPressed(notification: MastodonNotification) { -// let viewModel = CachedProfileViewModel(context: context, mastodonUser: notification.account) -// DispatchQueue.main.async { -// self.coordinator.present(scene: .profile(viewModel: viewModel), from: self, transition: .show) -// } -// } -// -// func parent() -> UIViewController { -// self -// } -// -// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, revealContentWarningButtonDidPressed button: UIButton) { -// StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) -// } -// -// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { -// StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) -// } -// -// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) { -// StatusProviderFacade.responseToStatusContentWarningRevealAction(provider: self, cell: cell) -// } -// -// func notificationStatusTableViewCell(_ cell: NotificationStatusTableViewCell, statusView: StatusView, metaText: MetaText, didSelectMeta meta: Meta) { -// StatusProviderFacade.responseToStatusMetaTextAction(provider: self, cell: cell, metaText: metaText, didSelectMeta: meta) -// } -//} - -// MARK: - UIScrollViewDelegate - -//extension NotificationViewController { -// func scrollViewDidScroll(_ scrollView: UIScrollView) { -// handleScrollViewDidScroll(scrollView) -// } -//} - -// MARK: - ScrollViewContainer -//extension NotificationViewController: ScrollViewContainer { -// -// var scrollView: UIScrollView { tableView } -// -// func scrollToTop(animated: Bool) { -// let indexPath = IndexPath(row: 0, section: 0) -// guard viewModel.diffableDataSource?.itemIdentifier(for: indexPath) != nil else { return } -// tableView.scrollToRow(at: indexPath, at: .top, animated: true) -// } -//} - -// MARK: - AVPlayerViewControllerDelegate -//extension NotificationViewController: AVPlayerViewControllerDelegate { -// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// handlePlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -// -// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// handlePlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -//} - -//// MARK: - statusTableViewCellDelegate -//extension NotificationViewController: StatusTableViewCellDelegate { -// var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { -// return self -// } -//} - -//extension NotificationViewController { -// -// enum CategorySwitch: String, CaseIterable { -// case showEverything -// case showMentions -// -// var title: String { -// switch self { -// case .showEverything: return L10n.Scene.Notification.Keyobard.showEverything -// case .showMentions: return L10n.Scene.Notification.Keyobard.showMentions -// } -// } -// -// // UIKeyCommand input -// var input: String { -// switch self { -// case .showEverything: return "[" // + shift + command -// case .showMentions: return "]" // + shift + command -// } -// } -// -// var modifierFlags: UIKeyModifierFlags { -// switch self { -// case .showEverything: return [.shift, .command] -// case .showMentions: return [.shift, .command] -// } -// } -// -// var propertyList: Any { -// return rawValue -// } -// } -// -// var categorySwitchKeyCommands: [UIKeyCommand] { -// CategorySwitch.allCases.map { category in -// UIKeyCommand( -// title: category.title, -// image: nil, -// action: #selector(NotificationViewController.showCategory(_:)), -// input: category.input, -// modifierFlags: category.modifierFlags, -// propertyList: category.propertyList, -// alternates: [], -// discoverabilityTitle: nil, -// attributes: [], -// state: .off -// ) -// } -// } -// -// @objc private func showCategory(_ sender: UIKeyCommand) { -// os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) -// guard let rawValue = sender.propertyList as? String, -// let category = CategorySwitch(rawValue: rawValue) else { return } -// -// switch category { -// case .showEverything: -// viewModel.selectedIndex.value = .everyThing -// case .showMentions: -// viewModel.selectedIndex.value = .mentions -// } -// } -// -// override var keyCommands: [UIKeyCommand]? { -// return categorySwitchKeyCommands + navigationKeyCommands -// } -//} - -//extension NotificationViewController: TableViewControllerNavigateable { -// -// func navigate(direction: TableViewNavigationDirection) { -// if let indexPathForSelectedRow = tableView.indexPathForSelectedRow { -// // navigate up/down on the current selected item -// navigateToStatus(direction: direction, indexPath: indexPathForSelectedRow) -// } else { -// // set first visible item selected -// navigateToFirstVisibleStatus() -// } -// } -// -// private func navigateToStatus(direction: TableViewNavigationDirection, indexPath: IndexPath) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// let items = diffableDataSource.snapshot().itemIdentifiers -// guard let selectedItem = diffableDataSource.itemIdentifier(for: indexPath), -// let selectedItemIndex = items.firstIndex(of: selectedItem) else { -// return -// } -// -// let _navigateToItem: NotificationItem? = { -// var index = selectedItemIndex -// while 0.. 1 { -// // drop first when visible not the first cell of table -// visibleItems.removeFirst() -// } -// guard let item = visibleItems.first, let indexPath = diffableDataSource.indexPath(for: item) else { return } -// let scrollPosition: UITableView.ScrollPosition = overrideNavigationScrollPosition ?? Self.navigateScrollPosition(tableView: tableView, indexPath: indexPath) -// tableView.selectRow(at: indexPath, animated: true, scrollPosition: scrollPosition) -// } -// -// static func validNavigateableItem(_ item: NotificationItem) -> Bool { -// switch item { -// case .notification: -// return true -// default: -// return false -// } -// } -// -// func open() { -// guard let indexPathForSelectedRow = tableView.indexPathForSelectedRow else { return } -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// guard let item = diffableDataSource.itemIdentifier(for: indexPathForSelectedRow) else { return } -// open(item: item) -// } -// -// func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// navigateKeyCommandHandler(sender) -// } -// -//} - // MARK: - ScrollViewContainer extension NotificationViewController: ScrollViewContainer { var scrollView: UIScrollView? { @@ -603,3 +177,73 @@ extension NotificationViewController: ScrollViewContainer { return viewController.scrollView } } + + +extension NotificationViewController { + + enum CategorySwitch: String, CaseIterable { + case everything + case mentions + + var title: String { + switch self { + case .everything: return L10n.Scene.Notification.Keyobard.showEverything + case .mentions: return L10n.Scene.Notification.Keyobard.showMentions + } + } + + // UIKeyCommand input + var input: String { + switch self { + case .everything: return "[" // + shift + command + case .mentions: return "]" // + shift + command + } + } + + var modifierFlags: UIKeyModifierFlags { + switch self { + case .everything: return [.shift, .command] + case .mentions: return [.shift, .command] + } + } + + var propertyList: Any { + return rawValue + } + } + + var categorySwitchKeyCommands: [UIKeyCommand] { + CategorySwitch.allCases.map { category in + UIKeyCommand( + title: category.title, + image: nil, + action: #selector(NotificationViewController.showCategory(_:)), + input: category.input, + modifierFlags: category.modifierFlags, + propertyList: category.propertyList, + alternates: [], + discoverabilityTitle: nil, + attributes: [], + state: .off + ) + } + } + + @objc private func showCategory(_ sender: UIKeyCommand) { + os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) + guard let rawValue = sender.propertyList as? String, + let category = CategorySwitch(rawValue: rawValue) + else { return } + + switch category { + case .everything: + scrollToPage(.first, animated: true, completion: nil) + case .mentions: + scrollToPage(.last, animated: true, completion: nil) + } + } + + override var keyCommands: [UIKeyCommand]? { + return categorySwitchKeyCommands + } +} diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift index d061826c9..2ac1e2065 100644 --- a/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift +++ b/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift @@ -73,7 +73,6 @@ extension FavoriteViewController { ]) tableView.delegate = self -// tableView.prefetchDataSource = self viewModel.setupDiffableDataSource( tableView: tableView, statusTableViewCellDelegate: self @@ -104,20 +103,6 @@ extension FavoriteViewController { } -//// MARK: - TableViewCellHeightCacheableContainer -//extension FavoriteViewController: TableViewCellHeightCacheableContainer { -// var cellFrameCache: NSCache { -// return viewModel.cellFrameCache -// } -//} - -// MARK: - UIScrollViewDelegate -//extension FavoriteViewController { -// func scrollViewDidScroll(_ scrollView: UIScrollView) { -// aspectScrollViewDidScroll(scrollView) -// } -//} - // MARK: - UITableViewDelegate extension FavoriteViewController: UITableViewDelegate, AutoGenerateTableViewDelegate { // sourcery:inline:FavoriteViewController.AutoGenerateTableViewDelegate @@ -146,83 +131,24 @@ extension FavoriteViewController: UITableViewDelegate, AutoGenerateTableViewDele // sourcery:end - -// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { -// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didSelectRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { -// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) -// } -// -// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { -// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) -// } -// } -// MARK: - UITableViewDataSourcePrefetching -//extension FavoriteViewController: UITableViewDataSourcePrefetching { -// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { -// aspectTableView(tableView, prefetchRowsAt: indexPaths) -// } -//} - -// MARK: - AVPlayerViewControllerDelegate -//extension FavoriteViewController: AVPlayerViewControllerDelegate { -// -// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -// -// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -// -//} - -// MARK: - TimelinePostTableViewCellDelegate -//extension FavoriteViewController: StatusTableViewCellDelegate { -// weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } -// func parent() -> UIViewController { return self } -//} - -//extension FavoriteViewController { -// override var keyCommands: [UIKeyCommand]? { -// return navigationKeyCommands + statusNavigationKeyCommands -// } -//} -// -//// MARK: - StatusTableViewControllerNavigateable -//extension FavoriteViewController: StatusTableViewControllerNavigateable { -// @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// navigateKeyCommandHandler(sender) -// } -// -// @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// statusKeyCommandHandler(sender) -// } -//} - // MARK: - StatusTableViewCellDelegate extension FavoriteViewController: StatusTableViewCellDelegate { } + +extension FavoriteViewController { + override var keyCommands: [UIKeyCommand]? { + return navigationKeyCommands + statusNavigationKeyCommands + } +} + +// MARK: - StatusTableViewControllerNavigateable +extension FavoriteViewController: StatusTableViewControllerNavigateable { + @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { + navigateKeyCommandHandler(sender) + } + + @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { + statusKeyCommandHandler(sender) + } +} diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index d8e27a299..826aaba52 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -1120,3 +1120,14 @@ extension ProfileViewController: ScrollViewContainer { // } // //} + +// MARK: - SegmentedControlNavigateable +//extension ProfileViewController: SegmentedControlNavigateable { +// var navigateableSegmentedControl: UISegmentedControl { +// profileHeaderViewController.pageSegmentedControl +// } +// +// @objc func segmentedControlNavigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { +// segmentedControlNavigateKeyCommandHandler(sender) +// } +//} diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift index 3aa20541f..d6bbd507c 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift @@ -151,3 +151,20 @@ extension UserTimelineViewController: ScrollViewContainer { // MARK: - StatusTableViewCellDelegate extension UserTimelineViewController: StatusTableViewCellDelegate { } + +extension UserTimelineViewController { + override var keyCommands: [UIKeyCommand]? { + return navigationKeyCommands + statusNavigationKeyCommands + } +} + +// MARK: - StatusTableViewControllerNavigateable +extension UserTimelineViewController: StatusTableViewControllerNavigateable { + @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { + navigateKeyCommandHandler(sender) + } + + @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { + statusKeyCommandHandler(sender) + } +} diff --git a/Mastodon/Scene/Thread/ThreadViewController.swift b/Mastodon/Scene/Thread/ThreadViewController.swift index cfc28447c..bd90fb370 100644 --- a/Mastodon/Scene/Thread/ThreadViewController.swift +++ b/Mastodon/Scene/Thread/ThreadViewController.swift @@ -92,10 +92,7 @@ extension ThreadViewController { tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) -// viewModel.tableView = tableView -// viewModel.contentOffsetAdjustableTimelineViewControllerDelegate = self tableView.delegate = self -// tableView.prefetchDataSource = self viewModel.setupDiffableDataSource( tableView: tableView, statusTableViewCellDelegate: self @@ -174,123 +171,26 @@ extension ThreadViewController: UITableViewDelegate, AutoGenerateTableViewDelega return indexPath } } - - -// func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { -// aspectTableView(tableView, estimatedHeightForRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, willDisplay: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didEndDisplaying: cell, forRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { -// aspectTableView(tableView, didSelectRowAt: indexPath) -// } -// -// func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { -// guard let diffableDataSource = viewModel.diffableDataSource else { return nil } -// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return nil } -// -// // disable root selection -// switch item { -// case .root: -// return nil -// default: -// return indexPath -// } -// } -// -// func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { -// return aspectTableView(tableView, contextMenuConfigurationForRowAt: indexPath, point: point) -// } -// -// func tableView(_ tableView: UITableView, previewForHighlightingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForHighlightingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, previewForDismissingContextMenuWithConfiguration configuration: UIContextMenuConfiguration) -> UITargetedPreview? { -// return aspectTableView(tableView, previewForDismissingContextMenuWithConfiguration: configuration) -// } -// -// func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) { -// aspectTableView(tableView, willPerformPreviewActionForMenuWith: configuration, animator: animator) -// } - } -// MARK: - UITableViewDataSourcePrefetching -//extension ThreadViewController: UITableViewDataSourcePrefetching { -// func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) { -// aspectTableView(tableView, prefetchRowsAt: indexPaths) -// } -//} - -// MARK: - AVPlayerViewControllerDelegate -//extension ThreadViewController: AVPlayerViewControllerDelegate { -// -// func playerViewController(_ playerViewController: AVPlayerViewController, willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// aspectPlayerViewController(playerViewController, willBeginFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -// -// func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator) { -// aspectPlayerViewController(playerViewController, willEndFullScreenPresentationWithAnimationCoordinator: coordinator) -// } -// -//} - -// MARK: - statusTableViewCellDelegate -//extension ThreadViewController: StatusTableViewCellDelegate { -// weak var playerViewControllerDelegate: AVPlayerViewControllerDelegate? { return self } -// func parent() -> UIViewController { return self } -//} - -// MARK: - ThreadReplyLoaderTableViewCellDelegate -//extension ThreadViewController: ThreadReplyLoaderTableViewCellDelegate { -// func threadReplyLoaderTableViewCell(_ cell: ThreadReplyLoaderTableViewCell, loadMoreButtonDidPressed button: UIButton) { -// guard let diffableDataSource = viewModel.diffableDataSource else { return } -// guard let indexPath = tableView.indexPath(for: cell) else { return } -// guard let item = diffableDataSource.itemIdentifier(for: indexPath) else { return } -// guard case let .leafBottomLoader(statusObjectID) = item else { return } -// -// let nodes = viewModel.descendantNodes.value -// nodes.forEach { node in -// expandReply(node: node, statusObjectID: statusObjectID) -// } -// viewModel.descendantNodes.value = nodes -// } -// -// private func expandReply(node: ThreadViewModel.LeafNode, statusObjectID: NSManagedObjectID) { -// if node.objectID == statusObjectID { -// node.isChildrenExpanded = true -// } else { -// for child in node.children { -// expandReply(node: child, statusObjectID: statusObjectID) -// } -// } -// } -//} - -//extension ThreadViewController { -// override var keyCommands: [UIKeyCommand]? { -// return navigationKeyCommands + statusNavigationKeyCommands -// } -//} -// -//// MARK: - StatusTableViewControllerNavigateable -//extension ThreadViewController: StatusTableViewControllerNavigateable { -// @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// navigateKeyCommandHandler(sender) -// } -// -// @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { -// statusKeyCommandHandler(sender) -// } -//} // MARK: - StatusTableViewCellDelegate extension ThreadViewController: StatusTableViewCellDelegate { } + + +extension ThreadViewController { + override var keyCommands: [UIKeyCommand]? { + return navigationKeyCommands + statusNavigationKeyCommands + } +} + +// MARK: - StatusTableViewControllerNavigateable +extension ThreadViewController: StatusTableViewControllerNavigateable { + @objc func navigateKeyCommandHandlerRelay(_ sender: UIKeyCommand) { + navigateKeyCommandHandler(sender) + } + + @objc func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) { + statusKeyCommandHandler(sender) + } +} From aaeaf6c72e7732bfe04a4f7490c3bba2295cdca2 Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 16 Feb 2022 19:49:33 +0800 Subject: [PATCH 287/374] chore: update version to 1.3.0 (100) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 11db6d028..106e5766b 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 99 + 100 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index aaf6a2cf3..9cfa99b66 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4632,7 +4632,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4661,7 +4661,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4769,11 +4769,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 99; + DYLIB_CURRENT_VERSION = 100; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4800,11 +4800,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 99; + DYLIB_CURRENT_VERSION = 100; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4829,7 +4829,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4854,7 +4854,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4879,7 +4879,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4904,7 +4904,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4929,7 +4929,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4953,7 +4953,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 99; + CURRENT_PROJECT_VERSION = 100; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 7e9982d3c..0b5d3dce0 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 20 + 26 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 19 + 25 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 18 + 27 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 58e476d32..44e1b1161 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 99 + 100 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 3c1524c4c..f56733f27 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 99 + 100 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 11db6d028..106e5766b 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 99 + 100 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 11db6d028..106e5766b 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 99 + 100 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 7b648693e..2c1921017 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 99 + 100 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 5078c580b..44bdd43ed 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 99 + 100 NSExtension NSExtensionAttributes From c488e53863cee4a28d9a4bfbdd03f904782c1574 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 17 Feb 2022 10:46:40 +0800 Subject: [PATCH 288/374] fix: relationship background use wrong color when force dark style --- .../xcschemes/xcschememanagement.plist | 6 +-- .../ProfileRelationshipActionButton.swift | 21 ++++++---- .../background.colorset/Contents.json | 38 ------------------- .../background.dark.colorset/Contents.json | 20 ++++++++++ .../Contents.json | 38 ------------------- .../Contents.json | 20 ++++++++++ .../Contents.json | 20 ++++++++++ .../background.light.colorset/Contents.json | 20 ++++++++++ .../MastodonAsset/Generated/Assets.swift | 6 ++- 9 files changed, 101 insertions(+), 88 deletions(-) delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.dark.colorset/Contents.json delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.dark.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.light.colorset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.light.colorset/Contents.json diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 0b5d3dce0..84e76b04b 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 26 + 20 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 25 + 18 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 27 + 19 SuppressBuildableAutocreation diff --git a/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift b/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift index 34b8bd7ce..87c189a45 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileRelationshipActionButton.swift @@ -43,14 +43,14 @@ extension ProfileRelationshipActionButton { activityIndicatorView.hidesWhenStopped = true activityIndicatorView.stopAnimating() + + configureAppearance() } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) { - configureAppearance() - } + configureAppearance() } } @@ -77,10 +77,17 @@ extension ProfileRelationshipActionButton { private func configureAppearance() { setTitleColor(Asset.Colors.Label.primaryReverse.color, for: .normal) setTitleColor(Asset.Colors.Label.primaryReverse.color.withAlphaComponent(0.5), for: .highlighted) - setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.background.color), for: .normal) - setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlighted.color), for: .highlighted) - setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlighted.color), for: .disabled) -// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor), for: .normal) + switch traitCollection.userInterfaceStyle { + case .dark: + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundDark.color), for: .normal) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlightedDark.color), for: .highlighted) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlightedDark.color), for: .disabled) + default: + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundLight.color), for: .normal) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlightedLight.color), for: .highlighted) + setBackgroundImage(.placeholder(color: Asset.Scene.Profile.RelationshipButton.backgroundHighlightedLight.color), for: .disabled) + } +// setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor), for: .normal) // setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .highlighted) // setBackgroundImage(.placeholder(color: actionOptionSet.backgroundColor.withAlphaComponent(0.5)), for: .disabled) } diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.colorset/Contents.json deleted file mode 100644 index a36ab82ce..000000000 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0.216", - "green" : "0.173", - "red" : "0.157" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0.933", - "green" : "0.933", - "red" : "0.933" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.dark.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.dark.colorset/Contents.json new file mode 100644 index 000000000..63600675a --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.dark.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.933", + "green" : "0.933", + "red" : "0.933" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.colorset/Contents.json deleted file mode 100644 index 2dfe8b1c4..000000000 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0.106", - "green" : "0.082", - "red" : "0.075" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0.729", - "green" : "0.729", - "red" : "0.729" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.dark.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.dark.colorset/Contents.json new file mode 100644 index 000000000..4e900a602 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.dark.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.729", + "green" : "0.729", + "red" : "0.729" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.light.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.light.colorset/Contents.json new file mode 100644 index 000000000..6ba0d80b0 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.highlighted.light.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.106", + "green" : "0.082", + "red" : "0.075" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.light.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.light.colorset/Contents.json new file mode 100644 index 000000000..70d85d5da --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Scene/Profile/RelationshipButton/background.light.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.216", + "green" : "0.173", + "red" : "0.157" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift index 41369d7d5..f61925b24 100644 --- a/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift +++ b/MastodonSDK/Sources/MastodonAsset/Generated/Assets.swift @@ -120,8 +120,10 @@ public enum Asset { public static let usernameGray = ColorAsset(name: "Scene/Profile/Banner/username.gray") } public enum RelationshipButton { - public static let background = ColorAsset(name: "Scene/Profile/RelationshipButton/background") - public static let backgroundHighlighted = ColorAsset(name: "Scene/Profile/RelationshipButton/background.highlighted") + public static let backgroundDark = ColorAsset(name: "Scene/Profile/RelationshipButton/background.dark") + public static let backgroundHighlightedDark = ColorAsset(name: "Scene/Profile/RelationshipButton/background.highlighted.dark") + public static let backgroundHighlightedLight = ColorAsset(name: "Scene/Profile/RelationshipButton/background.highlighted.light") + public static let backgroundLight = ColorAsset(name: "Scene/Profile/RelationshipButton/background.light") } } public enum Report { From eba1f69bf68e25571afeed5175b0b7fc7344a987 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 17 Feb 2022 10:47:15 +0800 Subject: [PATCH 289/374] fix: player button icon not reset issue --- MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift index 3b4d249ef..1d988e451 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift @@ -284,6 +284,8 @@ extension MediaView { playerViewController.player = nil playerLooper = nil + playbackImageView.removeFromSuperview() + // blurhash blurhashImageView.removeFromSuperview() blurhashImageView.removeConstraints(blurhashImageView.constraints) From 19c26cd9892becedd0bcbecaa7f7a131bfa51c70 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 17 Feb 2022 10:47:49 +0800 Subject: [PATCH 290/374] chore: update version to 1.3.0 (101) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 106e5766b..491f827c4 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 100 + 101 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 9cfa99b66..55b231213 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4632,7 +4632,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4661,7 +4661,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4769,11 +4769,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 100; + DYLIB_CURRENT_VERSION = 101; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4800,11 +4800,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 100; + DYLIB_CURRENT_VERSION = 101; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4829,7 +4829,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4854,7 +4854,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4879,7 +4879,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4904,7 +4904,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4929,7 +4929,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4953,7 +4953,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 100; + CURRENT_PROJECT_VERSION = 101; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 84e76b04b..ee2150f3c 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 20 + 27 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 18 + 25 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 19 + 26 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 44e1b1161..6e0de46ed 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 100 + 101 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index f56733f27..45080cbf9 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 100 + 101 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 106e5766b..491f827c4 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 100 + 101 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 106e5766b..491f827c4 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 100 + 101 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 2c1921017..a650a3dc3 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 100 + 101 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 44bdd43ed..472bb766c 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 100 + 101 NSExtension NSExtensionAttributes From 8f2e7891839e03bb9178b7e36ab15db0cd5daf3b Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 17 Feb 2022 15:59:14 +0800 Subject: [PATCH 291/374] fix: profile relationship button fill the width on iPad issue --- .../Header/View/ProfileHeaderView.swift | 38 +------------------ 1 file changed, 2 insertions(+), 36 deletions(-) diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index 1c667cbba..6f4fe170b 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -199,37 +199,6 @@ final class ProfileHeaderView: UIView { return metaText }() -// static func createFieldCollectionViewLayout() -> UICollectionViewLayout { -// let itemSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(44)) -// let item = NSCollectionLayoutItem(layoutSize: itemSize) -// let groupSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(44)) -// let group = NSCollectionLayoutGroup.vertical(layoutSize: groupSize, subitems: [item]) -// let section = NSCollectionLayoutSection(group: group) -// section.contentInsetsReference = .readableContent -// -// let headerFooterSize = NSCollectionLayoutSize(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(1)) -// let header = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerFooterSize, elementKind: UICollectionView.elementKindSectionHeader, alignment: .top) -// let footer = NSCollectionLayoutBoundarySupplementaryItem(layoutSize: headerFooterSize, elementKind: UICollectionView.elementKindSectionFooter, alignment: .bottom) -// section.boundarySupplementaryItems = [header, footer] -// // note: toggle this not take effect -// // section.supplementariesFollowContentInsets = false -// -// return UICollectionViewCompositionalLayout(section: section) -// } -// -// let fieldCollectionView: UICollectionView = { -// let collectionViewLayout = ProfileHeaderView.createFieldCollectionViewLayout() -// let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 100, height: 100), collectionViewLayout: collectionViewLayout) -// collectionView.register(ProfileFieldCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ProfileFieldCollectionViewCell.self)) -// collectionView.register(ProfileFieldAddEntryCollectionViewCell.self, forCellWithReuseIdentifier: String(describing: ProfileFieldAddEntryCollectionViewCell.self)) -// collectionView.register(ProfileFieldCollectionViewHeaderFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.headerReuseIdentifer) -// collectionView.register(ProfileFieldCollectionViewHeaderFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier: ProfileFieldCollectionViewHeaderFooterView.footerReuseIdentifer) -// collectionView.isScrollEnabled = false -// return collectionView -// }() -// var fieldCollectionViewHeightLayoutConstraint: NSLayoutConstraint! -// var fieldCollectionViewHeightObservation: NSKeyValueObservation? - override init(frame: CGRect) { super.init(frame: frame) _init() @@ -240,10 +209,6 @@ final class ProfileHeaderView: UIView { _init() } - deinit { -// fieldCollectionViewHeightObservation = nil - } - } extension ProfileHeaderView { @@ -359,7 +324,7 @@ extension ProfileHeaderView { avatarImageViewBackgroundView.bottomAnchor.constraint(equalTo: dashboardContainer.bottomAnchor), ]) - // authorContainer: H - [ nameContainer | relationshipActionButtonShadowContainer ] + // authorContainer: H - [ nameContainer | padding | relationshipActionButtonShadowContainer ] let authorContainer = UIStackView() authorContainer.axis = .horizontal authorContainer.alignment = .top @@ -404,6 +369,7 @@ extension ProfileHeaderView { nameContainerStackView.addArrangedSubview(usernameLabel) authorContainer.addArrangedSubview(nameContainerStackView) + authorContainer.addArrangedSubview(UIView()) authorContainer.addArrangedSubview(relationshipActionButtonShadowContainer) relationshipActionButton.translatesAutoresizingMaskIntoConstraints = false From 10eae495e45047f18b849b55b7fafcdab8d2a982 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 17 Feb 2022 16:35:22 +0800 Subject: [PATCH 292/374] fix: inputAssistantItem duplicate setup issue --- .../Scene/Compose/ComposeViewController.swift | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/Mastodon/Scene/Compose/ComposeViewController.swift b/Mastodon/Scene/Compose/ComposeViewController.swift index 669861d0f..aa581c860 100644 --- a/Mastodon/Scene/Compose/ComposeViewController.swift +++ b/Mastodon/Scene/Compose/ComposeViewController.swift @@ -684,14 +684,15 @@ extension ComposeViewController { // keyboard shortcutBar private func setupInputAssistantItem(item: UITextInputAssistantItem) { - let groups = [UIBarButtonItemGroup(barButtonItems: [ + let barButtonItems = [ composeToolbarView.mediaBarButtonItem, composeToolbarView.pollBarButtonItem, composeToolbarView.contentWarningBarButtonItem, composeToolbarView.visibilityBarButtonItem, - ], representativeItem: nil)] + ] + let group = UIBarButtonItemGroup(barButtonItems: barButtonItems, representativeItem: nil) - item.trailingBarButtonGroups = groups + item.trailingBarButtonGroups = [group] } private func configureToolbarDisplay(keyboardHasShortcutBar: Bool) { @@ -769,15 +770,6 @@ extension ComposeViewController: UITextViewDelegate { setupInputAssistantItem(item: textView.inputAssistantItem) return true } - - func textViewDidBeginEditing(_ textView: UITextView) { - switch textView { - case textEditorView.textView: - setupInputAssistantItem(item: textView.inputAssistantItem) - default: - assertionFailure() - } - } func textViewDidChange(_ textView: UITextView) { switch textView { From e5a72972cddf7b602e64ec0dfa03abcb807eabeb Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 17 Feb 2022 16:35:59 +0800 Subject: [PATCH 293/374] chore: update textView minimum height from 88 to 64 --- .../TableViewCell/ComposeStatusContentTableViewCell.swift | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift index 34f34f02e..c9c8fa4fa 100644 --- a/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift +++ b/Mastodon/Scene/Compose/TableViewCell/ComposeStatusContentTableViewCell.swift @@ -131,14 +131,9 @@ extension ComposeStatusContentTableViewCell { metaText.textView.leadingAnchor.constraint(equalTo: textEditorViewContainerView.layoutMarginsGuide.leadingAnchor), metaText.textView.trailingAnchor.constraint(equalTo: textEditorViewContainerView.layoutMarginsGuide.trailingAnchor), metaText.textView.bottomAnchor.constraint(equalTo: textEditorViewContainerView.bottomAnchor), - metaText.textView.heightAnchor.constraint(greaterThanOrEqualToConstant: 88).priority(.defaultHigh), + metaText.textView.heightAnchor.constraint(greaterThanOrEqualToConstant: 64).priority(.defaultHigh), ]) statusContentWarningEditorView.textView.delegate = self - -// statusView.nameTrialingDotLabel.isHidden = true -// statusView.dateLabel.isHidden = true -// statusContentWarningEditorView.isHidden = true -// statusView.statusContainerStackView.isHidden = true } } From b52f969c05311aa30619d7009e9cefe97033e5f5 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 17 Feb 2022 17:13:14 +0800 Subject: [PATCH 294/374] chore: update version to 1.3.0 (102) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 491f827c4..318d6e0db 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 101 + 102 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 55b231213..eaf9efc56 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4632,7 +4632,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4661,7 +4661,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4769,11 +4769,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 101; + DYLIB_CURRENT_VERSION = 102; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4800,11 +4800,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 101; + DYLIB_CURRENT_VERSION = 102; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4829,7 +4829,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4854,7 +4854,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4879,7 +4879,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4904,7 +4904,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4929,7 +4929,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4953,7 +4953,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 101; + CURRENT_PROJECT_VERSION = 102; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index ee2150f3c..e854e8770 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 27 + 29 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 25 + 28 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 26 + 30 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 6e0de46ed..870f1285d 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 101 + 102 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 45080cbf9..e75c19016 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 101 + 102 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 491f827c4..318d6e0db 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 101 + 102 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 491f827c4..318d6e0db 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 101 + 102 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index a650a3dc3..ec58de815 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 101 + 102 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 472bb766c..2c87d961d 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 101 + 102 NSExtension NSExtensionAttributes From a1b9ac83947b5036fcfd7861ec8f08d402e5a73e Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 17:49:20 +0800 Subject: [PATCH 295/374] chore: update status timeline margin --- Mastodon.xcodeproj/project.pbxproj | 4 - .../xcschemes/xcschememanagement.plist | 6 +- .../NotificationTableViewCell+ViewModel.swift | 2 +- .../Timeline/UserTimelineViewController.swift | 3 - .../AdaptiveMarginStatusTableViewCell.swift | 45 ----- .../TableviewCell/StatusTableViewCell.swift | 16 +- .../StatusThreadRootTableViewCell.swift | 7 +- .../AdaptiveMarginStatusTableViewCell.swift | 56 ++++++ .../AdaptiveMarginContainerView.swift | 55 ++++++ .../MastodonUI/View/Content/MediaView.swift | 30 +--- .../View/Content/NotificationView.swift | 13 +- .../View/Content/StatusMetricView.swift | 4 +- .../MastodonUI/View/Content/StatusView.swift | 169 ++++++++---------- .../View/Control/ActionToolbarContainer.swift | 5 +- 14 files changed, 210 insertions(+), 205 deletions(-) delete mode 100644 Mastodon/Scene/Share/View/TableviewCell/AdaptiveMarginStatusTableViewCell.swift create mode 100644 MastodonSDK/Sources/MastodonUI/Protocol/AdaptiveMarginStatusTableViewCell.swift create mode 100644 MastodonSDK/Sources/MastodonUI/View/Container/AdaptiveMarginContainerView.swift diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index eaf9efc56..c235224d0 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -482,7 +482,6 @@ DBB45B5627B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5527B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift */; }; DBB45B5927B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5827B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift */; }; DBB45B5B27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5A27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift */; }; - DBB45B5E27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5D27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift */; }; DBB45B6027B50A4F002DC5A7 /* RecommendAccountItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B5F27B50A4F002DC5A7 /* RecommendAccountItem.swift */; }; DBB45B6227B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB45B6127B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift */; }; DBB525082611EAC0002F1F29 /* Tabman in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* Tabman */; }; @@ -1230,7 +1229,6 @@ DBB45B5527B39FC9002DC5A7 /* MediaPreviewVideoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewVideoViewController.swift; sourceTree = ""; }; DBB45B5827B39FE4002DC5A7 /* MediaPreviewVideoViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewVideoViewModel.swift; sourceTree = ""; }; DBB45B5A27B3A109002DC5A7 /* MediaPreviewTransitionViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPreviewTransitionViewController.swift; sourceTree = ""; }; - DBB45B5D27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdaptiveMarginStatusTableViewCell.swift; sourceTree = ""; }; DBB45B5F27B50A4F002DC5A7 /* RecommendAccountItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecommendAccountItem.swift; sourceTree = ""; }; DBB45B6127B51112002DC5A7 /* SuggestionAccountViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SuggestionAccountViewModel+Diffable.swift"; sourceTree = ""; }; DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileSegmentedViewController.swift; sourceTree = ""; }; @@ -1745,7 +1743,6 @@ DBE3CDBA261C427900430CC6 /* TimelineHeaderTableViewCell.swift */, DB6B750327300B4000C70B6E /* TimelineFooterTableViewCell.swift */, DB02CDAA26256A9500D0A2AF /* ThreadReplyLoaderTableViewCell.swift */, - DBB45B5D27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift */, ); path = TableviewCell; sourceTree = ""; @@ -3841,7 +3838,6 @@ DBA465952696E387002B41DB /* AppPreference.swift in Sources */, 2D8434F525FF465D00EECE90 /* HomeTimelineNavigationBarTitleViewModel.swift in Sources */, DB938F0F2624119800E5B6C1 /* ThreadViewModel+LoadThreadState.swift in Sources */, - DBB45B5E27B4EB22002DC5A7 /* AdaptiveMarginStatusTableViewCell.swift in Sources */, DB6180F226391CF40018D199 /* MediaPreviewImageViewModel.swift in Sources */, DBA5E7A3263AD0A3004598BB /* PhotoLibraryService.swift in Sources */, DBD5B1F627BCD3D200BD6B38 /* SuggestionAccountTableViewCell+ViewModel.swift in Sources */, diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index e854e8770..643aa9f63 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 29 + 19 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 28 + 20 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 30 + 18 SuppressBuildableAutocreation diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift index be230391a..2a4eb8a98 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift @@ -36,7 +36,7 @@ extension NotificationTableViewCell { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") notificationView.statusView.frame.size.width = tableView.frame.width - containerViewHorizontalMargin - notificationView.quoteStatusView.frame.size.width = tableView.frame.width - StatusView.containerLayoutMargin.left - StatusView.containerLayoutMargin.right - containerViewHorizontalMargin + notificationView.quoteStatusView.frame.size.width = tableView.frame.width - 2 * StatusView.containerLayoutMargin - containerViewHorizontalMargin } switch viewModel.value { diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift index d6bbd507c..12925ca41 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift @@ -26,9 +26,6 @@ final class UserTimelineViewController: UIViewController, NeedsDependency, Media lazy var tableView: UITableView = { let tableView = UITableView() - tableView.register(StatusTableViewCell.self, forCellReuseIdentifier: String(describing: StatusTableViewCell.self)) - tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) - tableView.register(TimelineHeaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineHeaderTableViewCell.self)) tableView.rowHeight = UITableView.automaticDimension tableView.estimatedRowHeight = 100 tableView.separatorStyle = .none diff --git a/Mastodon/Scene/Share/View/TableviewCell/AdaptiveMarginStatusTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/AdaptiveMarginStatusTableViewCell.swift deleted file mode 100644 index 78363d091..000000000 --- a/Mastodon/Scene/Share/View/TableviewCell/AdaptiveMarginStatusTableViewCell.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// AdaptiveMarginStatusTableViewCell.swift -// Mastodon -// -// Created by MainasuK on 2022-2-10. -// - -import UIKit -import MastodonUI - -protocol AdaptiveContainerMarginTableViewCell: UITableViewCell { - associatedtype ContainerView: UIView - static var containerViewMarginForRegularHorizontalSizeClass: CGFloat { get } - var containerView: ContainerView { get } - var containerViewLeadingLayoutConstraint: NSLayoutConstraint! { get set } - var containerViewTrailingLayoutConstraint: NSLayoutConstraint! { get set } -} - -extension AdaptiveContainerMarginTableViewCell { - - static var containerViewMarginForRegularHorizontalSizeClass: CGFloat { 64 } - - func setupContainerViewMarginConstraints() { - containerViewLeadingLayoutConstraint = containerView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) - containerViewTrailingLayoutConstraint = contentView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor) - } - - func updateContainerViewMarginConstraints() { - guard traitCollection.userInterfaceIdiom != .phone, - traitCollection.horizontalSizeClass == .regular - else { - containerViewLeadingLayoutConstraint.constant = 0 - containerViewTrailingLayoutConstraint.constant = 0 - return - } - - containerViewLeadingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass - containerViewTrailingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass - } - - var containerViewHorizontalMargin: CGFloat { - containerViewLeadingLayoutConstraint.constant + containerViewTrailingLayoutConstraint.constant - } - -} diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift index 3ec9aa906..a1033f052 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusTableViewCell.swift @@ -28,20 +28,6 @@ final class StatusTableViewCell: UITableViewCell { var containerViewLeadingLayoutConstraint: NSLayoutConstraint! var containerViewTrailingLayoutConstraint: NSLayoutConstraint! -// var isFiltered: Bool = false { -// didSet { -// configure(isFiltered: isFiltered) -// } -// } -// -// let filteredLabel: UILabel = { -// let label = UILabel() -// label.textColor = Asset.Colors.Label.secondary.color -// label.text = L10n.Common.Controls.Timeline.filtered -// label.font = .preferredFont(forTextStyle: .body) -// return label -// }() -// override func prepareForReuse() { super.prepareForReuse() @@ -71,7 +57,6 @@ extension StatusTableViewCell { statusView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(statusView) setupContainerViewMarginConstraints() - updateContainerViewMarginConstraints() NSLayoutConstraint.activate([ statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), containerViewLeadingLayoutConstraint, @@ -79,6 +64,7 @@ extension StatusTableViewCell { statusView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), ]) statusView.setup(style: .inline) + updateContainerViewMarginConstraints() separatorLine.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(separatorLine) diff --git a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift index d971cada5..e27cc2dd3 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/StatusThreadRootTableViewCell.swift @@ -58,7 +58,6 @@ extension StatusThreadRootTableViewCell { statusView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(statusView) setupContainerViewMarginConstraints() - updateContainerViewMarginConstraints() NSLayoutConstraint.activate([ statusView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), containerViewLeadingLayoutConstraint, @@ -66,6 +65,7 @@ extension StatusThreadRootTableViewCell { statusView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), ]) statusView.setup(style: .plain) + updateContainerViewMarginConstraints() separatorLine.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(separatorLine) @@ -108,7 +108,6 @@ extension StatusThreadRootTableViewCell { statusView.mediaGridContainerView, statusView.pollTableView, statusView.pollStatusStackView, - statusView.statusVisibilityView, statusView.actionToolbarContainer, statusView.statusMetricView ] @@ -123,10 +122,6 @@ extension StatusThreadRootTableViewCell { elements.removeAll(where: { $0 === statusView.contentMetaText.textView }) } - if statusView.statusVisibilityView.isHidden { - elements.removeAll(where: { $0 === statusView.statusVisibilityView }) - } - if statusView.viewModel.pollItems.isEmpty { elements.removeAll(where: { $0 === statusView.pollTableView }) elements.removeAll(where: { $0 === statusView.pollStatusStackView }) diff --git a/MastodonSDK/Sources/MastodonUI/Protocol/AdaptiveMarginStatusTableViewCell.swift b/MastodonSDK/Sources/MastodonUI/Protocol/AdaptiveMarginStatusTableViewCell.swift new file mode 100644 index 000000000..b552816b2 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/Protocol/AdaptiveMarginStatusTableViewCell.swift @@ -0,0 +1,56 @@ +// +// AdaptiveMarginStatusTableViewCell.swift +// +// +// Created by MainasuK on 2022-2-18. +// + +import UIKit + +public protocol AdaptiveContainerView: UIView { + func updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: Bool) +} + +public protocol AdaptiveContainerMarginTableViewCell: UITableViewCell { + associatedtype ContainerView: AdaptiveContainerView + static var containerViewMarginForRegularHorizontalSizeClass: CGFloat { get } + var containerView: ContainerView { get } + var containerViewLeadingLayoutConstraint: NSLayoutConstraint! { get set } + var containerViewTrailingLayoutConstraint: NSLayoutConstraint! { get set } +} + +extension AdaptiveContainerMarginTableViewCell { + + public static var containerViewMarginForRegularHorizontalSizeClass: CGFloat { 64 } + + public func setupContainerViewMarginConstraints() { + containerViewLeadingLayoutConstraint = containerView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) + containerViewTrailingLayoutConstraint = contentView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor) + } + + public func updateContainerViewMarginConstraints() { + func setupContainerForPhone() { + containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: true) // add inner margin for phone + containerViewLeadingLayoutConstraint.constant = 0 // remove outer margin for phone + containerViewTrailingLayoutConstraint.constant = 0 + } + + switch traitCollection.userInterfaceIdiom { + case .phone: + setupContainerForPhone() + default: + guard traitCollection.horizontalSizeClass == .regular else { + setupContainerForPhone() + return + } + containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: false) // remove margin for iPad + containerViewLeadingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass // add outer margin for iPad + containerViewTrailingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass + } + } + + public var containerViewHorizontalMargin: CGFloat { + containerViewLeadingLayoutConstraint.constant + containerViewTrailingLayoutConstraint.constant + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/AdaptiveMarginContainerView.swift b/MastodonSDK/Sources/MastodonUI/View/Container/AdaptiveMarginContainerView.swift new file mode 100644 index 000000000..467715d72 --- /dev/null +++ b/MastodonSDK/Sources/MastodonUI/View/Container/AdaptiveMarginContainerView.swift @@ -0,0 +1,55 @@ +// +// AdaptiveMarginContainerView.swift +// +// +// Created by MainasuK on 2022-2-18. +// + +import UIKit + +public final class AdaptiveMarginContainerView: UIView { + + public var margin: CGFloat = 0 { + didSet { updateConstraints() } + } + + public var contentView: UIView? { + didSet { + guard let contentView = contentView else { return } + guard contentView.superview == nil else { return } + + contentView.translatesAutoresizingMaskIntoConstraints = false + addSubview(contentView) + + let _leadingLayoutConstraint = contentView.leadingAnchor.constraint(equalTo: leadingAnchor) + let _trailingLayoutConstraint = trailingAnchor.constraint(equalTo: contentView.trailingAnchor) + + NSLayoutConstraint.activate([ + contentView.topAnchor.constraint(equalTo: topAnchor), + _leadingLayoutConstraint, + _trailingLayoutConstraint, + contentView.bottomAnchor.constraint(equalTo: bottomAnchor), + ]) + + leadingLayoutConstraint = _leadingLayoutConstraint + trailingLayoutConstraint = _trailingLayoutConstraint + + updateConstraints() + } + } + + var leadingLayoutConstraint: NSLayoutConstraint? + var trailingLayoutConstraint: NSLayoutConstraint? + +} + +extension AdaptiveMarginContainerView { + + public override func updateConstraints() { + super.updateConstraints() + + leadingLayoutConstraint?.constant = margin + trailingLayoutConstraint?.constant = margin + } + +} diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift index 1d988e451..f4cee0922 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift @@ -22,6 +22,7 @@ public final class MediaView: UIView { formatter.allowedUnits = [.minute, .second] return formatter }() + public static let placeholderImage = UIImage.placeholder(color: .systemGray6) public let container = TouchBlockingView() @@ -154,7 +155,10 @@ extension MediaView { .receive(on: DispatchQueue.main) .sink { [weak self] isReveal, previewImage, blurhashImage in guard let self = self else { return } - let image = isReveal ? (previewImage ?? blurhashImage) : blurhashImage + + let image = isReveal ? + (previewImage ?? blurhashImage ?? MediaView.placeholderImage) : + (blurhashImage ?? MediaView.placeholderImage) self.imageView.image = image } .store(in: &configuration.disposeBag) @@ -204,30 +208,6 @@ extension MediaView { assetURL: info.previewURL ) bindImage(configuration: configuration, info: imageInfo) - -// indicatorBlurEffectView.translatesAutoresizingMaskIntoConstraints = false -// imageView.addSubview(indicatorBlurEffectView) -// NSLayoutConstraint.activate([ -// imageView.trailingAnchor.constraint(equalTo: indicatorBlurEffectView.trailingAnchor, constant: 11), -// imageView.bottomAnchor.constraint(equalTo: indicatorBlurEffectView.bottomAnchor, constant: 8), -// ]) -// setupIndicatorViewHierarchy() - -// playerIndicatorLabel.attributedText = { -// let imageAttachment = NSTextAttachment(image: UIImage(systemName: "play.fill")!) -// let imageAttributedString = AttributedString(NSAttributedString(attachment: imageAttachment)) -// let duration: String = { -// guard let durationMS = info.durationMS else { return "" } -// let timeInterval = TimeInterval(durationMS / 1000) -// guard timeInterval > 0 else { return "" } -// guard let text = MediaView.durationFormatter.string(from: timeInterval) else { return "" } -// return " \(text)" -// }() -// let textAttributedString = AttributedString("\(duration)") -// var attributedString = imageAttributedString + textAttributedString -// attributedString.foregroundColor = .secondaryLabel -// return NSAttributedString(attributedString) -// }() } private func layoutBlurhash() { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index 4c5e8aba7..a8b7f469f 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -136,7 +136,7 @@ public final class NotificationView: UIView { extension NotificationView { private func _init() { // container: V - [ author container | (authorContainerViewBottomPaddingView) | statusView | quoteStatusView ] - containerStackView.layoutMargins = StatusView.containerLayoutMargin + // containerStackView.layoutMargins = StatusView.containerLayoutMargin containerStackView.translatesAutoresizingMaskIntoConstraints = false addSubview(containerStackView) @@ -228,9 +228,9 @@ extension NotificationView { containerStackView.addArrangedSubview(quoteStatusViewContainerView) quoteStatusViewContainerView.layoutMargins = UIEdgeInsets( top: 0, - left: StatusView.containerLayoutMargin.left, + left: StatusView.containerLayoutMargin, bottom: 16, - right: StatusView.containerLayoutMargin.right + right: StatusView.containerLayoutMargin ) quoteBackgroundView.layoutMargins = UIEdgeInsets(top: 16, left: 0, bottom: 0, right: 0) @@ -297,6 +297,13 @@ extension NotificationView { } +// MARK: - AdaptiveContainerView +extension NotificationView: AdaptiveContainerView { + public func updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: Bool) { + statusView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: isEnabled) + } +} + extension NotificationView { public typealias AuthorMenuContext = StatusView.AuthorMenuContext diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusMetricView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusMetricView.swift index 7b356fc6e..2a770f302 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusMetricView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusMetricView.swift @@ -71,8 +71,8 @@ extension StatusMetricView { addSubview(containerStackView) NSLayoutConstraint.activate([ containerStackView.topAnchor.constraint(equalTo: topAnchor, constant: 8), - containerStackView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: layoutMarginsGuide.trailingAnchor), + containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), + containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), bottomAnchor.constraint(equalTo: containerStackView.bottomAnchor, constant: 12), ]) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index 2b9f936bb..e77e33b24 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -24,19 +24,15 @@ public protocol StatusViewDelegate: AnyObject { func statusView(_ statusView: StatusView, actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) func statusView(_ statusView: StatusView, menuButton button: UIButton, didSelectAction action: MastodonMenu.Action) func statusView(_ statusView: StatusView, spoilerOverlayViewDidPressed overlayView: SpoilerOverlayView) - // func statusView(_ statusView: StatusView, spoilerBannerViewDidPressed bannerView: SpoilerBannerView) func statusView(_ statusView: StatusView, mediaGridContainerView: MediaGridContainerView, mediaSensitiveButtonDidPressed button: UIButton) // a11y func statusView(_ statusView: StatusView, accessibilityActivate: Void) - -// func statusView(_ statusView: StatusView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) -// func statusView(_ statusView: StatusView, playerContainerView: PlayerContainerView, contentWarningOverlayViewDidPressed contentWarningOverlayView: ContentWarningOverlayView) } public final class StatusView: UIView { - public static let containerLayoutMargin = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16) + public static let containerLayoutMargin: CGFloat = 16 let logger = Logger(subsystem: "StatusView", category: "View") @@ -61,6 +57,7 @@ public final class StatusView: UIView { }() // header + let headerAdaptiveMarginContainerView = AdaptiveMarginContainerView() public let headerContainerView = UIView() // header icon @@ -75,6 +72,7 @@ public final class StatusView: UIView { let headerInfoLabel = MetaLabel(style: .statusHeader) // author + let authorAdaptiveMarginContainerView = AdaptiveMarginContainerView() let authorContainerView: UIStackView = { let stackView = UIStackView() stackView.axis = .horizontal @@ -122,6 +120,7 @@ public final class StatusView: UIView { }() // content + let contentAdaptiveMarginContainerView = AdaptiveMarginContainerView() let contentContainer = UIStackView() public let contentMetaText: MetaText = { let metaText = MetaText() @@ -160,7 +159,8 @@ public final class StatusView: UIView { public let mediaGridContainerView = MediaGridContainerView() // poll - public let pollContainerView = UIStackView() + let pollAdaptiveMarginContainerView = AdaptiveMarginContainerView() + let pollContainerView = UIStackView() public let pollTableView: UITableView = { let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) tableView.register(PollOptionTableViewCell.self, forCellReuseIdentifier: String(describing: PollOptionTableViewCell.self)) @@ -213,17 +213,13 @@ public final class StatusView: UIView { indicatorView.stopAnimating() return indicatorView }() - - // visibility - public let statusVisibilityView = StatusVisibilityView() - - // spoiler banner - // public let spoilerBannerView = SpoilerBannerView() - + // toolbar + let actionToolbarAdaptiveMarginContainerView = AdaptiveMarginContainerView() public let actionToolbarContainer = ActionToolbarContainer() // metric + let statusMetricViewAdaptiveMarginContainerView = AdaptiveMarginContainerView() public let statusMetricView = StatusMetricView() // filter hint @@ -252,13 +248,12 @@ public final class StatusView: UIView { } } - headerContainerView.isHidden = true - contentSensitiveeToggleButton.isHidden = true + setHeaderDisplay(isDisplay: false) + setContentSensitiveeToggleButtonDisplay(isDisplay: false) setSpoilerOverlayViewHidden(isHidden: true) - mediaContainerView.isHidden = true - pollContainerView.isHidden = true - statusVisibilityView.isHidden = true - filterHintLabel.isHidden = true + setMediaDisplay(isDisplay: false) + setPollDisplay(isDisplay: false) + setFilterHintLabelDisplay(isDisplay: false) } public override init(frame: CGRect) { @@ -323,12 +318,6 @@ extension StatusView { ]) pollTableView.delegate = self pollVoteButton.addTarget(self, action: #selector(StatusView.pollVoteButtonDidPressed(_:)), for: .touchUpInside) - - // statusSpoilerBannerView - // let spoilerBannerViewTapGestureRecognizer = UITapGestureRecognizer.singleTapGestureRecognizer - // spoilerBannerView.addGestureRecognizer(spoilerBannerViewTapGestureRecognizer) - // spoilerBannerViewTapGestureRecognizer.addTarget(self, action: #selector(StatusView.spoilerBannerViewTapGestureRecognizerHandler(_:))) - // toolbar actionToolbarContainer.delegate = self } @@ -362,11 +351,6 @@ extension StatusView { delegate?.statusView(self, spoilerOverlayViewDidPressed: spoilerOverlayView) } -// @objc private func spoilerBannerViewTapGestureRecognizerHandler(_ sender: UITapGestureRecognizer) { -// logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public)") -// delegate?.statusView(self, spoilerBannerViewDidPressed: spoilerBannerView) -// } - } extension StatusView { @@ -408,22 +392,23 @@ extension StatusView.Style { private func base(statusView: StatusView) { // container: V - [ header container | author container | content container | media container | pollTableView | actionToolbarContainer ] - statusView.containerStackView.layoutMargins = StatusView.containerLayoutMargin // header container: H - [ icon | label ] - statusView.headerContainerView.preservesSuperviewLayoutMargins = true - statusView.containerStackView.addArrangedSubview(statusView.headerContainerView) + statusView.headerAdaptiveMarginContainerView.contentView = statusView.headerContainerView + statusView.headerAdaptiveMarginContainerView.margin = StatusView.containerLayoutMargin + statusView.containerStackView.addArrangedSubview(statusView.headerAdaptiveMarginContainerView) + statusView.headerIconImageView.translatesAutoresizingMaskIntoConstraints = false statusView.headerInfoLabel.translatesAutoresizingMaskIntoConstraints = false statusView.headerContainerView.addSubview(statusView.headerIconImageView) statusView.headerContainerView.addSubview(statusView.headerInfoLabel) NSLayoutConstraint.activate([ - statusView.headerIconImageView.leadingAnchor.constraint(equalTo: statusView.headerContainerView.layoutMarginsGuide.leadingAnchor), + statusView.headerIconImageView.leadingAnchor.constraint(equalTo: statusView.headerContainerView.leadingAnchor), statusView.headerIconImageView.heightAnchor.constraint(equalTo: statusView.headerInfoLabel.heightAnchor, multiplier: 1.0).priority(.required - 1), statusView.headerIconImageView.widthAnchor.constraint(equalTo: statusView.headerIconImageView.heightAnchor, multiplier: 1.0).priority(.required - 1), statusView.headerInfoLabel.topAnchor.constraint(equalTo: statusView.headerContainerView.topAnchor), statusView.headerInfoLabel.leadingAnchor.constraint(equalTo: statusView.headerIconImageView.trailingAnchor, constant: 6), - statusView.headerInfoLabel.trailingAnchor.constraint(equalTo: statusView.headerContainerView.layoutMarginsGuide.trailingAnchor), + statusView.headerInfoLabel.trailingAnchor.constraint(equalTo: statusView.headerContainerView.trailingAnchor), statusView.headerInfoLabel.bottomAnchor.constraint(equalTo: statusView.headerContainerView.bottomAnchor), statusView.headerInfoLabel.centerYAnchor.constraint(equalTo: statusView.headerIconImageView.centerYAnchor), ]) @@ -434,9 +419,10 @@ extension StatusView.Style { statusView.headerIconImageView.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) // author container: H - [ avatarButton | author meta container | contentWarningToggleButton ] - statusView.authorContainerView.preservesSuperviewLayoutMargins = true - statusView.authorContainerView.isLayoutMarginsRelativeArrangement = true - statusView.containerStackView.addArrangedSubview(statusView.authorContainerView) + statusView.authorAdaptiveMarginContainerView.contentView = statusView.authorContainerView + statusView.authorAdaptiveMarginContainerView.margin = StatusView.containerLayoutMargin + statusView.containerStackView.addArrangedSubview(statusView.authorAdaptiveMarginContainerView) + UIContentSizeCategory.publisher .sink { category in statusView.authorContainerView.axis = category > .accessibilityLarge ? .vertical : .horizontal @@ -514,9 +500,9 @@ extension StatusView.Style { statusView.contentContainer.distribution = .fill statusView.contentContainer.alignment = .top - statusView.contentContainer.preservesSuperviewLayoutMargins = true - statusView.contentContainer.isLayoutMarginsRelativeArrangement = true - statusView.containerStackView.addArrangedSubview(statusView.contentContainer) + statusView.contentAdaptiveMarginContainerView.contentView = statusView.contentContainer + statusView.contentAdaptiveMarginContainerView.margin = StatusView.containerLayoutMargin + statusView.containerStackView.addArrangedSubview(statusView.contentAdaptiveMarginContainerView) statusView.contentContainer.setContentHuggingPriority(.required - 1, for: .vertical) statusView.contentContainer.setContentCompressionResistancePriority(.required - 1, for: .vertical) @@ -533,7 +519,12 @@ extension StatusView.Style { ]) // media container: V - [ mediaGridContainerView ] + statusView.mediaContainerView.translatesAutoresizingMaskIntoConstraints = false statusView.containerStackView.addArrangedSubview(statusView.mediaContainerView) + NSLayoutConstraint.activate([ + statusView.mediaContainerView.leadingAnchor.constraint(equalTo: statusView.containerStackView.leadingAnchor), + statusView.mediaContainerView.trailingAnchor.constraint(equalTo: statusView.containerStackView.trailingAnchor), + ]) statusView.mediaGridContainerView.translatesAutoresizingMaskIntoConstraints = false statusView.mediaContainerView.addSubview(statusView.mediaGridContainerView) @@ -545,10 +536,10 @@ extension StatusView.Style { ]) // pollContainerView: V - [ pollTableView | pollStatusStackView ] + statusView.pollAdaptiveMarginContainerView.contentView = statusView.pollContainerView + statusView.pollAdaptiveMarginContainerView.margin = StatusView.containerLayoutMargin statusView.pollContainerView.axis = .vertical - statusView.pollContainerView.preservesSuperviewLayoutMargins = true - statusView.pollContainerView.isLayoutMarginsRelativeArrangement = true - statusView.containerStackView.addArrangedSubview(statusView.pollContainerView) + statusView.containerStackView.addArrangedSubview(statusView.pollAdaptiveMarginContainerView) // pollTableView statusView.pollContainerView.addArrangedSubview(statusView.pollTableView) @@ -567,18 +558,11 @@ extension StatusView.Style { statusView.pollCountdownLabel.setContentHuggingPriority(.defaultLow, for: .horizontal) statusView.pollVoteButton.setContentHuggingPriority(.defaultHigh + 3, for: .horizontal) - // statusVisibilityView - statusView.statusVisibilityView.preservesSuperviewLayoutMargins = true - statusView.containerStackView.addArrangedSubview(statusView.statusVisibilityView) - - // spoilerBannerView - // statusView.spoilerBannerView.preservesSuperviewLayoutMargins = true - // statusView.containerStackView.addArrangedSubview(statusView.spoilerBannerView) - // action toolbar + statusView.actionToolbarAdaptiveMarginContainerView.contentView = statusView.actionToolbarContainer + statusView.actionToolbarAdaptiveMarginContainerView.margin = StatusView.containerLayoutMargin statusView.actionToolbarContainer.configure(for: .inline) - statusView.actionToolbarContainer.preservesSuperviewLayoutMargins = true - statusView.containerStackView.addArrangedSubview(statusView.actionToolbarContainer) + statusView.containerStackView.addArrangedSubview(statusView.actionToolbarAdaptiveMarginContainerView) // filterHintLabel statusView.filterHintLabel.translatesAutoresizingMaskIntoConstraints = false @@ -591,8 +575,6 @@ extension StatusView.Style { func inline(statusView: StatusView) { base(statusView: statusView) - - statusView.statusVisibilityView.removeFromSuperview() } func plain(statusView: StatusView) { @@ -600,8 +582,10 @@ extension StatusView.Style { base(statusView: statusView) // override the base style // statusMetricView - statusView.statusMetricView.layoutMargins = StatusView.containerLayoutMargin - statusView.containerStackView.addArrangedSubview(statusView.statusMetricView) + statusView.statusMetricViewAdaptiveMarginContainerView.contentView = statusView.statusMetricView + statusView.statusMetricViewAdaptiveMarginContainerView.margin = StatusView.containerLayoutMargin + statusView.containerStackView.addArrangedSubview(statusView.statusMetricViewAdaptiveMarginContainerView) + UIContentSizeCategory.publisher .sink { category in statusView.statusMetricView.containerStackView.axis = category > .accessibilityLarge ? .vertical : .horizontal @@ -614,16 +598,14 @@ extension StatusView.Style { base(statusView: statusView) // override the base style statusView.menuButton.removeFromSuperview() - statusView.statusVisibilityView.removeFromSuperview() - statusView.actionToolbarContainer.removeFromSuperview() + statusView.actionToolbarAdaptiveMarginContainerView.removeFromSuperview() } func notification(statusView: StatusView) { base(statusView: statusView) // override the base style - statusView.headerContainerView.removeFromSuperview() - statusView.authorContainerView.removeFromSuperview() - statusView.statusVisibilityView.removeFromSuperview() + statusView.headerAdaptiveMarginContainerView.removeFromSuperview() + statusView.authorAdaptiveMarginContainerView.removeFromSuperview() } func notificationQuote(statusView: StatusView) { @@ -632,8 +614,7 @@ extension StatusView.Style { statusView.contentContainer.layoutMargins.bottom = 16 // fix contentText align to edge issue statusView.contentSensitiveeToggleButton.removeFromSuperview() statusView.menuButton.removeFromSuperview() - statusView.statusVisibilityView.removeFromSuperview() - statusView.actionToolbarContainer.removeFromSuperview() + statusView.actionToolbarAdaptiveMarginContainerView.removeFromSuperview() } func composeStatusReplica(statusView: StatusView) { @@ -641,9 +622,7 @@ extension StatusView.Style { statusView.avatarButton.isUserInteractionEnabled = false statusView.menuButton.removeFromSuperview() - statusView.statusVisibilityView.removeFromSuperview() - // statusView.spoilerBannerView.removeFromSuperview() - statusView.actionToolbarContainer.removeFromSuperview() + statusView.actionToolbarAdaptiveMarginContainerView.removeFromSuperview() } func composeStatusAuthor(statusView: StatusView) { @@ -653,24 +632,22 @@ extension StatusView.Style { statusView.menuButton.removeFromSuperview() statusView.usernameTrialingDotLabel.removeFromSuperview() statusView.dateLabel.removeFromSuperview() - statusView.contentContainer.removeFromSuperview() + statusView.contentAdaptiveMarginContainerView.removeFromSuperview() statusView.spoilerOverlayView.removeFromSuperview() statusView.mediaContainerView.removeFromSuperview() - statusView.pollContainerView.removeFromSuperview() - statusView.statusVisibilityView.removeFromSuperview() - // statusView.spoilerBannerView.removeFromSuperview() - statusView.actionToolbarContainer.removeFromSuperview() + statusView.pollAdaptiveMarginContainerView.removeFromSuperview() + statusView.actionToolbarAdaptiveMarginContainerView.removeFromSuperview() } } extension StatusView { - func setHeaderDisplay() { - headerContainerView.isHidden = false + func setHeaderDisplay(isDisplay: Bool = true) { + headerAdaptiveMarginContainerView.isHidden = !isDisplay } - func setContentSensitiveeToggleButtonDisplay() { - contentSensitiveeToggleButton.isHidden = false + func setContentSensitiveeToggleButtonDisplay(isDisplay: Bool = true) { + contentSensitiveeToggleButton.isHidden = !isDisplay } func setSpoilerOverlayViewHidden(isHidden: Bool) { @@ -678,31 +655,35 @@ extension StatusView { spoilerOverlayView.setComponentHidden(isHidden) } - func setMediaDisplay() { - mediaContainerView.isHidden = false + func setMediaDisplay(isDisplay: Bool = true) { + mediaContainerView.isHidden = !isDisplay } - func setPollDisplay() { - pollContainerView.isHidden = false + func setPollDisplay(isDisplay: Bool = true) { + pollAdaptiveMarginContainerView.isHidden = !isDisplay } - func setVisibilityDisplay() { - statusVisibilityView.isHidden = false + func setFilterHintLabelDisplay(isDisplay: Bool = true) { + filterHintLabel.isHidden = !isDisplay } - func setFilterHintLabelDisplay() { - filterHintLabel.isHidden = false - } - - // content text Width + // container width public var contentMaxLayoutWidth: CGFloat { - let inset = contentLayoutInset - return frame.width - inset.left - inset.right + return frame.width } - - public var contentLayoutInset: UIEdgeInsets { - // TODO: adaptive iPad regular horizontal size class - return .zero + +} + +// MARK: - AdaptiveContainerView +extension StatusView: AdaptiveContainerView { + public func updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: Bool) { + let margin = isEnabled ? StatusView.containerLayoutMargin : .zero + headerAdaptiveMarginContainerView.margin = margin + authorAdaptiveMarginContainerView.margin = margin + contentAdaptiveMarginContainerView.margin = margin + pollAdaptiveMarginContainerView.margin = margin + actionToolbarAdaptiveMarginContainerView.margin = margin + statusMetricViewAdaptiveMarginContainerView.margin = margin } } diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift index c3a7ba378..449254d20 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Control/ActionToolbarContainer.swift @@ -48,10 +48,7 @@ public final class ActionToolbarContainer: UIView { extension ActionToolbarContainer { - private func _init() { - container.preservesSuperviewLayoutMargins = true - container.isLayoutMarginsRelativeArrangement = true - + private func _init() { container.translatesAutoresizingMaskIntoConstraints = false addSubview(container) NSLayoutConstraint.activate([ From 1d827e75974fa80712c085553ece4725ce8b2922 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 17:52:48 +0800 Subject: [PATCH 296/374] chore: update sidebar background color --- .../Background/sidebar.background.colorset/Contents.json | 6 +++--- .../Background/sidebar.background.colorset/Contents.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json index e30d6cabe..bc3fb38b9 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/Mastodon/Background/sidebar.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.945", - "green" : "0.945", - "red" : "0.945" + "blue" : "0xF7", + "green" : "0xF2", + "red" : "0xF2" } }, "idiom" : "universal" diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json index 03bc91c33..f30d42222 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Theme/system/Background/sidebar.background.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.945", - "green" : "0.945", - "red" : "0.945" + "blue" : "0xF7", + "green" : "0xF2", + "red" : "0xF2" } }, "idiom" : "universal" From 5be6211986098f4173ab0cf02125283eb804bd39 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 18:00:34 +0800 Subject: [PATCH 297/374] fix: split view column state after size class transition not stable issue --- Mastodon/Scene/Root/RootSplitViewController.swift | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Mastodon/Scene/Root/RootSplitViewController.swift b/Mastodon/Scene/Root/RootSplitViewController.swift index e9d7549bd..d9b18b0b4 100644 --- a/Mastodon/Scene/Root/RootSplitViewController.swift +++ b/Mastodon/Scene/Root/RootSplitViewController.swift @@ -101,12 +101,7 @@ extension RootSplitViewController { override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) - coordinator.animate { [weak self] context in - guard let self = self else { return } - self.updateBehavior(size: size) - } completion: { context in - // do nothing - } + self.updateBehavior(size: size) } override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { From 78fc34c08d89e20003d69987057f2b0328aba238 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 18:25:26 +0800 Subject: [PATCH 298/374] chore: update notification timeline margin --- .../Cell/NotificationTableViewCell+ViewModel.swift | 2 +- .../Container/AdaptiveMarginContainerView.swift | 14 ++++++++++---- .../MastodonUI/View/Content/NotificationView.swift | 9 ++------- .../MastodonUI/View/Content/StatusView.swift | 3 ++- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift index 2a4eb8a98..7b994076a 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell+ViewModel.swift @@ -36,7 +36,7 @@ extension NotificationTableViewCell { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): did layout for new cell") notificationView.statusView.frame.size.width = tableView.frame.width - containerViewHorizontalMargin - notificationView.quoteStatusView.frame.size.width = tableView.frame.width - 2 * StatusView.containerLayoutMargin - containerViewHorizontalMargin + notificationView.quoteStatusView.frame.size.width = tableView.frame.width - containerViewHorizontalMargin // the as same width as statusView } switch viewModel.value { diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/AdaptiveMarginContainerView.swift b/MastodonSDK/Sources/MastodonUI/View/Container/AdaptiveMarginContainerView.swift index 467715d72..3bc6c781a 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Container/AdaptiveMarginContainerView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Container/AdaptiveMarginContainerView.swift @@ -21,25 +21,31 @@ public final class AdaptiveMarginContainerView: UIView { contentView.translatesAutoresizingMaskIntoConstraints = false addSubview(contentView) + let _topLayoutConstraint = contentView.topAnchor.constraint(equalTo: topAnchor) let _leadingLayoutConstraint = contentView.leadingAnchor.constraint(equalTo: leadingAnchor) let _trailingLayoutConstraint = trailingAnchor.constraint(equalTo: contentView.trailingAnchor) + let _bottomLayoutConstraint = bottomAnchor.constraint(equalTo: contentView.bottomAnchor) NSLayoutConstraint.activate([ - contentView.topAnchor.constraint(equalTo: topAnchor), + _topLayoutConstraint, _leadingLayoutConstraint, _trailingLayoutConstraint, - contentView.bottomAnchor.constraint(equalTo: bottomAnchor), + _bottomLayoutConstraint ]) + topLayoutConstraint = _topLayoutConstraint leadingLayoutConstraint = _leadingLayoutConstraint trailingLayoutConstraint = _trailingLayoutConstraint + bottomLayoutConstraint = _bottomLayoutConstraint updateConstraints() } } - var leadingLayoutConstraint: NSLayoutConstraint? - var trailingLayoutConstraint: NSLayoutConstraint? + private(set) var topLayoutConstraint: NSLayoutConstraint? + private(set) var leadingLayoutConstraint: NSLayoutConstraint? + private(set) var trailingLayoutConstraint: NSLayoutConstraint? + private(set) var bottomLayoutConstraint: NSLayoutConstraint? } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index a8b7f469f..265a46aa5 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -226,15 +226,9 @@ extension NotificationView { // quoteStatusView containerStackView.addArrangedSubview(quoteStatusViewContainerView) - quoteStatusViewContainerView.layoutMargins = UIEdgeInsets( - top: 0, - left: StatusView.containerLayoutMargin, - bottom: 16, - right: StatusView.containerLayoutMargin - ) + quoteStatusViewContainerView.layoutMargins.bottom = 16 quoteBackgroundView.layoutMargins = UIEdgeInsets(top: 16, left: 0, bottom: 0, right: 0) - quoteBackgroundView.translatesAutoresizingMaskIntoConstraints = false quoteStatusViewContainerView.addSubview(quoteBackgroundView) NSLayoutConstraint.activate([ @@ -301,6 +295,7 @@ extension NotificationView { extension NotificationView: AdaptiveContainerView { public func updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: Bool) { statusView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: isEnabled) + quoteStatusView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: true) // always set margins } } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index e77e33b24..b938f2b97 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -611,7 +611,8 @@ extension StatusView.Style { func notificationQuote(statusView: StatusView) { base(statusView: statusView) // override the base style - statusView.contentContainer.layoutMargins.bottom = 16 // fix contentText align to edge issue + statusView.contentAdaptiveMarginContainerView.bottomLayoutConstraint?.constant = 16 // fix bottom margin missing issue + statusView.pollAdaptiveMarginContainerView.bottomLayoutConstraint?.constant = 16 // fix bottom margin missing issue statusView.contentSensitiveeToggleButton.removeFromSuperview() statusView.menuButton.removeFromSuperview() statusView.actionToolbarAdaptiveMarginContainerView.removeFromSuperview() From 8e880326eb8a0178f58de9ef2856e647b51bc279 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 18:55:26 +0800 Subject: [PATCH 299/374] chore: update profile header and segmented bar margin --- .../Header/View/ProfileHeaderView.swift | 33 +++++++++++++++++-- .../Scene/Profile/ProfileViewController.swift | 33 +++++++++++++++++-- .../AdaptiveMarginStatusTableViewCell.swift | 6 ++-- 3 files changed, 64 insertions(+), 8 deletions(-) diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index 6f4fe170b..78430cb36 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -250,7 +250,7 @@ extension ProfileHeaderView { avatarImageViewBackgroundView.translatesAutoresizingMaskIntoConstraints = false addSubview(avatarImageViewBackgroundView) NSLayoutConstraint.activate([ - avatarImageViewBackgroundView.leadingAnchor.constraint(equalToSystemSpacingAfter: bannerContainerView.leadingAnchor, multiplier: 2.0), + avatarImageViewBackgroundView.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor), // align to dashboardContainer bottom ]) @@ -306,8 +306,8 @@ extension ProfileHeaderView { addSubview(container) NSLayoutConstraint.activate([ container.topAnchor.constraint(equalTo: bannerContainerView.bottomAnchor), - container.leadingAnchor.constraint(equalToSystemSpacingAfter: leadingAnchor, multiplier: 2.0), - trailingAnchor.constraint(equalToSystemSpacingAfter: container.trailingAnchor, multiplier: 2.0), + container.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor), + layoutMarginsGuide.trailingAnchor.constraint(equalTo: container.trailingAnchor), container.bottomAnchor.constraint(equalTo: bottomAnchor), ]) @@ -401,10 +401,37 @@ extension ProfileHeaderView { relationshipActionButton.addTarget(self, action: #selector(ProfileHeaderView.relationshipActionButtonDidPressed(_:)), for: .touchUpInside) configure(state: .normal) + + updateLayoutMargins() + } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + updateLayoutMargins() } } +extension ProfileHeaderView { + private func updateLayoutMargins() { + let margin: CGFloat = { + switch traitCollection.userInterfaceIdiom { + case .phone: + return ProfileViewController.containerViewMarginForCompactHorizontalSizeClass + default: + return traitCollection.horizontalSizeClass == .regular ? + ProfileViewController.containerViewMarginForRegularHorizontalSizeClass : + ProfileViewController.containerViewMarginForCompactHorizontalSizeClass + } + }() + + layoutMargins.left = margin + layoutMargins.right = margin + } + +} + extension ProfileHeaderView { enum State { case normal diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index 826aaba52..a890505ef 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -22,6 +22,9 @@ protocol ProfileViewModelEditable { final class ProfileViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { + public static let containerViewMarginForRegularHorizontalSizeClass: CGFloat = 64 + public static let containerViewMarginForCompactHorizontalSizeClass: CGFloat = 16 + let logger = Logger(subsystem: "ProfileViewController", category: "ViewController") weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } @@ -279,13 +282,14 @@ extension ProfileViewController { self.profileHeaderViewController.view.addSubview(buttonBar) NSLayoutConstraint.activate([ buttonBar.topAnchor.constraint(equalTo: self.profileHeaderViewController.profileHeaderView.bottomAnchor), - buttonBar.leadingAnchor.constraint(equalToSystemSpacingAfter: self.profileHeaderViewController.view.leadingAnchor, multiplier: 2.0), - buttonBar.trailingAnchor.constraint(equalTo: self.profileHeaderViewController.view.layoutMarginsGuide.trailingAnchor), + buttonBar.leadingAnchor.constraint(equalTo: self.profileHeaderViewController.view.leadingAnchor), + buttonBar.trailingAnchor.constraint(equalTo: self.profileHeaderViewController.view.trailingAnchor), buttonBar.bottomAnchor.constraint(equalTo: self.profileHeaderViewController.view.bottomAnchor), buttonBar.heightAnchor.constraint(equalToConstant: ProfileHeaderViewController.segmentedControlHeight).priority(.required - 1), ]) }) ) + updateBarButtonInsets() overlayScrollView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(overlayScrollView) @@ -389,6 +393,31 @@ extension ProfileViewController { currentPostTimelineTableViewContentSizeObservation = nil } + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + updateBarButtonInsets() + } + +} + +extension ProfileViewController { + private func updateBarButtonInsets() { + let margin: CGFloat = { + switch traitCollection.userInterfaceIdiom { + case .phone: + return ProfileViewController.containerViewMarginForCompactHorizontalSizeClass + default: + return traitCollection.horizontalSizeClass == .regular ? + ProfileViewController.containerViewMarginForRegularHorizontalSizeClass : + ProfileViewController.containerViewMarginForCompactHorizontalSizeClass + } + }() + + profileHeaderViewController.buttonBar.layout.contentInset.left = margin + profileHeaderViewController.buttonBar.layout.contentInset.right = margin + } + } extension ProfileViewController { diff --git a/MastodonSDK/Sources/MastodonUI/Protocol/AdaptiveMarginStatusTableViewCell.swift b/MastodonSDK/Sources/MastodonUI/Protocol/AdaptiveMarginStatusTableViewCell.swift index b552816b2..0ac9342af 100644 --- a/MastodonSDK/Sources/MastodonUI/Protocol/AdaptiveMarginStatusTableViewCell.swift +++ b/MastodonSDK/Sources/MastodonUI/Protocol/AdaptiveMarginStatusTableViewCell.swift @@ -30,8 +30,8 @@ extension AdaptiveContainerMarginTableViewCell { public func updateContainerViewMarginConstraints() { func setupContainerForPhone() { - containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: true) // add inner margin for phone - containerViewLeadingLayoutConstraint.constant = 0 // remove outer margin for phone + containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: true) // add inner margin for phone + containerViewLeadingLayoutConstraint.constant = 0 // remove outer margin for phone containerViewTrailingLayoutConstraint.constant = 0 } @@ -43,7 +43,7 @@ extension AdaptiveContainerMarginTableViewCell { setupContainerForPhone() return } - containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: false) // remove margin for iPad + containerView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: false) // remove margin for iPad containerViewLeadingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass // add outer margin for iPad containerViewTrailingLayoutConstraint.constant = Self.containerViewMarginForRegularHorizontalSizeClass } From cc3826dd1f97dce4925bb846158876ab7cd4af08 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 18:55:52 +0800 Subject: [PATCH 300/374] fix: profile segmented bar use wrong tint color when force Dark Mode issue --- .../Profile/Header/ProfileHeaderViewController.swift | 5 ++++- .../Colors/Label/secondary.colorset/Contents.json | 12 ++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift b/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift index 9c9597224..de6ad5415 100644 --- a/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift +++ b/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift @@ -61,12 +61,15 @@ final class ProfileHeaderViewController: UIViewController { case .dark: // Asset.Colors.Label.primary.color button.selectedTintColor = UIColor(red: 238.0/255.0, green: 238.0/255.0, blue: 238.0/255.0, alpha: 1.0) + // Asset.Colors.Label.secondary.color + button.tintColor = UIColor(red: 151.0/255.0, green: 157.0/255.0, blue: 173.0/255.0, alpha: 1.0) default: // Asset.Colors.Label.primary.color button.selectedTintColor = UIColor(red: 40.0/255.0, green: 44.0/255.0, blue: 55.0/255.0, alpha: 1.0) + // Asset.Colors.Label.secondary.color + button.tintColor = UIColor(red: 60.0/255.0, green: 60.0/255.0, blue: 67.0/255.0, alpha: 0.6) } - button.tintColor = .secondaryLabel // UIColor(red: 60.0/255.0, green: 60.0/255.0, blue: 67.0/255.0, alpha: 1.0) button.backgroundColor = .clear } } diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json index 9d73ead03..cd123376b 100644 --- a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Colors/Label/secondary.colorset/Contents.json @@ -5,9 +5,9 @@ "color-space" : "srgb", "components" : { "alpha" : "0.600", - "blue" : "0.263", - "green" : "0.235", - "red" : "0.235" + "blue" : "67", + "green" : "60", + "red" : "60" } }, "idiom" : "universal" @@ -23,9 +23,9 @@ "color-space" : "srgb", "components" : { "alpha" : "1.000", - "blue" : "0.678", - "green" : "0.616", - "red" : "0.592" + "blue" : "173", + "green" : "157", + "red" : "151" } }, "idiom" : "universal" From 91e288215450c0b6a97e14dc0e3bdd19008a5972 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 19:09:12 +0800 Subject: [PATCH 301/374] chore: update horizontal compact mode notification timeline margin looks like --- .../Cell/NotificationTableViewCell.swift | 8 +++++++- .../View/Content/NotificationView.swift | 15 +++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift index fe2f87361..bbdb2afaa 100644 --- a/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift +++ b/Mastodon/Scene/Notification/Cell/NotificationTableViewCell.swift @@ -50,13 +50,13 @@ extension NotificationTableViewCell { notificationView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(notificationView) setupContainerViewMarginConstraints() - updateContainerViewMarginConstraints() NSLayoutConstraint.activate([ notificationView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 16), containerViewLeadingLayoutConstraint, containerViewTrailingLayoutConstraint, contentView.bottomAnchor.constraint(equalTo: notificationView.bottomAnchor), ]) + updateContainerViewMarginConstraints() separatorLine.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(separatorLine) @@ -78,6 +78,12 @@ extension NotificationTableViewCell { notificationView.delegate = self } + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + updateContainerViewMarginConstraints() + } + } // MARK: - AdaptiveContainerMarginTableViewCell diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index 265a46aa5..8827eadae 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -57,6 +57,7 @@ public final class NotificationView: UIView { }() // author + let authorAdaptiveMarginContainerView = AdaptiveMarginContainerView() let authorContainerView: UIStackView = { let stackView = UIStackView() stackView.axis = .horizontal @@ -148,9 +149,10 @@ extension NotificationView { ]) // author container: H - [ avatarButton | author meta container ] - authorContainerView.preservesSuperviewLayoutMargins = true - authorContainerView.isLayoutMarginsRelativeArrangement = true - containerStackView.addArrangedSubview(authorContainerView) + authorAdaptiveMarginContainerView.contentView = authorContainerView + authorAdaptiveMarginContainerView.margin = StatusView.containerLayoutMargin + containerStackView.addArrangedSubview(authorAdaptiveMarginContainerView) + UIContentSizeCategory.publisher .sink { [weak self] category in guard let self = self else { return } @@ -226,7 +228,7 @@ extension NotificationView { // quoteStatusView containerStackView.addArrangedSubview(quoteStatusViewContainerView) - quoteStatusViewContainerView.layoutMargins.bottom = 16 + quoteStatusViewContainerView.layoutMargins = UIEdgeInsets(top: 0, left: 0, bottom: 16, right: 0) quoteBackgroundView.layoutMargins = UIEdgeInsets(top: 16, left: 0, bottom: 0, right: 0) quoteBackgroundView.translatesAutoresizingMaskIntoConstraints = false @@ -294,6 +296,11 @@ extension NotificationView { // MARK: - AdaptiveContainerView extension NotificationView: AdaptiveContainerView { public func updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: Bool) { + let margin = isEnabled ? StatusView.containerLayoutMargin : .zero + authorAdaptiveMarginContainerView.margin = margin + quoteStatusViewContainerView.layoutMargins.left = margin + quoteStatusViewContainerView.layoutMargins.right = margin + statusView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: isEnabled) quoteStatusView.updateContainerViewComponentsLayoutMarginsRelativeArrangementBehavior(isEnabled: true) // always set margins } From a42acad3371fbaf7fc7d4955840319ac63c756e4 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 19:09:25 +0800 Subject: [PATCH 302/374] chore: update version to 1.3.0 (103) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 318d6e0db..42831530e 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 102 + 103 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index c235224d0..9f658ec92 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4628,7 +4628,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4657,7 +4657,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4765,11 +4765,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 102; + DYLIB_CURRENT_VERSION = 103; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4796,11 +4796,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 102; + DYLIB_CURRENT_VERSION = 103; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4825,7 +4825,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4850,7 +4850,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4875,7 +4875,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4900,7 +4900,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4925,7 +4925,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4949,7 +4949,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 102; + CURRENT_PROJECT_VERSION = 103; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 643aa9f63..a5240e44a 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 19 + 25 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 20 + 27 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 18 + 26 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 870f1285d..ce1ec2d7c 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 102 + 103 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index e75c19016..43510e42a 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 102 + 103 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 318d6e0db..42831530e 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 102 + 103 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 318d6e0db..42831530e 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 102 + 103 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index ec58de815..0ae342c47 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 102 + 103 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 2c87d961d..8fe1f1d0c 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 102 + 103 NSExtension NSExtensionAttributes From 5d38abd659270a4d008e33ad67acd0117128f6b1 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 19:33:12 +0800 Subject: [PATCH 303/374] feat: dismiss image preview when tap empty area --- .../Scene/MediaPreview/MediaPreviewViewController.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift index b8355c3a3..ae55134c4 100644 --- a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift +++ b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift @@ -222,7 +222,11 @@ extension MediaPreviewViewController: PageboyViewControllerDelegate { extension MediaPreviewViewController: MediaPreviewImageViewControllerDelegate { func mediaPreviewImageViewController(_ viewController: MediaPreviewImageViewController, tapGestureRecognizerDidTrigger tapGestureRecognizer: UITapGestureRecognizer) { - // do nothing + let location = tapGestureRecognizer.location(in: viewController.previewImageView.imageView) + let isContainsTap = viewController.previewImageView.imageView.frame.contains(location) + + guard !isContainsTap else { return } + dismiss(animated: true, completion: nil) } func mediaPreviewImageViewController(_ viewController: MediaPreviewImageViewController, longPressGestureRecognizerDidTrigger longPressGestureRecognizer: UILongPressGestureRecognizer) { From a73e65e903386bfb3352dbc71ffc3235ea1a116e Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 18 Feb 2022 19:34:27 +0800 Subject: [PATCH 304/374] chore: update version to 1.3.0 (104) --- AppShared/Info.plist | 2 +- Mastodon.xcodeproj/project.pbxproj | 24 +++++++++---------- .../xcschemes/xcschememanagement.plist | 6 ++--- Mastodon/Info.plist | 2 +- MastodonIntent/Info.plist | 2 +- MastodonTests/Info.plist | 2 +- MastodonUITests/Info.plist | 2 +- NotificationService/Info.plist | 2 +- ShareActionExtension/Info.plist | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/AppShared/Info.plist b/AppShared/Info.plist index 42831530e..a1b21dc4b 100644 --- a/AppShared/Info.plist +++ b/AppShared/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 103 + 104 diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 9f658ec92..689f7de3e 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -4628,7 +4628,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4657,7 +4657,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4765,11 +4765,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 103; + DYLIB_CURRENT_VERSION = 104; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4796,11 +4796,11 @@ APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5Z4GVSS33P; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 103; + DYLIB_CURRENT_VERSION = 104; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppShared/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -4825,7 +4825,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4850,7 +4850,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = MastodonIntent/MastodonIntent.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = MastodonIntent/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4875,7 +4875,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4900,7 +4900,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = ShareActionExtension/ShareActionExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = ShareActionExtension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4925,7 +4925,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4949,7 +4949,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 103; + CURRENT_PROJECT_VERSION = 104; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index a5240e44a..e22b78b75 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 25 + 29 CoreDataStack.xcscheme_^#shared#^_ @@ -97,7 +97,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 27 + 30 MastodonIntents.xcscheme_^#shared#^_ @@ -117,7 +117,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 26 + 28 SuppressBuildableAutocreation diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index ce1ec2d7c..2efdec0c5 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -30,7 +30,7 @@ CFBundleVersion - 103 + 104 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes diff --git a/MastodonIntent/Info.plist b/MastodonIntent/Info.plist index 43510e42a..6f5b6feda 100644 --- a/MastodonIntent/Info.plist +++ b/MastodonIntent/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 103 + 104 NSExtension NSExtensionAttributes diff --git a/MastodonTests/Info.plist b/MastodonTests/Info.plist index 42831530e..a1b21dc4b 100644 --- a/MastodonTests/Info.plist +++ b/MastodonTests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 103 + 104 diff --git a/MastodonUITests/Info.plist b/MastodonUITests/Info.plist index 42831530e..a1b21dc4b 100644 --- a/MastodonUITests/Info.plist +++ b/MastodonUITests/Info.plist @@ -17,6 +17,6 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 103 + 104 diff --git a/NotificationService/Info.plist b/NotificationService/Info.plist index 0ae342c47..19c22e8a8 100644 --- a/NotificationService/Info.plist +++ b/NotificationService/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 103 + 104 NSExtension NSExtensionPointIdentifier diff --git a/ShareActionExtension/Info.plist b/ShareActionExtension/Info.plist index 8fe1f1d0c..21ee332d0 100644 --- a/ShareActionExtension/Info.plist +++ b/ShareActionExtension/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString 1.3.0 CFBundleVersion - 103 + 104 NSExtension NSExtensionAttributes From 7e2a3102d222663e07607993be7a76443c918a23 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 21 Feb 2022 04:19:45 +0100 Subject: [PATCH 305/374] New translations app.json (Italian) --- .../StringsConvertor/input/it_IT/app.json | 596 ++++++++++++++++++ 1 file changed, 596 insertions(+) create mode 100644 Localization/StringsConvertor/input/it_IT/app.json diff --git a/Localization/StringsConvertor/input/it_IT/app.json b/Localization/StringsConvertor/input/it_IT/app.json new file mode 100644 index 000000000..ad99e178d --- /dev/null +++ b/Localization/StringsConvertor/input/it_IT/app.json @@ -0,0 +1,596 @@ +{ + "common": { + "alerts": { + "common": { + "please_try_again": "Please try again.", + "please_try_again_later": "Please try again later." + }, + "sign_up_failure": { + "title": "Sign Up Failure" + }, + "server_error": { + "title": "Server Error" + }, + "vote_failure": { + "title": "Vote Failure", + "poll_ended": "The poll has ended" + }, + "discard_post_content": { + "title": "Discard Draft", + "message": "Confirm to discard composed post content." + }, + "publish_post_failure": { + "title": "Publish Failure", + "message": "Failed to publish the post.\nPlease check your internet connection.", + "attachments_message": { + "video_attach_with_photo": "Cannot attach a video to a post that already contains images.", + "more_than_one_video": "Cannot attach more than one video." + } + }, + "edit_profile_failure": { + "title": "Edit Profile Error", + "message": "Cannot edit profile. Please try again." + }, + "sign_out": { + "title": "Sign Out", + "message": "Are you sure you want to sign out?", + "confirm": "Sign Out" + }, + "block_domain": { + "title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.", + "block_entire_domain": "Block Domain" + }, + "save_photo_failure": { + "title": "Save Photo Failure", + "message": "Please enable the photo library access permission to save the photo." + }, + "delete_post": { + "title": "Delete Post", + "message": "Are you sure you want to delete this post?" + }, + "clean_cache": { + "title": "Clean Cache", + "message": "Successfully cleaned %s cache." + } + }, + "controls": { + "actions": { + "back": "Back", + "next": "Next", + "previous": "Previous", + "open": "Open", + "add": "Add", + "remove": "Remove", + "edit": "Edit", + "save": "Save", + "ok": "OK", + "done": "Done", + "confirm": "Confirm", + "continue": "Continue", + "compose": "Compose", + "cancel": "Cancel", + "discard": "Discard", + "try_again": "Try Again", + "take_photo": "Take Photo", + "save_photo": "Save Photo", + "copy_photo": "Copy Photo", + "sign_in": "Sign In", + "sign_up": "Sign Up", + "see_more": "See More", + "preview": "Preview", + "share": "Share", + "share_user": "Share %s", + "share_post": "Share Post", + "open_in_safari": "Open in Safari", + "open_in_browser": "Open in Browser", + "find_people": "Find people to follow", + "manually_search": "Manually search instead", + "skip": "Skip", + "reply": "Reply", + "report_user": "Report %s", + "block_domain": "Block %s", + "unblock_domain": "Unblock %s", + "settings": "Settings", + "delete": "Delete" + }, + "tabs": { + "home": "Home", + "search": "Search", + "notification": "Notification", + "profile": "Profile" + }, + "keyboard": { + "common": { + "switch_to_tab": "Switch to %s", + "compose_new_post": "Compose New Post", + "show_favorites": "Show Favorites", + "open_settings": "Open Settings" + }, + "timeline": { + "previous_status": "Previous Post", + "next_status": "Next Post", + "open_status": "Open Post", + "open_author_profile": "Open Author's Profile", + "open_reblogger_profile": "Open Reblogger's Profile", + "reply_status": "Reply to Post", + "toggle_reblog": "Toggle Reblog on Post", + "toggle_favorite": "Toggle Favorite on Post", + "toggle_content_warning": "Toggle Content Warning", + "preview_image": "Preview Image" + }, + "segmented_control": { + "previous_section": "Previous Section", + "next_section": "Next Section" + } + }, + "status": { + "user_reblogged": "%s reblogged", + "user_replied_to": "Replied to %s", + "show_post": "Show Post", + "show_user_profile": "Show user profile", + "content_warning": "Content Warning", + "media_content_warning": "Tap anywhere to reveal", + "poll": { + "vote": "Vote", + "closed": "Closed" + }, + "actions": { + "reply": "Reply", + "reblog": "Reblog", + "unreblog": "Undo reblog", + "favorite": "Favorite", + "unfavorite": "Unfavorite", + "menu": "Menu", + "hide": "Hide" + }, + "tag": { + "url": "URL", + "mention": "Mention", + "link": "Link", + "hashtag": "Hashtag", + "email": "Email", + "emoji": "Emoji" + }, + "visibility": { + "unlisted": "Everyone can see this post but not display in the public timeline.", + "private": "Only their followers can see this post.", + "private_from_me": "Only my followers can see this post.", + "direct": "Only mentioned user can see this post." + } + }, + "friendship": { + "follow": "Follow", + "following": "Following", + "request": "Request", + "pending": "Pending", + "block": "Block", + "block_user": "Block %s", + "block_domain": "Block %s", + "unblock": "Unblock", + "unblock_user": "Unblock %s", + "blocked": "Blocked", + "mute": "Mute", + "mute_user": "Mute %s", + "unmute": "Unmute", + "unmute_user": "Unmute %s", + "muted": "Muted", + "edit_info": "Edit Info" + }, + "timeline": { + "filtered": "Filtered", + "timestamp": { + "now": "Now" + }, + "loader": { + "load_missing_posts": "Load missing posts", + "loading_missing_posts": "Loading missing posts...", + "show_more_replies": "Show more replies" + }, + "header": { + "no_status_found": "No Post Found", + "blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", + "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.", + "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.", + "user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.", + "suspended_warning": "This user has been suspended.", + "user_suspended_warning": "%s’s account has been suspended." + } + } + } + }, + "scene": { + "welcome": { + "slogan": "Social networking\nback in your hands.", + "get_started": "Get Started", + "log_in": "Log In" + }, + "server_picker": { + "title": "Mastodon is made of users in different communities.", + "subtitle": "Pick a community based on your interests, region, or a general purpose one.", + "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "button": { + "category": { + "all": "All", + "all_accessiblity_description": "Category: All", + "academia": "academia", + "activism": "activism", + "food": "food", + "furry": "furry", + "games": "games", + "general": "general", + "journalism": "journalism", + "lgbt": "lgbt", + "regional": "regional", + "art": "art", + "music": "music", + "tech": "tech" + }, + "see_less": "See Less", + "see_more": "See More" + }, + "label": { + "language": "LANGUAGE", + "users": "USERS", + "category": "CATEGORY" + }, + "input": { + "placeholder": "Search communities" + }, + "empty_state": { + "finding_servers": "Finding available servers...", + "bad_network": "Something went wrong while loading the data. Check your internet connection.", + "no_results": "No results" + } + }, + "register": { + "title": "Let’s get you set up on %s", + "input": { + "avatar": { + "delete": "Delete" + }, + "username": { + "placeholder": "username", + "duplicate_prompt": "This username is taken." + }, + "display_name": { + "placeholder": "display name" + }, + "email": { + "placeholder": "email" + }, + "password": { + "placeholder": "password", + "require": "Your password needs at least:", + "character_limit": "8 characters", + "accessibility": { + "checked": "checked", + "unchecked": "unchecked" + }, + "hint": "Your password needs at least eight characters" + }, + "invite": { + "registration_user_invite_request": "Why do you want to join?" + } + }, + "error": { + "item": { + "username": "Username", + "email": "Email", + "password": "Password", + "agreement": "Agreement", + "locale": "Locale", + "reason": "Reason" + }, + "reason": { + "blocked": "%s contains a disallowed email provider", + "unreachable": "%s does not seem to exist", + "taken": "%s is already in use", + "reserved": "%s is a reserved keyword", + "accepted": "%s must be accepted", + "blank": "%s is required", + "invalid": "%s is invalid", + "too_long": "%s is too long", + "too_short": "%s is too short", + "inclusion": "%s is not a supported value" + }, + "special": { + "username_invalid": "Username must only contain alphanumeric characters and underscores", + "username_too_long": "Username is too long (can’t be longer than 30 characters)", + "email_invalid": "This is not a valid email address", + "password_too_short": "Password is too short (must be at least 8 characters)" + } + } + }, + "server_rules": { + "title": "Some ground rules.", + "subtitle": "These are set and enforced by the %s moderators.", + "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", + "terms_of_service": "terms of service", + "privacy_policy": "privacy policy", + "button": { + "confirm": "I Agree" + } + }, + "confirm_email": { + "title": "One last thing.", + "subtitle": "Tap the link we emailed to you to verify your account.", + "button": { + "open_email_app": "Open Email App", + "resend": "Resend" + }, + "dont_receive_email": { + "title": "Check your email", + "description": "Check if your email address is correct as well as your junk folder if you haven’t.", + "resend_email": "Resend Email" + }, + "open_email_app": { + "title": "Check your inbox.", + "description": "We just sent you an email. Check your junk folder if you haven’t.", + "mail": "Mail", + "open_email_client": "Open Email Client" + } + }, + "home_timeline": { + "title": "Home", + "navigation_bar_state": { + "offline": "Offline", + "new_posts": "See new posts", + "published": "Published!", + "Publishing": "Publishing post..." + } + }, + "suggestion_account": { + "title": "Find People to Follow", + "follow_explain": "When you follow someone, you’ll see their posts in your home feed." + }, + "compose": { + "title": { + "new_post": "New Post", + "new_reply": "New Reply" + }, + "media_selection": { + "camera": "Take Photo", + "photo_library": "Photo Library", + "browse": "Browse" + }, + "content_input_placeholder": "Type or paste what’s on your mind", + "compose_action": "Publish", + "replying_to_user": "replying to %s", + "attachment": { + "photo": "photo", + "video": "video", + "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", + "description_photo": "Describe the photo for the visually-impaired...", + "description_video": "Describe the video for the visually-impaired..." + }, + "poll": { + "duration_time": "Duration: %s", + "thirty_minutes": "30 minutes", + "one_hour": "1 Hour", + "six_hours": "6 Hours", + "one_day": "1 Day", + "three_days": "3 Days", + "seven_days": "7 Days", + "option_number": "Option %ld" + }, + "content_warning": { + "placeholder": "Write an accurate warning here..." + }, + "visibility": { + "public": "Public", + "unlisted": "Unlisted", + "private": "Followers only", + "direct": "Only people I mention" + }, + "auto_complete": { + "space_to_add": "Space to add" + }, + "accessibility": { + "append_attachment": "Add Attachment", + "append_poll": "Add Poll", + "remove_poll": "Remove Poll", + "custom_emoji_picker": "Custom Emoji Picker", + "enable_content_warning": "Enable Content Warning", + "disable_content_warning": "Disable Content Warning", + "post_visibility_menu": "Post Visibility Menu" + }, + "keyboard": { + "discard_post": "Discard Post", + "publish_post": "Publish Post", + "toggle_poll": "Toggle Poll", + "toggle_content_warning": "Toggle Content Warning", + "append_attachment_entry": "Add Attachment - %s", + "select_visibility_entry": "Select Visibility - %s" + } + }, + "profile": { + "dashboard": { + "posts": "posts", + "following": "following", + "followers": "followers" + }, + "fields": { + "add_row": "Add Row", + "placeholder": { + "label": "Label", + "content": "Content" + } + }, + "segmented_control": { + "posts": "Posts", + "replies": "Replies", + "posts_and_replies": "Posts and Replies", + "media": "Media", + "about": "About" + }, + "relationship_action_alert": { + "confirm_mute_user": { + "title": "Mute Account", + "message": "Confirm to mute %s" + }, + "confirm_unmute_user": { + "title": "Unmute Account", + "message": "Confirm to unmute %s" + }, + "confirm_block_user": { + "title": "Block Account", + "message": "Confirm to block %s" + }, + "confirm_unblock_user": { + "title": "Unblock Account", + "message": "Confirm to unblock %s" + } + } + }, + "follower": { + "footer": "Followers from other servers are not displayed." + }, + "following": { + "footer": "Follows from other servers are not displayed." + }, + "search": { + "title": "Search", + "search_bar": { + "placeholder": "Search hashtags and users", + "cancel": "Cancel" + }, + "recommend": { + "button_text": "See All", + "hash_tag": { + "title": "Trending on Mastodon", + "description": "Hashtags that are getting quite a bit of attention", + "people_talking": "%s people are talking" + }, + "accounts": { + "title": "Accounts you might like", + "description": "You may like to follow these accounts", + "follow": "Follow" + } + }, + "searching": { + "segment": { + "all": "All", + "people": "People", + "hashtags": "Hashtags", + "posts": "Posts" + }, + "empty_state": { + "no_results": "No results" + }, + "recent_search": "Recent searches", + "clear": "Clear" + } + }, + "favorite": { + "title": "Your Favorites" + }, + "notification": { + "title": { + "Everything": "Everything", + "Mentions": "Mentions" + }, + "notification_description": { + "followed_you": "followed you", + "favorited_your_post": "favorited your post", + "reblogged_your_post": "reblogged your post", + "mentioned_you": "mentioned you", + "request_to_follow_you": "request to follow you", + "poll_has_ended": "poll has ended" + }, + "keyobard": { + "show_everything": "Show Everything", + "show_mentions": "Show Mentions" + } + }, + "thread": { + "back_title": "Post", + "title": "Post from %s" + }, + "settings": { + "title": "Settings", + "section": { + "appearance": { + "title": "Appearance", + "automatic": "Automatic", + "light": "Always Light", + "dark": "Always Dark" + }, + "look_and_feel": { + "title": "Look and Feel", + "use_system": "Use System", + "really_dark": "Really Dark", + "sorta_dark": "Sorta Dark", + "light": "Light" + }, + "notifications": { + "title": "Notifications", + "favorites": "Favorites my post", + "follows": "Follows me", + "boosts": "Reblogs my post", + "mentions": "Mentions me", + "trigger": { + "anyone": "anyone", + "follower": "a follower", + "follow": "anyone I follow", + "noone": "no one", + "title": "Notify me when" + } + }, + "preference": { + "title": "Preferences", + "true_black_dark_mode": "True black dark mode", + "disable_avatar_animation": "Disable animated avatars", + "disable_emoji_animation": "Disable animated emojis", + "using_default_browser": "Use default browser to open links" + }, + "boring_zone": { + "title": "The Boring Zone", + "account_settings": "Account Settings", + "terms": "Terms of Service", + "privacy": "Privacy Policy" + }, + "spicy_zone": { + "title": "The Spicy Zone", + "clear": "Clear Media Cache", + "signout": "Sign Out" + } + }, + "footer": { + "mastodon_description": "Mastodon is open source software. You can report issues on GitHub at %s (%s)" + }, + "keyboard": { + "close_settings_window": "Close Settings Window" + } + }, + "report": { + "title_report": "Report", + "title": "Report %s", + "step1": "Step 1 of 2", + "step2": "Step 2 of 2", + "content1": "Are there any other posts you’d like to add to the report?", + "content2": "Is there anything the moderators should know about this report?", + "report_sent_title": "Thanks for reporting, we’ll look into this.", + "send": "Send Report", + "skip_to_send": "Send without comment", + "text_placeholder": "Type or paste additional comments", + "reported": "REPORTED" + }, + "preview": { + "keyboard": { + "close_preview": "Close Preview", + "show_next": "Show Next", + "show_previous": "Show Previous" + } + }, + "account_list": { + "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", + "dismiss_account_switcher": "Dismiss Account Switcher", + "add_account": "Add Account" + }, + "wizard": { + "new_in_mastodon": "New in Mastodon", + "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.", + "accessibility_hint": "Double tap to dismiss this wizard" + } + } +} \ No newline at end of file From ff1828a51b48c774ef161bdb7a5879e4894624a4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 21 Feb 2022 04:19:46 +0100 Subject: [PATCH 306/374] New translations ios-infoPlist.json (Italian) --- .../StringsConvertor/input/it_IT/ios-infoPlist.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Localization/StringsConvertor/input/it_IT/ios-infoPlist.json diff --git a/Localization/StringsConvertor/input/it_IT/ios-infoPlist.json b/Localization/StringsConvertor/input/it_IT/ios-infoPlist.json new file mode 100644 index 000000000..c6db73de0 --- /dev/null +++ b/Localization/StringsConvertor/input/it_IT/ios-infoPlist.json @@ -0,0 +1,6 @@ +{ + "NSCameraUsageDescription": "Used to take photo for post status", + "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", + "NewPostShortcutItemTitle": "New Post", + "SearchShortcutItemTitle": "Search" +} From 047912f62cf6058b43d7978f52ad3ffaf3984a2f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 21 Feb 2022 04:19:47 +0100 Subject: [PATCH 307/374] New translations Localizable.stringsdict (Italian) --- .../input/it_IT/Localizable.stringsdict | 390 ++++++++++++++++++ 1 file changed, 390 insertions(+) create mode 100644 Localization/StringsConvertor/input/it_IT/Localizable.stringsdict diff --git a/Localization/StringsConvertor/input/it_IT/Localizable.stringsdict b/Localization/StringsConvertor/input/it_IT/Localizable.stringsdict new file mode 100644 index 000000000..730e2902a --- /dev/null +++ b/Localization/StringsConvertor/input/it_IT/Localizable.stringsdict @@ -0,0 +1,390 @@ + + + + + a11y.plural.count.unread.notification + + NSStringLocalizedFormatKey + %#@notification_count_unread_notification@ + notification_count_unread_notification + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 unread notification + other + %ld unread notification + + + a11y.plural.count.input_limit_exceeds + + NSStringLocalizedFormatKey + Input limit exceeds %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld characters + + + a11y.plural.count.input_limit_remains + + NSStringLocalizedFormatKey + Input limit remains %#@character_count@ + character_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 character + other + %ld characters + + + plural.count.metric_formatted.post + + NSStringLocalizedFormatKey + %@ %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + post + other + posts + + + plural.count.post + + NSStringLocalizedFormatKey + %#@post_count@ + post_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 post + other + %ld posts + + + plural.count.favorite + + NSStringLocalizedFormatKey + %#@favorite_count@ + favorite_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 favorite + other + %ld favorites + + + plural.count.reblog + + NSStringLocalizedFormatKey + %#@reblog_count@ + reblog_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 reblog + other + %ld reblogs + + + plural.count.vote + + NSStringLocalizedFormatKey + %#@vote_count@ + vote_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 vote + other + %ld votes + + + plural.count.voter + + NSStringLocalizedFormatKey + %#@voter_count@ + voter_count + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 voter + other + %ld voters + + + plural.people_talking + + NSStringLocalizedFormatKey + %#@count_people_talking@ + count_people_talking + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 people talking + other + %ld people talking + + + plural.count.following + + NSStringLocalizedFormatKey + %#@count_following@ + count_following + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 following + other + %ld following + + + plural.count.follower + + NSStringLocalizedFormatKey + %#@count_follower@ + count_follower + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 follower + other + %ld followers + + + date.year.left + + NSStringLocalizedFormatKey + %#@count_year_left@ + count_year_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 year left + other + %ld years left + + + date.month.left + + NSStringLocalizedFormatKey + %#@count_month_left@ + count_month_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 months left + other + %ld months left + + + date.day.left + + NSStringLocalizedFormatKey + %#@count_day_left@ + count_day_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 day left + other + %ld days left + + + date.hour.left + + NSStringLocalizedFormatKey + %#@count_hour_left@ + count_hour_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 hour left + other + %ld hours left + + + date.minute.left + + NSStringLocalizedFormatKey + %#@count_minute_left@ + count_minute_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 minute left + other + %ld minutes left + + + date.second.left + + NSStringLocalizedFormatKey + %#@count_second_left@ + count_second_left + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1 second left + other + %ld seconds left + + + date.year.ago.abbr + + NSStringLocalizedFormatKey + %#@count_year_ago_abbr@ + count_year_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1y ago + other + %ldy ago + + + date.month.ago.abbr + + NSStringLocalizedFormatKey + %#@count_month_ago_abbr@ + count_month_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1M ago + other + %ldM ago + + + date.day.ago.abbr + + NSStringLocalizedFormatKey + %#@count_day_ago_abbr@ + count_day_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1d ago + other + %ldd ago + + + date.hour.ago.abbr + + NSStringLocalizedFormatKey + %#@count_hour_ago_abbr@ + count_hour_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1h ago + other + %ldh ago + + + date.minute.ago.abbr + + NSStringLocalizedFormatKey + %#@count_minute_ago_abbr@ + count_minute_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1m ago + other + %ldm ago + + + date.second.ago.abbr + + NSStringLocalizedFormatKey + %#@count_second_ago_abbr@ + count_second_ago_abbr + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + ld + one + 1s ago + other + %lds ago + + + + From 5763c22f9bd5b133a9a78162ea386061a0f33361 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 21 Feb 2022 04:19:48 +0100 Subject: [PATCH 308/374] New translations Intents.strings (Italian) --- .../Intents/input/it_IT/Intents.strings | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Localization/StringsConvertor/Intents/input/it_IT/Intents.strings diff --git a/Localization/StringsConvertor/Intents/input/it_IT/Intents.strings b/Localization/StringsConvertor/Intents/input/it_IT/Intents.strings new file mode 100644 index 000000000..6877490ba --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/it_IT/Intents.strings @@ -0,0 +1,51 @@ +"16wxgf" = "Post on Mastodon"; + +"751xkl" = "Text Content"; + +"CsR7G2" = "Post on Mastodon"; + +"HZSGTr" = "What content to post?"; + +"HdGikU" = "Posting failed"; + +"KDNTJ4" = "Failure Reason"; + +"RHxKOw" = "Send Post with text content"; + +"RxSqsb" = "Post"; + +"WCIR3D" = "Post ${content} on Mastodon"; + +"ZKJSNu" = "Post"; + +"ZS1XaK" = "${content}"; + +"ZbSjzC" = "Visibility"; + +"Zo4jgJ" = "Post Visibility"; + +"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; + +"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; + +"ayoYEb-dYQ5NN" = "${content}, Public"; + +"ayoYEb-ehFLjY" = "${content}, Followers Only"; + +"dUyuGg" = "Post on Mastodon"; + +"dYQ5NN" = "Public"; + +"ehFLjY" = "Followers Only"; + +"gfePDu" = "Posting failed. ${failureReason}"; + +"k7dbKQ" = "Post was sent successfully."; + +"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; + +"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; + +"rM6dvp" = "URL"; + +"ryJLwG" = "Post was sent successfully. "; From 5387a238dd1cf42f865d480f94302b7d057c48f8 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 21 Feb 2022 04:19:49 +0100 Subject: [PATCH 309/374] New translations Intents.stringsdict (Italian) --- .../Intents/input/it_IT/Intents.stringsdict | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Localization/StringsConvertor/Intents/input/it_IT/Intents.stringsdict diff --git a/Localization/StringsConvertor/Intents/input/it_IT/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/it_IT/Intents.stringsdict new file mode 100644 index 000000000..18422c772 --- /dev/null +++ b/Localization/StringsConvertor/Intents/input/it_IT/Intents.stringsdict @@ -0,0 +1,38 @@ + + + + + There are ${count} options matching ‘${content}’. - 2 + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${content}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 option + other + %ld options + + + There are ${count} options matching ‘${visibility}’. + + NSStringLocalizedFormatKey + There are %#@count_option@ matching ‘${visibility}’. + count_option + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + %ld + one + 1 option + other + %ld options + + + + From 3a52259fd7cf2cb19eefbd7b024479f6f2a285f1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Feb 2022 21:14:57 +0100 Subject: [PATCH 310/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 5e73534f4..4be54ee51 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -28,8 +28,8 @@ } }, "edit_profile_failure": { - "title": "Edit Profile Error", - "message": "Cannot edit profile. Please try again." + "title": "Ẓreg tuccḍa n umaɣnu", + "message": "Yegguma ad yettwaẓreg umaɣnu. Ɛreḍ tikkelt-nniḍen." }, "sign_out": { "title": "Ffeɣ", From 328644cf9ffd847c0aa8cc2bfc80268be9d69420 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Feb 2022 22:21:52 +0100 Subject: [PATCH 311/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 4be54ee51..b52b287b9 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -6,13 +6,13 @@ "please_try_again_later": "Ttxil εreḍ tikelt-nniḍen ticki." }, "sign_up_failure": { - "title": "Sign Up Failure" + "title": "Tuccḍa deg unekcum" }, "server_error": { "title": "Tuccḍa n uqeddac" }, "vote_failure": { - "title": "Vote Failure", + "title": "Tuccḍa deg ufran", "poll_ended": "Tafrant tfuk" }, "discard_post_content": { @@ -41,16 +41,16 @@ "block_entire_domain": "Sewḥel taɣult" }, "save_photo_failure": { - "title": "Save Photo Failure", - "message": "Please enable the photo library access permission to save the photo." + "title": "Tuccḍa deg usekles n tewlaft", + "message": "Ma ulac aɣilif, rmed tasiregt n unekcum ɣer temkarḍit n tewlafin i usekles n tewlaft." }, "delete_post": { "title": "Tebɣiḍ s tidet ad tekkseḍ tasuffeɣt-agi?", - "message": "Are you sure you want to delete this post?" + "message": "Tebɣiḍ s tidet ad tekkseḍ tasuffeɣt-agi?" }, "clean_cache": { "title": "Sfeḍ tuffirt", - "message": "Successfully cleaned %s cache." + "message": "Yettwasfeḍ %s n tkatut tuffirt akken iwata." } }, "controls": { @@ -84,7 +84,7 @@ "open_in_safari": "Ldi deg Safari", "open_in_browser": "Ldi deg yiminig", "find_people": "Af imdanen ara tḍefreḍ", - "manually_search": "Manually search instead", + "manually_search": "Anadi s ufus deg wadeg-is", "skip": "Zgel", "reply": "Err", "report_user": "Cetki ɣef %s", @@ -112,22 +112,22 @@ "open_status": "Ldi tasuffeɣt", "open_author_profile": "Open Author's Profile", "open_reblogger_profile": "Open Reblogger's Profile", - "reply_status": "Reply to Post", + "reply_status": "Err ɣef tsuffeɣt", "toggle_reblog": "Toggle Reblog on Post", "toggle_favorite": "Toggle Favorite on Post", "toggle_content_warning": "Toggle Content Warning", - "preview_image": "Preview Image" + "preview_image": "Asenqed n tugna" }, "segmented_control": { - "previous_section": "Previous Section", + "previous_section": "Tafrant tuzwirt", "next_section": "Tigezmi tuḍfirt" } }, "status": { - "user_reblogged": "%s reblogged", - "user_replied_to": "Replied to %s", + "user_reblogged": "Tettwasuffeɣ-d %s i tikkelt-nniḍen", + "user_replied_to": "Yerra ɣef %s", "show_post": "Sken-d tasuffeɣt", - "show_user_profile": "Show user profile", + "show_user_profile": "Ssken-d amaɣnu n useqdac", "content_warning": "Content Warning", "media_content_warning": "Tap anywhere to reveal", "poll": { @@ -137,9 +137,9 @@ "actions": { "reply": "Err", "reblog": "Aɛiwed n usuffeɣ", - "unreblog": "Undo reblog", + "unreblog": "Sefsex allus n usuffeɣ", "favorite": "Anurif", - "unfavorite": "Unfavorite", + "unfavorite": "Kkes seg yismenyifen", "menu": "Umuɣ", "hide": "Ffer" }, @@ -211,7 +211,7 @@ "button": { "category": { "all": "Akk", - "all_accessiblity_description": "Category: All", + "all_accessiblity_description": "Taggayt: Akk", "academia": "academia", "activism": "activism", "food": "učči", From 048d07b303a416de575ca9c27874e50eb57c38fa Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 22 Feb 2022 23:20:39 +0100 Subject: [PATCH 312/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index b52b287b9..9e0099acc 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -283,14 +283,14 @@ }, "reason": { "blocked": "%s contains a disallowed email provider", - "unreachable": "%s does not seem to exist", - "taken": "%s is already in use", + "unreachable": "%s ur yettban ara yella", + "taken": "%s yettwaseqdec yakan", "reserved": "%s is a reserved keyword", "accepted": "%s must be accepted", "blank": "isra %s", - "invalid": "%s is invalid", - "too_long": "%s is too long", - "too_short": "%s is too short", + "invalid": "%s d arameɣtu", + "too_long": "%s ɣezzif aṭas", + "too_short": "%s wezzil aṭas", "inclusion": "%s is not a supported value" }, "special": { @@ -425,44 +425,44 @@ }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Sgugem amiḍan", + "message": "Sentem asgugem i %s" }, "confirm_unmute_user": { - "title": "Unmute Account", - "message": "Confirm to unmute %s" + "title": "Kkes asgugem i umiḍan", + "message": "Sentem tukksa n usgugem i %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Sewḥel amiḍan", + "message": "Sentem asewḥel n %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Kkes asewḥel i umiḍan", + "message": "Sentem tukksa n usgugem i %s" } } }, "follower": { - "footer": "Followers from other servers are not displayed." + "footer": "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara." }, "following": { - "footer": "Follows from other servers are not displayed." + "footer": "Ineḍfaren seg yiqeddacen-nniḍen ur d-ttwaskanen ara." }, "search": { "title": "Nadi", "search_bar": { - "placeholder": "Search hashtags and users", + "placeholder": "Nadi hashtags d yiseqdacen", "cancel": "Sefsex" }, "recommend": { - "button_text": "See All", + "button_text": "Wali akk", "hash_tag": { "title": "Trending on Mastodon", "description": "Hashtags that are getting quite a bit of attention", - "people_talking": "%s people are talking" + "people_talking": "%s yimdanen i yettmeslayen" }, "accounts": { - "title": "Accounts you might like", + "title": "Imiḍanen i tzemreḍ ad tḥemmleḍ", "description": "You may like to follow these accounts", "follow": "Ḍfeṛ" } @@ -477,7 +477,7 @@ "empty_state": { "no_results": "Ulac igemmaḍ" }, - "recent_search": "Recent searches", + "recent_search": "Inadiyen imaynuten", "clear": "Sfeḍ" } }, @@ -490,21 +490,21 @@ "Mentions": "Abdar" }, "notification_description": { - "followed_you": "followed you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", + "followed_you": "iṭṭafar-ik·ikem", + "favorited_your_post": "yesmenyef tasuffeɣt-ik·im", + "reblogged_your_post": "iɛawed-as asuffeɣ i tsuffeɣt-ik·im", + "mentioned_you": "yebder-ik·ikem-id", + "request_to_follow_you": "issuter aḍfar-inek", "poll_has_ended": "poll has ended" }, "keyobard": { "show_everything": "Sken yal taɣawsa", - "show_mentions": "Show Mentions" + "show_mentions": "Sken tisedmirin" } }, "thread": { "back_title": "Amagrad", - "title": "Post from %s" + "title": "Tasuffeɣt sɣur %s" }, "settings": { "title": "Iɣewwaṛen", @@ -512,28 +512,28 @@ "appearance": { "title": "Apparence", "automatic": "Awurman", - "light": "Always Light", - "dark": "Always Dark" + "light": "Yezga d aceεlal", + "dark": "Yezga d aberkan" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", + "title": "Wali, tḥalfuḍ", + "use_system": "Seqdec anagraw", + "really_dark": "D aberkan s tidet", + "sorta_dark": "D aberkan cwiya", "light": "Aceɛlal" }, "notifications": { "title": "Tilɣa", "favorites": "Favorites my post", - "follows": "Follows me", + "follows": "Yeṭṭafar-iyi", "boosts": "Reblogs my post", - "mentions": "Mentions me", + "mentions": "Ibder-iyi-d", "trigger": { "anyone": "yal yiwen", - "follower": "a follower", - "follow": "anyone I follow", + "follower": "ameḍfar", + "follow": "yal win ara ḍefreɣ", "noone": "ula yiwen", - "title": "Notify me when" + "title": "Selɣu-yi-d mi ara" } }, "preference": { @@ -578,19 +578,19 @@ "preview": { "keyboard": { "close_preview": "Mdel timeẓri", - "show_next": "Show Next", - "show_previous": "Show Previous" + "show_next": "Sken uḍfir", + "show_previous": "Sken udfir" } }, "account_list": { - "tab_bar_hint": "Current selected profile: %s. Double tap then hold to show account switcher", - "dismiss_account_switcher": "Dismiss Account Switcher", + "tab_bar_hint": "Amaɣnu amiran yettwafernen: %s. Sit berdayen syen teǧǧeḍ aḍad-ik·im i uskan abeddel n umiḍan", + "dismiss_account_switcher": "Sefsex abeddel n umiḍan", "add_account": "Rnu amiḍan" }, "wizard": { "new_in_mastodon": "Amaynut deg Maṣṭudun", - "multiple_account_switch_intro_description": "Switch between multiple accounts by holding the profile button.", - "accessibility_hint": "Double tap to dismiss this wizard" + "multiple_account_switch_intro_description": "Beddel gar waṭas n yimiḍanen s tussda ɣezzifen ɣef tqeffalt n umaɣnu.", + "accessibility_hint": "Sin isitiyen i usefsex n umarag-a" } } } \ No newline at end of file From ac05324f4a2902e216cf5df7b8b43402525de3e4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 23 Feb 2022 00:22:52 +0100 Subject: [PATCH 313/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 9e0099acc..5ebf41a46 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -286,23 +286,23 @@ "unreachable": "%s ur yettban ara yella", "taken": "%s yettwaseqdec yakan", "reserved": "%s is a reserved keyword", - "accepted": "%s must be accepted", + "accepted": "%s ilaq ad yettwaqbal", "blank": "isra %s", "invalid": "%s d arameɣtu", "too_long": "%s ɣezzif aṭas", "too_short": "%s wezzil aṭas", - "inclusion": "%s is not a supported value" + "inclusion": "%s mačči d azal yettusefraken" }, "special": { "username_invalid": "Username must only contain alphanumeric characters and underscores", "username_too_long": "Username is too long (can’t be longer than 30 characters)", - "email_invalid": "This is not a valid email address", + "email_invalid": "Tagi mačči d tansa n yimayl tameɣtut", "password_too_short": "Password is too short (must be at least 8 characters)" } } }, "server_rules": { - "title": "Some ground rules.", + "title": "Kra n yilugan igejdanen.", "subtitle": "These are set and enforced by the %s moderators.", "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", "terms_of_service": "tiwetlin n useqdec", @@ -371,7 +371,7 @@ "one_day": "1 n wass", "three_days": "3 n wussan", "seven_days": "7 n wussan", - "option_number": "Option %ld" + "option_number": "Taxtiṛt %ld" }, "content_warning": { "placeholder": "Write an accurate warning here..." @@ -387,16 +387,16 @@ }, "accessibility": { "append_attachment": "Rnu taceqquft yeddan", - "append_poll": "Add Poll", - "remove_poll": "Remove Poll", + "append_poll": "Rnu asenqed", + "remove_poll": "Kkes asenqed", "custom_emoji_picker": "Custom Emoji Picker", "enable_content_warning": "Enable Content Warning", "disable_content_warning": "Disable Content Warning", "post_visibility_menu": "Post Visibility Menu" }, "keyboard": { - "discard_post": "Discard Post", - "publish_post": "Publish Post", + "discard_post": "Sefsex tasuffeɣt", + "publish_post": "Suffeɣ tasuffeɣt", "toggle_poll": "Toggle Poll", "toggle_content_warning": "Toggle Content Warning", "append_attachment_entry": "Add Attachment - %s", @@ -419,7 +419,7 @@ "segmented_control": { "posts": "Imagraden", "replies": "Tiririyin", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Tisuffaɣ d tririyin", "media": "Amidya", "about": "Ɣef" }, @@ -569,11 +569,11 @@ "step2": "Aḥric 2 seg 2", "content1": "Are there any other posts you’d like to add to the report?", "content2": "Is there anything the moderators should know about this report?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Tanemmirt ɣef uneqqis, ad nwali deg waya.", "send": "Azen aneqis", - "skip_to_send": "Send without comment", - "text_placeholder": "Type or paste additional comments", - "reported": "REPORTED" + "skip_to_send": "Azen s war awennit", + "text_placeholder": "Aru neɣ senteḍ iwenniten-nniḍen", + "reported": "YETTWAMMEL" }, "preview": { "keyboard": { From e6432653836edc42a834cf6932b268d286f19300 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 23 Feb 2022 11:42:32 +0100 Subject: [PATCH 314/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 5ebf41a46..a4abb0e32 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -17,7 +17,7 @@ }, "discard_post_content": { "title": "Kkes arewway", - "message": "Confirm to discard composed post content." + "message": "Sentem i wakken ad yettusefsax ugbur n tsuffeɣt." }, "publish_post_failure": { "title": "Publish Failure", From 0967a519161cd55fa78e462c7b0db6482d702c20 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 23 Feb 2022 12:38:42 +0100 Subject: [PATCH 315/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index a4abb0e32..9e3a8e0c4 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -20,7 +20,7 @@ "message": "Sentem i wakken ad yettusefsax ugbur n tsuffeɣt." }, "publish_post_failure": { - "title": "Publish Failure", + "title": "Yecceḍ usuffeɣ", "message": "Failed to publish the post.\nPlease check your internet connection.", "attachments_message": { "video_attach_with_photo": "Cannot attach a video to a post that already contains images.", From bb35c81a7f540c19c807c182ac7b7171a57693d9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 23 Feb 2022 12:38:43 +0100 Subject: [PATCH 316/374] New translations app.json (Japanese) --- .../StringsConvertor/input/ja_JP/app.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Localization/StringsConvertor/input/ja_JP/app.json b/Localization/StringsConvertor/input/ja_JP/app.json index 1e06960c9..0957f9e73 100644 --- a/Localization/StringsConvertor/input/ja_JP/app.json +++ b/Localization/StringsConvertor/input/ja_JP/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "この投稿を消去しますか?", - "message": "Are you sure you want to delete this post?" + "message": "本当に削除しますか?" }, "clean_cache": { "title": "キャッシュを消去", @@ -141,7 +141,7 @@ "favorite": "お気に入り", "unfavorite": "お気に入り登録を取り消す", "menu": "メニュー", - "hide": "Hide" + "hide": "非表示" }, "tag": { "url": "URL", @@ -152,10 +152,10 @@ "emoji": "絵文字" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "この投稿は誰でも見ることができますが、公開タイムラインには表示されません。", + "private": "この投稿はフォロワーに限り見ることができます。", + "private_from_me": "この投稿はフォロワーに限り見ることができます。", + "direct": "この投稿はメンションされたユーザーに限り見ることができます。" } }, "friendship": { @@ -202,12 +202,12 @@ "welcome": { "slogan": "ソーシャルネットワーキングを、あなたの手の中に.", "get_started": "Get Started", - "log_in": "Log In" + "log_in": "ログイン" }, "server_picker": { "title": "サーバーを選択", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "あなたの興味分野・地域に合ったコミュニティや、汎用のものを選択してください。", + "subtitle_extend": "あなたの興味分野・地域に合ったコミュニティや、汎用のものを選択してください。各コミュニティはそれぞれ完全に独立した組織や個人によって運営されています。", "button": { "category": { "all": "すべて", From b0d3f535d51450a0b23c8526de774eaea1601598 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 24 Feb 2022 06:57:42 +0100 Subject: [PATCH 317/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 9e3a8e0c4..0afc69234 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -21,9 +21,9 @@ }, "publish_post_failure": { "title": "Yecceḍ usuffeɣ", - "message": "Failed to publish the post.\nPlease check your internet connection.", + "message": "Yecceḍ usuffeɣ n tsuffeɣt.\nMa ulac aɣilif, senqed tuqqna-inek internet.", "attachments_message": { - "video_attach_with_photo": "Cannot attach a video to a post that already contains images.", + "video_attach_with_photo": "Ur tezmireḍ ara ad tsedduḍ tavidyut deg tsuffeɣt ideg llant yakan tugniwin.", "more_than_one_video": "Cannot attach more than one video." } }, From 4fb82e698f8fabc8698831983f437863618bf4ed Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 24 Feb 2022 09:11:38 +0100 Subject: [PATCH 318/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 0afc69234..5add6bf13 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -110,7 +110,7 @@ "previous_status": "Amagrad uzwir", "next_status": "Amagrad uḍfir", "open_status": "Ldi tasuffeɣt", - "open_author_profile": "Open Author's Profile", + "open_author_profile": "Ldi amaɣnu n umeskar", "open_reblogger_profile": "Open Reblogger's Profile", "reply_status": "Err ɣef tsuffeɣt", "toggle_reblog": "Toggle Reblog on Post", From fdf581d4094cb2bd61d27d2cffbd15648192c1b9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 24 Feb 2022 10:16:42 +0100 Subject: [PATCH 319/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 5add6bf13..2008258b1 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -184,7 +184,7 @@ "loader": { "load_missing_posts": "Load missing posts", "loading_missing_posts": "Loading missing posts...", - "show_more_replies": "Show more replies" + "show_more_replies": "Ssken-d ugar n tririyin" }, "header": { "no_status_found": "No Post Found", From 54af783f23d5e4bb5c69f1c175ca0702d31ffa08 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 24 Feb 2022 19:13:40 +0100 Subject: [PATCH 320/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 2008258b1..1ea7f6e75 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -24,7 +24,7 @@ "message": "Yecceḍ usuffeɣ n tsuffeɣt.\nMa ulac aɣilif, senqed tuqqna-inek internet.", "attachments_message": { "video_attach_with_photo": "Ur tezmireḍ ara ad tsedduḍ tavidyut deg tsuffeɣt ideg llant yakan tugniwin.", - "more_than_one_video": "Cannot attach more than one video." + "more_than_one_video": "Ur tezmireḍ ara ad ugar n tvidyut." } }, "edit_profile_failure": { @@ -111,7 +111,7 @@ "next_status": "Amagrad uḍfir", "open_status": "Ldi tasuffeɣt", "open_author_profile": "Ldi amaɣnu n umeskar", - "open_reblogger_profile": "Open Reblogger's Profile", + "open_reblogger_profile": "Ldi amaɣnu n win i yulsen asuffeɣ", "reply_status": "Err ɣef tsuffeɣt", "toggle_reblog": "Toggle Reblog on Post", "toggle_favorite": "Toggle Favorite on Post", From f6207153d2814555dffa894e0ba393303538d1f4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 24 Feb 2022 20:30:23 +0100 Subject: [PATCH 321/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 1ea7f6e75..ed6e8fb09 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -113,9 +113,9 @@ "open_author_profile": "Ldi amaɣnu n umeskar", "open_reblogger_profile": "Ldi amaɣnu n win i yulsen asuffeɣ", "reply_status": "Err ɣef tsuffeɣt", - "toggle_reblog": "Toggle Reblog on Post", - "toggle_favorite": "Toggle Favorite on Post", - "toggle_content_warning": "Toggle Content Warning", + "toggle_reblog": "Abeddel n unallas n tsuffeɣt", + "toggle_favorite": "Abeddel n usmenyaf i tsuffeɣt", + "toggle_content_warning": "Beddel alɣu n ugbur", "preview_image": "Asenqed n tugna" }, "segmented_control": { @@ -128,8 +128,8 @@ "user_replied_to": "Yerra ɣef %s", "show_post": "Sken-d tasuffeɣt", "show_user_profile": "Ssken-d amaɣnu n useqdac", - "content_warning": "Content Warning", - "media_content_warning": "Tap anywhere to reveal", + "content_warning": "Alɣu n ugbur", + "media_content_warning": "Sit anida tebɣiḍ i wakken ad twaliḍ", "poll": { "vote": "Dɣeṛ", "closed": "Ifukk" @@ -152,10 +152,10 @@ "emoji": "Emuji" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Yal wa yezmer ad iwali tsuffeɣt-a maca ur d-tettwaskaneḍ ara deg yizirig n wakud azayaz.", + "private": "D ineḍfaren-is kan i izemren ad walin tsuffeɣ-a.", + "private_from_me": "D ineḍfaren-is kan i izemren ad walin tsuffeɣ-a.", + "direct": "D ineḍfaren-is kan i izemren ad walin tsuffeɣ-a." } }, "friendship": { @@ -182,18 +182,18 @@ "now": "Tura" }, "loader": { - "load_missing_posts": "Load missing posts", - "loading_missing_posts": "Loading missing posts...", + "load_missing_posts": "Sali tisuffaɣ i iruḥen", + "loading_missing_posts": "Asali n tsuffaɣ i iruḥen...", "show_more_replies": "Ssken-d ugar n tririyin" }, "header": { - "no_status_found": "No Post Found", - "blocking_warning": "You can’t view this user's profile\nuntil you unblock them.\nYour profile looks like this to them.", - "user_blocking_warning": "You can’t view %s’s profile\nuntil you unblock them.\nYour profile looks like this to them.", - "blocked_warning": "You can’t view this user’s profile\nuntil they unblock you.", - "user_blocked_warning": "You can’t view %s’s profile\nuntil they unblock you.", - "suspended_warning": "This user has been suspended.", - "user_suspended_warning": "%s’s account has been suspended." + "no_status_found": "Ulac tasuffeɣt yettwafen", + "blocking_warning": "Ur tezmireḍ ara ad twaliḍ amaɣnu n useqdac-a\nalamma tekkseḍ-as asewḥel.\nAkka i as-d-yettban umaɣnu-inek.", + "user_blocking_warning": "Ur tezmireḍ ara ad twaliḍ amaɣnu n %s\nalamma tekkseḍ-as asewḥel.\nAkka i as-d-yettban umaɣnu-inek.", + "blocked_warning": "Ur tezmireḍ ara ad twaliḍ amaɣnu n useqdac-a\nAkka i as-d-yettban umaɣnu-inek.", + "user_blocked_warning": "Ur tezmireḍ ara ad twaliḍ amaɣnu n %s\nAkka i as-d-yettban umaɣnu-inek.", + "suspended_warning": "Yettwaseḥbes useqdac-a.", + "user_suspended_warning": "Yettwaseḥbes umiḍan n %s." } } } @@ -205,7 +205,7 @@ "log_in": "Qqen" }, "server_picker": { - "title": "Mastodon is made of users in different communities.", + "title": "Mastodon yettwaxdem i yiseqdacen deg waṭas n temɣiwnin.", "subtitle": "Pick a community based on your interests, region, or a general purpose one.", "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", "button": { From 02534d55fd931c7d48589b35d0861667d7e3c076 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 24 Feb 2022 21:30:20 +0100 Subject: [PATCH 322/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index ed6e8fb09..953ca9c63 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -218,27 +218,27 @@ "furry": "furry", "games": "uraren", "general": "amatu", - "journalism": "journalism", + "journalism": "taɣamsa", "lgbt": "lgbt", - "regional": "regional", + "regional": "amnaḍan", "art": "taẓuri", "music": "aẓawan", - "tech": "tech" + "tech": "atiknikan" }, - "see_less": "See Less", + "see_less": "Sken cwiṭ", "see_more": "Wali ugar" }, "label": { "language": "TUTLAYT", "users": "ISEQDACEN", - "category": "CATEGORY" + "category": "TAGGAYT" }, "input": { - "placeholder": "Search communities" + "placeholder": "Nadi timɣiwnin" }, "empty_state": { - "finding_servers": "Finding available servers...", - "bad_network": "Something went wrong while loading the data. Check your internet connection.", + "finding_servers": "Tifin n yiqeddacen yellan...", + "bad_network": "Tella-d tuccḍa lawan n usali n yisefka. Senqed tuqqna-ink internet.", "no_results": "Ulac igemmaḍ" } }, @@ -260,16 +260,16 @@ }, "password": { "placeholder": "awal uffir", - "require": "Your password needs at least:", + "require": "Awal-ik uffir yesra ma drus:", "character_limit": "8 n yisekkilen", "accessibility": { - "checked": "checked", - "unchecked": "unchecked" + "checked": "yettwasenqed", + "unchecked": "ur yettwasenqed ara" }, - "hint": "Your password needs at least eight characters" + "hint": "Awal-ik uffir yesra ma drus ṭam n yisekkilen" }, "invite": { - "registration_user_invite_request": "Why do you want to join?" + "registration_user_invite_request": "Acimi tebγiḍ ad ternuḍ iman-ik?" } }, "error": { @@ -277,15 +277,15 @@ "username": "Isem n useqdac", "email": "Imayl", "password": "Awal uffir", - "agreement": "Agreement", + "agreement": "Amtawa", "locale": "Tadigant", "reason": "Taɣẓint" }, "reason": { - "blocked": "%s contains a disallowed email provider", + "blocked": "%s deg-s asaǧǧăw n yimayl ur nettusireg ara", "unreachable": "%s ur yettban ara yella", "taken": "%s yettwaseqdec yakan", - "reserved": "%s is a reserved keyword", + "reserved": "%s d awal uffir yettwaḥarren", "accepted": "%s ilaq ad yettwaqbal", "blank": "isra %s", "invalid": "%s d arameɣtu", @@ -295,9 +295,9 @@ }, "special": { "username_invalid": "Username must only contain alphanumeric characters and underscores", - "username_too_long": "Username is too long (can’t be longer than 30 characters)", + "username_too_long": "Isem n useqdac ɣezzif aṭas (ur ilaq ara ad iɛeddi nnig 30 yisekkilen)", "email_invalid": "Tagi mačči d tansa n yimayl tameɣtut", - "password_too_short": "Password is too short (must be at least 8 characters)" + "password_too_short": "Awal uffir wezzil aṭas (ilaq ad yesɛu ma drus 8 yisekkilen)" } } }, @@ -312,10 +312,10 @@ } }, "confirm_email": { - "title": "One last thing.", + "title": "Taɣawsa taneggarut.", "subtitle": "Tap the link we emailed to you to verify your account.", "button": { - "open_email_app": "Open Email App", + "open_email_app": "Ldi asnas n yimayl", "resend": "Ales tuzna" }, "dont_receive_email": { @@ -324,10 +324,10 @@ "resend_email": "Ales tuzna n yimayl" }, "open_email_app": { - "title": "Check your inbox.", - "description": "We just sent you an email. Check your junk folder if you haven’t.", + "title": "Sefqed Tanaka-inek.", + "description": "Akken kan i ak-n-nuzen imayl. Sefqed aspam ma yella ur t-tufiḍ ara.", "mail": "Imayl", - "open_email_client": "Open Email Client" + "open_email_client": "Ldi amsaɣ n yimayl" } }, "home_timeline": { @@ -335,33 +335,33 @@ "navigation_bar_state": { "offline": "Beṛṛa n tuqqna", "new_posts": "Tissufaɣ timaynutin", - "published": "Published!", - "Publishing": "Publishing post..." + "published": "Yettwasuffeɣ!", + "Publishing": "Asuffeɣ tasuffeɣt..." } }, "suggestion_account": { - "title": "Find People to Follow", - "follow_explain": "When you follow someone, you’ll see their posts in your home feed." + "title": "Af imdanen ara tḍefreḍ", + "follow_explain": "Mi ara teṭṭafareḍ albaɛḍ, ad twaliḍ tisuffaɣ-is deg usuddem-inek agejdan." }, "compose": { "title": { "new_post": "Tasuffeɣt tamaynut", - "new_reply": "New Reply" + "new_reply": "Tiririt tamaynut" }, "media_selection": { "camera": "Ṭṭef tawlaft", "photo_library": "Tanedlist n tewlaft", "browse": "Snirem" }, - "content_input_placeholder": "Type or paste what’s on your mind", + "content_input_placeholder": "Aru neɣ senteḍ ayen yellan deg wallaɣ-ik", "compose_action": "Sufeɣ", - "replying_to_user": "replying to %s", + "replying_to_user": "tiririt ɣef %s", "attachment": { "photo": "tawlaft", "video": "tavidyutt", "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", - "description_photo": "Describe the photo for the visually-impaired...", - "description_video": "Describe the video for the visually-impaired..." + "description_photo": "Glem-d tawlaft i wid yesɛan ugur deg yiẓri...", + "description_video": "Glem-d tavidyut i wid yesɛan ugur deg yiẓri..." }, "poll": { "duration_time": "Tangazt: %s", From b8f64e93b7db5c5b5bac8bbe446bc3892ac9092d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 24 Feb 2022 22:52:19 +0100 Subject: [PATCH 323/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 953ca9c63..3cf1d70e6 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -359,7 +359,7 @@ "attachment": { "photo": "tawlaft", "video": "tavidyutt", - "attachment_broken": "This %s is broken and can’t be\nuploaded to Mastodon.", + "attachment_broken": "%s-a yerreẓ, ur yezmir ara\nAd d-yettwasali ɣef Mastodon.", "description_photo": "Glem-d tawlaft i wid yesɛan ugur deg yiẓri...", "description_video": "Glem-d tavidyut i wid yesɛan ugur deg yiẓri..." }, @@ -383,23 +383,23 @@ "direct": "Imdanen i d-bedreɣ kan" }, "auto_complete": { - "space_to_add": "Space to add" + "space_to_add": "Tallunt ara yettwarnun" }, "accessibility": { "append_attachment": "Rnu taceqquft yeddan", "append_poll": "Rnu asenqed", "remove_poll": "Kkes asenqed", - "custom_emoji_picker": "Custom Emoji Picker", - "enable_content_warning": "Enable Content Warning", - "disable_content_warning": "Disable Content Warning", - "post_visibility_menu": "Post Visibility Menu" + "custom_emoji_picker": "Amefran n yimujiten udmawanen", + "enable_content_warning": "Rmed alɣu n ugbur", + "disable_content_warning": "Sens alɣu n ugbur", + "post_visibility_menu": "Umuɣ n ubani n tsuffeɣt" }, "keyboard": { "discard_post": "Sefsex tasuffeɣt", "publish_post": "Suffeɣ tasuffeɣt", - "toggle_poll": "Toggle Poll", - "toggle_content_warning": "Toggle Content Warning", - "append_attachment_entry": "Add Attachment - %s", + "toggle_poll": "Beddel asenqed", + "toggle_content_warning": "Beddel alɣu n ugbur", + "append_attachment_entry": "Rnu taceqquft yeddan - %s", "select_visibility_entry": "Select Visibility - %s" } }, @@ -495,7 +495,7 @@ "reblogged_your_post": "iɛawed-as asuffeɣ i tsuffeɣt-ik·im", "mentioned_you": "yebder-ik·ikem-id", "request_to_follow_you": "issuter aḍfar-inek", - "poll_has_ended": "poll has ended" + "poll_has_ended": "asenqed iffuk" }, "keyobard": { "show_everything": "Sken yal taɣawsa", @@ -540,7 +540,7 @@ "title": "Imenyafen", "true_black_dark_mode": "True black dark mode", "disable_avatar_animation": "Disable animated avatars", - "disable_emoji_animation": "Disable animated emojis", + "disable_emoji_animation": "Sens imujiten yettembiwilen", "using_default_browser": "Use default browser to open links" }, "boring_zone": { @@ -551,7 +551,7 @@ }, "spicy_zone": { "title": "The Spicy Zone", - "clear": "Clear Media Cache", + "clear": "Sfeḍ takatut tuffirt n umidyat", "signout": "Senser" } }, From 9d2593987bd76faf81374f2f8f055bf1c2754290 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 06:04:18 +0100 Subject: [PATCH 324/374] New translations app.json (Spanish) --- .../StringsConvertor/input/es_ES/app.json | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Localization/StringsConvertor/input/es_ES/app.json b/Localization/StringsConvertor/input/es_ES/app.json index 1ba94fb43..cfebae265 100644 --- a/Localization/StringsConvertor/input/es_ES/app.json +++ b/Localization/StringsConvertor/input/es_ES/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "¿Estás seguro de que deseas eliminar esta publicación?", - "message": "Are you sure you want to delete this post?" + "message": "¿Estás seguro de que quieres borrar esta publicación?" }, "clean_cache": { "title": "Limpiar Caché", @@ -141,7 +141,7 @@ "favorite": "Favorito", "unfavorite": "No favorito", "menu": "Menú", - "hide": "Hide" + "hide": "Ocultar" }, "tag": { "url": "URL", @@ -152,10 +152,10 @@ "emoji": "Emoji" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Todo el mundo puede ver este post pero no mostrar en la línea de tiempo pública.", + "private": "Sólo sus seguidores pueden ver este mensaje.", + "private_from_me": "Sólo mis seguidores pueden ver este mensaje.", + "direct": "Sólo el usuario mencionado puede ver este mensaje." } }, "friendship": { @@ -419,26 +419,26 @@ "segmented_control": { "posts": "Publicaciones", "replies": "Respuestas", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Publicaciones y respuestas", "media": "Multimedia", - "about": "About" + "about": "Acerca de" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Silenciar cuenta", + "message": "Confirmar para silenciar %s" }, "confirm_unmute_user": { "title": "Dejar de Silenciar Cuenta", "message": "Confirmar para dejar de silenciar a %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Bloquear cuenta", + "message": "Confirmar para bloquear a %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Desbloquear cuenta", + "message": "Confirmar para desbloquear a %s" } } }, @@ -490,12 +490,12 @@ "Mentions": "Menciones" }, "notification_description": { - "followed_you": "followed you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "followed_you": "te siguió", + "favorited_your_post": "ha marcado como favorita tu publicación", + "reblogged_your_post": "reblogueó tu publicación", + "mentioned_you": "te mencionó", + "request_to_follow_you": "solicitó seguirte", + "poll_has_ended": "encuesta ha terminado" }, "keyobard": { "show_everything": "Mostrar Todo", @@ -516,11 +516,11 @@ "dark": "Siempre Oscura" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "Apariencia", + "use_system": "Uso del sistema", + "really_dark": "Realmente Oscuro", + "sorta_dark": "Más o Menos Oscuro", + "light": "Claro" }, "notifications": { "title": "Notificaciones", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "Reportar", "title": "Reportar %s", "step1": "Paso 1 de 2", "step2": "Paso 2 de 2", "content1": "¿Hay alguna otra publicación que te gustaría añadir al reporte?", "content2": "¿Hay algo que los moderadores deberían saber acerca de este reporte?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Gracias por reportar, estudiaremos esto.", "send": "Enviar Reporte", "skip_to_send": "Enviar sin comentarios", "text_placeholder": "Escribe o pega comentarios adicionales", - "reported": "REPORTED" + "reported": "REPORTADO" }, "preview": { "keyboard": { From fe54aa1112be25279727fc42eba02aaee5a94868 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 08:36:50 +0100 Subject: [PATCH 325/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 3cf1d70e6..acdc79328 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -37,7 +37,7 @@ "confirm": "Ffeɣ" }, "block_domain": { - "title": "Are you really, really sure you want to block the entire %s? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain and any of your followers from that domain will be removed.", + "title": "D tidet, d tidet tebɣiḍ ad tesweḥleḍ %s akken ma yella? Deg tuget, kra n yisewḥal d ugdal ad yili d ayen iwulmen, yettwafernen. Ur tettwaliḍ ara agbur seg taɣult-nni neɣ kra seg yineḍfaren-ik i tt-yesseqdacen.", "block_entire_domain": "Sewḥel taɣult" }, "save_photo_failure": { @@ -200,14 +200,14 @@ }, "scene": { "welcome": { - "slogan": "Social networking\nback in your hands.", + "slogan": "Izeḍwa inmettiyen\nuɣalen-d ɣer ufus-ik.", "get_started": "Aha bdu tura", "log_in": "Qqen" }, "server_picker": { "title": "Mastodon yettwaxdem i yiseqdacen deg waṭas n temɣiwnin.", - "subtitle": "Pick a community based on your interests, region, or a general purpose one.", - "subtitle_extend": "Pick a community based on your interests, region, or a general purpose one. Each community is operated by an entirely independent organization or individual.", + "subtitle": "Fren tamɣiwent almend n wayen tḥemmleḍ, n tmurt-ik neɣ n yiswi-inek amatu.", + "subtitle_extend": "Fren tamɣiwent almend n wayen tḥemmleḍ, n tmurt-ik neɣ n yiswi-inek amatu. Yal tamɣiwent tsedday-itt tkebbanit neɣ amdan ilelliyen.", "button": { "category": { "all": "Akk", From 065442430fdea301ee0d0dcb08212389b8e54c8f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 09:40:47 +0100 Subject: [PATCH 326/374] New translations app.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/app.json | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index acdc79328..a194f3fb0 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -212,7 +212,7 @@ "category": { "all": "Akk", "all_accessiblity_description": "Taggayt: Akk", - "academia": "academia", + "academia": "akadimi", "activism": "activism", "food": "učči", "furry": "furry", @@ -303,8 +303,8 @@ }, "server_rules": { "title": "Kra n yilugan igejdanen.", - "subtitle": "These are set and enforced by the %s moderators.", - "prompt": "By continuing, you’re subject to the terms of service and privacy policy for %s.", + "subtitle": "Ilugan-a ttusbadun sɣur inedbalen n %s.", + "prompt": "Mi ara tkemmleḍ, ilaq ad tqebleḍ tiwtilin n yimeẓla d tsertit tabaḍnit n %s.", "terms_of_service": "tiwetlin n useqdec", "privacy_policy": "tasertit tabaḍnit", "button": { @@ -374,7 +374,7 @@ "option_number": "Taxtiṛt %ld" }, "content_warning": { - "placeholder": "Write an accurate warning here..." + "placeholder": "Aru alɣu-inek s telqeyt da..." }, "visibility": { "public": "Azayez", @@ -400,7 +400,7 @@ "toggle_poll": "Beddel asenqed", "toggle_content_warning": "Beddel alɣu n ugbur", "append_attachment_entry": "Rnu taceqquft yeddan - %s", - "select_visibility_entry": "Select Visibility - %s" + "select_visibility_entry": "Fren timeẓriwt - %s" } }, "profile": { @@ -457,13 +457,13 @@ "recommend": { "button_text": "Wali akk", "hash_tag": { - "title": "Trending on Mastodon", - "description": "Hashtags that are getting quite a bit of attention", + "title": "Ayen mucaɛen ɣef Mastodon", + "description": "Hashtags i d-ijebbden aṭas lwelha", "people_talking": "%s yimdanen i yettmeslayen" }, "accounts": { "title": "Imiḍanen i tzemreḍ ad tḥemmleḍ", - "description": "You may like to follow these accounts", + "description": "Ahat tebɣiḍ ad tḍefreḍ imiḍanen-a", "follow": "Ḍfeṛ" } }, @@ -524,9 +524,9 @@ }, "notifications": { "title": "Tilɣa", - "favorites": "Favorites my post", + "favorites": "Yerna tasuffeɣt-iw ɣer yismenyafen-ines", "follows": "Yeṭṭafar-iyi", - "boosts": "Reblogs my post", + "boosts": "Yules asuffeɣ n tduffeɣt-iw", "mentions": "Ibder-iyi-d", "trigger": { "anyone": "yal yiwen", @@ -538,13 +538,13 @@ }, "preference": { "title": "Imenyafen", - "true_black_dark_mode": "True black dark mode", - "disable_avatar_animation": "Disable animated avatars", + "true_black_dark_mode": "Askar aberkan n tidet", + "disable_avatar_animation": "Sens ivaṭaren yettembiwilen", "disable_emoji_animation": "Sens imujiten yettembiwilen", - "using_default_browser": "Use default browser to open links" + "using_default_browser": "Seqdec iminig amezwer i twaledyawt n yiseɣwan" }, "boring_zone": { - "title": "The Boring Zone", + "title": "Tamnaḍt yessefcalen", "account_settings": "Iɣewwaṛen n umiḍan", "terms": "Tiwtilin n useqdec", "privacy": "Tasertit tabaḍnit" @@ -567,7 +567,7 @@ "title": "Aneqqis %s", "step1": "Aḥric 1 seg 2", "step2": "Aḥric 2 seg 2", - "content1": "Are there any other posts you’d like to add to the report?", + "content1": "Tebɣiḍ ad ternuḍ tisuffaɣ-nniḍen ɣer uneqqis?", "content2": "Is there anything the moderators should know about this report?", "report_sent_title": "Tanemmirt ɣef uneqqis, ad nwali deg waya.", "send": "Azen aneqis", From 8512a809c08765a0650b22cd5643624adf16147a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 10:42:06 +0100 Subject: [PATCH 327/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index a194f3fb0..7cd88b45a 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -294,7 +294,7 @@ "inclusion": "%s mačči d azal yettusefraken" }, "special": { - "username_invalid": "Username must only contain alphanumeric characters and underscores", + "username_invalid": "Isem n useqdac ilaq ad yesɛu kan isekkilen igmumḍinen d wid yettujerrden", "username_too_long": "Isem n useqdac ɣezzif aṭas (ur ilaq ara ad iɛeddi nnig 30 yisekkilen)", "email_invalid": "Tagi mačči d tansa n yimayl tameɣtut", "password_too_short": "Awal uffir wezzil aṭas (ilaq ad yesɛu ma drus 8 yisekkilen)" @@ -313,14 +313,14 @@ }, "confirm_email": { "title": "Taɣawsa taneggarut.", - "subtitle": "Tap the link we emailed to you to verify your account.", + "subtitle": "Sit ɣef useɣwen i ak-n-uznen i wakken ad tesneqdeḍ amiḍan-ik.", "button": { "open_email_app": "Ldi asnas n yimayl", "resend": "Ales tuzna" }, "dont_receive_email": { "title": "Senqed imayl-ik·im", - "description": "Check if your email address is correct as well as your junk folder if you haven’t.", + "description": "Senqed ma yella tansa-inek n imayl d tameɣut akked uspam ma yella ur t-tufiḍ ara.", "resend_email": "Ales tuzna n yimayl" }, "open_email_app": { @@ -550,7 +550,7 @@ "privacy": "Tasertit tabaḍnit" }, "spicy_zone": { - "title": "The Spicy Zone", + "title": "Tamnaḍt merrɣen", "clear": "Sfeḍ takatut tuffirt n umidyat", "signout": "Senser" } From 724778e5faca274ac96b8384ea13e7523632536a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 11:46:53 +0100 Subject: [PATCH 328/374] New translations ios-infoPlist.json (Kabyle) --- .../StringsConvertor/input/kab_KAB/ios-infoPlist.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json b/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json index 65e4e2d2b..41128876a 100644 --- a/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json +++ b/Localization/StringsConvertor/input/kab_KAB/ios-infoPlist.json @@ -1,6 +1,6 @@ { - "NSCameraUsageDescription": "Used to take photo for post status", - "NSPhotoLibraryAddUsageDescription": "Used to save photo into the Photo Library", + "NSCameraUsageDescription": "Yettwaseqdac i tuṭṭfa n tewlafin deg usuffeɣ n waddaden", + "NSPhotoLibraryAddUsageDescription": "Yettwaseqdac i usekles n tewlafin deg temkarḍit n tewlafin", "NewPostShortcutItemTitle": "Tasuffeɣt tamaynut", "SearchShortcutItemTitle": "Nadi" } From 3895cb73fb282dfbe900ba60e2e93a9f04f9987e Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 11:46:55 +0100 Subject: [PATCH 329/374] New translations Localizable.stringsdict (Kabyle) --- .../input/kab_KAB/Localizable.stringsdict | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict index f71168ada..2e6a989d8 100644 --- a/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict @@ -21,7 +21,7 @@ a11y.plural.count.input_limit_exceeds NSStringLocalizedFormatKey - Input limit exceeds %#@character_count@ + Talast n unekcum tɛedda %#@character_count@ character_count NSStringFormatSpecTypeKey @@ -37,7 +37,7 @@ a11y.plural.count.input_limit_remains NSStringLocalizedFormatKey - Input limit remains %#@character_count@ + Talast n unekcum yeqqim-d seg-s %#@character_count@ character_count NSStringFormatSpecTypeKey @@ -45,9 +45,9 @@ NSStringFormatValueTypeKey ld one - 1 character + %ld n yisekkilen other - %ld iskillen + %ld yisekkilen plural.count.metric_formatted.post @@ -93,9 +93,9 @@ NSStringFormatValueTypeKey ld one - 1 favorite + 1unirf other - %ld favorites + %ld yiurifen plural.count.reblog @@ -109,9 +109,9 @@ NSStringFormatValueTypeKey ld one - 1 reblog + 1uɛiwed n usuffeɣ other - %ld reblogs + %ld n uɛiwed n usuffeɣ plural.count.vote From 7862b256830e899c91ec5e27bd54f755da1a2499 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 12:49:04 +0100 Subject: [PATCH 330/374] New translations Localizable.stringsdict (Kabyle) --- .../input/kab_KAB/Localizable.stringsdict | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict index 2e6a989d8..8a2bac9ec 100644 --- a/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict +++ b/Localization/StringsConvertor/input/kab_KAB/Localizable.stringsdict @@ -13,9 +13,9 @@ NSStringFormatValueTypeKey ld one - 1 n ulɣu ur nettwaɣra + 1 wulɣu ur nettwaɣra other - %ld ilɣa ur nettwaɣra + %ld yilɣa ur nettwaɣra a11y.plural.count.input_limit_exceeds @@ -29,9 +29,9 @@ NSStringFormatValueTypeKey ld one - 1 character + 1 usekkil other - %ld iskillen + %ld yisekkilen a11y.plural.count.input_limit_remains @@ -45,7 +45,7 @@ NSStringFormatValueTypeKey ld one - %ld n yisekkilen + 1 usekkil other %ld yisekkilen @@ -61,7 +61,7 @@ NSStringFormatValueTypeKey ld one - tasuffeγt + tasuffeɣt other tisuffaɣ @@ -77,7 +77,7 @@ NSStringFormatValueTypeKey ld one - 1 post + 1 tsuffeɣt other %ld n tsuffaɣ @@ -93,9 +93,9 @@ NSStringFormatValueTypeKey ld one - 1unirf + 1unurif other - %ld yiurifen + %ld yinurifen plural.count.reblog @@ -125,9 +125,9 @@ NSStringFormatValueTypeKey ld one - 1 vote + 1 tefrant other - %ld votes + %ld tefranin plural.count.voter @@ -141,9 +141,9 @@ NSStringFormatValueTypeKey ld one - 1 voter + 1umefran other - %ld voters + %ld imefranen plural.people_talking @@ -157,9 +157,9 @@ NSStringFormatValueTypeKey ld one - 1 people talking + 1 umdan i yettmeslayen other - %ld people talking + %ld yimdanen i yettmeslayen plural.count.following @@ -173,9 +173,9 @@ NSStringFormatValueTypeKey ld one - 1 following + 1 uneḍfar other - %ld following + %ld yineḍfaren plural.count.follower @@ -189,9 +189,9 @@ NSStringFormatValueTypeKey ld one - 1 follower + 1 uneḍfar other - %ld followers + %ld yineḍfaren date.year.left @@ -205,9 +205,9 @@ NSStringFormatValueTypeKey ld one - 1 year left + Yeqqim-d 1 useggas other - %ld years left + Qqimen-d %ld yiseggasen date.month.left @@ -221,9 +221,9 @@ NSStringFormatValueTypeKey ld one - 1 months left + 1 wayyur i d-yeqqimen other - %ld months left + %ld wayyuren i d-yeqqimen date.day.left @@ -237,9 +237,9 @@ NSStringFormatValueTypeKey ld one - 1 day left + Yeqqim-d 1 wass other - %ld days left + Qqimen-d %ld wussan date.hour.left @@ -253,9 +253,9 @@ NSStringFormatValueTypeKey ld one - 1 hour left + Yeqqim-d 1 usrag other - %ld hours left + Qqimen-d %ld yisragen date.minute.left @@ -269,9 +269,9 @@ NSStringFormatValueTypeKey ld one - 1 minute left + 1 tesdat i d-yeqqimen other - %ld minutes left + %ld tesdatin i d-yeqqimen date.second.left @@ -285,9 +285,9 @@ NSStringFormatValueTypeKey ld one - 1 second left + 1 tasint i d-yeqqimen other - %ld seconds left + %ld tsinin i d-yeqqimen date.year.ago.abbr @@ -301,9 +301,9 @@ NSStringFormatValueTypeKey ld one - 1y ago + 1 useggas aya other - %ldy ago + %ld yiseggasen aya date.month.ago.abbr @@ -317,9 +317,9 @@ NSStringFormatValueTypeKey ld one - 1M ago + 1 wayyur aya other - %ldM ago + %ld wayyuren aya date.day.ago.abbr @@ -333,9 +333,9 @@ NSStringFormatValueTypeKey ld one - 1d ago + 1 wass aya other - %ldd ago + %ld wussan aya date.hour.ago.abbr @@ -349,9 +349,9 @@ NSStringFormatValueTypeKey ld one - 1h ago + 1 usrag aya other - %ldh ago + %ld yisragen aya date.minute.ago.abbr @@ -365,9 +365,9 @@ NSStringFormatValueTypeKey ld one - 1m ago + 1 tesdat aya other - %ldm ago + %ld tesdatin aya date.second.ago.abbr @@ -381,9 +381,9 @@ NSStringFormatValueTypeKey ld one - 1s ago + 1 tasint aya other - %lds ago + %ld tsinin aya From 1b3dc84b5a10b60474ac1853a6578bd2269a4666 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 12:49:05 +0100 Subject: [PATCH 331/374] New translations Intents.strings (Kabyle) --- .../Intents/input/kab_KAB/Intents.strings | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings index 4e6d3adb6..108b5e78a 100644 --- a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings @@ -1,32 +1,32 @@ "16wxgf" = "Asuffeɣ deg Matodon"; -"751xkl" = "Text Content"; +"751xkl" = "Agbur n uḍris"; "CsR7G2" = "Asuffeɣ deg Matodon"; -"HZSGTr" = "What content to post?"; +"HZSGTr" = "Anwa agbur ara d-yettwasuffɣen?"; -"HdGikU" = "Posting failed"; +"HdGikU" = "Yecceḍ usuffeɣ"; -"KDNTJ4" = "Failure Reason"; +"KDNTJ4" = "Ssebba n tuccḍa"; -"RHxKOw" = "Send Post with text content"; +"RHxKOw" = "Azen tasuffeɣt s ugbur n uḍris"; "RxSqsb" = "Tasuffeɣt"; -"WCIR3D" = "Post ${content} on Mastodon"; +"WCIR3D" = "Suffeɣ ${content} deg Mastodon"; "ZKJSNu" = "Tasuffeɣt"; "ZS1XaK" = "${content}"; -"ZbSjzC" = "Visibility"; +"ZbSjzC" = "Abani"; -"Zo4jgJ" = "Post Visibility"; +"Zo4jgJ" = "Abani n tsuffeɣt"; -"apSxMG-dYQ5NN" = "There are ${count} options matching ‘Public’."; +"apSxMG-dYQ5NN" = "Yella ${count} n textiṛiyin yemṣadan d 'Uzayaz'."; -"apSxMG-ehFLjY" = "There are ${count} options matching ‘Followers Only’."; +"apSxMG-ehFLjY" = "Yella ${count} n textiṛiyin yemṣadan d 'Yineḍfaren kan'."; "ayoYEb-dYQ5NN" = "${content}, Public"; From 7b67813551b6151e94200745a8c6e2713856e03a Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 13:57:33 +0100 Subject: [PATCH 332/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 7cd88b45a..6f1184a78 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -213,7 +213,7 @@ "all": "Akk", "all_accessiblity_description": "Taggayt: Akk", "academia": "akadimi", - "activism": "activism", + "activism": "tinuɣmest", "food": "učči", "furry": "furry", "games": "uraren", @@ -243,7 +243,7 @@ } }, "register": { - "title": "Let’s get you set up on %s", + "title": "Aha ad nebdu asbadu ɣef %s", "input": { "avatar": { "delete": "Kkes" @@ -568,7 +568,7 @@ "step1": "Aḥric 1 seg 2", "step2": "Aḥric 2 seg 2", "content1": "Tebɣiḍ ad ternuḍ tisuffaɣ-nniḍen ɣer uneqqis?", - "content2": "Is there anything the moderators should know about this report?", + "content2": "Yella wayen i ilaqen ad teẓren yimḍebbren ɣef uneqqis-a?", "report_sent_title": "Tanemmirt ɣef uneqqis, ad nwali deg waya.", "send": "Azen aneqis", "skip_to_send": "Azen s war awennit", From 4fd636a2edf9b7e53a4fd94a4a362a1b9ee33d7b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 13:57:34 +0100 Subject: [PATCH 333/374] New translations Intents.strings (Kabyle) --- .../Intents/input/kab_KAB/Intents.strings | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings index 108b5e78a..532c822f6 100644 --- a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings +++ b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.strings @@ -28,24 +28,24 @@ "apSxMG-ehFLjY" = "Yella ${count} n textiṛiyin yemṣadan d 'Yineḍfaren kan'."; -"ayoYEb-dYQ5NN" = "${content}, Public"; +"ayoYEb-dYQ5NN" = "${content}, azayaz"; -"ayoYEb-ehFLjY" = "${content}, Followers Only"; +"ayoYEb-ehFLjY" = "${content}, ineḍfaren kan"; "dUyuGg" = "Asuffeɣ deg Maṣṭudun"; "dYQ5NN" = "Azayez"; -"ehFLjY" = "Followers Only"; +"ehFLjY" = "Imeḍfaṛen kan"; -"gfePDu" = "Posting failed. ${failureReason}"; +"gfePDu" = "Asuffeɣ yecceḍ. ${failureReason}"; -"k7dbKQ" = "Post was sent successfully."; +"k7dbKQ" = "Tasuffeɣt tettwazen akken iwata."; -"oGiqmY-dYQ5NN" = "Just to confirm, you wanted ‘Public’?"; +"oGiqmY-dYQ5NN" = "I usentem kan, tebɣiḍ 'Azayaz'?"; -"oGiqmY-ehFLjY" = "Just to confirm, you wanted ‘Followers Only’?"; +"oGiqmY-ehFLjY" = "I usentem kan, tebɣiḍ 'Ineḍfaren kan'?"; "rM6dvp" = "URL"; -"ryJLwG" = "Post was sent successfully. "; +"ryJLwG" = "Tasuffeɣt tettwazen akken iwata. "; From 741a918df1b19de3eebf5fa1136573d081eca452 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 13:57:35 +0100 Subject: [PATCH 334/374] New translations Intents.stringsdict (Kabyle) --- .../Intents/input/kab_KAB/Intents.stringsdict | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict index f43430651..a8aeeaaf1 100644 --- a/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict +++ b/Localization/StringsConvertor/Intents/input/kab_KAB/Intents.stringsdict @@ -13,9 +13,9 @@ NSStringFormatValueTypeKey %ld one - 1 option + 1 textiṛt other - %ld iɣewwaṛen + %ld textiṛiyin There are ${count} options matching ‘${visibility}’. From 9a19e36944f7c176c214ea4666f838e770debbda Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Feb 2022 18:16:45 +0100 Subject: [PATCH 335/374] New translations app.json (Kabyle) --- Localization/StringsConvertor/input/kab_KAB/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/kab_KAB/app.json b/Localization/StringsConvertor/input/kab_KAB/app.json index 6f1184a78..74c167956 100644 --- a/Localization/StringsConvertor/input/kab_KAB/app.json +++ b/Localization/StringsConvertor/input/kab_KAB/app.json @@ -550,7 +550,7 @@ "privacy": "Tasertit tabaḍnit" }, "spicy_zone": { - "title": "Tamnaḍt merrɣen", + "title": "Tamnaḍt tamihawt", "clear": "Sfeḍ takatut tuffirt n umidyat", "signout": "Senser" } From 518e71163beda8bbfb162b9fa32e00b498e20cdb Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 28 Feb 2022 19:35:37 +0100 Subject: [PATCH 336/374] New translations app.json (Scottish Gaelic) --- .../StringsConvertor/input/gd_GB/app.json | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json index 4c78154e2..b69dc529a 100644 --- a/Localization/StringsConvertor/input/gd_GB/app.json +++ b/Localization/StringsConvertor/input/gd_GB/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?", - "message": "Are you sure you want to delete this post?" + "message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?" }, "clean_cache": { "title": "Falamhaich an tasgadan", @@ -141,7 +141,7 @@ "favorite": "Cuir ris na h-annsachdan", "unfavorite": "Thoir air falbh o na h-annsachdan", "menu": "Clàr-taice", - "hide": "Hide" + "hide": "Falaich" }, "tag": { "url": "URL", @@ -152,10 +152,10 @@ "emoji": "Emoji" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Chì a h-uile duine am post seo ach cha nochd e air an loidhne-ama phoblach.", + "private": "Chan fhaic ach an luchd-leantainn aca am post seo.", + "private_from_me": "Chan fhaic ach an luchd-leantainn agam am post seo.", + "direct": "Chan fhaic ach an cleachdaiche air an dugadh iomradh am post seo." } }, "friendship": { @@ -419,26 +419,26 @@ "segmented_control": { "posts": "Postaichean", "replies": "Freagairtean", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Postaichean ’s freagairtean", "media": "Meadhanan", - "about": "About" + "about": "Mu dhèidhinn" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Mùch an cunntas", + "message": "Dearbh mùchadh %s" }, "confirm_unmute_user": { "title": "Dì-mhùch an cunntas", "message": "Dearbh dì-mhùchadh %s" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Bac an cunntas", + "message": "Dearbh bacadh %s" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Dì-bhac an cunntas", + "message": "Dearbh dì-bhacadh %s" } } }, @@ -490,12 +490,12 @@ "Mentions": "Iomraidhean" }, "notification_description": { - "followed_you": "followed you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", - "poll_has_ended": "poll has ended" + "followed_you": "– ’s iad ’gad leantainn a-nis", + "favorited_your_post": "– ’s iad air am post agad a chur ris na h-annsachdan aca", + "reblogged_your_post": "– ’s iad air am post agad a bhrosnachadh", + "mentioned_you": "– ’s iad air iomradh a thoirt ort", + "request_to_follow_you": "iarrtas leantainn ort", + "poll_has_ended": "thàinig cunntas-bheachd gu crìoch" }, "keyobard": { "show_everything": "Seall a h-uile càil", @@ -516,11 +516,11 @@ "dark": "Dorcha an-còmhnaidh" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "Coltas", + "use_system": "Cleachd coltas an t-siostaim", + "really_dark": "Glè dhorcha", + "sorta_dark": "Caran dorcha", + "light": "Soilleir" }, "notifications": { "title": "Brathan", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "Dèan gearan", "title": "Dèan gearan mu %s", "step1": "Ceum 1 à 2", "step2": "Ceum 2 à 2", "content1": "A bheil post sam bith eile ann a bu mhiann leat cur ris a’ ghearan?", "content2": "A bheil rud sam bith ann a bu mhiann leat innse dha na maoir mun ghearan seo?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Mòran taing airson a’ ghearain, bheir sinn uil air.", "send": "Cuir an gearan", "skip_to_send": "Cuir gun bheachd ris", "text_placeholder": "Sgrìobh no cuir ann beachdan a bharrachd", - "reported": "REPORTED" + "reported": "CHAIDH GEARAN A DHÈANAMH" }, "preview": { "keyboard": { From 4ef5b255ced86f7fe85bb5d7785703a4012c78d3 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 28 Feb 2022 20:35:50 +0100 Subject: [PATCH 337/374] New translations app.json (Scottish Gaelic) --- Localization/StringsConvertor/input/gd_GB/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/gd_GB/app.json b/Localization/StringsConvertor/input/gd_GB/app.json index b69dc529a..520293d40 100644 --- a/Localization/StringsConvertor/input/gd_GB/app.json +++ b/Localization/StringsConvertor/input/gd_GB/app.json @@ -569,7 +569,7 @@ "step2": "Ceum 2 à 2", "content1": "A bheil post sam bith eile ann a bu mhiann leat cur ris a’ ghearan?", "content2": "A bheil rud sam bith ann a bu mhiann leat innse dha na maoir mun ghearan seo?", - "report_sent_title": "Mòran taing airson a’ ghearain, bheir sinn uil air.", + "report_sent_title": "Mòran taing airson a’ ghearain, bheir sinn sùil air.", "send": "Cuir an gearan", "skip_to_send": "Cuir gun bheachd ris", "text_placeholder": "Sgrìobh no cuir ann beachdan a bharrachd", From f01e048758de67ed8b1052c40952e1ba8e75e58d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Mar 2022 20:08:48 +0100 Subject: [PATCH 338/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 313907215..91c15b473 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -313,7 +313,7 @@ }, "confirm_email": { "title": "หนึ่งสิ่งสุดท้าย", - "subtitle": "เราเพิ่งส่งอีเมลไปยัง %s\nแตะที่ลิงก์เพื่อยืนยันบัญชีของคุณ", + "subtitle": "แตะลิงก์ที่เราส่งอีเมลถึงคุณเพื่อยืนยันบัญชีของคุณ", "button": { "open_email_app": "เปิดแอปอีเมล", "resend": "ส่งใหม่" From 219e5dcf78f66a5e62c2aaee538389a2e1783955 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 1 Mar 2022 21:03:52 +0100 Subject: [PATCH 339/374] New translations app.json (Thai) --- .../StringsConvertor/input/th_TH/app.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 91c15b473..728a24ab8 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -45,7 +45,7 @@ "message": "โปรดเปิดใช้งานสิทธิอนุญาตการเข้าถึงคลังรูปภาพเพื่อบันทึกรูปภาพ" }, "delete_post": { - "title": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?", + "title": "ลบโพสต์", "message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้?" }, "clean_cache": { @@ -188,10 +188,10 @@ }, "header": { "no_status_found": "ไม่พบโพสต์", - "blocking_warning": "คุณไม่สามารถดูโปรไฟล์ของผู้ใช้นี้\nจนกว่าคุณจะเลิกปิดกั้นผู้ใช้นี้\nผู้ใช้นี้เห็นโปรไฟล์ของคุณเหมือนกับที่คุณเห็น", - "user_blocking_warning": "คุณไม่สามารถดูโปรไฟล์ของ %s\nจนกว่าคุณจะเลิกปิดกั้นผู้ใช้นี้\nผู้ใช้นี้เห็นโปรไฟล์ของคุณเหมือนกับที่คุณเห็น", - "blocked_warning": "คุณไม่สามารถดูโปรไฟล์ของผู้ใช้นี้\nจนกว่าผู้ใช้นี้จะเลิกปิดกั้นคุณ", - "user_blocked_warning": "คุณไม่สามารถดูโปรไฟล์ของ %s\nจนกว่าผู้ใช้นี้จะเลิกปิดกั้นคุณ", + "blocking_warning": "คุณไม่สามารถดูโปรไฟล์ของผู้ใช้นี้\nจนกว่าคุณจะเลิกปิดกั้นเขา\nโปรไฟล์ของคุณมีลักษณะเช่นนี้สำหรับเขา", + "user_blocking_warning": "คุณไม่สามารถดูโปรไฟล์ของ %s\nจนกว่าคุณจะเลิกปิดกั้นเขา\nโปรไฟล์ของคุณมีลักษณะเช่นนี้สำหรับเขา", + "blocked_warning": "คุณไม่สามารถดูโปรไฟล์ของผู้ใช้นี้\nจนกว่าเขาจะเลิกปิดกั้นคุณ", + "user_blocked_warning": "คุณไม่สามารถดูโปรไฟล์ของ %s\nจนกว่าเขาจะเลิกปิดกั้นคุณ", "suspended_warning": "ผู้ใช้นี้ถูกระงับการใช้งาน", "user_suspended_warning": "บัญชีของ %s ถูกระงับการใช้งาน" } @@ -205,7 +205,7 @@ "log_in": "เข้าสู่ระบบ" }, "server_picker": { - "title": "เลือกเซิร์ฟเวอร์\nอันไหนก็ได้", + "title": "Mastodon ประกอบด้วยผู้ใช้ในชุมชนที่แตกต่างกัน", "subtitle": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ", "subtitle_extend": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละชุมชนดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระโดยสิ้นเชิง", "button": { @@ -234,7 +234,7 @@ "category": "หมวดหมู่" }, "input": { - "placeholder": "ค้นหาเซิร์ฟเวอร์หรือเข้าร่วมของคุณเอง..." + "placeholder": "ค้นหาชุมชน" }, "empty_state": { "finding_servers": "กำลังค้นหาเซิร์ฟเวอร์ที่พร้อมใช้งาน...", @@ -243,7 +243,7 @@ } }, "register": { - "title": "บอกเราเกี่ยวกับคุณ", + "title": "มาตั้งค่าของคุณใน %s", "input": { "avatar": { "delete": "ลบ" @@ -303,7 +303,7 @@ }, "server_rules": { "title": "กฎพื้นฐานบางประการ", - "subtitle": "กฎเหล่านี้ถูกตั้งโดยผู้ดูแลของ %s", + "subtitle": "มีการตั้งและบังคับใช้กฎเหล่านี้โดยผู้ควบคุมของ %s", "prompt": "เมื่อคุณดำเนินการต่อ คุณอยู่ภายใต้เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัวสำหรับ %s", "terms_of_service": "เงื่อนไขการให้บริการ", "privacy_policy": "นโยบายความเป็นส่วนตัว", From 37f4bc1fc9eb7a1a9a838bf655cc9e15ec30777b Mon Sep 17 00:00:00 2001 From: CMK Date: Wed, 2 Mar 2022 19:44:48 +0800 Subject: [PATCH 340/374] feat: add UITests for snapshots --- AppStoreSnapshotTestPlan.xctestplan | 27 ++++ Mastodon.xcodeproj/project.pbxproj | 6 + .../xcschemes/Mastodon - Release.xcscheme | 10 -- .../xcshareddata/xcschemes/Mastodon.xcscheme | 3 + .../xcschemes/xcschememanagement.plist | 13 +- MastodonUITests/MastodonUISnapshotTests.swift | 136 ++++++++++++++++++ 6 files changed, 181 insertions(+), 14 deletions(-) create mode 100644 AppStoreSnapshotTestPlan.xctestplan create mode 100644 MastodonUITests/MastodonUISnapshotTests.swift diff --git a/AppStoreSnapshotTestPlan.xctestplan b/AppStoreSnapshotTestPlan.xctestplan new file mode 100644 index 000000000..ebe40293e --- /dev/null +++ b/AppStoreSnapshotTestPlan.xctestplan @@ -0,0 +1,27 @@ +{ + "configurations" : [ + { + "id" : "E27ADCCD-D2DF-4255-81D1-21CFC3C33254", + "name" : "Configuration 1", + "options" : { + + } + } + ], + "defaultOptions" : { + "testTimeoutsEnabled" : true + }, + "testTargets" : [ + { + "selectedTests" : [ + "MastodonUISnapshotTests\/testSnapshot()" + ], + "target" : { + "containerPath" : "container:Mastodon.xcodeproj", + "identifier" : "DB427DF225BAA00100D1B89D", + "name" : "MastodonUITests" + } + } + ], + "version" : 1 +} diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 689f7de3e..ed8a4f2b3 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -244,6 +244,7 @@ DB45FB0F25CA87D0005A8AC7 /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FB0E25CA87D0005A8AC7 /* AuthenticationService.swift */; }; DB45FB1D25CA9D23005A8AC7 /* APIService+HomeTimeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB45FB1C25CA9D23005A8AC7 /* APIService+HomeTimeline.swift */; }; DB47229725F9EFAD00DA7F53 /* NSManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB47229625F9EFAD00DA7F53 /* NSManagedObjectContext.swift */; }; + DB47AB6227CF752B00CD73C7 /* MastodonUISnapshotTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB47AB6127CF752B00CD73C7 /* MastodonUISnapshotTests.swift */; }; DB482A3F261331E8008AE74C /* UserTimelineViewModel+State.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB482A3E261331E8008AE74C /* UserTimelineViewModel+State.swift */; }; DB482A4B261340A7008AE74C /* APIService+UserTimeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB482A4A261340A7008AE74C /* APIService+UserTimeline.swift */; }; DB4924E226312AB200E9DB22 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4924E126312AB200E9DB22 /* NotificationService.swift */; }; @@ -969,6 +970,8 @@ DB45FB0E25CA87D0005A8AC7 /* AuthenticationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationService.swift; sourceTree = ""; }; DB45FB1C25CA9D23005A8AC7 /* APIService+HomeTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+HomeTimeline.swift"; sourceTree = ""; }; DB47229625F9EFAD00DA7F53 /* NSManagedObjectContext.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSManagedObjectContext.swift; sourceTree = ""; }; + DB47AB6127CF752B00CD73C7 /* MastodonUISnapshotTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonUISnapshotTests.swift; sourceTree = ""; }; + DB47AB6327CF858400CD73C7 /* AppStoreSnapshotTestPlan.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = AppStoreSnapshotTestPlan.xctestplan; sourceTree = ""; }; DB482A3E261331E8008AE74C /* UserTimelineViewModel+State.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UserTimelineViewModel+State.swift"; sourceTree = ""; }; DB482A4A261340A7008AE74C /* APIService+UserTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+UserTimeline.swift"; sourceTree = ""; }; DB4924E126312AB200E9DB22 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; @@ -2079,6 +2082,7 @@ children = ( DBF53F5F25C14E88008AAC7B /* Mastodon.xctestplan */, DBF53F6025C14E9D008AAC7B /* MastodonSDK.xctestplan */, + DB47AB6327CF858400CD73C7 /* AppStoreSnapshotTestPlan.xctestplan */, DB3D0FED25BAA42200EAA174 /* MastodonSDK */, DB427DD425BAA00100D1B89D /* Mastodon */, DB427DEB25BAA00100D1B89D /* MastodonTests */, @@ -2145,6 +2149,7 @@ isa = PBXGroup; children = ( DB427DF725BAA00100D1B89D /* MastodonUITests.swift */, + DB47AB6127CF752B00CD73C7 /* MastodonUISnapshotTests.swift */, DB427DF925BAA00100D1B89D /* Info.plist */, ); path = MastodonUITests; @@ -4273,6 +4278,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + DB47AB6227CF752B00CD73C7 /* MastodonUISnapshotTests.swift in Sources */, DB427DF825BAA00100D1B89D /* MastodonUITests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Release.xcscheme b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Release.xcscheme index 15ecdcbe9..d5959cead 100644 --- a/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Release.xcscheme +++ b/Mastodon.xcodeproj/xcshareddata/xcschemes/Mastodon - Release.xcscheme @@ -48,16 +48,6 @@ ReferencedContainer = "container:Mastodon.xcodeproj"> - - - - + + AppShared.xcscheme_^#shared#^_ orderHint - 29 + 21 CoreDataStack.xcscheme_^#shared#^_ @@ -24,6 +24,11 @@ orderHint 1 + Mastodon - Snapshot.xcscheme_^#shared#^_ + + orderHint + 2 + Mastodon - ar.xcscheme_^#shared#^_ orderHint @@ -97,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 30 + 23 MastodonIntents.xcscheme_^#shared#^_ @@ -112,12 +117,12 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 2 + 3 ShareActionExtension.xcscheme_^#shared#^_ orderHint - 28 + 24 SuppressBuildableAutocreation diff --git a/MastodonUITests/MastodonUISnapshotTests.swift b/MastodonUITests/MastodonUISnapshotTests.swift new file mode 100644 index 000000000..632beb4d9 --- /dev/null +++ b/MastodonUITests/MastodonUISnapshotTests.swift @@ -0,0 +1,136 @@ +// +// MastodonUISnapshotTests.swift +// MastodonUITests +// +// Created by MainasuK on 2022-3-2. +// + +import XCTest + +extension UInt64 { + static let second: UInt64 = 1_000_000_000 +} + +@MainActor +class MastodonUISnapshotTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + override class func tearDown() { + super.tearDown() + let app = XCUIApplication() + print(app.debugDescription) + } + +} + +extension MastodonUISnapshotTests { + + func testSmoke() async throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + + + } + +} + +extension MastodonUISnapshotTests { + + func testSnapshot() async throws { + let app = XCUIApplication() + app.launch() + + try await snapshotHome() + try await snapshotSearch() + try await snapshotProfile() + + } + + func snapshotHome() async throws { + let app = XCUIApplication() + app.launch() + + func tapTab() { + XCTAssert(app.tabBars.buttons["Home"].exists) + app.tabBars.buttons["Home"].tap() + } + + tapTab() + try await Task.sleep(nanoseconds: .second * 3) + takeSnapshot(name: "Home - 1") + + tapTab() + try await Task.sleep(nanoseconds: .second * 3) + takeSnapshot(name: "Home - 2") + + tapTab() + try await Task.sleep(nanoseconds: .second * 3) + takeSnapshot(name: "Home - 3") + } + + func snapshotSearch() async throws { + let app = XCUIApplication() + app.launch() + + func tapTab() { + XCTAssert(app.tabBars.buttons["Search"].exists) + app.tabBars.buttons["Search"].tap() + } + + tapTab() + try await Task.sleep(nanoseconds: .second * 3) + takeSnapshot(name: "Search - 1") + + tapTab() + try await Task.sleep(nanoseconds: .second * 3) + takeSnapshot(name: "Search - 2") + + tapTab() + try await Task.sleep(nanoseconds: .second * 3) + takeSnapshot(name: "Search - 3") + } + + func snapshotProfile() async throws { + let app = XCUIApplication() + app.launch() + + // Go to Search tab + XCTAssert(app.tabBars.buttons["Search"].exists) + app.tabBars.buttons["Search"].tap() + + // Tap and search user + let searchField = app.navigationBars.searchFields.firstMatch + XCTAssert(searchField.waitForExistence(timeout: 5)) + searchField.tap() + searchField.typeText("@dentaku@fnordon.de") + + // Tap the cell and display user profile + let cell = app.tables.cells.firstMatch + XCTAssert(cell.waitForExistence(timeout: 5)) + cell.tap() + + try await Task.sleep(nanoseconds: .second * 5) + + takeSnapshot(name: "Profile") + } + +} + +extension MastodonUISnapshotTests { + func takeSnapshot(name: String) { + let snapshot = XCUIScreen.main.screenshot() + let attachment = XCTAttachment(screenshot: snapshot) + attachment.lifetime = .keepAlways + add(attachment) + } +} From f2f71e7102b4e7dfb55faffbb0b7b651442bab4f Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 3 Mar 2022 19:51:12 +0800 Subject: [PATCH 341/374] feat: add snapshot UITest and document --- AppStoreSnapshotTestPlan.xctestplan | 2 +- Documentation/Snapshot.md | 79 ++++++ .../xcschemes/xcschememanagement.plist | 6 +- .../HomeTimelineViewController.swift | 2 + MastodonUITests/MastodonUISnapshotTests.swift | 250 ++++++++++++++++-- 5 files changed, 306 insertions(+), 33 deletions(-) create mode 100644 Documentation/Snapshot.md diff --git a/AppStoreSnapshotTestPlan.xctestplan b/AppStoreSnapshotTestPlan.xctestplan index ebe40293e..02e1644e6 100644 --- a/AppStoreSnapshotTestPlan.xctestplan +++ b/AppStoreSnapshotTestPlan.xctestplan @@ -14,7 +14,7 @@ "testTargets" : [ { "selectedTests" : [ - "MastodonUISnapshotTests\/testSnapshot()" + "MastodonUISnapshotTests\/testSmoke()" ], "target" : { "containerPath" : "container:Mastodon.xcodeproj", diff --git a/Documentation/Snapshot.md b/Documentation/Snapshot.md new file mode 100644 index 000000000..9f20abbd3 --- /dev/null +++ b/Documentation/Snapshot.md @@ -0,0 +1,79 @@ +# Mastodon App Store Snapshot Guide +This documentation is a guide to create snapshots for App Store. The outer contributor could ignore this. + +## Prepare toolkit +The app use the Xcode UITest generate snapshots attachments. Then use the `xcparse` tool extract the snapshots. + +```zsh +# install xcparse from Homebrew +brew install chargepoint/xcparse/xcparse +``` +## Take Snapshots +We use `xcodebuild` CLI tool to trigger UITest. To change device for snapshot. + +Replace the `name` in `-destinatio` option to change device. For example: +`-destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (5th generation)' \` + +```zsh +# list the destinations +xcodebuild \ + test \ + -showdestinations \ + -derivedDataPath '~/Downloads/MastodonBuild/Derived' \ + -workspace Mastodon.xcworkspace \ + -scheme 'Mastodon - Snapshot' +``` + +#### Auto-Login before make snapshots +This script trigger the `MastodonUITests/MastodonUISnapshotTests/testSignInAccount` test case to sign-in the account. The test case may wait for 2FA code or email code. Please input it if needed. Also, you can skip this and sign-in the test account manually. + +Replace the `` and `` for test account. +```zsh +# build and run test case for auto sign-in +TEST_RUNNER_email='' \ + TEST_RUNNER_password='' \ + xcodebuild \ + test \ + -derivedDataPath '~/Downloads/MastodonBuild/Derived' \ + -workspace Mastodon.xcworkspace \ + -scheme 'Mastodon - Snapshot' \ + -sdk iphonesimulator \ + -destination 'platform=iOS Simulator,name=iPhone 13 Pro Max' \ + -testPlan 'AppStoreSnapshotTestPlan' \ + -only-testing:MastodonUITests/MastodonUISnapshotTests/testSignInAccount +``` + +Note: +UITest may running silent. Open the Simulator.app to make the device display. + +#### Take and extract snapshots +```zsh +# take snapshots +TEST_RUNNER_username_snapshot='Gargron' \ + xcodebuild \ + test \ + -derivedDataPath '~/Downloads/MastodonBuild/Derived' \ + -workspace Mastodon.xcworkspace \ + -scheme 'Mastodon - Snapshot' \ + -sdk iphonesimulator \ + -destination 'platform=iOS Simulator,name=iPhone 13 Pro Max' \ + -testPlan 'AppStoreSnapshotTestPlan' \ + -only-testing:MastodonUITests/MastodonUISnapshotTests/testSnapshot + +# output: +Test session results, code coverage, and logs: + /Users/Me/Downloads/MastodonBuild/Derived/Logs/Test/Test-Mastodon - Snapshot-2022.03.03_18-00-38-+0800.xcresult + +** TEST SUCCEEDED ** +``` + +Use `xcparse screenshots ` extracts snapshots. + +```zsh +# scresult path for previous test case +xcparse screenshots '' ~/Downloads/MastodonBuild/Screenshots/ + +# output +100% [============] +🎊 Export complete! 🎊 +``` diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 73e417c8c..a5d4f6d92 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ AppShared.xcscheme_^#shared#^_ orderHint - 21 + 20 CoreDataStack.xcscheme_^#shared#^_ @@ -102,7 +102,7 @@ MastodonIntent.xcscheme_^#shared#^_ orderHint - 23 + 21 MastodonIntents.xcscheme_^#shared#^_ @@ -122,7 +122,7 @@ ShareActionExtension.xcscheme_^#shared#^_ orderHint - 24 + 19 SuppressBuildableAutocreation diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index fda5a471b..d49235c81 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -51,6 +51,7 @@ final class HomeTimelineViewController: UIViewController, NeedsDependency, Media let barButtonItem = UIBarButtonItem() barButtonItem.tintColor = ThemeService.tintColor barButtonItem.image = UIImage(systemName: "gear")?.withRenderingMode(.alwaysTemplate) + barButtonItem.accessibilityLabel = L10n.Common.Controls.Actions.settings return barButtonItem }() @@ -58,6 +59,7 @@ final class HomeTimelineViewController: UIViewController, NeedsDependency, Media let barButtonItem = UIBarButtonItem() barButtonItem.tintColor = ThemeService.tintColor barButtonItem.image = UIImage(systemName: "square.and.pencil")?.withRenderingMode(.alwaysTemplate) + barButtonItem.accessibilityLabel = L10n.Common.Controls.Actions.compose return barButtonItem }() diff --git a/MastodonUITests/MastodonUISnapshotTests.swift b/MastodonUITests/MastodonUISnapshotTests.swift index 632beb4d9..aab493cf7 100644 --- a/MastodonUITests/MastodonUISnapshotTests.swift +++ b/MastodonUITests/MastodonUISnapshotTests.swift @@ -38,81 +38,79 @@ extension MastodonUISnapshotTests { // Any test you write for XCTest can be annotated as throws and async. // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. - - + } } extension MastodonUISnapshotTests { + + private func tapTab(app: XCUIApplication, tab: String) { + let searchTab = app.tabBars.buttons[tab] + if searchTab.exists { searchTab.tap() } + + let searchCell = app.collectionViews.cells[tab] + if searchCell.exists { searchCell.tap() } + } func testSnapshot() async throws { let app = XCUIApplication() app.launch() - try await snapshotHome() - try await snapshotSearch() - try await snapshotProfile() - + try await testSnapshotHome() + try await testSnapshotSearch() + try await testSnapshotProfile() + try await testSnapshotCompose() } - func snapshotHome() async throws { + func testSnapshotHome() async throws { let app = XCUIApplication() app.launch() - func tapTab() { - XCTAssert(app.tabBars.buttons["Home"].exists) - app.tabBars.buttons["Home"].tap() - } - - tapTab() + tapTab(app: app, tab: "Home") try await Task.sleep(nanoseconds: .second * 3) takeSnapshot(name: "Home - 1") - tapTab() + tapTab(app: app, tab: "Home") try await Task.sleep(nanoseconds: .second * 3) takeSnapshot(name: "Home - 2") - tapTab() + tapTab(app: app, tab: "Home") try await Task.sleep(nanoseconds: .second * 3) takeSnapshot(name: "Home - 3") } - func snapshotSearch() async throws { + func testSnapshotSearch() async throws { let app = XCUIApplication() app.launch() - func tapTab() { - XCTAssert(app.tabBars.buttons["Search"].exists) - app.tabBars.buttons["Search"].tap() - } - - tapTab() + tapTab(app: app, tab: "Search") try await Task.sleep(nanoseconds: .second * 3) takeSnapshot(name: "Search - 1") - tapTab() + tapTab(app: app, tab: "Search") try await Task.sleep(nanoseconds: .second * 3) takeSnapshot(name: "Search - 2") - tapTab() + tapTab(app: app, tab: "Search") try await Task.sleep(nanoseconds: .second * 3) takeSnapshot(name: "Search - 3") } - func snapshotProfile() async throws { + func testSnapshotProfile() async throws { + let username = ProcessInfo.processInfo.environment["username_snapshot"] ?? "Gargron" + let app = XCUIApplication() app.launch() // Go to Search tab - XCTAssert(app.tabBars.buttons["Search"].exists) - app.tabBars.buttons["Search"].tap() + tapTab(app: app, tab: "Search") // Tap and search user let searchField = app.navigationBars.searchFields.firstMatch XCTAssert(searchField.waitForExistence(timeout: 5)) searchField.tap() - searchField.typeText("@dentaku@fnordon.de") + searchField.typeText(username) // Tap the cell and display user profile let cell = app.tables.cells.firstMatch @@ -124,12 +122,206 @@ extension MastodonUISnapshotTests { takeSnapshot(name: "Profile") } + func testSnapshotCompose() async throws { + let app = XCUIApplication() + app.launch() + + // open Compose scene + let composeBarButtonItem = app.navigationBars.buttons["Compose"].firstMatch + let composeCollectionViewCell = app.collectionViews.cells["Compose"] + if composeBarButtonItem.waitForExistence(timeout: 5) { + composeBarButtonItem.tap() + } else if composeCollectionViewCell.waitForExistence(timeout: 5) { + composeCollectionViewCell.tap() + } else { + XCTFail() + } + + // type text + let textView = app.textViews.firstMatch + XCTAssert(textView.waitForExistence(timeout: 5)) + textView.tap() + textView.typeText("Look at that view! #Athens ") + + // tap Add Attachment toolbar button + let addAttachmentButton = app.buttons["Add Attachment"].firstMatch + XCTAssert(addAttachmentButton.waitForExistence(timeout: 5)) + addAttachmentButton.tap() + + // tap Photo Library menu action + let photoLibraryButton = app.buttons["Photo Library"].firstMatch + XCTAssert(photoLibraryButton.waitForExistence(timeout: 5)) + photoLibraryButton.tap() + + // select photo + let photo = app.images["Photo, August 09, 2012, 2:52 AM"].firstMatch + XCTAssert(photo.waitForExistence(timeout: 5)) + photo.tap() + + // tap Add barButtonItem + let addBarButtonItem = app.navigationBars.buttons["Add"].firstMatch + XCTAssert(addBarButtonItem.waitForExistence(timeout: 5)) + addBarButtonItem.tap() + + try await Task.sleep(nanoseconds: .second * 10) + takeSnapshot(name: "Compose - 1") + + try await Task.sleep(nanoseconds: .second * 10) + takeSnapshot(name: "Compose - 2") + + try await Task.sleep(nanoseconds: .second * 10) + takeSnapshot(name: "Compose - 3") + } + +} + +extension MastodonUISnapshotTests { + + // Please check the Documentation/Snapshot.md and run this test case in the command line + func testSignInAccount() async throws { + guard let email = ProcessInfo.processInfo.environment["email"] else { + fatalError("env 'email' missing") + } + guard let password = ProcessInfo.processInfo.environment["password"] else { + fatalError("env 'password' missing") + } + try await signInApplication(email: email, password: password) + } + + func signInApplication( + email: String, + password: String + ) async throws { + let app = XCUIApplication() + app.launch() + + // check in Onboarding or not + let loginButton = app.buttons["Log In"].firstMatch + let loginButtonExists = loginButton.waitForExistence(timeout: 5) + + // goto Onboarding scene if already sign-in + if !loginButtonExists { + let profileTabBarButton = app.tabBars.buttons["Profile"] + XCTAssert(profileTabBarButton.waitForExistence(timeout: 3)) + profileTabBarButton.press(forDuration: 2) + + let addAccountCell = app.cells.containing(.staticText, identifier: "Add Account").firstMatch + XCTAssert(addAccountCell.waitForExistence(timeout: 3)) + addAccountCell.tap() + } + + // Tap login button + XCTAssert(loginButtonExists) + loginButton.tap() + + // type domain + let domainTextField = app.textFields.firstMatch + XCTAssert(domainTextField.waitForExistence(timeout: 5)) + domainTextField.tap() + // Skip system keyboard swipe input guide + skipKeyboardSwipeInputGuide(app: app) + domainTextField.typeText("mastodon.social") + XCUIApplication().keyboards.buttons["Done"].firstMatch.tap() + + // wait searching + try await Task.sleep(nanoseconds: .second * 3) + + // tap server + let cell = app.cells.containing(.staticText, identifier: "mastodon.social").firstMatch + XCTAssert(cell.waitForExistence(timeout: 5)) + cell.tap() + + // add system alert monitor + // A. The monitor not works + // addUIInterruptionMonitor(withDescription: "Authentication Alert") { alert in + // alert.buttons["Continue"].firstMatch.tap() + // return true + // } + + // tap next button + let nextButton = app.buttons.matching(NSPredicate(format: "enabled == true")).matching(identifier: "Next").firstMatch + XCTAssert(nextButton.waitForExistence(timeout: 3)) + nextButton.tap() + + // wait authentication alert display + try await Task.sleep(nanoseconds: .second * 3) + + // B. Workaround + let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard") + let continueButton = springboard.buttons["Continue"].firstMatch + XCTAssert(continueButton.waitForExistence(timeout: 3)) + continueButton.tap() + + // wait OAuth webpage display + try await Task.sleep(nanoseconds: .second * 10) + + let webview = app.webViews.firstMatch + XCTAssert(webview.waitForExistence(timeout: 10)) + + func tapAuthorizeButton() async throws -> Bool { + let authorizeButton = webview.buttons["AUTHORIZE"].firstMatch + if authorizeButton.exists { + authorizeButton.tap() + try await Task.sleep(nanoseconds: .second * 5) + return true + } + return false + } + + let isAuthorized = try await tapAuthorizeButton() + if !isAuthorized { + let emailTextField = webview.textFields["E-mail address"].firstMatch + XCTAssert(emailTextField.waitForExistence(timeout: 10)) + emailTextField.tap() + emailTextField.typeText(email) + + let passwordTextField = webview.secureTextFields["Password"].firstMatch + XCTAssert(passwordTextField.waitForExistence(timeout: 3)) + passwordTextField.tap() + passwordTextField.typeText(password) + + let goKeyboardButton = XCUIApplication().keyboards.buttons["Go"].firstMatch + XCTAssert(goKeyboardButton.waitForExistence(timeout: 3)) + goKeyboardButton.tap() + + var retry = 0 + let retryLimit = 20 + while webview.exists { + guard retry < retryLimit else { + fatalError("Cannot complete OAuth process") + } + retry += 1 + + // will break due to webview dismiss + _ = try await tapAuthorizeButton() + + print("Please enter the sign-in confirm code. Retry in 5s") + try await Task.sleep(nanoseconds: .second * 5) + } + } else { + // Done + } + + print("OAuth finish") + } + + private func skipKeyboardSwipeInputGuide(app: XCUIApplication) { + let swipeInputLabel = app.staticTexts["Speed up your typing by sliding your finger across the letters to compose a word."].firstMatch + guard swipeInputLabel.waitForExistence(timeout: 3) else { return } + let continueButton = app.buttons["Continue"] + continueButton.tap() + } } extension MastodonUISnapshotTests { func takeSnapshot(name: String) { let snapshot = XCUIScreen.main.screenshot() - let attachment = XCTAttachment(screenshot: snapshot) + let attachment = XCTAttachment( + uniformTypeIdentifier: "public.png", + name: "Screenshot-\(name)-\(UIDevice.current.name).png", + payload: snapshot.pngRepresentation, + userInfo: nil + ) attachment.lifetime = .keepAlways add(attachment) } From 7255af2a0ac805fc086739c89471e88ad1f8e6ab Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 3 Mar 2022 17:02:06 +0100 Subject: [PATCH 342/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 728a24ab8..6407f4432 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -205,7 +205,7 @@ "log_in": "เข้าสู่ระบบ" }, "server_picker": { - "title": "Mastodon ประกอบด้วยผู้ใช้ในชุมชนที่แตกต่างกัน", + "title": "Mastodon ประกอบด้วยผู้ใช้ในชุมชนต่าง ๆ", "subtitle": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ", "subtitle_extend": "เลือกชุมชนตามความสนใจ, ภูมิภาค หรือวัตถุประสงค์ทั่วไปของคุณ แต่ละชุมชนดำเนินการโดยองค์กรหรือบุคคลที่เป็นอิสระโดยสิ้นเชิง", "button": { From 633d1ae62a460c8486e8df1f4338193a7c791ef9 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 4 Mar 2022 00:04:36 +0800 Subject: [PATCH 343/374] feat: add notification snapshot --- MastodonUITests/MastodonUISnapshotTests.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/MastodonUITests/MastodonUISnapshotTests.swift b/MastodonUITests/MastodonUISnapshotTests.swift index aab493cf7..9c237808b 100644 --- a/MastodonUITests/MastodonUISnapshotTests.swift +++ b/MastodonUITests/MastodonUISnapshotTests.swift @@ -59,6 +59,7 @@ extension MastodonUISnapshotTests { try await testSnapshotHome() try await testSnapshotSearch() + try await testSnapshotNotification() try await testSnapshotProfile() try await testSnapshotCompose() } @@ -97,6 +98,23 @@ extension MastodonUISnapshotTests { takeSnapshot(name: "Search - 3") } + func testSnapshotNotification() async throws { + let app = XCUIApplication() + app.launch() + + tapTab(app: app, tab: "Notification") + try await Task.sleep(nanoseconds: .second * 3) + takeSnapshot(name: "Notification - 1") + + tapTab(app: app, tab: "Notification") + try await Task.sleep(nanoseconds: .second * 3) + takeSnapshot(name: "Notification - 2") + + tapTab(app: app, tab: "Notification") + try await Task.sleep(nanoseconds: .second * 3) + takeSnapshot(name: "Notification - 3") + } + func testSnapshotProfile() async throws { let username = ProcessInfo.processInfo.environment["username_snapshot"] ?? "Gargron" From 9c92f290a5ce84aa244ca86a12cbfffadf537700 Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 4 Mar 2022 01:39:34 +0800 Subject: [PATCH 344/374] chore: add domain and update guide for the snapshot UITest --- Documentation/Snapshot.md | 12 +++++++++++- MastodonUITests/MastodonUISnapshotTests.swift | 14 +++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Documentation/Snapshot.md b/Documentation/Snapshot.md index 9f20abbd3..5d794923b 100644 --- a/Documentation/Snapshot.md +++ b/Documentation/Snapshot.md @@ -39,6 +39,8 @@ TEST_RUNNER_email='' \ -scheme 'Mastodon - Snapshot' \ -sdk iphonesimulator \ -destination 'platform=iOS Simulator,name=iPhone 13 Pro Max' \ + -destination 'platform=iOS Simulator,name=iPhone 8 Plus' \ + -destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (5th generation)' \ -testPlan 'AppStoreSnapshotTestPlan' \ -only-testing:MastodonUITests/MastodonUISnapshotTests/testSignInAccount ``` @@ -48,8 +50,14 @@ UITest may running silent. Open the Simulator.app to make the device display. #### Take and extract snapshots ```zsh +# setup magic status bar +xcrun simctl status_bar 'iPhone 13 Pro Max' override --time "9:41" --batteryState charged --batteryLevel 100 +xcrun simctl status_bar 'iPhone 8 Plus' override --time "9:41" --batteryState charged --batteryLevel 100 +xcrun simctl status_bar 'iPad Pro (12.9-inch) (5th generation)' override --time "9:41" --batteryState charged --batteryLevel 100 + # take snapshots -TEST_RUNNER_username_snapshot='Gargron' \ +TEST_RUNNER_domain='' \ + TEST_RUNNER_username_snapshot='username@domain.com' \ xcodebuild \ test \ -derivedDataPath '~/Downloads/MastodonBuild/Derived' \ @@ -57,6 +65,8 @@ TEST_RUNNER_username_snapshot='Gargron' \ -scheme 'Mastodon - Snapshot' \ -sdk iphonesimulator \ -destination 'platform=iOS Simulator,name=iPhone 13 Pro Max' \ + -destination 'platform=iOS Simulator,name=iPhone 8 Plus' \ + -destination 'platform=iOS Simulator,name=iPad Pro (12.9-inch) (5th generation)' \ -testPlan 'AppStoreSnapshotTestPlan' \ -only-testing:MastodonUITests/MastodonUISnapshotTests/testSnapshot diff --git a/MastodonUITests/MastodonUISnapshotTests.swift b/MastodonUITests/MastodonUISnapshotTests.swift index 9c237808b..cf2206b66 100644 --- a/MastodonUITests/MastodonUISnapshotTests.swift +++ b/MastodonUITests/MastodonUISnapshotTests.swift @@ -197,16 +197,24 @@ extension MastodonUISnapshotTests { // Please check the Documentation/Snapshot.md and run this test case in the command line func testSignInAccount() async throws { + guard let domain = ProcessInfo.processInfo.environment["domain"] else { + fatalError("env 'domain' missing") + } guard let email = ProcessInfo.processInfo.environment["email"] else { fatalError("env 'email' missing") } guard let password = ProcessInfo.processInfo.environment["password"] else { fatalError("env 'password' missing") } - try await signInApplication(email: email, password: password) + try await signInApplication( + domain: domain, + email: email, + password: password + ) } func signInApplication( + domain: String, email: String, password: String ) async throws { @@ -238,14 +246,14 @@ extension MastodonUISnapshotTests { domainTextField.tap() // Skip system keyboard swipe input guide skipKeyboardSwipeInputGuide(app: app) - domainTextField.typeText("mastodon.social") + domainTextField.typeText(domain) XCUIApplication().keyboards.buttons["Done"].firstMatch.tap() // wait searching try await Task.sleep(nanoseconds: .second * 3) // tap server - let cell = app.cells.containing(.staticText, identifier: "mastodon.social").firstMatch + let cell = app.cells.containing(.staticText, identifier: domain).firstMatch XCTAssert(cell.waitForExistence(timeout: 5)) cell.tap() From c94d988be5def978d34987265a9ff73586d7874b Mon Sep 17 00:00:00 2001 From: CMK Date: Fri, 4 Mar 2022 02:22:05 +0800 Subject: [PATCH 345/374] chore: use the first photo for compose snapshot --- MastodonUITests/MastodonUISnapshotTests.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MastodonUITests/MastodonUISnapshotTests.swift b/MastodonUITests/MastodonUISnapshotTests.swift index cf2206b66..182ed1810 100644 --- a/MastodonUITests/MastodonUISnapshotTests.swift +++ b/MastodonUITests/MastodonUISnapshotTests.swift @@ -171,8 +171,8 @@ extension MastodonUISnapshotTests { XCTAssert(photoLibraryButton.waitForExistence(timeout: 5)) photoLibraryButton.tap() - // select photo - let photo = app.images["Photo, August 09, 2012, 2:52 AM"].firstMatch + // select the first photo + let photo = app.images.containing(NSPredicate(format: "label BEGINSWITH 'Photo'")).element(boundBy: 0).firstMatch XCTAssert(photo.waitForExistence(timeout: 5)) photo.tap() From 0d3af7b093fd8ee25201610f0f390a845bf41e68 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 4 Mar 2022 15:37:47 +0100 Subject: [PATCH 346/374] New translations app.json (Thai) --- Localization/StringsConvertor/input/th_TH/app.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Localization/StringsConvertor/input/th_TH/app.json b/Localization/StringsConvertor/input/th_TH/app.json index 6407f4432..001075b1b 100644 --- a/Localization/StringsConvertor/input/th_TH/app.json +++ b/Localization/StringsConvertor/input/th_TH/app.json @@ -243,7 +243,7 @@ } }, "register": { - "title": "มาตั้งค่าของคุณใน %s", + "title": "มาตั้งค่าของคุณใน %s กันเลย", "input": { "avatar": { "delete": "ลบ" From d9cf5ec2c86a4504b657b168b54415677e3ae8d1 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 8 Mar 2022 16:11:25 +0100 Subject: [PATCH 347/374] New translations app.json (German) --- .../StringsConvertor/input/de_DE/app.json | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json index 13ced12a3..6051635b4 100644 --- a/Localization/StringsConvertor/input/de_DE/app.json +++ b/Localization/StringsConvertor/input/de_DE/app.json @@ -46,7 +46,7 @@ }, "delete_post": { "title": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?", - "message": "Are you sure you want to delete this post?" + "message": "Bist du dir sicher, dass du diesen Beitrag löschen willst?" }, "clean_cache": { "title": "Zwischenspeicher leeren", @@ -141,7 +141,7 @@ "favorite": "Favorit", "unfavorite": "Aus Favoriten entfernen", "menu": "Menü", - "hide": "Hide" + "hide": "Verstecken" }, "tag": { "url": "URL", @@ -152,10 +152,10 @@ "emoji": "Emoji" }, "visibility": { - "unlisted": "Everyone can see this post but not display in the public timeline.", - "private": "Only their followers can see this post.", - "private_from_me": "Only my followers can see this post.", - "direct": "Only mentioned user can see this post." + "unlisted": "Jeder kann diesen Post sehen, aber nicht in der öffentlichen Timeline zeigen.", + "private": "Nur Follower des Authors können diesen Beitrag sehen.", + "private_from_me": "Nur meine Follower können diesen Beitrag sehen.", + "direct": "Nur erwähnte Benutzer können diesen Beitrag sehen." } }, "friendship": { @@ -419,26 +419,26 @@ "segmented_control": { "posts": "Beiträge", "replies": "Antworten", - "posts_and_replies": "Posts and Replies", + "posts_and_replies": "Beiträge und Antworten", "media": "Medien", - "about": "About" + "about": "Über" }, "relationship_action_alert": { "confirm_mute_user": { - "title": "Mute Account", - "message": "Confirm to mute %s" + "title": "Konto stummschalten", + "message": "Bestätige %s stumm zu schalten" }, "confirm_unmute_user": { "title": "Ton einschalten", "message": "Bestätige um %s nicht mehr stummzuschalten" }, "confirm_block_user": { - "title": "Block Account", - "message": "Confirm to block %s" + "title": "Konto blockieren", + "message": "Bestätige %s zu blockieren" }, "confirm_unblock_user": { - "title": "Unblock Account", - "message": "Confirm to unblock %s" + "title": "Konto entsperren", + "message": "Bestätige %s zu entsperren" } } }, @@ -490,11 +490,11 @@ "Mentions": "Erwähnungen" }, "notification_description": { - "followed_you": "followed you", - "favorited_your_post": "favorited your post", - "reblogged_your_post": "reblogged your post", - "mentioned_you": "mentioned you", - "request_to_follow_you": "request to follow you", + "followed_you": "folgt dir", + "favorited_your_post": "hat deinen Beitrag favorisiert", + "reblogged_your_post": "hat deinen Beitrag geteilt", + "mentioned_you": "hat dich erwähnt", + "request_to_follow_you": "möchte dir folgen", "poll_has_ended": "poll has ended" }, "keyobard": { @@ -544,7 +544,7 @@ "using_default_browser": "Standardbrowser zum Öffnen von Links verwenden" }, "boring_zone": { - "title": "Der Langweiliger Bereich", + "title": "Der langweilige Bereich", "account_settings": "Kontoeinstellungen", "terms": "Allgemeine Geschäftsbedingungen", "privacy": "Datenschutzerklärung" From dddfc28d7e2a6ff33d7ba880cb58440de3de5cbd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Tue, 8 Mar 2022 17:12:24 +0100 Subject: [PATCH 348/374] New translations app.json (German) --- .../StringsConvertor/input/de_DE/app.json | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Localization/StringsConvertor/input/de_DE/app.json b/Localization/StringsConvertor/input/de_DE/app.json index 6051635b4..f62f9f95d 100644 --- a/Localization/StringsConvertor/input/de_DE/app.json +++ b/Localization/StringsConvertor/input/de_DE/app.json @@ -494,8 +494,8 @@ "favorited_your_post": "hat deinen Beitrag favorisiert", "reblogged_your_post": "hat deinen Beitrag geteilt", "mentioned_you": "hat dich erwähnt", - "request_to_follow_you": "möchte dir folgen", - "poll_has_ended": "poll has ended" + "request_to_follow_you": "Folgeanfrage", + "poll_has_ended": "Umfrage wurde beendet" }, "keyobard": { "show_everything": "Alles anzeigen", @@ -516,11 +516,11 @@ "dark": "Immer dunkel" }, "look_and_feel": { - "title": "Look and Feel", - "use_system": "Use System", - "really_dark": "Really Dark", - "sorta_dark": "Sorta Dark", - "light": "Light" + "title": "Erscheinungsbild", + "use_system": "Systemeinstellung benutzen", + "really_dark": "Wirklich dunkel", + "sorta_dark": "Ziemlich dunkel", + "light": "Hell" }, "notifications": { "title": "Benachrichtigungen", @@ -563,17 +563,17 @@ } }, "report": { - "title_report": "Report", + "title_report": "Melden", "title": "%s melden", "step1": "Schritt 1 von 2", "step2": "Schritt 2 von 2", "content1": "Gibt es noch weitere Beiträge, die du der Meldung hinzufügen möchtest?", "content2": "Gibt es etwas, was die Moderatoren über diese Meldung wissen sollten?", - "report_sent_title": "Thanks for reporting, we’ll look into this.", + "report_sent_title": "Danke für deine Meldung, wir werden uns damit beschäftigen.", "send": "Meldung abschicken", "skip_to_send": "Ohne Kommentar abschicken", "text_placeholder": "Zusätzliche Kommentare eingeben oder einfügen", - "reported": "REPORTED" + "reported": "GEMELDET" }, "preview": { "keyboard": { From b77257641236a9a2ff00e7aef459b3d744bbfe55 Mon Sep 17 00:00:00 2001 From: CMK Date: Thu, 10 Mar 2022 16:20:25 +0800 Subject: [PATCH 349/374] chore: update settings scene UI --- .../Diffiable/Settings/SettingsSection.swift | 4 +- .../SettingsAppearanceTableViewCell.swift | 6 +-- .../Settings/SettingsViewController.swift | 10 ++--- .../Scene/Settings/View/AppearanceView.swift | 36 ++++++++++++++---- .../Settings/automatic.imageset/Contents.json | 23 +++++++++++ .../Settings/automatic.imageset/automatic.png | Bin 0 -> 15356 bytes .../automatic.imageset/automatic@2x.png | Bin 0 -> 49853 bytes .../automatic.imageset/automatic@3x.png | Bin 0 -> 98974 bytes .../black.auto.imageset/Contents.json | 12 ------ .../black.auto.imageset/Mixed_Black_Light.png | Bin 388414 -> 0 bytes .../Settings/black.imageset/Contents.json | 12 ------ .../Settings/black.imageset/Home Black.png | Bin 3125312 -> 0 bytes .../Settings/dark.auto.imageset/Contents.json | 12 ------ .../dark.auto.imageset/Mixed_Dark_Light.png | Bin 383551 -> 0 bytes .../Settings/dark.imageset/Contents.json | 15 +++++++- .../Settings/dark.imageset/Home Dark.png | Bin 2972696 -> 0 bytes .../Settings/dark.imageset/dark.png | Bin 0 -> 14924 bytes .../Settings/dark.imageset/dark@2x.png | Bin 0 -> 48823 bytes .../Settings/dark.imageset/dark@3x.png | Bin 0 -> 97501 bytes .../Settings/light.imageset/Contents.json | 15 +++++++- .../Settings/light.imageset/Home Light.png | Bin 412411 -> 0 bytes .../Settings/light.imageset/light.png | Bin 0 -> 15027 bytes .../Settings/light.imageset/light@2x.png | Bin 0 -> 48810 bytes .../Settings/light.imageset/light@3x.png | Bin 0 -> 97804 bytes .../MastodonAsset/Generated/Assets.swift | 4 +- 25 files changed, 87 insertions(+), 62 deletions(-) create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/automatic.imageset/Contents.json create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/automatic.imageset/automatic.png create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/automatic.imageset/automatic@2x.png create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/automatic.imageset/automatic@3x.png delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.auto.imageset/Contents.json delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.auto.imageset/Mixed_Black_Light.png delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Contents.json delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/black.imageset/Home Black.png delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.auto.imageset/Contents.json delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.auto.imageset/Mixed_Dark_Light.png delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/Home Dark.png create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/dark.png create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/dark@2x.png create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/dark.imageset/dark@3x.png delete mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/Home Light.png create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/light.png create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/light@2x.png create mode 100644 MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/light.imageset/light@3x.png diff --git a/Mastodon/Diffiable/Settings/SettingsSection.swift b/Mastodon/Diffiable/Settings/SettingsSection.swift index d221c21c6..adc7140be 100644 --- a/Mastodon/Diffiable/Settings/SettingsSection.swift +++ b/Mastodon/Diffiable/Settings/SettingsSection.swift @@ -21,9 +21,9 @@ enum SettingsSection: Hashable { var title: String { switch self { - case .appearance: return L10n.Scene.Settings.Section.Appearance.title + case .appearance: return L10n.Scene.Settings.Section.LookAndFeel.title case .appearancePreference: return "" - case .preference: return L10n.Scene.Settings.Section.Preference.title + case .preference: return "" case .notifications: return L10n.Scene.Settings.Section.Notifications.title case .boringZone: return L10n.Scene.Settings.Section.BoringZone.title case .spicyZone: return L10n.Scene.Settings.Section.SpicyZone.title diff --git a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift index 608456928..3760fd8ed 100644 --- a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift +++ b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift @@ -38,7 +38,7 @@ class SettingsAppearanceTableViewCell: UITableViewCell { }() let systemAppearanceView = AppearanceView( - image: Asset.Settings.darkAuto.image, + image: Asset.Settings.automatic.image, title: L10n.Scene.Settings.Section.Appearance.automatic ) let darkAppearanceView = AppearanceView( @@ -100,9 +100,9 @@ extension SettingsAppearanceTableViewCell { contentView.addSubview(stackView) NSLayoutConstraint.activate([ stackView.topAnchor.constraint(equalTo: contentView.topAnchor), - stackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor), + stackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - stackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor), + stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), ]) stackView.addArrangedSubview(systemAppearanceView) diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index d6a53a327..984346660 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -99,14 +99,8 @@ class SettingsViewController: UIViewController, NeedsDependency { }() private(set) lazy var tableView: UITableView = { - let style: UITableView.Style = { - switch UIDevice.current.userInterfaceIdiom { - case .phone: return .grouped - default: return .insetGrouped - } - }() // init with a frame to fix a conflict ('UIView-Encapsulated-Layout-Width' UIStackView:0x7f8c2b6c0590.width == 0) - let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 320, height: 320), style: style) + let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 320, height: 320), style: .insetGrouped) tableView.translatesAutoresizingMaskIntoConstraints = false tableView.delegate = self tableView.rowHeight = UITableView.automaticDimension @@ -330,6 +324,8 @@ extension SettingsViewController: UITableViewDelegate { switch sectionIdentifier { case .appearancePreference: return UIView() + case .preference: + return UIView() case .notifications: header = SettingsSectionHeader( frame: CGRect(x: 0, y: 0, width: 375, height: 66), diff --git a/Mastodon/Scene/Settings/View/AppearanceView.swift b/Mastodon/Scene/Settings/View/AppearanceView.swift index c29ae96eb..cdc29100b 100644 --- a/Mastodon/Scene/Settings/View/AppearanceView.swift +++ b/Mastodon/Scene/Settings/View/AppearanceView.swift @@ -8,14 +8,16 @@ import UIKit import MastodonAsset import MastodonLocalization +import MastodonUI class AppearanceView: UIView { + let imageViewShadowBackgroundContainer = ShadowBackgroundContainer() lazy var imageView: UIImageView = { let view = UIImageView() view.contentMode = .scaleAspectFill view.layer.masksToBounds = true - view.layer.cornerRadius = 8 + view.layer.cornerRadius = 4 view.layer.cornerCurve = .continuous // accessibility view.accessibilityIgnoresInvertColors = true @@ -29,6 +31,17 @@ class AppearanceView: UIView { label.textAlignment = .center return label }() + + lazy var checkmarkButton: UIButton = { + let button = UIButton() + button.isUserInteractionEnabled = false + button.setImage(UIImage(systemName: "circle"), for: .normal) + button.setImage(UIImage(systemName: "checkmark.circle.fill"), for: .selected) + button.imageView?.preferredSymbolConfiguration = UIImage.SymbolConfiguration(textStyle: .body) + button.imageView?.tintColor = Asset.Colors.Label.primary.color + button.imageView?.contentMode = .scaleAspectFill + return button + }() lazy var stackView: UIStackView = { let view = UIStackView() @@ -70,8 +83,19 @@ class AppearanceView: UIView { extension AppearanceView { private func setupUI() { - stackView.addArrangedSubview(imageView) + imageView.translatesAutoresizingMaskIntoConstraints = false + imageViewShadowBackgroundContainer.addSubview(imageView) + NSLayoutConstraint.activate([ + imageView.topAnchor.constraint(equalTo: imageViewShadowBackgroundContainer.topAnchor), + imageView.leadingAnchor.constraint(equalTo: imageViewShadowBackgroundContainer.leadingAnchor), + imageView.trailingAnchor.constraint(equalTo: imageViewShadowBackgroundContainer.trailingAnchor), + imageView.bottomAnchor.constraint(equalTo: imageViewShadowBackgroundContainer.bottomAnchor), + ]) + imageViewShadowBackgroundContainer.cornerRadius = 4 + + stackView.addArrangedSubview(imageViewShadowBackgroundContainer) stackView.addArrangedSubview(titleLabel) + stackView.addArrangedSubview(checkmarkButton) addSubview(stackView) translatesAutoresizingMaskIntoConstraints = false @@ -81,20 +105,18 @@ extension AppearanceView { stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor), stackView.bottomAnchor.constraint(equalTo: self.bottomAnchor), stackView.trailingAnchor.constraint(equalTo: self.trailingAnchor), - imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 120.0 / 90.0), + imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 121.0 / 100.0), // height / width ]) } private func configureForSelection() { if selected { - imageView.layer.borderWidth = 3 - imageView.layer.borderColor = Asset.Colors.Label.primary.color.cgColor accessibilityTraits.insert(.selected) } else { - imageView.layer.borderWidth = 1 - imageView.layer.borderColor = Asset.Colors.Label.primaryReverse.color.cgColor accessibilityTraits.remove(.selected) } + + checkmarkButton.isSelected = selected } override func layoutSubviews() { diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/automatic.imageset/Contents.json b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/automatic.imageset/Contents.json new file mode 100644 index 000000000..634b1b249 --- /dev/null +++ b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/automatic.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "automatic.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "automatic@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "automatic@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/automatic.imageset/automatic.png b/MastodonSDK/Sources/MastodonAsset/Assets.xcassets/Settings/automatic.imageset/automatic.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4997026cc4404ccbbf9af46e05db2b134eb952 GIT binary patch literal 15356 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